@economic/taco 2.41.3 → 2.42.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/dist/components/AlertDialog/AlertDialog.d.ts +2 -0
  2. package/dist/components/AlertDialog/components/Content.d.ts +1 -1
  3. package/dist/components/Table3/util/editing.d.ts +2 -1
  4. package/dist/esm/index.css +2 -2
  5. package/dist/esm/packages/taco/src/components/AlertDialog/AlertDialog.js.map +1 -1
  6. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js +31 -3
  7. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Card/Card.js +7 -5
  9. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Popover/Primitives.js +2 -1
  11. package/dist/esm/packages/taco/src/components/Popover/Primitives.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +7 -4
  15. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +6 -5
  17. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  18. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/util.js +3 -1
  19. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  20. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +1 -2
  21. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  22. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js +1 -1
  23. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +1 -3
  24. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  25. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js +1 -1
  26. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  27. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +1 -1
  28. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  29. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/util.js +5 -7
  30. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/util.js.map +1 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +1 -2
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  33. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  34. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +3 -1
  35. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  36. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +4 -2
  37. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  38. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -17
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +62 -0
  41. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -0
  42. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js +1 -15
  43. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  44. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +37 -7
  45. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  46. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +22 -8
  47. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  48. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js +4 -6
  49. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -1
  50. package/dist/index.css +2 -2
  51. package/dist/primitives/Table/types.d.ts +1 -1
  52. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -2
  53. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +12 -0
  54. package/dist/primitives/Table/useTableManager/util/filtering.d.ts +0 -2
  55. package/dist/primitives/Table/useTableManager/util/search.d.ts +6 -2
  56. package/dist/primitives/Table/useTableManager/util/setup.d.ts +3 -2
  57. package/dist/primitives/Table/useTableManager/util/sorting.d.ts +2 -1
  58. package/dist/taco.cjs.development.js +324 -228
  59. package/dist/taco.cjs.development.js.map +1 -1
  60. package/dist/taco.cjs.production.min.js +1 -1
  61. package/dist/taco.cjs.production.min.js.map +1 -1
  62. package/package.json +2 -2
@@ -3911,12 +3911,38 @@ const getDialogSizeClassnames = size => {
3911
3911
  const getDialogPositionClassnames = () => 'mt-16 mx-auto';
3912
3912
  const getDialogStylingClassnames = () => 'bg-white rounded animate-[fade-in_150ms] shadow-[0_6px_9px_0_rgba(89,85,98,0.3),0_0_1px_0_rgba(89,85,98,0.2)]';
3913
3913
 
3914
+ const iconPropsByVariant = variant => {
3915
+ switch (variant) {
3916
+ case 'information':
3917
+ return {
3918
+ color: 'blue',
3919
+ icon: 'info'
3920
+ };
3921
+ case 'error':
3922
+ return {
3923
+ color: 'red',
3924
+ icon: 'close'
3925
+ };
3926
+ case 'warning':
3927
+ return {
3928
+ color: 'yellow',
3929
+ icon: 'warning'
3930
+ };
3931
+ default:
3932
+ return undefined;
3933
+ }
3934
+ };
3914
3935
  const Title = /*#__PURE__*/React.forwardRef(function AlertDialogTitle(props, ref) {
3915
- const className = cn('text-center', props.className);
3936
+ const {
3937
+ props: parentProps
3938
+ } = useCurrentAlertDialog();
3939
+ const iconProps = iconPropsByVariant(parentProps.variant);
3916
3940
  return /*#__PURE__*/React.createElement(AlertDialogPrimitive.Title, Object.assign({}, props, {
3917
- className: className,
3941
+ className: cn('flex items-center', props.className),
3918
3942
  ref: ref
3919
- }));
3943
+ }), iconProps ? /*#__PURE__*/React.createElement(BadgeIcon, Object.assign({}, iconProps, {
3944
+ className: "mr-2"
3945
+ })) : undefined, props.children);
3920
3946
  });
3921
3947
  const Content = /*#__PURE__*/React.forwardRef(function AlertDialogContent(props, ref) {
3922
3948
  const className = cn('p-6', getDialogPositionClassnames(), getDialogStylingClassnames(), getDialogSizeClassnames('dialog'));
@@ -5060,14 +5086,16 @@ const Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
5060
5086
  const {
5061
5087
  title,
5062
5088
  menu,
5063
- children
5089
+ children,
5090
+ className,
5091
+ ...otherProps
5064
5092
  } = props;
5065
- const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', props.className);
5066
- return /*#__PURE__*/React.createElement("div", {
5067
- className: className,
5093
+ const cardClassName = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', className);
5094
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, otherProps, {
5095
+ className: cardClassName,
5068
5096
  "data-taco": "card",
5069
5097
  ref: ref
5070
- }, /*#__PURE__*/React.createElement("div", {
5098
+ }), /*#__PURE__*/React.createElement("div", {
5071
5099
  className: "mx-4 mb-2 mt-4 flex justify-between"
5072
5100
  }, title && (/*#__PURE__*/React.createElement(Truncate, {
5073
5101
  tooltip: title
@@ -6294,7 +6322,8 @@ const UnstyledArrow = /*#__PURE__*/React.forwardRef(function PopoverArrow(props,
6294
6322
  transform: 'rotateZ(180deg)'
6295
6323
  }
6296
6324
  }), /*#__PURE__*/React.createElement("path", {
6297
- className: "text-grey-300 fill-current group-focus:text-blue-300",
6325
+ // rgba(89, 85, 98, 0.35) is the primary color of the yt-shadow, giving the arrow a shadow-like appearance
6326
+ className: "text-[rgba(89, 85, 98, 0.35)] fill-current",
6298
6327
  d: "M23.7,27.1L17,19.9C16.5,19.3,15.8,19,15,19s-1.6,0.3-2.1,0.9l-6.6,7.2C5.3,28.1,3.4,29,2,29h26 C26.7,29,24.6,28.1,23.7,27.1z"
6299
6328
  }), /*#__PURE__*/React.createElement("path", {
6300
6329
  className: "fill-current",
@@ -9746,136 +9775,6 @@ const Provider = props => {
9746
9775
  })(exports.FontSizes || (exports.FontSizes = {}));
9747
9776
  const fixedForwardRef = React__default.forwardRef;
9748
9777
 
9749
- function getSortingFn(dataType, customFnOrBuiltIn) {
9750
- if (typeof customFnOrBuiltIn === 'function') {
9751
- return (rowA, rowB, columnId) => customFnOrBuiltIn(rowA.original, rowB.original, columnId);
9752
- }
9753
- // if a built in is being used, just return that
9754
- if (customFnOrBuiltIn) {
9755
- return customFnOrBuiltIn;
9756
- }
9757
- // some times we alias based on the type
9758
- if (dataType && dataType !== 'boolean' && dataType !== 'number') {
9759
- return dataType;
9760
- }
9761
- // otherwise fall back to auto
9762
- return 'auto';
9763
- }
9764
-
9765
- function isInternalColumn(id) {
9766
- return id === null || id === void 0 ? void 0 : id.startsWith('__');
9767
- }
9768
- // column widths
9769
- const getCellMinWidth = (fontSize = 'medium') => {
9770
- switch (fontSize) {
9771
- case exports.FontSizes.small:
9772
- return 57;
9773
- case exports.FontSizes.large:
9774
- return 83;
9775
- default:
9776
- case exports.FontSizes.medium:
9777
- return 72;
9778
- }
9779
- };
9780
- // highlighting
9781
- function isCellHighlighted(query, value, dataType) {
9782
- if (value === undefined || value === null) {
9783
- return false;
9784
- }
9785
- return String(getCellValueAsString(value, dataType)).toLocaleLowerCase().includes(query.toLocaleLowerCase());
9786
- }
9787
- function getCellValueAsString(value, dataType) {
9788
- if (value === undefined || value === null) {
9789
- return '';
9790
- } else if (dateFns.isDate(value)) {
9791
- var _format;
9792
- return (_format = format(value)) !== null && _format !== void 0 ? _format : '';
9793
- } else if (dataType === 'datetime' && typeof value === 'string') {
9794
- var _format2;
9795
- return (_format2 = format(parseFromISOString(value))) !== null && _format2 !== void 0 ? _format2 : '';
9796
- }
9797
- return String(value);
9798
- }
9799
- function orderColumn(column, {
9800
- orderingDisabled,
9801
- orderingEnabled
9802
- }) {
9803
- const groupedColumn = column;
9804
- if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {
9805
- groupedColumn.columns.forEach(subcolumn => orderColumn(subcolumn, {
9806
- orderingDisabled,
9807
- orderingEnabled
9808
- }));
9809
- } else {
9810
- var _column$meta;
9811
- if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
9812
- orderingEnabled.push(column.id);
9813
- } else {
9814
- orderingDisabled.push(column.id);
9815
- }
9816
- }
9817
- }
9818
- // ordering
9819
- function ensureOrdering(columns, settingsOrder, pinnedOrder = [], internalColumnsPinnedToTheRight = ['__actions']) {
9820
- // internal columns come with a defined order
9821
- const internalColumns = columns.filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id))).map(column => column.id);
9822
- // columns with ordering disabled should be moved to the front
9823
- const orderingDisabled = [];
9824
- let orderingEnabled = [];
9825
- let orderedColumns = columns;
9826
- // if settings is defined, make sure the columns that are actual children are sorted by it
9827
- if (Array.isArray(settingsOrder)) {
9828
- orderedColumns = columns.slice().sort(
9829
- // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end
9830
- (a, b) => (settingsOrder.indexOf(a.id) >>> 0) - (settingsOrder.indexOf(b.id) >>> 0));
9831
- }
9832
- orderedColumns.forEach(column => {
9833
- if (isInternalColumn(column.id)) {
9834
- return;
9835
- }
9836
- orderColumn(column, {
9837
- orderingDisabled,
9838
- orderingEnabled
9839
- });
9840
- });
9841
- if (settingsOrder && settingsOrder.length > 0) {
9842
- const columnsAbsentInSettingsOrder = [];
9843
- orderingEnabled = orderingEnabled.reduce((acc, column) => {
9844
- const index = settingsOrder.indexOf(column);
9845
- if (index > -1) {
9846
- acc[index] = column;
9847
- } else {
9848
- columnsAbsentInSettingsOrder.push(column);
9849
- }
9850
- return acc;
9851
- }, []).filter(column => !!column)
9852
- // Append absent columns at the end
9853
- .concat(columnsAbsentInSettingsOrder);
9854
- }
9855
- // if pinned columns are defined, make sure they are sorted first, this ensures state matches the freezing "upto" behaviour
9856
- if (Array.isArray(pinnedOrder)) {
9857
- orderingEnabled.sort(
9858
- // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end
9859
- (a, b) => (pinnedOrder.indexOf(a) >>> 0) - (pinnedOrder.indexOf(b) >>> 0));
9860
- }
9861
- const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
9862
- // actions should always be last, enforce that
9863
- internalColumnsPinnedToTheRight.forEach(id => {
9864
- if (columns.findIndex(column => column.id === id) > -1) {
9865
- order.push(id);
9866
- }
9867
- });
9868
- return order;
9869
- }
9870
- // freezing - we use the react-table pinning state, but that requires some mapping between them
9871
- function unfreezeAllExternalColumns(leftPinnedState) {
9872
- var _leftPinnedState$filt;
9873
- return (_leftPinnedState$filt = leftPinnedState === null || leftPinnedState === void 0 ? void 0 : leftPinnedState.filter(id => isInternalColumn(id) && id !== '__actions')) !== null && _leftPinnedState$filt !== void 0 ? _leftPinnedState$filt : [];
9874
- }
9875
- function freezeUptoExternalColumn(index, columns) {
9876
- return columns.slice(0, index + 1);
9877
- }
9878
-
9879
9778
  // filtering
9880
9779
  (function (TableFilterComparator) {
9881
9780
  TableFilterComparator[TableFilterComparator["Contains"] = 0] = "Contains";
@@ -9899,6 +9798,74 @@ function freezeUptoExternalColumn(index, columns) {
9899
9798
  TableServerLoadAllState[TableServerLoadAllState["Completed"] = 2] = "Completed";
9900
9799
  })(exports.TableServerLoadAllState || (exports.TableServerLoadAllState = {}));
9901
9800
 
9801
+ const dataTypes = {
9802
+ auto: {
9803
+ sortingFn: 'auto',
9804
+ filterComparators: [exports.TableFilterComparator.Contains, exports.TableFilterComparator.DoesNotContain, exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty]
9805
+ },
9806
+ // base
9807
+ text: {
9808
+ sortingFn: 'alphanumeric',
9809
+ filterComparators: [exports.TableFilterComparator.Contains, exports.TableFilterComparator.DoesNotContain, exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty]
9810
+ },
9811
+ number: {
9812
+ sortingFn: 'basic',
9813
+ filterComparators: [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsGreaterThan, exports.TableFilterComparator.IsLessThan, exports.TableFilterComparator.IsGreaterThanOrEqualTo, exports.TableFilterComparator.IsLessThanOrEqualTo, exports.TableFilterComparator.IsBetween, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty]
9814
+ },
9815
+ datetime: {
9816
+ sortingFn: 'datetime',
9817
+ filterComparators: [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsGreaterThan, exports.TableFilterComparator.IsLessThan, exports.TableFilterComparator.IsGreaterThanOrEqualTo, exports.TableFilterComparator.IsLessThanOrEqualTo, exports.TableFilterComparator.IsBetween, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty],
9818
+ getDisplayValue: (value, options) => {
9819
+ if (value === undefined) {
9820
+ return '';
9821
+ }
9822
+ if (dateFns.isDate(value)) {
9823
+ var _format, _options$localization;
9824
+ return (_format = format(value, options === null || options === void 0 ? void 0 : (_options$localization = options.localization) === null || _options$localization === void 0 ? void 0 : _options$localization.formatting.date)) !== null && _format !== void 0 ? _format : '';
9825
+ } else if (typeof value === 'string') {
9826
+ var _format2, _options$localization2;
9827
+ return (_format2 = format(parseFromISOString(value), options === null || options === void 0 ? void 0 : (_options$localization2 = options.localization) === null || _options$localization2 === void 0 ? void 0 : _options$localization2.formatting.date)) !== null && _format2 !== void 0 ? _format2 : '';
9828
+ }
9829
+ return String(value);
9830
+ }
9831
+ },
9832
+ boolean: {
9833
+ sortingFn: 'basic',
9834
+ filterComparators: [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo]
9835
+ },
9836
+ // advanced
9837
+ amount: {
9838
+ align: 'right',
9839
+ sortingFn: 'basic',
9840
+ filterComparators: [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsGreaterThan, exports.TableFilterComparator.IsLessThan, exports.TableFilterComparator.IsGreaterThanOrEqualTo, exports.TableFilterComparator.IsLessThanOrEqualTo, exports.TableFilterComparator.IsBetween, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty],
9841
+ getDisplayValue: (value, options) => {
9842
+ var _options$localization3;
9843
+ if (value === undefined) {
9844
+ return '';
9845
+ }
9846
+ return new Intl.NumberFormat(options === null || options === void 0 ? void 0 : (_options$localization3 = options.localization) === null || _options$localization3 === void 0 ? void 0 : _options$localization3.locale, {
9847
+ minimumFractionDigits: 2
9848
+ }).format(Number(value));
9849
+ }
9850
+ }
9851
+ };
9852
+ function getDataTypeProperties(dataType) {
9853
+ var _dataTypes;
9854
+ return (_dataTypes = dataTypes[dataType !== null && dataType !== void 0 ? dataType : 'text']) !== null && _dataTypes !== void 0 ? _dataTypes : dataTypes.text;
9855
+ }
9856
+
9857
+ function getSortingFn(dataType, customFnOrBuiltIn) {
9858
+ // custom functions should override any that come from dataType
9859
+ if (typeof customFnOrBuiltIn === 'function') {
9860
+ return (rowA, rowB, columnId) => customFnOrBuiltIn(rowA.original, rowB.original, columnId);
9861
+ }
9862
+ // if a built in is being used, just return that
9863
+ if (customFnOrBuiltIn) {
9864
+ return customFnOrBuiltIn;
9865
+ }
9866
+ return getDataTypeProperties(dataType).sortingFn;
9867
+ }
9868
+
9902
9869
  const toLowerCase = value => String(value !== null && value !== void 0 ? value : '').toLocaleLowerCase();
9903
9870
  const isWeakContains = (left, right) => toLowerCase(left).includes(toLowerCase(right));
9904
9871
  const isWeakEqual$1 = (left, right) => toLowerCase(left) === toLowerCase(right);
@@ -10009,19 +9976,189 @@ function columnFilterFn(value, filter) {
10009
9976
  return true;
10010
9977
  }
10011
9978
  }
10012
- function globalFilterFn(row, columnId, searchQuery) {
9979
+
9980
+ function isMatched(searchQuery, cellValue, dataType, localization) {
9981
+ const cellValueAsString = String(cellValue !== null && cellValue !== void 0 ? cellValue : '');
9982
+ if (cellValueAsString !== undefined && isWeakContains(cellValueAsString, searchQuery)) {
9983
+ return true;
9984
+ } else {
9985
+ const dataTypeProperties = getDataTypeProperties(dataType);
9986
+ if (dataTypeProperties.getDisplayValue) {
9987
+ const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, {
9988
+ localization
9989
+ });
9990
+ if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, searchQuery)) {
9991
+ return true;
9992
+ }
9993
+ }
9994
+ }
9995
+ return false;
9996
+ }
9997
+ function globalFilterFn(row, columnId, searchQuery, localization) {
10013
9998
  try {
10014
9999
  if (row.original) {
10015
10000
  var _row$_getAllCellsByCo, _row$_getAllCellsByCo2;
10001
+ const cellValue = row.original[columnId];
10016
10002
  const dataType = (_row$_getAllCellsByCo = row._getAllCellsByColumnId()[columnId]) === null || _row$_getAllCellsByCo === void 0 ? void 0 : (_row$_getAllCellsByCo2 = _row$_getAllCellsByCo.column.columnDef.meta) === null || _row$_getAllCellsByCo2 === void 0 ? void 0 : _row$_getAllCellsByCo2.dataType;
10017
- const cellValue = getCellValueAsString(row.original[columnId], dataType);
10018
- return isWeakContains(cellValue, searchQuery);
10003
+ return isMatched(searchQuery, cellValue, dataType, localization);
10019
10004
  }
10020
10005
  } catch {
10021
10006
  // we don't care, just fail silently and return no results
10022
10007
  }
10023
10008
  return false;
10024
10009
  }
10010
+ function resetHighlightedColumnIndexes(searchQuery, table, localization) {
10011
+ const tableMeta = table.options.meta;
10012
+ let firstRowIndex;
10013
+ if (searchQuery) {
10014
+ const indexes = [];
10015
+ const columns = table.getVisibleLeafColumns();
10016
+ const rowGrouping = table.getState().grouping;
10017
+ table.getRowModel().rows.forEach((row, rowIndex) => {
10018
+ columns.forEach((column, columnIndex) => {
10019
+ try {
10020
+ let allowSearch = true;
10021
+ if (rowGrouping !== null && rowGrouping !== void 0 && rowGrouping.length) {
10022
+ // if it's the grouped row, only allow search of the grouped column - because that's all that's visible
10023
+ if (row.getIsGrouped()) {
10024
+ allowSearch = column.getIsGrouped();
10025
+ }
10026
+ // otherwise for other rows, don't search the grouped column - because it isn't visible
10027
+ else if (rowGrouping.includes(column.id)) {
10028
+ allowSearch = false;
10029
+ }
10030
+ }
10031
+ if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {
10032
+ var _column$columnDef$met;
10033
+ const cellValue = get(row.original, column.id);
10034
+ const dataType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType;
10035
+ if (isMatched(searchQuery, cellValue, dataType, localization)) {
10036
+ indexes.push([rowIndex, columnIndex]);
10037
+ }
10038
+ }
10039
+ } catch (e) {
10040
+ //
10041
+ }
10042
+ });
10043
+ });
10044
+ tableMeta.search.setHighlightedColumnIndexes(indexes);
10045
+ if (indexes.length) {
10046
+ firstRowIndex = indexes[0][0];
10047
+ tableMeta.search.setCurrentHighlightColumnIndex(0);
10048
+ } else {
10049
+ tableMeta.search.setCurrentHighlightColumnIndex(undefined);
10050
+ }
10051
+ } else {
10052
+ tableMeta.search.setHighlightedColumnIndexes([]);
10053
+ tableMeta.search.setCurrentHighlightColumnIndex(undefined);
10054
+ }
10055
+ if (firstRowIndex !== undefined) {
10056
+ tableMeta.rowActive.setRowActiveIndex(firstRowIndex);
10057
+ }
10058
+ return firstRowIndex;
10059
+ }
10060
+
10061
+ function isInternalColumn(id) {
10062
+ return id === null || id === void 0 ? void 0 : id.startsWith('__');
10063
+ }
10064
+ // column widths
10065
+ const getCellMinWidth = (fontSize = 'medium') => {
10066
+ switch (fontSize) {
10067
+ case exports.FontSizes.small:
10068
+ return 57;
10069
+ case exports.FontSizes.large:
10070
+ return 83;
10071
+ default:
10072
+ case exports.FontSizes.medium:
10073
+ return 72;
10074
+ }
10075
+ };
10076
+ // highlighting
10077
+ function isCellHighlighted(query, value, dataType, localization) {
10078
+ if (value === undefined || value === null) {
10079
+ return false;
10080
+ }
10081
+ return isMatched(query, value, dataType, localization);
10082
+ }
10083
+ function orderColumn(column, {
10084
+ orderingDisabled,
10085
+ orderingEnabled
10086
+ }) {
10087
+ const groupedColumn = column;
10088
+ if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {
10089
+ groupedColumn.columns.forEach(subcolumn => orderColumn(subcolumn, {
10090
+ orderingDisabled,
10091
+ orderingEnabled
10092
+ }));
10093
+ } else {
10094
+ var _column$meta;
10095
+ if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
10096
+ orderingEnabled.push(column.id);
10097
+ } else {
10098
+ orderingDisabled.push(column.id);
10099
+ }
10100
+ }
10101
+ }
10102
+ // ordering
10103
+ function ensureOrdering(columns, settingsOrder, pinnedOrder = [], internalColumnsPinnedToTheRight = ['__actions']) {
10104
+ // internal columns come with a defined order
10105
+ const internalColumns = columns.filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id))).map(column => column.id);
10106
+ // columns with ordering disabled should be moved to the front
10107
+ const orderingDisabled = [];
10108
+ let orderingEnabled = [];
10109
+ let orderedColumns = columns;
10110
+ // if settings is defined, make sure the columns that are actual children are sorted by it
10111
+ if (Array.isArray(settingsOrder)) {
10112
+ orderedColumns = columns.slice().sort(
10113
+ // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end
10114
+ (a, b) => (settingsOrder.indexOf(a.id) >>> 0) - (settingsOrder.indexOf(b.id) >>> 0));
10115
+ }
10116
+ orderedColumns.forEach(column => {
10117
+ if (isInternalColumn(column.id)) {
10118
+ return;
10119
+ }
10120
+ orderColumn(column, {
10121
+ orderingDisabled,
10122
+ orderingEnabled
10123
+ });
10124
+ });
10125
+ if (settingsOrder && settingsOrder.length > 0) {
10126
+ const columnsAbsentInSettingsOrder = [];
10127
+ orderingEnabled = orderingEnabled.reduce((acc, column) => {
10128
+ const index = settingsOrder.indexOf(column);
10129
+ if (index > -1) {
10130
+ acc[index] = column;
10131
+ } else {
10132
+ columnsAbsentInSettingsOrder.push(column);
10133
+ }
10134
+ return acc;
10135
+ }, []).filter(column => !!column)
10136
+ // Append absent columns at the end
10137
+ .concat(columnsAbsentInSettingsOrder);
10138
+ }
10139
+ // if pinned columns are defined, make sure they are sorted first, this ensures state matches the freezing "upto" behaviour
10140
+ if (Array.isArray(pinnedOrder)) {
10141
+ orderingEnabled.sort(
10142
+ // the magic >>> 0 here ensures that columns that aren't found in settings, but are children, are pushed to the end
10143
+ (a, b) => (pinnedOrder.indexOf(a) >>> 0) - (pinnedOrder.indexOf(b) >>> 0));
10144
+ }
10145
+ const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
10146
+ // actions should always be last, enforce that
10147
+ internalColumnsPinnedToTheRight.forEach(id => {
10148
+ if (columns.findIndex(column => column.id === id) > -1) {
10149
+ order.push(id);
10150
+ }
10151
+ });
10152
+ return order;
10153
+ }
10154
+ // freezing - we use the react-table pinning state, but that requires some mapping between them
10155
+ function unfreezeAllExternalColumns(leftPinnedState) {
10156
+ var _leftPinnedState$filt;
10157
+ return (_leftPinnedState$filt = leftPinnedState === null || leftPinnedState === void 0 ? void 0 : leftPinnedState.filter(id => isInternalColumn(id) && id !== '__actions')) !== null && _leftPinnedState$filt !== void 0 ? _leftPinnedState$filt : [];
10158
+ }
10159
+ function freezeUptoExternalColumn(index, columns) {
10160
+ return columns.slice(0, index + 1);
10161
+ }
10025
10162
 
10026
10163
  function getSettings(table) {
10027
10164
  const meta = table.options.meta;
@@ -10054,7 +10191,7 @@ function ignoreInternalColumns(data) {
10054
10191
  }
10055
10192
 
10056
10193
  // mapping children to react-table columns
10057
- function processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId) {
10194
+ function processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId, localization) {
10058
10195
  const columnHelper = reactTable.createColumnHelper();
10059
10196
  if (/*#__PURE__*/React__default.isValidElement(child) && child.props.children) {
10060
10197
  const {
@@ -10065,11 +10202,12 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10065
10202
  columns.push(columnHelper.group({
10066
10203
  id,
10067
10204
  header,
10068
- columns: React__default.Children.toArray(children).reduce((columns, child) => processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId), []),
10205
+ columns: React__default.Children.toArray(children).reduce((columns, child) => processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId, localization), []),
10069
10206
  // we don't want to let column groups be grouped/aggregrated
10070
10207
  enableGrouping: false
10071
10208
  }));
10072
10209
  } else if (/*#__PURE__*/React__default.isValidElement(child) && (child.props.accessor || child.props.id)) {
10210
+ var _meta$align;
10073
10211
  const {
10074
10212
  id: untypedId,
10075
10213
  accessor: accessorKey = untypedId,
@@ -10098,6 +10236,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10098
10236
  ...meta
10099
10237
  } = child.props;
10100
10238
  const id = untypedId;
10239
+ const dataTypeProperties = getDataTypeProperties(child.props.dataType);
10101
10240
  if (defaultHidden && enableHiding) {
10102
10241
  defaultVisibility[id] = false;
10103
10242
  }
@@ -10130,6 +10269,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10130
10269
  // meta
10131
10270
  meta: {
10132
10271
  ...meta,
10272
+ align: (_meta$align = meta.align) !== null && _meta$align !== void 0 ? _meta$align : dataTypeProperties.align,
10133
10273
  defaultWidth,
10134
10274
  enableOrdering: isGrouped ? false : enableOrdering,
10135
10275
  enablePrinting,
@@ -10139,9 +10279,18 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10139
10279
  renderer
10140
10280
  }
10141
10281
  };
10142
- // renderers
10282
+ // renderers - use defined renderers first, then fall back to data type renderers (if there is one)
10143
10283
  if (typeof renderer === 'function') {
10144
10284
  column.cell = info => renderer(info.getValue(), info.row.original);
10285
+ } else if (dataTypeProperties.getDisplayValue) {
10286
+ const dataTypeRenderer = value => {
10287
+ var _dataTypeProperties$g, _dataTypeProperties$g2;
10288
+ return (_dataTypeProperties$g = (_dataTypeProperties$g2 = dataTypeProperties.getDisplayValue) === null || _dataTypeProperties$g2 === void 0 ? void 0 : _dataTypeProperties$g2.call(dataTypeProperties, value, {
10289
+ localization
10290
+ })) !== null && _dataTypeProperties$g !== void 0 ? _dataTypeProperties$g : value;
10291
+ };
10292
+ column.cell = info => dataTypeRenderer(info.getValue());
10293
+ column.meta.renderer = dataTypeRenderer;
10145
10294
  }
10146
10295
  if (typeof footer === 'function') {
10147
10296
  column.footer = info => footer(info.table.getRowModel().rows.flatMap(row => row.original !== undefined ? row.original : []));
@@ -10195,7 +10344,7 @@ function createInternalColumn(id, column, defaultSizing) {
10195
10344
  }
10196
10345
  };
10197
10346
  }
10198
- function mapTableChildrenToColumns(props, settings, options, internalColumns) {
10347
+ function mapTableChildrenToColumns(props, settings, options, internalColumns, localization) {
10199
10348
  const {
10200
10349
  children,
10201
10350
  defaultRowGroupColumnId
@@ -10203,7 +10352,7 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
10203
10352
  const defaultSizing = {};
10204
10353
  const defaultSorting = [];
10205
10354
  const defaultVisibility = {};
10206
- const columns = React__default.Children.toArray(children).reduce((columns, child) => processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId), []);
10355
+ const columns = React__default.Children.toArray(children).reduce((columns, child) => processChildren(child, columns, defaultSizing, defaultSorting, defaultVisibility, settings, defaultRowGroupColumnId, localization), []);
10207
10356
  if (internalColumns) {
10208
10357
  var _props$rowActions;
10209
10358
  if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {
@@ -10230,7 +10379,7 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
10230
10379
  defaultVisibility
10231
10380
  };
10232
10381
  }
10233
- function configureReactTableOptions(options, props) {
10382
+ function configureReactTableOptions(options, props, localization) {
10234
10383
  var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
10235
10384
  const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
10236
10385
  // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,
@@ -10277,7 +10426,7 @@ function configureReactTableOptions(options, props) {
10277
10426
  if (options.enableSearch) {
10278
10427
  // always set these because enableGlobalFilter can be toggled on and off by the user
10279
10428
  tableOptions.getFilteredRowModel = reactTable.getFilteredRowModel();
10280
- tableOptions.globalFilterFn = globalFilterFn;
10429
+ tableOptions.globalFilterFn = (row, columnId, searchQuery) => globalFilterFn(row, columnId, searchQuery, localization);
10281
10430
  tableOptions.getColumnCanGlobalFilter = column => {
10282
10431
  var _column$columnDef$met, _column$columnDef$met2;
10283
10432
  return (_column$columnDef$met = (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.enableSearch) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : true;
@@ -11394,64 +11543,14 @@ function useTableRowSelectionListener(table, onRowSelect) {
11394
11543
  }, [!!table.options.enableRowSelection, !!table.options.enableMultiRowSelection, JSON.stringify(rowSelection)]);
11395
11544
  }
11396
11545
 
11397
- function resetHighlightedColumnIndexes(value, table) {
11398
- const tableMeta = table.options.meta;
11399
- let firstRowIndex;
11400
- if (value) {
11401
- const indexes = [];
11402
- const columns = table.getVisibleLeafColumns();
11403
- const rowGrouping = table.getState().grouping;
11404
- table.getRowModel().rows.forEach((row, rowIndex) => {
11405
- columns.forEach((column, columnIndex) => {
11406
- try {
11407
- let allowSearch = true;
11408
- if (rowGrouping !== null && rowGrouping !== void 0 && rowGrouping.length) {
11409
- // if it's the grouped row, only allow search of the grouped column - because that's all that's visible
11410
- if (row.getIsGrouped()) {
11411
- allowSearch = column.getIsGrouped();
11412
- }
11413
- // otherwise for other rows, don't search the grouped column - because it isn't visible
11414
- else if (rowGrouping.includes(column.id)) {
11415
- allowSearch = false;
11416
- }
11417
- }
11418
- if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {
11419
- var _column$columnDef$met;
11420
- const cellValue = getCellValueAsString(get(row.original, column.id), (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType);
11421
- // indexes don't map to sorted data
11422
- if (cellValue !== undefined && isWeakContains(cellValue, value)) {
11423
- indexes.push([rowIndex, columnIndex]);
11424
- }
11425
- }
11426
- } catch (e) {
11427
- //
11428
- }
11429
- });
11430
- });
11431
- tableMeta.search.setHighlightedColumnIndexes(indexes);
11432
- if (indexes.length) {
11433
- firstRowIndex = indexes[0][0];
11434
- tableMeta.search.setCurrentHighlightColumnIndex(0);
11435
- } else {
11436
- tableMeta.search.setCurrentHighlightColumnIndex(undefined);
11437
- }
11438
- } else {
11439
- tableMeta.search.setHighlightedColumnIndexes([]);
11440
- tableMeta.search.setCurrentHighlightColumnIndex(undefined);
11441
- }
11442
- if (firstRowIndex !== undefined) {
11443
- tableMeta.rowActive.setRowActiveIndex(firstRowIndex);
11444
- }
11445
- return firstRowIndex;
11446
- }
11447
-
11448
11546
  function useTableSearchListener(table, onChangeSearch) {
11449
11547
  const meta = table.options.meta;
11548
+ const localization = useLocalization();
11450
11549
  // recalculates highlighted indexes whenever something important changes
11451
11550
  React__default.useEffect(() => {
11452
11551
  if (meta.search.isEnabled) {
11453
11552
  const query = table.getState().globalFilter;
11454
- resetHighlightedColumnIndexes(query, table);
11553
+ resetHighlightedColumnIndexes(query, table, localization);
11455
11554
  if (typeof onChangeSearch === 'function') {
11456
11555
  onChangeSearch(query);
11457
11556
  }
@@ -11571,6 +11670,7 @@ function useTableRowDrop(isEnabled = false, onRowDrop) {
11571
11670
  const DEFAULT_EMPTY_ARRAY = [];
11572
11671
  function useTableManager(props, meta, internalColumns) {
11573
11672
  var _props$data, _props$length, _meta$editing, _instance$options$met;
11673
+ const localization = useLocalization();
11574
11674
  // CSS.escape would be best here, but it doesn't seem to work very well
11575
11675
  const safeId = props.id.replace('.', '_');
11576
11676
  // configure table options, merging props with presets
@@ -11603,7 +11703,7 @@ function useTableManager(props, meta, internalColumns) {
11603
11703
  const {
11604
11704
  columns,
11605
11705
  ...defaultState
11606
- } = mapTableChildrenToColumns(props, settings, options, internalColumns);
11706
+ } = mapTableChildrenToColumns(props, settings, options, internalColumns, localization);
11607
11707
  // configure initial table state
11608
11708
  const initialState = useReactTableInitialState(props, columns, settings, defaultState);
11609
11709
  // create a react-table instance
@@ -11614,7 +11714,7 @@ function useTableManager(props, meta, internalColumns) {
11614
11714
  initialState,
11615
11715
  getCoreRowModel: reactTable.getCoreRowModel(),
11616
11716
  // configure react-table built-in features
11617
- ...configureReactTableOptions(options, props),
11717
+ ...configureReactTableOptions(options, props, localization),
11618
11718
  // settings that can be toggled by the user, and therefore require our own state
11619
11719
  enableGlobalFilter: search.enableGlobalFilter,
11620
11720
  // custom context
@@ -11718,9 +11818,8 @@ function useTableStyleGrid(tableId, table, fontSize) {
11718
11818
  // printing grid
11719
11819
  // we have to be specific so that nested tables don't inherit the same css
11720
11820
  const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\n`).join(',');
11721
- // Ensure that tfoot cells are not hidden so that the summary and footer cells appear in the printed document
11722
11821
  const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }
11723
- table[data-taco^='table']#${tableId} &:not(tfoot) [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;
11822
+ table[data-taco^='table']#${tableId} [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; }}`;
11724
11823
  return {
11725
11824
  style,
11726
11825
  stylesheet
@@ -12569,6 +12668,7 @@ function getCellAttributes(cell, index, isHighlighted) {
12569
12668
  };
12570
12669
  }
12571
12670
  function useSearchHighlighting(cell, cellIndex, ref) {
12671
+ const localization = useLocalization();
12572
12672
  const {
12573
12673
  rowIndex
12574
12674
  } = React__default.useContext(RowContext);
@@ -12581,7 +12681,7 @@ function useSearchHighlighting(cell, cellIndex, ref) {
12581
12681
  }
12582
12682
  let isHighlighted = false;
12583
12683
  if (context.table.getState().globalFilter) {
12584
- isHighlighted = isCellHighlighted(context.table.getState().globalFilter, cell.getValue(), columnMeta.dataType);
12684
+ isHighlighted = isCellHighlighted(context.table.getState().globalFilter, cell.getValue(), columnMeta.dataType, localization);
12585
12685
  }
12586
12686
  if (!isHighlighted || tableMeta.search.currentHighlightColumnIndex === undefined) {
12587
12687
  return undefined;
@@ -12965,7 +13065,7 @@ function Resizer(props) {
12965
13065
  }
12966
13066
  };
12967
13067
  const handle = /*#__PURE__*/React__default.createElement("div", {
12968
- className: cn('invisible absolute right-0 top-0 z-10 -mr-2 flex h-full w-4 cursor-col-resize touch-none select-none justify-center rounded py-0.5', 'group-hover/header:visible print:hidden', '[th:last-child>&]:!mr-0 [th:last-child>&]:w-2', {
13068
+ className: cn('invisible absolute right-0 top-0 z-10 -mr-2 flex h-full w-4 cursor-col-resize touch-none select-none justify-center rounded py-0.5', 'group-hover/header:visible', '[th:last-child>&]:!mr-0 [th:last-child>&]:w-2', {
12969
13069
  '!visible': isResizing
12970
13070
  }),
12971
13071
  onClick: handleClick,
@@ -13200,9 +13300,7 @@ function HeaderMenu(props) {
13200
13300
  // visible - expanded
13201
13301
  'aria-expanded:!w-6 aria-expanded:!min-w-[theme(spacing.6)]',
13202
13302
  // visible - focus
13203
- 'focus:!w-6 focus:!min-w-[theme(spacing.6)]',
13204
- // print styles
13205
- 'print:!hidden', {
13303
+ 'focus:!w-6 focus:!min-w-[theme(spacing.6)]', {
13206
13304
  '!w-6 !min-w-[theme(spacing.6)]': !!popoverElement
13207
13305
  }, props.className);
13208
13306
  return /*#__PURE__*/React__default.createElement(IconButton, {
@@ -13602,8 +13700,7 @@ function Summary(props) {
13602
13700
  count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
13603
13701
  }
13604
13702
  return /*#__PURE__*/React__default.createElement("div", {
13605
- // translate-y-1 is used to prevent the summary cell's box shadow from clipping the border
13606
- className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white] print:!translate-y-1",
13703
+ className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]",
13607
13704
  "data-taco": "table-footer-summary"
13608
13705
  }, label, "\u00A0", count);
13609
13706
  }
@@ -16080,16 +16177,13 @@ function guessComparatorsBasedOnControl(column) {
16080
16177
  }
16081
16178
  }
16082
16179
  }
16083
- if (columnMeta.dataType === 'number') {
16084
- return [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsGreaterThan, exports.TableFilterComparator.IsLessThan, exports.TableFilterComparator.IsBetween, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty];
16085
- }
16086
- if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {
16087
- return [exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsBetween, exports.TableFilterComparator.IsLessThan, exports.TableFilterComparator.IsGreaterThan, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty, exports.TableFilterComparator.IsLessThanOrEqualTo, exports.TableFilterComparator.IsGreaterThanOrEqualTo];
16180
+ if (columnMeta.control === 'datepicker') {
16181
+ return getDataTypeProperties('datetime').filterComparators;
16088
16182
  }
16089
16183
  if (columnMeta.control === 'switch') {
16090
- return [exports.TableFilterComparator.IsEqualTo];
16184
+ return getDataTypeProperties('boolean').filterComparators;
16091
16185
  }
16092
- return [exports.TableFilterComparator.Contains, exports.TableFilterComparator.DoesNotContain, exports.TableFilterComparator.IsEqualTo, exports.TableFilterComparator.IsNotEqualTo, exports.TableFilterComparator.IsEmpty, exports.TableFilterComparator.IsNotEmpty];
16186
+ return getDataTypeProperties(columnMeta.dataType).filterComparators;
16093
16187
  }
16094
16188
 
16095
16189
  const FilterColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
@@ -18246,11 +18340,11 @@ function useTableEditingListener(table, tableRef) {
18246
18340
  }, [saveChanges, tableMeta.editing.isEditing]);
18247
18341
  }
18248
18342
 
18249
- function willRowMove(cell, change, rowIndex) {
18343
+ function willRowMove(cell, change, rowIndex, localization) {
18250
18344
  const {
18251
18345
  table
18252
18346
  } = cell.getContext();
18253
- if (willRowMoveAfterSearch(cell, change, table)) {
18347
+ if (willRowMoveAfterSearch(cell, change, table, localization)) {
18254
18348
  return 'search';
18255
18349
  } else if (willRowMoveAfterFilter(cell, change)) {
18256
18350
  return 'filter';
@@ -18259,7 +18353,7 @@ function willRowMove(cell, change, rowIndex) {
18259
18353
  }
18260
18354
  return undefined;
18261
18355
  }
18262
- function willRowMoveAfterSearch(cell, change, table) {
18356
+ function willRowMoveAfterSearch(cell, change, table, localization) {
18263
18357
  const searchQuery = table.getState().globalFilter;
18264
18358
  if (!table.options.enableGlobalFilter || !searchQuery) {
18265
18359
  return false;
@@ -18271,7 +18365,7 @@ function willRowMoveAfterSearch(cell, change, table) {
18271
18365
  [cell.column.id]: change
18272
18366
  }
18273
18367
  };
18274
- return !globalFilterFn(rowWithChange, cell.column.id, searchQuery);
18368
+ return !globalFilterFn(rowWithChange, cell.column.id, searchQuery, localization);
18275
18369
  }
18276
18370
  function willRowMoveAfterFilter(cell, change) {
18277
18371
  if (!cell.column.getIsFiltered()) {
@@ -18503,7 +18597,7 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18503
18597
  [cell.column.id]: change
18504
18598
  };
18505
18599
  setPendingChanges(currentChanges => {
18506
- const nextChanges = createPendingChangesSetter(currentChanges, cell.row, rowIndex, changes);
18600
+ const nextChanges = createPendingChangesSetter(currentChanges, cell.row, rowIndex, changes, localization);
18507
18601
  pendingChangesUpdater.syncCellChanges(nextChanges);
18508
18602
  return nextChanges;
18509
18603
  });
@@ -18547,6 +18641,7 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18547
18641
  return Promise.reject(e);
18548
18642
  }
18549
18643
  };
18644
+ const localization = useLocalization();
18550
18645
  const [pendingChanges, setPendingChanges] = React__default.useState({});
18551
18646
  // we maintain save status as separate state because 'complete' needs to briefly show after pendingChanges are deleted
18552
18647
  const [saveStates, setSaveState] = React__default.useState({});
@@ -18680,6 +18775,7 @@ function useLastFocusedCellIndex() {
18680
18775
  return [lastFocusedCellIndexRef.current, setLastFocusedCellIndex];
18681
18776
  }
18682
18777
  function usePendingChangesUpdater(handleChange, setPendingChanges) {
18778
+ const localization = useLocalization();
18683
18779
  const updatersRef = React__default.useRef({});
18684
18780
  const runCellUpdates = React__default.useCallback(lodash.debounce(function (changes, cell, rowIndex) {
18685
18781
  try {
@@ -18695,7 +18791,7 @@ function usePendingChangesUpdater(handleChange, setPendingChanges) {
18695
18791
  };
18696
18792
  return Promise.resolve(handleChange(cell.column.id, changes[cell.column.id], nextValues, previousValues)).then(function (updates) {
18697
18793
  if (updates && Object.keys(updates).length) {
18698
- setPendingChanges(currentChanges => createPendingChangesSetter(currentChanges, cell.row, rowIndex, updates));
18794
+ setPendingChanges(currentChanges => createPendingChangesSetter(currentChanges, cell.row, rowIndex, updates, localization));
18699
18795
  }
18700
18796
  });
18701
18797
  }
@@ -18713,7 +18809,7 @@ function usePendingChangesUpdater(handleChange, setPendingChanges) {
18713
18809
  runCellUpdates
18714
18810
  };
18715
18811
  }
18716
- function createPendingChangesSetter(currentChanges, row, rowIndex, changes) {
18812
+ function createPendingChangesSetter(currentChanges, row, rowIndex, changes, localization) {
18717
18813
  var _currentChanges$row$i, _currentChanges$row$i2, _currentChanges$row$i3;
18718
18814
  // prepare
18719
18815
  const nextChanges = {
@@ -18740,7 +18836,7 @@ function createPendingChangesSetter(currentChanges, row, rowIndex, changes) {
18740
18836
  if (change !== row.original[accessor]) {
18741
18837
  rowChanges[accessor] = change;
18742
18838
  // determine if the row will move position based on this change, and save why it will move
18743
- const reason = willRowMove(cells[accessor], change, rowIndex);
18839
+ const reason = willRowMove(cells[accessor], change, rowIndex, localization);
18744
18840
  if (reason) {
18745
18841
  rowChanges._meta.moveReason[accessor] = reason;
18746
18842
  } else {
@@ -19613,7 +19709,7 @@ function CreateNewRowButton(props) {
19613
19709
  }, [rowCreated]);
19614
19710
  return /*#__PURE__*/React__default.createElement("tr", {
19615
19711
  onClick: handleCreate,
19616
- className: "border-grey-300 hover:bg-grey-100 group !sticky bottom-10 left-0 z-[21] !block cursor-pointer border-t print:!hidden"
19712
+ className: "border-grey-300 hover:bg-grey-100 group !sticky bottom-10 left-0 z-[21] !block cursor-pointer border-t"
19617
19713
  }, /*#__PURE__*/React__default.createElement("td", {
19618
19714
  className: "!border-t-0 !bg-transparent"
19619
19715
  }, /*#__PURE__*/React__default.createElement(Button$1, {