@economic/taco 1.38.1 → 1.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/dist/components/Provider/Localization.d.ts +9 -1
  2. package/dist/components/Table2/Table2.d.ts +10 -1
  3. package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +1 -0
  4. package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
  5. package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
  6. package/dist/components/Table2/types.d.ts +8 -0
  7. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -3
  8. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Provider/Localization.js +9 -1
  10. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table2/Table2.js +2 -1
  14. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +1 -1
  16. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +79 -24
  18. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +14 -6
  20. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +63 -0
  22. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +1 -0
  23. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +2 -1
  24. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -1
  26. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +46 -0
  28. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +1 -0
  29. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  30. package/dist/esm/packages/taco/src/utils/keyboard.js +1 -1
  31. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  32. package/dist/taco.cjs.development.js +208 -39
  33. package/dist/taco.cjs.development.js.map +1 -1
  34. package/dist/taco.cjs.production.min.js +1 -1
  35. package/dist/taco.cjs.production.min.js.map +1 -1
  36. package/package.json +2 -3
  37. package/types.json +131 -3
@@ -0,0 +1,63 @@
1
+ import React__default from 'react';
2
+ import { IconButton } from '../../../../IconButton/IconButton.js';
3
+ import { useLocalization } from '../../../../Provider/Localization.js';
4
+ import { Input } from '../../../../Input/Input.js';
5
+ import { Select2 } from '../../../../Select2/Select2.js';
6
+
7
+ const EmptyFilter = props => {
8
+ const {
9
+ texts
10
+ } = useLocalization();
11
+ const {
12
+ onChange,
13
+ onRemove,
14
+ allColumns,
15
+ table,
16
+ index,
17
+ filteredColumns,
18
+ emptyFilterCount
19
+ } = props;
20
+ const handleChange = value => {
21
+ if (value) {
22
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
23
+ }
24
+ };
25
+ return /*#__PURE__*/React__default.createElement("div", {
26
+ className: "flex gap-2"
27
+ }, /*#__PURE__*/React__default.createElement("div", {
28
+ className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
29
+ }, filteredColumns.length > 0 || filteredColumns.length === 0 && index > 0 ? texts.table2.filters.conditions.and : texts.table2.filters.conditions.where), /*#__PURE__*/React__default.createElement(Select2, {
30
+ className: "!w-32 flex-shrink-0",
31
+ emptyValue: null,
32
+ autoFocus: true,
33
+ onChange: handleChange,
34
+ value: null
35
+ }, allColumns.map(c => /*#__PURE__*/React__default.createElement(Select2.Option, {
36
+ key: c.id,
37
+ value: c.id,
38
+ disabled: !c.getCanFilter() || !!table.getState().columnFilters.find(f => f.id === c.id)
39
+ }, String(c.columnDef.header)))), /*#__PURE__*/React__default.createElement(Select2, {
40
+ className: "!w-32 flex-shrink-0",
41
+ value: 1,
42
+ autoFocus: true,
43
+ disabled: true
44
+ }, /*#__PURE__*/React__default.createElement(Select2.Option, {
45
+ key: 'condition1',
46
+ value: 1
47
+ }, texts.table2.filters.emptyFilter.condition), /*#__PURE__*/React__default.createElement(Select2.Option, {
48
+ key: 'condition2',
49
+ value: 2
50
+ }, "Condition2")), /*#__PURE__*/React__default.createElement(Input, {
51
+ "aria-label": 'Value',
52
+ className: "flex-grow items-center",
53
+ disabled: true,
54
+ value: texts.table2.filters.emptyFilter.value
55
+ }), (emptyFilterCount > 1 || filteredColumns.length > 0) && /*#__PURE__*/React__default.createElement(IconButton, {
56
+ appearance: "discrete",
57
+ icon: "close",
58
+ onClick: onRemove
59
+ }));
60
+ };
61
+
62
+ export { EmptyFilter };
63
+ //# sourceMappingURL=EmptyFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/EmptyFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Select2, Select2Value } from '../../../../Select2/Select2';\nimport { useLocalization } from '../../../../Provider/Localization';\n\nexport type EmptyFilterProps = {\n allColumns: RTColumn<any, any>[];\n table: RTTable<any>;\n onChange?: (value: Select2Value) => void;\n onRemove?: () => void;\n filteredColumns: RTColumn<any, any>[];\n emptyFilterCount: Number;\n index: Number;\n};\n\nexport const EmptyFilter = (props: EmptyFilterProps) => {\n const { texts } = useLocalization();\n const { onChange, onRemove, allColumns, table, index, filteredColumns, emptyFilterCount } = props;\n\n const handleChange = (value: Select2Value) => {\n if (value) {\n onChange?.(value);\n }\n };\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {filteredColumns.length > 0 || (filteredColumns.length === 0 && index > 0)\n ? texts.table2.filters.conditions.and\n : texts.table2.filters.conditions.where}\n </div>\n <Select2 className=\"!w-32 flex-shrink-0\" emptyValue={null} autoFocus onChange={handleChange} value={null}>\n {allColumns.map(c => (\n <Select2.Option\n key={c.id}\n value={c.id}\n disabled={!c.getCanFilter() || !!table.getState().columnFilters.find(f => f.id === c.id)}>\n {String(c.columnDef.header)}\n </Select2.Option>\n ))}\n </Select2>\n <Select2 className=\"!w-32 flex-shrink-0\" value={1} autoFocus disabled>\n <Select2.Option key={'condition1'} value={1}>\n {texts.table2.filters.emptyFilter.condition}\n </Select2.Option>\n <Select2.Option key={'condition2'} value={2}>\n Condition2\n </Select2.Option>\n </Select2>\n <Input\n aria-label={'Value'}\n className=\"flex-grow items-center\"\n disabled\n value={texts.table2.filters.emptyFilter.value}\n />\n {(emptyFilterCount > 1 || filteredColumns.length > 0) && (\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={onRemove} />\n )}\n </div>\n );\n};\n"],"names":["EmptyFilter","props","texts","useLocalization","onChange","onRemove","allColumns","table","index","filteredColumns","emptyFilterCount","handleChange","value","React","className","length","table2","filters","conditions","and","where","Select2","emptyValue","autoFocus","map","c","Option","key","id","disabled","getCanFilter","getState","columnFilters","find","f","String","columnDef","header","emptyFilter","condition","Input","IconButton","appearance","icon","onClick"],"mappings":";;;;;;MAiBaA,WAAW,GAAIC,KAAuB;EAC/C,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,UAAU;IAAEC,KAAK;IAAEC,KAAK;IAAEC,eAAe;IAAEC;GAAkB,GAAGT,KAAK;EAEjG,MAAMU,YAAY,GAAIC,KAAmB;IACrC,IAAIA,KAAK,EAAE;MACPR,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGQ,KAAK,CAAC;;GAExB;EAED,oBACIC;IAAKC,SAAS,EAAC;kBACXD;IAAKC,SAAS,EAAC;KACVL,eAAe,CAACM,MAAM,GAAG,CAAC,IAAKN,eAAe,CAACM,MAAM,KAAK,CAAC,IAAIP,KAAK,GAAG,CAAE,GACpEN,KAAK,CAACc,MAAM,CAACC,OAAO,CAACC,UAAU,CAACC,GAAG,GACnCjB,KAAK,CAACc,MAAM,CAACC,OAAO,CAACC,UAAU,CAACE,KAAK,CACzC,eACNP,6BAACQ,OAAO;IAACP,SAAS,EAAC,qBAAqB;IAACQ,UAAU,EAAE,IAAI;IAAEC,SAAS;IAACnB,QAAQ,EAAEO,YAAY;IAAEC,KAAK,EAAE;KAC/FN,UAAU,CAACkB,GAAG,CAACC,CAAC,iBACbZ,6BAACQ,OAAO,CAACK,MAAM;IACXC,GAAG,EAAEF,CAAC,CAACG,EAAE;IACThB,KAAK,EAAEa,CAAC,CAACG,EAAE;IACXC,QAAQ,EAAE,CAACJ,CAAC,CAACK,YAAY,EAAE,IAAI,CAAC,CAACvB,KAAK,CAACwB,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACN,EAAE,KAAKH,CAAC,CAACG,EAAE;KACtFO,MAAM,CAACV,CAAC,CAACW,SAAS,CAACC,MAAM,CAAC,CAElC,CAAC,CACI,eACVxB,6BAACQ,OAAO;IAACP,SAAS,EAAC,qBAAqB;IAACF,KAAK,EAAE,CAAC;IAAEW,SAAS;IAACM,QAAQ;kBACjEhB,6BAACQ,OAAO,CAACK,MAAM;IAACC,GAAG,EAAE,YAAY;IAAEf,KAAK,EAAE;KACrCV,KAAK,CAACc,MAAM,CAACC,OAAO,CAACqB,WAAW,CAACC,SAAS,CAC9B,eACjB1B,6BAACQ,OAAO,CAACK,MAAM;IAACC,GAAG,EAAE,YAAY;IAAEf,KAAK,EAAE;kBAEzB,CACX,eACVC,6BAAC2B,KAAK;kBACU,OAAO;IACnB1B,SAAS,EAAC,wBAAwB;IAClCe,QAAQ;IACRjB,KAAK,EAAEV,KAAK,CAACc,MAAM,CAACC,OAAO,CAACqB,WAAW,CAAC1B;IAC1C,EACD,CAACF,gBAAgB,GAAG,CAAC,IAAID,eAAe,CAACM,MAAM,GAAG,CAAC,kBAChDF,6BAAC4B,UAAU;IAACC,UAAU,EAAC,UAAU;IAACC,IAAI,EAAC,OAAO;IAACC,OAAO,EAAEvC;IAC3D,CACC;AAEd;;;;"}
@@ -74,7 +74,8 @@ function useColumnDefinitions(children, options, tableRef) {
74
74
  size: child.props.defaultWidth,
75
75
  // sorting
76
76
  enableSorting: !child.props.disableSorting,
77
- sortingFn: getSortingFn(child.props.dataType, child.props.sortFn)
77
+ sortingFn: getSortingFn(child.props.dataType, child.props.sortFn),
78
+ sortDescFirst: false
78
79
  });
79
80
  }
80
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefinitions.js","sources":["../../../../../../../../src/components/Table2/hooks/useColumnDefinitions.tsx"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n ColumnSort,\n ColumnSizingState,\n Row,\n RowData,\n VisibilityState,\n SortingFnOption,\n Table,\n} from '@tanstack/react-table';\nimport {\n CellAlignment,\n ColumnDataType,\n RowDragHandler,\n RowExpansionRenderer,\n SortFn,\n Table2Children,\n Table2ColumnControlRenderer,\n Table2ColumnFooterRenderer,\n Table2ColumnHeaderMenu,\n Table2ColumnProps,\n Table2RowActionRenderer,\n} from '../types';\nimport {\n createRowActionsColumn,\n createRowDraggableColumn,\n createRowExpansionColumn,\n createRowSelectionColumn,\n MIN_COLUMN_SIZE,\n} from '../utilities/columns';\nimport { useLocalization } from '../../Provider/Localization';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: CellAlignment;\n className?: string | ((row: Row<TData>, table: Table<TData>) => string);\n control?: Table2ColumnControlRenderer;\n dataType?: ColumnDataType;\n disableReordering?: boolean;\n defaultWidth?: number | 'grow';\n headerClassName?: string;\n menu?: Table2ColumnHeaderMenu;\n tooltip?: string;\n }\n}\n\ntype useColumnDefinitionsOptions<TType> = {\n actionsForRow: Table2RowActionRenderer<TType>[];\n actionsForRowLength: number;\n enableColumnFiltering: boolean;\n enableColumnHiding: boolean;\n enableColumnFreezing: boolean;\n enableRowExpansion: boolean;\n enableRowSelection: boolean;\n enableMultipleRowSelection: boolean;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n onRowDrag?: RowDragHandler<TType>;\n};\n\nexport function useColumnDefinitions<TType = any>(\n children: Table2Children,\n options: useColumnDefinitionsOptions<TType>,\n tableRef: React.RefObject<HTMLDivElement>\n) {\n const { texts } = useLocalization();\n const lastSelectedRowIndex = React.useRef<number>();\n const columnHelper = createColumnHelper<TType>();\n\n return React.useMemo(() => {\n let internalFrozenColumnCount = 0;\n // cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved\n const columns: any[] = [];\n const defaultColumnSizing: ColumnSizingState = {};\n const defaultColumnVisibility: VisibilityState = {};\n const defaultSorting: ColumnSort[] = [];\n const footers: Record<string, Table2ColumnFooterRenderer> = {};\n\n (React.Children.toArray(children) as React.ReactElement<Table2ColumnProps<TType>>[])\n .filter((child: any) => !!child)\n .forEach(child => {\n if (React.isValidElement(child)) {\n const defaultWidth = child.props.defaultWidth === 'grow' ? '1fr' : child.props.defaultWidth;\n\n if (defaultWidth) {\n defaultColumnSizing[child.props.accessor] = defaultWidth as any;\n }\n\n if (child.props.defaultHidden && options.enableColumnHiding) {\n defaultColumnVisibility[child.props.accessor] = false;\n }\n\n if (child.props.sort !== undefined) {\n defaultSorting.push({\n id: child.props.accessor,\n desc: child.props.sort === 'desc',\n });\n }\n\n if (child.props.footer) {\n footers[child.props.accessor] = child.props.footer;\n }\n\n columns.push({\n accessorKey: child.props.accessor,\n id: child.props.accessor,\n cell: props => {\n let value = props.getValue();\n\n if (typeof child.props.renderer === 'function') {\n value = child.props.renderer(value, props.row.original);\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return <span className=\"truncate\">{value}</span>;\n }\n\n return value ?? null;\n },\n header: child.props.header,\n meta: {\n align: child.props.align,\n className: child.props.className,\n control: child.props.control,\n dataType: child.props.dataType,\n defaultWidth,\n disableReordering: child.props.disableReordering,\n menu: child.props.menu,\n tooltip: child.props.tooltip,\n },\n enableHiding: !child.props.disableHiding,\n // filtering\n enableColumnFilter: !child.props.disableFiltering,\n filterFn:\n options.enableColumnFiltering && !child.props.disableFiltering ? ('tacoFilter' as any) : undefined,\n // sizing\n enableResizing: !child.props.disableResizing,\n minSize: child.props.minWidth ?? MIN_COLUMN_SIZE,\n size: child.props.defaultWidth,\n // sorting\n enableSorting: !child.props.disableSorting,\n sortingFn: getSortingFn<TType>(child.props.dataType, child.props.sortFn),\n });\n }\n });\n\n if (options.enableRowExpansion && options.expandedRowRenderer) {\n columns.unshift(columnHelper.display(createRowExpansionColumn(options.expandedRowRenderer, texts)));\n internalFrozenColumnCount++;\n }\n\n if (options.enableRowSelection) {\n columns.unshift(\n columnHelper.display(\n createRowSelectionColumn(\n options.enableMultipleRowSelection,\n lastSelectedRowIndex,\n options.onRowDrag,\n tableRef,\n texts\n )\n )\n );\n internalFrozenColumnCount++;\n }\n\n if (options.onRowDrag) {\n columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag, texts)));\n internalFrozenColumnCount++;\n }\n\n if (options.actionsForRow?.length) {\n columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow, options.actionsForRowLength, texts)));\n }\n\n return { columns, internalFrozenColumnCount, defaultColumnSizing, defaultColumnVisibility, defaultSorting, footers };\n }, [children]);\n}\n\nfunction getSortingFn<TType>(dataType?: ColumnDataType, customFn?: SortFn<TType>): SortingFnOption<TType> {\n if (customFn) {\n return (rowA, rowB, columnId) => customFn(rowA.original, rowB.original, columnId);\n }\n\n if (dataType && dataType !== 'boolean') {\n return dataType;\n }\n\n return 'auto';\n}\n"],"names":["useColumnDefinitions","children","options","tableRef","texts","useLocalization","lastSelectedRowIndex","React","useRef","columnHelper","createColumnHelper","useMemo","internalFrozenColumnCount","columns","defaultColumnSizing","defaultColumnVisibility","defaultSorting","footers","Children","toArray","filter","child","forEach","isValidElement","defaultWidth","props","accessor","defaultHidden","enableColumnHiding","sort","undefined","push","id","desc","footer","accessorKey","cell","value","getValue","renderer","row","original","className","header","meta","align","control","dataType","disableReordering","menu","tooltip","enableHiding","disableHiding","enableColumnFilter","disableFiltering","filterFn","enableColumnFiltering","enableResizing","disableResizing","minSize","minWidth","MIN_COLUMN_SIZE","size","enableSorting","disableSorting","sortingFn","getSortingFn","sortFn","enableRowExpansion","expandedRowRenderer","unshift","display","createRowExpansionColumn","enableRowSelection","createRowSelectionColumn","enableMultipleRowSelection","onRowDrag","createRowDraggableColumn","actionsForRow","length","createRowActionsColumn","actionsForRowLength","customFn","rowA","rowB","columnId"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnDefinitions.js","sources":["../../../../../../../../src/components/Table2/hooks/useColumnDefinitions.tsx"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n ColumnSort,\n ColumnSizingState,\n Row,\n RowData,\n VisibilityState,\n SortingFnOption,\n Table,\n} from '@tanstack/react-table';\nimport {\n CellAlignment,\n ColumnDataType,\n RowDragHandler,\n RowExpansionRenderer,\n SortFn,\n Table2Children,\n Table2ColumnControlRenderer,\n Table2ColumnFooterRenderer,\n Table2ColumnHeaderMenu,\n Table2ColumnProps,\n Table2RowActionRenderer,\n} from '../types';\nimport {\n createRowActionsColumn,\n createRowDraggableColumn,\n createRowExpansionColumn,\n createRowSelectionColumn,\n MIN_COLUMN_SIZE,\n} from '../utilities/columns';\nimport { useLocalization } from '../../Provider/Localization';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: CellAlignment;\n className?: string | ((row: Row<TData>, table: Table<TData>) => string);\n control?: Table2ColumnControlRenderer;\n dataType?: ColumnDataType;\n disableReordering?: boolean;\n defaultWidth?: number | 'grow';\n headerClassName?: string;\n menu?: Table2ColumnHeaderMenu;\n tooltip?: string;\n }\n}\n\ntype useColumnDefinitionsOptions<TType> = {\n actionsForRow: Table2RowActionRenderer<TType>[];\n actionsForRowLength: number;\n enableColumnFiltering: boolean;\n enableColumnHiding: boolean;\n enableColumnFreezing: boolean;\n enableRowExpansion: boolean;\n enableRowSelection: boolean;\n enableMultipleRowSelection: boolean;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n onRowDrag?: RowDragHandler<TType>;\n};\n\nexport function useColumnDefinitions<TType = any>(\n children: Table2Children,\n options: useColumnDefinitionsOptions<TType>,\n tableRef: React.RefObject<HTMLDivElement>\n) {\n const { texts } = useLocalization();\n const lastSelectedRowIndex = React.useRef<number>();\n const columnHelper = createColumnHelper<TType>();\n\n return React.useMemo(() => {\n let internalFrozenColumnCount = 0;\n // cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved\n const columns: any[] = [];\n const defaultColumnSizing: ColumnSizingState = {};\n const defaultColumnVisibility: VisibilityState = {};\n const defaultSorting: ColumnSort[] = [];\n const footers: Record<string, Table2ColumnFooterRenderer> = {};\n\n (React.Children.toArray(children) as React.ReactElement<Table2ColumnProps<TType>>[])\n .filter((child: any) => !!child)\n .forEach(child => {\n if (React.isValidElement(child)) {\n const defaultWidth = child.props.defaultWidth === 'grow' ? '1fr' : child.props.defaultWidth;\n\n if (defaultWidth) {\n defaultColumnSizing[child.props.accessor] = defaultWidth as any;\n }\n\n if (child.props.defaultHidden && options.enableColumnHiding) {\n defaultColumnVisibility[child.props.accessor] = false;\n }\n\n if (child.props.sort !== undefined) {\n defaultSorting.push({\n id: child.props.accessor,\n desc: child.props.sort === 'desc',\n });\n }\n\n if (child.props.footer) {\n footers[child.props.accessor] = child.props.footer;\n }\n\n columns.push({\n accessorKey: child.props.accessor,\n id: child.props.accessor,\n cell: props => {\n let value = props.getValue();\n\n if (typeof child.props.renderer === 'function') {\n value = child.props.renderer(value, props.row.original);\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return <span className=\"truncate\">{value}</span>;\n }\n\n return value ?? null;\n },\n header: child.props.header,\n meta: {\n align: child.props.align,\n className: child.props.className,\n control: child.props.control,\n dataType: child.props.dataType,\n defaultWidth,\n disableReordering: child.props.disableReordering,\n menu: child.props.menu,\n tooltip: child.props.tooltip,\n },\n enableHiding: !child.props.disableHiding,\n // filtering\n enableColumnFilter: !child.props.disableFiltering,\n filterFn:\n options.enableColumnFiltering && !child.props.disableFiltering ? ('tacoFilter' as any) : undefined,\n // sizing\n enableResizing: !child.props.disableResizing,\n minSize: child.props.minWidth ?? MIN_COLUMN_SIZE,\n size: child.props.defaultWidth,\n // sorting\n enableSorting: !child.props.disableSorting,\n sortingFn: getSortingFn<TType>(child.props.dataType, child.props.sortFn),\n sortDescFirst: false,\n });\n }\n });\n\n if (options.enableRowExpansion && options.expandedRowRenderer) {\n columns.unshift(columnHelper.display(createRowExpansionColumn(options.expandedRowRenderer, texts)));\n internalFrozenColumnCount++;\n }\n\n if (options.enableRowSelection) {\n columns.unshift(\n columnHelper.display(\n createRowSelectionColumn(\n options.enableMultipleRowSelection,\n lastSelectedRowIndex,\n options.onRowDrag,\n tableRef,\n texts\n )\n )\n );\n internalFrozenColumnCount++;\n }\n\n if (options.onRowDrag) {\n columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag, texts)));\n internalFrozenColumnCount++;\n }\n\n if (options.actionsForRow?.length) {\n columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow, options.actionsForRowLength, texts)));\n }\n\n return { columns, internalFrozenColumnCount, defaultColumnSizing, defaultColumnVisibility, defaultSorting, footers };\n }, [children]);\n}\n\nfunction getSortingFn<TType>(dataType?: ColumnDataType, customFn?: SortFn<TType>): SortingFnOption<TType> {\n if (customFn) {\n return (rowA, rowB, columnId) => customFn(rowA.original, rowB.original, columnId);\n }\n\n if (dataType && dataType !== 'boolean') {\n return dataType;\n }\n\n return 'auto';\n}\n"],"names":["useColumnDefinitions","children","options","tableRef","texts","useLocalization","lastSelectedRowIndex","React","useRef","columnHelper","createColumnHelper","useMemo","internalFrozenColumnCount","columns","defaultColumnSizing","defaultColumnVisibility","defaultSorting","footers","Children","toArray","filter","child","forEach","isValidElement","defaultWidth","props","accessor","defaultHidden","enableColumnHiding","sort","undefined","push","id","desc","footer","accessorKey","cell","value","getValue","renderer","row","original","className","header","meta","align","control","dataType","disableReordering","menu","tooltip","enableHiding","disableHiding","enableColumnFilter","disableFiltering","filterFn","enableColumnFiltering","enableResizing","disableResizing","minSize","minWidth","MIN_COLUMN_SIZE","size","enableSorting","disableSorting","sortingFn","getSortingFn","sortFn","sortDescFirst","enableRowExpansion","expandedRowRenderer","unshift","display","createRowExpansionColumn","enableRowSelection","createRowSelectionColumn","enableMultipleRowSelection","onRowDrag","createRowDraggableColumn","actionsForRow","length","createRowActionsColumn","actionsForRowLength","customFn","rowA","rowB","columnId"],"mappings":";;;;;SA4DgBA,oBAAoB,CAChCC,QAAwB,EACxBC,OAA2C,EAC3CC,QAAyC;EAEzC,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,oBAAoB,GAAGC,cAAK,CAACC,MAAM,EAAU;EACnD,MAAMC,YAAY,GAAGC,kBAAkB,EAAS;EAEhD,OAAOH,cAAK,CAACI,OAAO,CAAC;;IACjB,IAAIC,yBAAyB,GAAG,CAAC;;IAEjC,MAAMC,OAAO,GAAU,EAAE;IACzB,MAAMC,mBAAmB,GAAsB,EAAE;IACjD,MAAMC,uBAAuB,GAAoB,EAAE;IACnD,MAAMC,cAAc,GAAiB,EAAE;IACvC,MAAMC,OAAO,GAA+C,EAAE;IAE7DV,cAAK,CAACW,QAAQ,CAACC,OAAO,CAAClB,QAAQ,CAAoD,CAC/EmB,MAAM,CAAEC,KAAU,IAAK,CAAC,CAACA,KAAK,CAAC,CAC/BC,OAAO,CAACD,KAAK;MACV,kBAAId,cAAK,CAACgB,cAAc,CAACF,KAAK,CAAC,EAAE;QAAA;QAC7B,MAAMG,YAAY,GAAGH,KAAK,CAACI,KAAK,CAACD,YAAY,KAAK,MAAM,GAAG,KAAK,GAAGH,KAAK,CAACI,KAAK,CAACD,YAAY;QAE3F,IAAIA,YAAY,EAAE;UACdV,mBAAmB,CAACO,KAAK,CAACI,KAAK,CAACC,QAAQ,CAAC,GAAGF,YAAmB;;QAGnE,IAAIH,KAAK,CAACI,KAAK,CAACE,aAAa,IAAIzB,OAAO,CAAC0B,kBAAkB,EAAE;UACzDb,uBAAuB,CAACM,KAAK,CAACI,KAAK,CAACC,QAAQ,CAAC,GAAG,KAAK;;QAGzD,IAAIL,KAAK,CAACI,KAAK,CAACI,IAAI,KAAKC,SAAS,EAAE;UAChCd,cAAc,CAACe,IAAI,CAAC;YAChBC,EAAE,EAAEX,KAAK,CAACI,KAAK,CAACC,QAAQ;YACxBO,IAAI,EAAEZ,KAAK,CAACI,KAAK,CAACI,IAAI,KAAK;WAC9B,CAAC;;QAGN,IAAIR,KAAK,CAACI,KAAK,CAACS,MAAM,EAAE;UACpBjB,OAAO,CAACI,KAAK,CAACI,KAAK,CAACC,QAAQ,CAAC,GAAGL,KAAK,CAACI,KAAK,CAACS,MAAM;;QAGtDrB,OAAO,CAACkB,IAAI,CAAC;UACTI,WAAW,EAAEd,KAAK,CAACI,KAAK,CAACC,QAAQ;UACjCM,EAAE,EAAEX,KAAK,CAACI,KAAK,CAACC,QAAQ;UACxBU,IAAI,EAAEX,KAAK;;YACP,IAAIY,KAAK,GAAGZ,KAAK,CAACa,QAAQ,EAAE;YAE5B,IAAI,OAAOjB,KAAK,CAACI,KAAK,CAACc,QAAQ,KAAK,UAAU,EAAE;cAC5CF,KAAK,GAAGhB,KAAK,CAACI,KAAK,CAACc,QAAQ,CAACF,KAAK,EAAEZ,KAAK,CAACe,GAAG,CAACC,QAAQ,CAAC;;YAG3D,IAAI,OAAOJ,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;cACxD,oBAAO9B;gBAAMmC,SAAS,EAAC;iBAAYL,KAAK,CAAQ;;YAGpD,iBAAOA,KAAK,2CAAI,IAAI;WACvB;UACDM,MAAM,EAAEtB,KAAK,CAACI,KAAK,CAACkB,MAAM;UAC1BC,IAAI,EAAE;YACFC,KAAK,EAAExB,KAAK,CAACI,KAAK,CAACoB,KAAK;YACxBH,SAAS,EAAErB,KAAK,CAACI,KAAK,CAACiB,SAAS;YAChCI,OAAO,EAAEzB,KAAK,CAACI,KAAK,CAACqB,OAAO;YAC5BC,QAAQ,EAAE1B,KAAK,CAACI,KAAK,CAACsB,QAAQ;YAC9BvB,YAAY;YACZwB,iBAAiB,EAAE3B,KAAK,CAACI,KAAK,CAACuB,iBAAiB;YAChDC,IAAI,EAAE5B,KAAK,CAACI,KAAK,CAACwB,IAAI;YACtBC,OAAO,EAAE7B,KAAK,CAACI,KAAK,CAACyB;WACxB;UACDC,YAAY,EAAE,CAAC9B,KAAK,CAACI,KAAK,CAAC2B,aAAa;;UAExCC,kBAAkB,EAAE,CAAChC,KAAK,CAACI,KAAK,CAAC6B,gBAAgB;UACjDC,QAAQ,EACJrD,OAAO,CAACsD,qBAAqB,IAAI,CAACnC,KAAK,CAACI,KAAK,CAAC6B,gBAAgB,GAAI,YAAoB,GAAGxB,SAAS;;UAEtG2B,cAAc,EAAE,CAACpC,KAAK,CAACI,KAAK,CAACiC,eAAe;UAC5CC,OAAO,2BAAEtC,KAAK,CAACI,KAAK,CAACmC,QAAQ,yEAAIC,eAAe;UAChDC,IAAI,EAAEzC,KAAK,CAACI,KAAK,CAACD,YAAY;;UAE9BuC,aAAa,EAAE,CAAC1C,KAAK,CAACI,KAAK,CAACuC,cAAc;UAC1CC,SAAS,EAAEC,YAAY,CAAQ7C,KAAK,CAACI,KAAK,CAACsB,QAAQ,EAAE1B,KAAK,CAACI,KAAK,CAAC0C,MAAM,CAAC;UACxEC,aAAa,EAAE;SAClB,CAAC;;KAET,CAAC;IAEN,IAAIlE,OAAO,CAACmE,kBAAkB,IAAInE,OAAO,CAACoE,mBAAmB,EAAE;MAC3DzD,OAAO,CAAC0D,OAAO,CAAC9D,YAAY,CAAC+D,OAAO,CAACC,wBAAwB,CAACvE,OAAO,CAACoE,mBAAmB,EAAElE,KAAK,CAAC,CAAC,CAAC;MACnGQ,yBAAyB,EAAE;;IAG/B,IAAIV,OAAO,CAACwE,kBAAkB,EAAE;MAC5B7D,OAAO,CAAC0D,OAAO,CACX9D,YAAY,CAAC+D,OAAO,CAChBG,wBAAwB,CACpBzE,OAAO,CAAC0E,0BAA0B,EAClCtE,oBAAoB,EACpBJ,OAAO,CAAC2E,SAAS,EACjB1E,QAAQ,EACRC,KAAK,CACR,CACJ,CACJ;MACDQ,yBAAyB,EAAE;;IAG/B,IAAIV,OAAO,CAAC2E,SAAS,EAAE;MACnBhE,OAAO,CAAC0D,OAAO,CAAC9D,YAAY,CAAC+D,OAAO,CAACM,wBAAwB,CAAC5E,OAAO,CAAC2E,SAAS,EAAEzE,KAAK,CAAC,CAAC,CAAC;MACzFQ,yBAAyB,EAAE;;IAG/B,6BAAIV,OAAO,CAAC6E,aAAa,kDAArB,sBAAuBC,MAAM,EAAE;MAC/BnE,OAAO,CAACkB,IAAI,CAACtB,YAAY,CAAC+D,OAAO,CAACS,sBAAsB,CAAC/E,OAAO,CAAC6E,aAAa,EAAE7E,OAAO,CAACgF,mBAAmB,EAAE9E,KAAK,CAAC,CAAC,CAAC;;IAGzH,OAAO;MAAES,OAAO;MAAED,yBAAyB;MAAEE,mBAAmB;MAAEC,uBAAuB;MAAEC,cAAc;MAAEC;KAAS;GACvH,EAAE,CAAChB,QAAQ,CAAC,CAAC;AAClB;AAEA,SAASiE,YAAY,CAAQnB,QAAyB,EAAEoC,QAAwB;EAC5E,IAAIA,QAAQ,EAAE;IACV,OAAO,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAKH,QAAQ,CAACC,IAAI,CAAC3C,QAAQ,EAAE4C,IAAI,CAAC5C,QAAQ,EAAE6C,QAAQ,CAAC;;EAGrF,IAAIvC,QAAQ,IAAIA,QAAQ,KAAK,SAAS,EAAE;IACpC,OAAOA,QAAQ;;EAGnB,OAAO,MAAM;AACjB;;;;"}
@@ -11,10 +11,11 @@ import { useSettingsStateListener } from './listeners/useSettingsStateListener.j
11
11
  import { useActiveRow } from './useActiveRow.js';
12
12
  import { useActiveRowStateListener } from './listeners/useActiveRowStateListener.js';
13
13
  import { useFilterStateListener } from './listeners/useFilterStateListener.js';
14
+ import { useTableShortcuts } from './useTableShortcuts.js';
14
15
 
15
16
  const ACTIONS_ON_ROW_LENGTH = 4;
16
17
  function useTable(children, props, ref) {
17
- var _settings$frozenColum, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity;
18
+ var _settings$frozenColum, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity, _tableRows$activeRow$;
18
19
  const {
19
20
  actionsForRow = [],
20
21
  actionsForRowLength = ACTIONS_ON_ROW_LENGTH,
@@ -41,6 +42,7 @@ function useTable(children, props, ref) {
41
42
  onRowSelect,
42
43
  onSave,
43
44
  settings = {},
45
+ shortcuts,
44
46
  // experimental
45
47
  _experimentalActionsForTable
46
48
  } = props;
@@ -208,6 +210,7 @@ function useTable(children, props, ref) {
208
210
  useFilterStateListener(table, onRowSelect);
209
211
  useRowSelectionListener(table, onRowSelect);
210
212
  useSettingsStateListener(table, onChangeSettings);
213
+ useTableShortcuts(shortcuts, (_tableRows$activeRow$ = tableRows[activeRow.activeRowIndex]) === null || _tableRows$activeRow$ === void 0 ? void 0 : _tableRows$activeRow$.original);
211
214
  return {
212
215
  rows,
213
216
  table,
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2Children, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\nimport { useIsHoverStatePaused } from '../../../hooks/useIsHoverStatePaused';\nimport { useFilterStateListener } from './listeners/useFilterStateListener';\nimport { ensureOrdering } from '../utilities/columns';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n enableRowDragging: boolean;\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnFreezing: boolean;\n enableColumnReordering: boolean;\n enableColumnHiding: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\n frozenColumnsCount: number;\n setFrozenColumnsCount: OnChangeFn<number>;\n // other\n onRowClick?: RowClickHandler<TData>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n // last sorted or filtered rows\n lastSortedOrFilteredRows: React.MutableRefObject<Array<any>>;\n }\n}\n\nconst ACTIONS_ON_ROW_LENGTH = 4;\n\nexport function useTable<TType = any>(children: Table2Children, props: Table2Props<TType>, ref: React.RefObject<HTMLDivElement>) {\n const {\n actionsForRow = [],\n actionsForRowLength = ACTIONS_ON_ROW_LENGTH,\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnFreezing = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n // experimental\n _experimentalActionsForTable,\n } = props;\n\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, internalFrozenColumnCount, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n actionsForRowLength,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnFreezing: !disableColumnFreezing,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n expandedRowRenderer,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n const totalFrozenColumns = internalFrozenColumnCount + (settings?.frozenColumnCount ?? 0);\n const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: ensureOrdering<TType>(columns, settings?.columnOrder),\n columnPinning: {\n left: frozenColumns,\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState({});\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // Frozen column count is the count of external columns that are frozen\n const [frozenColumnsCount, setFrozenColumnsCount] = React.useState(totalFrozenColumns - internalFrozenColumnCount);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnFreezing,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n enableRowDragging: !!onRowDrag,\n dragging,\n setDragging,\n // computed\n enableColumnFreezing: !disableColumnFreezing,\n enableColumnReordering: !disableColumnReordering,\n enableColumnHiding: !disableColumnHiding,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n frozenColumnsCount,\n setFrozenColumnsCount,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n // last sorted or filtered rows\n lastSortedOrFilteredRows,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useFilterStateListener<TType>(table, onRowSelect);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers };\n}\n"],"names":["ACTIONS_ON_ROW_LENGTH","useTable","children","props","ref","actionsForRow","actionsForRowLength","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnFreezing","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","internalFrozenColumnCount","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnFreezing","lastSortedOrFilteredRows","React","useRef","totalFrozenColumns","frozenColumnCount","frozenColumns","slice","map","column","id","initialState","columnOrder","ensureOrdering","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","frozenColumnsCount","setFrozenColumnsCount","focussableColumnIndexes","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableRowDragging","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","useActiveRowStateListener","useColumnOffsetStateListener","useFilterStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":"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"}
1
+ {"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2Children, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\nimport { useIsHoverStatePaused } from '../../../hooks/useIsHoverStatePaused';\nimport { useFilterStateListener } from './listeners/useFilterStateListener';\nimport { ensureOrdering } from '../utilities/columns';\nimport { useTableShortcuts } from './useTableShortcuts';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n enableRowDragging: boolean;\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnFreezing: boolean;\n enableColumnReordering: boolean;\n enableColumnHiding: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\n frozenColumnsCount: number;\n setFrozenColumnsCount: OnChangeFn<number>;\n // other\n onRowClick?: RowClickHandler<TData>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n // last sorted or filtered rows\n lastSortedOrFilteredRows: React.MutableRefObject<Array<any>>;\n }\n}\n\nconst ACTIONS_ON_ROW_LENGTH = 4;\n\nexport function useTable<TType = any>(children: Table2Children, props: Table2Props<TType>, ref: React.RefObject<HTMLDivElement>) {\n const {\n actionsForRow = [],\n actionsForRowLength = ACTIONS_ON_ROW_LENGTH,\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnFreezing = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n shortcuts,\n // experimental\n _experimentalActionsForTable,\n } = props;\n\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, internalFrozenColumnCount, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n actionsForRowLength,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnFreezing: !disableColumnFreezing,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n expandedRowRenderer,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n const totalFrozenColumns = internalFrozenColumnCount + (settings?.frozenColumnCount ?? 0);\n const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: ensureOrdering<TType>(columns, settings?.columnOrder),\n columnPinning: {\n left: frozenColumns,\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState({});\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // Frozen column count is the count of external columns that are frozen\n const [frozenColumnsCount, setFrozenColumnsCount] = React.useState(totalFrozenColumns - internalFrozenColumnCount);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnFreezing,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n enableRowDragging: !!onRowDrag,\n dragging,\n setDragging,\n // computed\n enableColumnFreezing: !disableColumnFreezing,\n enableColumnReordering: !disableColumnReordering,\n enableColumnHiding: !disableColumnHiding,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n frozenColumnsCount,\n setFrozenColumnsCount,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n // last sorted or filtered rows\n lastSortedOrFilteredRows,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useFilterStateListener<TType>(table, onRowSelect);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n useTableShortcuts(shortcuts, tableRows[activeRow.activeRowIndex]?.original);\n\n return { rows, table, footers };\n}\n"],"names":["ACTIONS_ON_ROW_LENGTH","useTable","children","props","ref","actionsForRow","actionsForRowLength","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnFreezing","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","shortcuts","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","internalFrozenColumnCount","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnFreezing","lastSortedOrFilteredRows","React","useRef","totalFrozenColumns","frozenColumnCount","frozenColumns","slice","map","column","id","initialState","columnOrder","ensureOrdering","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","frozenColumnsCount","setFrozenColumnsCount","focussableColumnIndexes","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableRowDragging","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","useActiveRowStateListener","useColumnOffsetStateListener","useFilterStateListener","useRowSelectionListener","useSettingsStateListener","useTableShortcuts","activeRowIndex","original"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import React__default from 'react';
2
+ import { createShortcutKeyDownHandler } from '../../../utils/keyboard.js';
3
+
4
+ function useTableShortcuts(shortcuts, activeRow) {
5
+ React__default.useEffect(() => {
6
+ const shortcutKeys = Object.keys(shortcuts !== null && shortcuts !== void 0 ? shortcuts : {});
7
+ const globalHandlers = [];
8
+ // convert the shortcut into the correct format to register it
9
+ if (shortcuts && shortcutKeys.length) {
10
+ shortcutKeys.forEach(key => {
11
+ const handler = shortcuts[key];
12
+ let keyDownHandler;
13
+ let keyDownHandlerOptions;
14
+ if (typeof handler === 'function') {
15
+ keyDownHandler = handler;
16
+ keyDownHandlerOptions = {
17
+ key
18
+ };
19
+ } else {
20
+ const handlerObject = handler;
21
+ keyDownHandler = handlerObject.handler;
22
+ keyDownHandlerOptions = {
23
+ key,
24
+ meta: handlerObject.meta,
25
+ shift: handlerObject.shift
26
+ };
27
+ }
28
+ globalHandlers.push(createShortcutKeyDownHandler(keyDownHandlerOptions, event => {
29
+ event.preventDefault();
30
+ keyDownHandler(activeRow);
31
+ }));
32
+ });
33
+ }
34
+ globalHandlers.forEach(handler => {
35
+ document.addEventListener('keydown', handler);
36
+ });
37
+ return () => {
38
+ globalHandlers.forEach(handler => {
39
+ document.removeEventListener('keydown', handler);
40
+ });
41
+ };
42
+ }, [shortcuts, activeRow]);
43
+ }
44
+
45
+ export { useTableShortcuts };
46
+ //# sourceMappingURL=useTableShortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableShortcuts.js","sources":["../../../../../../../../src/components/Table2/hooks/useTableShortcuts.ts"],"sourcesContent":["import React from 'react';\nimport { Table2ShortcutHandlerObject, Table2Shortcuts } from '../types';\nimport { KeyDownHandlerOptions, createShortcutKeyDownHandler } from '../../../utils/keyboard';\n\nexport function useTableShortcuts<TType = any>(shortcuts: Table2Shortcuts<TType> | undefined, activeRow: TType) {\n React.useEffect(() => {\n const shortcutKeys = Object.keys(shortcuts ?? {});\n\n const globalHandlers: Array<(event: KeyboardEvent) => void> = [];\n\n // convert the shortcut into the correct format to register it\n if (shortcuts && shortcutKeys.length) {\n shortcutKeys.forEach(key => {\n const handler = shortcuts[key];\n\n let keyDownHandler;\n let keyDownHandlerOptions: KeyDownHandlerOptions;\n\n if (typeof handler === 'function') {\n keyDownHandler = handler;\n keyDownHandlerOptions = {\n key,\n };\n } else {\n const handlerObject = handler as Table2ShortcutHandlerObject<TType>;\n keyDownHandler = handlerObject.handler;\n keyDownHandlerOptions = {\n key,\n meta: handlerObject.meta,\n shift: handlerObject.shift,\n };\n }\n\n globalHandlers.push(\n createShortcutKeyDownHandler(keyDownHandlerOptions, event => {\n event.preventDefault();\n keyDownHandler(activeRow);\n })\n );\n });\n }\n\n globalHandlers.forEach(handler => {\n document.addEventListener('keydown', handler);\n });\n\n return () => {\n globalHandlers.forEach(handler => {\n document.removeEventListener('keydown', handler);\n });\n };\n }, [shortcuts, activeRow]);\n}\n"],"names":["useTableShortcuts","shortcuts","activeRow","React","useEffect","shortcutKeys","Object","keys","globalHandlers","length","forEach","key","handler","keyDownHandler","keyDownHandlerOptions","handlerObject","meta","shift","push","createShortcutKeyDownHandler","event","preventDefault","document","addEventListener","removeEventListener"],"mappings":";;;SAIgBA,iBAAiB,CAAcC,SAA6C,EAAEC,SAAgB;EAC1GC,cAAK,CAACC,SAAS,CAAC;IACZ,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACN,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,EAAE,CAAC;IAEjD,MAAMO,cAAc,GAA0C,EAAE;;IAGhE,IAAIP,SAAS,IAAII,YAAY,CAACI,MAAM,EAAE;MAClCJ,YAAY,CAACK,OAAO,CAACC,GAAG;QACpB,MAAMC,OAAO,GAAGX,SAAS,CAACU,GAAG,CAAC;QAE9B,IAAIE,cAAc;QAClB,IAAIC,qBAA4C;QAEhD,IAAI,OAAOF,OAAO,KAAK,UAAU,EAAE;UAC/BC,cAAc,GAAGD,OAAO;UACxBE,qBAAqB,GAAG;YACpBH;WACH;SACJ,MAAM;UACH,MAAMI,aAAa,GAAGH,OAA6C;UACnEC,cAAc,GAAGE,aAAa,CAACH,OAAO;UACtCE,qBAAqB,GAAG;YACpBH,GAAG;YACHK,IAAI,EAAED,aAAa,CAACC,IAAI;YACxBC,KAAK,EAAEF,aAAa,CAACE;WACxB;;QAGLT,cAAc,CAACU,IAAI,CACfC,4BAA4B,CAACL,qBAAqB,EAAEM,KAAK;UACrDA,KAAK,CAACC,cAAc,EAAE;UACtBR,cAAc,CAACX,SAAS,CAAC;SAC5B,CAAC,CACL;OACJ,CAAC;;IAGNM,cAAc,CAACE,OAAO,CAACE,OAAO;MAC1BU,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEX,OAAO,CAAC;KAChD,CAAC;IAEF,OAAO;MACHJ,cAAc,CAACE,OAAO,CAACE,OAAO;QAC1BU,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEZ,OAAO,CAAC;OACnD,CAAC;KACL;GACJ,EAAE,CAACX,SAAS,EAAEC,SAAS,CAAC,CAAC;AAC9B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n IsEmpty,\n IsNotEmpty,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type SortFn<TType = unknown> = (rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1;\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n defaultWidth?: number | 'grow';\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n sortFn?: SortFn<TType>;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionRenderer<TType = unknown> = (row: TType) => JSX.Element | null;\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n frozenColumnCount?: number;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowDropHandler<TType = any> = (event: React.DragEvent, row: TType) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type RowExpansionRenderer<TType = any> = (row: TType) => (() => JSX.Element) | null;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Children<TType = any> = (React.ReactElement<Table2ColumnProps<TType>> | boolean | null | undefined)[];\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionRenderer<TType>[];\n actionsForRowLength?: number;\n children: Table2Children;\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnFreezing?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowDrop?: RowDropHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAcYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;EACPA,0EAAO;EACPA,gFAAU;AACd,CAAC,EAbWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n IsEmpty,\n IsNotEmpty,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type SortFn<TType = unknown> = (rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1;\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n defaultWidth?: number | 'grow';\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n sortFn?: SortFn<TType>;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionRenderer<TType = unknown> = (row: TType) => JSX.Element | null;\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n frozenColumnCount?: number;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowDropHandler<TType = any> = (event: React.DragEvent, row: TType) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type RowExpansionRenderer<TType = any> = (row: TType) => (() => JSX.Element) | null;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Children<TType = any> = (React.ReactElement<Table2ColumnProps<TType>> | boolean | null | undefined)[];\n\nexport type Table2ShortcutHandlerFn<TType = any> = (row: TType) => void;\nexport type Table2ShortcutHandlerObject<TType = any> = {\n handler: Table2ShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\nexport type Table2Shortcuts<TType = any> = Record<string, Table2ShortcutHandlerFn<TType> | Table2ShortcutHandlerObject<TType>>;\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionRenderer<TType>[];\n actionsForRowLength?: number;\n children: Table2Children;\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnFreezing?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowDrop?: RowDropHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n shortcuts?: Table2Shortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAcYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;EACPA,0EAAO;EACPA,gFAAU;AACd,CAAC,EAbWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
@@ -8,7 +8,7 @@ function createShortcutKeyDownHandler(key, handler) {
8
8
  if (typeof key === 'string') {
9
9
  condition = event.key.toLowerCase() === key.toLowerCase();
10
10
  } else {
11
- if (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey) || key.meta === false && key.meta && (isMacOs() ? event.metaKey : event.ctrlKey)) {
11
+ if (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey) || !key.meta && (isMacOs() ? event.metaKey : event.ctrlKey)) {
12
12
  return;
13
13
  }
14
14
  if (key.shift && !event.shiftKey || key.shift === false && event.shiftKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sources":["../../../../../../src/utils/keyboard.ts"],"sourcesContent":["import React from 'react';\n\nexport type KeyDownHandlerOptions = { key: string; meta?: boolean; shift?: boolean };\n\nconst WHITELISTED_ELEMENTS = ['INPUT', 'TEXTAREA', 'SELECT'];\n\nexport function createShortcutKeyDownHandler<T = Element>(\n key: string | KeyDownHandlerOptions,\n handler: (event: KeyboardEvent | React.KeyboardEvent<T>) => void\n) {\n return function (event: KeyboardEvent | React.KeyboardEvent<T>) {\n let condition = false;\n\n if (event.target !== event.currentTarget && WHITELISTED_ELEMENTS.includes((event.target as HTMLElement).tagName)) {\n return;\n }\n\n if (typeof key === 'string') {\n condition = event.key.toLowerCase() === key.toLowerCase();\n } else {\n if (\n (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey)) ||\n (key.meta === false && key.meta && (isMacOs() ? event.metaKey : event.ctrlKey))\n ) {\n return;\n }\n\n if ((key.shift && !event.shiftKey) || (key.shift === false && event.shiftKey)) {\n return;\n }\n\n condition = event.key.toLowerCase() === key.key.toLowerCase();\n }\n\n if (condition) {\n // stops react handlers bubbling up to global\n event.stopPropagation();\n // stops global handlers bubbling up to other global\n (event as KeyboardEvent).stopImmediatePropagation?.();\n handler(event);\n }\n };\n}\n\nexport const isMacOs = () => window?.navigator.userAgent.includes('Mac');\n"],"names":["WHITELISTED_ELEMENTS","createShortcutKeyDownHandler","key","handler","event","condition","target","currentTarget","includes","tagName","toLowerCase","meta","isMacOs","metaKey","ctrlKey","shift","shiftKey","stopPropagation","stopImmediatePropagation","window","navigator","userAgent"],"mappings":"AAIA,MAAMA,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;SAE5CC,4BAA4B,CACxCC,GAAmC,EACnCC,OAAgE;EAEhE,OAAO,UAAUC,KAA6C;IAC1D,IAAIC,SAAS,GAAG,KAAK;IAErB,IAAID,KAAK,CAACE,MAAM,KAAKF,KAAK,CAACG,aAAa,IAAIP,oBAAoB,CAACQ,QAAQ,CAAEJ,KAAK,CAACE,MAAsB,CAACG,OAAO,CAAC,EAAE;MAC9G;;IAGJ,IAAI,OAAOP,GAAG,KAAK,QAAQ,EAAE;MACzBG,SAAS,GAAGD,KAAK,CAACF,GAAG,CAACQ,WAAW,EAAE,KAAKR,GAAG,CAACQ,WAAW,EAAE;KAC5D,MAAM;MACH,IACKR,GAAG,CAACS,IAAI,KAAKC,OAAO,EAAE,GAAG,CAACR,KAAK,CAACS,OAAO,GAAG,CAACT,KAAK,CAACU,OAAO,CAAC,IACzDZ,GAAG,CAACS,IAAI,KAAK,KAAK,IAAIT,GAAG,CAACS,IAAI,KAAKC,OAAO,EAAE,GAAGR,KAAK,CAACS,OAAO,GAAGT,KAAK,CAACU,OAAO,CAAE,EACjF;QACE;;MAGJ,IAAKZ,GAAG,CAACa,KAAK,IAAI,CAACX,KAAK,CAACY,QAAQ,IAAMd,GAAG,CAACa,KAAK,KAAK,KAAK,IAAIX,KAAK,CAACY,QAAS,EAAE;QAC3E;;MAGJX,SAAS,GAAGD,KAAK,CAACF,GAAG,CAACQ,WAAW,EAAE,KAAKR,GAAG,CAACA,GAAG,CAACQ,WAAW,EAAE;;IAGjE,IAAIL,SAAS,EAAE;MAAA;;MAEXD,KAAK,CAACa,eAAe,EAAE;;MAEtB,yBAAAb,KAAuB,CAACc,wBAAwB,0DAAhD,2BAAAd,KAAuB,CAA6B;MACrDD,OAAO,CAACC,KAAK,CAAC;;GAErB;AACL;MAEaQ,OAAO,GAAG;EAAA;EAAA,kBAAMO,MAAM,4CAAN,QAAQC,SAAS,CAACC,SAAS,CAACb,QAAQ,CAAC,KAAK,CAAC;AAAA;;;;"}
1
+ {"version":3,"file":"keyboard.js","sources":["../../../../../../src/utils/keyboard.ts"],"sourcesContent":["import React from 'react';\n\nexport type KeyDownHandlerOptions = { key: string; meta?: boolean; shift?: boolean };\n\nconst WHITELISTED_ELEMENTS = ['INPUT', 'TEXTAREA', 'SELECT'];\n\nexport function createShortcutKeyDownHandler<T = Element>(\n key: string | KeyDownHandlerOptions,\n handler: (event: KeyboardEvent | React.KeyboardEvent<T>) => void\n) {\n return function (event: KeyboardEvent | React.KeyboardEvent<T>) {\n let condition = false;\n\n if (event.target !== event.currentTarget && WHITELISTED_ELEMENTS.includes((event.target as HTMLElement).tagName)) {\n return;\n }\n\n if (typeof key === 'string') {\n condition = event.key.toLowerCase() === key.toLowerCase();\n } else {\n if (\n (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey)) ||\n (!key.meta && (isMacOs() ? event.metaKey : event.ctrlKey))\n ) {\n return;\n }\n\n if ((key.shift && !event.shiftKey) || (key.shift === false && event.shiftKey)) {\n return;\n }\n\n condition = event.key.toLowerCase() === key.key.toLowerCase();\n }\n\n if (condition) {\n // stops react handlers bubbling up to global\n event.stopPropagation();\n // stops global handlers bubbling up to other global\n (event as KeyboardEvent).stopImmediatePropagation?.();\n handler(event);\n }\n };\n}\n\nexport const isMacOs = () => window?.navigator.userAgent.includes('Mac');\n"],"names":["WHITELISTED_ELEMENTS","createShortcutKeyDownHandler","key","handler","event","condition","target","currentTarget","includes","tagName","toLowerCase","meta","isMacOs","metaKey","ctrlKey","shift","shiftKey","stopPropagation","stopImmediatePropagation","window","navigator","userAgent"],"mappings":"AAIA,MAAMA,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;SAE5CC,4BAA4B,CACxCC,GAAmC,EACnCC,OAAgE;EAEhE,OAAO,UAAUC,KAA6C;IAC1D,IAAIC,SAAS,GAAG,KAAK;IAErB,IAAID,KAAK,CAACE,MAAM,KAAKF,KAAK,CAACG,aAAa,IAAIP,oBAAoB,CAACQ,QAAQ,CAAEJ,KAAK,CAACE,MAAsB,CAACG,OAAO,CAAC,EAAE;MAC9G;;IAGJ,IAAI,OAAOP,GAAG,KAAK,QAAQ,EAAE;MACzBG,SAAS,GAAGD,KAAK,CAACF,GAAG,CAACQ,WAAW,EAAE,KAAKR,GAAG,CAACQ,WAAW,EAAE;KAC5D,MAAM;MACH,IACKR,GAAG,CAACS,IAAI,KAAKC,OAAO,EAAE,GAAG,CAACR,KAAK,CAACS,OAAO,GAAG,CAACT,KAAK,CAACU,OAAO,CAAC,IACzD,CAACZ,GAAG,CAACS,IAAI,KAAKC,OAAO,EAAE,GAAGR,KAAK,CAACS,OAAO,GAAGT,KAAK,CAACU,OAAO,CAAE,EAC5D;QACE;;MAGJ,IAAKZ,GAAG,CAACa,KAAK,IAAI,CAACX,KAAK,CAACY,QAAQ,IAAMd,GAAG,CAACa,KAAK,KAAK,KAAK,IAAIX,KAAK,CAACY,QAAS,EAAE;QAC3E;;MAGJX,SAAS,GAAGD,KAAK,CAACF,GAAG,CAACQ,WAAW,EAAE,KAAKR,GAAG,CAACA,GAAG,CAACQ,WAAW,EAAE;;IAGjE,IAAIL,SAAS,EAAE;MAAA;;MAEXD,KAAK,CAACa,eAAe,EAAE;;MAEtB,yBAAAb,KAAuB,CAACc,wBAAwB,0DAAhD,2BAAAd,KAAuB,CAA6B;MACrDD,OAAO,CAACC,KAAK,CAAC;;GAErB;AACL;MAEaQ,OAAO,GAAG;EAAA;EAAA,kBAAMO,MAAM,4CAAN,QAAQC,SAAS,CAACC,SAAS,CAACb,QAAQ,CAAC,KAAK,CAAC;AAAA;;;;"}