Преглед на файлове

feat(app): add middle-click to close tabs in review sidebar (#7094)

Justas Raudonius преди 8 месеца
родител
ревизия
49d837e0c1
променени са 3 файла, в които са добавени 10 реда и са изтрити 0 реда
  1. 1 0
      packages/app/src/components/session/session-sortable-tab.tsx
  2. 1 0
      packages/app/src/pages/session.tsx
  3. 8 0
      packages/ui/src/components/tabs.tsx

+ 1 - 0
packages/app/src/components/session/session-sortable-tab.tsx

@@ -39,6 +39,7 @@ export function SortableTab(props: { tab: string; onTabClose: (tab: string) => v
             </Tooltip>
           }
           hideCloseButton
+          onMiddleClick={() => props.onTabClose(props.tab)}
         >
           <Show when={path()}>{(p) => <FileVisual path={p()} />}</Show>
         </Tabs.Trigger>

+ 1 - 0
packages/app/src/pages/session.tsx

@@ -993,6 +993,7 @@ export default function Page() {
                           </Tooltip>
                         }
                         hideCloseButton
+                        onMiddleClick={() => tabs().close("context")}
                       >
                         <div class="flex items-center gap-2">
                           <SessionContextUsage variant="indicator" />

+ 8 - 0
packages/ui/src/components/tabs.tsx

@@ -13,6 +13,7 @@ export interface TabsTriggerProps extends ComponentProps<typeof Kobalte.Trigger>
   }
   hideCloseButton?: boolean
   closeButton?: JSX.Element
+  onMiddleClick?: () => void
 }
 export interface TabsContentProps extends ComponentProps<typeof Kobalte.Content> {}
 
@@ -55,6 +56,7 @@ function TabsTrigger(props: ParentProps<TabsTriggerProps>) {
     "children",
     "closeButton",
     "hideCloseButton",
+    "onMiddleClick",
   ])
   return (
     <div
@@ -63,6 +65,12 @@ function TabsTrigger(props: ParentProps<TabsTriggerProps>) {
         ...(split.classList ?? {}),
         [split.class ?? ""]: !!split.class,
       }}
+      onAuxClick={(e) => {
+        if (e.button === 1 && split.onMiddleClick) {
+          e.preventDefault()
+          split.onMiddleClick()
+        }
+      }}
     >
       <Kobalte.Trigger
         {...rest}