Эх сурвалжийг харах

Merge pull request #26472 from overleaf/dp-full-project-search-shortcut

Add mod-shift-f shortcut to open full-project-search to new editor

GitOrigin-RevId: a843c408cc8bd30228cbb7bc17309f4f9ff355b3
David 1 жил өмнө
parent
commit
dc252fe772

+ 23 - 0
services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx

@@ -1,5 +1,7 @@
+import { sendSearchEvent } from '@/features/event-tracking/search-events'
 import useCollapsiblePanel from '@/features/ide-react/hooks/use-collapsible-panel'
 import useEventListener from '@/shared/hooks/use-event-listener'
+import { isMac } from '@/shared/utils/os'
 import {
   createContext,
   Dispatch,
@@ -90,6 +92,27 @@ export const RailProvider: FC<React.PropsWithChildren> = ({ children }) => {
     }, [handlePaneCollapse, selectedTab, isOpen, openTab])
   )
 
+  useEventListener(
+    'keydown',
+    useCallback(
+      (event: KeyboardEvent) => {
+        if (
+          (isMac ? event.metaKey : event.ctrlKey) &&
+          event.shiftKey &&
+          event.code === 'KeyF'
+        ) {
+          event.preventDefault()
+          sendSearchEvent('search-open', {
+            searchType: 'full-project',
+            method: 'keyboard',
+          })
+          openTab('full-project-search')
+        }
+      },
+      [openTab]
+    )
+  )
+
   const value = useMemo(
     () => ({
       selectedTab,

+ 2 - 0
services/web/frontend/js/shared/context/layout-context.tsx

@@ -145,6 +145,7 @@ export const LayoutProvider: FC<React.PropsWithChildren> = ({ children }) => {
     )
   )
 
+  // TODO ide-redesign-cleanup: remove this listener as we have an equivalent in rail-context
   useEventListener(
     'ui.toggle-review-panel',
     useCallback(() => {
@@ -152,6 +153,7 @@ export const LayoutProvider: FC<React.PropsWithChildren> = ({ children }) => {
     }, [setReviewPanelOpen])
   )
 
+  // TODO ide-redesign-cleanup: remove this listener as we have an equivalent in rail-context
   useEventListener(
     'keydown',
     useCallback((event: KeyboardEvent) => {