@economic/taco 1.38.2 → 1.40.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Provider/Localization.d.ts +15 -1
- package/dist/components/Table2/Table2.d.ts +16 -1
- package/dist/components/Table2/components/column/Base.d.ts +2 -0
- package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +1 -0
- package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
- package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
- package/dist/components/Table2/types.d.ts +11 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -3
- package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +15 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +33 -13
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +3 -3
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +4 -2
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +79 -24
- package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +14 -6
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +63 -0
- package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +3 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +7 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +46 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +4 -0
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js +1 -1
- package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
- package/dist/taco.cjs.development.js +259 -57
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -3
- package/types.json +189 -29
@@ -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, {
|