From 99f3a41598ea237d2f509825d0b3c0ee27e789d7 Mon Sep 17 00:00:00 2001 From: MAZE Date: Fri, 26 Apr 2024 15:03:02 +0330 Subject: [PATCH] feat: add keyboard shortcut for unselect button --- src/components/buttons/unselect/unselect.tsx | 23 ++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/buttons/unselect/unselect.tsx b/src/components/buttons/unselect/unselect.tsx index e7cb671..906ee78 100644 --- a/src/components/buttons/unselect/unselect.tsx +++ b/src/components/buttons/unselect/unselect.tsx @@ -1,3 +1,4 @@ +import { useEffect, useCallback } from 'react'; import { BiUndo, BiTrash } from 'react-icons/bi/index'; import { AnimatePresence, motion } from 'framer-motion'; @@ -20,6 +21,23 @@ export function UnselectButton() { exit: { opacity: 0 }, }; + const handleToggle = useCallback(() => { + if (hasHistory) restoreHistory(); + else if (!noSelected) unselectAll(true); + }, [hasHistory, noSelected, unselectAll, restoreHistory]); + + useEffect(() => { + const listener = (e: KeyboardEvent) => { + if (e.shiftKey && e.key === 'R') { + handleToggle(); + } + }; + + document.addEventListener('keydown', listener); + + return () => document.removeEventListener('keydown', listener); + }, [handleToggle]); + return ( <> @@ -49,10 +67,7 @@ export function UnselectButton() { styles.unselectButton, noSelected && !hasHistory && styles.disabled, )} - onClick={() => { - if (hasHistory) restoreHistory(); - else if (!noSelected) unselectAll(true); - }} + onClick={handleToggle} > {hasHistory ? : }