File manager - Edit - /var/www/payraty/helpdesk/common/resources/client/ui/overlays/store/dialog-store.ts
Back
import {create} from 'zustand'; import {immer} from 'zustand/middleware/immer'; import React, {JSXElementConstructor} from 'react'; interface DialogStore< C extends JSXElementConstructor<unknown> = JSXElementConstructor<any>, D = React.ComponentProps<C> > { dialog: C | null; data: D; openDialog: (dialog: C, data?: D) => Promise<any>; closeActiveDialog: (value: any) => void; resolveClosePromise: null | ((value: any) => void); } export const useDialogStore = create<DialogStore>()( immer((set, get) => ({ dialog: null, data: undefined, resolveClosePromise: null, openDialog: (dialog, data) => { return new Promise(resolve => { set(state => { state.dialog = dialog; state.data = data; state.resolveClosePromise = resolve; }); }); }, closeActiveDialog: value => { get().resolveClosePromise?.(value); set(state => { state.dialog = null; state.data = undefined; state.resolveClosePromise = null; }); }, })) ); export const openDialog = useDialogStore.getState().openDialog; export const closeDialog = (value?: any) => { useDialogStore.getState().closeActiveDialog(value); };
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings