@economic/taco 2.43.1 → 2.44.1

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 (56) 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/Select2/Select2.js +9 -6
  7. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -2
  9. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +6 -1
  11. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js +4 -3
  13. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +17 -3
  15. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +1 -11
  17. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +1 -1
  19. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js +7 -5
  21. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +36 -47
  23. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +9 -0
  25. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +1 -1
  27. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  28. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +3 -1
  29. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  30. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +0 -3
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +1 -8
  33. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  34. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +85 -109
  35. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  36. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  37. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -9
  38. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +12 -1
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  41. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +1 -7
  42. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  43. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +17 -10
  44. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  45. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +4 -6
  46. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  47. package/dist/index.css +44 -22
  48. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.d.ts +1 -2
  49. package/dist/primitives/Table/types.d.ts +0 -1
  50. package/dist/primitives/Table/useTableManager/util/columns.d.ts +1 -1
  51. package/dist/primitives/Table/useTableManager/util/search.d.ts +2 -2
  52. package/dist/taco.cjs.development.js +224 -231
  53. package/dist/taco.cjs.development.js.map +1 -1
  54. package/dist/taco.cjs.production.min.js +1 -1
  55. package/dist/taco.cjs.production.min.js.map +1 -1
  56. 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
  }
@@ -6464,6 +6464,11 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6464
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;
6465
6465
  currentDay === null || currentDay === void 0 ? void 0 : currentDay.focus();
6466
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]);
6467
6472
  return /*#__PURE__*/React.createElement("span", {
6468
6473
  className: className,
6469
6474
  "data-taco": "datepicker",
@@ -6475,7 +6480,8 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6475
6480
  icon: "calendar",
6476
6481
  tabIndex: -1,
6477
6482
  popover: props => (/*#__PURE__*/React.createElement(Popover, Object.assign({}, props), /*#__PURE__*/React.createElement(Popover.Content, {
6478
- onOpenAutoFocus: handleOpenAutofocus
6483
+ onOpenAutoFocus: handleOpenAutofocus,
6484
+ onCloseAutoFocus: handleCloseAutoFocus
6479
6485
  }, ({
6480
6486
  close
6481
6487
  }) => (/*#__PURE__*/React.createElement("div", {
@@ -9978,18 +9984,25 @@ function columnFilterFn(value, filter) {
9978
9984
  }
9979
9985
  }
9980
9986
 
9987
+ const flattenCellValue = cellValue => {
9988
+ return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;
9989
+ };
9981
9990
  function isMatched(searchQuery, cellValue, dataType, localization) {
9982
- const cellValueAsString = String(cellValue !== null && cellValue !== void 0 ? cellValue : '');
9983
- if (cellValueAsString !== undefined && isWeakContains(cellValueAsString, searchQuery)) {
9984
- return true;
9991
+ if (typeof cellValue === 'object') {
9992
+ return flattenCellValue(cellValue).flat(Infinity).find(y => isWeakContains(y, searchQuery));
9985
9993
  } else {
9986
- const dataTypeProperties = getDataTypeProperties(dataType);
9987
- if (dataTypeProperties.getDisplayValue) {
9988
- const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, {
9989
- localization
9990
- });
9991
- if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, searchQuery)) {
9992
- 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
+ }
9993
10006
  }
9994
10007
  }
9995
10008
  }
@@ -10360,7 +10373,7 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns, lo
10360
10373
  const column = createInternalColumn('__expansion', internalColumns.rowExpansion, defaultSizing);
10361
10374
  columns.unshift(column);
10362
10375
  }
10363
- if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {
10376
+ if (options.enableRowSelection && internalColumns.rowSelection) {
10364
10377
  const column = createInternalColumn('__select', internalColumns.rowSelection, defaultSizing);
10365
10378
  columns.unshift(column);
10366
10379
  }
@@ -10382,10 +10395,9 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns, lo
10382
10395
  }
10383
10396
  function configureReactTableOptions(options, props, localization) {
10384
10397
  var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
10385
- const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
10386
10398
  // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,
10387
10399
  // which receives the React Table Row object and passes row.original to a callback.
10388
- const reactTableEnableRowSelection = typeof enableRowSelection === 'function' ? row => enableRowSelection(row.original) : enableRowSelection;
10400
+ const reactTableEnableRowSelection = typeof options.enableRowSelection === 'function' ? row => options.enableRowSelection(row.original) : options.enableRowSelection;
10389
10401
  const tableOptions = {
10390
10402
  defaultColumn: {
10391
10403
  enableColumnFilter: options.enableFiltering || true,
@@ -10405,7 +10417,6 @@ function configureReactTableOptions(options, props, localization) {
10405
10417
  enableHiding: (_options$enableColumn2 = options.enableColumnHiding) !== null && _options$enableColumn2 !== void 0 ? _options$enableColumn2 : false,
10406
10418
  enablePinning: (_options$enableColumn3 = options.enableColumnFreezing) !== null && _options$enableColumn3 !== void 0 ? _options$enableColumn3 : false,
10407
10419
  enableRowSelection: reactTableEnableRowSelection !== null && reactTableEnableRowSelection !== void 0 ? reactTableEnableRowSelection : false,
10408
- enableMultiRowSelection: !options.enableRowSelectionSingle && reactTableEnableRowSelection,
10409
10420
  enableSorting: (_options$enableSortin = options.enableSorting) !== null && _options$enableSortin !== void 0 ? _options$enableSortin : false,
10410
10421
  // models for default features
10411
10422
  getExpandedRowModel: reactTable.getExpandedRowModel(),
@@ -10429,8 +10440,8 @@ function configureReactTableOptions(options, props, localization) {
10429
10440
  tableOptions.getFilteredRowModel = reactTable.getFilteredRowModel();
10430
10441
  tableOptions.globalFilterFn = (row, columnId, searchQuery) => globalFilterFn(row, columnId, searchQuery, localization);
10431
10442
  tableOptions.getColumnCanGlobalFilter = column => {
10432
- var _column$columnDef$met, _column$columnDef$met2;
10433
- 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();
10434
10445
  };
10435
10446
  }
10436
10447
  if (tableOptions.enableSorting) {
@@ -10490,7 +10501,6 @@ const DEFAULT_PRESET = {
10490
10501
  enableColumnResizing: false,
10491
10502
  enableRowExpansion: false,
10492
10503
  enableRowSelection: false,
10493
- enableRowSelectionSingle: false,
10494
10504
  // custom -- common between all table types
10495
10505
  enableColumnOrdering: false,
10496
10506
  enableFontSize: false,
@@ -10517,7 +10527,6 @@ const presets = {
10517
10527
  enableColumnResizing: true,
10518
10528
  enableRowExpansion: true,
10519
10529
  enableRowSelection: true,
10520
- enableRowSelectionSingle: false,
10521
10530
  // custom -- common between all table types
10522
10531
  enableColumnOrdering: true,
10523
10532
  enableFontSize: true,
@@ -10543,7 +10552,6 @@ const presets = {
10543
10552
  enableColumnResizing: false,
10544
10553
  enableRowExpansion: true,
10545
10554
  enableRowSelection: true,
10546
- enableRowSelectionSingle: false,
10547
10555
  // custom -- common between all table types
10548
10556
  enableColumnOrdering: false,
10549
10557
  enableFontSize: false,
@@ -10569,7 +10577,6 @@ const presets = {
10569
10577
  enableColumnResizing: false,
10570
10578
  enableRowExpansion: true,
10571
10579
  enableRowSelection: false,
10572
- enableRowSelectionSingle: false,
10573
10580
  // custom -- common between all table types
10574
10581
  enableColumnOrdering: false,
10575
10582
  enableFontSize: false,
@@ -10586,7 +10593,7 @@ const presets = {
10586
10593
  }
10587
10594
  };
10588
10595
  function getTableFeaturePreset(props) {
10589
- 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;
10590
10597
  const presetOptions = props.preset ? presets[props.preset] : DEFAULT_PRESET;
10591
10598
  const enableRowActions = (_props$enableRowActio = props.enableRowActions) !== null && _props$enableRowActio !== void 0 ? _props$enableRowActio : presetOptions.enableRowActions;
10592
10599
  const enableRowClick = (_props$enableRowClick = props.enableRowClick) !== null && _props$enableRowClick !== void 0 ? _props$enableRowClick : presetOptions.enableRowClick;
@@ -10595,7 +10602,6 @@ function getTableFeaturePreset(props) {
10595
10602
  const enableRowGoto = (_props$enableRowGoto = props.enableRowGoto) !== null && _props$enableRowGoto !== void 0 ? _props$enableRowGoto : presetOptions.enableRowGoto;
10596
10603
  const enableRowExpansion = (_props$enableRowExpan = props.enableRowExpansion) !== null && _props$enableRowExpan !== void 0 ? _props$enableRowExpan : presetOptions.enableRowExpansion;
10597
10604
  const enableRowSelection = (_props$enableRowSelec = props.enableRowSelection) !== null && _props$enableRowSelec !== void 0 ? _props$enableRowSelec : presetOptions.enableRowSelection;
10598
- const enableRowSelectionSingle = (_props$enableRowSelec2 = props.enableRowSelectionSingle) !== null && _props$enableRowSelec2 !== void 0 ? _props$enableRowSelec2 : presetOptions.enableRowSelectionSingle;
10599
10605
  return {
10600
10606
  // react-table built-in
10601
10607
  enableFiltering: (_props$enableFilterin = props.enableFiltering) !== null && _props$enableFilterin !== void 0 ? _props$enableFilterin : presetOptions.enableFiltering,
@@ -10606,7 +10612,6 @@ function getTableFeaturePreset(props) {
10606
10612
  enableColumnResizing: (_props$enableColumnRe = props.enableColumnResizing) !== null && _props$enableColumnRe !== void 0 ? _props$enableColumnRe : presetOptions.enableColumnResizing,
10607
10613
  enableRowExpansion: enableRowExpansion && !!props.rowExpansionRenderer,
10608
10614
  enableRowSelection: !!props.onRowSelect && enableRowSelection,
10609
- enableRowSelectionSingle: !!props.onRowSelect && enableRowSelectionSingle,
10610
10615
  // custom -- common between all table types
10611
10616
  enableColumnOrdering: (_props$enableColumnOr = props.enableColumnOrdering) !== null && _props$enableColumnOr !== void 0 ? _props$enableColumnOr : presetOptions.enableColumnOrdering,
10612
10617
  enableFontSize: (_props$enableFontSize = props.enableFontSize) !== null && _props$enableFontSize !== void 0 ? _props$enableFontSize : presetOptions.enableFontSize,
@@ -11536,25 +11541,31 @@ function useTableRowSelectionListener(table, onRowSelect) {
11536
11541
  const rowSelection = React__default.useMemo(() => rows.map(row => row.original), [rows]);
11537
11542
  useLazyEffect(() => {
11538
11543
  if (table.options.enableRowSelection && typeof onRowSelect === 'function') {
11539
- if (table.options.enableMultiRowSelection) {
11540
- onRowSelect(rowSelection);
11541
- } else {
11542
- var _ref;
11543
- onRowSelect((_ref = [rowSelection[0]]) !== null && _ref !== void 0 ? _ref : []);
11544
- }
11544
+ onRowSelect(rowSelection);
11545
11545
  }
11546
11546
  /**
11547
- * Casting to a boolean, since enableRowSelection and enableMultiRowSelection can be a functions,
11547
+ * Casting to a boolean, since enableRowSelection can be a function,
11548
11548
  * and setting a function as depoendency will lead to infinity loop. And in case of row selection useEffect,
11549
- * 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
11550
11550
  * will be applied directly to particular rows.
11551
11551
  */
11552
- }, [!!table.options.enableRowSelection, !!table.options.enableMultiRowSelection, JSON.stringify(rowSelection)]);
11552
+ }, [!!table.options.enableRowSelection, JSON.stringify(rowSelection)]);
11553
11553
  }
11554
11554
 
11555
11555
  function useTableSearchListener(table, onChangeSearch) {
11556
11556
  const meta = table.options.meta;
11557
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]);
11558
11569
  // recalculates highlighted indexes whenever something important changes
11559
11570
  React__default.useEffect(() => {
11560
11571
  if (meta.search.isEnabled) {
@@ -11564,7 +11575,7 @@ function useTableSearchListener(table, onChangeSearch) {
11564
11575
  onChangeSearch(query);
11565
11576
  }
11566
11577
  }
11567
- }, [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]);
11568
11579
  }
11569
11580
 
11570
11581
  function useTableSettingsListener(table, onChangeSettings) {
@@ -12288,7 +12299,6 @@ function Actions$1(props) {
12288
12299
  actions,
12289
12300
  actionsLength,
12290
12301
  data,
12291
- fontSize,
12292
12302
  isActiveRow,
12293
12303
  rowId
12294
12304
  } = props;
@@ -12298,11 +12308,7 @@ function Actions$1(props) {
12298
12308
  const visibleActions = actions.map(action => action(data, rowId)).filter(action => !!action);
12299
12309
  const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);
12300
12310
  const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);
12301
- const className = cn('-mb-2 flex justify-end text-right bg-[inherit] shadow-[-6px_0px_6px_var(--table-row-actions-shadow)] print:hidden', {
12302
- // Adjust negative margin on row actions cell to ensure that the cell aligns vertically.
12303
- '-mt-2': fontSize === exports.FontSizes.small,
12304
- '-mt-1.5': fontSize !== exports.FontSizes.small
12305
- });
12311
+ const className = cn('flex justify-end text-right bg-[inherit] shadow-[-6px_0px_6px_var(--table-row-actions-shadow)] print:hidden');
12306
12312
  return /*#__PURE__*/React__default.createElement("span", {
12307
12313
  className: className
12308
12314
  }, actionsOnRow.map((button, index) => {
@@ -12354,7 +12360,6 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
12354
12360
  actions: actions,
12355
12361
  actionsLength: actionsLength,
12356
12362
  data: row.original,
12357
- fontSize: tableMeta.fontSize.size,
12358
12363
  isActiveRow: isActiveRow,
12359
12364
  rowId: row.id
12360
12365
  });
@@ -12472,39 +12477,36 @@ function Header$4(context) {
12472
12477
  table
12473
12478
  } = context;
12474
12479
  const tableMeta = table.options.meta;
12475
- if (table.options.enableMultiRowSelection) {
12476
- const isAllRowsSelected = table.getIsAllRowsSelected();
12477
- const isSomeRowsSelected = table.getIsSomeRowsSelected();
12478
- const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;
12479
- const handleChange = function (checked) {
12480
- try {
12481
- function _temp2() {
12482
- table.toggleAllRowsSelected(checked);
12483
- }
12484
- const _temp = function () {
12485
- if (tableMeta.server.loadAllIfNeeded) {
12486
- // don't pass the search query because we need all data - not filtered data
12487
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12488
- }
12489
- }();
12490
- // load all data if that is possible
12491
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
12492
- } catch (e) {
12493
- 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);
12494
12487
  }
12495
- };
12496
- return /*#__PURE__*/React__default.createElement(Tooltip, {
12497
- title: title
12498
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
12499
- "aria-label": title,
12500
- className: "hover:border-blue !-mt-px",
12501
- checked: isAllRowsSelected,
12502
- indeterminate: isSomeRowsSelected && !isAllRowsSelected,
12503
- loading: tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
12504
- onChange: handleChange
12505
- }));
12506
- }
12507
- 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
+ }));
12508
12510
  }
12509
12511
  const toggleBetween = (fromRowIndex, toRowIndex) => {
12510
12512
  const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;
@@ -12530,83 +12532,64 @@ function Cell$3(context) {
12530
12532
  const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();
12531
12533
  const canSelect = row.getCanSelect();
12532
12534
  const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;
12533
- if (table.options.enableMultiRowSelection) {
12534
- const handleClick = function (event) {
12535
- try {
12536
- function _temp7() {
12537
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12538
- }
12539
- event.stopPropagation();
12540
- const _temp6 = function () {
12541
- if (row.getIsGrouped()) {
12542
- row.subRows.forEach(row => row.toggleSelected());
12543
- } else {
12544
- const _temp5 = function () {
12545
- if (event.shiftKey) {
12546
- var _tableMeta$rowSelecti;
12547
- function _temp4() {
12548
- table.setRowSelection(currentRowSelection => ({
12549
- ...currentRowSelection,
12550
- ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
12551
- ...state,
12552
- [row.id]: true
12553
- }), {})
12554
- }));
12555
- }
12556
- const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
12557
- const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
12558
- const _temp3 = function () {
12559
- if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
12560
- // don't pass the search query because we need all data - not filtered data
12561
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12562
- }
12563
- }();
12564
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
12565
- } else {
12566
- row.toggleSelected();
12567
- }
12568
- }();
12569
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
12570
- }
12571
- }();
12572
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
12573
- } catch (e) {
12574
- return Promise.reject(e);
12535
+ const handleClick = function (event) {
12536
+ try {
12537
+ function _temp7() {
12538
+ tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12575
12539
  }
12576
- };
12577
- return /*#__PURE__*/React__default.createElement(Tooltip, {
12578
- hidden: !canSelect,
12579
- title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
12580
- className: "ml-2",
12581
- keys: "Space"
12582
- }))
12583
- }, /*#__PURE__*/React__default.createElement(Checkbox, {
12584
- "aria-label": title,
12585
- className: "!mt-0",
12586
- checked: isSelected,
12587
- onClick: handleClick,
12588
- disabled: !canSelect,
12589
- // this is necessary to remove console spam from eslint
12590
- onChange: () => false
12591
- }));
12592
- } else {
12593
- const className = cn('!mt-0', getRadioClassnames(!canSelect));
12594
- const handleClick = event => {
12595
12540
  event.stopPropagation();
12596
- row.toggleSelected();
12597
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
12598
- };
12599
- return /*#__PURE__*/React__default.createElement("button", {
12600
- className: className,
12601
- "aria-checked": canSelect && isSelected,
12602
- disabled: !canSelect,
12603
- onClick: handleClick,
12604
- role: "radio",
12605
- type: "button"
12606
- }, isSelected ? /*#__PURE__*/React__default.createElement("span", {
12607
- className: "h-2 w-2 rounded-full bg-white"
12608
- }) : null);
12609
- }
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
+ }));
12610
12593
  }
12611
12594
  const renderer$3 = {
12612
12595
  header: Header$4,
@@ -12751,7 +12734,6 @@ function GroupedCell(props) {
12751
12734
  canShowActions: canShowActions,
12752
12735
  cellRef: cellRef,
12753
12736
  colSpan: colSpan,
12754
- fontSize: tableMeta.fontSize.size,
12755
12737
  rowActions: tableMeta.rowGroups.rowActionsForGroup,
12756
12738
  rowId: cell.row.id,
12757
12739
  subRows: subRows
@@ -12763,7 +12745,6 @@ const MemoedGroupedCell = /*#__PURE__*/React__default.memo(function MemoedGroupe
12763
12745
  cellRef,
12764
12746
  children,
12765
12747
  colSpan,
12766
- fontSize,
12767
12748
  rowActions,
12768
12749
  rowId,
12769
12750
  subRows,
@@ -12780,7 +12761,6 @@ const MemoedGroupedCell = /*#__PURE__*/React__default.memo(function MemoedGroupe
12780
12761
  actions: rowActions,
12781
12762
  actionsLength: 4,
12782
12763
  data: subRows,
12783
- fontSize: fontSize,
12784
12764
  isActiveRow: true,
12785
12765
  rowId: rowId
12786
12766
  })) : null);
@@ -15817,8 +15797,12 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15817
15797
  setValue(nextValue);
15818
15798
  }
15819
15799
  };
15820
- const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
15821
- const isInlineCreation = onCreate && !createDialog;
15800
+ const hasInlineCreation = onCreate && !createDialog;
15801
+ const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;
15802
+ const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md ', {
15803
+ 'focus-within:yt-focus': !hasSearch,
15804
+ 'outline-none': hasSearch
15805
+ }, createCollectionClassName());
15822
15806
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
15823
15807
  value: context
15824
15808
  }, /*#__PURE__*/React__default.createElement(PopoverPrimitive.Root, {
@@ -15849,8 +15833,8 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15849
15833
  style: {
15850
15834
  minWidth: dimensions !== null && dimensions !== void 0 && dimensions.width ? `${dimensions.width}px` : undefined
15851
15835
  }
15852
- }, flattenedChildren.length > 0 || isInlineCreation ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
15853
- placeholder: isInlineCreation ? texts.select2.searchOrCreate : texts.select2.search,
15836
+ }, hasSearch ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
15837
+ placeholder: hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search,
15854
15838
  ref: searchRef,
15855
15839
  onTabKeyPress: () => setTabTriggeredClose(true)
15856
15840
  }), multiple && selectOptions.length > 1 && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$1, {
@@ -15872,7 +15856,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15872
15856
  className: "text-grey-700 -mt-0.5 flex h-8 items-center px-2",
15873
15857
  role: "presentation"
15874
15858
  }, texts.listbox.empty)) : (/*#__PURE__*/React__default.createElement(Root$1, {
15875
- className: "flex flex-col gap-0.5",
15859
+ className: "flex flex-col gap-0.5 focus-visible:outline-none",
15876
15860
  customSelector: ":scope > button",
15877
15861
  disabled: disabled,
15878
15862
  multiple: multiple,
@@ -15880,7 +15864,6 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15880
15864
  readOnly: readOnly,
15881
15865
  ref: listboxRef,
15882
15866
  setValue: setValue,
15883
- tabIndex: -1,
15884
15867
  value: value
15885
15868
  }, searchQuery === '' ? (/*#__PURE__*/React__default.createElement(Collection$1, null, initialChildren)) : (/*#__PURE__*/React__default.createElement(Collection$1, null, filteredChildren)), onCreate ? /*#__PURE__*/React__default.createElement(Create, {
15886
15869
  onCreate: onCreate,
@@ -16756,6 +16739,8 @@ function TableGrid(props) {
16756
16739
  table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);
16757
16740
  } : undefined;
16758
16741
  const filterReason = getFilterReason(table);
16742
+ const searchNotApplied = !table.state.globalFilter || table.state.globalFilter === '';
16743
+ const filtersNotApplied = !table.state.columnFilters || table.state.columnFilters.length === 0;
16759
16744
  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, {
16760
16745
  id: table.id,
16761
16746
  "data-table-font-size": table.meta.fontSize.size,
@@ -16788,7 +16773,7 @@ function TableGrid(props) {
16788
16773
  ...table.renderer.style,
16789
16774
  height: table.renderer.style.height + ROW_HEIGHT_ESTIMATES[table.meta.rowHeight.height]
16790
16775
  } : table.renderer.style
16791
- }, table.renderer.rows, props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16776
+ }, table.renderer.rows, searchNotApplied && filtersNotApplied && props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16792
16777
  table: table.instance
16793
16778
  }) : null)))));
16794
16779
  }
@@ -18293,6 +18278,8 @@ const useTableRowCreation = (data, tableRef) => {
18293
18278
 
18294
18279
  function useTableEditingListener(table, tableRef) {
18295
18280
  const tableMeta = table.options.meta;
18281
+ const completedRowsCount = tableMeta.editing.getCompletedRowsCount();
18282
+ const localization = useLocalization();
18296
18283
  const saveChanges = () => {
18297
18284
  requestAnimationFrame(() => {
18298
18285
  tableMeta.editing.saveChanges();
@@ -18333,6 +18320,11 @@ function useTableEditingListener(table, tableRef) {
18333
18320
  window.removeEventListener('beforeunload', showUnsavedChangesWarning);
18334
18321
  };
18335
18322
  }, [tableMeta.editing.isEditing, hasChanges]);
18323
+ React__default.useEffect(() => {
18324
+ if (completedRowsCount > 0) {
18325
+ resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization);
18326
+ }
18327
+ }, [completedRowsCount]);
18336
18328
  React__default.useEffect(() => {
18337
18329
  const onClickOutside = event => {
18338
18330
  if (tableMeta.editing.isEditing) {
@@ -18545,14 +18537,13 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18545
18537
  }
18546
18538
  if (rowError || cellErrors) {
18547
18539
  setPendingChanges(currentChanges => {
18548
- var _nextChanges$rowId$_m, _nextChanges$rowId$_m2;
18549
18540
  const nextChanges = {
18550
18541
  ...currentChanges
18551
18542
  };
18552
18543
  nextChanges[rowId]._meta.errors = {
18553
18544
  row: rowError,
18554
18545
  cells: cellErrors,
18555
- 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
18546
+ shouldShowErrorAlert: true
18556
18547
  };
18557
18548
  return nextChanges;
18558
18549
  });
@@ -18587,7 +18578,7 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18587
18578
  errors: {
18588
18579
  ...nextChanges[cell.row.id]._meta.errors,
18589
18580
  cells: errors,
18590
- hasShownErrorAlert: Object.keys(errors).length && !nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert ? false : nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert
18581
+ shouldShowErrorAlert: !Object.keys(errors).length ? false : nextChanges[cell.row.id]._meta.errors.shouldShowErrorAlert
18591
18582
  }
18592
18583
  };
18593
18584
  return nextChanges;
@@ -18675,22 +18666,18 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18675
18666
  if (!isEnabled) {
18676
18667
  return false;
18677
18668
  }
18678
- return hasRowErrors(rowId) && !!((_pendingChanges$rowId6 = pendingChanges[rowId]._meta.errors) !== null && _pendingChanges$rowId6 !== void 0 && _pendingChanges$rowId6.hasShownErrorAlert);
18669
+ return hasRowErrors(rowId) && !!((_pendingChanges$rowId6 = pendingChanges[rowId]._meta.errors) !== null && _pendingChanges$rowId6 !== void 0 && _pendingChanges$rowId6.shouldShowErrorAlert);
18679
18670
  }
18680
- function setRowErrorsSeen(rowId) {
18681
- var _pendingChanges$rowId7;
18682
- if (((_pendingChanges$rowId7 = pendingChanges[rowId]._meta.errors) === null || _pendingChanges$rowId7 === void 0 ? void 0 : _pendingChanges$rowId7.hasShownErrorAlert) === false) {
18683
- setPendingChanges(currentChanges => {
18684
- const nextChanges = {
18685
- ...currentChanges
18686
- };
18687
- nextChanges[rowId]._meta.errors = {
18688
- ...nextChanges[rowId]._meta.errors,
18689
- hasShownErrorAlert: true
18690
- };
18691
- return nextChanges;
18692
- });
18671
+ function getRowPendingChange(rowId) {
18672
+ const rowPendingChanges = pendingChanges[rowId];
18673
+ if (rowPendingChanges) {
18674
+ const {
18675
+ _meta,
18676
+ ...pendingChange
18677
+ } = rowPendingChanges;
18678
+ return pendingChange;
18693
18679
  }
18680
+ return undefined;
18694
18681
  }
18695
18682
  function getRowSaveStatus(rowId) {
18696
18683
  if (!isEnabled) {
@@ -18712,8 +18699,8 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18712
18699
  });
18713
18700
  }
18714
18701
  function getRowMoveReason(rowId) {
18715
- var _pendingChanges$rowId8;
18716
- return (_pendingChanges$rowId8 = pendingChanges[rowId]) !== null && _pendingChanges$rowId8 !== void 0 && _pendingChanges$rowId8._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;
18702
+ var _pendingChanges$rowId7;
18703
+ return (_pendingChanges$rowId7 = pendingChanges[rowId]) !== null && _pendingChanges$rowId7 !== void 0 && _pendingChanges$rowId7._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;
18717
18704
  }
18718
18705
  function hasChanges(rowId) {
18719
18706
  if (!isEnabled) {
@@ -18721,28 +18708,14 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18721
18708
  }
18722
18709
  return rowId ? !!pendingChanges[rowId] : !!Object.keys(pendingChanges).length;
18723
18710
  }
18724
- function hasErrors(table, tableRef) {
18725
- var _tableRef$current;
18711
+ function hasAlertErrors() {
18726
18712
  if (!isEnabled) {
18727
18713
  return false;
18728
18714
  }
18729
- const tableMeta = table.options.meta;
18730
- const focusIsInsideTable = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.contains(document.activeElement);
18731
- let activeRow;
18732
- if (tableMeta.rowActive.rowActiveIndex !== undefined) {
18733
- activeRow = table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex];
18734
- }
18735
- return Object.keys(getErrors().filter(error => {
18736
- var _activeRow;
18737
- if ((_activeRow = activeRow) !== null && _activeRow !== void 0 && _activeRow.id && focusIsInsideTable) {
18738
- var _activeRow2, _error$pendingChange$;
18739
- 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;
18740
- }
18741
- return true;
18742
- })).length;
18715
+ return !!getAlertErrors().length;
18743
18716
  }
18744
- function getErrors() {
18745
- return Object.keys(pendingChanges).filter(hasRowErrors).map(rowId => ({
18717
+ function getAlertErrors() {
18718
+ return Object.keys(pendingChanges).filter(hasRowErrorsSeen).map(rowId => ({
18746
18719
  rowId,
18747
18720
  pendingChange: pendingChanges[rowId]
18748
18721
  }));
@@ -18756,6 +18729,9 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18756
18729
  return nextChanges;
18757
18730
  });
18758
18731
  }
18732
+ function getCompletedRowsCount() {
18733
+ return Object.values(saveStates).filter(value => value === 'complete').length;
18734
+ }
18759
18735
  return {
18760
18736
  getCellValue,
18761
18737
  getCellError,
@@ -18763,16 +18739,17 @@ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18763
18739
  validateCell,
18764
18740
  addCreatedRowChangeset,
18765
18741
  hasChanges,
18766
- hasErrors,
18767
- getErrors,
18742
+ hasAlertErrors,
18743
+ getAlertErrors,
18768
18744
  saveChanges,
18769
18745
  resetChanges,
18770
18746
  hasRowErrors,
18771
18747
  hasRowErrorsSeen,
18772
- setRowErrorsSeen,
18748
+ getRowPendingChange,
18773
18749
  getRowSaveStatus,
18774
18750
  setRowSaveStatus,
18775
- getRowMoveReason
18751
+ getRowMoveReason,
18752
+ getCompletedRowsCount
18776
18753
  };
18777
18754
  }
18778
18755
  function useLastFocusedCellIndex() {
@@ -18844,12 +18821,16 @@ function createPendingChangesSetter(currentChanges, row, rowIndex, changes, loca
18844
18821
  // otherwise remove any change - no point saving the same value
18845
18822
  if (change !== row.original[accessor]) {
18846
18823
  rowChanges[accessor] = change;
18847
- // determine if the row will move position based on this change, and save why it will move
18848
- const reason = willRowMove(cells[accessor], change, rowIndex, localization);
18849
- if (reason) {
18850
- rowChanges._meta.moveReason[accessor] = reason;
18851
- } else {
18852
- delete rowChanges._meta.moveReason[accessor];
18824
+ // consumers sometimes include properties in onEditingChange that aren't rendered as columns, we need to guard against that.
18825
+ // eslint-disable-next-line no-prototype-builtins
18826
+ if (cells.hasOwnProperty(accessor)) {
18827
+ // determine if the row will move position based on this change, and save why it will move
18828
+ const reason = willRowMove(cells[accessor], change, rowIndex, localization);
18829
+ if (reason) {
18830
+ rowChanges._meta.moveReason[accessor] = reason;
18831
+ } else {
18832
+ delete rowChanges._meta.moveReason[accessor];
18833
+ }
18853
18834
  }
18854
18835
  } else {
18855
18836
  delete rowChanges[accessor];
@@ -19078,7 +19059,7 @@ function useEditingCellAutofocus(props) {
19078
19059
  (_props$cellRef$curren2 = props.cellRef.current) === null || _props$cellRef$curren2 === void 0 ? void 0 : _props$cellRef$curren2.focus();
19079
19060
  }
19080
19061
  }
19081
- }, [autoFocus]);
19062
+ }, [tableMeta.rowActive.rowActiveIndex]);
19082
19063
  // when the cell receives focus we actually want to focus the control inside it...
19083
19064
  const handleFocus = event => {
19084
19065
  var _props$cellRef$curren3;
@@ -19089,11 +19070,12 @@ function useEditingCellAutofocus(props) {
19089
19070
  const tableRect = tableElement.getBoundingClientRect();
19090
19071
  const leftOffsetFromScrollContainer = targetRect.left - tableRect.left;
19091
19072
  const scrollbarWidth = tableElement.offsetWidth - tableElement.clientWidth; // the width of table vertical scrollbar
19073
+ const isFocusedElementMenu = event.currentTarget.getAttribute('data-cell-id') === '__actions';
19092
19074
  if (
19093
19075
  // When pinned column overlaps the focused cell
19094
- leftOffsetFromScrollContainer < columnFreezingOffset ||
19076
+ (leftOffsetFromScrollContainer < columnFreezingOffset ||
19095
19077
  // When focused cell goes behidn the edge of the table
19096
- leftOffsetFromScrollContainer + targetRect.width > tableRect.width - scrollbarWidth) {
19078
+ leftOffsetFromScrollContainer + targetRect.width > tableRect.width - scrollbarWidth) && !isFocusedElementMenu) {
19097
19079
  tableElement.scrollTo(props.cell.column.getStart() - columnFreezingOffset, tableElement.scrollTop);
19098
19080
  }
19099
19081
  }
@@ -19143,6 +19125,7 @@ function EditingControlCell(props) {
19143
19125
  onBlur: handleBlur,
19144
19126
  onChange: value => tableMeta.editing.setCellValue(cell, value, rowIndex),
19145
19127
  row: cell.row.original,
19128
+ rowPendingChanges: tableMeta.editing.getRowPendingChange(cell.row.id),
19146
19129
  tabIndex: isActiveRow ? 0 : -1,
19147
19130
  toggleEditing: tableMeta.editing.toggleEditing,
19148
19131
  toggleDetailedMode: tableMeta.editing.toggleDetailedMode,
@@ -19177,6 +19160,7 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
19177
19160
  onBlur,
19178
19161
  onChange,
19179
19162
  row,
19163
+ rowPendingChanges,
19180
19164
  tabIndex = -1,
19181
19165
  toggleEditing,
19182
19166
  toggleDetailedMode,
@@ -19197,7 +19181,10 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
19197
19181
  setValue: onChange,
19198
19182
  value
19199
19183
  };
19200
- return type(controlFnProps, row);
19184
+ return type(controlFnProps, {
19185
+ ...row,
19186
+ ...rowPendingChanges
19187
+ });
19201
19188
  }
19202
19189
  if (type === 'switch') {
19203
19190
  return /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, commonProps, {
@@ -19363,13 +19350,21 @@ function EditingActionMenu(props) {
19363
19350
  handleSave();
19364
19351
  }
19365
19352
  };
19353
+ const handleMenuContentKeyDown = event => {
19354
+ // Stops the keyboard event from propagating to the Table when EditActionsMenu is open
19355
+ if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
19356
+ event.stopPropagation();
19357
+ }
19358
+ };
19366
19359
  return /*#__PURE__*/React__default.createElement(IconButton, {
19367
19360
  appearance: "transparent",
19368
19361
  "aria-label": texts.table3.editing.actions.tooltip,
19369
19362
  className: "group-[[data-row-editing-status]]/row:hidden",
19370
19363
  icon: "more",
19371
19364
  onKeyDown: handleKeyDown,
19372
- 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, {
19365
+ menu: menuProps => (/*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, {
19366
+ onKeyDown: handleMenuContentKeyDown
19367
+ }, /*#__PURE__*/React__default.createElement(Menu$1.Item, {
19373
19368
  icon: "tick",
19374
19369
  disabled: !hasChanges || hasErrors,
19375
19370
  onClick: handleSave
@@ -19393,14 +19388,20 @@ function ConfirmClearChangesDialog(props) {
19393
19388
  const {
19394
19389
  texts
19395
19390
  } = useLocalization();
19391
+ const handleClickInsideDialogContent = event => {
19392
+ // Prevents the click event from propagating to the table, ensuring the row isn't saved when a click occurs
19393
+ // inside the dialog
19394
+ event.stopPropagation();
19395
+ };
19396
19396
  return /*#__PURE__*/React__default.createElement(Dialog, Object.assign({}, dialogProps), /*#__PURE__*/React__default.createElement(Dialog.Content, {
19397
- "aria-label": texts.table3.editing.clearChangesConfirmationDialog.title
19397
+ "aria-label": texts.table3.editing.clearChangesConfirmationDialog.title,
19398
+ onClick: handleClickInsideDialogContent
19398
19399
  }, /*#__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, {
19399
19400
  tabIndex: 0
19400
19401
  }, texts.table3.editing.clearChangesConfirmationDialog.cancel)), /*#__PURE__*/React__default.createElement(Dialog.Close, null, /*#__PURE__*/React__default.createElement(Button$1, {
19402
+ autoFocus: true,
19401
19403
  tabIndex: 0,
19402
19404
  appearance: "primary",
19403
- autoFocus: true,
19404
19405
  onClick: handleClear
19405
19406
  }, texts.table3.editing.clearChangesConfirmationDialog.confirm))))));
19406
19407
  }
@@ -19441,12 +19442,14 @@ function SaveStatus(props) {
19441
19442
  title: texts.table3.editing.saving.progress
19442
19443
  }, /*#__PURE__*/React__default.createElement(Spinner, {
19443
19444
  delay: 0,
19444
- className: "!text-grey-700 mr-1 !h-5 !w-5"
19445
+ className: "mr-1 !h-5 !w-5"
19445
19446
  }))) : (/*#__PURE__*/React__default.createElement(Tooltip, {
19446
19447
  title: texts.table3.editing.saving.complete
19447
- }, /*#__PURE__*/React__default.createElement(Icon, {
19448
- name: "tick",
19449
- className: "!text-grey-700 mr-1 !h-5 !w-5"
19448
+ }, /*#__PURE__*/React__default.createElement(BadgeIcon, {
19449
+ icon: "tick",
19450
+ color: "green",
19451
+ subtle: true,
19452
+ className: "mr-1"
19450
19453
  })))));
19451
19454
  }
19452
19455
 
@@ -19530,17 +19533,7 @@ function Alert$1(props) {
19530
19533
  const validationTexts = texts.table3.editing.validation;
19531
19534
  const tableMeta = table.options.meta;
19532
19535
  const [showFilterResetDialog, setShowFilterResetDialog] = React__default.useState(false);
19533
- const pendingChangesWithErrors = tableMeta.editing.getErrors();
19534
- const activeRow = React__default.useMemo(() => tableMeta.rowActive.rowActiveIndex ? table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex] : undefined, [tableMeta.rowActive.rowActiveIndex]);
19535
- // mark errors being rendered as seen
19536
- React__default.useEffect(() => {
19537
- pendingChangesWithErrors.forEach(error => {
19538
- if (activeRow && error.rowId === activeRow.id) {
19539
- return;
19540
- }
19541
- tableMeta.editing.setRowErrorsSeen(error.rowId);
19542
- });
19543
- }, [pendingChangesWithErrors]);
19536
+ const pendingChangesWithErrors = tableMeta.editing.getAlertErrors();
19544
19537
  function scrollToRow(rowIndex) {
19545
19538
  tableMeta.rowActive.setRowActiveIndex(rowIndex);
19546
19539
  scrollToIndex(rowIndex, {
@@ -19662,7 +19655,7 @@ function CreateNewRowButton(props) {
19662
19655
  });
19663
19656
  const handleKeyDown = event => {
19664
19657
  if (!tableMeta.editing.hasChanges() && event.key === 'Tab') {
19665
- !tableMeta.editing.saveChanges();
19658
+ tableMeta.editing.saveChanges();
19666
19659
  }
19667
19660
  };
19668
19661
  const handleCreate = function () {
@@ -19784,14 +19777,14 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
19784
19777
  '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,
19785
19778
  enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing
19786
19779
  };
19787
- const hasValidationErrors = table3.meta.editing.hasErrors(table3.instance, table3.ref);
19780
+ const hasAlertErrors = table3.meta.editing.hasAlertErrors();
19788
19781
  const showCreateRowButton = table3.meta.editing.isEnabled && props.onEditingCreate;
19789
19782
  return /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(Table.Toolbar, {
19790
19783
  table: table3
19791
19784
  }, table3.meta.editing.isEnabled ? (/*#__PURE__*/React__default.createElement(Editing, {
19792
19785
  scrollToIndex: table3.renderer.scrollToIndex,
19793
19786
  table: table3.instance
19794
- })) : null), hasValidationErrors ? (/*#__PURE__*/React__default.createElement(Alert$1, {
19787
+ })) : null), hasAlertErrors ? (/*#__PURE__*/React__default.createElement(Alert$1, {
19795
19788
  className: "mb-4",
19796
19789
  scrollToIndex: table3.renderer.scrollToIndex,
19797
19790
  table: table3.instance,