@economic/taco 2.43.0 → 2.44.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.
Files changed (58) hide show
  1. package/dist/components/Report/Report.d.ts +1 -1
  2. package/dist/components/Table3/features/useTableEditing.d.ts +8 -8
  3. package/dist/esm/index.css +44 -22
  4. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +7 -1
  5. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  6. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +3 -2
  7. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -1
  9. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -2
  11. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +6 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js +4 -3
  15. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +17 -3
  17. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +1 -11
  19. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +1 -1
  21. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js +7 -5
  23. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +36 -47
  25. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +9 -0
  27. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +1 -1
  29. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  30. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +3 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +0 -3
  33. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  34. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +1 -8
  35. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  36. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +85 -109
  37. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  38. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -9
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  41. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +12 -1
  42. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  43. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +1 -7
  44. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  45. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +17 -10
  46. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  47. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +4 -6
  48. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  49. package/dist/index.css +44 -22
  50. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.d.ts +1 -2
  51. package/dist/primitives/Table/types.d.ts +0 -1
  52. package/dist/primitives/Table/useTableManager/util/columns.d.ts +1 -1
  53. package/dist/primitives/Table/useTableManager/util/search.d.ts +2 -2
  54. package/dist/taco.cjs.development.js +219 -228
  55. package/dist/taco.cjs.development.js.map +1 -1
  56. package/dist/taco.cjs.production.min.js +1 -1
  57. package/dist/taco.cjs.production.min.js.map +1 -1
  58. package/package.json +2 -2
@@ -4339,7 +4339,7 @@ const Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
4339
4339
  hide = false,
4340
4340
  ...otherProps
4341
4341
  } = props;
4342
- const className = cn(otherProps.className);
4342
+ const className = cn('break-words', otherProps.className);
4343
4343
  if (hide) {
4344
4344
  return children;
4345
4345
  }
@@ -6250,17 +6250,18 @@ const useDatepicker = ({
6250
6250
  value,
6251
6251
  ...props
6252
6252
  }, ref) => {
6253
+ var _format;
6253
6254
  const inputRef = useMergedRef(ref);
6254
6255
  const {
6255
6256
  formatting
6256
6257
  } = useLocalization();
6257
- const [internalValue, setInternalValue] = React.useState(format(value, formatting.date));
6258
+ const [internalValue, setInternalValue] = React.useState((_format = format(value, formatting.date)) !== null && _format !== void 0 ? _format : '');
6258
6259
  const originalValueAsDate = parse(value);
6259
6260
  // update internal value if it changed 'externally'
6260
6261
  React.useEffect(() => {
6261
6262
  const formattedValue = format(value, formatting.date);
6262
6263
  if (formattedValue !== internalValue) {
6263
- setInternalValue(formattedValue);
6264
+ setInternalValue(formattedValue !== null && formattedValue !== void 0 ? formattedValue : '');
6264
6265
  }
6265
6266
  }, [value]);
6266
6267
  // event handlers
@@ -6463,6 +6464,11 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6463
6464
  const currentDay = (_popoverContentRef$cu = popoverContentRef === null || popoverContentRef === void 0 ? void 0 : (_popoverContentRef$cu2 = popoverContentRef.current) === null || _popoverContentRef$cu2 === void 0 ? void 0 : _popoverContentRef$cu2.querySelector('table button[name="day"][aria-selected="true"]')) !== null && _popoverContentRef$cu !== void 0 ? _popoverContentRef$cu : null;
6464
6465
  currentDay === null || currentDay === void 0 ? void 0 : currentDay.focus();
6465
6466
  }, [popoverContentRef]);
6467
+ const handleCloseAutoFocus = React.useCallback(e => {
6468
+ var _input$ref$current;
6469
+ e.preventDefault();
6470
+ (_input$ref$current = input.ref.current) === null || _input$ref$current === void 0 ? void 0 : _input$ref$current.focus();
6471
+ }, [input.ref]);
6466
6472
  return /*#__PURE__*/React.createElement("span", {
6467
6473
  className: className,
6468
6474
  "data-taco": "datepicker",
@@ -6474,7 +6480,8 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6474
6480
  icon: "calendar",
6475
6481
  tabIndex: -1,
6476
6482
  popover: props => (/*#__PURE__*/React.createElement(Popover, Object.assign({}, props), /*#__PURE__*/React.createElement(Popover.Content, {
6477
- onOpenAutoFocus: handleOpenAutofocus
6483
+ onOpenAutoFocus: handleOpenAutofocus,
6484
+ onCloseAutoFocus: handleCloseAutoFocus
6478
6485
  }, ({
6479
6486
  close
6480
6487
  }) => (/*#__PURE__*/React.createElement("div", {
@@ -9977,18 +9984,25 @@ function columnFilterFn(value, filter) {
9977
9984
  }
9978
9985
  }
9979
9986
 
9987
+ const flattenCellValue = cellValue => {
9988
+ return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;
9989
+ };
9980
9990
  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;
9991
+ if (typeof cellValue === 'object') {
9992
+ return flattenCellValue(cellValue).flat(Infinity).find(y => isWeakContains(y, searchQuery));
9984
9993
  } 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;
9994
+ const cellValueAsString = String(cellValue !== null && cellValue !== void 0 ? cellValue : '');
9995
+ if (cellValueAsString !== undefined && isWeakContains(cellValueAsString, searchQuery)) {
9996
+ return true;
9997
+ } else {
9998
+ const dataTypeProperties = getDataTypeProperties(dataType);
9999
+ if (dataTypeProperties.getDisplayValue) {
10000
+ const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, {
10001
+ localization
10002
+ });
10003
+ if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, searchQuery)) {
10004
+ return true;
10005
+ }
9992
10006
  }
9993
10007
  }
9994
10008
  }
@@ -10359,7 +10373,7 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns, lo
10359
10373
  const column = createInternalColumn('__expansion', internalColumns.rowExpansion, defaultSizing);
10360
10374
  columns.unshift(column);
10361
10375
  }
10362
- if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {
10376
+ if (options.enableRowSelection && internalColumns.rowSelection) {
10363
10377
  const column = createInternalColumn('__select', internalColumns.rowSelection, defaultSizing);
10364
10378
  columns.unshift(column);
10365
10379
  }
@@ -10381,10 +10395,9 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns, lo
10381
10395
  }
10382
10396
  function configureReactTableOptions(options, props, localization) {
10383
10397
  var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
10384
- const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
10385
10398
  // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,
10386
10399
  // which receives the React Table Row object and passes row.original to a callback.
10387
- const reactTableEnableRowSelection = typeof enableRowSelection === 'function' ? row => enableRowSelection(row.original) : enableRowSelection;
10400
+ const reactTableEnableRowSelection = typeof options.enableRowSelection === 'function' ? row => options.enableRowSelection(row.original) : options.enableRowSelection;
10388
10401
  const tableOptions = {
10389
10402
  defaultColumn: {
10390
10403
  enableColumnFilter: options.enableFiltering || true,
@@ -10404,7 +10417,6 @@ function configureReactTableOptions(options, props, localization) {
10404
10417
  enableHiding: (_options$enableColumn2 = options.enableColumnHiding) !== null && _options$enableColumn2 !== void 0 ? _options$enableColumn2 : false,
10405
10418
  enablePinning: (_options$enableColumn3 = options.enableColumnFreezing) !== null && _options$enableColumn3 !== void 0 ? _options$enableColumn3 : false,
10406
10419
  enableRowSelection: reactTableEnableRowSelection !== null && reactTableEnableRowSelection !== void 0 ? reactTableEnableRowSelection : false,
10407
- enableMultiRowSelection: !options.enableRowSelectionSingle && reactTableEnableRowSelection,
10408
10420
  enableSorting: (_options$enableSortin = options.enableSorting) !== null && _options$enableSortin !== void 0 ? _options$enableSortin : false,
10409
10421
  // models for default features
10410
10422
  getExpandedRowModel: reactTable.getExpandedRowModel(),
@@ -10428,8 +10440,8 @@ function configureReactTableOptions(options, props, localization) {
10428
10440
  tableOptions.getFilteredRowModel = reactTable.getFilteredRowModel();
10429
10441
  tableOptions.globalFilterFn = (row, columnId, searchQuery) => globalFilterFn(row, columnId, searchQuery, localization);
10430
10442
  tableOptions.getColumnCanGlobalFilter = column => {
10431
- var _column$columnDef$met, _column$columnDef$met2;
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;
10443
+ var _column$columnDef$met;
10444
+ return ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.enableSearch) !== false && column.getIsVisible();
10433
10445
  };
10434
10446
  }
10435
10447
  if (tableOptions.enableSorting) {
@@ -10489,7 +10501,6 @@ const DEFAULT_PRESET = {
10489
10501
  enableColumnResizing: false,
10490
10502
  enableRowExpansion: false,
10491
10503
  enableRowSelection: false,
10492
- enableRowSelectionSingle: false,
10493
10504
  // custom -- common between all table types
10494
10505
  enableColumnOrdering: false,
10495
10506
  enableFontSize: false,
@@ -10516,7 +10527,6 @@ const presets = {
10516
10527
  enableColumnResizing: true,
10517
10528
  enableRowExpansion: true,
10518
10529
  enableRowSelection: true,
10519
- enableRowSelectionSingle: false,
10520
10530
  // custom -- common between all table types
10521
10531
  enableColumnOrdering: true,
10522
10532
  enableFontSize: true,
@@ -10542,7 +10552,6 @@ const presets = {
10542
10552
  enableColumnResizing: false,
10543
10553
  enableRowExpansion: true,
10544
10554
  enableRowSelection: true,
10545
- enableRowSelectionSingle: false,
10546
10555
  // custom -- common between all table types
10547
10556
  enableColumnOrdering: false,
10548
10557
  enableFontSize: false,
@@ -10568,7 +10577,6 @@ const presets = {
10568
10577
  enableColumnResizing: false,
10569
10578
  enableRowExpansion: true,
10570
10579
  enableRowSelection: false,
10571
- enableRowSelectionSingle: false,
10572
10580
  // custom -- common between all table types
10573
10581
  enableColumnOrdering: false,
10574
10582
  enableFontSize: false,
@@ -10585,7 +10593,7 @@ const presets = {
10585
10593
  }
10586
10594
  };
10587
10595
  function getTableFeaturePreset(props) {
10588
- var _props$enableRowActio, _props$enableRowClick, _props$enableRowDrag, _props$enableRowDrop, _props$enableRowGoto, _props$enableRowExpan, _props$enableRowSelec, _props$enableRowSelec2, _props$enableFilterin, _props$enableSearch, _props$enableSorting, _props$enableColumnFr, _props$enableColumnHi, _props$enableColumnRe, _props$enableColumnOr, _props$enableFontSize, _props$enableFooter, _props$enablePrinting, _props$enableRowActiv, _props$rowActions, _props$enableRowHeigh, _props$enableSaveSett;
10596
+ var _props$enableRowActio, _props$enableRowClick, _props$enableRowDrag, _props$enableRowDrop, _props$enableRowGoto, _props$enableRowExpan, _props$enableRowSelec, _props$enableFilterin, _props$enableSearch, _props$enableSorting, _props$enableColumnFr, _props$enableColumnHi, _props$enableColumnRe, _props$enableColumnOr, _props$enableFontSize, _props$enableFooter, _props$enablePrinting, _props$enableRowActiv, _props$rowActions, _props$enableRowHeigh, _props$enableSaveSett;
10589
10597
  const presetOptions = props.preset ? presets[props.preset] : DEFAULT_PRESET;
10590
10598
  const enableRowActions = (_props$enableRowActio = props.enableRowActions) !== null && _props$enableRowActio !== void 0 ? _props$enableRowActio : presetOptions.enableRowActions;
10591
10599
  const enableRowClick = (_props$enableRowClick = props.enableRowClick) !== null && _props$enableRowClick !== void 0 ? _props$enableRowClick : presetOptions.enableRowClick;
@@ -10594,7 +10602,6 @@ function getTableFeaturePreset(props) {
10594
10602
  const enableRowGoto = (_props$enableRowGoto = props.enableRowGoto) !== null && _props$enableRowGoto !== void 0 ? _props$enableRowGoto : presetOptions.enableRowGoto;
10595
10603
  const enableRowExpansion = (_props$enableRowExpan = props.enableRowExpansion) !== null && _props$enableRowExpan !== void 0 ? _props$enableRowExpan : presetOptions.enableRowExpansion;
10596
10604
  const enableRowSelection = (_props$enableRowSelec = props.enableRowSelection) !== null && _props$enableRowSelec !== void 0 ? _props$enableRowSelec : presetOptions.enableRowSelection;
10597
- const enableRowSelectionSingle = (_props$enableRowSelec2 = props.enableRowSelectionSingle) !== null && _props$enableRowSelec2 !== void 0 ? _props$enableRowSelec2 : presetOptions.enableRowSelectionSingle;
10598
10605
  return {
10599
10606
  // react-table built-in
10600
10607
  enableFiltering: (_props$enableFilterin = props.enableFiltering) !== null && _props$enableFilterin !== void 0 ? _props$enableFilterin : presetOptions.enableFiltering,
@@ -10605,7 +10612,6 @@ function getTableFeaturePreset(props) {
10605
10612
  enableColumnResizing: (_props$enableColumnRe = props.enableColumnResizing) !== null && _props$enableColumnRe !== void 0 ? _props$enableColumnRe : presetOptions.enableColumnResizing,
10606
10613
  enableRowExpansion: enableRowExpansion && !!props.rowExpansionRenderer,
10607
10614
  enableRowSelection: !!props.onRowSelect && enableRowSelection,
10608
- enableRowSelectionSingle: !!props.onRowSelect && enableRowSelectionSingle,
10609
10615
  // custom -- common between all table types
10610
10616
  enableColumnOrdering: (_props$enableColumnOr = props.enableColumnOrdering) !== null && _props$enableColumnOr !== void 0 ? _props$enableColumnOr : presetOptions.enableColumnOrdering,
10611
10617
  enableFontSize: (_props$enableFontSize = props.enableFontSize) !== null && _props$enableFontSize !== void 0 ? _props$enableFontSize : presetOptions.enableFontSize,
@@ -11535,25 +11541,31 @@ function useTableRowSelectionListener(table, onRowSelect) {
11535
11541
  const rowSelection = React__default.useMemo(() => rows.map(row => row.original), [rows]);
11536
11542
  useLazyEffect(() => {
11537
11543
  if (table.options.enableRowSelection && typeof onRowSelect === 'function') {
11538
- if (table.options.enableMultiRowSelection) {
11539
- onRowSelect(rowSelection);
11540
- } else {
11541
- var _ref;
11542
- onRowSelect((_ref = [rowSelection[0]]) !== null && _ref !== void 0 ? _ref : []);
11543
- }
11544
+ onRowSelect(rowSelection);
11544
11545
  }
11545
11546
  /**
11546
- * Casting to a boolean, since enableRowSelection and enableMultiRowSelection can be a functions,
11547
+ * Casting to a boolean, since enableRowSelection can be a function,
11547
11548
  * and setting a function as depoendency will lead to infinity loop. And in case of row selection useEffect,
11548
- * we only need to know if selection was enabled or disabled, because enableRowSelection/enableMultiRowSelection functions
11549
+ * we only need to know if selection was enabled or disabled, because enableRowSelection function
11549
11550
  * will be applied directly to particular rows.
11550
11551
  */
11551
- }, [!!table.options.enableRowSelection, !!table.options.enableMultiRowSelection, JSON.stringify(rowSelection)]);
11552
+ }, [!!table.options.enableRowSelection, JSON.stringify(rowSelection)]);
11552
11553
  }
11553
11554
 
11554
11555
  function useTableSearchListener(table, onChangeSearch) {
11555
11556
  const meta = table.options.meta;
11556
11557
  const localization = useLocalization();
11558
+ const visibleColumns = table.getVisibleFlatColumns();
11559
+ // Need to re-run search when columns are getting shown/hidden.
11560
+ React__default.useEffect(() => {
11561
+ if (meta.search.isEnabled && visibleColumns.length > 0) {
11562
+ const currentFilter = table.getState().globalFilter;
11563
+ requestAnimationFrame(() => {
11564
+ table.resetGlobalFilter();
11565
+ table.setGlobalFilter(currentFilter);
11566
+ });
11567
+ }
11568
+ }, [visibleColumns.length]);
11557
11569
  // recalculates highlighted indexes whenever something important changes
11558
11570
  React__default.useEffect(() => {
11559
11571
  if (meta.search.isEnabled) {
@@ -11563,7 +11575,7 @@ function useTableSearchListener(table, onChangeSearch) {
11563
11575
  onChangeSearch(query);
11564
11576
  }
11565
11577
  }
11566
- }, [meta.server.loadAllStatus, meta.search.isEnabled, meta.search.enableGlobalFilter, table.getRowModel().rows.length, table.getState().globalFilter, JSON.stringify(table.getState().sorting), JSON.stringify(table.getState().columnVisibility), onChangeSearch]);
11578
+ }, [meta.server.loadAllStatus, meta.search.isEnabled, meta.search.enableGlobalFilter, table.getRowModel().rows.length, table.getState().globalFilter, JSON.stringify(table.getState().sorting), onChangeSearch]);
11567
11579
  }
11568
11580
 
11569
11581
  function useTableSettingsListener(table, onChangeSettings) {
@@ -12287,7 +12299,6 @@ function Actions$1(props) {
12287
12299
  actions,
12288
12300
  actionsLength,
12289
12301
  data,
12290
- fontSize,
12291
12302
  isActiveRow,
12292
12303
  rowId
12293
12304
  } = props;
@@ -12297,11 +12308,7 @@ function Actions$1(props) {
12297
12308
  const visibleActions = actions.map(action => action(data, rowId)).filter(action => !!action);
12298
12309
  const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);
12299
12310
  const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);
12300
- const className = cn('-mb-2 flex justify-end text-right bg-[inherit] shadow-[-6px_0px_6px_var(--table-row-actions-shadow)] print:hidden', {
12301
- // Adjust negative margin on row actions cell to ensure that the cell aligns vertically.
12302
- '-mt-2': fontSize === exports.FontSizes.small,
12303
- '-mt-1.5': fontSize !== exports.FontSizes.small
12304
- });
12311
+ const className = cn('flex justify-end text-right bg-[inherit] shadow-[-6px_0px_6px_var(--table-row-actions-shadow)] print:hidden');
12305
12312
  return /*#__PURE__*/React__default.createElement("span", {
12306
12313
  className: className
12307
12314
  }, actionsOnRow.map((button, index) => {
@@ -12353,7 +12360,6 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
12353
12360
  actions: actions,
12354
12361
  actionsLength: actionsLength,
12355
12362
  data: row.original,
12356
- fontSize: tableMeta.fontSize.size,
12357
12363
  isActiveRow: isActiveRow,
12358
12364
  rowId: row.id
12359
12365
  });
@@ -12471,39 +12477,36 @@ function Header$4(context) {
12471
12477
  table
12472
12478
  } = context;
12473
12479
  const tableMeta = table.options.meta;
12474
- if (table.options.enableMultiRowSelection) {
12475
- const isAllRowsSelected = table.getIsAllRowsSelected();
12476
- const isSomeRowsSelected = table.getIsSomeRowsSelected();
12477
- const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;
12478
- const handleChange = function (checked) {
12479
- try {
12480
- function _temp2() {
12481
- table.toggleAllRowsSelected(checked);
12482
- }
12483
- const _temp = function () {
12484
- if (tableMeta.server.loadAllIfNeeded) {
12485
- // don't pass the search query because we need all data - not filtered data
12486
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12487
- }
12488
- }();
12489
- // load all data if that is possible
12490
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
12491
- } catch (e) {
12492
- return Promise.reject(e);
12480
+ const isAllRowsSelected = table.getIsAllRowsSelected();
12481
+ const isSomeRowsSelected = table.getIsSomeRowsSelected();
12482
+ const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;
12483
+ const handleChange = function (checked) {
12484
+ try {
12485
+ function _temp2() {
12486
+ table.toggleAllRowsSelected(checked);
12493
12487
  }
12494
- };
12495
- return /*#__PURE__*/React__default.createElement(Tooltip, {
12496
- title: title
12497
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
12498
- "aria-label": title,
12499
- className: "hover:border-blue !-mt-px",
12500
- checked: isAllRowsSelected,
12501
- indeterminate: isSomeRowsSelected && !isAllRowsSelected,
12502
- loading: tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
12503
- onChange: handleChange
12504
- }));
12505
- }
12506
- return null;
12488
+ const _temp = function () {
12489
+ if (tableMeta.server.loadAllIfNeeded) {
12490
+ // don't pass the search query because we need all data - not filtered data
12491
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12492
+ }
12493
+ }();
12494
+ // load all data if that is possible
12495
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
12496
+ } catch (e) {
12497
+ return Promise.reject(e);
12498
+ }
12499
+ };
12500
+ return /*#__PURE__*/React__default.createElement(Tooltip, {
12501
+ title: title
12502
+ }, /*#__PURE__*/React__default.createElement(Checkbox, {
12503
+ "aria-label": title,
12504
+ className: "hover:border-blue !-mt-px",
12505
+ checked: isAllRowsSelected,
12506
+ indeterminate: isSomeRowsSelected && !isAllRowsSelected,
12507
+ loading: tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
12508
+ onChange: handleChange
12509
+ }));
12507
12510
  }
12508
12511
  const toggleBetween = (fromRowIndex, toRowIndex) => {
12509
12512
  const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;
@@ -12529,83 +12532,64 @@ function Cell$3(context) {
12529
12532
  const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();
12530
12533
  const canSelect = row.getCanSelect();
12531
12534
  const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;
12532
- if (table.options.enableMultiRowSelection) {
12533
- const handleClick = function (event) {
12534
- try {
12535
- function _temp7() {
12536
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12537
- }
12538
- event.stopPropagation();
12539
- const _temp6 = function () {
12540
- if (row.getIsGrouped()) {
12541
- row.subRows.forEach(row => row.toggleSelected());
12542
- } else {
12543
- const _temp5 = function () {
12544
- if (event.shiftKey) {
12545
- var _tableMeta$rowSelecti;
12546
- function _temp4() {
12547
- table.setRowSelection(currentRowSelection => ({
12548
- ...currentRowSelection,
12549
- ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
12550
- ...state,
12551
- [row.id]: true
12552
- }), {})
12553
- }));
12554
- }
12555
- const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
12556
- const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
12557
- const _temp3 = function () {
12558
- if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
12559
- // don't pass the search query because we need all data - not filtered data
12560
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12561
- }
12562
- }();
12563
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
12564
- } else {
12565
- row.toggleSelected();
12566
- }
12567
- }();
12568
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
12569
- }
12570
- }();
12571
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
12572
- } catch (e) {
12573
- return Promise.reject(e);
12535
+ const handleClick = function (event) {
12536
+ try {
12537
+ function _temp7() {
12538
+ tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12574
12539
  }
12575
- };
12576
- return /*#__PURE__*/React__default.createElement(Tooltip, {
12577
- hidden: !canSelect,
12578
- title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
12579
- className: "ml-2",
12580
- keys: "Space"
12581
- }))
12582
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
12583
- "aria-label": title,
12584
- className: "!mt-0",
12585
- checked: isSelected,
12586
- onClick: handleClick,
12587
- disabled: !canSelect,
12588
- // this is necessary to remove console spam from eslint
12589
- onChange: () => false
12590
- }));
12591
- } else {
12592
- const className = cn('!mt-0', getRadioClassnames(!canSelect));
12593
- const handleClick = event => {
12594
12540
  event.stopPropagation();
12595
- row.toggleSelected();
12596
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12597
- };
12598
- return /*#__PURE__*/React__default.createElement("button", {
12599
- className: className,
12600
- "aria-checked": canSelect && isSelected,
12601
- disabled: !canSelect,
12602
- onClick: handleClick,
12603
- role: "radio",
12604
- type: "button"
12605
- }, isSelected ? /*#__PURE__*/React__default.createElement("span", {
12606
- className: "h-2 w-2 rounded-full bg-white"
12607
- }) : null);
12608
- }
12541
+ const _temp6 = function () {
12542
+ if (row.getIsGrouped()) {
12543
+ row.subRows.forEach(row => row.toggleSelected());
12544
+ } else {
12545
+ const _temp5 = function () {
12546
+ if (event.shiftKey) {
12547
+ var _tableMeta$rowSelecti;
12548
+ function _temp4() {
12549
+ table.setRowSelection(currentRowSelection => ({
12550
+ ...currentRowSelection,
12551
+ ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
12552
+ ...state,
12553
+ [row.id]: true
12554
+ }), {})
12555
+ }));
12556
+ }
12557
+ const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
12558
+ const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
12559
+ const _temp3 = function () {
12560
+ if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
12561
+ // don't pass the search query because we need all data - not filtered data
12562
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12563
+ }
12564
+ }();
12565
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
12566
+ } else {
12567
+ row.toggleSelected();
12568
+ }
12569
+ }();
12570
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
12571
+ }
12572
+ }();
12573
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
12574
+ } catch (e) {
12575
+ return Promise.reject(e);
12576
+ }
12577
+ };
12578
+ return /*#__PURE__*/React__default.createElement(Tooltip, {
12579
+ hidden: !canSelect,
12580
+ title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
12581
+ className: "ml-2",
12582
+ keys: "Space"
12583
+ }))
12584
+ }, /*#__PURE__*/React__default.createElement(Checkbox, {
12585
+ "aria-label": title,
12586
+ className: "!mt-0",
12587
+ checked: isSelected,
12588
+ onClick: handleClick,
12589
+ disabled: !canSelect,
12590
+ // this is necessary to remove console spam from eslint
12591
+ onChange: () => false
12592
+ }));
12609
12593
  }
12610
12594
  const renderer$3 = {
12611
12595
  header: Header$4,
@@ -12750,7 +12734,6 @@ function GroupedCell(props) {
12750
12734
  canShowActions: canShowActions,
12751
12735
  cellRef: cellRef,
12752
12736
  colSpan: colSpan,
12753
- fontSize: tableMeta.fontSize.size,
12754
12737
  rowActions: tableMeta.rowGroups.rowActionsForGroup,
12755
12738
  rowId: cell.row.id,
12756
12739
  subRows: subRows
@@ -12762,7 +12745,6 @@ const MemoedGroupedCell = /*#__PURE__*/React__default.memo(function MemoedGroupe
12762
12745
  cellRef,
12763
12746
  children,
12764
12747
  colSpan,
12765
- fontSize,
12766
12748
  rowActions,
12767
12749
  rowId,
12768
12750
  subRows,
@@ -12779,7 +12761,6 @@ const MemoedGroupedCell = /*#__PURE__*/React__default.memo(function MemoedGroupe
12779
12761
  actions: rowActions,
12780
12762
  actionsLength: 4,
12781
12763
  data: subRows,
12782
- fontSize: fontSize,
12783
12764
  isActiveRow: true,
12784
12765
  rowId: rowId
12785
12766
  })) : null);
@@ -15848,7 +15829,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15848
15829
  style: {
15849
15830
  minWidth: dimensions !== null && dimensions !== void 0 && dimensions.width ? `${dimensions.width}px` : undefined
15850
15831
  }
15851
- }, flattenedChildren.length > 0 || isInlineCreation ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
15832
+ }, flattenedChildren.length > 5 || isInlineCreation ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
15852
15833
  placeholder: isInlineCreation ? texts.select2.searchOrCreate : texts.select2.search,
15853
15834
  ref: searchRef,
15854
15835
  onTabKeyPress: () => setTabTriggeredClose(true)
@@ -16755,6 +16736,8 @@ function TableGrid(props) {
16755
16736
  table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);
16756
16737
  } : undefined;
16757
16738
  const filterReason = getFilterReason(table);
16739
+ const searchNotApplied = !table.state.globalFilter || table.state.globalFilter === '';
16740
+ const filtersNotApplied = !table.state.columnFilters || table.state.columnFilters.length === 0;
16758
16741
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("style", null, table.stylesheet), /*#__PURE__*/React__default.createElement(focus.FocusScope, null, /*#__PURE__*/React__default.createElement("table", Object.assign({}, attributes, {
16759
16742
  id: table.id,
16760
16743
  "data-table-font-size": table.meta.fontSize.size,
@@ -16787,7 +16770,7 @@ function TableGrid(props) {
16787
16770
  ...table.renderer.style,
16788
16771
  height: table.renderer.style.height + ROW_HEIGHT_ESTIMATES[table.meta.rowHeight.height]
16789
16772
  } : table.renderer.style
16790
- }, table.renderer.rows, props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16773
+ }, table.renderer.rows, searchNotApplied && filtersNotApplied && props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16791
16774
  table: table.instance
16792
16775
  }) : null)))));
16793
16776
  }
@@ -18292,6 +18275,8 @@ const useTableRowCreation = (data, tableRef) => {
18292
18275
 
18293
18276
  function useTableEditingListener(table, tableRef) {
18294
18277
  const tableMeta = table.options.meta;
18278
+ const completedRowsCount = tableMeta.editing.getCompletedRowsCount();
18279
+ const localization = useLocalization();
18295
18280
  const saveChanges = () => {
18296
18281
  requestAnimationFrame(() => {
18297
18282
  tableMeta.editing.saveChanges();
@@ -18332,6 +18317,11 @@ function useTableEditingListener(table, tableRef) {
18332
18317
  window.removeEventListener('beforeunload', showUnsavedChangesWarning);
18333
18318
  };
18334
18319
  }, [tableMeta.editing.isEditing, hasChanges]);
18320
+ React__default.useEffect(() => {
18321
+ if (completedRowsCount > 0) {
18322
+ resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization);
18323
+ }
18324
+ }, [completedRowsCount]);
18335
18325
  React__default.useEffect(() => {
18336
18326
  const onClickOutside = event => {
18337
18327
  if (tableMeta.editing.isEditing) {
@@ -18544,14 +18534,13 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18544
18534
  }
18545
18535
  if (rowError || cellErrors) {
18546
18536
  setPendingChanges(currentChanges => {
18547
- var _nextChanges$rowId$_m, _nextChanges$rowId$_m2;
18548
18537
  const nextChanges = {
18549
18538
  ...currentChanges
18550
18539
  };
18551
18540
  nextChanges[rowId]._meta.errors = {
18552
18541
  row: rowError,
18553
18542
  cells: cellErrors,
18554
- hasShownErrorAlert: (_nextChanges$rowId$_m = (_nextChanges$rowId$_m2 = nextChanges[rowId]._meta.errors) === null || _nextChanges$rowId$_m2 === void 0 ? void 0 : _nextChanges$rowId$_m2.hasShownErrorAlert) !== null && _nextChanges$rowId$_m !== void 0 ? _nextChanges$rowId$_m : false
18543
+ shouldShowErrorAlert: true
18555
18544
  };
18556
18545
  return nextChanges;
18557
18546
  });
@@ -18586,7 +18575,7 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18586
18575
  errors: {
18587
18576
  ...nextChanges[cell.row.id]._meta.errors,
18588
18577
  cells: errors,
18589
- hasShownErrorAlert: Object.keys(errors).length && !nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert ? false : nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert
18578
+ shouldShowErrorAlert: !Object.keys(errors).length ? false : nextChanges[cell.row.id]._meta.errors.shouldShowErrorAlert
18590
18579
  }
18591
18580
  };
18592
18581
  return nextChanges;
@@ -18674,22 +18663,18 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18674
18663
  if (!isEnabled) {
18675
18664
  return false;
18676
18665
  }
18677
- return hasRowErrors(rowId) && !!((_pendingChanges$rowId6 = pendingChanges[rowId]._meta.errors) !== null && _pendingChanges$rowId6 !== void 0 && _pendingChanges$rowId6.hasShownErrorAlert);
18666
+ return hasRowErrors(rowId) && !!((_pendingChanges$rowId6 = pendingChanges[rowId]._meta.errors) !== null && _pendingChanges$rowId6 !== void 0 && _pendingChanges$rowId6.shouldShowErrorAlert);
18678
18667
  }
18679
- function setRowErrorsSeen(rowId) {
18680
- var _pendingChanges$rowId7;
18681
- if (((_pendingChanges$rowId7 = pendingChanges[rowId]._meta.errors) === null || _pendingChanges$rowId7 === void 0 ? void 0 : _pendingChanges$rowId7.hasShownErrorAlert) === false) {
18682
- setPendingChanges(currentChanges => {
18683
- const nextChanges = {
18684
- ...currentChanges
18685
- };
18686
- nextChanges[rowId]._meta.errors = {
18687
- ...nextChanges[rowId]._meta.errors,
18688
- hasShownErrorAlert: true
18689
- };
18690
- return nextChanges;
18691
- });
18668
+ function getRowPendingChange(rowId) {
18669
+ const rowPendingChanges = pendingChanges[rowId];
18670
+ if (rowPendingChanges) {
18671
+ const {
18672
+ _meta,
18673
+ ...pendingChange
18674
+ } = rowPendingChanges;
18675
+ return pendingChange;
18692
18676
  }
18677
+ return undefined;
18693
18678
  }
18694
18679
  function getRowSaveStatus(rowId) {
18695
18680
  if (!isEnabled) {
@@ -18711,8 +18696,8 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18711
18696
  });
18712
18697
  }
18713
18698
  function getRowMoveReason(rowId) {
18714
- var _pendingChanges$rowId8;
18715
- return (_pendingChanges$rowId8 = pendingChanges[rowId]) !== null && _pendingChanges$rowId8 !== void 0 && _pendingChanges$rowId8._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;
18699
+ var _pendingChanges$rowId7;
18700
+ return (_pendingChanges$rowId7 = pendingChanges[rowId]) !== null && _pendingChanges$rowId7 !== void 0 && _pendingChanges$rowId7._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;
18716
18701
  }
18717
18702
  function hasChanges(rowId) {
18718
18703
  if (!isEnabled) {
@@ -18720,28 +18705,14 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18720
18705
  }
18721
18706
  return rowId ? !!pendingChanges[rowId] : !!Object.keys(pendingChanges).length;
18722
18707
  }
18723
- function hasErrors(table, tableRef) {
18724
- var _tableRef$current;
18708
+ function hasAlertErrors() {
18725
18709
  if (!isEnabled) {
18726
18710
  return false;
18727
18711
  }
18728
- const tableMeta = table.options.meta;
18729
- const focusIsInsideTable = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.contains(document.activeElement);
18730
- let activeRow;
18731
- if (tableMeta.rowActive.rowActiveIndex !== undefined) {
18732
- activeRow = table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex];
18733
- }
18734
- return Object.keys(getErrors().filter(error => {
18735
- var _activeRow;
18736
- if ((_activeRow = activeRow) !== null && _activeRow !== void 0 && _activeRow.id && focusIsInsideTable) {
18737
- var _activeRow2, _error$pendingChange$;
18738
- return error.rowId === ((_activeRow2 = activeRow) === null || _activeRow2 === void 0 ? void 0 : _activeRow2.id) ? (_error$pendingChange$ = error.pendingChange._meta.errors) === null || _error$pendingChange$ === void 0 ? void 0 : _error$pendingChange$.hasShownErrorAlert : true;
18739
- }
18740
- return true;
18741
- })).length;
18712
+ return !!getAlertErrors().length;
18742
18713
  }
18743
- function getErrors() {
18744
- return Object.keys(pendingChanges).filter(hasRowErrors).map(rowId => ({
18714
+ function getAlertErrors() {
18715
+ return Object.keys(pendingChanges).filter(hasRowErrorsSeen).map(rowId => ({
18745
18716
  rowId,
18746
18717
  pendingChange: pendingChanges[rowId]
18747
18718
  }));
@@ -18755,6 +18726,9 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18755
18726
  return nextChanges;
18756
18727
  });
18757
18728
  }
18729
+ function getCompletedRowsCount() {
18730
+ return Object.values(saveStates).filter(value => value === 'complete').length;
18731
+ }
18758
18732
  return {
18759
18733
  getCellValue,
18760
18734
  getCellError,
@@ -18762,16 +18736,17 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18762
18736
  validateCell,
18763
18737
  addCreatedRowChangeset,
18764
18738
  hasChanges,
18765
- hasErrors,
18766
- getErrors,
18739
+ hasAlertErrors,
18740
+ getAlertErrors,
18767
18741
  saveChanges,
18768
18742
  resetChanges,
18769
18743
  hasRowErrors,
18770
18744
  hasRowErrorsSeen,
18771
- setRowErrorsSeen,
18745
+ getRowPendingChange,
18772
18746
  getRowSaveStatus,
18773
18747
  setRowSaveStatus,
18774
- getRowMoveReason
18748
+ getRowMoveReason,
18749
+ getCompletedRowsCount
18775
18750
  };
18776
18751
  }
18777
18752
  function useLastFocusedCellIndex() {
@@ -18843,12 +18818,16 @@ function createPendingChangesSetter(currentChanges, row, rowIndex, changes, loca
18843
18818
  // otherwise remove any change - no point saving the same value
18844
18819
  if (change !== row.original[accessor]) {
18845
18820
  rowChanges[accessor] = change;
18846
- // determine if the row will move position based on this change, and save why it will move
18847
- const reason = willRowMove(cells[accessor], change, rowIndex, localization);
18848
- if (reason) {
18849
- rowChanges._meta.moveReason[accessor] = reason;
18850
- } else {
18851
- delete rowChanges._meta.moveReason[accessor];
18821
+ // consumers sometimes include properties in onEditingChange that aren't rendered as columns, we need to guard against that.
18822
+ // eslint-disable-next-line no-prototype-builtins
18823
+ if (cells.hasOwnProperty(accessor)) {
18824
+ // determine if the row will move position based on this change, and save why it will move
18825
+ const reason = willRowMove(cells[accessor], change, rowIndex, localization);
18826
+ if (reason) {
18827
+ rowChanges._meta.moveReason[accessor] = reason;
18828
+ } else {
18829
+ delete rowChanges._meta.moveReason[accessor];
18830
+ }
18852
18831
  }
18853
18832
  } else {
18854
18833
  delete rowChanges[accessor];
@@ -19077,7 +19056,7 @@ function useEditingCellAutofocus(props) {
19077
19056
  (_props$cellRef$curren2 = props.cellRef.current) === null || _props$cellRef$curren2 === void 0 ? void 0 : _props$cellRef$curren2.focus();
19078
19057
  }
19079
19058
  }
19080
- }, [autoFocus]);
19059
+ }, [tableMeta.rowActive.rowActiveIndex]);
19081
19060
  // when the cell receives focus we actually want to focus the control inside it...
19082
19061
  const handleFocus = event => {
19083
19062
  var _props$cellRef$curren3;
@@ -19088,11 +19067,12 @@ function useEditingCellAutofocus(props) {
19088
19067
  const tableRect = tableElement.getBoundingClientRect();
19089
19068
  const leftOffsetFromScrollContainer = targetRect.left - tableRect.left;
19090
19069
  const scrollbarWidth = tableElement.offsetWidth - tableElement.clientWidth; // the width of table vertical scrollbar
19070
+ const isFocusedElementMenu = event.currentTarget.getAttribute('data-cell-id') === '__actions';
19091
19071
  if (
19092
19072
  // When pinned column overlaps the focused cell
19093
- leftOffsetFromScrollContainer < columnFreezingOffset ||
19073
+ (leftOffsetFromScrollContainer < columnFreezingOffset ||
19094
19074
  // When focused cell goes behidn the edge of the table
19095
- leftOffsetFromScrollContainer + targetRect.width > tableRect.width - scrollbarWidth) {
19075
+ leftOffsetFromScrollContainer + targetRect.width > tableRect.width - scrollbarWidth) && !isFocusedElementMenu) {
19096
19076
  tableElement.scrollTo(props.cell.column.getStart() - columnFreezingOffset, tableElement.scrollTop);
19097
19077
  }
19098
19078
  }
@@ -19142,6 +19122,7 @@ function EditingControlCell(props) {
19142
19122
  onBlur: handleBlur,
19143
19123
  onChange: value => tableMeta.editing.setCellValue(cell, value, rowIndex),
19144
19124
  row: cell.row.original,
19125
+ rowPendingChanges: tableMeta.editing.getRowPendingChange(cell.row.id),
19145
19126
  tabIndex: isActiveRow ? 0 : -1,
19146
19127
  toggleEditing: tableMeta.editing.toggleEditing,
19147
19128
  toggleDetailedMode: tableMeta.editing.toggleDetailedMode,
@@ -19176,6 +19157,7 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
19176
19157
  onBlur,
19177
19158
  onChange,
19178
19159
  row,
19160
+ rowPendingChanges,
19179
19161
  tabIndex = -1,
19180
19162
  toggleEditing,
19181
19163
  toggleDetailedMode,
@@ -19196,7 +19178,10 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
19196
19178
  setValue: onChange,
19197
19179
  value
19198
19180
  };
19199
- return type(controlFnProps, row);
19181
+ return type(controlFnProps, {
19182
+ ...row,
19183
+ ...rowPendingChanges
19184
+ });
19200
19185
  }
19201
19186
  if (type === 'switch') {
19202
19187
  return /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, commonProps, {
@@ -19362,13 +19347,21 @@ function EditingActionMenu(props) {
19362
19347
  handleSave();
19363
19348
  }
19364
19349
  };
19350
+ const handleMenuContentKeyDown = event => {
19351
+ // Stops the keyboard event from propagating to the Table when EditActionsMenu is open
19352
+ if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
19353
+ event.stopPropagation();
19354
+ }
19355
+ };
19365
19356
  return /*#__PURE__*/React__default.createElement(IconButton, {
19366
19357
  appearance: "transparent",
19367
19358
  "aria-label": texts.table3.editing.actions.tooltip,
19368
19359
  className: "group-[[data-row-editing-status]]/row:hidden",
19369
19360
  icon: "more",
19370
19361
  onKeyDown: handleKeyDown,
19371
- menu: menuProps => (/*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, /*#__PURE__*/React__default.createElement(Menu$1.Item, {
19362
+ menu: menuProps => (/*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, {
19363
+ onKeyDown: handleMenuContentKeyDown
19364
+ }, /*#__PURE__*/React__default.createElement(Menu$1.Item, {
19372
19365
  icon: "tick",
19373
19366
  disabled: !hasChanges || hasErrors,
19374
19367
  onClick: handleSave
@@ -19392,14 +19385,20 @@ function ConfirmClearChangesDialog(props) {
19392
19385
  const {
19393
19386
  texts
19394
19387
  } = useLocalization();
19388
+ const handleClickInsideDialogContent = event => {
19389
+ // Prevents the click event from propagating to the table, ensuring the row isn't saved when a click occurs
19390
+ // inside the dialog
19391
+ event.stopPropagation();
19392
+ };
19395
19393
  return /*#__PURE__*/React__default.createElement(Dialog, Object.assign({}, dialogProps), /*#__PURE__*/React__default.createElement(Dialog.Content, {
19396
- "aria-label": texts.table3.editing.clearChangesConfirmationDialog.title
19394
+ "aria-label": texts.table3.editing.clearChangesConfirmationDialog.title,
19395
+ onClick: handleClickInsideDialogContent
19397
19396
  }, /*#__PURE__*/React__default.createElement(Dialog.Title, null, texts.table3.editing.clearChangesConfirmationDialog.title), /*#__PURE__*/React__default.createElement("p", null, texts.table3.editing.clearChangesConfirmationDialog.description), /*#__PURE__*/React__default.createElement(Dialog.Footer, null, /*#__PURE__*/React__default.createElement(Group, null, /*#__PURE__*/React__default.createElement(Dialog.Close, null, /*#__PURE__*/React__default.createElement(Button$1, {
19398
19397
  tabIndex: 0
19399
19398
  }, texts.table3.editing.clearChangesConfirmationDialog.cancel)), /*#__PURE__*/React__default.createElement(Dialog.Close, null, /*#__PURE__*/React__default.createElement(Button$1, {
19399
+ autoFocus: true,
19400
19400
  tabIndex: 0,
19401
19401
  appearance: "primary",
19402
- autoFocus: true,
19403
19402
  onClick: handleClear
19404
19403
  }, texts.table3.editing.clearChangesConfirmationDialog.confirm))))));
19405
19404
  }
@@ -19440,12 +19439,14 @@ function SaveStatus(props) {
19440
19439
  title: texts.table3.editing.saving.progress
19441
19440
  }, /*#__PURE__*/React__default.createElement(Spinner, {
19442
19441
  delay: 0,
19443
- className: "!text-grey-700 mr-1 !h-5 !w-5"
19442
+ className: "mr-1 !h-5 !w-5"
19444
19443
  }))) : (/*#__PURE__*/React__default.createElement(Tooltip, {
19445
19444
  title: texts.table3.editing.saving.complete
19446
- }, /*#__PURE__*/React__default.createElement(Icon, {
19447
- name: "tick",
19448
- className: "!text-grey-700 mr-1 !h-5 !w-5"
19445
+ }, /*#__PURE__*/React__default.createElement(BadgeIcon, {
19446
+ icon: "tick",
19447
+ color: "green",
19448
+ subtle: true,
19449
+ className: "mr-1"
19449
19450
  })))));
19450
19451
  }
19451
19452
 
@@ -19529,17 +19530,7 @@ function Alert$1(props) {
19529
19530
  const validationTexts = texts.table3.editing.validation;
19530
19531
  const tableMeta = table.options.meta;
19531
19532
  const [showFilterResetDialog, setShowFilterResetDialog] = React__default.useState(false);
19532
- const pendingChangesWithErrors = tableMeta.editing.getErrors();
19533
- const activeRow = React__default.useMemo(() => tableMeta.rowActive.rowActiveIndex ? table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex] : undefined, [tableMeta.rowActive.rowActiveIndex]);
19534
- // mark errors being rendered as seen
19535
- React__default.useEffect(() => {
19536
- pendingChangesWithErrors.forEach(error => {
19537
- if (activeRow && error.rowId === activeRow.id) {
19538
- return;
19539
- }
19540
- tableMeta.editing.setRowErrorsSeen(error.rowId);
19541
- });
19542
- }, [pendingChangesWithErrors]);
19533
+ const pendingChangesWithErrors = tableMeta.editing.getAlertErrors();
19543
19534
  function scrollToRow(rowIndex) {
19544
19535
  tableMeta.rowActive.setRowActiveIndex(rowIndex);
19545
19536
  scrollToIndex(rowIndex, {
@@ -19661,7 +19652,7 @@ function CreateNewRowButton(props) {
19661
19652
  });
19662
19653
  const handleKeyDown = event => {
19663
19654
  if (!tableMeta.editing.hasChanges() && event.key === 'Tab') {
19664
- !tableMeta.editing.saveChanges();
19655
+ tableMeta.editing.saveChanges();
19665
19656
  }
19666
19657
  };
19667
19658
  const handleCreate = function () {
@@ -19783,14 +19774,14 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
19783
19774
  'data-table-editing-mode': (_table3$meta$editing = table3.meta.editing) !== null && _table3$meta$editing !== void 0 && _table3$meta$editing.isEditing ? (_table3$meta$editing2 = table3.meta.editing) !== null && _table3$meta$editing2 !== void 0 && _table3$meta$editing2.isDetailedMode ? 'detailed' : 'normal' : undefined,
19784
19775
  enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing
19785
19776
  };
19786
- const hasValidationErrors = table3.meta.editing.hasErrors(table3.instance, table3.ref);
19777
+ const hasAlertErrors = table3.meta.editing.hasAlertErrors();
19787
19778
  const showCreateRowButton = table3.meta.editing.isEnabled && props.onEditingCreate;
19788
19779
  return /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(Table.Toolbar, {
19789
19780
  table: table3
19790
19781
  }, table3.meta.editing.isEnabled ? (/*#__PURE__*/React__default.createElement(Editing, {
19791
19782
  scrollToIndex: table3.renderer.scrollToIndex,
19792
19783
  table: table3.instance
19793
- })) : null), hasValidationErrors ? (/*#__PURE__*/React__default.createElement(Alert$1, {
19784
+ })) : null), hasAlertErrors ? (/*#__PURE__*/React__default.createElement(Alert$1, {
19794
19785
  className: "mb-4",
19795
19786
  scrollToIndex: table3.renderer.scrollToIndex,
19796
19787
  table: table3.instance,