change restore window
This commit is contained in:
parent
9471a13388
commit
0b04eed82b
@ -8,12 +8,16 @@ import React, { useState, useRef, useEffect, useReducer } from "react";
|
|||||||
export const RestoreWindowsButton = ({ onClick, className, ...props}: React.ComponentProps<"button">) => {
|
export const RestoreWindowsButton = ({ onClick, className, ...props}: React.ComponentProps<"button">) => {
|
||||||
const windowManager = useWindowManager();
|
const windowManager = useWindowManager();
|
||||||
|
|
||||||
const isAnyWindowsClosed = !windowManager.windows.find(w => w.closed == true);
|
const isWindowsDataDirty = !windowManager.windows.find(w =>
|
||||||
|
w.closed == true
|
||||||
|
|| w.minimized == true
|
||||||
|
|| (w.offset.x != 0 && w.offset.y != 0)
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
className={clsx("bg-primary border border-[#FFA826]", className, isAnyWindowsClosed && "hidden")}
|
className={clsx("bg-primary border border-[#FFA826]", className, isWindowsDataDirty && "hidden")}
|
||||||
onClick={windowManager.openAll}
|
onClick={windowManager.resetAll}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
@ -22,7 +22,7 @@ interface WindowManagerContextType {
|
|||||||
close: (name: string) => void;
|
close: (name: string) => void;
|
||||||
remove: (name: string) => void;
|
remove: (name: string) => void;
|
||||||
move: (name: string, offset: { x: number; y: number }) => void;
|
move: (name: string, offset: { x: number; y: number }) => void;
|
||||||
openAll: () => void;
|
resetAll: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const WindowManagerContext = createContext<WindowManagerContextType | undefined>(undefined);
|
const WindowManagerContext = createContext<WindowManagerContextType | undefined>(undefined);
|
||||||
@ -64,15 +64,20 @@ export const WindowManagerProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||||||
|
|
||||||
const remove = (name: string) => setWindows(w => w.filter(win => win.name !== name));
|
const remove = (name: string) => setWindows(w => w.filter(win => win.name !== name));
|
||||||
|
|
||||||
const openAll = () => setWindows(w =>
|
const resetAll = () => setWindows(w =>
|
||||||
w.map(win => ({ ...win, closed: false }))
|
w.map(win => ({
|
||||||
|
name: win.name,
|
||||||
|
closed: false,
|
||||||
|
minimized: false,
|
||||||
|
offset: { x: 0, y: 0 }
|
||||||
|
}))
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<WindowManagerContext.Provider value={{
|
<WindowManagerContext.Provider value={{
|
||||||
windows,
|
windows,
|
||||||
isLocalDataExists,
|
isLocalDataExists,
|
||||||
get, add, updateWindow, toggleMinimize, close, move, remove, openAll
|
get, add, updateWindow, toggleMinimize, close, move, remove, resetAll
|
||||||
}}>
|
}}>
|
||||||
{children}
|
{children}
|
||||||
</WindowManagerContext.Provider>
|
</WindowManagerContext.Provider>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user