@economic/taco 1.38.2 → 1.40.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Provider/Localization.d.ts +15 -1
- package/dist/components/Table2/Table2.d.ts +16 -1
- package/dist/components/Table2/components/column/Base.d.ts +2 -0
- package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +1 -0
- package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
- package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
- package/dist/components/Table2/types.d.ts +11 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +15 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +33 -13
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +3 -3
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +4 -2
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +79 -24
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +14 -6
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +63 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +3 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +7 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +46 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +4 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
- package/dist/taco.cjs.development.js +259 -57
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -3
- package/types.json +189 -29
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.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 { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control;\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => column.setFilterValue(undefined);\n const comparators = guessComparatorsBasedOnControl(control, controlType);\n\n return (\n <div className=\"
|
1
|
+
{"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.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 { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\nimport { useLocalization } from '../../../../Provider/Localization';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n onRemove?: () => void;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table, onRemove } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const { texts } = useLocalization();\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control;\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => {\n column.setFilterValue(undefined);\n onRemove?.();\n };\n const comparators = guessComparatorsBasedOnControl(control, controlType);\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 {index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and}\n </div>\n <Column className=\"!w-32 flex-shrink-0\" allColumns={allColumns} column={column} index={index} table={table} />\n <Comparator className=\"!w-32 flex-shrink-0\" column={column} comparator={comparator} validComparators={comparators} />\n {comparator !== undefined ? (\n <div className=\"flex flex-grow items-center\">\n <InferredControl column={column} comparator={comparator} value={value} />\n </div>\n ) : null}\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n};\n\nconst guessComparatorsBasedOnControl = (instance: JSX.Element, control?: Table2ColumnControlRenderer) => {\n if (React.isValidElement(instance)) {\n const { props, type } = instance as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];\n }\n\n return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];\n }\n }\n\n switch (control) {\n case 'datepicker':\n return [\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n\n case 'switch':\n return [Table2FilterComparator.IsEqualTo];\n\n default:\n return [\n Table2FilterComparator.Contains,\n Table2FilterComparator.DoesNotContain,\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsEmpty,\n Table2FilterComparator.IsNotEmpty,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n }\n};\n"],"names":["ColumnFilter","props","allColumns","column","index","table","onRemove","comparator","value","getFilterValue","ariaLabel","String","columnDef","header","texts","useLocalization","ref","React","useRef","control","controlType","meta","onBlur","Promise","resolve","onFocus","setValue","setFilterValue","currentValue","disabled","readOnly","Input","onChange","event","target","Datepicker","detail","Switch","checked","Boolean","handleRemove","undefined","comparators","guessComparatorsBasedOnControl","className","table2","filters","conditions","where","and","Column","Comparator","validComparators","InferredControl","IconButton","appearance","icon","onClick","instance","isValidElement","type","displayName","multiple","Table2FilterComparator","IsOneOf","IsNoneOf","IsAllOf","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsBetween","Contains","DoesNotContain","IsEmpty","IsNotEmpty"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js
ADDED
@@ -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;;;;"}
|
package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js
CHANGED
@@ -4,10 +4,11 @@ const useRowSelectionListener = (table, onRowSelect) => {
|
|
4
4
|
React__default.useEffect(() => {
|
5
5
|
if (onRowSelect) {
|
6
6
|
if (table.options.enableMultiRowSelection) {
|
7
|
-
|
7
|
+
const rows = table.getSelectedRowModel().rows.map(row => row.original);
|
8
|
+
onRowSelect(rows, table.getIsAllRowsSelected());
|
8
9
|
} else {
|
9
10
|
var _table$getSelectedRow, _table$getSelectedRow2;
|
10
|
-
onRowSelect((_table$getSelectedRow = (_table$getSelectedRow2 = table.getSelectedRowModel().rows[0]) === null || _table$getSelectedRow2 === void 0 ? void 0 : _table$getSelectedRow2.original) !== null && _table$getSelectedRow !== void 0 ? _table$getSelectedRow : undefined);
|
11
|
+
onRowSelect((_table$getSelectedRow = (_table$getSelectedRow2 = table.getSelectedRowModel().rows[0]) === null || _table$getSelectedRow2 === void 0 ? void 0 : _table$getSelectedRow2.original) !== null && _table$getSelectedRow !== void 0 ? _table$getSelectedRow : undefined, false);
|
11
12
|
}
|
12
13
|
}
|
13
14
|
}, [table.getState().rowSelection]);
|
package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useRowSelectionListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useRowSelectionListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable } from '@tanstack/react-table';\nimport { RowSelectionHandler } from '../../types';\n\nexport const useRowSelectionListener = <TType = any>(table: RTTable<any>, onRowSelect: RowSelectionHandler | undefined) => {\n React.useEffect(() => {\n if (onRowSelect) {\n if (table.options.enableMultiRowSelection) {\n
|
1
|
+
{"version":3,"file":"useRowSelectionListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useRowSelectionListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable } from '@tanstack/react-table';\nimport { RowSelectionHandler } from '../../types';\n\nexport const useRowSelectionListener = <TType = any>(table: RTTable<any>, onRowSelect: RowSelectionHandler | undefined) => {\n React.useEffect(() => {\n if (onRowSelect) {\n if (table.options.enableMultiRowSelection) {\n const rows = table.getSelectedRowModel().rows.map(row => row.original) as TType[];\n\n onRowSelect(rows, table.getIsAllRowsSelected());\n } else {\n onRowSelect(table.getSelectedRowModel().rows[0]?.original ?? undefined, false);\n }\n }\n }, [table.getState().rowSelection]);\n};\n"],"names":["useRowSelectionListener","table","onRowSelect","React","useEffect","options","enableMultiRowSelection","rows","getSelectedRowModel","map","row","original","getIsAllRowsSelected","undefined","getState","rowSelection"],"mappings":";;MAIaA,uBAAuB,GAAG,CAAcC,KAAmB,EAAEC,WAA4C;EAClHC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIF,WAAW,EAAE;MACb,IAAID,KAAK,CAACI,OAAO,CAACC,uBAAuB,EAAE;QACvC,MAAMC,IAAI,GAAGN,KAAK,CAACO,mBAAmB,EAAE,CAACD,IAAI,CAACE,GAAG,CAACC,GAAG,IAAIA,GAAG,CAACC,QAAQ,CAAY;QAEjFT,WAAW,CAACK,IAAI,EAAEN,KAAK,CAACW,oBAAoB,EAAE,CAAC;OAClD,MAAM;QAAA;QACHV,WAAW,oDAACD,KAAK,CAACO,mBAAmB,EAAE,CAACD,IAAI,CAAC,CAAC,CAAC,2DAAnC,uBAAqCI,QAAQ,yEAAIE,SAAS,EAAE,KAAK,CAAC;;;GAGzF,EAAE,CAACZ,KAAK,CAACa,QAAQ,EAAE,CAACC,YAAY,CAAC,CAAC;AACvC;;;;"}
|
@@ -74,7 +74,9 @@ 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,
|
79
|
+
sortUndefined: 1
|
78
80
|
});
|
79
81
|
}
|
80
82
|
});
|
@@ -104,9 +106,12 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
104
106
|
}, [children]);
|
105
107
|
}
|
106
108
|
function getSortingFn(dataType, customFn) {
|
107
|
-
if (customFn) {
|
109
|
+
if (typeof customFn === 'function') {
|
108
110
|
return (rowA, rowB, columnId) => customFn(rowA.original, rowB.original, columnId);
|
109
111
|
}
|
112
|
+
if (customFn) {
|
113
|
+
return customFn;
|
114
|
+
}
|
110
115
|
if (dataType && dataType !== 'boolean') {
|
111
116
|
return dataType;
|
112
117
|
}
|
@@ -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 sortUndefined: 1,\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 (typeof customFn === 'function') {\n return (rowA, rowB, columnId) => customFn(rowA.original, rowB.original, columnId);\n }\n\n if (customFn) {\n return customFn;\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","sortUndefined","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,KAAK;UACpBC,aAAa,EAAE;SAClB,CAAC;;KAET,CAAC;IAEN,IAAInE,OAAO,CAACoE,kBAAkB,IAAIpE,OAAO,CAACqE,mBAAmB,EAAE;MAC3D1D,OAAO,CAAC2D,OAAO,CAAC/D,YAAY,CAACgE,OAAO,CAACC,wBAAwB,CAACxE,OAAO,CAACqE,mBAAmB,EAAEnE,KAAK,CAAC,CAAC,CAAC;MACnGQ,yBAAyB,EAAE;;IAG/B,IAAIV,OAAO,CAACyE,kBAAkB,EAAE;MAC5B9D,OAAO,CAAC2D,OAAO,CACX/D,YAAY,CAACgE,OAAO,CAChBG,wBAAwB,CACpB1E,OAAO,CAAC2E,0BAA0B,EAClCvE,oBAAoB,EACpBJ,OAAO,CAAC4E,SAAS,EACjB3E,QAAQ,EACRC,KAAK,CACR,CACJ,CACJ;MACDQ,yBAAyB,EAAE;;IAG/B,IAAIV,OAAO,CAAC4E,SAAS,EAAE;MACnBjE,OAAO,CAAC2D,OAAO,CAAC/D,YAAY,CAACgE,OAAO,CAACM,wBAAwB,CAAC7E,OAAO,CAAC4E,SAAS,EAAE1E,KAAK,CAAC,CAAC,CAAC;MACzFQ,yBAAyB,EAAE;;IAG/B,6BAAIV,OAAO,CAAC8E,aAAa,kDAArB,sBAAuBC,MAAM,EAAE;MAC/BpE,OAAO,CAACkB,IAAI,CAACtB,YAAY,CAACgE,OAAO,CAACS,sBAAsB,CAAChF,OAAO,CAAC8E,aAAa,EAAE9E,OAAO,CAACiF,mBAAmB,EAAE/E,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,EAAEqC,QAAwB;EAC5E,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;IAChC,OAAO,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,KAAKH,QAAQ,CAACC,IAAI,CAAC5C,QAAQ,EAAE6C,IAAI,CAAC7C,QAAQ,EAAE8C,QAAQ,CAAC;;EAGrF,IAAIH,QAAQ,EAAE;IACV,OAAOA,QAAQ;;EAGnB,IAAIrC,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":"
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n BuiltInSortingFn,\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) | BuiltInSortingFn | 'auto';\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[], allSelected: boolean) => 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":"IAeYA;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;;;;"}
|
@@ -64,6 +64,7 @@ function createRowDraggableColumn(onRowDrag, texts) {
|
|
64
64
|
className: "text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white"
|
65
65
|
}));
|
66
66
|
},
|
67
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
67
68
|
meta: {
|
68
69
|
align: 'center',
|
69
70
|
className: 'items-center !px-0',
|
@@ -180,6 +181,7 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
|
|
180
181
|
id: COLUMN_ID_FOR_SELECTION,
|
181
182
|
header,
|
182
183
|
cell,
|
184
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
183
185
|
meta: {
|
184
186
|
align: 'center',
|
185
187
|
className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',
|
@@ -249,6 +251,7 @@ function createRowExpansionColumn(expandedRowRenderer, texts) {
|
|
249
251
|
row: row,
|
250
252
|
texts: texts
|
251
253
|
}),
|
254
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
252
255
|
meta: {
|
253
256
|
align: 'center',
|
254
257
|
className: 'items-center !p-0',
|
@@ -327,6 +330,7 @@ function createRowActionsColumn(rowActions, rowActionsLength, texts) {
|
|
327
330
|
shouldPauseHoverState: !!((_table$options$meta2 = table.options.meta) !== null && _table$options$meta2 !== void 0 && _table$options$meta2.shouldPauseHoverState)
|
328
331
|
});
|
329
332
|
},
|
333
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
330
334
|
meta: {
|
331
335
|
align: 'right',
|
332
336
|
className: (row, table) => {
|