@economic/taco 2.2.5 → 2.4.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/Header/components/Agreement/types.d.ts +1 -1
- package/dist/components/Icon/components/PaymentPaid.d.ts +3 -0
- package/dist/components/Icon/components/PaymentUnpaid.d.ts +3 -0
- package/dist/components/Menu/Context.d.ts +2 -0
- package/dist/components/Menu/components/Item.d.ts +3 -2
- package/dist/components/Provider/Localization.d.ts +12 -0
- package/dist/components/Provider/Provider.d.ts +6 -1
- package/dist/components/Table2/types.d.ts +1 -1
- package/dist/components/Table3/Table3.d.ts +1 -1
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +1 -2
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.d.ts +4 -4
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterValue.d.ts +1 -1
- package/dist/components/Table3/hooks/features/useColumnFreezing.d.ts +2 -1
- package/dist/components/Table3/hooks/features/useSettings.d.ts +2 -0
- package/dist/components/Table3/hooks/listeners/useSettingsStateListener.d.ts +2 -2
- package/dist/components/Table3/hooks/useTable.d.ts +2 -1
- package/dist/components/Table3/types.d.ts +24 -12
- package/dist/esm/packages/taco/src/components/Menu/Context.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/Menu.js +1 -0
- package/dist/esm/packages/taco/src/components/Menu/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Content.js +32 -2
- package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Provider.js +11 -4
- package/dist/esm/packages/taco/src/components/Provider/Provider.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -1
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +13 -4
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js +7 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.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/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -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 +2 -2
- 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/header/Menu.js +4 -19
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +8 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +4 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +2 -24
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +68 -17
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +31 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +1 -5
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +18 -25
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +5 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +6 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +20 -16
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +18 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +2 -4
- 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 +18 -12
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/types.js +7 -5
- package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js +24 -6
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js.map +1 -1
- package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +34 -0
- package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useTacoSettings.js +9 -0
- package/dist/esm/packages/taco/src/hooks/useTacoSettings.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +1 -1
- package/dist/hooks/useLocalStorage.d.ts +1 -0
- package/dist/hooks/useTacoSettings.d.ts +1 -0
- package/dist/taco.cjs.development.js +367 -183
- 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 -2
- package/types.json +11451 -10602
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Comparator.d.ts +0 -11
|
@@ -4182,7 +4182,16 @@ const defaultLocalisationTexts = {
|
|
|
4182
4182
|
isNoneOf: 'Is none of',
|
|
4183
4183
|
isAllOf: 'Is all of',
|
|
4184
4184
|
isEmpty: 'Is empty',
|
|
4185
|
-
isNotEmpty: 'Is not empty'
|
|
4185
|
+
isNotEmpty: 'Is not empty',
|
|
4186
|
+
isBefore: 'Is before',
|
|
4187
|
+
isAfter: 'Is after',
|
|
4188
|
+
isOnOrBefore: 'Is on or before',
|
|
4189
|
+
isOnOrAfter: 'Is on or after',
|
|
4190
|
+
isLessThanOrEqualTo: 'Is less than or equal to',
|
|
4191
|
+
isGreaterThanOrEqualTo: 'Is greater than or equal to',
|
|
4192
|
+
hasAnyOf: 'Has any of',
|
|
4193
|
+
hasAllOf: 'Has all of',
|
|
4194
|
+
hasNoneOf: 'Has none of'
|
|
4186
4195
|
},
|
|
4187
4196
|
conditions: {
|
|
4188
4197
|
and: 'And',
|
|
@@ -4249,6 +4258,9 @@ const defaultLocalisationTexts = {
|
|
|
4249
4258
|
selectAllRows: 'Select all rows',
|
|
4250
4259
|
expandRow: 'Expand current row',
|
|
4251
4260
|
collapseRow: 'Collapse current row'
|
|
4261
|
+
},
|
|
4262
|
+
otherOptions: {
|
|
4263
|
+
tooltip: 'Other options'
|
|
4252
4264
|
}
|
|
4253
4265
|
},
|
|
4254
4266
|
searchInput: {
|
|
@@ -7228,6 +7240,35 @@ const Content$8 = /*#__PURE__*/React.forwardRef(function MenuContent(props, ref)
|
|
|
7228
7240
|
...otherProps
|
|
7229
7241
|
} = props;
|
|
7230
7242
|
const className = cn('border border-transparent rounded block outline-none p-1 yt-shadow wcag-white', props.className);
|
|
7243
|
+
// attach refs to each child
|
|
7244
|
+
const childrenRefs = React.useRef([]);
|
|
7245
|
+
const childrenWithRefs = React.Children.toArray(props.children).filter(child => !!child) // remove falsey children
|
|
7246
|
+
.map((child, index) => {
|
|
7247
|
+
childrenRefs.current[index] = /*#__PURE__*/React.createRef();
|
|
7248
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
7249
|
+
ref: childrenRefs.current[index]
|
|
7250
|
+
});
|
|
7251
|
+
});
|
|
7252
|
+
// register any shortcuts attached to children
|
|
7253
|
+
React.useEffect(() => {
|
|
7254
|
+
const shortcuts = [];
|
|
7255
|
+
childrenWithRefs.forEach((child, index) => {
|
|
7256
|
+
if (child.props.shortcut) {
|
|
7257
|
+
shortcuts.push(createShortcutKeyDownHandler(child.props.shortcut, event => {
|
|
7258
|
+
event.preventDefault();
|
|
7259
|
+
menu === null || menu === void 0 ? void 0 : menu.open();
|
|
7260
|
+
setTimeout(() => {
|
|
7261
|
+
var _childrenRefs$current, _childrenRefs$current2;
|
|
7262
|
+
return (_childrenRefs$current = childrenRefs.current[index]) === null || _childrenRefs$current === void 0 ? void 0 : (_childrenRefs$current2 = _childrenRefs$current.current) === null || _childrenRefs$current2 === void 0 ? void 0 : _childrenRefs$current2.click();
|
|
7263
|
+
}, 1);
|
|
7264
|
+
}));
|
|
7265
|
+
}
|
|
7266
|
+
});
|
|
7267
|
+
shortcuts.forEach(handler => document.addEventListener('keydown', handler));
|
|
7268
|
+
return () => {
|
|
7269
|
+
shortcuts.forEach(handler => document.removeEventListener('keydown', handler));
|
|
7270
|
+
};
|
|
7271
|
+
}, []);
|
|
7231
7272
|
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Portal, null, /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Content, Object.assign({}, otherProps, {
|
|
7232
7273
|
align: align,
|
|
7233
7274
|
className: className,
|
|
@@ -7238,7 +7279,7 @@ const Content$8 = /*#__PURE__*/React.forwardRef(function MenuContent(props, ref)
|
|
|
7238
7279
|
minWidth: menu === null || menu === void 0 ? void 0 : menu.minWidth
|
|
7239
7280
|
},
|
|
7240
7281
|
ref: internalRef
|
|
7241
|
-
}),
|
|
7282
|
+
}), childrenWithRefs));
|
|
7242
7283
|
});
|
|
7243
7284
|
|
|
7244
7285
|
const replaceWithShortform = key => {
|
|
@@ -7249,7 +7290,7 @@ const replaceWithShortform = key => {
|
|
|
7249
7290
|
return 'Del';
|
|
7250
7291
|
case 'Space':
|
|
7251
7292
|
case ' ':
|
|
7252
|
-
return '
|
|
7293
|
+
return 'Space';
|
|
7253
7294
|
case 'ArrowLeft':
|
|
7254
7295
|
return '◄';
|
|
7255
7296
|
case 'ArrowRight':
|
|
@@ -7663,6 +7704,7 @@ const Menu$1 = /*#__PURE__*/React.forwardRef(function Menu(externalProps, ref) {
|
|
|
7663
7704
|
registerIndentation: () => setIndented(true),
|
|
7664
7705
|
minWidth,
|
|
7665
7706
|
setMinWidth: width => setMinWidth(width),
|
|
7707
|
+
open: () => setOpen(true),
|
|
7666
7708
|
close: () => setOpen(false)
|
|
7667
7709
|
}), [indented, minWidth]);
|
|
7668
7710
|
return /*#__PURE__*/React.createElement(MenuContext.Provider, {
|
|
@@ -8724,14 +8766,21 @@ const ToastProvider = ({
|
|
|
8724
8766
|
};
|
|
8725
8767
|
const useToast = () => React.useContext(ToastContext);
|
|
8726
8768
|
|
|
8769
|
+
const TacoContext = /*#__PURE__*/React.createContext({
|
|
8770
|
+
uniqueUserIdentifier: ''
|
|
8771
|
+
});
|
|
8727
8772
|
const Provider = props => {
|
|
8728
8773
|
const {
|
|
8729
8774
|
children,
|
|
8730
|
-
localization
|
|
8775
|
+
localization,
|
|
8776
|
+
settings
|
|
8731
8777
|
} = props;
|
|
8778
|
+
const context = React.useMemo(() => settings, [JSON.stringify(settings)]);
|
|
8732
8779
|
return /*#__PURE__*/React.createElement(LocalizationProvider, {
|
|
8733
8780
|
localization: localization
|
|
8734
|
-
}, /*#__PURE__*/React.createElement(
|
|
8781
|
+
}, /*#__PURE__*/React.createElement(TacoContext.Provider, {
|
|
8782
|
+
value: context
|
|
8783
|
+
}, /*#__PURE__*/React.createElement(TooltipPrimitive.Provider, null, /*#__PURE__*/React.createElement(ToastProvider, null, children))));
|
|
8735
8784
|
};
|
|
8736
8785
|
|
|
8737
8786
|
const SearchInput = /*#__PURE__*/React.forwardRef(function SearchInput({
|
|
@@ -9468,16 +9517,25 @@ const EditPopover = props => {
|
|
|
9468
9517
|
setColor(initialColor);
|
|
9469
9518
|
};
|
|
9470
9519
|
const preventKeyDownPropagation = event => {
|
|
9471
|
-
|
|
9520
|
+
// Need to allow 'Escape', 'Tab', 'Shift + Tab' to support default focus and close behaviour of Radix Popover.
|
|
9521
|
+
if (event.key === 'Escape' || event.key === 'Tab' || event.key === 'Tab' && event.shiftKey) {
|
|
9522
|
+
return;
|
|
9523
|
+
} else {
|
|
9472
9524
|
event.stopPropagation();
|
|
9473
9525
|
}
|
|
9474
9526
|
};
|
|
9475
|
-
|
|
9476
|
-
|
|
9477
|
-
|
|
9527
|
+
const popoverContentKeyDown = event => {
|
|
9528
|
+
// Need to stop propagation of 'Tab', 'Shift + Tab' keys out of Popover content,
|
|
9529
|
+
// to avoid 'Tab' key execution on Option component and closing the dropdown.
|
|
9530
|
+
if (event.key === 'Tab' || event.key === 'Tab' && event.shiftKey) {
|
|
9531
|
+
event.stopPropagation();
|
|
9532
|
+
}
|
|
9533
|
+
};
|
|
9534
|
+
return /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps), /*#__PURE__*/React__default.createElement(Popover.Content, {
|
|
9478
9535
|
onCloseAutoFocus: handleCloseAutoFocus,
|
|
9479
9536
|
onInteractOutside: handleInteractOutside,
|
|
9480
9537
|
onClick: event => event.stopPropagation(),
|
|
9538
|
+
onKeyDown: popoverContentKeyDown,
|
|
9481
9539
|
placement: "right",
|
|
9482
9540
|
tabIndex: -1,
|
|
9483
9541
|
className: "focus:!shadow-none"
|
|
@@ -9984,7 +10042,8 @@ const Search$1 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
|
|
|
9984
10042
|
searchQuery,
|
|
9985
10043
|
setSearchQuery,
|
|
9986
10044
|
setValidationError,
|
|
9987
|
-
validationError
|
|
10045
|
+
validationError,
|
|
10046
|
+
setOpen
|
|
9988
10047
|
} = useSelect2Context();
|
|
9989
10048
|
const handleChange = event => {
|
|
9990
10049
|
if (validationError) {
|
|
@@ -9997,6 +10056,11 @@ const Search$1 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
|
|
|
9997
10056
|
if (event.key === ' ') {
|
|
9998
10057
|
return;
|
|
9999
10058
|
}
|
|
10059
|
+
// Select2 should close dropdown and receive focus, when user press Tab while searching (UX requirement to support better keyboard navigation)
|
|
10060
|
+
if (event.key === 'Tab') {
|
|
10061
|
+
setOpen(false);
|
|
10062
|
+
return;
|
|
10063
|
+
}
|
|
10000
10064
|
if (isAriaSelectionKey(event) || event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
10001
10065
|
var _listboxRef$current;
|
|
10002
10066
|
event.preventDefault();
|
|
@@ -10287,7 +10351,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
|
10287
10351
|
var _listboxRef$current;
|
|
10288
10352
|
if (open) {
|
|
10289
10353
|
event.preventDefault();
|
|
10290
|
-
} else if (event.key === 'ArrowDown') {
|
|
10354
|
+
} else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {
|
|
10291
10355
|
setOpen(true);
|
|
10292
10356
|
}
|
|
10293
10357
|
// the focus should always remain on the input, so we forward events on to the listbox
|
|
@@ -15695,20 +15759,6 @@ function isMenuAvailable(table, header) {
|
|
|
15695
15759
|
const tableMeta = table.options.meta;
|
|
15696
15760
|
return !!((_header$column$column = header.column.columnDef.meta) !== null && _header$column$column !== void 0 && _header$column$column.menu) || !!tableMeta.columnFreezing.isEnabled || !!table.options.enableHiding && !!header.column.getCanHide() || isGotoAvailable(table, header);
|
|
15697
15761
|
}
|
|
15698
|
-
function getInitialFrozenIndex(table) {
|
|
15699
|
-
const tableMeta = table.options.meta;
|
|
15700
|
-
let index = 0;
|
|
15701
|
-
if (tableMeta.rowDrag.isEnabled) {
|
|
15702
|
-
index++;
|
|
15703
|
-
}
|
|
15704
|
-
if (table.options.enableRowSelection) {
|
|
15705
|
-
index++;
|
|
15706
|
-
}
|
|
15707
|
-
if (table.options.enableExpanding) {
|
|
15708
|
-
index++;
|
|
15709
|
-
}
|
|
15710
|
-
return index;
|
|
15711
|
-
}
|
|
15712
15762
|
function Menu$3(props) {
|
|
15713
15763
|
const {
|
|
15714
15764
|
canFreeze,
|
|
@@ -15770,7 +15820,8 @@ function Menu$3(props) {
|
|
|
15770
15820
|
if (handleGoto) {
|
|
15771
15821
|
menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
|
|
15772
15822
|
icon: "move",
|
|
15773
|
-
onClick: () => setPopover('goto')
|
|
15823
|
+
onClick: () => setPopover('goto'),
|
|
15824
|
+
shortcut: "g"
|
|
15774
15825
|
}, texts.table3.columns.menu.gotoRow, "..."));
|
|
15775
15826
|
}
|
|
15776
15827
|
if (canHide) {
|
|
@@ -15782,10 +15833,8 @@ function Menu$3(props) {
|
|
|
15782
15833
|
}, texts.table3.columns.menu.hideColumn));
|
|
15783
15834
|
}
|
|
15784
15835
|
if (canFreeze) {
|
|
15785
|
-
const
|
|
15786
|
-
|
|
15787
|
-
};
|
|
15788
|
-
const frozenIndex = index - getInitialFrozenIndex(table);
|
|
15836
|
+
const frozenIndex = index - tableMeta.columnFreezing.frozenInternalColumnCount;
|
|
15837
|
+
const handleClick = () => tableMeta.columnFreezing.setFrozenColumnIndex(frozenIndex);
|
|
15789
15838
|
menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
|
|
15790
15839
|
icon: "column-freeze",
|
|
15791
15840
|
onClick: handleClick
|
|
@@ -16069,10 +16118,10 @@ function DisplayCell(props) {
|
|
|
16069
16118
|
}, [row.original, props.children, value]);
|
|
16070
16119
|
const memoedHighlight = React__default.useMemo(() => {
|
|
16071
16120
|
var _tableMeta$search$que;
|
|
16072
|
-
if (!tableMeta.search.isHighlightingEnabled) {
|
|
16121
|
+
if (!tableMeta.search.isHighlightingEnabled || !columnMeta.enableSearch) {
|
|
16073
16122
|
return false;
|
|
16074
16123
|
}
|
|
16075
|
-
if ((_tableMeta$search$que = tableMeta.search.query) !== null && _tableMeta$search$que !== void 0 && _tableMeta$search$que.length
|
|
16124
|
+
if ((_tableMeta$search$que = tableMeta.search.query) !== null && _tableMeta$search$que !== void 0 && _tableMeta$search$que.length) {
|
|
16076
16125
|
return isCellHighlighted(tableMeta.search.query, value, memoedProps.children);
|
|
16077
16126
|
}
|
|
16078
16127
|
return false;
|
|
@@ -16603,11 +16652,13 @@ var Table3FilterComparator;
|
|
|
16603
16652
|
Table3FilterComparator[Table3FilterComparator["IsGreaterThan"] = 4] = "IsGreaterThan";
|
|
16604
16653
|
Table3FilterComparator[Table3FilterComparator["IsLessThan"] = 5] = "IsLessThan";
|
|
16605
16654
|
Table3FilterComparator[Table3FilterComparator["IsBetween"] = 6] = "IsBetween";
|
|
16606
|
-
Table3FilterComparator[Table3FilterComparator["
|
|
16607
|
-
Table3FilterComparator[Table3FilterComparator["
|
|
16608
|
-
Table3FilterComparator[Table3FilterComparator["
|
|
16609
|
-
Table3FilterComparator[Table3FilterComparator["
|
|
16610
|
-
Table3FilterComparator[Table3FilterComparator["
|
|
16655
|
+
Table3FilterComparator[Table3FilterComparator["IsEmpty"] = 7] = "IsEmpty";
|
|
16656
|
+
Table3FilterComparator[Table3FilterComparator["IsNotEmpty"] = 8] = "IsNotEmpty";
|
|
16657
|
+
Table3FilterComparator[Table3FilterComparator["IsLessThanOrEqualTo"] = 9] = "IsLessThanOrEqualTo";
|
|
16658
|
+
Table3FilterComparator[Table3FilterComparator["IsGreaterThanOrEqualTo"] = 10] = "IsGreaterThanOrEqualTo";
|
|
16659
|
+
Table3FilterComparator[Table3FilterComparator["HasAnyOf"] = 11] = "HasAnyOf";
|
|
16660
|
+
Table3FilterComparator[Table3FilterComparator["HasAllOf"] = 12] = "HasAllOf";
|
|
16661
|
+
Table3FilterComparator[Table3FilterComparator["HasNoneOf"] = 13] = "HasNoneOf";
|
|
16611
16662
|
})(Table3FilterComparator || (Table3FilterComparator = {}));
|
|
16612
16663
|
|
|
16613
16664
|
const toLowerCase$1 = value => String(value !== null && value !== void 0 ? value : '').toLocaleLowerCase();
|
|
@@ -16669,6 +16720,24 @@ function columnFilterFn$1(value, filter) {
|
|
|
16669
16720
|
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;
|
|
16670
16721
|
}
|
|
16671
16722
|
}
|
|
16723
|
+
case Table3FilterComparator.IsLessThanOrEqualTo:
|
|
16724
|
+
{
|
|
16725
|
+
if (dateFns.isDate(value)) {
|
|
16726
|
+
return dateFns.isDate(filter.value) && (dateFns.isBefore(value, filter.value) || dateFns.isEqual(value, filter.value));
|
|
16727
|
+
} else {
|
|
16728
|
+
const valueAsNumber = parseInt(value);
|
|
16729
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber <= filter.value;
|
|
16730
|
+
}
|
|
16731
|
+
}
|
|
16732
|
+
case Table3FilterComparator.IsGreaterThanOrEqualTo:
|
|
16733
|
+
{
|
|
16734
|
+
if (dateFns.isDate(value)) {
|
|
16735
|
+
return dateFns.isDate(filter.value) && (dateFns.isAfter(value, filter.value) || dateFns.isEqual(value, filter.value));
|
|
16736
|
+
} else {
|
|
16737
|
+
const valueAsNumber = parseInt(value);
|
|
16738
|
+
return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber >= filter.value;
|
|
16739
|
+
}
|
|
16740
|
+
}
|
|
16672
16741
|
case Table3FilterComparator.IsBetween:
|
|
16673
16742
|
{
|
|
16674
16743
|
const [fromValue, toValue] = filter.value;
|
|
@@ -16692,11 +16761,11 @@ function columnFilterFn$1(value, filter) {
|
|
|
16692
16761
|
return true;
|
|
16693
16762
|
}
|
|
16694
16763
|
}
|
|
16695
|
-
case Table3FilterComparator.
|
|
16696
|
-
return Array.isArray(filter.value) ? filter.value.includes(
|
|
16697
|
-
case Table3FilterComparator.
|
|
16698
|
-
return Array.isArray(filter.value) ? filter.value.includes(
|
|
16699
|
-
case Table3FilterComparator.
|
|
16764
|
+
case Table3FilterComparator.HasAnyOf:
|
|
16765
|
+
return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.some(item => value.includes(item)) : false;
|
|
16766
|
+
case Table3FilterComparator.HasNoneOf:
|
|
16767
|
+
return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.every(item => value.includes(item) === false) : false;
|
|
16768
|
+
case Table3FilterComparator.HasAllOf:
|
|
16700
16769
|
return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.filter(v => value.includes(v)).length === filter.value.length : false;
|
|
16701
16770
|
}
|
|
16702
16771
|
return false;
|
|
@@ -16744,8 +16813,8 @@ function useCurrentRowListener(table) {
|
|
|
16744
16813
|
}, [rows.length]);
|
|
16745
16814
|
}
|
|
16746
16815
|
|
|
16747
|
-
function
|
|
16748
|
-
let index =
|
|
16816
|
+
function getFrozenInternalColumnCount(options) {
|
|
16817
|
+
let index = 0;
|
|
16749
16818
|
if (options.enableRowDrag) {
|
|
16750
16819
|
index++;
|
|
16751
16820
|
}
|
|
@@ -16755,7 +16824,7 @@ function getDefaultFrozenIndex(options, defaultFrozenIndex = -1) {
|
|
|
16755
16824
|
if (options.enableRowExpansion) {
|
|
16756
16825
|
index++;
|
|
16757
16826
|
}
|
|
16758
|
-
return index
|
|
16827
|
+
return index;
|
|
16759
16828
|
}
|
|
16760
16829
|
/*
|
|
16761
16830
|
Because of the desired behaviour of column freezing we use custom state and just an index.
|
|
@@ -16763,7 +16832,7 @@ If a frozen column is, for example, hidden, then the desired behaviour is that t
|
|
|
16763
16832
|
If this behaviour were different we would just use the native column pinning functionality
|
|
16764
16833
|
*/
|
|
16765
16834
|
function useColumnFreezing(defaultFrozenIndex, options) {
|
|
16766
|
-
const [frozenColumnIndex, _setFrozenColumnIndex] = React__default.useState(
|
|
16835
|
+
const [frozenColumnIndex, _setFrozenColumnIndex] = React__default.useState(() => defaultFrozenIndex);
|
|
16767
16836
|
const [horizontallyScrolled, setHorizontallyScrolled] = React__default.useState(false);
|
|
16768
16837
|
const onScroll = event => {
|
|
16769
16838
|
if (event.currentTarget.scrollLeft > 0 && !horizontallyScrolled) {
|
|
@@ -16772,11 +16841,13 @@ function useColumnFreezing(defaultFrozenIndex, options) {
|
|
|
16772
16841
|
setHorizontallyScrolled(false);
|
|
16773
16842
|
}
|
|
16774
16843
|
};
|
|
16775
|
-
const
|
|
16776
|
-
|
|
16777
|
-
|
|
16844
|
+
const frozenInternalColumnCount = React__default.useMemo(() => getFrozenInternalColumnCount(options), []);
|
|
16845
|
+
// we must set a value when undefined is explicitly set, otherwise nothing is saved to settings
|
|
16846
|
+
// and the next time the table loads it will fall back to the initial value even though the user changed it
|
|
16847
|
+
const setFrozenColumnIndex = index => _setFrozenColumnIndex(index !== null && index !== void 0 ? index : -1);
|
|
16778
16848
|
return {
|
|
16779
16849
|
isEnabled: options.enableColumnFreezing,
|
|
16850
|
+
frozenInternalColumnCount,
|
|
16780
16851
|
frozenColumnIndex,
|
|
16781
16852
|
setFrozenColumnIndex,
|
|
16782
16853
|
horizontallyScrolled,
|
|
@@ -16784,6 +16855,7 @@ function useColumnFreezing(defaultFrozenIndex, options) {
|
|
|
16784
16855
|
};
|
|
16785
16856
|
}
|
|
16786
16857
|
function useColumnFreezingStyle(tableId, table) {
|
|
16858
|
+
var _tableMeta$columnFree;
|
|
16787
16859
|
const {
|
|
16788
16860
|
columnOrder,
|
|
16789
16861
|
columnSizing,
|
|
@@ -16791,9 +16863,10 @@ function useColumnFreezingStyle(tableId, table) {
|
|
|
16791
16863
|
columnVisibility
|
|
16792
16864
|
} = table.getState();
|
|
16793
16865
|
const tableMeta = table.options.meta;
|
|
16866
|
+
const frozenColumnIndex = ((_tableMeta$columnFree = tableMeta.columnFreezing.frozenColumnIndex) !== null && _tableMeta$columnFree !== void 0 ? _tableMeta$columnFree : -1) + tableMeta.columnFreezing.frozenInternalColumnCount;
|
|
16794
16867
|
const style = React__default.useMemo(() => {
|
|
16795
|
-
if (tableMeta.columnFreezing.isEnabled &&
|
|
16796
|
-
const visibleFrozenColumns = table.getVisibleLeafColumns().slice(0,
|
|
16868
|
+
if (tableMeta.columnFreezing.isEnabled && frozenColumnIndex !== undefined) {
|
|
16869
|
+
const visibleFrozenColumns = table.getVisibleLeafColumns().slice(0, frozenColumnIndex + 1).map(column => column.id);
|
|
16797
16870
|
// if all frozen columns haven't had their size set yet, then abort
|
|
16798
16871
|
if (visibleFrozenColumns.every(id => columnSizing[id] === undefined)) {
|
|
16799
16872
|
return undefined;
|
|
@@ -16803,26 +16876,26 @@ function useColumnFreezingStyle(tableId, table) {
|
|
|
16803
16876
|
offsets[columnId] = offset;
|
|
16804
16877
|
return offset + columnSizing[columnId];
|
|
16805
16878
|
}, 0);
|
|
16806
|
-
const styles = [Object.values(offsets).map((offset, index) => `#${tableId} [role="row"] > :nth-child(${index + 1}) { left: ${offset}px }`).join('\n'), `#${tableId} [role="row"] > :not(:nth-child(n+${
|
|
16879
|
+
const styles = [Object.values(offsets).map((offset, index) => `#${tableId} [role="row"] > :nth-child(${index + 1}) { left: ${offset}px }`).join('\n'), `#${tableId} [role="row"] > :not(:nth-child(n+${frozenColumnIndex + 2})) {
|
|
16807
16880
|
position: sticky;
|
|
16808
|
-
z-index: 20;
|
|
16809
|
-
}`, `#${tableId}[data-horizontally-scrolled="true"] [role="row"] > :nth-child(${
|
|
16881
|
+
z-index: 20;
|
|
16882
|
+
}`, `#${tableId}[data-horizontally-scrolled="true"] [role="row"] > :nth-child(${frozenColumnIndex + 1}) {
|
|
16810
16883
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%), 1px 0px 0px #DDDDDD;
|
|
16811
16884
|
}`];
|
|
16812
|
-
const columnId = visibleFrozenColumns[
|
|
16885
|
+
const columnId = visibleFrozenColumns[frozenColumnIndex];
|
|
16813
16886
|
// frozenColumnIndex could not be in the visible frozen column so it is important to check if columnId
|
|
16814
16887
|
// exists before checking if it is internal.
|
|
16815
16888
|
//
|
|
16816
16889
|
// only add a border to the edge column if it isn't an internal column
|
|
16817
16890
|
if (columnId && !isInternalColumn$1(columnId)) {
|
|
16818
|
-
styles.push(`#${tableId}[data-horizontally-scrolled="false"] [role="row"] > :nth-child(${
|
|
16891
|
+
styles.push(`#${tableId}[data-horizontally-scrolled="false"] [role="row"] > :nth-child(${frozenColumnIndex + 1}) {
|
|
16819
16892
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 1px 0px 0px #DDDDDD;
|
|
16820
16893
|
}`);
|
|
16821
16894
|
}
|
|
16822
16895
|
return styles.join('\n');
|
|
16823
16896
|
}
|
|
16824
16897
|
return undefined;
|
|
16825
|
-
}, [columnOrder, columnSizing, columnSizingInfo, columnVisibility, tableMeta.columnFreezing.isEnabled,
|
|
16898
|
+
}, [columnOrder, columnSizing, columnSizingInfo, columnVisibility, tableMeta.columnFreezing.isEnabled, frozenColumnIndex]);
|
|
16826
16899
|
return style;
|
|
16827
16900
|
}
|
|
16828
16901
|
|
|
@@ -17662,7 +17735,12 @@ const Cell$4 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
|
|
|
17662
17735
|
}
|
|
17663
17736
|
tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
|
|
17664
17737
|
};
|
|
17665
|
-
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement(
|
|
17738
|
+
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
17739
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
|
|
17740
|
+
className: "ml-2",
|
|
17741
|
+
keys: "Space"
|
|
17742
|
+
}))
|
|
17743
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
|
17666
17744
|
"aria-label": title,
|
|
17667
17745
|
className: "!mt-0",
|
|
17668
17746
|
checked: isSelected,
|
|
@@ -17670,7 +17748,7 @@ const Cell$4 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
|
|
|
17670
17748
|
// this is necessary to remove console spam from eslint
|
|
17671
17749
|
onChange: () => false,
|
|
17672
17750
|
tabIndex: isCurrentRow ? 0 : -1
|
|
17673
|
-
}));
|
|
17751
|
+
})));
|
|
17674
17752
|
} else {
|
|
17675
17753
|
const className = cn('!mt-0', getRadioClassnames());
|
|
17676
17754
|
const handleClick = event => {
|
|
@@ -17897,7 +17975,7 @@ function getSortingFn$1(dataType, customFnOrBuiltIn) {
|
|
|
17897
17975
|
return customFnOrBuiltIn;
|
|
17898
17976
|
}
|
|
17899
17977
|
// some times we alias based on the type
|
|
17900
|
-
if (dataType && dataType !== 'boolean') {
|
|
17978
|
+
if (dataType && dataType !== 'boolean' && dataType !== 'number') {
|
|
17901
17979
|
return dataType;
|
|
17902
17980
|
}
|
|
17903
17981
|
// otherwise fall back to auto
|
|
@@ -17952,11 +18030,9 @@ function useConvertChildrenToColumns(props, options, editing) {
|
|
|
17952
18030
|
control: child.props.control,
|
|
17953
18031
|
dataType: child.props.dataType,
|
|
17954
18032
|
enableOrdering: (_child$props$enableOr = child.props.enableOrdering) !== null && _child$props$enableOr !== void 0 ? _child$props$enableOr : true,
|
|
17955
|
-
// react-table global filtering only samples from row 0 in a dataset for filtering and this
|
|
17956
|
-
// leads to some columns being disabled if, e.g., a column in row 0 has an undefined value
|
|
17957
|
-
// so we do not use the native enableGlobalFilter property and instead use our own enableSearch
|
|
17958
18033
|
enableSearch: (_child$props$enableSe = child.props.enableSearch) !== null && _child$props$enableSe !== void 0 ? _child$props$enableSe : true,
|
|
17959
18034
|
enableTruncate: (_child$props$enableTr = child.props.enableTruncate) !== null && _child$props$enableTr !== void 0 ? _child$props$enableTr : false,
|
|
18035
|
+
filters: child.props.filters,
|
|
17960
18036
|
footer: child.props.footer,
|
|
17961
18037
|
header: child.props.header,
|
|
17962
18038
|
headerClassName: child.props.headerClassName,
|
|
@@ -18114,8 +18190,54 @@ function useRowActions$1(actionsForRow, actionsForRowLength = ACTIONS_ON_ROW_LEN
|
|
|
18114
18190
|
};
|
|
18115
18191
|
}
|
|
18116
18192
|
|
|
18193
|
+
const useLocalStorage = (key, initialValue) => {
|
|
18194
|
+
const [state, setState] = React__default.useState(() => {
|
|
18195
|
+
try {
|
|
18196
|
+
const localStorageValue = localStorage.getItem(key);
|
|
18197
|
+
if (typeof localStorageValue !== 'string') {
|
|
18198
|
+
localStorage.setItem(key, JSON.stringify(initialValue));
|
|
18199
|
+
return initialValue;
|
|
18200
|
+
} else {
|
|
18201
|
+
return JSON.parse(localStorageValue || 'null');
|
|
18202
|
+
}
|
|
18203
|
+
} catch {
|
|
18204
|
+
// If user is in private mode or has storage restriction
|
|
18205
|
+
// localStorage can throw. JSON.parse and JSON.stringify
|
|
18206
|
+
// can throw, too.
|
|
18207
|
+
return initialValue;
|
|
18208
|
+
}
|
|
18209
|
+
});
|
|
18210
|
+
React__default.useEffect(() => {
|
|
18211
|
+
try {
|
|
18212
|
+
const serializedState = JSON.stringify(state);
|
|
18213
|
+
localStorage.setItem(key, serializedState);
|
|
18214
|
+
} catch {
|
|
18215
|
+
// If user is in private mode or has storage restriction
|
|
18216
|
+
// localStorage can throw. Also JSON.stringify can throw.
|
|
18217
|
+
}
|
|
18218
|
+
}, [key, state]);
|
|
18219
|
+
const clear = () => localStorage.removeItem(key);
|
|
18220
|
+
return [state, setState, clear];
|
|
18221
|
+
};
|
|
18222
|
+
|
|
18223
|
+
function useTacoSettings() {
|
|
18224
|
+
return React__default.useContext(TacoContext);
|
|
18225
|
+
}
|
|
18226
|
+
|
|
18227
|
+
function useSettings(id, defaultSettings = {}, onChangeSettings) {
|
|
18228
|
+
const tacoSettings = useTacoSettings();
|
|
18229
|
+
const uniqueId = `taco.${tacoSettings.uniqueUserIdentifier}.table3.${id}.settings`;
|
|
18230
|
+
const [persistedSettings, setPersistedSettings] = useLocalStorage(uniqueId, defaultSettings);
|
|
18231
|
+
return React__default.useMemo(() => {
|
|
18232
|
+
if (onChangeSettings) {
|
|
18233
|
+
return [defaultSettings, onChangeSettings];
|
|
18234
|
+
}
|
|
18235
|
+
return [persistedSettings, setPersistedSettings];
|
|
18236
|
+
}, []);
|
|
18237
|
+
}
|
|
18238
|
+
|
|
18117
18239
|
function useTable$2(props) {
|
|
18118
|
-
var _ref,
|
|
18240
|
+
var _ref, _defaultSettings$colu, _defaultSettings$rowH, _props$length;
|
|
18119
18241
|
// options
|
|
18120
18242
|
const options = useTablePreset(props);
|
|
18121
18243
|
const tableOptions = {
|
|
@@ -18153,6 +18275,10 @@ function useTable$2(props) {
|
|
|
18153
18275
|
return false;
|
|
18154
18276
|
};
|
|
18155
18277
|
tableOptions.getFilteredRowModel = reactTable$1.getFilteredRowModel();
|
|
18278
|
+
tableOptions.getColumnCanGlobalFilter = column => {
|
|
18279
|
+
var _column$columnDef$met;
|
|
18280
|
+
return (_column$columnDef$met = column.columnDef.meta.enableSearch) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : true;
|
|
18281
|
+
};
|
|
18156
18282
|
}
|
|
18157
18283
|
// sorting
|
|
18158
18284
|
if (options.enableSorting) {
|
|
@@ -18163,24 +18289,25 @@ function useTable$2(props) {
|
|
|
18163
18289
|
tableOptions.getSortedRowModel = reactTable$1.getSortedRowModel();
|
|
18164
18290
|
}
|
|
18165
18291
|
}
|
|
18292
|
+
const [defaultSettings, setSettings] = useSettings(props.id, props.defaultSettings, props.onChangeSettings);
|
|
18166
18293
|
// custom features
|
|
18167
18294
|
const columnFreezing = useColumnFreezing( // temporarily see if deprecated frozenColumnCount is there
|
|
18168
|
-
(_ref = (
|
|
18295
|
+
(_ref = (_defaultSettings$colu = defaultSettings.columnFreezingIndex) !== null && _defaultSettings$colu !== void 0 ? _defaultSettings$colu : defaultSettings === null || defaultSettings === void 0 ? void 0 : defaultSettings.frozenColumnCount) !== null && _ref !== void 0 ? _ref : props.defaultColumnFreezingIndex, options);
|
|
18169
18296
|
const columnOrdering = useColumnOrdering(options);
|
|
18170
18297
|
const currentRow = useCurrentRow(props.defaultCurrentRowIndex);
|
|
18171
18298
|
const editing = useEditing(options.enableEditing, props.onSave);
|
|
18172
|
-
const fontSize = useFontSize(options.enableFontSize,
|
|
18299
|
+
const fontSize = useFontSize(options.enableFontSize, defaultSettings.fontSize);
|
|
18173
18300
|
const hoverState = usePauseHoverState();
|
|
18174
|
-
const printing = usePrinting(options.enablePrinting, props.loadAll,
|
|
18301
|
+
const printing = usePrinting(options.enablePrinting, props.loadAll, defaultSettings.showWarningWhenPrintingLargeDataset);
|
|
18175
18302
|
const rowActions = useRowActions$1(props.actionsForRow, props.actionsForRowLength);
|
|
18176
18303
|
const rowClick = useRowClick(props.onRowClick);
|
|
18177
18304
|
const rowDrag = useRowDrag(options.enableRowDrag);
|
|
18178
18305
|
const rowDrop = useRowDrop(options.enableRowDrop, props.onRowDrop);
|
|
18179
18306
|
const rowGoto = useRowGoto(options.enableRowGoto, props.onRowGoto);
|
|
18180
18307
|
const rowHeight = useRowHeight(options.enableRowHeight, // temporarily see if deprecated rowDensity is there
|
|
18181
|
-
(
|
|
18308
|
+
(_defaultSettings$rowH = defaultSettings.rowHeight) !== null && _defaultSettings$rowH !== void 0 ? _defaultSettings$rowH : defaultSettings === null || defaultSettings === void 0 ? void 0 : defaultSettings.rowDensity);
|
|
18182
18309
|
const rowSelection = useRowSelection();
|
|
18183
|
-
const search = useSearch(options.enableSearch,
|
|
18310
|
+
const search = useSearch(options.enableSearch, defaultSettings.excludeUnmatchedRecordsInSearch, props.loadAll);
|
|
18184
18311
|
// columns
|
|
18185
18312
|
const {
|
|
18186
18313
|
columns,
|
|
@@ -18190,13 +18317,13 @@ function useTable$2(props) {
|
|
|
18190
18317
|
} = useConvertChildrenToColumns(props, options, editing);
|
|
18191
18318
|
// built-in features
|
|
18192
18319
|
const initialState = React__default.useMemo(() => {
|
|
18193
|
-
var
|
|
18320
|
+
var _defaultSettings$colu2, _defaultSettings$colu3;
|
|
18194
18321
|
const sanitizeSortedColumns = column => columns.find(definedColumn => definedColumn.id === column.id);
|
|
18195
18322
|
return {
|
|
18196
|
-
columnOrder: ensureOrdering$1(columns,
|
|
18197
|
-
columnSizing: (
|
|
18198
|
-
columnVisibility: (
|
|
18199
|
-
sorting:
|
|
18323
|
+
columnOrder: ensureOrdering$1(columns, defaultSettings.columnOrder),
|
|
18324
|
+
columnSizing: (_defaultSettings$colu2 = defaultSettings.columnSizing) !== null && _defaultSettings$colu2 !== void 0 ? _defaultSettings$colu2 : defaultColumnSizing,
|
|
18325
|
+
columnVisibility: (_defaultSettings$colu3 = defaultSettings.columnVisibility) !== null && _defaultSettings$colu3 !== void 0 ? _defaultSettings$colu3 : defaultColumnVisibility,
|
|
18326
|
+
sorting: defaultSettings.sorting ? defaultSettings.sorting.filter(sanitizeSortedColumns) : defaultSorting
|
|
18200
18327
|
};
|
|
18201
18328
|
}, []);
|
|
18202
18329
|
const table = reactTable$1.useReactTable({
|
|
@@ -18230,7 +18357,7 @@ function useTable$2(props) {
|
|
|
18230
18357
|
useEditingStateListener(table);
|
|
18231
18358
|
useFilteringStateListener(table, props.onFilter);
|
|
18232
18359
|
useRowSelectionListener$1(table, props.onRowSelect);
|
|
18233
|
-
useSettingsStateListener$1(table,
|
|
18360
|
+
useSettingsStateListener$1(table, setSettings);
|
|
18234
18361
|
useShortcutsListener(table, props.shortcuts);
|
|
18235
18362
|
useServerLoadingListener(table, props.loadPage);
|
|
18236
18363
|
useSortingStateListener(table, props.onSort);
|
|
@@ -18808,12 +18935,12 @@ function resetHighlightedColumnIndexes(enabled, value, table) {
|
|
|
18808
18935
|
table.getRowModel().rows.forEach((row, rowIndex) => {
|
|
18809
18936
|
columns.forEach((column, columnIndex) => {
|
|
18810
18937
|
try {
|
|
18811
|
-
var _column$columnDef$met,
|
|
18812
|
-
if (
|
|
18938
|
+
var _format, _column$columnDef$met, _format2;
|
|
18939
|
+
if (row.original && globalFilterFn$1(
|
|
18813
18940
|
// if it's a date, format it first
|
|
18814
18941
|
dateFns.isDate(row.original[column.id]) ? (_format = format(row.original[column.id])) !== null && _format !== void 0 ? _format : '' :
|
|
18815
18942
|
// if its marked as a date but isn't a date, try to format it
|
|
18816
|
-
column.columnDef.meta.dataType === 'datetime' ? (_format2 = format(parseFromISOString(row.original[column.id]))) !== null && _format2 !== void 0 ? _format2 : '' :
|
|
18943
|
+
((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime' ? (_format2 = format(parseFromISOString(row.original[column.id]))) !== null && _format2 !== void 0 ? _format2 : '' :
|
|
18817
18944
|
// otherwise just string compare
|
|
18818
18945
|
String(row.original[column.id]), value)) {
|
|
18819
18946
|
indexes.push([rowIndex, columnIndex]);
|
|
@@ -18865,29 +18992,74 @@ function FilterColumn(props) {
|
|
|
18865
18992
|
|
|
18866
18993
|
function FilterComparator(props) {
|
|
18867
18994
|
const {
|
|
18995
|
+
column,
|
|
18868
18996
|
onChange: handleChange,
|
|
18869
18997
|
value,
|
|
18870
|
-
validComparators,
|
|
18871
18998
|
...attributes
|
|
18872
18999
|
} = props;
|
|
18873
19000
|
const {
|
|
18874
19001
|
texts
|
|
18875
19002
|
} = useLocalization();
|
|
19003
|
+
const validComparators = guessComparatorsBasedOnControl$1(column);
|
|
18876
19004
|
React__default.useEffect(() => {
|
|
18877
|
-
if (value === undefined) {
|
|
19005
|
+
if (value === undefined || !validComparators.includes(value)) {
|
|
18878
19006
|
handleChange === null || handleChange === void 0 ? void 0 : handleChange(validComparators[0]);
|
|
18879
19007
|
}
|
|
18880
|
-
}, []);
|
|
19008
|
+
}, [validComparators]);
|
|
18881
19009
|
return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
|
|
18882
19010
|
className: "!w-32 flex-shrink-0",
|
|
19011
|
+
disabled: !column,
|
|
18883
19012
|
onChange: handleChange,
|
|
18884
19013
|
value: value
|
|
18885
|
-
}), validComparators.map(
|
|
18886
|
-
key:
|
|
18887
|
-
value:
|
|
18888
|
-
}, getComparatorText$1(
|
|
19014
|
+
}), validComparators.map(comparator => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
|
19015
|
+
key: comparator,
|
|
19016
|
+
value: comparator
|
|
19017
|
+
}, getComparatorText$1(comparator, texts, column))));
|
|
18889
19018
|
}
|
|
18890
|
-
|
|
19019
|
+
function guessComparatorsBasedOnControl$1(column) {
|
|
19020
|
+
var _column$columnDef$met;
|
|
19021
|
+
const columnMeta = (_column$columnDef$met = column === null || column === void 0 ? void 0 : column.columnDef.meta) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : {};
|
|
19022
|
+
if (Array.isArray(columnMeta.filters)) {
|
|
19023
|
+
return columnMeta.filters;
|
|
19024
|
+
}
|
|
19025
|
+
if (typeof columnMeta.control === 'function') {
|
|
19026
|
+
const renderedControl = columnMeta.control({
|
|
19027
|
+
onBlur: () => undefined,
|
|
19028
|
+
onFocus: () => undefined,
|
|
19029
|
+
setValue: () => undefined,
|
|
19030
|
+
value: undefined,
|
|
19031
|
+
disabled: false,
|
|
19032
|
+
readOnly: false,
|
|
19033
|
+
ref: undefined
|
|
19034
|
+
});
|
|
19035
|
+
if ( /*#__PURE__*/React__default.isValidElement(renderedControl)) {
|
|
19036
|
+
const {
|
|
19037
|
+
props,
|
|
19038
|
+
type
|
|
19039
|
+
} = renderedControl;
|
|
19040
|
+
if (type.displayName === 'Select2') {
|
|
19041
|
+
if (props.multiple) {
|
|
19042
|
+
return [Table3FilterComparator.HasAnyOf, Table3FilterComparator.HasAllOf, Table3FilterComparator.IsEqualTo, Table3FilterComparator.HasNoneOf, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
19043
|
+
}
|
|
19044
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
19045
|
+
}
|
|
19046
|
+
}
|
|
19047
|
+
}
|
|
19048
|
+
// @ts-expect-error -- we ignore it because it conflicts with Table2 also overridding ColumnMeta
|
|
19049
|
+
if (columnMeta.dataType === 'number') {
|
|
19050
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
19051
|
+
}
|
|
19052
|
+
if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {
|
|
19053
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsBetween, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty, Table3FilterComparator.IsLessThanOrEqualTo, Table3FilterComparator.IsGreaterThanOrEqualTo];
|
|
19054
|
+
}
|
|
19055
|
+
if (columnMeta.control === 'switch') {
|
|
19056
|
+
return [Table3FilterComparator.IsEqualTo];
|
|
19057
|
+
}
|
|
19058
|
+
return [Table3FilterComparator.Contains, Table3FilterComparator.DoesNotContain, Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
19059
|
+
}
|
|
19060
|
+
function getComparatorText$1(comparator, texts, column) {
|
|
19061
|
+
var _column$columnDef, _column$columnDef$met2;
|
|
19062
|
+
const isDate = (column === null || column === void 0 ? void 0 : (_column$columnDef = column.columnDef) === null || _column$columnDef === void 0 ? void 0 : (_column$columnDef$met2 = _column$columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control) === 'datepicker';
|
|
18891
19063
|
switch (comparator) {
|
|
18892
19064
|
case Table3FilterComparator.Contains:
|
|
18893
19065
|
return texts.table3.filters.comparators.contains;
|
|
@@ -18898,23 +19070,61 @@ const getComparatorText$1 = (comparator, texts) => {
|
|
|
18898
19070
|
case Table3FilterComparator.IsNotEqualTo:
|
|
18899
19071
|
return texts.table3.filters.comparators.isNotEqualTo;
|
|
18900
19072
|
case Table3FilterComparator.IsGreaterThan:
|
|
18901
|
-
return texts.table3.filters.comparators.isGreaterThan;
|
|
19073
|
+
return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;
|
|
18902
19074
|
case Table3FilterComparator.IsLessThan:
|
|
18903
|
-
return texts.table3.filters.comparators.isLessThan;
|
|
19075
|
+
return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;
|
|
18904
19076
|
case Table3FilterComparator.IsBetween:
|
|
18905
19077
|
return texts.table3.filters.comparators.isBetween;
|
|
18906
|
-
case Table3FilterComparator.IsOneOf:
|
|
18907
|
-
return texts.table3.filters.comparators.isOneOf;
|
|
18908
|
-
case Table3FilterComparator.IsNoneOf:
|
|
18909
|
-
return texts.table3.filters.comparators.isNoneOf;
|
|
18910
|
-
case Table3FilterComparator.IsAllOf:
|
|
18911
|
-
return texts.table3.filters.comparators.isAllOf;
|
|
18912
19078
|
case Table3FilterComparator.IsEmpty:
|
|
18913
19079
|
return texts.table3.filters.comparators.isEmpty;
|
|
18914
19080
|
case Table3FilterComparator.IsNotEmpty:
|
|
18915
19081
|
return texts.table3.filters.comparators.isNotEmpty;
|
|
19082
|
+
case Table3FilterComparator.IsLessThanOrEqualTo:
|
|
19083
|
+
return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;
|
|
19084
|
+
case Table3FilterComparator.IsGreaterThanOrEqualTo:
|
|
19085
|
+
return isDate ? texts.table3.filters.comparators.isOnOrAfter : texts.table3.filters.comparators.isGreaterThanOrEqualTo;
|
|
19086
|
+
case Table3FilterComparator.HasAnyOf:
|
|
19087
|
+
return texts.table3.filters.comparators.hasAnyOf;
|
|
19088
|
+
case Table3FilterComparator.HasAllOf:
|
|
19089
|
+
return texts.table3.filters.comparators.hasAllOf;
|
|
19090
|
+
case Table3FilterComparator.HasNoneOf:
|
|
19091
|
+
return texts.table3.filters.comparators.hasNoneOf;
|
|
19092
|
+
default:
|
|
19093
|
+
return '';
|
|
18916
19094
|
}
|
|
18917
|
-
}
|
|
19095
|
+
}
|
|
19096
|
+
|
|
19097
|
+
function Placeholder(props) {
|
|
19098
|
+
const {
|
|
19099
|
+
allColumns,
|
|
19100
|
+
filters,
|
|
19101
|
+
onCreate: handleCreate,
|
|
19102
|
+
onRemove: handleRemove,
|
|
19103
|
+
position
|
|
19104
|
+
} = props;
|
|
19105
|
+
const {
|
|
19106
|
+
texts
|
|
19107
|
+
} = useLocalization();
|
|
19108
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
19109
|
+
className: "flex gap-2"
|
|
19110
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
19111
|
+
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
|
19112
|
+
}, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn, {
|
|
19113
|
+
allColumns: allColumns,
|
|
19114
|
+
filters: filters,
|
|
19115
|
+
onChange: handleCreate,
|
|
19116
|
+
value: null
|
|
19117
|
+
}), /*#__PURE__*/React__default.createElement(FilterComparator, null), /*#__PURE__*/React__default.createElement(Input, {
|
|
19118
|
+
"aria-label": texts.table3.filters.emptyFilter.value,
|
|
19119
|
+
className: "flex-grow",
|
|
19120
|
+
disabled: true,
|
|
19121
|
+
value: texts.table3.filters.emptyFilter.value
|
|
19122
|
+
}), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
|
|
19123
|
+
appearance: "discrete",
|
|
19124
|
+
icon: "close",
|
|
19125
|
+
onClick: handleRemove
|
|
19126
|
+
}) : null);
|
|
19127
|
+
}
|
|
18918
19128
|
|
|
18919
19129
|
function FilterValue(props) {
|
|
18920
19130
|
const {
|
|
@@ -18923,6 +19133,9 @@ function FilterValue(props) {
|
|
|
18923
19133
|
onChange: handleChange,
|
|
18924
19134
|
value
|
|
18925
19135
|
} = props;
|
|
19136
|
+
const {
|
|
19137
|
+
texts
|
|
19138
|
+
} = useLocalization();
|
|
18926
19139
|
if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {
|
|
18927
19140
|
return null;
|
|
18928
19141
|
}
|
|
@@ -18930,6 +19143,14 @@ function FilterValue(props) {
|
|
|
18930
19143
|
var _column$columnDef$met;
|
|
18931
19144
|
const fromValue = Array.isArray(value) ? value[0] : undefined;
|
|
18932
19145
|
const toValue = Array.isArray(value) ? value[1] : undefined;
|
|
19146
|
+
if (column === undefined) {
|
|
19147
|
+
return /*#__PURE__*/React__default.createElement(Input, {
|
|
19148
|
+
"aria-label": texts.table3.filters.emptyFilter.value,
|
|
19149
|
+
className: "flex-grow",
|
|
19150
|
+
disabled: true,
|
|
19151
|
+
value: texts.table3.filters.emptyFilter.value
|
|
19152
|
+
});
|
|
19153
|
+
}
|
|
18933
19154
|
if (((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime') {
|
|
18934
19155
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
18935
19156
|
className: "flex flex-grow items-center gap-2"
|
|
@@ -18958,6 +19179,7 @@ function FilterValue(props) {
|
|
|
18958
19179
|
}));
|
|
18959
19180
|
}
|
|
18960
19181
|
return /*#__PURE__*/React__default.createElement(Control$1, {
|
|
19182
|
+
comparator: comparator,
|
|
18961
19183
|
column: column,
|
|
18962
19184
|
onChange: handleChange,
|
|
18963
19185
|
value: value
|
|
@@ -18967,12 +19189,18 @@ function Control$1(props) {
|
|
|
18967
19189
|
var _column$columnDef$met2, _column$columnDef$met3;
|
|
18968
19190
|
const {
|
|
18969
19191
|
column,
|
|
19192
|
+
comparator,
|
|
18970
19193
|
onChange,
|
|
18971
19194
|
value,
|
|
18972
19195
|
...attributes
|
|
18973
19196
|
} = props;
|
|
18974
19197
|
const controlRenderer = (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control;
|
|
18975
19198
|
const dataType = (_column$columnDef$met3 = column.columnDef.meta) === null || _column$columnDef$met3 === void 0 ? void 0 : _column$columnDef$met3.dataType;
|
|
19199
|
+
React.useEffect(() => {
|
|
19200
|
+
if (controlRenderer === 'switch') {
|
|
19201
|
+
onChange(false);
|
|
19202
|
+
}
|
|
19203
|
+
}, []);
|
|
18976
19204
|
if (typeof controlRenderer === 'function') {
|
|
18977
19205
|
return controlRenderer({
|
|
18978
19206
|
...attributes,
|
|
@@ -18984,11 +19212,19 @@ function Control$1(props) {
|
|
|
18984
19212
|
onChange: event => onChange(event.detail),
|
|
18985
19213
|
value: value
|
|
18986
19214
|
}));
|
|
18987
|
-
} else if (controlRenderer === 'switch'
|
|
19215
|
+
} else if (controlRenderer === 'switch') {
|
|
18988
19216
|
return /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, attributes, {
|
|
19217
|
+
className: "m-1.5",
|
|
18989
19218
|
checked: Boolean(value),
|
|
18990
19219
|
onChange: onChange
|
|
18991
19220
|
}));
|
|
19221
|
+
} else if ((controlRenderer === 'input' || controlRenderer === undefined) && dataType === 'number') {
|
|
19222
|
+
return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
|
|
19223
|
+
className: cn(getInputAppearanceClassnames(), 'flex-grow'),
|
|
19224
|
+
type: "number",
|
|
19225
|
+
onChange: event => onChange(event.target.valueAsNumber),
|
|
19226
|
+
value: String(value !== null && value !== void 0 ? value : '')
|
|
19227
|
+
}));
|
|
18992
19228
|
}
|
|
18993
19229
|
return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
|
|
18994
19230
|
className: "flex-grow",
|
|
@@ -19056,8 +19292,8 @@ function Filter$1(props) {
|
|
|
19056
19292
|
onChange: handleChangeColumn,
|
|
19057
19293
|
value: id
|
|
19058
19294
|
}), /*#__PURE__*/React__default.createElement(FilterComparator, {
|
|
19295
|
+
column: column,
|
|
19059
19296
|
onChange: handleChangeComparator,
|
|
19060
|
-
validComparators: guessComparatorsBasedOnControl$1(),
|
|
19061
19297
|
value: comparator
|
|
19062
19298
|
}), /*#__PURE__*/React__default.createElement(FilterValue, {
|
|
19063
19299
|
column: column,
|
|
@@ -19071,63 +19307,6 @@ function Filter$1(props) {
|
|
|
19071
19307
|
onClick: handleRemove
|
|
19072
19308
|
}));
|
|
19073
19309
|
}
|
|
19074
|
-
function guessComparatorsBasedOnControl$1(instance, control) {
|
|
19075
|
-
if ( /*#__PURE__*/React__default.isValidElement(instance)) {
|
|
19076
|
-
const {
|
|
19077
|
-
props,
|
|
19078
|
-
type
|
|
19079
|
-
} = instance;
|
|
19080
|
-
if (type.displayName === 'Select2') {
|
|
19081
|
-
if (props.multiple) {
|
|
19082
|
-
return [Table3FilterComparator.IsOneOf, Table3FilterComparator.IsNoneOf, Table3FilterComparator.IsAllOf];
|
|
19083
|
-
}
|
|
19084
|
-
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo];
|
|
19085
|
-
}
|
|
19086
|
-
}
|
|
19087
|
-
switch (control) {
|
|
19088
|
-
case 'datepicker':
|
|
19089
|
-
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween];
|
|
19090
|
-
case 'switch':
|
|
19091
|
-
return [Table3FilterComparator.IsEqualTo];
|
|
19092
|
-
default:
|
|
19093
|
-
return [Table3FilterComparator.Contains, Table3FilterComparator.DoesNotContain, Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween];
|
|
19094
|
-
}
|
|
19095
|
-
}
|
|
19096
|
-
|
|
19097
|
-
function Placeholder(props) {
|
|
19098
|
-
const {
|
|
19099
|
-
allColumns,
|
|
19100
|
-
filters,
|
|
19101
|
-
onCreate: handleCreate,
|
|
19102
|
-
onRemove: handleRemove,
|
|
19103
|
-
position
|
|
19104
|
-
} = props;
|
|
19105
|
-
const {
|
|
19106
|
-
texts
|
|
19107
|
-
} = useLocalization();
|
|
19108
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
19109
|
-
className: "flex gap-2"
|
|
19110
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
19111
|
-
className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
|
|
19112
|
-
}, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn, {
|
|
19113
|
-
allColumns: allColumns,
|
|
19114
|
-
filters: filters,
|
|
19115
|
-
onChange: handleCreate,
|
|
19116
|
-
value: null
|
|
19117
|
-
}), /*#__PURE__*/React__default.createElement(FilterComparator, {
|
|
19118
|
-
disabled: true,
|
|
19119
|
-
validComparators: guessComparatorsBasedOnControl$1()
|
|
19120
|
-
}), /*#__PURE__*/React__default.createElement(Input, {
|
|
19121
|
-
"aria-label": texts.table3.filters.emptyFilter.value,
|
|
19122
|
-
className: "flex-grow",
|
|
19123
|
-
disabled: true,
|
|
19124
|
-
value: texts.table3.filters.emptyFilter.value
|
|
19125
|
-
}), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
|
|
19126
|
-
appearance: "discrete",
|
|
19127
|
-
icon: "close",
|
|
19128
|
-
onClick: handleRemove
|
|
19129
|
-
}) : null);
|
|
19130
|
-
}
|
|
19131
19310
|
|
|
19132
19311
|
function sortByHeader(a, b) {
|
|
19133
19312
|
var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
|
|
@@ -19191,7 +19370,9 @@ function Filters(props) {
|
|
|
19191
19370
|
//
|
|
19192
19371
|
const handleApply = () => {
|
|
19193
19372
|
table.setColumnFilters(filters.filter(f => {
|
|
19194
|
-
|
|
19373
|
+
var _allColumns$find$colu;
|
|
19374
|
+
const controlRenderer = (_allColumns$find$colu = allColumns.find(c => c.id === f.id).columnDef.meta) === null || _allColumns$find$colu === void 0 ? void 0 : _allColumns$find$colu.control;
|
|
19375
|
+
if (f.value.comparator === Table3FilterComparator.IsEmpty || f.value.comparator === Table3FilterComparator.IsNotEmpty || controlRenderer === 'switch') {
|
|
19195
19376
|
return true;
|
|
19196
19377
|
}
|
|
19197
19378
|
return !!f.value.value;
|
|
@@ -19396,6 +19577,11 @@ const PRINT_STYLES = `
|
|
|
19396
19577
|
width: auto !important;
|
|
19397
19578
|
}
|
|
19398
19579
|
|
|
19580
|
+
#root {
|
|
19581
|
+
/* chrome sometimes crops the bottom content of page and this padding will make sure that we see the whole content*/
|
|
19582
|
+
padding-bottom: 20px;
|
|
19583
|
+
}
|
|
19584
|
+
|
|
19399
19585
|
[role="table"] {
|
|
19400
19586
|
border-width: 0 !important;
|
|
19401
19587
|
overflow-y: hidden !important;
|
|
@@ -19476,30 +19662,9 @@ function PrintIFrame({
|
|
|
19476
19662
|
}) {
|
|
19477
19663
|
const [contentRef, setContentRef] = React__default.useState(null);
|
|
19478
19664
|
const [mountNode, setMountNode] = React__default.useState(null);
|
|
19665
|
+
const isFirefoxBrowser = React__default.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);
|
|
19479
19666
|
const iframeWindow = contentRef === null || contentRef === void 0 ? void 0 : contentRef.contentWindow;
|
|
19480
19667
|
const stylesReady = useParentStylesheets(iframeWindow);
|
|
19481
|
-
// Adds print events to the iframe window.
|
|
19482
|
-
React__default.useEffect(() => {
|
|
19483
|
-
if (iframeWindow === null || iframeWindow === undefined) {
|
|
19484
|
-
return;
|
|
19485
|
-
}
|
|
19486
|
-
// Add print events to the window
|
|
19487
|
-
if (onAfterPrint) {
|
|
19488
|
-
iframeWindow.addEventListener('afterprint', onAfterPrint);
|
|
19489
|
-
}
|
|
19490
|
-
if (onBeforePrint) {
|
|
19491
|
-
iframeWindow.addEventListener('beforeprint', onBeforePrint);
|
|
19492
|
-
}
|
|
19493
|
-
return () => {
|
|
19494
|
-
// Remove print events from the window
|
|
19495
|
-
if (onAfterPrint) {
|
|
19496
|
-
iframeWindow.removeEventListener('afterprint', onAfterPrint);
|
|
19497
|
-
}
|
|
19498
|
-
if (onBeforePrint) {
|
|
19499
|
-
iframeWindow.removeEventListener('beforeprint', onBeforePrint);
|
|
19500
|
-
}
|
|
19501
|
-
};
|
|
19502
|
-
}, [iframeWindow]);
|
|
19503
19668
|
// Calls print method when table has loaded in the iframe.
|
|
19504
19669
|
React__default.useEffect(() => {
|
|
19505
19670
|
let intervalId;
|
|
@@ -19510,7 +19675,8 @@ function PrintIFrame({
|
|
|
19510
19675
|
intervalId = setInterval(function () {
|
|
19511
19676
|
try {
|
|
19512
19677
|
const tableWrapper = mountNode;
|
|
19513
|
-
const
|
|
19678
|
+
const table = tableWrapper.querySelector('[role="table"]');
|
|
19679
|
+
const hasTableRendered = !!table;
|
|
19514
19680
|
if (hasTableRendered && intervalId) {
|
|
19515
19681
|
var _contentRef$contentWi;
|
|
19516
19682
|
clearInterval(intervalId);
|
|
@@ -19519,6 +19685,12 @@ function PrintIFrame({
|
|
|
19519
19685
|
// Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before
|
|
19520
19686
|
// the print dialog shows up, which results into having a visible loading toast.
|
|
19521
19687
|
onBeforePrint === null || onBeforePrint === void 0 ? void 0 : onBeforePrint();
|
|
19688
|
+
// By adding height to the tableWrapper, we make sure the content below absolutely positioned table
|
|
19689
|
+
// doesn't hide
|
|
19690
|
+
if (isFirefoxBrowser) {
|
|
19691
|
+
const tableHeight = `${table.offsetHeight}px`;
|
|
19692
|
+
tableWrapper.style.height = tableHeight;
|
|
19693
|
+
}
|
|
19522
19694
|
contentRef === null || contentRef === void 0 ? void 0 : (_contentRef$contentWi = contentRef.contentWindow) === null || _contentRef$contentWi === void 0 ? void 0 : _contentRef$contentWi.print();
|
|
19523
19695
|
// Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,
|
|
19524
19696
|
// like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog
|
|
@@ -19557,6 +19729,11 @@ function PrintIFrame({
|
|
|
19557
19729
|
tableWrapper.setAttribute('data-role', 'table-wrapper');
|
|
19558
19730
|
// Adding h-fit class makes sure that table is rendered with the whole content.
|
|
19559
19731
|
tableWrapper.classList.add('h-fit');
|
|
19732
|
+
tableWrapper.classList.add('[&>[role="table"]]:!h-fit');
|
|
19733
|
+
if (isFirefoxBrowser) {
|
|
19734
|
+
// Fix for firefox bug which adds page-long whitespace between page's top content and table
|
|
19735
|
+
tableWrapper.classList.add('[&>[role="table"]]:!absolute');
|
|
19736
|
+
}
|
|
19560
19737
|
// Safari print preview assigns no width to the table when w-screen class is used.
|
|
19561
19738
|
// By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome
|
|
19562
19739
|
// and safari will always take full page width.
|
|
@@ -19603,10 +19780,12 @@ function PrintIFrame({
|
|
|
19603
19780
|
};
|
|
19604
19781
|
// -top-60 -left-60 styles make sure that iframe is added outside of the viewport
|
|
19605
19782
|
return /*#__PURE__*/React__default.createElement("iframe", {
|
|
19606
|
-
ref: setContentRef,
|
|
19607
19783
|
className: "fixed -left-60 -top-60 !h-0 !w-0",
|
|
19608
19784
|
frameBorder: "0",
|
|
19609
|
-
|
|
19785
|
+
ref: setContentRef,
|
|
19786
|
+
scrolling: "no",
|
|
19787
|
+
// Temporary fix to support printing in firefox: Find another solution while upgrading React
|
|
19788
|
+
src: "javascript:void(0);"
|
|
19610
19789
|
}, mountNode && stylesReady ? /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React__default.createElement(Table3, Object.assign({}, printTableProps)), mountNode) : null);
|
|
19611
19790
|
}
|
|
19612
19791
|
|
|
@@ -19836,7 +20015,10 @@ function Toolbar(props) {
|
|
|
19836
20015
|
}) : null, tableMeta.printing.isEnabled ? /*#__PURE__*/React__default.createElement(PrintButton, {
|
|
19837
20016
|
table: table,
|
|
19838
20017
|
tableProps: tableProps
|
|
19839
|
-
}) : null, right, isMoreVisible(props) ? /*#__PURE__*/React__default.createElement(
|
|
20018
|
+
}) : null, right, isMoreVisible(props) ? /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
20019
|
+
title: texts.table3.otherOptions.tooltip
|
|
20020
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, {
|
|
20021
|
+
"aria-label": texts.table3.otherOptions.tooltip,
|
|
19840
20022
|
icon: "more",
|
|
19841
20023
|
menu: menuProps => /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, {
|
|
19842
20024
|
align: "end"
|
|
@@ -19851,7 +20033,7 @@ function Toolbar(props) {
|
|
|
19851
20033
|
table: table
|
|
19852
20034
|
})
|
|
19853
20035
|
}, texts.table3.fontSize.tooltip) : null))
|
|
19854
|
-
}) : null, tableMeta.search.isEnabled ? /*#__PURE__*/React__default.createElement(Search$3, {
|
|
20036
|
+
})) : null, tableMeta.search.isEnabled ? /*#__PURE__*/React__default.createElement(Search$3, {
|
|
19855
20037
|
scrollToIndex: scrollToIndex,
|
|
19856
20038
|
table: table
|
|
19857
20039
|
}) : null));
|
|
@@ -20222,9 +20404,10 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
|
|
|
20222
20404
|
}, EmptyState ? /*#__PURE__*/React__default.createElement(EmptyState, null) : null)));
|
|
20223
20405
|
});
|
|
20224
20406
|
const Table3 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
|
|
20407
|
+
const stringifiedChildren = String(props.children);
|
|
20225
20408
|
// we force a remount (using key) when the child columns change because there are too many places to add children as an effect
|
|
20226
20409
|
// this is cheaper from a complexity perspective, and probably performance wise as well
|
|
20227
|
-
const key = React__default.useMemo(() => String('tableKey_' +
|
|
20410
|
+
const key = React__default.useMemo(() => String('tableKey_' + stringifiedChildren), [stringifiedChildren]);
|
|
20228
20411
|
return /*#__PURE__*/React__default.createElement(Table$1, Object.assign({}, props, {
|
|
20229
20412
|
key: key,
|
|
20230
20413
|
ref: ref
|
|
@@ -21269,6 +21452,7 @@ exports.Table = Table;
|
|
|
21269
21452
|
exports.Table2 = Table2;
|
|
21270
21453
|
exports.Table3 = Table3;
|
|
21271
21454
|
exports.Tabs = Tabs;
|
|
21455
|
+
exports.TacoContext = TacoContext;
|
|
21272
21456
|
exports.Tag = Tag$1;
|
|
21273
21457
|
exports.Textarea = Textarea;
|
|
21274
21458
|
exports.Title = Title$3;
|