From b29e2f78af83acc61b266e8b4920021b76e0d8b7 Mon Sep 17 00:00:00 2001 From: Stuart Hendren Date: Thu, 26 Jan 2023 13:13:38 +0000 Subject: [PATCH] feat(usemodal): re-exposes original setValue in boolean hooks For cases where it might be simpler to pass the original setValue this is re-exposed. --- src/useBoolean/useBoolean.stories.tsx | 2 ++ src/useBoolean/useBoolean.ts | 2 ++ src/useModal/useModal.stories.tsx | 1 + src/useModal/useModal.ts | 12 +++++++++--- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/useBoolean/useBoolean.stories.tsx b/src/useBoolean/useBoolean.stories.tsx index ee3f090..be8b5ee 100644 --- a/src/useBoolean/useBoolean.stories.tsx +++ b/src/useBoolean/useBoolean.stories.tsx @@ -14,6 +14,8 @@ export interface UseBooleanDocsProps { * returns the value, an object containing function for toggle, setTrue and setFalse. * * __Use `toggle` with caution__, attaching to buttons can cause unintended consequences from double clicks. + * Also, re-exposes the `setValue` function in case required. + * */ export const UseBooleanDocs: React.FC = ( _props: UseBooleanDocsProps diff --git a/src/useBoolean/useBoolean.ts b/src/useBoolean/useBoolean.ts index da30675..e8dc428 100644 --- a/src/useBoolean/useBoolean.ts +++ b/src/useBoolean/useBoolean.ts @@ -14,6 +14,7 @@ export function useBoolean(startState = false): [ toggle: () => void setTrue: () => void setFalse: () => void + setValue: React.Dispatch> } ] { const [value, setValue] = useState(startState) @@ -23,6 +24,7 @@ export function useBoolean(startState = false): [ toggle: (): void => setValue((state) => !state), setTrue: (): void => setValue(true), setFalse: (): void => setValue(false), + setValue, }), [setValue] ) diff --git a/src/useModal/useModal.stories.tsx b/src/useModal/useModal.stories.tsx index 212c2ea..807218a 100644 --- a/src/useModal/useModal.stories.tsx +++ b/src/useModal/useModal.stories.tsx @@ -12,6 +12,7 @@ export interface UseModalDocsProps { * Utility hook for modal state * * returns the visibility of the modal and functions to `show` and `hide`. + * Also, re-exposes the `set` function in case required. * */ export const UseModalDocs: React.FC = ( diff --git a/src/useModal/useModal.ts b/src/useModal/useModal.ts index f2a80c8..80d5784 100644 --- a/src/useModal/useModal.ts +++ b/src/useModal/useModal.ts @@ -9,7 +9,13 @@ import { useBoolean } from '../useBoolean' */ export function useModal( startState = false -): [visible: boolean, show: () => void, hide: () => void] { - const [visible, { setTrue: show, setFalse: hide }] = useBoolean(startState) - return [visible, show, hide] +): [ + visible: boolean, + show: () => void, + hide: () => void, + set: React.Dispatch> +] { + const [visible, { setTrue: show, setFalse: hide, setValue: set }] = + useBoolean(startState) + return [visible, show, hide, set] }