@economic/taco 1.38.2 → 1.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Provider/Localization.d.ts +15 -1
- package/dist/components/Table2/Table2.d.ts +16 -1
- package/dist/components/Table2/components/column/Base.d.ts +2 -0
- package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +1 -0
- package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
- package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
- package/dist/components/Table2/types.d.ts +11 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +15 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +33 -13
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +3 -3
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +4 -2
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +79 -24
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +14 -6
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +63 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +3 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +7 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +46 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +4 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
- package/dist/taco.cjs.development.js +259 -57
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -3
- package/types.json +189 -29
|
@@ -3684,7 +3684,7 @@ function createShortcutKeyDownHandler(key, handler) {
|
|
|
3684
3684
|
if (typeof key === 'string') {
|
|
3685
3685
|
condition = event.key.toLowerCase() === key.toLowerCase();
|
|
3686
3686
|
} else {
|
|
3687
|
-
if (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey) || key.meta
|
|
3687
|
+
if (key.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey) || !key.meta && (isMacOs() ? event.metaKey : event.ctrlKey)) {
|
|
3688
3688
|
return;
|
|
3689
3689
|
}
|
|
3690
3690
|
if (key.shift && !event.shiftKey || key.shift === false && event.shiftKey) {
|
|
@@ -4016,7 +4016,7 @@ const defaultLocalisationTexts = {
|
|
|
4016
4016
|
filters: {
|
|
4017
4017
|
button: 'Filters',
|
|
4018
4018
|
buttons: {
|
|
4019
|
-
|
|
4019
|
+
addNewFilter: 'Add new filter',
|
|
4020
4020
|
clearFilters: 'Clear all filters'
|
|
4021
4021
|
},
|
|
4022
4022
|
comparators: {
|
|
@@ -4033,9 +4033,23 @@ const defaultLocalisationTexts = {
|
|
|
4033
4033
|
isEmpty: 'Is empty',
|
|
4034
4034
|
isNotEmpty: 'Is not empty'
|
|
4035
4035
|
},
|
|
4036
|
+
conditions: {
|
|
4037
|
+
and: 'And',
|
|
4038
|
+
where: 'Where'
|
|
4039
|
+
},
|
|
4040
|
+
emptyFilter: {
|
|
4041
|
+
condition: 'Condition',
|
|
4042
|
+
value: 'Value'
|
|
4043
|
+
},
|
|
4036
4044
|
tooltip: 'Apply filters',
|
|
4037
4045
|
total: 'Viewing [CURRENT] of [TOTAL]'
|
|
4038
4046
|
},
|
|
4047
|
+
footer: {
|
|
4048
|
+
summary: {
|
|
4049
|
+
records: 'Records:',
|
|
4050
|
+
selected: 'Records selected:'
|
|
4051
|
+
}
|
|
4052
|
+
},
|
|
4039
4053
|
rowDensity: {
|
|
4040
4054
|
tooltip: 'Row density',
|
|
4041
4055
|
compact: 'compact',
|
|
@@ -6285,15 +6299,15 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
|
|
|
6285
6299
|
ref: contentRef,
|
|
6286
6300
|
"data-taco": "drawer",
|
|
6287
6301
|
className: containerClassName
|
|
6288
|
-
}, /*#__PURE__*/React__default.createElement("div", Object.assign({
|
|
6302
|
+
}, output, /*#__PURE__*/React__default.createElement("div", Object.assign({
|
|
6289
6303
|
className: dragHandlerClassName
|
|
6290
6304
|
}, dragHandleProps, {
|
|
6291
6305
|
"data-testid": "resize-handler",
|
|
6292
6306
|
ref: dragHandlerRef
|
|
6293
|
-
})),
|
|
6307
|
+
})), showCloseButton ? /*#__PURE__*/React__default.createElement(Close$3, null, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
6294
6308
|
appearance: "discrete",
|
|
6295
6309
|
"aria-label": texts.drawer.close,
|
|
6296
|
-
className: "absolute
|
|
6310
|
+
className: "absolute right-0 top-0 mr-2 mt-4",
|
|
6297
6311
|
icon: "close"
|
|
6298
6312
|
})) : null);
|
|
6299
6313
|
const styleProp = {
|
|
@@ -7042,7 +7056,7 @@ const replaceWithShortform = key => {
|
|
|
7042
7056
|
case ' ':
|
|
7043
7057
|
return '␣';
|
|
7044
7058
|
default:
|
|
7045
|
-
return key;
|
|
7059
|
+
return String(key).toLocaleUpperCase();
|
|
7046
7060
|
}
|
|
7047
7061
|
};
|
|
7048
7062
|
const getShortcutText = key => {
|
|
@@ -11593,6 +11607,7 @@ function createRowDraggableColumn(onRowDrag, texts) {
|
|
|
11593
11607
|
className: "text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white"
|
|
11594
11608
|
}));
|
|
11595
11609
|
},
|
|
11610
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
|
11596
11611
|
meta: {
|
|
11597
11612
|
align: 'center',
|
|
11598
11613
|
className: 'items-center !px-0',
|
|
@@ -11709,6 +11724,7 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
|
|
|
11709
11724
|
id: COLUMN_ID_FOR_SELECTION,
|
|
11710
11725
|
header,
|
|
11711
11726
|
cell,
|
|
11727
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
|
11712
11728
|
meta: {
|
|
11713
11729
|
align: 'center',
|
|
11714
11730
|
className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',
|
|
@@ -11778,6 +11794,7 @@ function createRowExpansionColumn(expandedRowRenderer, texts) {
|
|
|
11778
11794
|
row: row,
|
|
11779
11795
|
texts: texts
|
|
11780
11796
|
}),
|
|
11797
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
|
11781
11798
|
meta: {
|
|
11782
11799
|
align: 'center',
|
|
11783
11800
|
className: 'items-center !p-0',
|
|
@@ -11856,6 +11873,7 @@ function createRowActionsColumn(rowActions, rowActionsLength, texts) {
|
|
|
11856
11873
|
shouldPauseHoverState: !!((_table$options$meta2 = table.options.meta) !== null && _table$options$meta2 !== void 0 && _table$options$meta2.shouldPauseHoverState)
|
|
11857
11874
|
});
|
|
11858
11875
|
},
|
|
11876
|
+
footer: () => /*#__PURE__*/React__default.createElement("span", null),
|
|
11859
11877
|
meta: {
|
|
11860
11878
|
align: 'right',
|
|
11861
11879
|
className: (row, table) => {
|
|
@@ -11950,6 +11968,7 @@ const ColumnBase = /*#__PURE__*/React__default.forwardRef(function Table2ColumnB
|
|
|
11950
11968
|
var _column$columnDef$met;
|
|
11951
11969
|
const {
|
|
11952
11970
|
column,
|
|
11971
|
+
frozenColumnIds,
|
|
11953
11972
|
scrolled,
|
|
11954
11973
|
style,
|
|
11955
11974
|
table,
|
|
@@ -11958,8 +11977,7 @@ const ColumnBase = /*#__PURE__*/React__default.forwardRef(function Table2ColumnB
|
|
|
11958
11977
|
const isFrozenColumn = !!column.getIsPinned();
|
|
11959
11978
|
const meta = table.options.meta;
|
|
11960
11979
|
const left = meta.columnOffsets[column.id];
|
|
11961
|
-
const
|
|
11962
|
-
const className = cn('border-grey-300', getFrozenShadowClasses(column, columnFreezing, scrolled), getCellAlignmentClasses((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.align), {
|
|
11980
|
+
const className = cn('border-grey-300', getCellAlignmentClasses((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.align), getFrozenShadowClasses(column, frozenColumnIds, scrolled), {
|
|
11963
11981
|
'cursor-pointer': !!attributes.onClick
|
|
11964
11982
|
}, attributes.className);
|
|
11965
11983
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
|
|
@@ -13145,8 +13163,9 @@ const Footer$3 = function Footer(props) {
|
|
|
13145
13163
|
...columnProps
|
|
13146
13164
|
} = props;
|
|
13147
13165
|
const isFrozen = !!footer.column.getIsPinned();
|
|
13148
|
-
const className = cn('group/header sticky bottom-0 bg-white border-t-2 relative', getCellSizingClasses('normal'), {
|
|
13149
|
-
'z-[
|
|
13166
|
+
const className = cn('group/header sticky bottom-0 bg-white border-t-2 relative z-[1] h-[calc(theme(spacing.10)+2px)]', getCellSizingClasses('normal'), {
|
|
13167
|
+
'!z-[2]': isFrozen,
|
|
13168
|
+
'!shadow-none': isInternalColumn(footer.id)
|
|
13150
13169
|
}, props.className);
|
|
13151
13170
|
return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, columnProps, {
|
|
13152
13171
|
// base props
|
|
@@ -13231,7 +13250,9 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
|
13231
13250
|
size: child.props.defaultWidth,
|
|
13232
13251
|
// sorting
|
|
13233
13252
|
enableSorting: !child.props.disableSorting,
|
|
13234
|
-
sortingFn: getSortingFn(child.props.dataType, child.props.sortFn)
|
|
13253
|
+
sortingFn: getSortingFn(child.props.dataType, child.props.sortFn),
|
|
13254
|
+
sortDescFirst: false,
|
|
13255
|
+
sortUndefined: 1
|
|
13235
13256
|
});
|
|
13236
13257
|
}
|
|
13237
13258
|
});
|
|
@@ -13261,9 +13282,12 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
|
13261
13282
|
}, [children]);
|
|
13262
13283
|
}
|
|
13263
13284
|
function getSortingFn(dataType, customFn) {
|
|
13264
|
-
if (customFn) {
|
|
13285
|
+
if (typeof customFn === 'function') {
|
|
13265
13286
|
return (rowA, rowB, columnId) => customFn(rowA.original, rowB.original, columnId);
|
|
13266
13287
|
}
|
|
13288
|
+
if (customFn) {
|
|
13289
|
+
return customFn;
|
|
13290
|
+
}
|
|
13267
13291
|
if (dataType && dataType !== 'boolean') {
|
|
13268
13292
|
return dataType;
|
|
13269
13293
|
}
|
|
@@ -13298,10 +13322,11 @@ const useRowSelectionListener = (table, onRowSelect) => {
|
|
|
13298
13322
|
React__default.useEffect(() => {
|
|
13299
13323
|
if (onRowSelect) {
|
|
13300
13324
|
if (table.options.enableMultiRowSelection) {
|
|
13301
|
-
|
|
13325
|
+
const rows = table.getSelectedRowModel().rows.map(row => row.original);
|
|
13326
|
+
onRowSelect(rows, table.getIsAllRowsSelected());
|
|
13302
13327
|
} else {
|
|
13303
13328
|
var _table$getSelectedRow, _table$getSelectedRow2;
|
|
13304
|
-
onRowSelect((_table$getSelectedRow = (_table$getSelectedRow2 = table.getSelectedRowModel().rows[0]) === null || _table$getSelectedRow2 === void 0 ? void 0 : _table$getSelectedRow2.original) !== null && _table$getSelectedRow !== void 0 ? _table$getSelectedRow : undefined);
|
|
13329
|
+
onRowSelect((_table$getSelectedRow = (_table$getSelectedRow2 = table.getSelectedRowModel().rows[0]) === null || _table$getSelectedRow2 === void 0 ? void 0 : _table$getSelectedRow2.original) !== null && _table$getSelectedRow !== void 0 ? _table$getSelectedRow : undefined, false);
|
|
13305
13330
|
}
|
|
13306
13331
|
}
|
|
13307
13332
|
}, [table.getState().rowSelection]);
|
|
@@ -13380,9 +13405,50 @@ const useFilterStateListener = (table, onRowSelect) => {
|
|
|
13380
13405
|
}, [table.getState().columnFilters, table.getState().globalFilter]);
|
|
13381
13406
|
};
|
|
13382
13407
|
|
|
13408
|
+
function useTableShortcuts(shortcuts, activeRow) {
|
|
13409
|
+
React__default.useEffect(() => {
|
|
13410
|
+
const shortcutKeys = Object.keys(shortcuts !== null && shortcuts !== void 0 ? shortcuts : {});
|
|
13411
|
+
const globalHandlers = [];
|
|
13412
|
+
// convert the shortcut into the correct format to register it
|
|
13413
|
+
if (shortcuts && shortcutKeys.length) {
|
|
13414
|
+
shortcutKeys.forEach(key => {
|
|
13415
|
+
const handler = shortcuts[key];
|
|
13416
|
+
let keyDownHandler;
|
|
13417
|
+
let keyDownHandlerOptions;
|
|
13418
|
+
if (typeof handler === 'function') {
|
|
13419
|
+
keyDownHandler = handler;
|
|
13420
|
+
keyDownHandlerOptions = {
|
|
13421
|
+
key
|
|
13422
|
+
};
|
|
13423
|
+
} else {
|
|
13424
|
+
const handlerObject = handler;
|
|
13425
|
+
keyDownHandler = handlerObject.handler;
|
|
13426
|
+
keyDownHandlerOptions = {
|
|
13427
|
+
key,
|
|
13428
|
+
meta: handlerObject.meta,
|
|
13429
|
+
shift: handlerObject.shift
|
|
13430
|
+
};
|
|
13431
|
+
}
|
|
13432
|
+
globalHandlers.push(createShortcutKeyDownHandler(keyDownHandlerOptions, event => {
|
|
13433
|
+
event.preventDefault();
|
|
13434
|
+
keyDownHandler(activeRow);
|
|
13435
|
+
}));
|
|
13436
|
+
});
|
|
13437
|
+
}
|
|
13438
|
+
globalHandlers.forEach(handler => {
|
|
13439
|
+
document.addEventListener('keydown', handler);
|
|
13440
|
+
});
|
|
13441
|
+
return () => {
|
|
13442
|
+
globalHandlers.forEach(handler => {
|
|
13443
|
+
document.removeEventListener('keydown', handler);
|
|
13444
|
+
});
|
|
13445
|
+
};
|
|
13446
|
+
}, [shortcuts, activeRow]);
|
|
13447
|
+
}
|
|
13448
|
+
|
|
13383
13449
|
const ACTIONS_ON_ROW_LENGTH = 4;
|
|
13384
13450
|
function useTable$1(children, props, ref) {
|
|
13385
|
-
var _settings$frozenColum, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity
|
|
13451
|
+
var _settings$frozenColum, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity, _tableRows$activeRow$;
|
|
13386
13452
|
const {
|
|
13387
13453
|
actionsForRow = [],
|
|
13388
13454
|
actionsForRowLength = ACTIONS_ON_ROW_LENGTH,
|
|
@@ -13409,6 +13475,7 @@ function useTable$1(children, props, ref) {
|
|
|
13409
13475
|
onRowSelect,
|
|
13410
13476
|
onSave,
|
|
13411
13477
|
settings = {},
|
|
13478
|
+
shortcuts,
|
|
13412
13479
|
// experimental
|
|
13413
13480
|
_experimentalActionsForTable
|
|
13414
13481
|
} = props;
|
|
@@ -13576,6 +13643,7 @@ function useTable$1(children, props, ref) {
|
|
|
13576
13643
|
useFilterStateListener(table, onRowSelect);
|
|
13577
13644
|
useRowSelectionListener(table, onRowSelect);
|
|
13578
13645
|
useSettingsStateListener(table, onChangeSettings);
|
|
13646
|
+
useTableShortcuts(shortcuts, (_tableRows$activeRow$ = tableRows[activeRow.activeRowIndex]) === null || _tableRows$activeRow$ === void 0 ? void 0 : _tableRows$activeRow$.original);
|
|
13579
13647
|
return {
|
|
13580
13648
|
rows,
|
|
13581
13649
|
table,
|
|
@@ -14262,18 +14330,22 @@ const InferredControl = ({
|
|
|
14262
14330
|
};
|
|
14263
14331
|
|
|
14264
14332
|
const ColumnFilter = props => {
|
|
14265
|
-
var _column$columnDef$hea, _column$columnDef$met
|
|
14333
|
+
var _column$columnDef$hea, _column$columnDef$met;
|
|
14266
14334
|
const {
|
|
14267
14335
|
allColumns,
|
|
14268
14336
|
column,
|
|
14269
14337
|
index,
|
|
14270
|
-
table
|
|
14338
|
+
table,
|
|
14339
|
+
onRemove
|
|
14271
14340
|
} = props;
|
|
14272
14341
|
const {
|
|
14273
14342
|
comparator,
|
|
14274
14343
|
value
|
|
14275
14344
|
} = column.getFilterValue();
|
|
14276
14345
|
const ariaLabel = String((_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : '');
|
|
14346
|
+
const {
|
|
14347
|
+
texts
|
|
14348
|
+
} = useLocalization();
|
|
14277
14349
|
const ref = React__default.useRef(null);
|
|
14278
14350
|
let control;
|
|
14279
14351
|
const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
|
|
@@ -14318,13 +14390,16 @@ const ColumnFilter = props => {
|
|
|
14318
14390
|
}))
|
|
14319
14391
|
});
|
|
14320
14392
|
}
|
|
14321
|
-
const handleRemove = () =>
|
|
14393
|
+
const handleRemove = () => {
|
|
14394
|
+
column.setFilterValue(undefined);
|
|
14395
|
+
onRemove === null || onRemove === void 0 ? void 0 : onRemove();
|
|
14396
|
+
};
|
|
14322
14397
|
const comparators = guessComparatorsBasedOnControl(control, controlType);
|
|
14323
14398
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
14324
|
-
className: "
|
|
14399
|
+
className: "flex gap-2"
|
|
14325
14400
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
14326
14401
|
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
|
14327
|
-
}, index === 0 ?
|
|
14402
|
+
}, index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and), /*#__PURE__*/React__default.createElement(Column$2, {
|
|
14328
14403
|
className: "!w-32 flex-shrink-0",
|
|
14329
14404
|
allColumns: allColumns,
|
|
14330
14405
|
column: column,
|
|
@@ -14337,7 +14412,7 @@ const ColumnFilter = props => {
|
|
|
14337
14412
|
validComparators: comparators
|
|
14338
14413
|
}), comparator !== undefined ? /*#__PURE__*/React__default.createElement("div", {
|
|
14339
14414
|
className: "flex flex-grow items-center"
|
|
14340
|
-
},
|
|
14415
|
+
}, /*#__PURE__*/React__default.createElement(InferredControl, {
|
|
14341
14416
|
column: column,
|
|
14342
14417
|
comparator: comparator,
|
|
14343
14418
|
value: value
|
|
@@ -14370,6 +14445,61 @@ const guessComparatorsBasedOnControl = (instance, control) => {
|
|
|
14370
14445
|
}
|
|
14371
14446
|
};
|
|
14372
14447
|
|
|
14448
|
+
const EmptyFilter = props => {
|
|
14449
|
+
const {
|
|
14450
|
+
texts
|
|
14451
|
+
} = useLocalization();
|
|
14452
|
+
const {
|
|
14453
|
+
onChange,
|
|
14454
|
+
onRemove,
|
|
14455
|
+
allColumns,
|
|
14456
|
+
table,
|
|
14457
|
+
index,
|
|
14458
|
+
filteredColumns,
|
|
14459
|
+
emptyFilterCount
|
|
14460
|
+
} = props;
|
|
14461
|
+
const handleChange = value => {
|
|
14462
|
+
if (value) {
|
|
14463
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
|
14464
|
+
}
|
|
14465
|
+
};
|
|
14466
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
14467
|
+
className: "flex gap-2"
|
|
14468
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
14469
|
+
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
|
14470
|
+
}, filteredColumns.length > 0 || filteredColumns.length === 0 && index > 0 ? texts.table2.filters.conditions.and : texts.table2.filters.conditions.where), /*#__PURE__*/React__default.createElement(Select2, {
|
|
14471
|
+
className: "!w-32 flex-shrink-0",
|
|
14472
|
+
emptyValue: null,
|
|
14473
|
+
autoFocus: true,
|
|
14474
|
+
onChange: handleChange,
|
|
14475
|
+
value: null
|
|
14476
|
+
}, allColumns.map(c => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
|
14477
|
+
key: c.id,
|
|
14478
|
+
value: c.id,
|
|
14479
|
+
disabled: !c.getCanFilter() || !!table.getState().columnFilters.find(f => f.id === c.id)
|
|
14480
|
+
}, String(c.columnDef.header)))), /*#__PURE__*/React__default.createElement(Select2, {
|
|
14481
|
+
className: "!w-32 flex-shrink-0",
|
|
14482
|
+
value: 1,
|
|
14483
|
+
autoFocus: true,
|
|
14484
|
+
disabled: true
|
|
14485
|
+
}, /*#__PURE__*/React__default.createElement(Select2.Option, {
|
|
14486
|
+
key: 'condition1',
|
|
14487
|
+
value: 1
|
|
14488
|
+
}, texts.table2.filters.emptyFilter.condition), /*#__PURE__*/React__default.createElement(Select2.Option, {
|
|
14489
|
+
key: 'condition2',
|
|
14490
|
+
value: 2
|
|
14491
|
+
}, "Condition2")), /*#__PURE__*/React__default.createElement(Input, {
|
|
14492
|
+
"aria-label": 'Value',
|
|
14493
|
+
className: "flex-grow items-center",
|
|
14494
|
+
disabled: true,
|
|
14495
|
+
value: texts.table2.filters.emptyFilter.value
|
|
14496
|
+
}), (emptyFilterCount > 1 || filteredColumns.length > 0) && /*#__PURE__*/React__default.createElement(IconButton, {
|
|
14497
|
+
appearance: "discrete",
|
|
14498
|
+
icon: "close",
|
|
14499
|
+
onClick: onRemove
|
|
14500
|
+
}));
|
|
14501
|
+
};
|
|
14502
|
+
|
|
14373
14503
|
const FiltersButton = ({
|
|
14374
14504
|
length,
|
|
14375
14505
|
table
|
|
@@ -14378,7 +14508,10 @@ const FiltersButton = ({
|
|
|
14378
14508
|
texts
|
|
14379
14509
|
} = useLocalization();
|
|
14380
14510
|
const ref = React__default.useRef(null);
|
|
14381
|
-
const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id))
|
|
14511
|
+
const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort((a, b) => {
|
|
14512
|
+
var _a$columnDef, _b$columnDef;
|
|
14513
|
+
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);
|
|
14514
|
+
});
|
|
14382
14515
|
const {
|
|
14383
14516
|
shouldDisableTableActions
|
|
14384
14517
|
} = table.options.meta;
|
|
@@ -14390,17 +14523,11 @@ const FiltersButton = ({
|
|
|
14390
14523
|
}
|
|
14391
14524
|
return columns;
|
|
14392
14525
|
}, []);
|
|
14393
|
-
const
|
|
14394
|
-
|
|
14395
|
-
if (firstFilterableColumn) {
|
|
14396
|
-
firstFilterableColumn.setFilterValue({
|
|
14397
|
-
comparator: undefined,
|
|
14398
|
-
value: undefined
|
|
14399
|
-
});
|
|
14400
|
-
}
|
|
14401
|
-
};
|
|
14526
|
+
const [emptyFilterCount, setEmptyFilterCount] = React__default.useState(1);
|
|
14527
|
+
const handleAdd = () => setEmptyFilterCount(emptyFilterCount + 1);
|
|
14402
14528
|
const handleReset = () => {
|
|
14403
14529
|
table.resetColumnFilters();
|
|
14530
|
+
setEmptyFilterCount(1);
|
|
14404
14531
|
};
|
|
14405
14532
|
useGlobalKeyDown({
|
|
14406
14533
|
key: 'f',
|
|
@@ -14411,37 +14538,94 @@ const FiltersButton = ({
|
|
|
14411
14538
|
event.preventDefault();
|
|
14412
14539
|
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
|
|
14413
14540
|
});
|
|
14541
|
+
const handleEmptyFilterChange = columnId => {
|
|
14542
|
+
// create an actual filter on that column that the user selected
|
|
14543
|
+
const column = allColumns.find(c => c.getCanFilter() && c.id === columnId);
|
|
14544
|
+
if (column) {
|
|
14545
|
+
column.setFilterValue({
|
|
14546
|
+
comparator: undefined,
|
|
14547
|
+
value: undefined
|
|
14548
|
+
});
|
|
14549
|
+
}
|
|
14550
|
+
// hide the empty filter row because we now have a real filter
|
|
14551
|
+
setEmptyFilterCount(emptyFilterCount - 1);
|
|
14552
|
+
};
|
|
14553
|
+
const handleRemove = () => {
|
|
14554
|
+
if (filteredColumns.length === 1 && emptyFilterCount === 0) {
|
|
14555
|
+
setEmptyFilterCount(1);
|
|
14556
|
+
}
|
|
14557
|
+
};
|
|
14558
|
+
const handleRemoveEmptyFilter = () => {
|
|
14559
|
+
setEmptyFilterCount(emptyFilterCount - 1);
|
|
14560
|
+
};
|
|
14561
|
+
const handleOpenChange = () => {
|
|
14562
|
+
const emptyFilterCount = filteredColumns.length === 0 ? 1 : 0;
|
|
14563
|
+
setEmptyFilterCount(emptyFilterCount);
|
|
14564
|
+
};
|
|
14565
|
+
const filters = filteredColumns.length > 0 && filteredColumns.filter(column => {
|
|
14566
|
+
var _column$columnDef$met;
|
|
14567
|
+
const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
|
|
14568
|
+
const value = column.getFilterValue().value;
|
|
14569
|
+
const comparator = column.getFilterValue().comparator;
|
|
14570
|
+
if (Array.isArray(value)) {
|
|
14571
|
+
if (value.length > 0 && value.find(item => item !== undefined)) {
|
|
14572
|
+
return true;
|
|
14573
|
+
}
|
|
14574
|
+
} else if (value) {
|
|
14575
|
+
return true;
|
|
14576
|
+
} else if ([Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty].includes(comparator)) {
|
|
14577
|
+
if (!controlType) {
|
|
14578
|
+
return true;
|
|
14579
|
+
}
|
|
14580
|
+
}
|
|
14581
|
+
return false;
|
|
14582
|
+
});
|
|
14583
|
+
const filtersApplied = filters && filters.length;
|
|
14414
14584
|
return /*#__PURE__*/React__default.createElement(Button$1, {
|
|
14415
14585
|
"aria-label": texts.table2.filters.tooltip,
|
|
14416
|
-
appearance:
|
|
14586
|
+
appearance: filtersApplied ? 'primary' : 'default',
|
|
14417
14587
|
className: cn({
|
|
14418
|
-
'!wcag-blue-100':
|
|
14588
|
+
'!wcag-blue-100': filtersApplied
|
|
14419
14589
|
}),
|
|
14420
14590
|
disabled: shouldDisableTableActions,
|
|
14421
|
-
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps
|
|
14591
|
+
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
|
|
14592
|
+
onChange: handleOpenChange
|
|
14593
|
+
}), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
|
|
14422
14594
|
className: "flex w-[40rem] flex-col gap-4"
|
|
14595
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
14596
|
+
className: "flex h-8"
|
|
14423
14597
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
14424
14598
|
className: "flex w-full items-center gap-2"
|
|
14425
14599
|
}, /*#__PURE__*/React__default.createElement("h4", {
|
|
14426
14600
|
className: "mb-0 inline-flex"
|
|
14427
|
-
},
|
|
14601
|
+
}, texts.table2.filters.button), /*#__PURE__*/React__default.createElement("p", {
|
|
14428
14602
|
className: "text-grey-700 mb-0 mr-auto mt-px inline-flex"
|
|
14429
|
-
}, texts.table2.filters.total.replace('[CURRENT]', String(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', String(length)))), /*#__PURE__*/React__default.createElement(
|
|
14603
|
+
}, texts.table2.filters.total.replace('[CURRENT]', String(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', String(length)))), columnFilters.length || emptyFilterCount > 1 ? /*#__PURE__*/React__default.createElement(Button$1, {
|
|
14604
|
+
onClick: handleReset
|
|
14605
|
+
}, texts.table2.filters.buttons.clearFilters) : null), /*#__PURE__*/React__default.createElement("div", {
|
|
14430
14606
|
className: "flex flex-col gap-2"
|
|
14431
14607
|
}, filteredColumns.map((column, index) => /*#__PURE__*/React__default.createElement(ColumnFilter, {
|
|
14432
14608
|
key: `${column.id}_${index}`,
|
|
14433
14609
|
allColumns: allColumns,
|
|
14434
14610
|
index: index,
|
|
14435
14611
|
column: column,
|
|
14436
|
-
table: table
|
|
14437
|
-
|
|
14438
|
-
|
|
14612
|
+
table: table,
|
|
14613
|
+
onRemove: handleRemove
|
|
14614
|
+
})), [...Array(emptyFilterCount)].map((_, index) => /*#__PURE__*/React__default.createElement(EmptyFilter, {
|
|
14615
|
+
key: `emptyFilter_${index}`,
|
|
14616
|
+
index: index,
|
|
14617
|
+
allColumns: allColumns,
|
|
14618
|
+
table: table,
|
|
14619
|
+
onChange: value => handleEmptyFilterChange(value),
|
|
14620
|
+
emptyFilterCount: emptyFilterCount,
|
|
14621
|
+
filteredColumns: filteredColumns,
|
|
14622
|
+
onRemove: handleRemoveEmptyFilter
|
|
14623
|
+
})), /*#__PURE__*/React__default.createElement("div", {
|
|
14624
|
+
className: "justify-start"
|
|
14439
14625
|
}, /*#__PURE__*/React__default.createElement(Button$1, {
|
|
14440
14626
|
appearance: "discrete",
|
|
14441
14627
|
onClick: handleAdd
|
|
14442
|
-
}, "+ ", texts.table2.filters.buttons.
|
|
14443
|
-
onClick: handleReset
|
|
14444
|
-
}, texts.table2.filters.buttons.clearFilters) : null)))),
|
|
14628
|
+
}, "+ ", texts.table2.filters.buttons.addNewFilter)))))),
|
|
14445
14629
|
ref: ref,
|
|
14446
14630
|
tooltip: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table2.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
|
|
14447
14631
|
className: "ml-2",
|
|
@@ -14452,8 +14636,8 @@ const FiltersButton = ({
|
|
|
14452
14636
|
}
|
|
14453
14637
|
}))
|
|
14454
14638
|
}, /*#__PURE__*/React__default.createElement(Icon, {
|
|
14455
|
-
name:
|
|
14456
|
-
}), texts.table2.filters.button, " ",
|
|
14639
|
+
name: filtersApplied ? 'filter-solid' : 'filter'
|
|
14640
|
+
}), texts.table2.filters.button, " ", filtersApplied ? `(${filtersApplied})` : '');
|
|
14457
14641
|
};
|
|
14458
14642
|
|
|
14459
14643
|
const Search$2 = props => {
|
|
@@ -14619,7 +14803,8 @@ const BaseTable2 = /*#__PURE__*/React__default.forwardRef(function BaseTable2(pr
|
|
|
14619
14803
|
resetFiltering: () => table.resetColumnFilters(),
|
|
14620
14804
|
resetRowExpansion: () => table.resetExpanded(),
|
|
14621
14805
|
resetRowSelection: () => table.resetRowSelection(),
|
|
14622
|
-
resetSorting: () => table.resetSorting()
|
|
14806
|
+
resetSorting: () => table.resetSorting(),
|
|
14807
|
+
toggleEditing: () => meta.editMode.toggleEditing()
|
|
14623
14808
|
};
|
|
14624
14809
|
}
|
|
14625
14810
|
}, [table, tableRef.current]);
|
|
@@ -14830,11 +15015,7 @@ const BaseTable2 = /*#__PURE__*/React__default.forwardRef(function BaseTable2(pr
|
|
|
14830
15015
|
const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;
|
|
14831
15016
|
const hasInternalToolbar = enableSettingsButton || meta.editMode.enableEditMode || table.options.enableColumnFilters || meta.enableRowDensity || table.options.enableGlobalFilter;
|
|
14832
15017
|
const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;
|
|
14833
|
-
const
|
|
14834
|
-
const summaryIds = Object.keys(footers);
|
|
14835
|
-
const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);
|
|
14836
|
-
return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));
|
|
14837
|
-
}, [footers, columnVisibility]);
|
|
15018
|
+
const frozenColumnIds = table.getLeftVisibleLeafColumns().map(c => c.id);
|
|
14838
15019
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
14839
15020
|
className: "-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5"
|
|
14840
15021
|
}, hasToolbar ? /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -14883,6 +15064,7 @@ const BaseTable2 = /*#__PURE__*/React__default.forwardRef(function BaseTable2(pr
|
|
|
14883
15064
|
key: headerGroup.id,
|
|
14884
15065
|
role: "row"
|
|
14885
15066
|
}, headerGroup.headers.map((header, columnIndex) => /*#__PURE__*/React__default.createElement(Header$1, {
|
|
15067
|
+
frozenColumnIds: frozenColumnIds,
|
|
14886
15068
|
key: header.id,
|
|
14887
15069
|
header: header,
|
|
14888
15070
|
index: columnIndex,
|
|
@@ -14912,6 +15094,7 @@ const BaseTable2 = /*#__PURE__*/React__default.forwardRef(function BaseTable2(pr
|
|
|
14912
15094
|
table: table
|
|
14913
15095
|
}, row.getVisibleCells().map((cell, columnIndex) => /*#__PURE__*/React__default.createElement(Cell, {
|
|
14914
15096
|
cell: cell,
|
|
15097
|
+
frozenColumnIds: frozenColumnIds,
|
|
14915
15098
|
key: `${cell.id}_${cell.getValue()}`,
|
|
14916
15099
|
index: columnIndex,
|
|
14917
15100
|
isLastRow: virtualRow.index === rows.length - 1,
|
|
@@ -14933,27 +15116,46 @@ const BaseTable2 = /*#__PURE__*/React__default.forwardRef(function BaseTable2(pr
|
|
|
14933
15116
|
className: "col-span-full"
|
|
14934
15117
|
}) : null) : /*#__PURE__*/React__default.createElement("div", {
|
|
14935
15118
|
className: "col-span-full min-h-[theme(spacing.8)]"
|
|
14936
|
-
}, EmptyState ? /*#__PURE__*/React__default.createElement(EmptyState, null) : null),
|
|
14937
|
-
role: "rowgroup",
|
|
15119
|
+
}, EmptyState ? /*#__PURE__*/React__default.createElement(EmptyState, null) : null), /*#__PURE__*/React__default.createElement("div", {
|
|
14938
15120
|
className: "contents",
|
|
14939
|
-
"data-taco": "table2-footer"
|
|
14940
|
-
|
|
14941
|
-
|
|
15121
|
+
"data-taco": "table2-footer",
|
|
15122
|
+
role: "rowgroup"
|
|
15123
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
14942
15124
|
role: "row",
|
|
14943
15125
|
className: "contents"
|
|
14944
|
-
}, footerGroup.headers.map((footer, cellIndex) => /*#__PURE__*/React__default.createElement(Footer$3, {
|
|
15126
|
+
}, table.getFooterGroups().map(footerGroup => footerGroup.headers.map((footer, cellIndex) => /*#__PURE__*/React__default.createElement(Footer$3, {
|
|
14945
15127
|
key: footer.id,
|
|
14946
15128
|
footer: footer,
|
|
15129
|
+
frozenColumnIds: frozenColumnIds,
|
|
14947
15130
|
index: cellIndex,
|
|
14948
15131
|
scrolled: scrolled,
|
|
14949
15132
|
table: table
|
|
14950
|
-
}, footers[footer.id] ? footers[footer.id](rows.map(row => row.original[footer.id])) : null)))))
|
|
15133
|
+
}, footers[footer.id] ? footers[footer.id](rows.map(row => row.original[footer.id])) : null)))))), /*#__PURE__*/React__default.createElement(Summary, {
|
|
15134
|
+
length: length !== null && length !== void 0 ? length : rows.length,
|
|
15135
|
+
table: table
|
|
15136
|
+
}), !!_experimentalActionsForTable && table.options.enableRowSelection && (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? /*#__PURE__*/React__default.createElement(BatchActionsMenu, {
|
|
14951
15137
|
className: "fixed-center-x bottom-0 z-50 mb-4 print:hidden",
|
|
14952
15138
|
actionsForTable: _experimentalActionsForTable,
|
|
14953
15139
|
summary: _experimentalActionsForTableSummary,
|
|
14954
15140
|
table: table
|
|
14955
15141
|
}) : null);
|
|
14956
15142
|
});
|
|
15143
|
+
const Summary = ({
|
|
15144
|
+
length,
|
|
15145
|
+
table
|
|
15146
|
+
}) => {
|
|
15147
|
+
const {
|
|
15148
|
+
texts
|
|
15149
|
+
} = useLocalization();
|
|
15150
|
+
const selectedLength = table.getIsAllRowsSelected() ? length : table.getSelectedRowModel().rows.length;
|
|
15151
|
+
const label = selectedLength > 0 ? texts.table2.footer.summary.selected : texts.table2.footer.summary.records;
|
|
15152
|
+
const total = selectedLength > 0 ? selectedLength : length;
|
|
15153
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
15154
|
+
className: "z-10 -mt-4"
|
|
15155
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
15156
|
+
className: cn('-mt-10 ml-px h-7 w-fit rounded-bl bg-white !pr-2 shadow-[6px_0px_6px_theme(colors.white)]', getCellSizingClasses('normal'))
|
|
15157
|
+
}, label, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, total)));
|
|
15158
|
+
};
|
|
14957
15159
|
const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref) {
|
|
14958
15160
|
const key = React__default.useMemo(() => String('tableKey_' + String(props.children)), [props.children]);
|
|
14959
15161
|
return /*#__PURE__*/React__default.createElement(BaseTable2, Object.assign({}, props, {
|