mirror of
https://github.com/khairul169/code-share.git
synced 2025-04-28 16:49:36 +07:00
23 lines
549 B
TypeScript
23 lines
549 B
TypeScript
import { useCallback, useState } from "react";
|
|
|
|
export const useDisclose = <T = any>() => {
|
|
const [isOpen, setOpen] = useState(false);
|
|
const [data, setData] = useState<T | null | undefined>(null);
|
|
|
|
const onOpen = useCallback(
|
|
(_data?: T | null) => {
|
|
setOpen(true);
|
|
setData(_data);
|
|
},
|
|
[setOpen]
|
|
);
|
|
|
|
const onClose = useCallback(() => {
|
|
setOpen(false);
|
|
}, [setOpen]);
|
|
|
|
return { isOpen, onOpen, onClose, onChange: setOpen, data };
|
|
};
|
|
|
|
export type UseDiscloseReturn<T = any> = ReturnType<typeof useDisclose<T>>;
|