Files
lettersoup-online/002_source/cms/src/hooks/use-dialog.ts
louiscklaw 6c931c1fe8 build ok,
2025-04-14 09:26:24 +08:00

23 lines
598 B
TypeScript

import * as React from 'react';
interface DialogController<T> {
data?: T;
handleClose: () => void;
handleOpen: (data?: T) => void;
open: boolean;
}
export function useDialog<T = unknown>(): DialogController<T> {
const [state, setState] = React.useState<{ open: boolean; data?: T }>({ open: false, data: undefined });
const handleOpen = React.useCallback((data?: T) => {
setState({ open: true, data });
}, []);
const handleClose = React.useCallback(() => {
setState({ open: false });
}, []);
return { data: state.data, handleClose, handleOpen, open: state.open };
}