From 2d8d5798c97d8929434ac67989df25dfb029dbaf Mon Sep 17 00:00:00 2001 From: Venkata Krishna S <100816677+venkata-krishnas@users.noreply.github.com> Date: Mon, 27 Feb 2023 11:23:51 -0500 Subject: [PATCH] Adds delay before note is displayed on hover. Solves issue #658. (#668) * Adds delay * change delay to half second. * Added async * Changed Delay * lint fix * Changed hover actions * onMouseLeave * Change logic --------- Co-authored-by: Jed Fox <git@jedfox.com> --- .../loot-design/src/components/NotesButton.js | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/loot-design/src/components/NotesButton.js b/packages/loot-design/src/components/NotesButton.js index b0190bf7b..4de150645 100644 --- a/packages/loot-design/src/components/NotesButton.js +++ b/packages/loot-design/src/components/NotesButton.js @@ -79,6 +79,22 @@ export default function NotesButton({ tooltip.close(); } + const [delayHandler, setDelayHandler] = useState(null); + + const handleMouseEnter = event => { + setDelayHandler( + setTimeout(() => { + // whatever your data is + setHover(true); + }, 300), + ); + }; + + const handleMouseLeave = () => { + clearTimeout(delayHandler); + setHover(false); + }; + // This account for both the tooltip hover, and editing tooltip const tooltipOpen = tooltip.isOpen || (hasNotes && hover); @@ -97,8 +113,12 @@ export default function NotesButton({ '& button, & .hover-visible': { display: 'flex', opacity: 1 }, }, ]} - onMouseEnter={() => setHover(true)} - onMouseLeave={() => setHover(false)} + onMouseEnter={async () => { + handleMouseEnter(); + }} + onMouseLeave={() => { + handleMouseLeave(); + }} > <Button bare -- GitLab