Преглед изворни кода

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

Justas Raudonius пре 1 месец
родитељ
комит
49d837e0c1

+ 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>
             </Tooltip>
           }
           }
           hideCloseButton
           hideCloseButton
+          onMiddleClick={() => props.onTabClose(props.tab)}
         >
         >
           <Show when={path()}>{(p) => <FileVisual path={p()} />}</Show>
           <Show when={path()}>{(p) => <FileVisual path={p()} />}</Show>
         </Tabs.Trigger>
         </Tabs.Trigger>

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

@@ -993,6 +993,7 @@ export default function Page() {
                           </Tooltip>
                           </Tooltip>
                         }
                         }
                         hideCloseButton
                         hideCloseButton
+                        onMiddleClick={() => tabs().close("context")}
                       >
                       >
                         <div class="flex items-center gap-2">
                         <div class="flex items-center gap-2">
                           <SessionContextUsage variant="indicator" />
                           <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
   hideCloseButton?: boolean
   closeButton?: JSX.Element
   closeButton?: JSX.Element
+  onMiddleClick?: () => void
 }
 }
 export interface TabsContentProps extends ComponentProps<typeof Kobalte.Content> {}
 export interface TabsContentProps extends ComponentProps<typeof Kobalte.Content> {}
 
 
@@ -55,6 +56,7 @@ function TabsTrigger(props: ParentProps<TabsTriggerProps>) {
     "children",
     "children",
     "closeButton",
     "closeButton",
     "hideCloseButton",
     "hideCloseButton",
+    "onMiddleClick",
   ])
   ])
   return (
   return (
     <div
     <div
@@ -63,6 +65,12 @@ function TabsTrigger(props: ParentProps<TabsTriggerProps>) {
         ...(split.classList ?? {}),
         ...(split.classList ?? {}),
         [split.class ?? ""]: !!split.class,
         [split.class ?? ""]: !!split.class,
       }}
       }}
+      onAuxClick={(e) => {
+        if (e.button === 1 && split.onMiddleClick) {
+          e.preventDefault()
+          split.onMiddleClick()
+        }
+      }}
     >
     >
       <Kobalte.Trigger
       <Kobalte.Trigger
         {...rest}
         {...rest}