diff --git a/packages/web/src/directories/directory-page/directory-content-table.tsx b/packages/web/src/directories/directory-page/directory-content-table.tsx index 2a3f5dc..3c34e98 100644 --- a/packages/web/src/directories/directory-page/directory-content-table.tsx +++ b/packages/web/src/directories/directory-page/directory-content-table.tsx @@ -221,6 +221,31 @@ export function DirectoryContentTableContent() { const store = useStore() const navigate = useNavigate() + const table = useReactTable({ + data: directoryContent || [], + columns, + getCoreRowModel: getCoreRowModel(), + enableRowSelection: true, + enableGlobalFilter: true, + globalFilterFn: (row, _columnId, _filterValue, _addMeta) => { + return !optimisticDeletedItems.has(row.original.doc._id) + }, + getRowId: (row) => row.doc._id, + }) + + useEffect( + function escapeToClearSelections() { + const handleEscape = (e: KeyboardEvent) => { + if (e.key === "Escape") { + table.setRowSelection({}) + } + } + window.addEventListener("keydown", handleEscape) + return () => window.removeEventListener("keydown", handleEscape) + }, + [table.setRowSelection], + ) + const handleRowContextMenu = ( row: Row, _event: React.MouseEvent, @@ -234,18 +259,6 @@ export function DirectoryContentTableContent() { } } - const table = useReactTable({ - data: directoryContent || [], - columns, - getCoreRowModel: getCoreRowModel(), - enableRowSelection: true, - enableGlobalFilter: true, - globalFilterFn: (row, _columnId, _filterValue, _addMeta) => { - return !optimisticDeletedItems.has(row.original.doc._id) - }, - getRowId: (row) => row.doc._id, - }) - const selectRow = (row: Row) => { const keyboardModifiers = store.get(keyboardModifierAtom) const isMultiSelectMode = isControlOrCommandKeyActive(keyboardModifiers)