diff --git a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx b/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx index 85ec482fc0..c52671b42b 100644 --- a/services/web/frontend/js/features/ide-redesign/contexts/rail-context.tsx +++ b/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 = ({ 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, diff --git a/services/web/frontend/js/shared/context/layout-context.tsx b/services/web/frontend/js/shared/context/layout-context.tsx index e82dcbc350..050e679de7 100644 --- a/services/web/frontend/js/shared/context/layout-context.tsx +++ b/services/web/frontend/js/shared/context/layout-context.tsx @@ -145,6 +145,7 @@ export const LayoutProvider: FC = ({ 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 = ({ children }) => { }, [setReviewPanelOpen]) ) + // TODO ide-redesign-cleanup: remove this listener as we have an equivalent in rail-context useEventListener( 'keydown', useCallback((event: KeyboardEvent) => {