@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,39 @@
|
|
1
|
+
import { isDate } from 'date-fns';
|
2
|
+
import { isWeakEqual } from '../../../../utils/date.js';
|
3
|
+
|
4
|
+
const hasChanged = (value, newValue) => {
|
5
|
+
if (isDate(value) && isDate(newValue)) {
|
6
|
+
return !isWeakEqual(value, newValue);
|
7
|
+
} else if (Array.isArray(value)) {
|
8
|
+
return JSON.stringify(value) !== JSON.stringify(newValue);
|
9
|
+
}
|
10
|
+
return value !== newValue;
|
11
|
+
};
|
12
|
+
const willRowMoveAfterSorting = (value, cell, rowIndex, rows, desc) => {
|
13
|
+
const miniSortRows = [{
|
14
|
+
...cell.row,
|
15
|
+
original: {
|
16
|
+
...cell.row.original,
|
17
|
+
[cell.column.id]: value
|
18
|
+
}
|
19
|
+
}];
|
20
|
+
// getValue is used by the built-in sort functons, so we need to make sure it returns the changed value
|
21
|
+
miniSortRows[0].getValue = () => value;
|
22
|
+
let index = 0;
|
23
|
+
if (rowIndex > 0) {
|
24
|
+
miniSortRows.unshift(rows[rowIndex - 1]);
|
25
|
+
index = 1;
|
26
|
+
}
|
27
|
+
if (rowIndex < rows.length - 1) {
|
28
|
+
miniSortRows.push(rows[rowIndex + 1]);
|
29
|
+
}
|
30
|
+
let resortedRows = [...miniSortRows].sort((a, b) => cell.column.getSortingFn()(a, b, cell.column.id));
|
31
|
+
if (desc) {
|
32
|
+
resortedRows = resortedRows.reverse();
|
33
|
+
}
|
34
|
+
return resortedRows[index].id !== cell.row.id;
|
35
|
+
};
|
36
|
+
const clickableNodeNames = ['INPUT', 'BUTTON', 'A', 'SELECT', 'OPTION', 'LABEL', 'TEXTAREA', 'DETAILS'];
|
37
|
+
|
38
|
+
export { clickableNodeNames, hasChanged, willRowMoveAfterSorting };
|
39
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../../../src/components/Table2/components/column/utils.ts"],"sourcesContent":["import { isDate } from 'date-fns';\n\nimport { isWeakEqual as isWeakEqualDate } from '../../../../utils/date';\n\nexport const hasChanged = (value, newValue) => {\n if (isDate(value) && isDate(newValue)) {\n return !isWeakEqualDate(value, newValue);\n } else if (Array.isArray(value)) {\n return JSON.stringify(value) !== JSON.stringify(newValue);\n }\n\n return value !== newValue;\n};\n\nexport const willRowMoveAfterSorting = (value, cell, rowIndex, rows, desc): boolean => {\n const miniSortRows = [{ ...cell.row, original: { ...cell.row.original, [cell.column.id]: value } }];\n // getValue is used by the built-in sort functons, so we need to make sure it returns the changed value\n miniSortRows[0].getValue = () => value;\n\n let index = 0;\n\n if (rowIndex > 0) {\n miniSortRows.unshift(rows[rowIndex - 1]);\n index = 1;\n }\n\n if (rowIndex < rows.length - 1) {\n miniSortRows.push(rows[rowIndex + 1]);\n }\n\n let resortedRows = [...miniSortRows].sort((a, b) => cell.column.getSortingFn()(a, b, cell.column.id));\n\n if (desc) {\n resortedRows = resortedRows.reverse();\n }\n\n return resortedRows[index].id !== cell.row.id;\n};\n\nexport const clickableNodeNames = ['INPUT', 'BUTTON', 'A', 'SELECT', 'OPTION', 'LABEL', 'TEXTAREA', 'DETAILS'];\n"],"names":["hasChanged","value","newValue","isDate","isWeakEqualDate","Array","isArray","JSON","stringify","willRowMoveAfterSorting","cell","rowIndex","rows","desc","miniSortRows","row","original","column","id","getValue","index","unshift","length","push","resortedRows","sort","a","b","getSortingFn","reverse","clickableNodeNames"],"mappings":";;;MAIaA,UAAU,GAAG,CAACC,KAAK,EAAEC,QAAQ;EACtC,IAAIC,MAAM,CAACF,KAAK,CAAC,IAAIE,MAAM,CAACD,QAAQ,CAAC,EAAE;IACnC,OAAO,CAACE,WAAe,CAACH,KAAK,EAAEC,QAAQ,CAAC;GAC3C,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,EAAE;IAC7B,OAAOM,IAAI,CAACC,SAAS,CAACP,KAAK,CAAC,KAAKM,IAAI,CAACC,SAAS,CAACN,QAAQ,CAAC;;EAG7D,OAAOD,KAAK,KAAKC,QAAQ;AAC7B;MAEaO,uBAAuB,GAAG,CAACR,KAAK,EAAES,IAAI,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,IAAI;EACrE,MAAMC,YAAY,GAAG,CAAC;IAAE,GAAGJ,IAAI,CAACK,GAAG;IAAEC,QAAQ,EAAE;MAAE,GAAGN,IAAI,CAACK,GAAG,CAACC,QAAQ;MAAE,CAACN,IAAI,CAACO,MAAM,CAACC,EAAE,GAAGjB;;GAAS,CAAC;;EAEnGa,YAAY,CAAC,CAAC,CAAC,CAACK,QAAQ,GAAG,MAAMlB,KAAK;EAEtC,IAAImB,KAAK,GAAG,CAAC;EAEb,IAAIT,QAAQ,GAAG,CAAC,EAAE;IACdG,YAAY,CAACO,OAAO,CAACT,IAAI,CAACD,QAAQ,GAAG,CAAC,CAAC,CAAC;IACxCS,KAAK,GAAG,CAAC;;EAGb,IAAIT,QAAQ,GAAGC,IAAI,CAACU,MAAM,GAAG,CAAC,EAAE;IAC5BR,YAAY,CAACS,IAAI,CAACX,IAAI,CAACD,QAAQ,GAAG,CAAC,CAAC,CAAC;;EAGzC,IAAIa,YAAY,GAAG,CAAC,GAAGV,YAAY,CAAC,CAACW,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKjB,IAAI,CAACO,MAAM,CAACW,YAAY,EAAE,CAACF,CAAC,EAAEC,CAAC,EAAEjB,IAAI,CAACO,MAAM,CAACC,EAAE,CAAC,CAAC;EAErG,IAAIL,IAAI,EAAE;IACNW,YAAY,GAAGA,YAAY,CAACK,OAAO,EAAE;;EAGzC,OAAOL,YAAY,CAACJ,KAAK,CAAC,CAACF,EAAE,KAAKR,IAAI,CAACK,GAAG,CAACG,EAAE;AACjD;MAEaY,kBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS;;;;"}
|
@@ -0,0 +1,155 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import cn from 'classnames';
|
3
|
+
import { Icon } from '../../../Icon/Icon.js';
|
4
|
+
import { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown.js';
|
5
|
+
import { useLocalization } from '../../../Provider/Localization.js';
|
6
|
+
import { Button } from '../../../Button/Button.js';
|
7
|
+
import { Popover } from '../../../Popover/Popover.js';
|
8
|
+
import { Shortcut } from '../../../Shortcut/Shortcut.js';
|
9
|
+
import { isInternalColumn } from '../../utilities/columns.js';
|
10
|
+
import { Table2FilterComparator } from '../../types.js';
|
11
|
+
import { ColumnFilter } from './components/ColumnFilter.js';
|
12
|
+
import { EmptyFilter } from './components/EmptyFilter.js';
|
13
|
+
|
14
|
+
const FiltersButton = ({
|
15
|
+
length,
|
16
|
+
table
|
17
|
+
}) => {
|
18
|
+
const {
|
19
|
+
texts
|
20
|
+
} = useLocalization();
|
21
|
+
const ref = React__default.useRef(null);
|
22
|
+
const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort((a, b) => {
|
23
|
+
var _a$columnDef, _b$columnDef;
|
24
|
+
return (_a$columnDef = a.columnDef) === null || _a$columnDef === void 0 ? void 0 : _a$columnDef.header.localeCompare((_b$columnDef = b.columnDef) === null || _b$columnDef === void 0 ? void 0 : _b$columnDef.header);
|
25
|
+
});
|
26
|
+
const {
|
27
|
+
shouldDisableTableActions
|
28
|
+
} = table.options.meta;
|
29
|
+
const columnFilters = table.getState().columnFilters;
|
30
|
+
const filteredColumns = columnFilters.reduce((columns, columnFilter) => {
|
31
|
+
const column = allColumns.find(c => c.id === columnFilter.id);
|
32
|
+
if (column) {
|
33
|
+
return [...columns, column];
|
34
|
+
}
|
35
|
+
return columns;
|
36
|
+
}, []);
|
37
|
+
const [emptyFilterCount, setEmptyFilterCount] = React__default.useState(1);
|
38
|
+
const handleAdd = () => setEmptyFilterCount(emptyFilterCount + 1);
|
39
|
+
const handleReset = () => {
|
40
|
+
table.resetColumnFilters();
|
41
|
+
setEmptyFilterCount(1);
|
42
|
+
};
|
43
|
+
useGlobalKeyDown({
|
44
|
+
key: 'f',
|
45
|
+
meta: true,
|
46
|
+
shift: true
|
47
|
+
}, event => {
|
48
|
+
var _ref$current;
|
49
|
+
event.preventDefault();
|
50
|
+
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
|
51
|
+
});
|
52
|
+
const handleEmptyFilterChange = columnId => {
|
53
|
+
// create an actual filter on that column that the user selected
|
54
|
+
const column = allColumns.find(c => c.getCanFilter() && c.id === columnId);
|
55
|
+
if (column) {
|
56
|
+
column.setFilterValue({
|
57
|
+
comparator: undefined,
|
58
|
+
value: undefined
|
59
|
+
});
|
60
|
+
}
|
61
|
+
// hide the empty filter row because we now have a real filter
|
62
|
+
setEmptyFilterCount(emptyFilterCount - 1);
|
63
|
+
};
|
64
|
+
const handleRemove = () => {
|
65
|
+
if (filteredColumns.length === 1 && emptyFilterCount === 0) {
|
66
|
+
setEmptyFilterCount(1);
|
67
|
+
}
|
68
|
+
};
|
69
|
+
const handleRemoveEmptyFilter = () => {
|
70
|
+
setEmptyFilterCount(emptyFilterCount - 1);
|
71
|
+
};
|
72
|
+
const handleOpenChange = () => {
|
73
|
+
const emptyFilterCount = filteredColumns.length === 0 ? 1 : 0;
|
74
|
+
setEmptyFilterCount(emptyFilterCount);
|
75
|
+
};
|
76
|
+
const filters = filteredColumns.length > 0 && filteredColumns.filter(column => {
|
77
|
+
var _column$columnDef$met;
|
78
|
+
const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
|
79
|
+
const value = column.getFilterValue().value;
|
80
|
+
const comparator = column.getFilterValue().comparator;
|
81
|
+
if (Array.isArray(value)) {
|
82
|
+
if (value.length > 0 && value.find(item => item !== undefined)) {
|
83
|
+
return true;
|
84
|
+
}
|
85
|
+
} else if (value) {
|
86
|
+
return true;
|
87
|
+
} else if ([Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty].includes(comparator)) {
|
88
|
+
if (!controlType) {
|
89
|
+
return true;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
return false;
|
93
|
+
});
|
94
|
+
const filtersApplied = filters && filters.length;
|
95
|
+
return /*#__PURE__*/React__default.createElement(Button, {
|
96
|
+
"aria-label": texts.table2.filters.tooltip,
|
97
|
+
appearance: filtersApplied ? 'primary' : 'default',
|
98
|
+
className: cn({
|
99
|
+
'!wcag-blue-100': filtersApplied
|
100
|
+
}),
|
101
|
+
disabled: shouldDisableTableActions,
|
102
|
+
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
|
103
|
+
onChange: handleOpenChange
|
104
|
+
}), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
|
105
|
+
className: "flex w-[40rem] flex-col gap-4"
|
106
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
107
|
+
className: "flex h-8"
|
108
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
109
|
+
className: "flex w-full items-center gap-2"
|
110
|
+
}, /*#__PURE__*/React__default.createElement("h4", {
|
111
|
+
className: "mb-0 inline-flex"
|
112
|
+
}, texts.table2.filters.button), /*#__PURE__*/React__default.createElement("p", {
|
113
|
+
className: "text-grey-700 mb-0 mr-auto mt-px inline-flex"
|
114
|
+
}, texts.table2.filters.total.replace('[CURRENT]', String(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', String(length)))), columnFilters.length || emptyFilterCount > 1 ? /*#__PURE__*/React__default.createElement(Button, {
|
115
|
+
onClick: handleReset
|
116
|
+
}, texts.table2.filters.buttons.clearFilters) : null), /*#__PURE__*/React__default.createElement("div", {
|
117
|
+
className: "flex flex-col gap-2"
|
118
|
+
}, filteredColumns.map((column, index) => /*#__PURE__*/React__default.createElement(ColumnFilter, {
|
119
|
+
key: `${column.id}_${index}`,
|
120
|
+
allColumns: allColumns,
|
121
|
+
index: index,
|
122
|
+
column: column,
|
123
|
+
table: table,
|
124
|
+
onRemove: handleRemove
|
125
|
+
})), [...Array(emptyFilterCount)].map((_, index) => /*#__PURE__*/React__default.createElement(EmptyFilter, {
|
126
|
+
key: `emptyFilter_${index}`,
|
127
|
+
index: index,
|
128
|
+
allColumns: allColumns,
|
129
|
+
table: table,
|
130
|
+
onChange: value => handleEmptyFilterChange(value),
|
131
|
+
emptyFilterCount: emptyFilterCount,
|
132
|
+
filteredColumns: filteredColumns,
|
133
|
+
onRemove: handleRemoveEmptyFilter
|
134
|
+
})), /*#__PURE__*/React__default.createElement("div", {
|
135
|
+
className: "justify-start"
|
136
|
+
}, /*#__PURE__*/React__default.createElement(Button, {
|
137
|
+
appearance: "discrete",
|
138
|
+
onClick: handleAdd
|
139
|
+
}, "+ ", texts.table2.filters.buttons.addNewFilter)))))),
|
140
|
+
ref: ref,
|
141
|
+
tooltip: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table2.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
|
142
|
+
className: "ml-2",
|
143
|
+
keys: {
|
144
|
+
key: 'f',
|
145
|
+
meta: true,
|
146
|
+
shift: true
|
147
|
+
}
|
148
|
+
}))
|
149
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
150
|
+
name: filtersApplied ? 'filter-solid' : 'filter'
|
151
|
+
}), texts.table2.filters.button, " ", filtersApplied ? `(${filtersApplied})` : '');
|
152
|
+
};
|
153
|
+
|
154
|
+
export { FiltersButton };
|
155
|
+
//# sourceMappingURL=FiltersButton.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter, Table2FilterComparator } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { EmptyFilter } from './components/EmptyFilter';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Select2Value } from '../../../Select2/types';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort((a, b) => (a.columnDef?.header as string).localeCompare(b.columnDef?.header as string));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const [emptyFilterCount, setEmptyFilterCount] = React.useState(1);\n\n const handleAdd = () => setEmptyFilterCount(emptyFilterCount + 1);\n\n const handleReset = () => {\n table.resetColumnFilters();\n setEmptyFilterCount(1);\n };\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n const handleEmptyFilterChange = (columnId: Select2Value) => {\n // create an actual filter on that column that the user selected\n const column = allColumns.find(c => c.getCanFilter() && c.id === columnId);\n\n if (column) {\n column.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n\n // hide the empty filter row because we now have a real filter\n setEmptyFilterCount(emptyFilterCount - 1);\n };\n\n const handleRemove = () => {\n if (filteredColumns.length === 1 && emptyFilterCount === 0) {\n setEmptyFilterCount(1);\n }\n };\n\n const handleRemoveEmptyFilter = () => {\n setEmptyFilterCount(emptyFilterCount - 1);\n };\n\n const handleOpenChange = () => {\n const emptyFilterCount = filteredColumns.length === 0 ? 1 : 0;\n setEmptyFilterCount(emptyFilterCount);\n };\n\n const filters =\n filteredColumns.length > 0 &&\n filteredColumns.filter(column => {\n const controlType = column.columnDef.meta?.control;\n const value = (column.getFilterValue() as Table2Filter).value;\n const comparator = (column.getFilterValue() as Table2Filter).comparator;\n\n if (Array.isArray(value)) {\n if (value.length > 0 && value.find(item => item !== undefined)) {\n return true;\n }\n } else if (value) {\n return true;\n } else if ([Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty].includes(comparator as number)) {\n if (!controlType) {\n return true;\n }\n }\n return false;\n });\n const filtersApplied = filters && filters.length;\n\n return (\n <Button\n aria-label={texts.table2.filters.tooltip}\n appearance={filtersApplied ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': filtersApplied,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps} onChange={handleOpenChange}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table2.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table2.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(length))}\n </p>\n </div>\n {columnFilters.length || emptyFilterCount > 1 ? (\n <Button onClick={handleReset}>{texts.table2.filters.buttons.clearFilters}</Button>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n onRemove={handleRemove}\n />\n ))}\n {[...Array(emptyFilterCount)].map((_, index) => (\n <EmptyFilter\n key={`emptyFilter_${index}`}\n index={index}\n allColumns={allColumns}\n table={table}\n onChange={value => handleEmptyFilterChange(value)}\n emptyFilterCount={emptyFilterCount}\n filteredColumns={filteredColumns}\n onRemove={handleRemoveEmptyFilter}\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + {texts.table2.filters.buttons.addNewFilter}\n </Button>\n </div>\n </div>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table2.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={filtersApplied ? 'filter-solid' : 'filter'} />\n {texts.table2.filters.button} {filtersApplied ? `(${filtersApplied})` : ''}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","a","b","columnDef","header","localeCompare","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","emptyFilterCount","setEmptyFilterCount","useState","handleAdd","handleReset","resetColumnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","handleEmptyFilterChange","columnId","getCanFilter","setFilterValue","comparator","undefined","value","handleRemove","handleRemoveEmptyFilter","handleOpenChange","filters","controlType","control","getFilterValue","Array","isArray","item","Table2FilterComparator","IsEmpty","IsNotEmpty","includes","filtersApplied","Button","table2","tooltip","appearance","className","cn","disabled","popover","popoverProps","Popover","onChange","Content","button","total","replace","String","getFilteredRowModel","rows","onClick","buttons","clearFilters","map","index","ColumnFilter","onRemove","_","EmptyFilter","addNewFilter","Shortcut","keys","Icon","name"],"mappings":"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"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { Select2 } from '../../../../Select2/Select2.js';
|
3
|
+
|
4
|
+
const Column = ({
|
5
|
+
allColumns,
|
6
|
+
column,
|
7
|
+
index,
|
8
|
+
table,
|
9
|
+
...props
|
10
|
+
}) => {
|
11
|
+
const handleChange = id => {
|
12
|
+
table.setColumnFilters(currentColumnFilters => {
|
13
|
+
const nextColumnFilters = [...currentColumnFilters];
|
14
|
+
nextColumnFilters[index].id = id;
|
15
|
+
nextColumnFilters[index].value = {};
|
16
|
+
return nextColumnFilters;
|
17
|
+
});
|
18
|
+
};
|
19
|
+
return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, props, {
|
20
|
+
autoFocus: true,
|
21
|
+
onChange: handleChange,
|
22
|
+
value: column.id
|
23
|
+
}), allColumns.map(c => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
24
|
+
key: c.id,
|
25
|
+
disabled: !c.getCanFilter() || c.id !== column.id && !!table.getState().columnFilters.find(f => f.id === c.id),
|
26
|
+
value: c.id
|
27
|
+
}, String(c.columnDef.header))));
|
28
|
+
};
|
29
|
+
|
30
|
+
export { Column };
|
31
|
+
//# sourceMappingURL=Column.js.map
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Column.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/Column.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../Select2/Select2';\nimport { Table2Filter } from '../../../types';\n\ntype ColumnProps = Omit<Select2Props, 'children'> & {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n};\n\nexport const Column = ({ allColumns, column, index, table, ...props }: ColumnProps) => {\n const handleChange = id => {\n table.setColumnFilters(currentColumnFilters => {\n const nextColumnFilters = [...currentColumnFilters];\n nextColumnFilters[index].id = id;\n (nextColumnFilters[index] as Table2Filter).value = {};\n return nextColumnFilters;\n });\n };\n\n return (\n <Select2 {...props} autoFocus onChange={handleChange} value={column.id}>\n {allColumns.map(c => (\n <Select2.Option\n key={c.id}\n disabled={\n !c.getCanFilter() || (c.id !== column.id && !!table.getState().columnFilters.find(f => f.id === c.id))\n }\n value={c.id}>\n {String(c.columnDef.header)}\n </Select2.Option>\n ))}\n </Select2>\n );\n};\n"],"names":["Column","allColumns","column","index","table","props","handleChange","id","setColumnFilters","currentColumnFilters","nextColumnFilters","value","React","Select2","autoFocus","onChange","map","c","Option","key","disabled","getCanFilter","getState","columnFilters","find","f","String","columnDef","header"],"mappings":";;;MAYaA,MAAM,GAAG,CAAC;EAAEC,UAAU;EAAEC,MAAM;EAAEC,KAAK;EAAEC,KAAK;EAAE,GAAGC;CAAoB;EAC9E,MAAMC,YAAY,GAAGC,EAAE;IACnBH,KAAK,CAACI,gBAAgB,CAACC,oBAAoB;MACvC,MAAMC,iBAAiB,GAAG,CAAC,GAAGD,oBAAoB,CAAC;MACnDC,iBAAiB,CAACP,KAAK,CAAC,CAACI,EAAE,GAAGA,EAAE;MAC/BG,iBAAiB,CAACP,KAAK,CAAkB,CAACQ,KAAK,GAAG,EAAE;MACrD,OAAOD,iBAAiB;KAC3B,CAAC;GACL;EAED,oBACIE,6BAACC,OAAO,oBAAKR,KAAK;IAAES,SAAS;IAACC,QAAQ,EAAET,YAAY;IAAEK,KAAK,EAAET,MAAM,CAACK;MAC/DN,UAAU,CAACe,GAAG,CAACC,CAAC,iBACbL,6BAACC,OAAO,CAACK,MAAM;IACXC,GAAG,EAAEF,CAAC,CAACV,EAAE;IACTa,QAAQ,EACJ,CAACH,CAAC,CAACI,YAAY,EAAE,IAAKJ,CAAC,CAACV,EAAE,KAAKL,MAAM,CAACK,EAAE,IAAI,CAAC,CAACH,KAAK,CAACkB,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAClB,EAAE,KAAKU,CAAC,CAACV,EAAE,CAAE;IAE1GI,KAAK,EAAEM,CAAC,CAACV;KACRmB,MAAM,CAACT,CAAC,CAACU,SAAS,CAACC,MAAM,CAAC,CAElC,CAAC,CACI;AAElB;;;;"}
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { IconButton } from '../../../../IconButton/IconButton.js';
|
3
|
+
import { useLocalization } from '../../../../Provider/Localization.js';
|
4
|
+
import { Input } from '../../../../Input/Input.js';
|
5
|
+
import { Datepicker } from '../../../../Datepicker/Datepicker.js';
|
6
|
+
import { Switch } from '../../../../Switch/Switch.js';
|
7
|
+
import { Table2FilterComparator } from '../../../types.js';
|
8
|
+
import { Column } from './Column.js';
|
9
|
+
import { Comparator } from './Comparator.js';
|
10
|
+
import { InferredControl } from './InferredControl.js';
|
11
|
+
|
12
|
+
const ColumnFilter = props => {
|
13
|
+
var _column$columnDef$hea, _column$columnDef$met;
|
14
|
+
const {
|
15
|
+
allColumns,
|
16
|
+
column,
|
17
|
+
index,
|
18
|
+
table,
|
19
|
+
onRemove
|
20
|
+
} = props;
|
21
|
+
const {
|
22
|
+
comparator,
|
23
|
+
value
|
24
|
+
} = column.getFilterValue();
|
25
|
+
const ariaLabel = String((_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : '');
|
26
|
+
const {
|
27
|
+
texts
|
28
|
+
} = useLocalization();
|
29
|
+
const ref = React__default.useRef(null);
|
30
|
+
let control;
|
31
|
+
const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
|
32
|
+
if (typeof controlType === 'function') {
|
33
|
+
control = controlType({
|
34
|
+
onBlur: () => Promise.resolve(),
|
35
|
+
onFocus: () => Promise.resolve(),
|
36
|
+
ref,
|
37
|
+
setValue: value => column.setFilterValue(currentValue => ({
|
38
|
+
...currentValue,
|
39
|
+
value
|
40
|
+
})),
|
41
|
+
value,
|
42
|
+
disabled: false,
|
43
|
+
readOnly: false
|
44
|
+
});
|
45
|
+
} else if (controlType === 'input') {
|
46
|
+
control = /*#__PURE__*/React__default.createElement(Input, {
|
47
|
+
"aria-label": ariaLabel,
|
48
|
+
onChange: event => column.setFilterValue(currentValue => ({
|
49
|
+
...currentValue,
|
50
|
+
value: event.target.value
|
51
|
+
})),
|
52
|
+
value: String(value !== null && value !== void 0 ? value : '')
|
53
|
+
});
|
54
|
+
} else if (controlType === 'datepicker') {
|
55
|
+
control = /*#__PURE__*/React__default.createElement(Datepicker, {
|
56
|
+
"aria-label": ariaLabel,
|
57
|
+
onChange: event => column.setFilterValue(currentValue => ({
|
58
|
+
...currentValue,
|
59
|
+
value: event.detail
|
60
|
+
})),
|
61
|
+
value: value
|
62
|
+
});
|
63
|
+
} else if (controlType === 'switch') {
|
64
|
+
control = /*#__PURE__*/React__default.createElement(Switch, {
|
65
|
+
"aria-label": ariaLabel,
|
66
|
+
checked: Boolean(value),
|
67
|
+
onChange: checked => column.setFilterValue(currentValue => ({
|
68
|
+
...currentValue,
|
69
|
+
value: checked
|
70
|
+
}))
|
71
|
+
});
|
72
|
+
}
|
73
|
+
const handleRemove = () => {
|
74
|
+
column.setFilterValue(undefined);
|
75
|
+
onRemove === null || onRemove === void 0 ? void 0 : onRemove();
|
76
|
+
};
|
77
|
+
const comparators = guessComparatorsBasedOnControl(control, controlType);
|
78
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
79
|
+
className: "flex gap-2"
|
80
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
81
|
+
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
82
|
+
}, index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and), /*#__PURE__*/React__default.createElement(Column, {
|
83
|
+
className: "!w-32 flex-shrink-0",
|
84
|
+
allColumns: allColumns,
|
85
|
+
column: column,
|
86
|
+
index: index,
|
87
|
+
table: table
|
88
|
+
}), /*#__PURE__*/React__default.createElement(Comparator, {
|
89
|
+
className: "!w-32 flex-shrink-0",
|
90
|
+
column: column,
|
91
|
+
comparator: comparator,
|
92
|
+
validComparators: comparators
|
93
|
+
}), comparator !== undefined ? /*#__PURE__*/React__default.createElement("div", {
|
94
|
+
className: "flex flex-grow items-center"
|
95
|
+
}, /*#__PURE__*/React__default.createElement(InferredControl, {
|
96
|
+
column: column,
|
97
|
+
comparator: comparator,
|
98
|
+
value: value
|
99
|
+
})) : null, /*#__PURE__*/React__default.createElement(IconButton, {
|
100
|
+
appearance: "discrete",
|
101
|
+
icon: "close",
|
102
|
+
onClick: handleRemove
|
103
|
+
}));
|
104
|
+
};
|
105
|
+
const guessComparatorsBasedOnControl = (instance, control) => {
|
106
|
+
if ( /*#__PURE__*/React__default.isValidElement(instance)) {
|
107
|
+
const {
|
108
|
+
props,
|
109
|
+
type
|
110
|
+
} = instance;
|
111
|
+
if (type.displayName === 'Select2') {
|
112
|
+
if (props.multiple) {
|
113
|
+
return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];
|
114
|
+
}
|
115
|
+
return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];
|
116
|
+
}
|
117
|
+
}
|
118
|
+
switch (control) {
|
119
|
+
case 'datepicker':
|
120
|
+
return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo, Table2FilterComparator.IsGreaterThan, Table2FilterComparator.IsLessThan, Table2FilterComparator.IsBetween];
|
121
|
+
case 'switch':
|
122
|
+
return [Table2FilterComparator.IsEqualTo];
|
123
|
+
default:
|
124
|
+
return [Table2FilterComparator.Contains, Table2FilterComparator.DoesNotContain, Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo, Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty, Table2FilterComparator.IsGreaterThan, Table2FilterComparator.IsLessThan, Table2FilterComparator.IsBetween];
|
125
|
+
}
|
126
|
+
};
|
127
|
+
|
128
|
+
export { ColumnFilter };
|
129
|
+
//# sourceMappingURL=ColumnFilter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\nimport { useLocalization } from '../../../../Provider/Localization';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n onRemove?: () => void;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table, onRemove } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const { texts } = useLocalization();\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control;\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => {\n column.setFilterValue(undefined);\n onRemove?.();\n };\n const comparators = guessComparatorsBasedOnControl(control, controlType);\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and}\n </div>\n <Column className=\"!w-32 flex-shrink-0\" allColumns={allColumns} column={column} index={index} table={table} />\n <Comparator className=\"!w-32 flex-shrink-0\" column={column} comparator={comparator} validComparators={comparators} />\n {comparator !== undefined ? (\n <div className=\"flex flex-grow items-center\">\n <InferredControl column={column} comparator={comparator} value={value} />\n </div>\n ) : null}\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n};\n\nconst guessComparatorsBasedOnControl = (instance: JSX.Element, control?: Table2ColumnControlRenderer) => {\n if (React.isValidElement(instance)) {\n const { props, type } = instance as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];\n }\n\n return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];\n }\n }\n\n switch (control) {\n case 'datepicker':\n return [\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n\n case 'switch':\n return [Table2FilterComparator.IsEqualTo];\n\n default:\n return [\n Table2FilterComparator.Contains,\n Table2FilterComparator.DoesNotContain,\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsEmpty,\n Table2FilterComparator.IsNotEmpty,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n }\n};\n"],"names":["ColumnFilter","props","allColumns","column","index","table","onRemove","comparator","value","getFilterValue","ariaLabel","String","columnDef","header","texts","useLocalization","ref","React","useRef","control","controlType","meta","onBlur","Promise","resolve","onFocus","setValue","setFilterValue","currentValue","disabled","readOnly","Input","onChange","event","target","Datepicker","detail","Switch","checked","Boolean","handleRemove","undefined","comparators","guessComparatorsBasedOnControl","className","table2","filters","conditions","where","and","Column","Comparator","validComparators","InferredControl","IconButton","appearance","icon","onClick","instance","isValidElement","type","displayName","multiple","Table2FilterComparator","IsOneOf","IsNoneOf","IsAllOf","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsBetween","Contains","DoesNotContain","IsEmpty","IsNotEmpty"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { useLocalization } from '../../../../Provider/Localization.js';
|
3
|
+
import { Select2 } from '../../../../Select2/Select2.js';
|
4
|
+
import { Table2FilterComparator } from '../../../types.js';
|
5
|
+
|
6
|
+
const Comparator = ({
|
7
|
+
column,
|
8
|
+
comparator,
|
9
|
+
validComparators,
|
10
|
+
...props
|
11
|
+
}) => {
|
12
|
+
const {
|
13
|
+
texts
|
14
|
+
} = useLocalization();
|
15
|
+
const handleChange = comparator => {
|
16
|
+
column.setFilterValue(currentFilterValue => ({
|
17
|
+
comparator,
|
18
|
+
value: comparator === Table2FilterComparator.IsBetween ? [] : currentFilterValue.value
|
19
|
+
}));
|
20
|
+
};
|
21
|
+
React__default.useEffect(() => {
|
22
|
+
if (comparator === undefined) {
|
23
|
+
const initialComparator = validComparators[0];
|
24
|
+
column.setFilterValue(currentFilterValue => ({
|
25
|
+
comparator: initialComparator,
|
26
|
+
value: initialComparator === Table2FilterComparator.IsBetween && !Array.isArray(currentFilterValue.value) ? [] : currentFilterValue.value
|
27
|
+
}));
|
28
|
+
}
|
29
|
+
}, []);
|
30
|
+
return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, props, {
|
31
|
+
onChange: handleChange,
|
32
|
+
value: comparator
|
33
|
+
}), validComparators.map(comp => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
34
|
+
key: comp,
|
35
|
+
value: comp
|
36
|
+
}, getComparatorText(comp, texts))));
|
37
|
+
};
|
38
|
+
const getComparatorText = (comparator, texts) => {
|
39
|
+
switch (comparator) {
|
40
|
+
case Table2FilterComparator.Contains:
|
41
|
+
return texts.table2.filters.comparators.contains;
|
42
|
+
case Table2FilterComparator.DoesNotContain:
|
43
|
+
return texts.table2.filters.comparators.doesNotContain;
|
44
|
+
case Table2FilterComparator.IsEqualTo:
|
45
|
+
return texts.table2.filters.comparators.isEqualTo;
|
46
|
+
case Table2FilterComparator.IsNotEqualTo:
|
47
|
+
return texts.table2.filters.comparators.isNotEqualTo;
|
48
|
+
case Table2FilterComparator.IsGreaterThan:
|
49
|
+
return texts.table2.filters.comparators.isGreaterThan;
|
50
|
+
case Table2FilterComparator.IsLessThan:
|
51
|
+
return texts.table2.filters.comparators.isLessThan;
|
52
|
+
case Table2FilterComparator.IsBetween:
|
53
|
+
return texts.table2.filters.comparators.isBetween;
|
54
|
+
case Table2FilterComparator.IsOneOf:
|
55
|
+
return texts.table2.filters.comparators.isOneOf;
|
56
|
+
case Table2FilterComparator.IsNoneOf:
|
57
|
+
return texts.table2.filters.comparators.isNoneOf;
|
58
|
+
case Table2FilterComparator.IsAllOf:
|
59
|
+
return texts.table2.filters.comparators.isAllOf;
|
60
|
+
case Table2FilterComparator.IsEmpty:
|
61
|
+
return texts.table2.filters.comparators.isEmpty;
|
62
|
+
case Table2FilterComparator.IsNotEmpty:
|
63
|
+
return texts.table2.filters.comparators.isNotEmpty;
|
64
|
+
}
|
65
|
+
};
|
66
|
+
|
67
|
+
export { Comparator };
|
68
|
+
//# sourceMappingURL=Comparator.js.map
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Comparator.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/Comparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../Select2/Select2';\nimport { Table2FilterComparator } from '../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../Provider/Localization';\n\ntype ComparatorProps = Omit<Select2Props, 'children'> & {\n column: RTColumn<any, any>;\n comparator?: Table2FilterComparator;\n validComparators: Table2FilterComparator[];\n};\n\nexport const Comparator = ({ column, comparator, validComparators, ...props }: ComparatorProps) => {\n const { texts } = useLocalization();\n const handleChange = comparator => {\n column.setFilterValue(currentFilterValue => ({\n comparator,\n value: comparator === Table2FilterComparator.IsBetween ? [] : currentFilterValue.value,\n }));\n };\n\n React.useEffect(() => {\n if (comparator === undefined) {\n const initialComparator = validComparators[0];\n column.setFilterValue(currentFilterValue => ({\n comparator: initialComparator,\n value:\n initialComparator === Table2FilterComparator.IsBetween && !Array.isArray(currentFilterValue.value)\n ? []\n : currentFilterValue.value,\n }));\n }\n }, []);\n\n return (\n <Select2 {...props} onChange={handleChange} value={comparator}>\n {validComparators.map(comp => (\n <Select2.Option key={comp} value={comp}>\n {getComparatorText(comp, texts)}\n </Select2.Option>\n ))}\n </Select2>\n );\n};\n\nconst getComparatorText = (comparator: Table2FilterComparator, texts: LocalizationTexts) => {\n switch (comparator) {\n case Table2FilterComparator.Contains:\n return texts.table2.filters.comparators.contains;\n case Table2FilterComparator.DoesNotContain:\n return texts.table2.filters.comparators.doesNotContain;\n case Table2FilterComparator.IsEqualTo:\n return texts.table2.filters.comparators.isEqualTo;\n case Table2FilterComparator.IsNotEqualTo:\n return texts.table2.filters.comparators.isNotEqualTo;\n case Table2FilterComparator.IsGreaterThan:\n return texts.table2.filters.comparators.isGreaterThan;\n case Table2FilterComparator.IsLessThan:\n return texts.table2.filters.comparators.isLessThan;\n case Table2FilterComparator.IsBetween:\n return texts.table2.filters.comparators.isBetween;\n case Table2FilterComparator.IsOneOf:\n return texts.table2.filters.comparators.isOneOf;\n case Table2FilterComparator.IsNoneOf:\n return texts.table2.filters.comparators.isNoneOf;\n case Table2FilterComparator.IsAllOf:\n return texts.table2.filters.comparators.isAllOf;\n case Table2FilterComparator.IsEmpty:\n return texts.table2.filters.comparators.isEmpty;\n case Table2FilterComparator.IsNotEmpty:\n return texts.table2.filters.comparators.isNotEmpty;\n }\n};\n"],"names":["Comparator","column","comparator","validComparators","props","texts","useLocalization","handleChange","setFilterValue","currentFilterValue","value","Table2FilterComparator","IsBetween","React","useEffect","undefined","initialComparator","Array","isArray","Select2","onChange","map","comp","Option","key","getComparatorText","Contains","table2","filters","comparators","contains","DoesNotContain","doesNotContain","IsEqualTo","isEqualTo","IsNotEqualTo","isNotEqualTo","IsGreaterThan","isGreaterThan","IsLessThan","isLessThan","isBetween","IsOneOf","isOneOf","IsNoneOf","isNoneOf","IsAllOf","isAllOf","IsEmpty","isEmpty","IsNotEmpty","isNotEmpty"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
import { IconButton } from '../../../../IconButton/IconButton.js';
|
3
|
+
import { useLocalization } from '../../../../Provider/Localization.js';
|
4
|
+
import { Input } from '../../../../Input/Input.js';
|
5
|
+
import { Select2 } from '../../../../Select2/Select2.js';
|
6
|
+
|
7
|
+
const EmptyFilter = props => {
|
8
|
+
const {
|
9
|
+
texts
|
10
|
+
} = useLocalization();
|
11
|
+
const {
|
12
|
+
onChange,
|
13
|
+
onRemove,
|
14
|
+
allColumns,
|
15
|
+
table,
|
16
|
+
index,
|
17
|
+
filteredColumns,
|
18
|
+
emptyFilterCount
|
19
|
+
} = props;
|
20
|
+
const handleChange = value => {
|
21
|
+
if (value) {
|
22
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
23
|
+
}
|
24
|
+
};
|
25
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
26
|
+
className: "flex gap-2"
|
27
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
28
|
+
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
29
|
+
}, filteredColumns.length > 0 || filteredColumns.length === 0 && index > 0 ? texts.table2.filters.conditions.and : texts.table2.filters.conditions.where), /*#__PURE__*/React__default.createElement(Select2, {
|
30
|
+
className: "!w-32 flex-shrink-0",
|
31
|
+
emptyValue: null,
|
32
|
+
autoFocus: true,
|
33
|
+
onChange: handleChange,
|
34
|
+
value: null
|
35
|
+
}, allColumns.map(c => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
36
|
+
key: c.id,
|
37
|
+
value: c.id,
|
38
|
+
disabled: !c.getCanFilter() || !!table.getState().columnFilters.find(f => f.id === c.id)
|
39
|
+
}, String(c.columnDef.header)))), /*#__PURE__*/React__default.createElement(Select2, {
|
40
|
+
className: "!w-32 flex-shrink-0",
|
41
|
+
value: 1,
|
42
|
+
autoFocus: true,
|
43
|
+
disabled: true
|
44
|
+
}, /*#__PURE__*/React__default.createElement(Select2.Option, {
|
45
|
+
key: 'condition1',
|
46
|
+
value: 1
|
47
|
+
}, texts.table2.filters.emptyFilter.condition), /*#__PURE__*/React__default.createElement(Select2.Option, {
|
48
|
+
key: 'condition2',
|
49
|
+
value: 2
|
50
|
+
}, "Condition2")), /*#__PURE__*/React__default.createElement(Input, {
|
51
|
+
"aria-label": 'Value',
|
52
|
+
className: "flex-grow items-center",
|
53
|
+
disabled: true,
|
54
|
+
value: texts.table2.filters.emptyFilter.value
|
55
|
+
}), (emptyFilterCount > 1 || filteredColumns.length > 0) && /*#__PURE__*/React__default.createElement(IconButton, {
|
56
|
+
appearance: "discrete",
|
57
|
+
icon: "close",
|
58
|
+
onClick: onRemove
|
59
|
+
}));
|
60
|
+
};
|
61
|
+
|
62
|
+
export { EmptyFilter };
|
63
|
+
//# sourceMappingURL=EmptyFilter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"EmptyFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/EmptyFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Select2, Select2Value } from '../../../../Select2/Select2';\nimport { useLocalization } from '../../../../Provider/Localization';\n\nexport type EmptyFilterProps = {\n allColumns: RTColumn<any, any>[];\n table: RTTable<any>;\n onChange?: (value: Select2Value) => void;\n onRemove?: () => void;\n filteredColumns: RTColumn<any, any>[];\n emptyFilterCount: Number;\n index: Number;\n};\n\nexport const EmptyFilter = (props: EmptyFilterProps) => {\n const { texts } = useLocalization();\n const { onChange, onRemove, allColumns, table, index, filteredColumns, emptyFilterCount } = props;\n\n const handleChange = (value: Select2Value) => {\n if (value) {\n onChange?.(value);\n }\n };\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {filteredColumns.length > 0 || (filteredColumns.length === 0 && index > 0)\n ? texts.table2.filters.conditions.and\n : texts.table2.filters.conditions.where}\n </div>\n <Select2 className=\"!w-32 flex-shrink-0\" emptyValue={null} autoFocus onChange={handleChange} value={null}>\n {allColumns.map(c => (\n <Select2.Option\n key={c.id}\n value={c.id}\n disabled={!c.getCanFilter() || !!table.getState().columnFilters.find(f => f.id === c.id)}>\n {String(c.columnDef.header)}\n </Select2.Option>\n ))}\n </Select2>\n <Select2 className=\"!w-32 flex-shrink-0\" value={1} autoFocus disabled>\n <Select2.Option key={'condition1'} value={1}>\n {texts.table2.filters.emptyFilter.condition}\n </Select2.Option>\n <Select2.Option key={'condition2'} value={2}>\n Condition2\n </Select2.Option>\n </Select2>\n <Input\n aria-label={'Value'}\n className=\"flex-grow items-center\"\n disabled\n value={texts.table2.filters.emptyFilter.value}\n />\n {(emptyFilterCount > 1 || filteredColumns.length > 0) && (\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={onRemove} />\n )}\n </div>\n );\n};\n"],"names":["EmptyFilter","props","texts","useLocalization","onChange","onRemove","allColumns","table","index","filteredColumns","emptyFilterCount","handleChange","value","React","className","length","table2","filters","conditions","and","where","Select2","emptyValue","autoFocus","map","c","Option","key","id","disabled","getCanFilter","getState","columnFilters","find","f","String","columnDef","header","emptyFilter","condition","Input","IconButton","appearance","icon","onClick"],"mappings":";;;;;;MAiBaA,WAAW,GAAIC,KAAuB;EAC/C,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,UAAU;IAAEC,KAAK;IAAEC,KAAK;IAAEC,eAAe;IAAEC;GAAkB,GAAGT,KAAK;EAEjG,MAAMU,YAAY,GAAIC,KAAmB;IACrC,IAAIA,KAAK,EAAE;MACPR,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGQ,KAAK,CAAC;;GAExB;EAED,oBACIC;IAAKC,SAAS,EAAC;kBACXD;IAAKC,SAAS,EAAC;KACVL,eAAe,CAACM,MAAM,GAAG,CAAC,IAAKN,eAAe,CAACM,MAAM,KAAK,CAAC,IAAIP,KAAK,GAAG,CAAE,GACpEN,KAAK,CAACc,MAAM,CAACC,OAAO,CAACC,UAAU,CAACC,GAAG,GACnCjB,KAAK,CAACc,MAAM,CAACC,OAAO,CAACC,UAAU,CAACE,KAAK,CACzC,eACNP,6BAACQ,OAAO;IAACP,SAAS,EAAC,qBAAqB;IAACQ,UAAU,EAAE,IAAI;IAAEC,SAAS;IAACnB,QAAQ,EAAEO,YAAY;IAAEC,KAAK,EAAE;KAC/FN,UAAU,CAACkB,GAAG,CAACC,CAAC,iBACbZ,6BAACQ,OAAO,CAACK,MAAM;IACXC,GAAG,EAAEF,CAAC,CAACG,EAAE;IACThB,KAAK,EAAEa,CAAC,CAACG,EAAE;IACXC,QAAQ,EAAE,CAACJ,CAAC,CAACK,YAAY,EAAE,IAAI,CAAC,CAACvB,KAAK,CAACwB,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACN,EAAE,KAAKH,CAAC,CAACG,EAAE;KACtFO,MAAM,CAACV,CAAC,CAACW,SAAS,CAACC,MAAM,CAAC,CAElC,CAAC,CACI,eACVxB,6BAACQ,OAAO;IAACP,SAAS,EAAC,qBAAqB;IAACF,KAAK,EAAE,CAAC;IAAEW,SAAS;IAACM,QAAQ;kBACjEhB,6BAACQ,OAAO,CAACK,MAAM;IAACC,GAAG,EAAE,YAAY;IAAEf,KAAK,EAAE;KACrCV,KAAK,CAACc,MAAM,CAACC,OAAO,CAACqB,WAAW,CAACC,SAAS,CAC9B,eACjB1B,6BAACQ,OAAO,CAACK,MAAM;IAACC,GAAG,EAAE,YAAY;IAAEf,KAAK,EAAE;kBAEzB,CACX,eACVC,6BAAC2B,KAAK;kBACU,OAAO;IACnB1B,SAAS,EAAC,wBAAwB;IAClCe,QAAQ;IACRjB,KAAK,EAAEV,KAAK,CAACc,MAAM,CAACC,OAAO,CAACqB,WAAW,CAAC1B;IAC1C,EACD,CAACF,gBAAgB,GAAG,CAAC,IAAID,eAAe,CAACM,MAAM,GAAG,CAAC,kBAChDF,6BAAC4B,UAAU;IAACC,UAAU,EAAC,UAAU;IAACC,IAAI,EAAC,OAAO;IAACC,OAAO,EAAEvC;IAC3D,CACC;AAEd;;;;"}
|