Merge pull request #35056 from overleaf/mj-command-palette-improvements

[web] Command palette improvements

GitOrigin-RevId: 3d6e11697ed4726b7ecada1744d24a15291ad646
This commit is contained in:
Mathias Jakobsen
2026-09-17 11:25:26 +00:00
committed by Copybot
parent 4ef7324263
commit 912fb2dcd8
14 changed files with 339 additions and 102 deletions
@@ -10,6 +10,8 @@ import { useCallback, useMemo, useState } from 'react'
import { throttle } from 'lodash'
import { debugConsole } from '@/utils/debugging'
import classNames from 'classnames'
import { useCommandProvider } from '@/features/ide-react/hooks/use-command-provider'
import { useTranslation } from 'react-i18next'
export const TabsContainer = () => {
const {
@@ -20,9 +22,11 @@ export const TabsContainer = () => {
makeTabPermanent,
setContextMenuTarget,
setHeaderSlot,
closeOtherTabs,
} = useTabsContext()
const { openEntity } = useFileTreeOpenContext()
const [hovered, setHovered] = useState<boolean>(false)
const { t } = useTranslation()
const openContextMenu = useCallback(
(coords: { top: number; left: number }, tabId: string) => {
@@ -86,6 +90,32 @@ export const TabsContainer = () => {
}
}, [])
useCommandProvider(() => {
if (tabs.length === 0) {
return
}
if (!openEntity?.entity._id) {
return
}
return [
{
id: 'close-tab',
label: t('close_tab'),
handler: () => {
closeTab(openEntity.entity._id)
},
},
{
id: 'close-other-tabs',
label: t('close_other_tabs'),
handler: () => {
closeOtherTabs(openEntity.entity._id)
},
},
]
}, [tabs, t, openEntity, closeTab, closeOtherTabs])
return (
<div className="editor-tabs-container">
<div className="review-panel-header-slot" ref={setHeaderSlot} />