@economic/taco 1.30.2 → 1.31.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. package/dist/components/Button/Button.d.ts +1 -0
  2. package/dist/components/Header/components/Button.d.ts +1 -1
  3. package/dist/components/IconButton/IconButton.d.ts +2 -2
  4. package/dist/components/Menu/components/Item.d.ts +0 -1
  5. package/dist/components/Shortcut/Shortcut.d.ts +2 -1
  6. package/dist/components/Table2/Table2.d.ts +1 -1
  7. package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +3 -2
  8. package/dist/components/Table2/hooks/useTable.d.ts +0 -1
  9. package/dist/components/Table2/types.d.ts +3 -11
  10. package/dist/components/Table2/utilities/columns.d.ts +1 -1
  11. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -7
  15. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Header/components/PrimaryNavigation.js +1 -1
  17. package/dist/esm/packages/taco/src/components/Input/Input.js +1 -1
  18. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +1 -1
  19. package/dist/esm/packages/taco/src/components/Listbox/useListbox.js +1 -1
  20. package/dist/esm/packages/taco/src/components/Listbox/useMultiListbox.js +1 -1
  21. package/dist/esm/packages/taco/src/components/Menu/components/Item.js +9 -8
  22. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js +1 -1
  24. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -1
  25. package/dist/esm/packages/taco/src/components/Select/useSelect.js +1 -1
  26. package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -1
  27. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +1 -1
  28. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +30 -6
  29. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Table2/Table2.js +3 -12
  32. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +13 -9
  34. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Table2/components/Search.js +10 -8
  36. package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -1
  37. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +14 -8
  38. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +1 -1
  40. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -11
  42. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +36 -52
  45. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  46. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +15 -0
  47. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -0
  48. package/dist/esm/packages/taco/src/index.js +3 -2
  49. package/dist/esm/packages/taco/src/index.js.map +1 -1
  50. package/dist/esm/packages/taco/src/primitives/Button.js +21 -2
  51. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  52. package/dist/esm/packages/taco/src/utils/keyboard.js +35 -0
  53. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -0
  54. package/dist/hooks/useGlobalKeyDown.d.ts +2 -0
  55. package/dist/index.d.ts +1 -0
  56. package/dist/primitives/Button.d.ts +3 -0
  57. package/dist/taco.cjs.development.js +210 -158
  58. package/dist/taco.cjs.development.js.map +1 -1
  59. package/dist/taco.cjs.production.min.js +1 -1
  60. package/dist/taco.cjs.production.min.js.map +1 -1
  61. package/dist/utils/keyboard.d.ts +8 -0
  62. package/package.json +2 -2
  63. package/types.json +22 -122
  64. package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js +0 -13
  65. package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js.map +0 -1
  66. package/dist/hooks/useGlobalKeyboardShortcut.d.ts +0 -1
@@ -1,23 +1,47 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
+ import { isMacOs } from '../../utils/keyboard.js';
3
4
 
4
5
  const replaceWithShortform = key => {
5
- if (key === 'Delete') {
6
- return 'Del';
6
+ switch (key) {
7
+ case 'Delete':
8
+ return 'Del';
9
+ case 'Space':
10
+ case ' ':
11
+ return '␣';
12
+ default:
13
+ return key;
7
14
  }
8
- return key;
15
+ };
16
+ const getShortcutText = key => {
17
+ if (!key) {
18
+ return [];
19
+ }
20
+ if (typeof key === 'string') {
21
+ return [replaceWithShortform(key)];
22
+ }
23
+ const keys = [];
24
+ if (key.shift) {
25
+ keys.push(isMacOs() ? '⇧' : 'Shift');
26
+ }
27
+ if (key.meta) {
28
+ keys.push(isMacOs() ? '⌘' : 'Ctrl');
29
+ }
30
+ keys.push(replaceWithShortform(key.key));
31
+ return keys;
9
32
  };
10
33
  const Shortcut = ({
11
34
  keys,
12
35
  ...props
13
36
  }) => {
14
37
  const className = cn('inline-flex gap-0.5', props.className);
38
+ const texts = getShortcutText(keys);
15
39
  return /*#__PURE__*/React__default.createElement("span", Object.assign({}, props, {
16
40
  className: className
17
- }), keys.map(key => /*#__PURE__*/React__default.createElement("kbd", {
41
+ }), texts.map(key => /*#__PURE__*/React__default.createElement("kbd", {
18
42
  key: key,
19
- className: "wcag-blue-900 inline-flex h-4 items-center rounded px-1 font-mono text-xs font-normal"
20
- }, replaceWithShortform(key))));
43
+ className: "font-display bg-grey-300/[0.25] rounded px-1 text-center"
44
+ }, key)));
21
45
  };
22
46
 
23
47
  export { Shortcut };
@@ -1 +1 @@
1
- {"version":3,"file":"Shortcut.js","sources":["../../../../../../../src/components/Shortcut/Shortcut.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nconst replaceWithShortform = (key: string) => {\n if (key === 'Delete') {\n return 'Del';\n }\n\n return key;\n};\nexport type ShortcutProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> & {\n keys: string[];\n};\n\nexport const Shortcut = ({ keys, ...props }: ShortcutProps) => {\n const className = cn('inline-flex gap-0.5', props.className);\n\n return (\n <span {...props} className={className}>\n {keys.map(key => (\n <kbd key={key} className=\"wcag-blue-900 inline-flex h-4 items-center rounded px-1 font-mono text-xs font-normal\">\n {replaceWithShortform(key)}\n </kbd>\n ))}\n </span>\n );\n};\n"],"names":["replaceWithShortform","key","Shortcut","keys","props","className","cn","React","map"],"mappings":";;;AAGA,MAAMA,oBAAoB,GAAIC,GAAW;EACrC,IAAIA,GAAG,KAAK,QAAQ,EAAE;IAClB,OAAO,KAAK;;EAGhB,OAAOA,GAAG;AACd,CAAC;MAKYC,QAAQ,GAAG,CAAC;EAAEC,IAAI;EAAE,GAAGC;CAAsB;EACtD,MAAMC,SAAS,GAAGC,EAAE,CAAC,qBAAqB,EAAEF,KAAK,CAACC,SAAS,CAAC;EAE5D,oBACIE,uDAAUH,KAAK;IAAEC,SAAS,EAAEA;MACvBF,IAAI,CAACK,GAAG,CAACP,GAAG,iBACTM;IAAKN,GAAG,EAAEA,GAAG;IAAEI,SAAS,EAAC;KACpBL,oBAAoB,CAACC,GAAG,CAAC,CAEjC,CAAC,CACC;AAEf;;;;"}
1
+ {"version":3,"file":"Shortcut.js","sources":["../../../../../../../src/components/Shortcut/Shortcut.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { isMacOs, KeyDownHandlerOptions } from '../../utils/keyboard';\n\nconst replaceWithShortform = (key: string) => {\n switch (key) {\n case 'Delete':\n return 'Del';\n\n case 'Space':\n case ' ':\n return '␣';\n\n default:\n return key;\n }\n};\n\nconst getShortcutText = (key: string | KeyDownHandlerOptions) => {\n if (!key) {\n return [];\n }\n\n if (typeof key === 'string') {\n return [replaceWithShortform(key)];\n }\n\n const keys: string[] = [];\n\n if (key.shift) {\n keys.push(isMacOs() ? '' : 'Shift');\n }\n\n if (key.meta) {\n keys.push(isMacOs() ? '⌘' : 'Ctrl');\n }\n\n keys.push(replaceWithShortform(key.key));\n\n return keys;\n};\n\nexport type ShortcutProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> & {\n keys: string | KeyDownHandlerOptions;\n};\n\nexport const Shortcut = ({ keys, ...props }: ShortcutProps) => {\n const className = cn('inline-flex gap-0.5', props.className);\n const texts = getShortcutText(keys);\n\n return (\n <span {...props} className={className}>\n {texts.map(key => (\n <kbd key={key} className=\"font-display bg-grey-300/[0.25] rounded px-1 text-center\">\n {key}\n </kbd>\n ))}\n </span>\n );\n};\n"],"names":["replaceWithShortform","key","getShortcutText","keys","shift","push","isMacOs","meta","Shortcut","props","className","cn","texts","React","map"],"mappings":";;;;AAIA,MAAMA,oBAAoB,GAAIC,GAAW;EACrC,QAAQA,GAAG;IACP,KAAK,QAAQ;MACT,OAAO,KAAK;IAEhB,KAAK,OAAO;IACZ,KAAK,GAAG;MACJ,OAAO,GAAG;IAEd;MACI,OAAOA,GAAG;;AAEtB,CAAC;AAED,MAAMC,eAAe,GAAID,GAAmC;EACxD,IAAI,CAACA,GAAG,EAAE;IACN,OAAO,EAAE;;EAGb,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IACzB,OAAO,CAACD,oBAAoB,CAACC,GAAG,CAAC,CAAC;;EAGtC,MAAME,IAAI,GAAa,EAAE;EAEzB,IAAIF,GAAG,CAACG,KAAK,EAAE;IACXD,IAAI,CAACE,IAAI,CAACC,OAAO,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC;;EAGxC,IAAIL,GAAG,CAACM,IAAI,EAAE;IACVJ,IAAI,CAACE,IAAI,CAACC,OAAO,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;;EAGvCH,IAAI,CAACE,IAAI,CAACL,oBAAoB,CAACC,GAAG,CAACA,GAAG,CAAC,CAAC;EAExC,OAAOE,IAAI;AACf,CAAC;MAMYK,QAAQ,GAAG,CAAC;EAAEL,IAAI;EAAE,GAAGM;CAAsB;EACtD,MAAMC,SAAS,GAAGC,EAAE,CAAC,qBAAqB,EAAEF,KAAK,CAACC,SAAS,CAAC;EAC5D,MAAME,KAAK,GAAGV,eAAe,CAACC,IAAI,CAAC;EAEnC,oBACIU,uDAAUJ,KAAK;IAAEC,SAAS,EAAEA;MACvBE,KAAK,CAACE,GAAG,CAACb,GAAG,iBACVY;IAAKZ,GAAG,EAAEA,GAAG;IAAES,SAAS,EAAC;KACpBT,GAAG,CAEX,CAAC,CACC;AAEf;;;;"}
@@ -1,8 +1,8 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
+ import { useMergedRef } from '../../../hooks/useMergedRef.js';
3
4
  import { useLocalization } from '../../Provider/Localization.js';
4
5
  import { useBoundingClientRectListener } from '../../../hooks/useBoundingClientRectListener.js';
5
- import { useMergedRef } from '../../../hooks/useMergedRef.js';
6
6
  import { useTable } from '../hooks/useTable.js';
7
7
  import { Row } from '../util/renderRow.js';
8
8
  import { BaseTable, DefaultEmptyState } from './BaseTable.js';
@@ -42,8 +42,7 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
42
42
  const {
43
43
  rows,
44
44
  table,
45
- footers,
46
- actionShortcuts
45
+ footers
47
46
  } = useTable(props.children, props, tableRef);
48
47
  const meta = table.options.meta;
49
48
  const {
@@ -82,14 +81,6 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
82
81
  const editButtonRef = React__default.useRef(null);
83
82
  // support grid like keyboard navigation between cells
84
83
  const handleKeyDown = event => {
85
- if (!meta.editMode.isEditing && actionShortcuts[event.key]) {
86
- var _tableRef$current;
87
- const rowAction = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector(`[role="row"][aria-current="true"] [role="cell"]:last-child [aria-label="${actionShortcuts[event.key]}"]`);
88
- if (rowAction) {
89
- rowAction.click();
90
- }
91
- return;
92
- }
93
84
  if (document.activeElement === tableRef.current) {
94
85
  if (event.key === 'ArrowUp') {
95
86
  event.preventDefault();
@@ -113,8 +104,8 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
113
104
  meta.setShouldPauseHoverState(true);
114
105
  // the virtualiser doesn't always scroll right to the bottom for the last row
115
106
  if (nextIndex === rows.length - 1) {
116
- var _tableRef$current2;
117
- (_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.scrollTo(0, tableRef.current.scrollHeight);
107
+ var _tableRef$current;
108
+ (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.scrollTo(0, tableRef.current.scrollHeight);
118
109
  } else {
119
110
  virtualiser.scrollToIndex(nextIndex + 2);
120
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n columnsHidden: string;\n columnsHiddenDrop: string;\n columnsVisible: string;\n columnsVisibleDrop: string;\n noHiddenColumns: string;\n noVisibleColumns: string;\n search: string;\n tooltip: string;\n button: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<HTMLDivElement> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<HTMLDivElement>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers, actionShortcuts } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (!meta.editMode.isEditing && actionShortcuts[event.key]) {\n const rowAction = tableRef.current?.querySelector(\n `[role=\"row\"][aria-current=\"true\"] [role=\"cell\"]:last-child [aria-label=\"${actionShortcuts[event.key]}\"]`\n ) as HTMLButtonElement;\n\n if (rowAction) {\n rowAction.click();\n }\n\n return;\n }\n\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isScrollingDown = scrollY > prevScrollY.current;\n prevScrollY.current = scrollY;\n\n const scrolledPercentage = Math.round((100 / event.currentTarget.scrollHeight) * scrollY);\n\n if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row className=\"group/row contents\" row={row} rowIndex={virtualRow.index} table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionProps, Table2Settings } from './types';\n"],"names":["Column","_","displayName","Table2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","actionShortcuts","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","current","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","key","rowAction","querySelector","click","document","activeElement","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isScrollingDown","scrolledPercentage","Math","round","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary"],"mappings":"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"}
1
+ {"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n columnsHidden: string;\n columnsHiddenDrop: string;\n columnsVisible: string;\n columnsVisibleDrop: string;\n noHiddenColumns: string;\n noVisibleColumns: string;\n search: string;\n tooltip: string;\n button: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<HTMLDivElement> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<HTMLDivElement>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isScrollingDown = scrollY > prevScrollY.current;\n prevScrollY.current = scrollY;\n\n const scrolledPercentage = Math.round((100 / event.currentTarget.scrollHeight) * scrollY);\n\n if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row className=\"group/row contents\" row={row} rowIndex={virtualRow.index} table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionRenderer, Table2Settings } from './types';\n"],"names":["Column","_","displayName","Table2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","current","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","document","activeElement","key","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","querySelector","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isScrollingDown","scrolledPercentage","Math","round","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { Icon } from '../../Icon/Icon.js';
4
+ import { useMergedRef } from '../../../hooks/useMergedRef.js';
4
5
  import { useLocalization } from '../../Provider/Localization.js';
5
6
  import { Button } from '../../Button/Button.js';
6
- import { useMergedRef } from '../../../hooks/useMergedRef.js';
7
- import { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut.js';
7
+ import { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown.js';
8
8
  import { Shortcut } from '../../Shortcut/Shortcut.js';
9
9
 
10
10
  const EditModeButton = /*#__PURE__*/React__default.forwardRef(function EditModeButton(props, ref) {
@@ -28,12 +28,13 @@ const EditModeButton = /*#__PURE__*/React__default.forwardRef(function EditModeB
28
28
  }
29
29
  return false;
30
30
  }, [isEditing]);
31
- useGlobalKeyboardShortcut(event => {
32
- if (event.key === 'e' && (event.ctrlKey || event.metaKey)) {
33
- var _internalRef$current;
34
- event.preventDefault();
35
- (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.click();
36
- }
31
+ useGlobalKeyDown({
32
+ key: 'e',
33
+ meta: true
34
+ }, event => {
35
+ var _internalRef$current;
36
+ event.preventDefault();
37
+ (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.click();
37
38
  });
38
39
  React__default.useEffect(() => {
39
40
  window.addEventListener('beforeunload', showWarning);
@@ -66,7 +67,10 @@ const EditModeButton = /*#__PURE__*/React__default.forwardRef(function EditModeB
66
67
  ref: internalRef,
67
68
  tooltip: hasVisibleEditableColumns ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table2.editing.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
68
69
  className: "ml-2",
69
- keys: ['Ctrl', 'E']
70
+ keys: {
71
+ key: 'e',
72
+ meta: true
73
+ }
70
74
  })) : texts.table2.editing.tooltipDisabled
71
75
  }, /*#__PURE__*/React__default.createElement(Icon, {
72
76
  name: "edit"
@@ -1 +1 @@
1
- {"version":3,"file":"EditModeButton.js","sources":["../../../../../../../../src/components/Table2/components/EditModeButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../Button/Button';\nimport { Icon } from '../../Icon/Icon';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type EditModeButtonProps = {\n scrollToIndex: (index: number) => void;\n table: RTTable<any>;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const EditModeButton = React.forwardRef<HTMLButtonElement, EditModeButtonProps>(function EditModeButton(props, ref) {\n const { scrollToIndex, table, tableRef } = props;\n const { texts } = useLocalization();\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const meta = table.options.meta as TableMeta<any>;\n const { isEditing } = meta.editMode;\n\n const showWarning = React.useCallback(\n event => {\n if (isEditing) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n },\n [isEditing]\n );\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'e' && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n internalRef.current?.click();\n }\n });\n\n React.useEffect(() => {\n window.addEventListener('beforeunload', showWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showWarning);\n };\n }, [showWarning]);\n\n const handleClick = () => {\n meta.editMode.toggleEditing();\n tableRef.current?.focus();\n scrollToIndex(meta.activeRowIndex + 1);\n };\n\n const hasVisibleEditableColumns = React.useMemo(() => {\n const hasColumns = table.getVisibleFlatColumns().some(column => column.columnDef.meta?.control !== undefined);\n\n if (!hasColumns && isEditing) {\n handleClick();\n }\n\n return hasColumns;\n }, [table.getState().columnVisibility]);\n\n return (\n <Button\n onClick={handleClick}\n className={cn({\n '!wcag-blue-100': meta.editMode.isEditing,\n })}\n disabled={!hasVisibleEditableColumns}\n ref={internalRef}\n tooltip={\n hasVisibleEditableColumns ? (\n <>\n {texts.table2.editing.tooltip}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'E']} />\n </>\n ) : (\n texts.table2.editing.tooltipDisabled\n )\n }>\n <Icon name=\"edit\" />\n {texts.table2.editing.button}\n </Button>\n );\n});\n"],"names":["EditModeButton","React","forwardRef","props","ref","scrollToIndex","table","tableRef","texts","useLocalization","internalRef","useMergedRef","meta","options","isEditing","editMode","showWarning","useCallback","event","returnValue","useGlobalKeyboardShortcut","key","ctrlKey","metaKey","preventDefault","current","click","useEffect","window","addEventListener","removeEventListener","handleClick","toggleEditing","focus","activeRowIndex","hasVisibleEditableColumns","useMemo","hasColumns","getVisibleFlatColumns","some","column","columnDef","control","undefined","getState","columnVisibility","Button","onClick","className","cn","disabled","tooltip","table2","editing","Shortcut","keys","tooltipDisabled","Icon","name","button"],"mappings":";;;;;;;;;MAgBaA,cAAc,gBAAGC,cAAK,CAACC,UAAU,CAAyC,SAASF,cAAc,CAACG,KAAK,EAAEC,GAAG;EACrH,MAAM;IAAEC,aAAa;IAAEC,KAAK;IAAEC;GAAU,GAAGJ,KAAK;EAChD,MAAM;IAAEK;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,WAAW,GAAGC,YAAY,CAAoBP,GAAG,CAAC;EACxD,MAAMQ,IAAI,GAAGN,KAAK,CAACO,OAAO,CAACD,IAAsB;EACjD,MAAM;IAAEE;GAAW,GAAGF,IAAI,CAACG,QAAQ;EAEnC,MAAMC,WAAW,GAAGf,cAAK,CAACgB,WAAW,CACjCC,KAAK;IACD,IAAIJ,SAAS,EAAE;MACXI,KAAK,CAACC,WAAW,GAAG,IAAI;MACxB,OAAO,IAAI;;IAGf,OAAO,KAAK;GACf,EACD,CAACL,SAAS,CAAC,CACd;EAEDM,yBAAyB,CAAEF,KAAoB;IAC3C,IAAIA,KAAK,CAACG,GAAG,KAAK,GAAG,KAAKH,KAAK,CAACI,OAAO,IAAIJ,KAAK,CAACK,OAAO,CAAC,EAAE;MAAA;MACvDL,KAAK,CAACM,cAAc,EAAE;MACtB,wBAAAd,WAAW,CAACe,OAAO,yDAAnB,qBAAqBC,KAAK,EAAE;;GAEnC,CAAC;EAEFzB,cAAK,CAAC0B,SAAS,CAAC;IACZC,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAEb,WAAW,CAAC;IAEpD,OAAO;MACHY,MAAM,CAACE,mBAAmB,CAAC,cAAc,EAAEd,WAAW,CAAC;KAC1D;GACJ,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMe,WAAW,GAAG;;IAChBnB,IAAI,CAACG,QAAQ,CAACiB,aAAa,EAAE;IAC7B,qBAAAzB,QAAQ,CAACkB,OAAO,sDAAhB,kBAAkBQ,KAAK,EAAE;IACzB5B,aAAa,CAACO,IAAI,CAACsB,cAAc,GAAG,CAAC,CAAC;GACzC;EAED,MAAMC,yBAAyB,GAAGlC,cAAK,CAACmC,OAAO,CAAC;IAC5C,MAAMC,UAAU,GAAG/B,KAAK,CAACgC,qBAAqB,EAAE,CAACC,IAAI,CAACC,MAAM;MAAA;MAAA,OAAI,0BAAAA,MAAM,CAACC,SAAS,CAAC7B,IAAI,0DAArB,sBAAuB8B,OAAO,MAAKC,SAAS;MAAC;IAE7G,IAAI,CAACN,UAAU,IAAIvB,SAAS,EAAE;MAC1BiB,WAAW,EAAE;;IAGjB,OAAOM,UAAU;GACpB,EAAE,CAAC/B,KAAK,CAACsC,QAAQ,EAAE,CAACC,gBAAgB,CAAC,CAAC;EAEvC,oBACI5C,6BAAC6C,MAAM;IACHC,OAAO,EAAEhB,WAAW;IACpBiB,SAAS,EAAEC,EAAE,CAAC;MACV,gBAAgB,EAAErC,IAAI,CAACG,QAAQ,CAACD;KACnC,CAAC;IACFoC,QAAQ,EAAE,CAACf,yBAAyB;IACpC/B,GAAG,EAAEM,WAAW;IAChByC,OAAO,EACHhB,yBAAyB,gBACrBlC,4DACKO,KAAK,CAAC4C,MAAM,CAACC,OAAO,CAACF,OAAO,eAC7BlD,6BAACqD,QAAQ;MAACN,SAAS,EAAC,MAAM;MAACO,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG;MAAK,CACnD,GAEH/C,KAAK,CAAC4C,MAAM,CAACC,OAAO,CAACG;kBAG7BvD,6BAACwD,IAAI;IAACC,IAAI,EAAC;IAAS,EACnBlD,KAAK,CAAC4C,MAAM,CAACC,OAAO,CAACM,MAAM,CACvB;AAEjB,CAAC;;;;"}
1
+ {"version":3,"file":"EditModeButton.js","sources":["../../../../../../../../src/components/Table2/components/EditModeButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../Button/Button';\nimport { Icon } from '../../Icon/Icon';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport type EditModeButtonProps = {\n scrollToIndex: (index: number) => void;\n table: RTTable<any>;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const EditModeButton = React.forwardRef<HTMLButtonElement, EditModeButtonProps>(function EditModeButton(props, ref) {\n const { scrollToIndex, table, tableRef } = props;\n const { texts } = useLocalization();\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const meta = table.options.meta as TableMeta<any>;\n const { isEditing } = meta.editMode;\n\n const showWarning = React.useCallback(\n event => {\n if (isEditing) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n },\n [isEditing]\n );\n\n useGlobalKeyDown({ key: 'e', meta: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n internalRef.current?.click();\n });\n\n React.useEffect(() => {\n window.addEventListener('beforeunload', showWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showWarning);\n };\n }, [showWarning]);\n\n const handleClick = () => {\n meta.editMode.toggleEditing();\n tableRef.current?.focus();\n scrollToIndex(meta.activeRowIndex + 1);\n };\n\n const hasVisibleEditableColumns = React.useMemo(() => {\n const hasColumns = table.getVisibleFlatColumns().some(column => column.columnDef.meta?.control !== undefined);\n\n if (!hasColumns && isEditing) {\n handleClick();\n }\n\n return hasColumns;\n }, [table.getState().columnVisibility]);\n\n return (\n <Button\n onClick={handleClick}\n className={cn({\n '!wcag-blue-100': meta.editMode.isEditing,\n })}\n disabled={!hasVisibleEditableColumns}\n ref={internalRef}\n tooltip={\n hasVisibleEditableColumns ? (\n <>\n {texts.table2.editing.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'e', meta: true }} />\n </>\n ) : (\n texts.table2.editing.tooltipDisabled\n )\n }>\n <Icon name=\"edit\" />\n {texts.table2.editing.button}\n </Button>\n );\n});\n"],"names":["EditModeButton","React","forwardRef","props","ref","scrollToIndex","table","tableRef","texts","useLocalization","internalRef","useMergedRef","meta","options","isEditing","editMode","showWarning","useCallback","event","returnValue","useGlobalKeyDown","key","preventDefault","current","click","useEffect","window","addEventListener","removeEventListener","handleClick","toggleEditing","focus","activeRowIndex","hasVisibleEditableColumns","useMemo","hasColumns","getVisibleFlatColumns","some","column","columnDef","control","undefined","getState","columnVisibility","Button","onClick","className","cn","disabled","tooltip","table2","editing","Shortcut","keys","tooltipDisabled","Icon","name","button"],"mappings":";;;;;;;;;MAgBaA,cAAc,gBAAGC,cAAK,CAACC,UAAU,CAAyC,SAASF,cAAc,CAACG,KAAK,EAAEC,GAAG;EACrH,MAAM;IAAEC,aAAa;IAAEC,KAAK;IAAEC;GAAU,GAAGJ,KAAK;EAChD,MAAM;IAAEK;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,WAAW,GAAGC,YAAY,CAAoBP,GAAG,CAAC;EACxD,MAAMQ,IAAI,GAAGN,KAAK,CAACO,OAAO,CAACD,IAAsB;EACjD,MAAM;IAAEE;GAAW,GAAGF,IAAI,CAACG,QAAQ;EAEnC,MAAMC,WAAW,GAAGf,cAAK,CAACgB,WAAW,CACjCC,KAAK;IACD,IAAIJ,SAAS,EAAE;MACXI,KAAK,CAACC,WAAW,GAAG,IAAI;MACxB,OAAO,IAAI;;IAGf,OAAO,KAAK;GACf,EACD,CAACL,SAAS,CAAC,CACd;EAEDM,gBAAgB,CAAC;IAAEC,GAAG,EAAE,GAAG;IAAET,IAAI,EAAE;GAAM,EAAGM,KAAoB;;IAC5DA,KAAK,CAACI,cAAc,EAAE;IACtB,wBAAAZ,WAAW,CAACa,OAAO,yDAAnB,qBAAqBC,KAAK,EAAE;GAC/B,CAAC;EAEFvB,cAAK,CAACwB,SAAS,CAAC;IACZC,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAEX,WAAW,CAAC;IAEpD,OAAO;MACHU,MAAM,CAACE,mBAAmB,CAAC,cAAc,EAAEZ,WAAW,CAAC;KAC1D;GACJ,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMa,WAAW,GAAG;;IAChBjB,IAAI,CAACG,QAAQ,CAACe,aAAa,EAAE;IAC7B,qBAAAvB,QAAQ,CAACgB,OAAO,sDAAhB,kBAAkBQ,KAAK,EAAE;IACzB1B,aAAa,CAACO,IAAI,CAACoB,cAAc,GAAG,CAAC,CAAC;GACzC;EAED,MAAMC,yBAAyB,GAAGhC,cAAK,CAACiC,OAAO,CAAC;IAC5C,MAAMC,UAAU,GAAG7B,KAAK,CAAC8B,qBAAqB,EAAE,CAACC,IAAI,CAACC,MAAM;MAAA;MAAA,OAAI,0BAAAA,MAAM,CAACC,SAAS,CAAC3B,IAAI,0DAArB,sBAAuB4B,OAAO,MAAKC,SAAS;MAAC;IAE7G,IAAI,CAACN,UAAU,IAAIrB,SAAS,EAAE;MAC1Be,WAAW,EAAE;;IAGjB,OAAOM,UAAU;GACpB,EAAE,CAAC7B,KAAK,CAACoC,QAAQ,EAAE,CAACC,gBAAgB,CAAC,CAAC;EAEvC,oBACI1C,6BAAC2C,MAAM;IACHC,OAAO,EAAEhB,WAAW;IACpBiB,SAAS,EAAEC,EAAE,CAAC;MACV,gBAAgB,EAAEnC,IAAI,CAACG,QAAQ,CAACD;KACnC,CAAC;IACFkC,QAAQ,EAAE,CAACf,yBAAyB;IACpC7B,GAAG,EAAEM,WAAW;IAChBuC,OAAO,EACHhB,yBAAyB,gBACrBhC,4DACKO,KAAK,CAAC0C,MAAM,CAACC,OAAO,CAACF,OAAO,eAC7BhD,6BAACmD,QAAQ;MAACN,SAAS,EAAC,MAAM;MAACO,IAAI,EAAE;QAAEhC,GAAG,EAAE,GAAG;QAAET,IAAI,EAAE;;MAAU,CAC9D,GAEHJ,KAAK,CAAC0C,MAAM,CAACC,OAAO,CAACG;kBAG7BrD,6BAACsD,IAAI;IAACC,IAAI,EAAC;IAAS,EACnBhD,KAAK,CAAC0C,MAAM,CAACC,OAAO,CAACM,MAAM,CACvB;AAEjB,CAAC;;;;"}
@@ -1,7 +1,7 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'classnames';
3
3
  import { useLocalization } from '../../Provider/Localization.js';
4
- import { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut.js';
4
+ import { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown.js';
5
5
  import { SearchInput } from '../../SearchInput/SearchInput.js';
6
6
 
7
7
  const Search = props => {
@@ -34,13 +34,15 @@ const Search = props => {
34
34
  const value = event.target.value;
35
35
  (_props$onSearch3 = props.onSearch) === null || _props$onSearch3 === void 0 ? void 0 : _props$onSearch3.call(props, value);
36
36
  };
37
- useGlobalKeyboardShortcut(event => {
38
- if (event.key === 'f' && (event.ctrlKey || event.metaKey) && !event.shiftKey) {
39
- if (document.activeElement !== ref.current) {
40
- var _ref$current;
41
- event.preventDefault();
42
- (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
43
- }
37
+ useGlobalKeyDown({
38
+ key: 'f',
39
+ meta: true,
40
+ shift: false
41
+ }, event => {
42
+ if (document.activeElement !== ref.current) {
43
+ var _ref$current;
44
+ event.preventDefault();
45
+ (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
44
46
  }
45
47
  });
46
48
  const className = cn('w-48', {
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Table2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { SearchInput, SearchInputProps } from '../../SearchInput/SearchInput';\nimport { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport const Search = (props: SearchInputProps) => {\n const { value, ...attributes } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n props.onSearch?.('');\n }\n };\n\n // gets called when the \"clear\" button is clicked\n const handleInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.onInput) {\n props.onInput(event);\n }\n\n if (!event.isDefaultPrevented() && !event.currentTarget.value) {\n props.onSearch?.('');\n }\n };\n\n const handleBlur = event => {\n const value = event.target.value;\n props.onSearch?.(value);\n };\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'f' && (event.ctrlKey || event.metaKey) && !event.shiftKey) {\n if (document.activeElement !== ref.current) {\n event.preventDefault();\n ref.current?.focus();\n }\n }\n });\n\n const className = cn('w-48', {\n '!wcag-blue-100': !!value,\n });\n\n return (\n <SearchInput\n {...attributes}\n className={className}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n placeholder={texts.table2.search.placeholder}\n ref={ref}\n />\n );\n};\n"],"names":["Search","props","value","attributes","texts","useLocalization","ref","React","useRef","handleKeyDown","event","key","onSearch","handleInput","onInput","isDefaultPrevented","currentTarget","handleBlur","target","useGlobalKeyboardShortcut","ctrlKey","metaKey","shiftKey","document","activeElement","current","preventDefault","focus","className","cn","SearchInput","onBlur","onKeyDown","placeholder","table2","search"],"mappings":";;;;;;MAMaA,MAAM,GAAIC,KAAuB;EAC1C,MAAM;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGF,KAAK;EACtC,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAEhD,MAAMC,aAAa,GAAIC,KAA4C;IAC/D,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAE;MAAA;MACxB,mBAAAV,KAAK,CAACW,QAAQ,oDAAd,qBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;;EAGD,MAAMY,WAAW,GAAIH,KAAwC;IACzD,IAAIT,KAAK,CAACa,OAAO,EAAE;MACfb,KAAK,CAACa,OAAO,CAACJ,KAAK,CAAC;;IAGxB,IAAI,CAACA,KAAK,CAACK,kBAAkB,EAAE,IAAI,CAACL,KAAK,CAACM,aAAa,CAACd,KAAK,EAAE;MAAA;MAC3D,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;EAED,MAAMgB,UAAU,GAAGP,KAAK;;IACpB,MAAMR,KAAK,GAAGQ,KAAK,CAACQ,MAAM,CAAChB,KAAK;IAChC,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAYC,KAAK,CAAC;GAC1B;EAEDiB,yBAAyB,CAAET,KAAoB;IAC3C,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,KAAKD,KAAK,CAACU,OAAO,IAAIV,KAAK,CAACW,OAAO,CAAC,IAAI,CAACX,KAAK,CAACY,QAAQ,EAAE;MAC1E,IAAIC,QAAQ,CAACC,aAAa,KAAKlB,GAAG,CAACmB,OAAO,EAAE;QAAA;QACxCf,KAAK,CAACgB,cAAc,EAAE;QACtB,gBAAApB,GAAG,CAACmB,OAAO,iDAAX,aAAaE,KAAK,EAAE;;;GAG/B,CAAC;EAEF,MAAMC,SAAS,GAAGC,EAAE,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC3B;GACvB,CAAC;EAEF,oBACIK,6BAACuB,WAAW,oBACJ3B,UAAU;IACdyB,SAAS,EAAEA,SAAS;IACpBG,MAAM,EAAEd,UAAU;IAClBH,OAAO,EAAED,WAAW;IACpBmB,SAAS,EAAEvB,aAAa;IACxBwB,WAAW,EAAE7B,KAAK,CAAC8B,MAAM,CAACC,MAAM,CAACF,WAAW;IAC5C3B,GAAG,EAAEA;KACP;AAEV;;;;"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Table2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { SearchInput, SearchInputProps } from '../../SearchInput/SearchInput';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport const Search = (props: SearchInputProps) => {\n const { value, ...attributes } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n props.onSearch?.('');\n }\n };\n\n // gets called when the \"clear\" button is clicked\n const handleInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.onInput) {\n props.onInput(event);\n }\n\n if (!event.isDefaultPrevented() && !event.currentTarget.value) {\n props.onSearch?.('');\n }\n };\n\n const handleBlur = event => {\n const value = event.target.value;\n props.onSearch?.(value);\n };\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: false }, (event: KeyboardEvent) => {\n if (document.activeElement !== ref.current) {\n event.preventDefault();\n ref.current?.focus();\n }\n });\n\n const className = cn('w-48', {\n '!wcag-blue-100': !!value,\n });\n\n return (\n <SearchInput\n {...attributes}\n className={className}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n placeholder={texts.table2.search.placeholder}\n ref={ref}\n />\n );\n};\n"],"names":["Search","props","value","attributes","texts","useLocalization","ref","React","useRef","handleKeyDown","event","key","onSearch","handleInput","onInput","isDefaultPrevented","currentTarget","handleBlur","target","useGlobalKeyDown","meta","shift","document","activeElement","current","preventDefault","focus","className","cn","SearchInput","onBlur","onKeyDown","placeholder","table2","search"],"mappings":";;;;;;MAMaA,MAAM,GAAIC,KAAuB;EAC1C,MAAM;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGF,KAAK;EACtC,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAEhD,MAAMC,aAAa,GAAIC,KAA4C;IAC/D,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAE;MAAA;MACxB,mBAAAV,KAAK,CAACW,QAAQ,oDAAd,qBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;;EAGD,MAAMY,WAAW,GAAIH,KAAwC;IACzD,IAAIT,KAAK,CAACa,OAAO,EAAE;MACfb,KAAK,CAACa,OAAO,CAACJ,KAAK,CAAC;;IAGxB,IAAI,CAACA,KAAK,CAACK,kBAAkB,EAAE,IAAI,CAACL,KAAK,CAACM,aAAa,CAACd,KAAK,EAAE;MAAA;MAC3D,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;EAED,MAAMgB,UAAU,GAAGP,KAAK;;IACpB,MAAMR,KAAK,GAAGQ,KAAK,CAACQ,MAAM,CAAChB,KAAK;IAChC,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAYC,KAAK,CAAC;GAC1B;EAEDiB,gBAAgB,CAAC;IAAER,GAAG,EAAE,GAAG;IAAES,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE;GAAO,EAAGX,KAAoB;IAC1E,IAAIY,QAAQ,CAACC,aAAa,KAAKjB,GAAG,CAACkB,OAAO,EAAE;MAAA;MACxCd,KAAK,CAACe,cAAc,EAAE;MACtB,gBAAAnB,GAAG,CAACkB,OAAO,iDAAX,aAAaE,KAAK,EAAE;;GAE3B,CAAC;EAEF,MAAMC,SAAS,GAAGC,EAAE,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC1B;GACvB,CAAC;EAEF,oBACIK,6BAACsB,WAAW,oBACJ1B,UAAU;IACdwB,SAAS,EAAEA,SAAS;IACpBG,MAAM,EAAEb,UAAU;IAClBH,OAAO,EAAED,WAAW;IACpBkB,SAAS,EAAEtB,aAAa;IACxBuB,WAAW,EAAE5B,KAAK,CAAC6B,MAAM,CAACC,MAAM,CAACF,WAAW;IAC5C1B,GAAG,EAAEA;KACP;AAEV;;;;"}
@@ -5,7 +5,7 @@ import { useLocalization } from '../../../Provider/Localization.js';
5
5
  import { Button } from '../../../Button/Button.js';
6
6
  import { Popover } from '../../../Popover/Popover.js';
7
7
  import { Group } from '../../../Group/Group.js';
8
- import { useGlobalKeyboardShortcut } from '../../../../hooks/useGlobalKeyboardShortcut.js';
8
+ import { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown.js';
9
9
  import { Shortcut } from '../../../Shortcut/Shortcut.js';
10
10
  import { isInternalColumn } from '../../utilities/columns.js';
11
11
  import { ColumnFilter } from './components/ColumnFilter.js';
@@ -42,12 +42,14 @@ const FiltersButton = ({
42
42
  const handleReset = () => {
43
43
  table.resetColumnFilters();
44
44
  };
45
- useGlobalKeyboardShortcut(event => {
46
- if (event.key === 'f' && (event.ctrlKey || event.metaKey) && event.shiftKey) {
47
- var _ref$current;
48
- event.preventDefault();
49
- (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
50
- }
45
+ useGlobalKeyDown({
46
+ key: 'f',
47
+ meta: true,
48
+ shift: true
49
+ }, event => {
50
+ var _ref$current;
51
+ event.preventDefault();
52
+ (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
51
53
  });
52
54
  return /*#__PURE__*/React__default.createElement(Button, {
53
55
  "aria-label": texts.table2.filters.tooltip,
@@ -83,7 +85,11 @@ const FiltersButton = ({
83
85
  ref: ref,
84
86
  tooltip: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table2.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
85
87
  className: "ml-2",
86
- keys: ['Ctrl', 'Shift', 'F']
88
+ keys: {
89
+ key: 'f',
90
+ meta: true,
91
+ shift: true
92
+ }
87
93
  }))
88
94
  }, /*#__PURE__*/React__default.createElement(Icon, {
89
95
  name: columnFilters.length ? 'filter-solid' : 'filter'
@@ -1 +1 @@
1
- {"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { Group } from '../../../Group/Group';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyboardShortcut } from '../../../../hooks/useGlobalKeyboardShortcut';\nimport { useLocalization } from '../../../Provider/Localization';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const handleAdd = () => {\n const firstFilterableColumn = allColumns.find(c => c.getCanFilter() && !columnFilters.find(f => f.id === c.id));\n\n if (firstFilterableColumn) {\n firstFilterableColumn.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n };\n\n const handleReset = () => {\n table.resetColumnFilters();\n };\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'f' && (event.ctrlKey || event.metaKey) && event.shiftKey) {\n event.preventDefault();\n ref.current?.click();\n }\n });\n\n return (\n <Button\n aria-label={texts.table2.filters.tooltip}\n appearance={columnFilters.length ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': columnFilters.length,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">Filter</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table2.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(length))}\n </p>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n />\n ))}\n </div>\n <Group className=\"justify-between\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + {texts.table2.filters.buttons.addFilter}\n </Button>\n {columnFilters.length ? (\n <Button onClick={handleReset}>{texts.table2.filters.buttons.clearFilters}</Button>\n ) : null}\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table2.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'Shift', 'F']} />\n </>\n }>\n <Icon name={columnFilters.length ? 'filter-solid' : 'filter'} />\n {texts.table2.filters.button} {columnFilters.length ? `(${columnFilters.length})` : ''}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","handleAdd","firstFilterableColumn","getCanFilter","f","setFilterValue","comparator","undefined","value","handleReset","resetColumnFilters","useGlobalKeyboardShortcut","event","key","ctrlKey","metaKey","shiftKey","preventDefault","current","click","Button","table2","filters","tooltip","appearance","className","cn","disabled","popover","popoverProps","Popover","Content","total","replace","String","getFilteredRowModel","rows","map","index","ColumnFilter","Group","onClick","buttons","addFilter","clearFilters","Shortcut","keys","Icon","name","button"],"mappings":"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"}
1
+ {"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { Group } from '../../../Group/Group';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../Provider/Localization';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const handleAdd = () => {\n const firstFilterableColumn = allColumns.find(c => c.getCanFilter() && !columnFilters.find(f => f.id === c.id));\n\n if (firstFilterableColumn) {\n firstFilterableColumn.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n };\n\n const handleReset = () => {\n table.resetColumnFilters();\n };\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n return (\n <Button\n aria-label={texts.table2.filters.tooltip}\n appearance={columnFilters.length ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': columnFilters.length,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">Filter</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table2.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(length))}\n </p>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n />\n ))}\n </div>\n <Group className=\"justify-between\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + {texts.table2.filters.buttons.addFilter}\n </Button>\n {columnFilters.length ? (\n <Button onClick={handleReset}>{texts.table2.filters.buttons.clearFilters}</Button>\n ) : null}\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table2.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={columnFilters.length ? 'filter-solid' : 'filter'} />\n {texts.table2.filters.button} {columnFilters.length ? `(${columnFilters.length})` : ''}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","handleAdd","firstFilterableColumn","getCanFilter","f","setFilterValue","comparator","undefined","value","handleReset","resetColumnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","Button","table2","filters","tooltip","appearance","className","cn","disabled","popover","popoverProps","Popover","Content","total","replace","String","getFilteredRowModel","rows","map","index","ColumnFilter","Group","onClick","buttons","addFilter","clearFilters","Shortcut","keys","Icon","name","button"],"mappings":"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"}
@@ -90,7 +90,7 @@ function useColumnDefinitions(children, options, tableRef) {
90
90
  internalFrozenColumnCount++;
91
91
  }
92
92
  if ((_options$actionsForRo = options.actionsForRow) !== null && _options$actionsForRo !== void 0 && _options$actionsForRo.length) {
93
- columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow, texts)));
93
+ columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow, options.actionsForRowLength, texts)));
94
94
  }
95
95
  return {
96
96
  columns,