From d77b54f27b4f68c2619b6c3a98ff234e20060915 Mon Sep 17 00:00:00 2001
From: Yusef Ouda <YusefOuda@users.noreply.github.com>
Date: Mon, 8 Jul 2024 11:51:28 -0500
Subject: [PATCH] reorders 'Rename' above 'Hide' in menu popovers, adds
 debounce to sidebar animation (#3001)

* reorders 'Rename' above 'Hide' in menu popovers

* release notes

* adds debounce to sidebar animation

* bump debounce time

* release notes

* release notes

* Update debounce import

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* Update index.tsx

* removes event listener on titlebar, changes margins
---
 .../desktop-client/src/components/Titlebar.tsx    |  5 -----
 .../src/components/budget/SidebarCategory.tsx     |  2 +-
 .../src/components/budget/SidebarGroup.tsx        |  2 +-
 .../src/components/sidebar/index.tsx              | 15 +++++++++++----
 upcoming-release-notes/3001.md                    |  6 ++++++
 5 files changed, 19 insertions(+), 11 deletions(-)
 create mode 100644 upcoming-release-notes/3001.md

diff --git a/packages/desktop-client/src/components/Titlebar.tsx b/packages/desktop-client/src/components/Titlebar.tsx
index 482f694bd..8db6876bc 100644
--- a/packages/desktop-client/src/components/Titlebar.tsx
+++ b/packages/desktop-client/src/components/Titlebar.tsx
@@ -416,11 +416,6 @@ export function Titlebar({ style }: TitlebarProps) {
               sidebar.setHidden(false);
             }
           }}
-          onPointerLeave={e => {
-            if (e.pointerType === 'mouse') {
-              sidebar.setHidden(true);
-            }
-          }}
           onPointerUp={e => {
             if (e.pointerType !== 'mouse') {
               sidebar.setHidden(!sidebar.hidden);
diff --git a/packages/desktop-client/src/components/budget/SidebarCategory.tsx b/packages/desktop-client/src/components/budget/SidebarCategory.tsx
index ab5a20fa3..0504c8d03 100644
--- a/packages/desktop-client/src/components/budget/SidebarCategory.tsx
+++ b/packages/desktop-client/src/components/budget/SidebarCategory.tsx
@@ -106,11 +106,11 @@ export function SidebarCategory({
               setMenuOpen(false);
             }}
             items={[
+              { name: 'rename', text: 'Rename' },
               !categoryGroup?.hidden && {
                 name: 'toggle-visibility',
                 text: category.hidden ? 'Show' : 'Hide',
               },
-              { name: 'rename', text: 'Rename' },
               { name: 'delete', text: 'Delete' },
             ]}
           />
diff --git a/packages/desktop-client/src/components/budget/SidebarGroup.tsx b/packages/desktop-client/src/components/budget/SidebarGroup.tsx
index ca9125a3f..c01ef2bc6 100644
--- a/packages/desktop-client/src/components/budget/SidebarGroup.tsx
+++ b/packages/desktop-client/src/components/budget/SidebarGroup.tsx
@@ -127,11 +127,11 @@ export function SidebarGroup({
                 }}
                 items={[
                   { name: 'add-category', text: 'Add category' },
+                  { name: 'rename', text: 'Rename' },
                   !group.is_income && {
                     name: 'toggle-visibility',
                     text: group.hidden ? 'Show' : 'Hide',
                   },
-                  { name: 'rename', text: 'Rename' },
                   onDelete && { name: 'delete', text: 'Delete' },
                 ]}
               />
diff --git a/packages/desktop-client/src/components/sidebar/index.tsx b/packages/desktop-client/src/components/sidebar/index.tsx
index ba5185138..e09f6099f 100644
--- a/packages/desktop-client/src/components/sidebar/index.tsx
+++ b/packages/desktop-client/src/components/sidebar/index.tsx
@@ -1,5 +1,7 @@
 import React from 'react';
 
+import { useDebounceCallback } from 'usehooks-ts';
+
 import { useGlobalPref } from '../../hooks/useGlobalPref';
 import { useResponsive } from '../../ResponsiveProvider';
 import { View } from '../common/View';
@@ -14,25 +16,30 @@ export function FloatableSidebar() {
   const { isNarrowWidth } = useResponsive();
 
   const sidebarShouldFloat = floatingSidebar || sidebar.alwaysFloats;
+  const debouncedHideSidebar = useDebounceCallback(
+    () => sidebar.setHidden(true),
+    350,
+  );
 
   return isNarrowWidth ? null : (
     <View
       onMouseOver={
         sidebarShouldFloat
           ? e => {
+              debouncedHideSidebar.cancel();
               e.stopPropagation();
               sidebar.setHidden(false);
             }
           : undefined
       }
       onMouseLeave={
-        sidebarShouldFloat ? () => sidebar.setHidden(true) : undefined
+        sidebarShouldFloat ? () => debouncedHideSidebar() : undefined
       }
       style={{
         position: sidebarShouldFloat ? 'absolute' : undefined,
-        top: 12,
+        top: 8,
         // If not floating, the -50 takes into account the transform below
-        bottom: sidebarShouldFloat ? 12 : -50,
+        bottom: sidebarShouldFloat ? 8 : -50,
         zIndex: 1001,
         borderRadius: sidebarShouldFloat ? '0 6px 6px 0' : 0,
         overflow: 'hidden',
@@ -40,7 +47,7 @@ export function FloatableSidebar() {
           !sidebarShouldFloat || sidebar.hidden
             ? 'none'
             : '0 15px 30px 0 rgba(0,0,0,0.25), 0 3px 15px 0 rgba(0,0,0,.5)',
-        transform: `translateY(${!sidebarShouldFloat ? -12 : 0}px)
+        transform: `translateY(${!sidebarShouldFloat ? -8 : 0}px)
                       translateX(${
                         sidebarShouldFloat && sidebar.hidden ? '-100' : '0'
                       }%)`,
diff --git a/upcoming-release-notes/3001.md b/upcoming-release-notes/3001.md
new file mode 100644
index 000000000..17898d27f
--- /dev/null
+++ b/upcoming-release-notes/3001.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [YusefOuda]
+---
+
+Moves "Rename" to first item in Category + Category Group menus. Adds debounce to sidebar animation.
-- 
GitLab