-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.ts
More file actions
17 lines (14 loc) · 542 Bytes
/
Copy pathindex.ts
File metadata and controls
17 lines (14 loc) · 542 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { useCallback, useState } from "react";
export const useDisclosure = (isOpenDefault: boolean = false) => {
const [isOpen, setIsOpen] = useState(isOpenDefault);
const open = useCallback(() => setIsOpen(true), []);
const close = useCallback(() => setIsOpen(false), []);
const toggle = useCallback((toSet?: boolean) => {
if (typeof toSet === "undefined") {
setIsOpen((state) => !state);
} else {
setIsOpen(Boolean(toSet));
}
}, []);
return { isOpen, open, close, toggle };
}