@economic/taco 2.43.0 → 2.44.0

Sign up to get free protection for your applications and to get access to all the features.
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,