@economic/taco 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AlertDialog/components/Content.d.ts +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Calendar/Calendar.stories.d.ts +1 -1
- package/dist/components/Datepicker/Datepicker.d.ts +1 -1
- package/dist/components/Datepicker/Datepicker.stories.d.ts +1 -1
- package/dist/components/Dialog/components/Content.d.ts +1 -1
- package/dist/components/Dialog/components/Drawer.d.ts +1 -1
- package/dist/components/IconButton/IconButton.d.ts +2 -2
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Listbox/Listbox.d.ts +2 -2
- package/dist/components/Listbox/Listbox.stories.d.ts +1 -1
- package/dist/components/Listbox/ScrollableList.d.ts +1 -1
- package/dist/components/Menu/components/Checkbox.d.ts +1 -1
- package/dist/components/Menu/components/Content.d.ts +1 -1
- package/dist/components/Menu/components/Item.d.ts +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Menu/components/Trigger.d.ts +1 -1
- package/dist/components/Provider/Localization.d.ts +10 -0
- package/dist/components/SearchInput/SearchInput.d.ts +1 -1
- package/dist/components/SearchInput/SearchInput.stories.d.ts +1 -1
- package/dist/components/Select/Select.d.ts +1 -1
- package/dist/components/Select/Select.stories.d.ts +1 -1
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Select2/components/Trigger.d.ts +1 -1
- package/dist/components/Shortcut/Shortcut.d.ts +5 -0
- package/dist/components/Table2/Table2.d.ts +17 -0
- package/dist/components/Table2/Table2.stories.d.ts +50 -0
- package/dist/components/Table2/components/BatchActionsMenu.d.ts +10 -0
- package/dist/components/Table2/components/ColumnSettingsButton.d.ts +7 -0
- package/dist/components/Table2/components/EditModeButton.d.ts +7 -0
- package/dist/components/Table2/components/RowDensityButton.d.ts +7 -0
- package/dist/components/Table2/components/Search.d.ts +3 -0
- package/dist/components/Table2/components/ShortcutsGuideButton.d.ts +7 -0
- package/dist/components/Table2/components/column/Base.d.ts +12 -0
- package/dist/components/Table2/components/column/Cell.d.ts +15 -0
- package/dist/components/Table2/components/column/Footer.d.ts +9 -0
- package/dist/components/Table2/components/column/Header.d.ts +11 -0
- package/dist/components/Table2/components/column/Indicator.d.ts +16 -0
- package/dist/components/Table2/components/column/ValidationError.d.ts +5 -0
- package/dist/components/Table2/components/column/utils.d.ts +2 -0
- package/dist/components/Table2/components/filters/FiltersButton.d.ts +7 -0
- package/dist/components/Table2/components/filters/components/Column.d.ts +11 -0
- package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +9 -0
- package/dist/components/Table2/components/filters/components/Comparator.d.ts +11 -0
- package/dist/components/Table2/components/filters/components/InferredControl.d.ts +10 -0
- package/dist/components/Table2/components/row/Context.d.ts +15 -0
- package/dist/components/Table2/components/row/ExpandedRow.d.ts +6 -0
- package/dist/components/Table2/components/row/Row.d.ts +7 -0
- package/dist/components/Table2/hooks/listeners/useActiveCellStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useActiveRowStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useColumnOffsetStateListener.d.ts +4 -0
- package/dist/components/Table2/hooks/listeners/useRowSelectionListener.d.ts +3 -0
- package/dist/components/Table2/hooks/listeners/useSettingsStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/useActiveCell.d.ts +26 -0
- package/dist/components/Table2/hooks/useActiveRow.d.ts +10 -0
- package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +36 -0
- package/dist/components/Table2/hooks/useEditMode.d.ts +28 -0
- package/dist/components/Table2/hooks/useGridTemplate.d.ts +2 -0
- package/dist/components/Table2/hooks/useSeparatedChildren.d.ts +1 -0
- package/dist/components/Table2/hooks/useTable.d.ts +40 -0
- package/dist/components/Table2/hooks/useVirtualiser.d.ts +23 -0
- package/dist/components/Table2/types.d.ts +138 -0
- package/dist/components/Table2/utilities/cell.d.ts +13 -0
- package/dist/components/Table2/utilities/columns.d.ts +13 -0
- package/dist/components/Table2/utilities/filterFn.d.ts +3 -0
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +14 -1
- package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +13 -5
- package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +7 -0
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +18 -0
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +374 -0
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js +83 -0
- package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +238 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +58 -0
- package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +31 -0
- package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/Search.js +55 -0
- package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js +88 -0
- package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +32 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +498 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +27 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +159 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +78 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js +30 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js +38 -0
- package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +89 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js +31 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +121 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js +60 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js +96 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +26 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +33 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +58 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js +19 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +44 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +17 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +25 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js +33 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +106 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js +112 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +32 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js +20 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +200 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js +49 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js +16 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +41 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +309 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js +96 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +16 -0
- package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js +13 -0
- package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +4 -2
- package/dist/esm/packages/taco/src/index.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +59 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +47 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js +28 -0
- package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js.map +1 -0
- package/dist/esm/packages/taco/src/utils/date.js +4 -1
- package/dist/esm/packages/taco/src/utils/date.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/dom.js +2 -1
- package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +20 -0
- package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -0
- package/dist/hooks/useGlobalKeyboardShortcut.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/primitives/Sortable/Sortable.d.ts +2 -2
- package/dist/taco.cjs.development.js +3438 -90
- 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/dist/utils/date.d.ts +1 -0
- package/dist/utils/hooks/useTruncated.d.ts +3 -0
- package/package.json +4 -2
- package/tailwind.config.js +11 -1
- package/types.json +1291 -2
@@ -0,0 +1,33 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const useActiveRow = (defaultActiveRowIndex = 0) => {
|
4
|
+
const [activeRowIndex, _setActiveRow] = React__default.useState(defaultActiveRowIndex);
|
5
|
+
const moveActiveRow = (direction, rows, callback) => {
|
6
|
+
_setActiveRow(rowIndex => {
|
7
|
+
const nextRowIndex = getNextIndex(direction, rowIndex, rows.length);
|
8
|
+
if (callback) {
|
9
|
+
callback(nextRowIndex);
|
10
|
+
}
|
11
|
+
return nextRowIndex;
|
12
|
+
});
|
13
|
+
};
|
14
|
+
// output
|
15
|
+
const moveToPreviousRow = (rows, callback) => moveActiveRow(-1, rows, callback);
|
16
|
+
const moveToNextRow = (rows, callback) => moveActiveRow(1, rows, callback);
|
17
|
+
const setActiveRowIndex = rowIndex => _setActiveRow(rowIndex);
|
18
|
+
return {
|
19
|
+
activeRowIndex,
|
20
|
+
setActiveRowIndex,
|
21
|
+
moveToPreviousRow,
|
22
|
+
moveToNextRow
|
23
|
+
};
|
24
|
+
};
|
25
|
+
const getNextIndex = (direction, currentIndex, length) => {
|
26
|
+
if (direction === -1) {
|
27
|
+
return currentIndex - 1 > 0 ? currentIndex - 1 : 0;
|
28
|
+
}
|
29
|
+
return currentIndex + 1 < length ? currentIndex + 1 : currentIndex;
|
30
|
+
};
|
31
|
+
|
32
|
+
export { useActiveRow };
|
33
|
+
//# sourceMappingURL=useActiveRow.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useActiveRow.js","sources":["../../../../../../../../src/components/Table2/hooks/useActiveRow.ts"],"sourcesContent":["import React from 'react';\nimport { Row as TRow } from '@tanstack/react-table';\n\n/*\n Note: We have to use row id as the identifier for the row, index isn't good enough\n\n If new rows are added (e.g. by polling of data) and we use index, then the active row\n could change to a different row, this is really bad if the user is editing a row.\n \n Using row id allows us to always stay on the same row. We have to store index though to make\n arrow key navigation performant (otherwise we have to findIndex the entire row array each time).\n*/\n\nexport type ActiveRowHandler = (rowIndex: number) => void;\nexport type ActiveRowMoveHandler<TType = any> = (rows: TRow<TType>[], callback?: (index: number) => void) => void;\n\nexport type useActiveRow<TType = any> = {\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TType>;\n moveToNextRow: ActiveRowMoveHandler<TType>;\n};\n\nexport const useActiveRow = <TType = any>(defaultActiveRowIndex = 0): useActiveRow<TType> => {\n const [activeRowIndex, _setActiveRow] = React.useState<number>(defaultActiveRowIndex);\n\n const moveActiveRow = (direction: -1 | 1, rows: TRow<TType>[], callback?: (index: number) => void) => {\n _setActiveRow(rowIndex => {\n const nextRowIndex = getNextIndex(direction, rowIndex, rows.length);\n if (callback) {\n callback(nextRowIndex);\n }\n return nextRowIndex;\n });\n };\n\n // output\n const moveToPreviousRow = (rows: TRow<TType>[], callback?: (index: number) => void) => moveActiveRow(-1, rows, callback);\n const moveToNextRow = (rows: TRow<TType>[], callback?: (index: number) => void) => moveActiveRow(1, rows, callback);\n const setActiveRowIndex = (rowIndex: number) => _setActiveRow(rowIndex);\n\n return {\n activeRowIndex,\n setActiveRowIndex,\n moveToPreviousRow,\n moveToNextRow,\n };\n};\n\nconst getNextIndex = (direction: -1 | 1, currentIndex: number, length: number) => {\n if (direction === -1) {\n return currentIndex - 1 > 0 ? currentIndex - 1 : 0;\n }\n\n return currentIndex + 1 < length ? currentIndex + 1 : currentIndex;\n};\n"],"names":["useActiveRow","defaultActiveRowIndex","activeRowIndex","_setActiveRow","React","useState","moveActiveRow","direction","rows","callback","rowIndex","nextRowIndex","getNextIndex","length","moveToPreviousRow","moveToNextRow","setActiveRowIndex","currentIndex"],"mappings":";;MAuBaA,YAAY,GAAG,CAAcC,qBAAqB,GAAG,CAAC;EAC/D,MAAM,CAACC,cAAc,EAAEC,aAAa,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAASJ,qBAAqB,CAAC;EAErF,MAAMK,aAAa,GAAG,CAACC,SAAiB,EAAEC,IAAmB,EAAEC,QAAkC;IAC7FN,aAAa,CAACO,QAAQ;MAClB,MAAMC,YAAY,GAAGC,YAAY,CAACL,SAAS,EAAEG,QAAQ,EAAEF,IAAI,CAACK,MAAM,CAAC;MACnE,IAAIJ,QAAQ,EAAE;QACVA,QAAQ,CAACE,YAAY,CAAC;;MAE1B,OAAOA,YAAY;KACtB,CAAC;GACL;;EAGD,MAAMG,iBAAiB,GAAG,CAACN,IAAmB,EAAEC,QAAkC,KAAKH,aAAa,CAAC,CAAC,CAAC,EAAEE,IAAI,EAAEC,QAAQ,CAAC;EACxH,MAAMM,aAAa,GAAG,CAACP,IAAmB,EAAEC,QAAkC,KAAKH,aAAa,CAAC,CAAC,EAAEE,IAAI,EAAEC,QAAQ,CAAC;EACnH,MAAMO,iBAAiB,GAAIN,QAAgB,IAAKP,aAAa,CAACO,QAAQ,CAAC;EAEvE,OAAO;IACHR,cAAc;IACdc,iBAAiB;IACjBF,iBAAiB;IACjBC;GACH;AACL;AAEA,MAAMH,YAAY,GAAG,CAACL,SAAiB,EAAEU,YAAoB,EAAEJ,MAAc;EACzE,IAAIN,SAAS,KAAK,CAAC,CAAC,EAAE;IAClB,OAAOU,YAAY,GAAG,CAAC,GAAG,CAAC,GAAGA,YAAY,GAAG,CAAC,GAAG,CAAC;;EAGtD,OAAOA,YAAY,GAAG,CAAC,GAAGJ,MAAM,GAAGI,YAAY,GAAG,CAAC,GAAGA,YAAY;AACtE,CAAC;;;;"}
|
@@ -0,0 +1,106 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { createColumnHelper } from '@tanstack/react-table';
|
3
|
+
import { createRowExpansionColumn, createRowSelectionColumn, createRowDraggableColumn, createRowActionsColumn, MIN_COLUMN_SIZE, COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION, COLUMN_ID_FOR_DRAGGABLE } from '../utilities/columns.js';
|
4
|
+
|
5
|
+
function useColumnDefinitions(children, options, tableRef) {
|
6
|
+
const lastSelectedRowIndex = React__default.useRef();
|
7
|
+
const columnHelper = createColumnHelper();
|
8
|
+
return React__default.useMemo(() => {
|
9
|
+
var _options$actionsForRo;
|
10
|
+
// cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved
|
11
|
+
const columns = [];
|
12
|
+
const defaultColumnPinning = [];
|
13
|
+
const defaultColumnSizing = {};
|
14
|
+
const defaultColumnVisibility = {};
|
15
|
+
const defaultSorting = [];
|
16
|
+
const footers = {};
|
17
|
+
React__default.Children.toArray(children).forEach(child => {
|
18
|
+
if ( /*#__PURE__*/React__default.isValidElement(child)) {
|
19
|
+
var _child$props$minWidth;
|
20
|
+
if (child.props.defaultPinned && options.enableColumnPinning) {
|
21
|
+
defaultColumnPinning.push(child.props.accessor);
|
22
|
+
}
|
23
|
+
if (child.props.defaultWidth) {
|
24
|
+
defaultColumnSizing[child.props.accessor] = child.props.defaultWidth;
|
25
|
+
}
|
26
|
+
if (child.props.defaultHidden && options.enableColumnHiding) {
|
27
|
+
defaultColumnVisibility[child.props.accessor] = false;
|
28
|
+
}
|
29
|
+
if (child.props.sort !== undefined) {
|
30
|
+
defaultSorting.push({
|
31
|
+
id: child.props.accessor,
|
32
|
+
desc: child.props.sort === 'desc'
|
33
|
+
});
|
34
|
+
}
|
35
|
+
if (child.props.footer) {
|
36
|
+
footers[child.props.accessor] = child.props.footer;
|
37
|
+
}
|
38
|
+
columns.push({
|
39
|
+
accessorKey: child.props.accessor,
|
40
|
+
id: child.props.accessor,
|
41
|
+
cell: props => {
|
42
|
+
if (typeof child.props.renderer === 'function') {
|
43
|
+
return child.props.renderer(props.getValue(), props.row.original);
|
44
|
+
}
|
45
|
+
return props.getValue();
|
46
|
+
},
|
47
|
+
header: child.props.header,
|
48
|
+
meta: {
|
49
|
+
align: child.props.align,
|
50
|
+
className: child.props.className,
|
51
|
+
control: child.props.control,
|
52
|
+
dataType: child.props.dataType,
|
53
|
+
defaultWidth: child.props.defaultWidth,
|
54
|
+
disableReordering: child.props.disableReordering,
|
55
|
+
disableTruncation: child.props.disableTruncation,
|
56
|
+
menu: child.props.menu,
|
57
|
+
tooltip: child.props.tooltip
|
58
|
+
},
|
59
|
+
enableHiding: !child.props.disableHiding,
|
60
|
+
// filtering
|
61
|
+
enableColumnFilter: !child.props.disableFiltering,
|
62
|
+
filterFn: options.enableColumnFiltering && !child.props.disableFiltering ? 'tacoFilter' : undefined,
|
63
|
+
// sizing
|
64
|
+
enableResizing: !child.props.disableResizing,
|
65
|
+
minSize: (_child$props$minWidth = child.props.minWidth) !== null && _child$props$minWidth !== void 0 ? _child$props$minWidth : MIN_COLUMN_SIZE,
|
66
|
+
size: child.props.defaultWidth,
|
67
|
+
// sorting
|
68
|
+
enableSorting: !child.props.disableSorting,
|
69
|
+
sortingFn: getSortingFn(child.props.dataType)
|
70
|
+
});
|
71
|
+
}
|
72
|
+
});
|
73
|
+
if (options.enableRowExpansion) {
|
74
|
+
columns.unshift(columnHelper.display(createRowExpansionColumn()));
|
75
|
+
defaultColumnPinning.unshift(COLUMN_ID_FOR_EXPANSION);
|
76
|
+
}
|
77
|
+
if (options.enableRowSelection) {
|
78
|
+
columns.unshift(columnHelper.display(createRowSelectionColumn(options.enableMultipleRowSelection, lastSelectedRowIndex, options.onRowDrag, tableRef)));
|
79
|
+
defaultColumnPinning.unshift(COLUMN_ID_FOR_SELECTION);
|
80
|
+
}
|
81
|
+
if (options.onRowDrag) {
|
82
|
+
columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag)));
|
83
|
+
defaultColumnPinning.unshift(COLUMN_ID_FOR_DRAGGABLE);
|
84
|
+
}
|
85
|
+
if ((_options$actionsForRo = options.actionsForRow) !== null && _options$actionsForRo !== void 0 && _options$actionsForRo.length) {
|
86
|
+
columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow)));
|
87
|
+
}
|
88
|
+
return {
|
89
|
+
columns,
|
90
|
+
defaultColumnPinning,
|
91
|
+
defaultColumnSizing,
|
92
|
+
defaultColumnVisibility,
|
93
|
+
defaultSorting,
|
94
|
+
footers
|
95
|
+
};
|
96
|
+
}, [children]);
|
97
|
+
}
|
98
|
+
const getSortingFn = dataType => {
|
99
|
+
if (dataType && dataType !== 'boolean') {
|
100
|
+
return dataType;
|
101
|
+
}
|
102
|
+
return 'auto';
|
103
|
+
};
|
104
|
+
|
105
|
+
export { useColumnDefinitions };
|
106
|
+
//# sourceMappingURL=useColumnDefinitions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useColumnDefinitions.js","sources":["../../../../../../../../src/components/Table2/hooks/useColumnDefinitions.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n ColumnSort,\n ColumnSizingState,\n Row,\n RowData,\n VisibilityState,\n SortingFnOption,\n} from '@tanstack/react-table';\nimport {\n CellAlignment,\n ColumnDataType,\n RowDragHandler,\n Table2ColumnControlRenderer,\n Table2ColumnFooterRenderer,\n Table2ColumnHeaderMenu,\n Table2ColumnProps,\n Table2RowActionProps,\n} from '../types';\nimport {\n COLUMN_ID_FOR_DRAGGABLE,\n COLUMN_ID_FOR_EXPANSION,\n COLUMN_ID_FOR_SELECTION,\n createRowActionsColumn,\n createRowDraggableColumn,\n createRowExpansionColumn,\n createRowSelectionColumn,\n MIN_COLUMN_SIZE,\n} from '../utilities/columns';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: CellAlignment;\n className?: string | ((row: Row<TData>) => string);\n control?: Table2ColumnControlRenderer;\n dataType?: ColumnDataType;\n disableReordering?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n headerClassName?: string;\n menu?: Table2ColumnHeaderMenu;\n tooltip?: string;\n }\n}\n\ntype useColumnDefinitionsOptions<TType> = {\n actionsForRow: Table2RowActionProps<TType>[];\n enableColumnFiltering: boolean;\n enableColumnHiding: boolean;\n enableColumnPinning: boolean;\n enableRowExpansion: boolean;\n enableRowSelection: boolean;\n enableMultipleRowSelection: boolean;\n onRowDrag?: RowDragHandler<TType>;\n};\n\nexport function useColumnDefinitions<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n options: useColumnDefinitionsOptions<TType>,\n tableRef: React.RefObject<HTMLDivElement>\n) {\n const lastSelectedRowIndex = React.useRef<number>();\n const columnHelper = createColumnHelper<TType>();\n\n return React.useMemo(() => {\n // cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved\n const columns: any[] = [];\n const defaultColumnPinning: string[] = [];\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>>[]).forEach(child => {\n if (React.isValidElement(child)) {\n if (child.props.defaultPinned && options.enableColumnPinning) {\n defaultColumnPinning.push(child.props.accessor);\n }\n\n if (child.props.defaultWidth) {\n defaultColumnSizing[child.props.accessor] = child.props.defaultWidth;\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 if (typeof child.props.renderer === 'function') {\n return child.props.renderer(props.getValue(), props.row.original);\n }\n\n return props.getValue();\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: child.props.defaultWidth,\n disableReordering: child.props.disableReordering,\n disableTruncation: child.props.disableTruncation,\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: 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(child.props.dataType),\n });\n }\n });\n\n if (options.enableRowExpansion) {\n columns.unshift(columnHelper.display(createRowExpansionColumn()));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_EXPANSION);\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 )\n )\n );\n defaultColumnPinning.unshift(COLUMN_ID_FOR_SELECTION);\n }\n\n if (options.onRowDrag) {\n columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag)));\n defaultColumnPinning.unshift(COLUMN_ID_FOR_DRAGGABLE);\n }\n\n if (options.actionsForRow?.length) {\n columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow)));\n }\n\n return { columns, defaultColumnPinning, defaultColumnSizing, defaultColumnVisibility, defaultSorting, footers };\n }, [children]);\n}\n\nconst getSortingFn = (dataType?: ColumnDataType): SortingFnOption<any> => {\n if (dataType && dataType !== 'boolean') {\n return dataType;\n }\n\n return 'auto';\n};\n"],"names":["useColumnDefinitions","children","options","tableRef","lastSelectedRowIndex","React","useRef","columnHelper","createColumnHelper","useMemo","columns","defaultColumnPinning","defaultColumnSizing","defaultColumnVisibility","defaultSorting","footers","Children","toArray","forEach","child","isValidElement","props","defaultPinned","enableColumnPinning","push","accessor","defaultWidth","defaultHidden","enableColumnHiding","sort","undefined","id","desc","footer","accessorKey","cell","renderer","getValue","row","original","header","meta","align","className","control","dataType","disableReordering","disableTruncation","menu","tooltip","enableHiding","disableHiding","enableColumnFilter","disableFiltering","filterFn","enableColumnFiltering","enableResizing","disableResizing","minSize","minWidth","MIN_COLUMN_SIZE","size","enableSorting","disableSorting","sortingFn","getSortingFn","enableRowExpansion","unshift","display","createRowExpansionColumn","COLUMN_ID_FOR_EXPANSION","enableRowSelection","createRowSelectionColumn","enableMultipleRowSelection","onRowDrag","COLUMN_ID_FOR_SELECTION","createRowDraggableColumn","COLUMN_ID_FOR_DRAGGABLE","actionsForRow","length","createRowActionsColumn"],"mappings":"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"}
|
@@ -0,0 +1,112 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
var MOVE_DIR;
|
4
|
+
(function (MOVE_DIR) {
|
5
|
+
MOVE_DIR[MOVE_DIR["FIRST"] = 0] = "FIRST";
|
6
|
+
MOVE_DIR[MOVE_DIR["LAST"] = 1] = "LAST";
|
7
|
+
MOVE_DIR[MOVE_DIR["PREV"] = 2] = "PREV";
|
8
|
+
MOVE_DIR[MOVE_DIR["NEXT"] = 3] = "NEXT";
|
9
|
+
})(MOVE_DIR || (MOVE_DIR = {}));
|
10
|
+
const useEditMode = handleSave => {
|
11
|
+
const enableEditMode = !!handleSave;
|
12
|
+
const [editMode, setEditMode] = React__default.useState({
|
13
|
+
enableEditMode,
|
14
|
+
isEditing: false,
|
15
|
+
columnIndex: 0
|
16
|
+
});
|
17
|
+
React__default.useEffect(() => {
|
18
|
+
setEditMode(editMode => ({
|
19
|
+
...editMode,
|
20
|
+
enableEditMode
|
21
|
+
}));
|
22
|
+
}, [enableEditMode]);
|
23
|
+
const _moveActiveColumn = (moveDirection, focussableColumnIndexes, moveRow) => {
|
24
|
+
var _focussableColumnInde, _focussableColumnInde2;
|
25
|
+
const firstDataColumnIndex = (_focussableColumnInde = focussableColumnIndexes.at(0)) !== null && _focussableColumnInde !== void 0 ? _focussableColumnInde : 0;
|
26
|
+
const lastDataColumnIndex = (_focussableColumnInde2 = focussableColumnIndexes.at(-1)) !== null && _focussableColumnInde2 !== void 0 ? _focussableColumnInde2 : 0;
|
27
|
+
if (!editMode.enableEditMode) {
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
setEditMode(({
|
31
|
+
columnIndex: currentColumnIndex,
|
32
|
+
...currentEditMode
|
33
|
+
}) => {
|
34
|
+
let nextCellIndex;
|
35
|
+
switch (moveDirection) {
|
36
|
+
case MOVE_DIR.FIRST:
|
37
|
+
nextCellIndex = firstDataColumnIndex;
|
38
|
+
break;
|
39
|
+
case MOVE_DIR.LAST:
|
40
|
+
nextCellIndex = lastDataColumnIndex;
|
41
|
+
break;
|
42
|
+
case MOVE_DIR.PREV:
|
43
|
+
// moves to the last data column of the previous row, if the current column is the first column
|
44
|
+
if (currentColumnIndex === firstDataColumnIndex) {
|
45
|
+
moveRow === null || moveRow === void 0 ? void 0 : moveRow(MOVE_DIR.PREV);
|
46
|
+
nextCellIndex = lastDataColumnIndex;
|
47
|
+
} else {
|
48
|
+
nextCellIndex = focussableColumnIndexes[getNextIndex(-1, currentColumnIndex, focussableColumnIndexes)];
|
49
|
+
}
|
50
|
+
break;
|
51
|
+
case MOVE_DIR.NEXT:
|
52
|
+
// moves to the first data column of the next row, if the current column is the last column
|
53
|
+
if (currentColumnIndex === lastDataColumnIndex) {
|
54
|
+
moveRow === null || moveRow === void 0 ? void 0 : moveRow(MOVE_DIR.NEXT);
|
55
|
+
nextCellIndex = firstDataColumnIndex;
|
56
|
+
} else {
|
57
|
+
nextCellIndex = focussableColumnIndexes[getNextIndex(1, currentColumnIndex, focussableColumnIndexes)];
|
58
|
+
}
|
59
|
+
break;
|
60
|
+
}
|
61
|
+
return {
|
62
|
+
...currentEditMode,
|
63
|
+
columnIndex: nextCellIndex
|
64
|
+
};
|
65
|
+
});
|
66
|
+
};
|
67
|
+
// output
|
68
|
+
const toggleEditing = (isEditing, columnIndex = 0) => {
|
69
|
+
if (!editMode.enableEditMode) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
setEditMode(editMode => ({
|
73
|
+
...editMode,
|
74
|
+
isEditing: isEditing !== null && isEditing !== void 0 ? isEditing : !editMode.isEditing,
|
75
|
+
columnIndex
|
76
|
+
}));
|
77
|
+
};
|
78
|
+
const moveToPreviousColumn = (focussableColumnIndexes, moveRow) => _moveActiveColumn(MOVE_DIR.PREV, focussableColumnIndexes, moveRow);
|
79
|
+
const moveToNextColumn = (focussableColumnIndexes, moveRow) => _moveActiveColumn(MOVE_DIR.NEXT, focussableColumnIndexes, moveRow);
|
80
|
+
const moveToFirstColumn = focussableColumnIndexes => _moveActiveColumn(MOVE_DIR.FIRST, focussableColumnIndexes);
|
81
|
+
const moveToLastColumn = focussableColumnIndexes => _moveActiveColumn(MOVE_DIR.LAST, focussableColumnIndexes);
|
82
|
+
const setColumn = columnIndex => {
|
83
|
+
if (!editMode.enableEditMode) {
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
setEditMode(currentEditMode => ({
|
87
|
+
...currentEditMode,
|
88
|
+
columnIndex
|
89
|
+
}));
|
90
|
+
};
|
91
|
+
return {
|
92
|
+
...editMode,
|
93
|
+
onSave: handleSave,
|
94
|
+
toggleEditing,
|
95
|
+
moveToPreviousColumn,
|
96
|
+
moveToNextColumn,
|
97
|
+
moveToFirstColumn,
|
98
|
+
moveToLastColumn,
|
99
|
+
setColumn
|
100
|
+
};
|
101
|
+
};
|
102
|
+
const getNextIndex = (direction, currentIndex, focussableColumnIndexes) => {
|
103
|
+
const currentIndexPosition = focussableColumnIndexes.indexOf(currentIndex);
|
104
|
+
const length = focussableColumnIndexes.length;
|
105
|
+
if (direction === -1) {
|
106
|
+
return currentIndexPosition - 1 > 0 ? currentIndexPosition - 1 : 0;
|
107
|
+
}
|
108
|
+
return currentIndexPosition + 1 < length ? currentIndexPosition + 1 : currentIndexPosition;
|
109
|
+
};
|
110
|
+
|
111
|
+
export { MOVE_DIR, useEditMode };
|
112
|
+
//# sourceMappingURL=useEditMode.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useEditMode.js","sources":["../../../../../../../../src/components/Table2/hooks/useEditMode.ts"],"sourcesContent":["import React from 'react';\nimport { SaveHandler } from '../types';\n\nexport type EditModeHandler = (isEditing?: boolean) => void;\nexport type EditModeColumnMoveHandler = (columns: number[], moveRow?: (moveDirection: MOVE_DIR) => void) => void;\nexport type EditModeColumnHandler = (columnIndex: number) => void;\n\nexport type useEditMode = {\n enableEditMode: boolean;\n isEditing: boolean;\n toggleEditing: EditModeHandler;\n onSave?: SaveHandler;\n // columns\n columnIndex: number;\n moveToPreviousColumn: EditModeColumnMoveHandler;\n moveToNextColumn: EditModeColumnMoveHandler;\n moveToFirstColumn: EditModeColumnMoveHandler;\n moveToLastColumn: EditModeColumnMoveHandler;\n setColumn: EditModeColumnHandler;\n};\n\nexport type EditMode = {\n enableEditMode: boolean;\n isEditing: boolean;\n columnIndex: number;\n};\n\nexport enum MOVE_DIR {\n FIRST,\n LAST,\n PREV,\n NEXT,\n}\n\nexport const useEditMode = (handleSave?: SaveHandler): useEditMode => {\n const enableEditMode = !!handleSave;\n const [editMode, setEditMode] = React.useState<EditMode>({\n enableEditMode,\n isEditing: false,\n columnIndex: 0,\n });\n\n React.useEffect(() => {\n setEditMode(editMode => ({ ...editMode, enableEditMode }));\n }, [enableEditMode]);\n\n const _moveActiveColumn = (\n moveDirection: MOVE_DIR,\n focussableColumnIndexes: number[],\n moveRow?: (moveDirection: MOVE_DIR) => void\n ) => {\n const firstDataColumnIndex = focussableColumnIndexes.at(0) ?? 0;\n const lastDataColumnIndex = focussableColumnIndexes.at(-1) ?? 0;\n\n if (!editMode.enableEditMode) {\n return;\n }\n\n setEditMode(({ columnIndex: currentColumnIndex, ...currentEditMode }) => {\n let nextCellIndex: number;\n\n switch (moveDirection) {\n case MOVE_DIR.FIRST:\n nextCellIndex = firstDataColumnIndex;\n break;\n case MOVE_DIR.LAST:\n nextCellIndex = lastDataColumnIndex;\n break;\n case MOVE_DIR.PREV:\n // moves to the last data column of the previous row, if the current column is the first column\n if (currentColumnIndex === firstDataColumnIndex) {\n moveRow?.(MOVE_DIR.PREV);\n nextCellIndex = lastDataColumnIndex;\n } else {\n nextCellIndex = focussableColumnIndexes[getNextIndex(-1, currentColumnIndex, focussableColumnIndexes)];\n }\n break;\n case MOVE_DIR.NEXT:\n // moves to the first data column of the next row, if the current column is the last column\n if (currentColumnIndex === lastDataColumnIndex) {\n moveRow?.(MOVE_DIR.NEXT);\n nextCellIndex = firstDataColumnIndex;\n } else {\n nextCellIndex = focussableColumnIndexes[getNextIndex(1, currentColumnIndex, focussableColumnIndexes)];\n }\n break;\n }\n\n return { ...currentEditMode, columnIndex: nextCellIndex };\n });\n };\n\n // output\n const toggleEditing = (isEditing?: boolean, columnIndex = 0) => {\n if (!editMode.enableEditMode) {\n return;\n }\n\n setEditMode(editMode => ({ ...editMode, isEditing: isEditing ?? !editMode.isEditing, columnIndex }));\n };\n const moveToPreviousColumn = (focussableColumnIndexes: number[], moveRow?: (moveDirecttion: MOVE_DIR) => void) =>\n _moveActiveColumn(MOVE_DIR.PREV, focussableColumnIndexes, moveRow);\n const moveToNextColumn = (focussableColumnIndexes: number[], moveRow?: (moveDirecttion: MOVE_DIR) => void) =>\n _moveActiveColumn(MOVE_DIR.NEXT, focussableColumnIndexes, moveRow);\n const moveToFirstColumn = (focussableColumnIndexes: number[]) => _moveActiveColumn(MOVE_DIR.FIRST, focussableColumnIndexes);\n const moveToLastColumn = (focussableColumnIndexes: number[]) => _moveActiveColumn(MOVE_DIR.LAST, focussableColumnIndexes);\n const setColumn = (columnIndex: number) => {\n if (!editMode.enableEditMode) {\n return;\n }\n\n setEditMode(currentEditMode => ({ ...currentEditMode, columnIndex }));\n };\n\n return {\n ...editMode,\n onSave: handleSave,\n toggleEditing,\n moveToPreviousColumn,\n moveToNextColumn,\n moveToFirstColumn,\n moveToLastColumn,\n setColumn,\n };\n};\n\nconst getNextIndex = (direction: -1 | 1, currentIndex: number, focussableColumnIndexes: number[]) => {\n const currentIndexPosition = focussableColumnIndexes.indexOf(currentIndex);\n const length = focussableColumnIndexes.length;\n\n if (direction === -1) {\n return currentIndexPosition - 1 > 0 ? currentIndexPosition - 1 : 0;\n }\n\n return currentIndexPosition + 1 < length ? currentIndexPosition + 1 : currentIndexPosition;\n};\n"],"names":["MOVE_DIR","useEditMode","handleSave","enableEditMode","editMode","setEditMode","React","useState","isEditing","columnIndex","useEffect","_moveActiveColumn","moveDirection","focussableColumnIndexes","moveRow","firstDataColumnIndex","at","lastDataColumnIndex","currentColumnIndex","currentEditMode","nextCellIndex","FIRST","LAST","PREV","getNextIndex","NEXT","toggleEditing","moveToPreviousColumn","moveToNextColumn","moveToFirstColumn","moveToLastColumn","setColumn","onSave","direction","currentIndex","currentIndexPosition","indexOf","length"],"mappings":"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"}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { COLUMN_ID_FOR_ACTIONS, isInternalColumn } from '../utilities/columns.js';
|
2
|
+
|
3
|
+
const useGridTemplate = table => {
|
4
|
+
const allVisibleColumns = table.getVisibleLeafColumns();
|
5
|
+
return allVisibleColumns.reduce((accum, column, index) => {
|
6
|
+
let size;
|
7
|
+
const isLastColumn = index === allVisibleColumns.length - 1;
|
8
|
+
const width = table.getState().columnSizing[column.id];
|
9
|
+
if (column.id === COLUMN_ID_FOR_ACTIONS) {
|
10
|
+
size = `minmax(max-content, auto)`;
|
11
|
+
} else if (isInternalColumn(column.id)) {
|
12
|
+
size = `${column.getSize()}px`;
|
13
|
+
} else if (width) {
|
14
|
+
if (isLastColumn) {
|
15
|
+
size = `minmax(${width}px, auto)`;
|
16
|
+
} else if (column.columnDef.minSize && width < column.columnDef.minSize) {
|
17
|
+
// react-table is supposed to handle minSize itself but it is really buggy
|
18
|
+
size = `${column.columnDef.minSize}px`;
|
19
|
+
} else {
|
20
|
+
size = `${width}px`;
|
21
|
+
}
|
22
|
+
} else if (column.getCanResize()) {
|
23
|
+
size = 'minmax(max-content, auto)';
|
24
|
+
} else {
|
25
|
+
size = 'max-content';
|
26
|
+
}
|
27
|
+
return `${accum} ${size}`;
|
28
|
+
}, '');
|
29
|
+
};
|
30
|
+
|
31
|
+
export { useGridTemplate };
|
32
|
+
//# sourceMappingURL=useGridTemplate.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useGridTemplate.js","sources":["../../../../../../../../src/components/Table2/hooks/useGridTemplate.ts"],"sourcesContent":["import { Table } from '@tanstack/react-table';\nimport { COLUMN_ID_FOR_ACTIONS, isInternalColumn } from '../utilities/columns';\n\nexport const useGridTemplate = (table: Table<any>) => {\n const allVisibleColumns = table.getVisibleLeafColumns();\n\n return allVisibleColumns.reduce((accum, column, index) => {\n let size;\n const isLastColumn = index === allVisibleColumns.length - 1;\n const width = table.getState().columnSizing[column.id];\n\n if (column.id === COLUMN_ID_FOR_ACTIONS) {\n size = `minmax(max-content, auto)`;\n } else if (isInternalColumn(column.id)) {\n size = `${column.getSize()}px`;\n } else if (width) {\n if (isLastColumn) {\n size = `minmax(${width}px, auto)`;\n } else if (column.columnDef.minSize && width < column.columnDef.minSize) {\n // react-table is supposed to handle minSize itself but it is really buggy\n size = `${column.columnDef.minSize}px`;\n } else {\n size = `${width}px`;\n }\n } else if (column.getCanResize()) {\n size = 'minmax(max-content, auto)';\n } else {\n size = 'max-content';\n }\n\n return `${accum} ${size}`;\n }, '');\n};\n"],"names":["useGridTemplate","table","allVisibleColumns","getVisibleLeafColumns","reduce","accum","column","index","size","isLastColumn","length","width","getState","columnSizing","id","COLUMN_ID_FOR_ACTIONS","isInternalColumn","getSize","columnDef","minSize","getCanResize"],"mappings":";;MAGaA,eAAe,GAAIC,KAAiB;EAC7C,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,qBAAqB,EAAE;EAEvD,OAAOD,iBAAiB,CAACE,MAAM,CAAC,CAACC,KAAK,EAAEC,MAAM,EAAEC,KAAK;IACjD,IAAIC,IAAI;IACR,MAAMC,YAAY,GAAGF,KAAK,KAAKL,iBAAiB,CAACQ,MAAM,GAAG,CAAC;IAC3D,MAAMC,KAAK,GAAGV,KAAK,CAACW,QAAQ,EAAE,CAACC,YAAY,CAACP,MAAM,CAACQ,EAAE,CAAC;IAEtD,IAAIR,MAAM,CAACQ,EAAE,KAAKC,qBAAqB,EAAE;MACrCP,IAAI,8BAA8B;KACrC,MAAM,IAAIQ,gBAAgB,CAACV,MAAM,CAACQ,EAAE,CAAC,EAAE;MACpCN,IAAI,MAAMF,MAAM,CAACW,OAAO,MAAM;KACjC,MAAM,IAAIN,KAAK,EAAE;MACd,IAAIF,YAAY,EAAE;QACdD,IAAI,aAAaG,gBAAgB;OACpC,MAAM,IAAIL,MAAM,CAACY,SAAS,CAACC,OAAO,IAAIR,KAAK,GAAGL,MAAM,CAACY,SAAS,CAACC,OAAO,EAAE;;QAErEX,IAAI,MAAMF,MAAM,CAACY,SAAS,CAACC,WAAW;OACzC,MAAM;QACHX,IAAI,MAAMG,SAAS;;KAE1B,MAAM,IAAIL,MAAM,CAACc,YAAY,EAAE,EAAE;MAC9BZ,IAAI,GAAG,2BAA2B;KACrC,MAAM;MACHA,IAAI,GAAG,aAAa;;IAGxB,UAAUH,SAASG,MAAM;GAC5B,EAAE,EAAE,CAAC;AACV;;;;"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const useSeparatedChildren = initialChildren => {
|
4
|
+
return React__default.useMemo(() => {
|
5
|
+
const columns = [];
|
6
|
+
let toolbar;
|
7
|
+
React__default.Children.toArray(initialChildren).forEach(child => {
|
8
|
+
var _child$type, _child$type2;
|
9
|
+
if (((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'Table2Column') {
|
10
|
+
columns.push(child);
|
11
|
+
} else if (((_child$type2 = child.type) === null || _child$type2 === void 0 ? void 0 : _child$type2.displayName) === 'Table2Toolbar') {
|
12
|
+
toolbar = child;
|
13
|
+
}
|
14
|
+
});
|
15
|
+
return [columns, toolbar];
|
16
|
+
}, [initialChildren]);
|
17
|
+
};
|
18
|
+
|
19
|
+
export { useSeparatedChildren };
|
20
|
+
//# sourceMappingURL=useSeparatedChildren.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useSeparatedChildren.js","sources":["../../../../../../../../src/components/Table2/hooks/useSeparatedChildren.ts"],"sourcesContent":["import React from 'react';\n\nexport const useSeparatedChildren = initialChildren => {\n return React.useMemo(() => {\n const columns: any[] = [];\n let toolbar;\n\n React.Children.toArray(initialChildren).forEach((child: any) => {\n if (child.type?.displayName === 'Table2Column') {\n columns.push(child);\n } else if (child.type?.displayName === 'Table2Toolbar') {\n toolbar = child;\n }\n });\n\n return [columns, toolbar];\n }, [initialChildren]);\n};\n"],"names":["useSeparatedChildren","initialChildren","React","useMemo","columns","toolbar","Children","toArray","forEach","child","type","displayName","push"],"mappings":";;MAEaA,oBAAoB,GAAGC,eAAe;EAC/C,OAAOC,cAAK,CAACC,OAAO,CAAC;IACjB,MAAMC,OAAO,GAAU,EAAE;IACzB,IAAIC,OAAO;IAEXH,cAAK,CAACI,QAAQ,CAACC,OAAO,CAACN,eAAe,CAAC,CAACO,OAAO,CAAEC,KAAU;;MACvD,IAAI,gBAAAA,KAAK,CAACC,IAAI,gDAAV,YAAYC,WAAW,MAAK,cAAc,EAAE;QAC5CP,OAAO,CAACQ,IAAI,CAACH,KAAK,CAAC;OACtB,MAAM,IAAI,iBAAAA,KAAK,CAACC,IAAI,iDAAV,aAAYC,WAAW,MAAK,eAAe,EAAE;QACpDN,OAAO,GAAGI,KAAK;;KAEtB,CAAC;IAEF,OAAO,CAACL,OAAO,EAAEC,OAAO,CAAC;GAC5B,EAAE,CAACJ,eAAe,CAAC,CAAC;AACzB;;;;"}
|
@@ -0,0 +1,200 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { getSortedRowModel, getFilteredRowModel, useReactTable, getCoreRowModel } from '@tanstack/react-table';
|
3
|
+
import { columnFilterFn, globalFilterFn } from '../utilities/filterFn.js';
|
4
|
+
import { useEditMode } from './useEditMode.js';
|
5
|
+
import { useColumnDefinitions } from './useColumnDefinitions.js';
|
6
|
+
import { getOffsetsFromSize, useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener.js';
|
7
|
+
import { useRowSelectionListener } from './listeners/useRowSelectionListener.js';
|
8
|
+
import { useSettingsStateListener } from './listeners/useSettingsStateListener.js';
|
9
|
+
import { useActiveRow } from './useActiveRow.js';
|
10
|
+
import { useActiveRowStateListener } from './listeners/useActiveRowStateListener.js';
|
11
|
+
|
12
|
+
function useTable(children, props, ref) {
|
13
|
+
var _settings$columnOrder, _ref, _settings$columnPinni, _settings$columnPinni2, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity;
|
14
|
+
const {
|
15
|
+
actionsForRow = [],
|
16
|
+
data,
|
17
|
+
defaultActiveRowIndex,
|
18
|
+
disableColumnFiltering = false,
|
19
|
+
disableColumnHiding = false,
|
20
|
+
disableColumnPinning = false,
|
21
|
+
disableColumnReordering = false,
|
22
|
+
disableColumnResizing = false,
|
23
|
+
disableRowDensity = false,
|
24
|
+
disableRowExpansion = false,
|
25
|
+
disableRowSelection = false,
|
26
|
+
disableMultipleRowSelection = false,
|
27
|
+
disableSearch = false,
|
28
|
+
disableSorting = false,
|
29
|
+
expandedRowRenderer,
|
30
|
+
manualColumnFiltering = false,
|
31
|
+
manualSearch = false,
|
32
|
+
manualSorting = false,
|
33
|
+
onChangeSettings,
|
34
|
+
onRowClick,
|
35
|
+
onRowDrag,
|
36
|
+
onRowSelect,
|
37
|
+
onSave,
|
38
|
+
settings = {},
|
39
|
+
// experimental
|
40
|
+
_experimentalActionsForTable
|
41
|
+
} = props;
|
42
|
+
const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;
|
43
|
+
const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!(_experimentalActionsForTable !== null && _experimentalActionsForTable !== void 0 && _experimentalActionsForTable.length));
|
44
|
+
const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;
|
45
|
+
const {
|
46
|
+
columns,
|
47
|
+
defaultColumnPinning,
|
48
|
+
defaultColumnSizing,
|
49
|
+
defaultSorting,
|
50
|
+
defaultColumnVisibility,
|
51
|
+
footers
|
52
|
+
} = useColumnDefinitions(children, {
|
53
|
+
actionsForRow,
|
54
|
+
enableColumnFiltering: !disableColumnFiltering,
|
55
|
+
enableColumnHiding: !disableColumnHiding,
|
56
|
+
enableColumnPinning: !disableColumnPinning,
|
57
|
+
enableRowExpansion,
|
58
|
+
enableRowSelection,
|
59
|
+
enableMultipleRowSelection,
|
60
|
+
onRowDrag
|
61
|
+
}, ref);
|
62
|
+
// defaults
|
63
|
+
const initialState = {
|
64
|
+
columnOrder: (_settings$columnOrder = settings === null || settings === void 0 ? void 0 : settings.columnOrder) !== null && _settings$columnOrder !== void 0 ? _settings$columnOrder : columns.map(column => column.id),
|
65
|
+
columnPinning: {
|
66
|
+
left: (_ref = (_settings$columnPinni = settings === null || settings === void 0 ? void 0 : (_settings$columnPinni2 = settings.columnPinning) === null || _settings$columnPinni2 === void 0 ? void 0 : _settings$columnPinni2.left) !== null && _settings$columnPinni !== void 0 ? _settings$columnPinni : defaultColumnPinning) !== null && _ref !== void 0 ? _ref : [],
|
67
|
+
right: []
|
68
|
+
},
|
69
|
+
columnSizing: (_settings$columnSizin = settings === null || settings === void 0 ? void 0 : settings.columnSizing) !== null && _settings$columnSizin !== void 0 ? _settings$columnSizin : defaultColumnSizing,
|
70
|
+
columnVisibility: (_settings$columnVisib = settings === null || settings === void 0 ? void 0 : settings.columnVisibility) !== null && _settings$columnVisib !== void 0 ? _settings$columnVisib : defaultColumnVisibility
|
71
|
+
};
|
72
|
+
// Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns
|
73
|
+
const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);
|
74
|
+
const dataColumnEndOffset = actionsForRow.length ? 1 : 0;
|
75
|
+
// custom
|
76
|
+
const activeRow = useActiveRow(defaultActiveRowIndex);
|
77
|
+
const [hoveredRowIndex, setHoveredRowIndex] = React__default.useState(undefined);
|
78
|
+
const editMode = useEditMode(onSave);
|
79
|
+
const [columnOffsets, setColumnOffsets] = React__default.useState(getOffsetsFromSize(initialState.columnPinning, initialState.columnVisibility, initialState.columnSizing));
|
80
|
+
const [rowDensity, setRowDensity] = React__default.useState((_settings$rowDensity = settings === null || settings === void 0 ? void 0 : settings.rowDensity) !== null && _settings$rowDensity !== void 0 ? _settings$rowDensity : 'normal');
|
81
|
+
const [dragging, setDragging] = React__default.useState({});
|
82
|
+
const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React__default.useState(false);
|
83
|
+
const [shouldDisableTableActions, setShouldDisableTableActions] = React__default.useState(false);
|
84
|
+
// For some reason, using state instead of ref didn't work as expected, that's why ref is used
|
85
|
+
const focussableColumnIndexes = React__default.useRef([]);
|
86
|
+
// some options get set even if they are undefined, so we have to do it conditionally
|
87
|
+
const options = {
|
88
|
+
enableExpanding: enableRowExpansion,
|
89
|
+
enableColumnFilters: !disableColumnFiltering,
|
90
|
+
enableColumnResizing: !disableColumnResizing,
|
91
|
+
enableGlobalFilter: !disableSearch,
|
92
|
+
enableHiding: !disableColumnHiding,
|
93
|
+
enablePinning: !disableColumnPinning,
|
94
|
+
enableRowSelection: enableRowSelection,
|
95
|
+
enableMultiRowSelection: enableMultipleRowSelection,
|
96
|
+
enableSorting: !disableSorting
|
97
|
+
};
|
98
|
+
// resizing
|
99
|
+
if (options.enableColumnResizing) {
|
100
|
+
options.columnResizeMode = 'onChange';
|
101
|
+
}
|
102
|
+
// sorting
|
103
|
+
if (options.enableSorting) {
|
104
|
+
var _settings$sorting;
|
105
|
+
initialState.sorting = (_settings$sorting = settings === null || settings === void 0 ? void 0 : settings.sorting) !== null && _settings$sorting !== void 0 ? _settings$sorting : defaultSorting;
|
106
|
+
if (manualSorting) {
|
107
|
+
options.manualSorting = true;
|
108
|
+
} else {
|
109
|
+
options.getSortedRowModel = getSortedRowModel();
|
110
|
+
}
|
111
|
+
}
|
112
|
+
// filtering
|
113
|
+
if (options.enableColumnFilters) {
|
114
|
+
var _settings$columnFilte;
|
115
|
+
initialState.columnFilters = (_settings$columnFilte = settings === null || settings === void 0 ? void 0 : settings.columnFilters) !== null && _settings$columnFilte !== void 0 ? _settings$columnFilte : [];
|
116
|
+
if (manualColumnFiltering) {
|
117
|
+
options.manualFiltering = true;
|
118
|
+
} else {
|
119
|
+
options.filterFns = {
|
120
|
+
tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter)
|
121
|
+
};
|
122
|
+
options.getFilteredRowModel = getFilteredRowModel();
|
123
|
+
}
|
124
|
+
}
|
125
|
+
// search
|
126
|
+
if (options.enableGlobalFilter) {
|
127
|
+
if (manualSearch) {
|
128
|
+
options.manualFiltering = true;
|
129
|
+
} else {
|
130
|
+
options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);
|
131
|
+
options.getFilteredRowModel = getFilteredRowModel();
|
132
|
+
}
|
133
|
+
}
|
134
|
+
const table = useReactTable({
|
135
|
+
data,
|
136
|
+
columns: columns,
|
137
|
+
getCoreRowModel: getCoreRowModel(),
|
138
|
+
initialState,
|
139
|
+
...options,
|
140
|
+
meta: {
|
141
|
+
...activeRow,
|
142
|
+
editMode,
|
143
|
+
// offsets
|
144
|
+
columnOffsets,
|
145
|
+
// density
|
146
|
+
enableRowDensity: !disableRowDensity,
|
147
|
+
rowDensity,
|
148
|
+
setRowDensity,
|
149
|
+
// dragging
|
150
|
+
dragging,
|
151
|
+
setDragging,
|
152
|
+
// computed
|
153
|
+
enableColumnReordering: !disableColumnReordering,
|
154
|
+
// resorting
|
155
|
+
shouldPauseSortingAndFiltering,
|
156
|
+
setShouldPauseSortingAndFiltering,
|
157
|
+
// other
|
158
|
+
onRowClick,
|
159
|
+
hoveredRowIndex,
|
160
|
+
setHoveredRowIndex,
|
161
|
+
// data column positions
|
162
|
+
dataColumnStartOffset,
|
163
|
+
dataColumnEndOffset,
|
164
|
+
// disable table actions
|
165
|
+
shouldDisableTableActions,
|
166
|
+
setShouldDisableTableActions,
|
167
|
+
// active row column indexes
|
168
|
+
focussableColumnIndexes: focussableColumnIndexes.current,
|
169
|
+
addFocussableColumnIndex: index => {
|
170
|
+
if (!focussableColumnIndexes.current.includes(index)) {
|
171
|
+
focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);
|
172
|
+
}
|
173
|
+
},
|
174
|
+
resetFocussableColumnIndexes: () => {
|
175
|
+
focussableColumnIndexes.current = [];
|
176
|
+
},
|
177
|
+
// table ref
|
178
|
+
tableRef: ref
|
179
|
+
}
|
180
|
+
});
|
181
|
+
const tableRows = table.getRowModel().rows;
|
182
|
+
const lastSortedOrFilteredRows = React__default.useRef(tableRows);
|
183
|
+
if (!shouldPauseSortingAndFiltering) {
|
184
|
+
lastSortedOrFilteredRows.current = tableRows;
|
185
|
+
}
|
186
|
+
const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;
|
187
|
+
// state listeners
|
188
|
+
useActiveRowStateListener(table, rows, activeRow);
|
189
|
+
useColumnOffsetStateListener(table, setColumnOffsets);
|
190
|
+
useRowSelectionListener(table, onRowSelect);
|
191
|
+
useSettingsStateListener(table, onChangeSettings);
|
192
|
+
return {
|
193
|
+
rows,
|
194
|
+
table,
|
195
|
+
footers
|
196
|
+
};
|
197
|
+
}
|
198
|
+
|
199
|
+
export { useTable };
|
200
|
+
//# sourceMappingURL=useTable.js.map
|
@@ -0,0 +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 ColumnPinningState,\n VisibilityState,\n ColumnSizingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2ColumnProps, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { getOffsetsFromSize, 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';\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 dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnReordering: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n // other\n onRowClick?: RowClickHandler<TData>;\n hoveredRowIndex: number | undefined;\n setHoveredRowIndex: OnChangeFn<number | undefined>;\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 }\n}\n\nexport function useTable<TType = any>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n props: Table2Props<TType>,\n ref: React.RefObject<HTMLDivElement>\n) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnPinning = 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 const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, defaultColumnPinning, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnPinning: !disableColumnPinning,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n onRowDrag,\n },\n ref\n );\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: settings?.columnPinning?.left ?? defaultColumnPinning ?? [],\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 [hoveredRowIndex, setHoveredRowIndex] = React.useState<number | undefined>(undefined);\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState(\n getOffsetsFromSize(\n initialState.columnPinning as ColumnPinningState,\n initialState.columnVisibility as VisibilityState,\n initialState.columnSizing as ColumnSizingState\n )\n );\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 // 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: !disableColumnPinning,\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 dragging,\n setDragging,\n // computed\n enableColumnReordering: !disableColumnReordering,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n hoveredRowIndex,\n setHoveredRowIndex,\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 },\n });\n\n const tableRows = table.getRowModel().rows;\n const lastSortedOrFilteredRows = React.useRef(tableRows);\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 useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers };\n}\n"],"names":["useTable","children","props","ref","actionsForRow","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnPinning","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","defaultColumnPinning","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnPinning","initialState","columnOrder","map","column","id","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","hoveredRowIndex","setHoveredRowIndex","React","useState","undefined","editMode","useEditMode","columnOffsets","setColumnOffsets","getOffsetsFromSize","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","focussableColumnIndexes","useRef","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","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","lastSortedOrFilteredRows","useActiveRowStateListener","useColumnOffsetStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":"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"}
|