From 58cb40f031f395ca9efccff674ba0f2dae723f50 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Wed, 8 Jun 2022 12:07:08 +0200 Subject: fix(settings): close tooltip when modal is closing The event was not captured so the tooltip remained open when the settings was closed. It prevented to click on the toolbar buttons. --- src/components/molecules/forms/fieldset.tsx | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/components/molecules/forms/fieldset.tsx') diff --git a/src/components/molecules/forms/fieldset.tsx b/src/components/molecules/forms/fieldset.tsx index 670cfa1..dae3ead 100644 --- a/src/components/molecules/forms/fieldset.tsx +++ b/src/components/molecules/forms/fieldset.tsx @@ -1,4 +1,4 @@ -import useClickOutside from '@utils/hooks/use-click-outside'; +import useOnClickOutside from '@utils/hooks/use-on-click-outside'; import { cloneElement, FC, @@ -33,11 +33,15 @@ export type FieldsetProps = { */ legendClassName?: string; /** - * The legend position. Default: stacked. + * The legend position. + * + * @default 'stacked' */ legendPosition?: 'inline' | 'stacked'; /** - * An accessible role. Default: group. + * An accessible role. + * + * @default 'group' */ role?: 'group' | 'radiogroup' | 'presentation' | 'none'; /** @@ -63,7 +67,6 @@ const Fieldset: FC = ({ }) => { const [isTooltipOpened, setIsTooltipOpened] = useState(false); const buttonRef = useRef(null); - const tooltipRef = useRef(null); const wrapperModifier = `wrapper--${legendPosition}`; const buttonModifier = isTooltipOpened ? styles['btn--activated'] : ''; const legendModifier = @@ -73,19 +76,17 @@ const Fieldset: FC = ({ : 'tooltip--hidden'; /** - * Close the tooltip if the event target is outside. + * Close the tooltip if the target is not the button. * - * @param {EventTarget} target - The event target. + * @param {Node} target - The event target. */ - const closeTooltip = (target: EventTarget) => { - if (buttonRef.current && !buttonRef.current.contains(target as Node)) + const closeTooltip = (target: Node) => { + if (buttonRef.current && !buttonRef.current.contains(target)) { setIsTooltipOpened(false); + } }; - useClickOutside( - tooltipRef, - (target) => isTooltipOpened && closeTooltip(target) - ); + const tooltipRef = useOnClickOutside(closeTooltip); return (