From 88478d6b991de50582a6ef85781eed5f56d68dbb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 14 Jan 2022 11:42:34 +0100 Subject: chore(toolbar): close modals on click/focus outside --- .../Buttons/ButtonToolbar/ButtonToolbar.tsx | 26 ++++--- src/components/SearchForm/SearchForm.tsx | 4 +- src/components/Toolbar/Toolbar.tsx | 80 +++++++++++++++++++++- 3 files changed, 94 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx b/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx index 22da133..246ad80 100644 --- a/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx +++ b/src/components/Buttons/ButtonToolbar/ButtonToolbar.tsx @@ -1,19 +1,22 @@ import { CloseIcon, CogIcon, SearchIcon } from '@components/Icons'; import { t } from '@lingui/macro'; -import { SetStateAction } from 'react'; +import { ForwardedRef, forwardRef, SetStateAction } from 'react'; import styles from '../Buttons.module.scss'; type ButtonType = 'search' | 'settings'; -const ButtonToolbar = ({ - type, - isActivated, - setIsActivated, -}: { - type: ButtonType; - isActivated: boolean; - setIsActivated: (value: SetStateAction) => void; -}) => { +const ButtonToolbar = ( + { + type, + isActivated, + setIsActivated, + }: { + type: ButtonType; + isActivated: boolean; + setIsActivated: (value: SetStateAction) => void; + }, + ref: ForwardedRef +) => { const ButtonIcon = () => (type === 'search' ? : ); const btnClasses = isActivated ? `${styles.toolbar} ${styles['toolbar--activated']}` @@ -21,6 +24,7 @@ const ButtonToolbar = ({ return (