@economic/taco 2.0.0-alpha.173 → 2.0.0-alpha.6
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Provider/Localization.d.ts +114 -1
- package/dist/components/Table2/Table2.d.ts +130 -0
- package/dist/components/Table2/components/BatchActionsMenu.d.ts +10 -0
- package/dist/components/Table2/components/ColumnSettingsButton.d.ts +6 -0
- package/dist/components/Table2/components/EditModeButton.d.ts +8 -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 +14 -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 +17 -0
- package/dist/components/Table2/components/column/ValidationError.d.ts +5 -0
- package/dist/components/Table2/components/column/utils.d.ts +3 -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 +10 -0
- package/dist/components/Table2/components/filters/components/Comparator.d.ts +11 -0
- package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
- package/dist/components/Table2/components/filters/components/InferredControl.d.ts +10 -0
- package/dist/components/Table2/components/row/Context.d.ts +24 -0
- package/dist/components/Table2/components/row/ExpandedRow.d.ts +6 -0
- package/dist/components/Table2/components/row/Row.d.ts +2 -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 +3 -0
- package/dist/components/Table2/hooks/listeners/useFilterStateListener.d.ts +3 -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 +37 -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/useTable.d.ts +46 -0
- package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
- package/dist/components/Table2/hooks/useVirtualiser.d.ts +23 -0
- package/dist/components/Table2/types.d.ts +148 -0
- package/dist/components/Table2/utilities/cell.d.ts +14 -0
- package/dist/components/Table2/utilities/columns.d.ts +16 -0
- package/dist/components/Table2/utilities/filterFn.d.ts +3 -0
- package/dist/components/Table3/Table3.d.ts +3 -2
- package/dist/components/Table3/components/columns/cell/DisplayCell.d.ts +2 -2
- package/dist/components/Table3/components/columns/footer/Footer.d.ts +2 -2
- package/dist/components/Table3/components/columns/header/Header.d.ts +3 -3
- package/dist/components/Table3/components/columns/header/SortIndicator.d.ts +3 -3
- package/dist/components/Table3/components/columns/styles.d.ts +2 -2
- package/dist/components/Table3/hooks/useTable.d.ts +3 -3
- package/dist/components/Table3/hooks/useTableDataLoader.d.ts +23 -0
- package/dist/components/Table3/types.d.ts +18 -19
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +110 -0
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +422 -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 +116 -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 +81 -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 +47 -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 +62 -0
- package/dist/esm/packages/taco/src/components/Table2/components/Search.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 +600 -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 +32 -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 +243 -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 +73 -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 +39 -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 +155 -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 +129 -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 +68 -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/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/components/filters/components/InferredControl.js +99 -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 +58 -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 +36 -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 +43 -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 +28 -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/useFilterStateListener.js +12 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +18 -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 +122 -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 +34 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +222 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -0
- 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/hooks/useVirtualiser.js +48 -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 +18 -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 +387 -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 +100 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +4 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +4 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/SortIndicator.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +4 -3
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/{useTableData.js → useTableDataLoader.js} +3 -3
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableDataLoader.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +32 -0
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +3 -2
- package/dist/esm/packages/taco/src/index.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/index.d.ts +1 -0
- package/dist/taco.cjs.development.js +4023 -362
- 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 +2220 -377
- package/dist/components/Table3/hooks/useTableData.d.ts +0 -23
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTableData.js.map +0 -1
@@ -0,0 +1,41 @@
|
|
1
|
+
import cn from 'classnames';
|
2
|
+
import { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION } from './columns.js';
|
3
|
+
|
4
|
+
const getDensitySizing = (density, editing = false) => {
|
5
|
+
switch (density) {
|
6
|
+
case 'compact':
|
7
|
+
return editing ? 'py-0' : 'py-1.5';
|
8
|
+
case 'comfortable':
|
9
|
+
return editing ? 'py-2' : 'py-3.5';
|
10
|
+
case 'spacious':
|
11
|
+
return editing ? 'py-3' : 'py-5';
|
12
|
+
default:
|
13
|
+
return editing ? 'py-1' : 'py-2.5';
|
14
|
+
}
|
15
|
+
};
|
16
|
+
const getCellSizingClasses = (density = 'normal', editing = false) => {
|
17
|
+
return cn('min-h-0 flex items-start', getDensitySizing(density, editing), editing ? 'px-[7px]' : 'px-4');
|
18
|
+
};
|
19
|
+
const getCellAlignmentClasses = (alignment = 'left') => ({
|
20
|
+
'justify-start text-left': alignment === 'left',
|
21
|
+
'justify-end text-right': alignment === 'right',
|
22
|
+
'justify-center text-center': alignment === 'center'
|
23
|
+
});
|
24
|
+
const getFrozenShadowClasses = (column, frozenColumns, isHorizontallyOffset) => {
|
25
|
+
const frozen = !!column.getIsPinned();
|
26
|
+
// react-table has column.getPinnedIndex() but it does not exclude hidden columns, so the number is wrong
|
27
|
+
const frozenColumnIndex = frozenColumns.indexOf(column.id);
|
28
|
+
const isLastFrozen = frozen && frozenColumnIndex === frozenColumns.length - 1;
|
29
|
+
const hideFrozenShadow = !isHorizontallyOffset && (column.id === COLUMN_ID_FOR_EXPANSION || column.id === COLUMN_ID_FOR_SELECTION);
|
30
|
+
return {
|
31
|
+
'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && isHorizontallyOffset,
|
32
|
+
'shadow-[1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && !isHorizontallyOffset && !hideFrozenShadow
|
33
|
+
};
|
34
|
+
};
|
35
|
+
const focussableNodeNames = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS'];
|
36
|
+
const isKeyboardFocusableElement = element => {
|
37
|
+
return focussableNodeNames.includes(element.nodeName) && !element.hasAttribute('disabled') && !element.hasAttribute('readonly') && !element.getAttribute('aria-hidden');
|
38
|
+
};
|
39
|
+
|
40
|
+
export { focussableNodeNames, getCellAlignmentClasses, getCellSizingClasses, getFrozenShadowClasses, isKeyboardFocusableElement };
|
41
|
+
//# sourceMappingURL=cell.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cell.js","sources":["../../../../../../../../src/components/Table2/utilities/cell.ts"],"sourcesContent":["import cn from 'classnames';\nimport { Column } from '@tanstack/react-table';\nimport { CellAlignment, RowDensity } from '../types';\nimport { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION } from './columns';\n\nconst getDensitySizing = (density: RowDensity, editing = false) => {\n switch (density) {\n case 'compact':\n return editing ? 'py-0' : 'py-1.5';\n case 'comfortable':\n return editing ? 'py-2' : 'py-3.5';\n case 'spacious':\n return editing ? 'py-3' : 'py-5';\n default:\n return editing ? 'py-1' : 'py-2.5';\n }\n};\n\nexport const getCellSizingClasses = (density: RowDensity = 'normal', editing = false) => {\n return cn('min-h-0 flex items-start', getDensitySizing(density, editing), editing ? 'px-[7px]' : 'px-4');\n};\n\nexport const getCellAlignmentClasses = (alignment: CellAlignment = 'left') => ({\n 'justify-start text-left': alignment === 'left',\n 'justify-end text-right': alignment === 'right',\n 'justify-center text-center': alignment === 'center',\n});\n\nexport const getFrozenShadowClasses = (column: Column<any, any>, frozenColumns: string[], isHorizontallyOffset: boolean) => {\n const frozen = !!column.getIsPinned();\n\n // react-table has column.getPinnedIndex() but it does not exclude hidden columns, so the number is wrong\n const frozenColumnIndex = frozenColumns.indexOf(column.id);\n const isLastFrozen = frozen && frozenColumnIndex === frozenColumns.length - 1;\n const hideFrozenShadow =\n !isHorizontallyOffset && (column.id === COLUMN_ID_FOR_EXPANSION || column.id === COLUMN_ID_FOR_SELECTION);\n\n return {\n 'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && isHorizontallyOffset,\n 'shadow-[1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && !isHorizontallyOffset && !hideFrozenShadow,\n };\n};\n\nexport const focussableNodeNames = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS'];\n\nexport const isKeyboardFocusableElement = (element: Element) => {\n return (\n focussableNodeNames.includes(element.nodeName) &&\n !element.hasAttribute('disabled') &&\n !element.hasAttribute('readonly') &&\n !element.getAttribute('aria-hidden')\n );\n};\n"],"names":["getDensitySizing","density","editing","getCellSizingClasses","cn","getCellAlignmentClasses","alignment","getFrozenShadowClasses","column","frozenColumns","isHorizontallyOffset","frozen","getIsPinned","frozenColumnIndex","indexOf","id","isLastFrozen","length","hideFrozenShadow","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_SELECTION","focussableNodeNames","isKeyboardFocusableElement","element","includes","nodeName","hasAttribute","getAttribute"],"mappings":";;;AAKA,MAAMA,gBAAgB,GAAG,CAACC,OAAmB,EAAEC,OAAO,GAAG,KAAK;EAC1D,QAAQD,OAAO;IACX,KAAK,SAAS;MACV,OAAOC,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,aAAa;MACd,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,UAAU;MACX,OAAOA,OAAO,GAAG,MAAM,GAAG,MAAM;IACpC;MACI,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;;AAE9C,CAAC;MAEYC,oBAAoB,GAAG,CAACF,UAAsB,QAAQ,EAAEC,OAAO,GAAG,KAAK;EAChF,OAAOE,EAAE,CAAC,0BAA0B,EAAEJ,gBAAgB,CAACC,OAAO,EAAEC,OAAO,CAAC,EAAEA,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAC5G;MAEaG,uBAAuB,GAAG,CAACC,YAA2B,MAAM,MAAM;EAC3E,yBAAyB,EAAEA,SAAS,KAAK,MAAM;EAC/C,wBAAwB,EAAEA,SAAS,KAAK,OAAO;EAC/C,4BAA4B,EAAEA,SAAS,KAAK;CAC/C;MAEYC,sBAAsB,GAAG,CAACC,MAAwB,EAAEC,aAAuB,EAAEC,oBAA6B;EACnH,MAAMC,MAAM,GAAG,CAAC,CAACH,MAAM,CAACI,WAAW,EAAE;;EAGrC,MAAMC,iBAAiB,GAAGJ,aAAa,CAACK,OAAO,CAACN,MAAM,CAACO,EAAE,CAAC;EAC1D,MAAMC,YAAY,GAAGL,MAAM,IAAIE,iBAAiB,KAAKJ,aAAa,CAACQ,MAAM,GAAG,CAAC;EAC7E,MAAMC,gBAAgB,GAClB,CAACR,oBAAoB,KAAKF,MAAM,CAACO,EAAE,KAAKI,uBAAuB,IAAIX,MAAM,CAACO,EAAE,KAAKK,uBAAuB,CAAC;EAE7G,OAAO;IACH,uEAAuE,EAAEJ,YAAY,IAAIN,oBAAoB;IAC7G,6CAA6C,EAAEM,YAAY,IAAI,CAACN,oBAAoB,IAAI,CAACQ;GAC5F;AACL;MAEaG,mBAAmB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;MAE9EC,0BAA0B,GAAIC,OAAgB;EACvD,OACIF,mBAAmB,CAACG,QAAQ,CAACD,OAAO,CAACE,QAAQ,CAAC,IAC9C,CAACF,OAAO,CAACG,YAAY,CAAC,UAAU,CAAC,IACjC,CAACH,OAAO,CAACG,YAAY,CAAC,UAAU,CAAC,IACjC,CAACH,OAAO,CAACI,YAAY,CAAC,aAAa,CAAC;AAE5C;;;;"}
|
@@ -0,0 +1,387 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import cn from 'classnames';
|
3
|
+
import { Icon } from '../../Icon/Icon.js';
|
4
|
+
import { Tooltip } from '../../Tooltip/Tooltip.js';
|
5
|
+
import { IconButton } from '../../IconButton/IconButton.js';
|
6
|
+
import { Checkbox } from '../../Checkbox/Checkbox.js';
|
7
|
+
import { Shortcut } from '../../Shortcut/Shortcut.js';
|
8
|
+
import { Menu } from '../../Menu/Menu.js';
|
9
|
+
import { useRowContext } from '../components/row/Context.js';
|
10
|
+
|
11
|
+
const COLUMN_ID_FOR_DRAGGABLE = '__draggable';
|
12
|
+
const COLUMN_ID_FOR_SELECTION = '__select';
|
13
|
+
const COLUMN_ID_FOR_EXPANSION = '__expansion';
|
14
|
+
const COLUMN_ID_FOR_ACTIONS = '__actions';
|
15
|
+
const isInternalFrozenColumn = id => isInternalColumn(id) && id !== COLUMN_ID_FOR_ACTIONS;
|
16
|
+
const isInternalColumn = id => id === COLUMN_ID_FOR_SELECTION || id === COLUMN_ID_FOR_EXPANSION || id === COLUMN_ID_FOR_ACTIONS || id === COLUMN_ID_FOR_DRAGGABLE;
|
17
|
+
const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls
|
18
|
+
const toggleBetween = (fromRowIndex, toRowIndex) => {
|
19
|
+
const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;
|
20
|
+
const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;
|
21
|
+
return [fromIndex, toIndex];
|
22
|
+
};
|
23
|
+
function createRowDraggableColumn(onRowDrag, texts) {
|
24
|
+
return {
|
25
|
+
id: COLUMN_ID_FOR_DRAGGABLE,
|
26
|
+
cell: ({
|
27
|
+
row,
|
28
|
+
table
|
29
|
+
}) => {
|
30
|
+
const meta = table.options.meta;
|
31
|
+
const GHOST_ELEMENT_ID = 'taco_table_dragging';
|
32
|
+
const onDragStart = event => {
|
33
|
+
const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];
|
34
|
+
meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({
|
35
|
+
...dragging,
|
36
|
+
[rowBeingDragged.id]: true
|
37
|
+
}), {}));
|
38
|
+
const data = rows.map(row => row.original);
|
39
|
+
// set a default data value so that the consumer doesn't have to
|
40
|
+
event.dataTransfer.setData('text', JSON.stringify(data));
|
41
|
+
const showPlaceholder = text => {
|
42
|
+
const ghost = document.createElement('div');
|
43
|
+
ghost.id = GHOST_ELEMENT_ID;
|
44
|
+
ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';
|
45
|
+
ghost.innerText = text;
|
46
|
+
document.body.appendChild(ghost);
|
47
|
+
event.dataTransfer.setDragImage(ghost, 0, 0);
|
48
|
+
};
|
49
|
+
const setDataTransfer = text => event.dataTransfer.setData('text', text);
|
50
|
+
onRowDrag(data, showPlaceholder, setDataTransfer);
|
51
|
+
};
|
52
|
+
const onDragEnd = () => {
|
53
|
+
var _document$getElementB;
|
54
|
+
(_document$getElementB = document.getElementById(GHOST_ELEMENT_ID)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.remove();
|
55
|
+
meta.setDragging({});
|
56
|
+
};
|
57
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
58
|
+
draggable: true,
|
59
|
+
onDragStart: onDragStart,
|
60
|
+
onDragEnd: onDragEnd
|
61
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
62
|
+
"aria-label": texts.table2.columns.drag.tooltip,
|
63
|
+
name: "drag",
|
64
|
+
className: "text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white"
|
65
|
+
}));
|
66
|
+
},
|
67
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
68
|
+
meta: {
|
69
|
+
align: 'center',
|
70
|
+
className: 'items-center !px-0',
|
71
|
+
headerClassName: 'items-center !px-0'
|
72
|
+
},
|
73
|
+
// sizing
|
74
|
+
enableResizing: false,
|
75
|
+
size: 10
|
76
|
+
};
|
77
|
+
}
|
78
|
+
const SelectCell = /*#__PURE__*/React__default.memo(({
|
79
|
+
lastSelectedRowIndex,
|
80
|
+
rowIndex,
|
81
|
+
isSelected,
|
82
|
+
table,
|
83
|
+
tableRef,
|
84
|
+
texts,
|
85
|
+
toggleSelected
|
86
|
+
}) => {
|
87
|
+
const meta = table.options.meta;
|
88
|
+
const handleClick = event => {
|
89
|
+
var _tableRef$current;
|
90
|
+
event.stopPropagation();
|
91
|
+
if (event.shiftKey) {
|
92
|
+
const [fromIndex, toIndex] = toggleBetween((lastSelectedRowIndex === null || lastSelectedRowIndex === void 0 ? void 0 : lastSelectedRowIndex.current) || 0, rowIndex);
|
93
|
+
table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
|
94
|
+
} else {
|
95
|
+
toggleSelected();
|
96
|
+
}
|
97
|
+
lastSelectedRowIndex.current = rowIndex;
|
98
|
+
meta.setActiveRowIndex(rowIndex);
|
99
|
+
(_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.focus();
|
100
|
+
};
|
101
|
+
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
102
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isSelected ? texts.table2.columns.select.deselect : texts.table2.columns.select.select, /*#__PURE__*/React__default.createElement(Shortcut, {
|
103
|
+
className: "ml-2",
|
104
|
+
keys: "Space"
|
105
|
+
}))
|
106
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
107
|
+
"aria-label": isSelected ? texts.table2.columns.select.select : texts.table2.columns.select.deselect,
|
108
|
+
className: "hover:border-blue !mt-0",
|
109
|
+
checked: isSelected,
|
110
|
+
onClick: handleClick,
|
111
|
+
// this is necessary to remove console spam from eslint
|
112
|
+
onChange: () => false,
|
113
|
+
tabIndex: -1
|
114
|
+
}));
|
115
|
+
});
|
116
|
+
function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowIndex, onRowDrag, tableRef, texts) {
|
117
|
+
let header;
|
118
|
+
let cell;
|
119
|
+
if (enableMultipleRowSelection) {
|
120
|
+
header = ({
|
121
|
+
table
|
122
|
+
}) => /*#__PURE__*/React__default.createElement(Tooltip, {
|
123
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? texts.table2.columns.select.deselectAll : texts.table2.columns.select.selectAll, /*#__PURE__*/React__default.createElement(Shortcut, {
|
124
|
+
className: "ml-2",
|
125
|
+
keys: {
|
126
|
+
key: 'a',
|
127
|
+
meta: true
|
128
|
+
}
|
129
|
+
}))
|
130
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
131
|
+
"aria-label": table.getIsAllPageRowsSelected() ? texts.table2.columns.select.deselectAll : texts.table2.columns.select.selectAll,
|
132
|
+
className: "hover:border-blue !mt-0",
|
133
|
+
checked: table.getIsAllPageRowsSelected(),
|
134
|
+
indeterminate: table.getIsSomePageRowsSelected(),
|
135
|
+
onChange: checked => table.toggleAllPageRowsSelected(checked),
|
136
|
+
onClick: () => {
|
137
|
+
var _tableRef$current2;
|
138
|
+
(_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.focus();
|
139
|
+
},
|
140
|
+
tabIndex: -1
|
141
|
+
}));
|
142
|
+
cell = ({
|
143
|
+
row,
|
144
|
+
table
|
145
|
+
}) => /*#__PURE__*/React__default.createElement(SelectCell, {
|
146
|
+
lastSelectedRowIndex: lastSelectedRowIndex,
|
147
|
+
rowIndex: row.index,
|
148
|
+
isSelected: row.getIsSelected(),
|
149
|
+
table: table,
|
150
|
+
tableRef: tableRef,
|
151
|
+
texts: texts,
|
152
|
+
toggleSelected: row.toggleSelected
|
153
|
+
});
|
154
|
+
} else {
|
155
|
+
cell = ({
|
156
|
+
row,
|
157
|
+
table
|
158
|
+
}) => {
|
159
|
+
const meta = table.options.meta;
|
160
|
+
const className = 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';
|
161
|
+
const handleClick = event => {
|
162
|
+
var _tableRef$current3;
|
163
|
+
event.stopPropagation();
|
164
|
+
row.toggleSelected();
|
165
|
+
meta.setActiveRowIndex(row.index);
|
166
|
+
(_tableRef$current3 = tableRef.current) === null || _tableRef$current3 === void 0 ? void 0 : _tableRef$current3.focus();
|
167
|
+
};
|
168
|
+
return /*#__PURE__*/React__default.createElement("button", {
|
169
|
+
className: className,
|
170
|
+
"aria-checked": row.getIsSelected(),
|
171
|
+
onClick: handleClick,
|
172
|
+
role: "radio",
|
173
|
+
tabIndex: -1,
|
174
|
+
type: "button"
|
175
|
+
}, row.getIsSelected() ? /*#__PURE__*/React__default.createElement("span", {
|
176
|
+
className: "h-2.5 w-2.5 rounded-full bg-white"
|
177
|
+
}) : null);
|
178
|
+
};
|
179
|
+
}
|
180
|
+
return {
|
181
|
+
id: COLUMN_ID_FOR_SELECTION,
|
182
|
+
header,
|
183
|
+
cell,
|
184
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
185
|
+
meta: {
|
186
|
+
align: 'center',
|
187
|
+
className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',
|
188
|
+
headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3'
|
189
|
+
},
|
190
|
+
// sizing
|
191
|
+
enableResizing: false,
|
192
|
+
size: 46
|
193
|
+
};
|
194
|
+
}
|
195
|
+
const ExpandCell = /*#__PURE__*/React__default.memo(({
|
196
|
+
expandedRowRenderer,
|
197
|
+
isExpanded,
|
198
|
+
row,
|
199
|
+
texts
|
200
|
+
}) => {
|
201
|
+
const hasExpandedRow = expandedRowRenderer(row.original);
|
202
|
+
if (!hasExpandedRow) {
|
203
|
+
return null;
|
204
|
+
}
|
205
|
+
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
206
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isExpanded ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand, /*#__PURE__*/React__default.createElement(Shortcut, {
|
207
|
+
className: "ml-2",
|
208
|
+
keys: {
|
209
|
+
key: isExpanded ? 'ArrowLeft' : 'ArrowRight',
|
210
|
+
meta: true
|
211
|
+
}
|
212
|
+
}))
|
213
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
214
|
+
appearance: "discrete",
|
215
|
+
icon: isExpanded ? 'chevron-down' : 'chevron-right',
|
216
|
+
onClick: event => {
|
217
|
+
event.stopPropagation();
|
218
|
+
row.toggleExpanded();
|
219
|
+
},
|
220
|
+
tabIndex: -1
|
221
|
+
}));
|
222
|
+
});
|
223
|
+
function createRowExpansionColumn(expandedRowRenderer, texts) {
|
224
|
+
return {
|
225
|
+
id: COLUMN_ID_FOR_EXPANSION,
|
226
|
+
header: ({
|
227
|
+
table
|
228
|
+
}) => /*#__PURE__*/React__default.createElement(Tooltip, {
|
229
|
+
title: table.getIsSomeRowsExpanded() ? texts.table2.columns.expansion.collapseAll : texts.table2.columns.expansion.expandAll
|
230
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
231
|
+
appearance: "discrete",
|
232
|
+
className: "-mb-2 -mt-1.5",
|
233
|
+
icon: table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double',
|
234
|
+
onClick: event => {
|
235
|
+
event.stopPropagation();
|
236
|
+
table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);
|
237
|
+
},
|
238
|
+
tabIndex: -1
|
239
|
+
})),
|
240
|
+
cell: ({
|
241
|
+
row
|
242
|
+
}) =>
|
243
|
+
/*#__PURE__*/
|
244
|
+
// ExpandCell is memoised and that's why calling row.getIsExpanded() inside it doesn't return the correct
|
245
|
+
// expand state. This is the reason why isExpanded is pulled out of the ExpandCell component.
|
246
|
+
React__default.createElement(ExpandCell, {
|
247
|
+
expandedRowRenderer: expandedRowRenderer,
|
248
|
+
isExpanded: row.getIsExpanded(),
|
249
|
+
row: row,
|
250
|
+
texts: texts
|
251
|
+
}),
|
252
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
253
|
+
meta: {
|
254
|
+
align: 'center',
|
255
|
+
className: 'items-center !p-0',
|
256
|
+
headerClassName: 'items-center hover:!bg-white !p-0'
|
257
|
+
},
|
258
|
+
// sizing
|
259
|
+
enableResizing: false,
|
260
|
+
size: 36
|
261
|
+
};
|
262
|
+
}
|
263
|
+
const RowActionsCell = /*#__PURE__*/React__default.memo(({
|
264
|
+
row,
|
265
|
+
actions,
|
266
|
+
actionsLength,
|
267
|
+
isEditing,
|
268
|
+
shouldPauseHoverState,
|
269
|
+
table,
|
270
|
+
texts
|
271
|
+
}) => {
|
272
|
+
const {
|
273
|
+
isActive,
|
274
|
+
isHovered
|
275
|
+
} = useRowContext();
|
276
|
+
if (!isActive && (!isHovered || shouldPauseHoverState) || isEditing) {
|
277
|
+
return null;
|
278
|
+
}
|
279
|
+
const visibleActions = actions.map(action => action(row.original)).filter(action => !!action);
|
280
|
+
const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);
|
281
|
+
const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);
|
282
|
+
// If the row is not the active row or the hovered row then actions are hidden.
|
283
|
+
const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';
|
284
|
+
// only actions in the active row should be tabbable
|
285
|
+
const tabIndex = table.options.meta.activeRowIndex === row.index ? 0 : -1;
|
286
|
+
return /*#__PURE__*/React__default.createElement("span", {
|
287
|
+
className: "-mb-2 -mt-2 flex justify-end text-right"
|
288
|
+
}, actionsOnRow.map((button, index) => {
|
289
|
+
var _button$props$tooltip, _button$props$tooltip2;
|
290
|
+
return /*#__PURE__*/React__default.cloneElement(button, {
|
291
|
+
appearance: 'discrete',
|
292
|
+
className: cn(actionClassName, button.props.className),
|
293
|
+
key: index,
|
294
|
+
tabIndex,
|
295
|
+
tooltip: button.props.shortcut ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, (_button$props$tooltip = button.props.tooltip) !== null && _button$props$tooltip !== void 0 ? _button$props$tooltip : button.props['aria-label'], /*#__PURE__*/React__default.createElement(Shortcut, {
|
296
|
+
className: "ml-2",
|
297
|
+
keys: button.props.shortcut
|
298
|
+
})) : (_button$props$tooltip2 = button.props.tooltip) !== null && _button$props$tooltip2 !== void 0 ? _button$props$tooltip2 : button.props['aria-label']
|
299
|
+
});
|
300
|
+
}), actionsInMenu.length ? /*#__PURE__*/React__default.createElement(IconButton, {
|
301
|
+
appearance: "discrete",
|
302
|
+
"aria-label": texts.table2.columns.actions.tooltip,
|
303
|
+
icon: "more",
|
304
|
+
tabIndex: tabIndex,
|
305
|
+
menu: menuProps => /*#__PURE__*/React__default.createElement(Menu, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu.Content, null, actionsInMenu.map((action, i) => /*#__PURE__*/React__default.createElement(Menu.Item, Object.assign({
|
306
|
+
key: i
|
307
|
+
}, action.props, {
|
308
|
+
shortcut: action.props.shortcut
|
309
|
+
}), action.props['aria-label'])))),
|
310
|
+
tooltip: texts.table2.columns.actions.tooltip
|
311
|
+
}) : null);
|
312
|
+
});
|
313
|
+
function createRowActionsColumn(rowActions, rowActionsLength, texts) {
|
314
|
+
return {
|
315
|
+
id: COLUMN_ID_FOR_ACTIONS,
|
316
|
+
cell: ({
|
317
|
+
row,
|
318
|
+
table
|
319
|
+
}) => {
|
320
|
+
var _table$options$meta, _table$options$meta2;
|
321
|
+
return /*#__PURE__*/React__default.createElement(RowActionsCell, {
|
322
|
+
row: row,
|
323
|
+
actions: rowActions,
|
324
|
+
actionsLength: rowActionsLength,
|
325
|
+
texts: texts,
|
326
|
+
table: table,
|
327
|
+
isEditing: !!((_table$options$meta = table.options.meta) !== null && _table$options$meta !== void 0 && _table$options$meta.editMode.isEditing),
|
328
|
+
shouldPauseHoverState: !!((_table$options$meta2 = table.options.meta) !== null && _table$options$meta2 !== void 0 && _table$options$meta2.shouldPauseHoverState)
|
329
|
+
});
|
330
|
+
},
|
331
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
332
|
+
meta: {
|
333
|
+
align: 'right',
|
334
|
+
className: (row, table) => {
|
335
|
+
var _table$options$meta3;
|
336
|
+
return (
|
337
|
+
// Adding z-index so that it shows on top of frozen columns
|
338
|
+
cn('items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 !px-1 z-[1]', {
|
339
|
+
'group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.200)]': !row.getIsSelected(),
|
340
|
+
'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]': !row.getIsSelected() && (!((_table$options$meta3 = table.options.meta) !== null && _table$options$meta3 !== void 0 && _table$options$meta3.shouldPauseHoverState) || table.options.meta.editMode.isEditing),
|
341
|
+
'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected()
|
342
|
+
})
|
343
|
+
);
|
344
|
+
},
|
345
|
+
headerClassName: 'hover:!bg-white !px-1'
|
346
|
+
},
|
347
|
+
// sizing
|
348
|
+
enableResizing: false
|
349
|
+
};
|
350
|
+
}
|
351
|
+
function ensureOrdering(columns, settingsOrder) {
|
352
|
+
// internal column come with a defined order
|
353
|
+
const internalColumns = columns.filter(column => {
|
354
|
+
var _column$id;
|
355
|
+
return ((_column$id = column.id) === null || _column$id === void 0 ? void 0 : _column$id.startsWith('__')) && column.id !== COLUMN_ID_FOR_ACTIONS;
|
356
|
+
}).map(column => column.id);
|
357
|
+
// columns with ordering disabled should be moved to the front
|
358
|
+
const orderingDisabled = [];
|
359
|
+
const orderingEnabled = [];
|
360
|
+
let orderedColumns = columns;
|
361
|
+
// if settings is defined, make sure the columns that are actual children are sorted by it
|
362
|
+
if (Array.isArray(settingsOrder)) {
|
363
|
+
orderedColumns = columns.slice().sort(
|
364
|
+
// the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end
|
365
|
+
(a, b) => (settingsOrder.indexOf(a.id) >>> 0) - (settingsOrder.indexOf(b.id) >>> 0));
|
366
|
+
}
|
367
|
+
orderedColumns.forEach(column => {
|
368
|
+
var _column$id2, _column$meta;
|
369
|
+
if ((_column$id2 = column.id) !== null && _column$id2 !== void 0 && _column$id2.startsWith('__')) {
|
370
|
+
return;
|
371
|
+
}
|
372
|
+
if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.disableReordering) {
|
373
|
+
orderingDisabled.push(column.id);
|
374
|
+
} else {
|
375
|
+
orderingEnabled.push(column.id);
|
376
|
+
}
|
377
|
+
});
|
378
|
+
const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
|
379
|
+
// actions should always be last, enforce that
|
380
|
+
if (columns.findIndex(column => column.id === COLUMN_ID_FOR_ACTIONS) > -1) {
|
381
|
+
order.push(COLUMN_ID_FOR_ACTIONS);
|
382
|
+
}
|
383
|
+
return order;
|
384
|
+
}
|
385
|
+
|
386
|
+
export { COLUMN_ID_FOR_ACTIONS, COLUMN_ID_FOR_DRAGGABLE, COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION, MIN_COLUMN_SIZE, createRowActionsColumn, createRowDraggableColumn, createRowExpansionColumn, createRowSelectionColumn, ensureOrdering, isInternalColumn, isInternalFrozenColumn };
|
387
|
+
//# sourceMappingURL=columns.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"columns.js","sources":["../../../../../../../../src/components/Table2/utilities/columns.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { CellContext, ColumnDef, DisplayColumnDef, Row, TableMeta } from '@tanstack/react-table';\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { RowDragHandler, RowExpansionRenderer } from '../types';\nimport { Menu } from '../../Menu/Menu';\nimport { Icon } from '../../Icon/Icon';\nimport { LocalizationTexts } from '../../Provider/Localization';\nimport { useRowContext } from '../components/row/Context';\n\nexport const COLUMN_ID_FOR_DRAGGABLE = '__draggable';\nexport const COLUMN_ID_FOR_SELECTION = '__select';\nexport const COLUMN_ID_FOR_EXPANSION = '__expansion';\nexport const COLUMN_ID_FOR_ACTIONS = '__actions';\n\nexport const isInternalFrozenColumn = (id: string) => isInternalColumn(id) && id !== COLUMN_ID_FOR_ACTIONS;\n\nexport const isInternalColumn = (id: string) =>\n id === COLUMN_ID_FOR_SELECTION ||\n id === COLUMN_ID_FOR_EXPANSION ||\n id === COLUMN_ID_FOR_ACTIONS ||\n id === COLUMN_ID_FOR_DRAGGABLE;\n\nexport const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nexport function createRowDraggableColumn<TType = any>(\n onRowDrag: RowDragHandler<TType>,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_DRAGGABLE,\n cell: ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n const onDragStart = (event: React.DragEvent): void => {\n const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n\n meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {}));\n\n const data = rows.map(row => row.original);\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n onRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n meta.setDragging({});\n };\n\n return (\n <div draggable onDragStart={onDragStart} onDragEnd={onDragEnd}>\n <Icon\n aria-label={texts.table2.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white\"\n />\n </div>\n );\n },\n footer: () => <span />,\n meta: {\n align: 'center',\n className: 'items-center !px-0',\n headerClassName: 'items-center !px-0',\n },\n // sizing\n enableResizing: false,\n size: 10,\n };\n}\n\nconst SelectCell = React.memo(({ lastSelectedRowIndex, rowIndex, isSelected, table, tableRef, texts, toggleSelected }: any) => {\n const meta = table.options.meta as TableMeta<any>;\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedRowIndex?.current || 0, rowIndex);\n\n table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n toggleSelected();\n }\n\n lastSelectedRowIndex.current = rowIndex;\n meta.setActiveRowIndex(rowIndex);\n tableRef.current?.focus();\n };\n\n return (\n <Tooltip\n title={\n <>\n {isSelected ? texts.table2.columns.select.deselect : texts.table2.columns.select.select}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={isSelected ? texts.table2.columns.select.select : texts.table2.columns.select.deselect}\n className=\"hover:border-blue !mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={-1}\n />\n </Tooltip>\n );\n});\nexport function createRowSelectionColumn<TType = any>(\n enableMultipleRowSelection: boolean,\n lastSelectedRowIndex: React.MutableRefObject<number | undefined>,\n onRowDrag: RowDragHandler<TType> | undefined,\n tableRef: React.RefObject<HTMLDivElement>,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n let header;\n let cell;\n\n if (enableMultipleRowSelection) {\n header = ({ table }) => (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected()\n ? texts.table2.columns.select.deselectAll\n : texts.table2.columns.select.selectAll}\n <Shortcut className=\"ml-2\" keys={{ key: 'a', meta: true }} />\n </>\n }>\n <Checkbox\n aria-label={\n table.getIsAllPageRowsSelected()\n ? texts.table2.columns.select.deselectAll\n : texts.table2.columns.select.selectAll\n }\n className=\"hover:border-blue !mt-0\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={checked => table.toggleAllPageRowsSelected(checked)}\n onClick={() => {\n tableRef.current?.focus();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n );\n cell = ({ row, table }) => (\n <SelectCell\n lastSelectedRowIndex={lastSelectedRowIndex}\n rowIndex={row.index}\n isSelected={row.getIsSelected()}\n table={table}\n tableRef={tableRef}\n texts={texts}\n toggleSelected={row.toggleSelected}\n />\n );\n } else {\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const className =\n 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n row.toggleSelected();\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <button\n className={className}\n aria-checked={row.getIsSelected()}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {row.getIsSelected() ? <span className=\"h-2.5 w-2.5 rounded-full bg-white\" /> : null}\n </button>\n );\n };\n }\n\n return {\n id: COLUMN_ID_FOR_SELECTION,\n header,\n cell,\n footer: () => <span />,\n meta: {\n align: 'center',\n className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n },\n // sizing\n enableResizing: false,\n size: 46,\n };\n}\n\nconst ExpandCell = React.memo(({ expandedRowRenderer, isExpanded, row, texts }: any) => {\n const hasExpandedRow = expandedRowRenderer(row.original);\n\n if (!hasExpandedRow) {\n return null;\n }\n\n return (\n <Tooltip\n title={\n <>\n {isExpanded ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand}\n <Shortcut className=\"ml-2\" keys={{ key: isExpanded ? 'ArrowLeft' : 'ArrowRight', meta: true }} />\n </>\n }>\n <IconButton\n appearance=\"discrete\"\n icon={isExpanded ? 'chevron-down' : 'chevron-right'}\n onClick={event => {\n event.stopPropagation();\n row.toggleExpanded();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n );\n});\n\nexport function createRowExpansionColumn<TType = any>(\n expandedRowRenderer: RowExpansionRenderer<TType>,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_EXPANSION,\n header: ({ table }) => (\n <Tooltip\n title={\n table.getIsSomeRowsExpanded()\n ? texts.table2.columns.expansion.collapseAll\n : texts.table2.columns.expansion.expandAll\n }>\n <IconButton\n appearance=\"discrete\"\n className=\"-mb-2 -mt-1.5\"\n icon={table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={event => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n cell: ({ row }: CellContext<TType, any>) => (\n // ExpandCell is memoised and that's why calling row.getIsExpanded() inside it doesn't return the correct\n // expand state. This is the reason why isExpanded is pulled out of the ExpandCell component.\n <ExpandCell expandedRowRenderer={expandedRowRenderer} isExpanded={row.getIsExpanded()} row={row} texts={texts} />\n ),\n footer: () => <span />,\n meta: {\n align: 'center',\n className: 'items-center !p-0',\n headerClassName: 'items-center hover:!bg-white !p-0',\n },\n // sizing\n enableResizing: false,\n size: 36,\n };\n}\n\nconst RowActionsCell = React.memo(({ row, actions, actionsLength, isEditing, shouldPauseHoverState, table, texts }: any) => {\n const { isActive, isHovered } = useRowContext();\n\n if ((!isActive && (!isHovered || shouldPauseHoverState)) || isEditing) {\n return null;\n }\n\n const visibleActions = actions.map(action => action(row.original)).filter(action => !!action);\n\n const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);\n const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);\n\n // If the row is not the active row or the hovered row then actions are hidden.\n const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';\n\n // only actions in the active row should be tabbable\n const tabIndex = table.options.meta.activeRowIndex === row.index ? 0 : -1;\n\n return (\n <span className=\"-mb-2 -mt-2 flex justify-end text-right\">\n {actionsOnRow.map((button, index) =>\n React.cloneElement(button, {\n appearance: 'discrete',\n className: cn(actionClassName, button.props.className),\n key: index,\n tabIndex,\n tooltip: button.props.shortcut ? (\n <>\n {button.props.tooltip ?? button.props['aria-label']}\n <Shortcut className=\"ml-2\" keys={button.props.shortcut} />\n </>\n ) : (\n button.props.tooltip ?? button.props['aria-label']\n ),\n })\n )}\n {actionsInMenu.length ? (\n <IconButton\n appearance=\"discrete\"\n aria-label={texts.table2.columns.actions.tooltip}\n icon=\"more\"\n tabIndex={tabIndex}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content>\n {actionsInMenu.map((action, i) => (\n <Menu.Item key={i} {...action.props} shortcut={action.props.shortcut}>\n {action.props['aria-label']}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu>\n )}\n tooltip={texts.table2.columns.actions.tooltip}\n />\n ) : null}\n </span>\n );\n});\n\nexport function createRowActionsColumn<TType = any>(\n rowActions,\n rowActionsLength,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_ACTIONS,\n cell: ({ row, table }) => (\n <RowActionsCell\n row={row}\n actions={rowActions}\n actionsLength={rowActionsLength}\n texts={texts}\n table={table}\n isEditing={!!table.options.meta?.editMode.isEditing}\n shouldPauseHoverState={!!table.options.meta?.shouldPauseHoverState}\n />\n ),\n footer: () => <span />,\n meta: {\n align: 'right',\n className: (row: Row<any>, table: any) =>\n // Adding z-index so that it shows on top of frozen columns\n cn('items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 !px-1 z-[1]', {\n 'group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.200)]': !row.getIsSelected(),\n 'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]':\n !row.getIsSelected() &&\n (!table.options.meta?.shouldPauseHoverState || table.options.meta.editMode.isEditing),\n 'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected(),\n }),\n headerClassName: 'hover:!bg-white !px-1',\n },\n // sizing\n enableResizing: false,\n };\n}\n\nexport function ensureOrdering<TType = unknown>(columns: ColumnDef<TType>[], settingsOrder: string[] | undefined): string[] {\n // internal column come with a defined order\n const internalColumns = columns\n .filter(column => column.id?.startsWith('__') && column.id !== COLUMN_ID_FOR_ACTIONS)\n .map(column => column.id) as string[];\n\n // columns with ordering disabled should be moved to the front\n const orderingDisabled: string[] = [];\n const orderingEnabled: string[] = [];\n\n let orderedColumns = columns;\n\n // if settings is defined, make sure the columns that are actual children are sorted by it\n if (Array.isArray(settingsOrder)) {\n orderedColumns = columns.slice().sort(\n // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end\n (a, b) => (settingsOrder.indexOf(a.id as string) >>> 0) - (settingsOrder.indexOf(b.id as string) >>> 0)\n );\n }\n\n orderedColumns.forEach(column => {\n if (column.id?.startsWith('__')) {\n return;\n }\n\n if (column.meta?.disableReordering) {\n orderingDisabled.push(column.id as string);\n } else {\n orderingEnabled.push(column.id as string);\n }\n });\n\n const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];\n\n // actions should always be last, enforce that\n if (columns.findIndex(column => column.id === COLUMN_ID_FOR_ACTIONS) > -1) {\n order.push(COLUMN_ID_FOR_ACTIONS);\n }\n\n return order;\n}\n"],"names":["COLUMN_ID_FOR_DRAGGABLE","COLUMN_ID_FOR_SELECTION","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_ACTIONS","isInternalFrozenColumn","id","isInternalColumn","MIN_COLUMN_SIZE","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","createRowDraggableColumn","onRowDrag","texts","cell","row","table","meta","options","GHOST_ELEMENT_ID","onDragStart","event","rows","getIsSelected","getSelectedRowModel","setDragging","reduce","dragging","rowBeingDragged","data","map","original","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","onDragEnd","getElementById","remove","React","draggable","Icon","table2","columns","drag","tooltip","name","footer","align","headerClassName","enableResizing","size","SelectCell","memo","lastSelectedRowIndex","rowIndex","isSelected","tableRef","toggleSelected","handleClick","stopPropagation","shiftKey","current","getRowModel","slice","forEach","setActiveRowIndex","focus","Tooltip","title","select","deselect","Shortcut","keys","Checkbox","checked","onClick","onChange","tabIndex","createRowSelectionColumn","enableMultipleRowSelection","header","getIsAllPageRowsSelected","deselectAll","selectAll","key","indeterminate","getIsSomePageRowsSelected","toggleAllPageRowsSelected","index","role","type","ExpandCell","expandedRowRenderer","isExpanded","hasExpandedRow","expansion","collapse","expand","IconButton","appearance","icon","toggleExpanded","createRowExpansionColumn","getIsSomeRowsExpanded","collapseAll","expandAll","toggleAllRowsExpanded","getIsExpanded","RowActionsCell","actions","actionsLength","isEditing","shouldPauseHoverState","isActive","isHovered","useRowContext","visibleActions","action","filter","actionsOnRow","length","actionsInMenu","actionClassName","activeRowIndex","button","cloneElement","cn","props","shortcut","menu","menuProps","Menu","Content","i","Item","createRowActionsColumn","rowActions","rowActionsLength","editMode","ensureOrdering","settingsOrder","internalColumns","column","startsWith","orderingDisabled","orderingEnabled","orderedColumns","Array","isArray","sort","a","b","indexOf","disableReordering","push","order","findIndex"],"mappings":"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"}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import { isDate, isBefore, isAfter } from 'date-fns';
|
2
|
+
import { isWeakEqual as isWeakEqual$1 } from '../../../utils/date.js';
|
3
|
+
import { Table2FilterComparator } from '../types.js';
|
4
|
+
|
5
|
+
const toLowerCase = value => String(value !== null && value !== void 0 ? value : '').toLocaleLowerCase();
|
6
|
+
const isWeakContains = (left, right) => toLowerCase(left).includes(toLowerCase(right));
|
7
|
+
const isWeakEqual = (left, right) => toLowerCase(left) === toLowerCase(right);
|
8
|
+
const globalFilterFn = (value, query) => isWeakContains(value, query);
|
9
|
+
// the filter type is only settable on the column definition, which would re-render all columns
|
10
|
+
// so instead we store it in the filter value, but that means we also have to destructure that
|
11
|
+
// before we filter - that's why this custom filter function exists
|
12
|
+
const columnFilterFn = (value, filter) => {
|
13
|
+
try {
|
14
|
+
if (filter.comparator === Table2FilterComparator.IsEmpty || filter.comparator === Table2FilterComparator.IsNotEmpty) {
|
15
|
+
const isEmpty = value === undefined || value === null || value === '';
|
16
|
+
return filter.comparator === Table2FilterComparator.IsEmpty ? isEmpty : !isEmpty;
|
17
|
+
}
|
18
|
+
if (filter.value === undefined || filter.value === null || filter.value === '') {
|
19
|
+
return true;
|
20
|
+
}
|
21
|
+
switch (filter.comparator) {
|
22
|
+
case Table2FilterComparator.Contains:
|
23
|
+
return isWeakContains(value, filter.value);
|
24
|
+
case Table2FilterComparator.DoesNotContain:
|
25
|
+
return !isWeakContains(value, filter.value);
|
26
|
+
case Table2FilterComparator.IsEqualTo:
|
27
|
+
{
|
28
|
+
if (isDate(value)) {
|
29
|
+
return isDate(filter.value) && isWeakEqual$1(value, filter.value);
|
30
|
+
} else if (typeof filter.value === 'boolean') {
|
31
|
+
return value === filter.value;
|
32
|
+
}
|
33
|
+
return isWeakEqual(value, filter.value);
|
34
|
+
}
|
35
|
+
case Table2FilterComparator.IsNotEqualTo:
|
36
|
+
{
|
37
|
+
if (isDate(value)) {
|
38
|
+
return isDate(filter.value) && isWeakEqual$1(value, filter.value) === false;
|
39
|
+
} else if (typeof filter.value === 'boolean') {
|
40
|
+
return value !== filter.value;
|
41
|
+
}
|
42
|
+
return !isWeakEqual(value, filter.value);
|
43
|
+
}
|
44
|
+
case Table2FilterComparator.IsGreaterThan:
|
45
|
+
{
|
46
|
+
if (isDate(value)) {
|
47
|
+
return isDate(filter.value) && isAfter(value, filter.value);
|
48
|
+
} else {
|
49
|
+
const valueAsNumber = parseInt(value);
|
50
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
case Table2FilterComparator.IsLessThan:
|
54
|
+
{
|
55
|
+
if (isDate(value)) {
|
56
|
+
return isDate(filter.value) && isBefore(value, filter.value);
|
57
|
+
} else {
|
58
|
+
const valueAsNumber = parseInt(value);
|
59
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
case Table2FilterComparator.IsBetween:
|
63
|
+
{
|
64
|
+
const [fromValue, toValue] = filter.value;
|
65
|
+
if (isDate(value)) {
|
66
|
+
if (isDate(fromValue) && isBefore(value, fromValue)) {
|
67
|
+
return false;
|
68
|
+
} else if (isDate(toValue) && isAfter(value, toValue)) {
|
69
|
+
return false;
|
70
|
+
}
|
71
|
+
return true;
|
72
|
+
} else {
|
73
|
+
const valueAsNumber = parseInt(value);
|
74
|
+
if (isNaN(valueAsNumber)) {
|
75
|
+
return false;
|
76
|
+
}
|
77
|
+
if (fromValue !== undefined && valueAsNumber < fromValue) {
|
78
|
+
return false;
|
79
|
+
} else if (toValue !== undefined && valueAsNumber > toValue) {
|
80
|
+
return false;
|
81
|
+
}
|
82
|
+
return true;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
case Table2FilterComparator.IsOneOf:
|
86
|
+
return Array.isArray(filter.value) ? filter.value.includes(value) : false;
|
87
|
+
case Table2FilterComparator.IsNoneOf:
|
88
|
+
return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;
|
89
|
+
case Table2FilterComparator.IsAllOf:
|
90
|
+
return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.filter(v => value.includes(v)).length === filter.value.length : false;
|
91
|
+
}
|
92
|
+
return false;
|
93
|
+
} catch (e) {
|
94
|
+
console.error(e);
|
95
|
+
return true;
|
96
|
+
}
|
97
|
+
};
|
98
|
+
|
99
|
+
export { columnFilterFn, globalFilterFn };
|
100
|
+
//# sourceMappingURL=filterFn.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"filterFn.js","sources":["../../../../../../../../src/components/Table2/utilities/filterFn.ts"],"sourcesContent":["import { isDate, isAfter as isAfterDate, isBefore as isBeforeDate } from 'date-fns';\nimport { Table2Filter, Table2FilterComparator } from '../types';\nimport { isWeakEqual as isWeakEqualDate } from '../../../utils/date';\n\nconst toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nconst isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nconst isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\nexport const globalFilterFn = (value: string, query: string) => isWeakContains(value, query);\n\n// the filter type is only settable on the column definition, which would re-render all columns\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport const columnFilterFn = (value: any, filter: Table2Filter) => {\n try {\n if (filter.comparator === Table2FilterComparator.IsEmpty || filter.comparator === Table2FilterComparator.IsNotEmpty) {\n const isEmpty = value === undefined || value === null || value === '';\n return filter.comparator === Table2FilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case Table2FilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case Table2FilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case Table2FilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case Table2FilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case Table2FilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case Table2FilterComparator.IsOneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) : false;\n\n case Table2FilterComparator.IsNoneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;\n\n case Table2FilterComparator.IsAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n};\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","globalFilterFn","query","columnFilterFn","filter","comparator","Table2FilterComparator","IsEmpty","IsNotEmpty","isEmpty","undefined","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsBetween","fromValue","toValue","IsOneOf","Array","isArray","IsNoneOf","IsAllOf","v","length","e","console","error"],"mappings":"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"}
|
@@ -11,7 +11,7 @@ import { Toolbar } from './components/toolbar/Toolbar.js';
|
|
11
11
|
import { useTableRefInstanceSetup } from './hooks/useTableRefInstanceSetup.js';
|
12
12
|
import { Summary } from './components/columns/footer/Summary.js';
|
13
13
|
import { useCssVars } from './hooks/useCssVars.js';
|
14
|
-
export {
|
14
|
+
export { useTable3DataLoader } from './hooks/useTableDataLoader.js';
|
15
15
|
|
16
16
|
function Column(_) {
|
17
17
|
return null;
|