@economic/taco 2.68.0 → 2.69.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.
package/dist/taco.d.ts CHANGED
@@ -3046,7 +3046,9 @@ export declare interface Table3CommonProps<TType = unknown> extends Table3Featur
3046
3046
 
3047
3047
  export declare type Table3EditingChangeHandler<TType = unknown> = (accessor: string, value: unknown, row: TType, prevRow: TType) => Promise<Partial<TType>> | undefined;
3048
3048
 
3049
- export declare type Table3EditingCreateHandler<TType = unknown> = () => Promise<Partial<TType>>;
3049
+ export declare type Table3EditingCreateHandler<TType = unknown> = ({ activeRow, }?: {
3050
+ activeRow: TType | undefined;
3051
+ }) => Promise<Partial<TType>>;
3050
3052
 
3051
3053
  declare type Table3EditingDiscardHandler = () => void;
3052
3054
 
package/dist/taco.js CHANGED
@@ -11391,22 +11391,22 @@ const getButtonClasses$1 = () => {
11391
11391
  const getAppearanceClasses = (value, icon = false) => {
11392
11392
  switch (value) {
11393
11393
  case "primary":
11394
- return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
11394
+ return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 focus-visible:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
11395
11395
  case "danger":
11396
- return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
11396
+ return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 focus-visible:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
11397
11397
  case "ghost":
11398
- return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
11398
+ return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 focus-visible:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
11399
11399
  case "discrete": {
11400
11400
  if (icon) {
11401
- return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30`;
11401
+ return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] focus-visible:bg-[#000]/[0.08] aria-disabled:text-black/30`;
11402
11402
  }
11403
- return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 aria-disabled:text-blue-500/50`;
11403
+ return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 focus-visible:text-blue-700 aria-disabled:text-blue-500/50`;
11404
11404
  }
11405
11405
  case "transparent": {
11406
- return `bg-transparent text-black visited:text-black hover:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
11406
+ return `bg-transparent text-black visited:text-black hover:text-black focus-visible:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
11407
11407
  }
11408
11408
  default:
11409
- return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
11409
+ return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 focus-visible:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
11410
11410
  }
11411
11411
  };
11412
11412
  const createButtonWithTooltip = (props, className, ref) => {
@@ -18244,7 +18244,7 @@ const ScrollableList = React.forwardRef(function ScrollableList2(props, ref) {
18244
18244
  role: options.length <= 0 || loading ? "presentation" : "listbox",
18245
18245
  tabIndex: otherProps.tabIndex || 0
18246
18246
  };
18247
- return /* @__PURE__ */ React.createElement("ul", { ...list, "data-taco": "scrollable-list" }, loading ? /* @__PURE__ */ React.createElement("li", { className: "yt-list__empty" }, /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement(Spinner, { delay: 0 })), /* @__PURE__ */ React.createElement("span", null, texts.listbox.loading)) : options.length ? options.map(({ children, icon, ...optionProps }) => /* @__PURE__ */ React.createElement("li", { ...optionProps }, icon, /* @__PURE__ */ React.createElement("span", { className: "flex-grow truncate text-left" }, children), multiselect && /* @__PURE__ */ React.createElement(
18247
+ return /* @__PURE__ */ React.createElement("ul", { ...list, "data-taco": "scrollable-list" }, loading ? /* @__PURE__ */ React.createElement("li", { className: "yt-list__empty" }, /* @__PURE__ */ React.createElement("span", null, /* @__PURE__ */ React.createElement(Spinner, { delay: 0 })), /* @__PURE__ */ React.createElement("span", null, texts.listbox.loading)) : options.length ? options.map(({ children, icon, ...optionProps }) => /* @__PURE__ */ React.createElement("li", { ...optionProps }, icon, /* @__PURE__ */ React.createElement("span", { "data-taco": "list-option", className: "flex-grow truncate text-left" }, children), multiselect && /* @__PURE__ */ React.createElement(
18248
18248
  Checkbox$2,
18249
18249
  {
18250
18250
  "aria-hidden": true,
@@ -38481,7 +38481,16 @@ const useResizeObserver$1 = (ref, enabled = true) => {
38481
38481
  const DisplayRow = React__default.memo(
38482
38482
  React__default.forwardRef(function DisplayRow2(props, externalRef) {
38483
38483
  var _a, _b, _c;
38484
- const { children, cellRenderer: CellRenderer, index: index2, measureRow, row, table, ...otherAttributes } = props;
38484
+ const {
38485
+ children,
38486
+ cellRenderer: CellRenderer,
38487
+ index: index2,
38488
+ measureRow,
38489
+ row,
38490
+ table,
38491
+ remeasureDependencies = [],
38492
+ ...otherAttributes
38493
+ } = props;
38485
38494
  const tableMeta = table.options.meta;
38486
38495
  const attributes = {
38487
38496
  ...otherAttributes,
@@ -38577,7 +38586,7 @@ const DisplayRow = React__default.memo(
38577
38586
  const rowHeight = ((_a2 = ref.current) == null ? void 0 : _a2.getBoundingClientRect().height) ?? 0;
38578
38587
  const expansionHeight = ((_b2 = expansionRef.current) == null ? void 0 : _b2.getBoundingClientRect().height) ?? 0;
38579
38588
  measureRow(rowHeight + expansionHeight);
38580
- }, [expansionRef.current, expandedRowSize == null ? void 0 : expandedRowSize.height]);
38589
+ }, [expansionRef.current, expandedRowSize == null ? void 0 : expandedRowSize.height, ...remeasureDependencies]);
38581
38590
  const className = clsx("group/row", otherAttributes.className, {
38582
38591
  "hover:cursor-grab": tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== "function",
38583
38592
  "hover:cursor-pointer": typeof attributes.onClick === "function"
@@ -44223,7 +44232,7 @@ const Option = React__default.forwardRef(function Select2Option(props, ref) {
44223
44232
  value: props.value
44224
44233
  }
44225
44234
  ) : void 0;
44226
- return /* @__PURE__ */ React__default.createElement(Option$1, { ...otherProps, className, onClick: handleClick, onKeyDown: handleKeyDown, ref }, hasValue2 ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: "tick", className: "pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible" }) : null, typeof children === "string" ? isTag ? /* @__PURE__ */ React__default.createElement(Tag, { className: "pointer-events-none my-1", color: color2, icon: prefix2 }, children) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, prefix2 ? typeof prefix2 === "string" ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: prefix2, className: "!h-5 !w-5" }) : prefix2 : null, /* @__PURE__ */ React__default.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col" }, /* @__PURE__ */ React__default.createElement("span", null, children), description ? /* @__PURE__ */ React__default.createElement("span", { className: "text-grey-700 -mt-1.5 mb-1.5 text-xs", "data-taco": "description" }, description) : null), /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col self-center" }, postfix ? typeof postfix === "string" ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: postfix, className: "!h-5 !w-5" }) : postfix : null))) : /* @__PURE__ */ React__default.createElement("span", null, children), popover ? /* @__PURE__ */ React__default.createElement(
44235
+ return /* @__PURE__ */ React__default.createElement(Option$1, { ...otherProps, className, onClick: handleClick, onKeyDown: handleKeyDown, ref }, hasValue2 ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: "tick", className: "pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible" }) : null, typeof children === "string" ? isTag ? /* @__PURE__ */ React__default.createElement(Tag, { className: "pointer-events-none my-1", color: color2, icon: prefix2 }, children) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, prefix2 ? typeof prefix2 === "string" ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: prefix2, className: "!h-5 !w-5" }) : prefix2 : null, /* @__PURE__ */ React__default.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col" }, /* @__PURE__ */ React__default.createElement("span", null, children), description ? /* @__PURE__ */ React__default.createElement("span", { className: "text-grey-700 -mt-1.5 mb-1.5 text-xs", "data-taco": "description" }, description) : null), /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col self-center" }, postfix ? typeof postfix === "string" ? /* @__PURE__ */ React__default.createElement(Icon$1, { name: postfix, className: "!h-5 !w-5" }) : postfix : null))) : /* @__PURE__ */ React__default.createElement("span", { className: "w-full" }, children), popover ? /* @__PURE__ */ React__default.createElement(
44227
44236
  IconButton,
44228
44237
  {
44229
44238
  icon: "ellipsis-vertical",
@@ -45231,11 +45240,11 @@ function guessComparatorsBasedOnControl(column) {
45231
45240
  }
45232
45241
  const FilterContext = React__default.createContext([]);
45233
45242
  const FilterColumn = React__default.forwardRef((props, ref) => {
45234
- const { allHeaders, onChange: handleChange, value = null, ...attributes } = props;
45243
+ const { allColumns, onChange: handleChange, value = null, ...attributes } = props;
45235
45244
  const { texts } = useLocalization();
45236
45245
  const filters = React__default.useContext(FilterContext);
45237
- const selectedColumn = allHeaders.find((header) => header.id === value);
45238
- const warning2 = selectedColumn && !selectedColumn.column.getIsVisible();
45246
+ const selectedColumn = allColumns.find((column) => column.id === value);
45247
+ const warning2 = selectedColumn && !selectedColumn.getIsVisible();
45239
45248
  return /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React__default.createElement(
45240
45249
  Field,
45241
45250
  {
@@ -45253,23 +45262,22 @@ const FilterColumn = React__default.forwardRef((props, ref) => {
45253
45262
  onChange: handleChange,
45254
45263
  value
45255
45264
  },
45256
- allHeaders.map((header) => {
45265
+ allColumns.map((column) => {
45257
45266
  var _a, _b;
45258
45267
  return /* @__PURE__ */ React__default.createElement(
45259
45268
  Select22.Option,
45260
45269
  {
45261
- key: header.column.id,
45262
- value: header.column.id,
45263
- postfix: !header.column.getIsVisible() || header.column.getIsGrouped() ? /* @__PURE__ */ React__default.createElement(
45264
- Tooltip$3,
45265
- {
45266
- title: header.column.getIsGrouped() ? texts.table.filters.hiddenGroupedColumn : texts.table.filters.hiddenColumn
45267
- },
45268
- /* @__PURE__ */ React__default.createElement(Icon$1, { name: "eye-off", className: "text-grey-500 !h-5 !w-5" })
45269
- ) : void 0,
45270
- disabled: header.column.id !== value && (!header.column.getCanFilter() || !!filters.some((f2) => f2.id === header.column.id))
45270
+ key: column.id,
45271
+ value: column.id,
45272
+ disabled: column.id !== value && (!column.getCanFilter() || !!filters.some((f2) => f2.id === column.id))
45271
45273
  },
45272
- /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, flexRender(header.column.columnDef.header, header.getContext()), header.column.parent ? ` (${flexRender((_b = (_a = header.column.parent) == null ? void 0 : _a.columnDef.meta) == null ? void 0 : _b.header, header.getContext())})` : "")
45274
+ /* @__PURE__ */ React__default.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col" }, flexRender(column.columnDef.header, { column }), column.parent ? flexRender((_b = (_a = column.parent) == null ? void 0 : _a.columnDef.meta) == null ? void 0 : _b.header, { column }) : ""), /* @__PURE__ */ React__default.createElement("span", { className: "flex flex-col self-center" }, !column.getIsVisible() || column.getIsGrouped() ? /* @__PURE__ */ React__default.createElement(
45275
+ Tooltip$3,
45276
+ {
45277
+ title: column.getIsGrouped() ? texts.table.filters.hiddenGroupedColumn : texts.table.filters.hiddenColumn
45278
+ },
45279
+ /* @__PURE__ */ React__default.createElement(Icon$1, { name: "eye-off", className: "text-grey-500 !h-5 !w-5" })
45280
+ ) : void 0))
45273
45281
  );
45274
45282
  })
45275
45283
  )
@@ -45440,9 +45448,9 @@ function Control(props) {
45440
45448
  );
45441
45449
  }
45442
45450
  function Filter(props) {
45443
- const { allHeaders, filter: filter2, onChange: handleChange, onRemove, position } = props;
45451
+ const { allColumns, filter: filter2, onChange: handleChange, onRemove, position } = props;
45444
45452
  const { texts } = useLocalization();
45445
- const column = allHeaders.find((header) => header.column.id === filter2.id);
45453
+ const column = allColumns.find((column2) => column2.id === filter2.id);
45446
45454
  const ref = React__default.useRef(null);
45447
45455
  const {
45448
45456
  id: id2,
@@ -45450,13 +45458,13 @@ function Filter(props) {
45450
45458
  } = filter2;
45451
45459
  const handleChangeColumn = (columnId) => {
45452
45460
  var _a, _b, _c;
45453
- const previousColumn = allHeaders.find((header) => header.column.id === id2);
45454
- const nextColumn = allHeaders.find((header) => header.column.id === columnId);
45455
- if (((_a = previousColumn == null ? void 0 : previousColumn.column.columnDef.meta) == null ? void 0 : _a.dataType) && ((_b = previousColumn == null ? void 0 : previousColumn.column.columnDef.meta) == null ? void 0 : _b.dataType) === ((_c = nextColumn == null ? void 0 : nextColumn.column.columnDef.meta) == null ? void 0 : _c.dataType)) {
45461
+ const previousColumn = allColumns.find((column2) => column2.id === id2);
45462
+ const nextColumn = allColumns.find((column2) => column2.id === columnId);
45463
+ if (((_a = previousColumn == null ? void 0 : previousColumn.columnDef.meta) == null ? void 0 : _a.dataType) && ((_b = previousColumn == null ? void 0 : previousColumn.columnDef.meta) == null ? void 0 : _b.dataType) === ((_c = nextColumn == null ? void 0 : nextColumn.columnDef.meta) == null ? void 0 : _c.dataType)) {
45456
45464
  handleChange(position, { id: columnId, value: filter2.value });
45457
45465
  return;
45458
45466
  }
45459
- const validComparators = guessComparatorsBasedOnControl(nextColumn == null ? void 0 : nextColumn.column);
45467
+ const validComparators = guessComparatorsBasedOnControl(nextColumn);
45460
45468
  const value2 = {
45461
45469
  comparator: validComparators[0],
45462
45470
  value: void 0
@@ -45479,13 +45487,13 @@ function Filter(props) {
45479
45487
  ref.current.focus();
45480
45488
  }
45481
45489
  }, [id2]);
45482
- return /* @__PURE__ */ React__default.createElement("div", { className: "flex items-start gap-2", "data-taco": "filter-row" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right" }, position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where), /* @__PURE__ */ React__default.createElement(FilterColumn, { allHeaders, onChange: handleChangeColumn, value: id2, ref }), /* @__PURE__ */ React__default.createElement(FilterComparator, { column: column == null ? void 0 : column.column, onChange: handleChangeComparator, value: comparator }), /* @__PURE__ */ React__default.createElement(FilterValue, { column: column == null ? void 0 : column.column, comparator, onChange: handleChangeValue, value }), onRemove ? /* @__PURE__ */ React__default.createElement(IconButton, { appearance: "discrete", className: "ml-auto", icon: "close", onClick: handleRemove }) : null);
45490
+ return /* @__PURE__ */ React__default.createElement("div", { className: "flex items-start gap-2", "data-taco": "filter-row" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right" }, position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where), /* @__PURE__ */ React__default.createElement(FilterColumn, { allColumns, onChange: handleChangeColumn, value: id2, ref }), /* @__PURE__ */ React__default.createElement(FilterComparator, { column, onChange: handleChangeComparator, value: comparator }), /* @__PURE__ */ React__default.createElement(FilterValue, { column, comparator, onChange: handleChangeValue, value }), onRemove ? /* @__PURE__ */ React__default.createElement(IconButton, { appearance: "discrete", className: "ml-auto", icon: "close", onClick: handleRemove }) : null);
45483
45491
  }
45484
45492
  const placeholderFilter = { id: "", value: { comparator: TableFilterComparator.Contains, value: void 0 } };
45485
45493
  function ManageFiltersPopover(props) {
45486
45494
  const { length, table, ...popoverProps } = props;
45487
45495
  const { locale: locale2, texts } = useLocalization();
45488
- const allHeaders = table.getLeafHeaders().filter((column) => !isInternalColumn(column.id)).sort((headerA, headerB) => sortByHeader(headerA.column, headerB.column));
45496
+ const allColumns = table.getAllLeafColumns().filter((column) => !isInternalColumn(column.id)).sort(sortByHeader);
45489
45497
  const columnFilters = table.getState().columnFilters;
45490
45498
  const tableMeta = table.options.meta;
45491
45499
  const [filters, setFilters] = React__default.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
@@ -45524,7 +45532,7 @@ function ManageFiltersPopover(props) {
45524
45532
  if (f2.id === null || f2.id === "") {
45525
45533
  return false;
45526
45534
  }
45527
- const controlRenderer = (_b = (_a = allHeaders.find((header) => header.column.id === f2.id)) == null ? void 0 : _a.column.columnDef.meta) == null ? void 0 : _b.control;
45535
+ const controlRenderer = (_b = (_a = allColumns.find((column) => column.id === f2.id)) == null ? void 0 : _a.columnDef.meta) == null ? void 0 : _b.control;
45528
45536
  if (f2.value.comparator === TableFilterComparator.IsEmpty || f2.value.comparator === TableFilterComparator.IsNotEmpty || controlRenderer === "switch") {
45529
45537
  return true;
45530
45538
  }
@@ -45554,7 +45562,7 @@ function ManageFiltersPopover(props) {
45554
45562
  Filter,
45555
45563
  {
45556
45564
  key: `filter_${index2}`,
45557
- allHeaders,
45565
+ allColumns,
45558
45566
  filter: filter2,
45559
45567
  position: index2,
45560
45568
  onChange: handleChangeFilter,
@@ -55635,6 +55643,7 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
55635
55643
  pendingChangesFns.saveChanges(table);
55636
55644
  }
55637
55645
  async function createRow2(table, row) {
55646
+ var _a, _b;
55638
55647
  if (!handleCreate) {
55639
55648
  return;
55640
55649
  }
@@ -55645,7 +55654,10 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
55645
55654
  return;
55646
55655
  }
55647
55656
  }
55648
- const changeset = row ?? await handleCreate();
55657
+ const currentRow = ((_a = table.options.meta) == null ? void 0 : _a.rowActive.rowActiveIndex) !== void 0 ? table.getRowModel().flatRows[(_b = table.options.meta) == null ? void 0 : _b.rowActive.rowActiveIndex] : void 0;
55658
+ const changeset = row ?? await handleCreate({
55659
+ activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : void 0
55660
+ });
55649
55661
  try {
55650
55662
  if (changeset) {
55651
55663
  const temporaryRows = tableMeta.editing.temporaryRows;
@@ -55654,10 +55666,10 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
55654
55666
  requestAnimationFrame(() => {
55655
55667
  const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);
55656
55668
  table.setRowPinning((currentState) => {
55657
- var _a;
55669
+ var _a2;
55658
55670
  return {
55659
55671
  ...currentState,
55660
- bottom: (_a = currentState.bottom ?? []) == null ? void 0 : _a.concat(newRowId)
55672
+ bottom: (_a2 = currentState.bottom ?? []) == null ? void 0 : _a2.concat(newRowId)
55661
55673
  };
55662
55674
  });
55663
55675
  toggleDetailedMode(false);
@@ -56205,16 +56217,11 @@ function DiscardChangesConfirmationDialog(props) {
56205
56217
  ));
56206
56218
  }
56207
56219
  function Row(props) {
56208
- const { row, index: index2, table, measureRow } = props;
56220
+ const { row, index: index2, table } = props;
56209
56221
  const focusManager = useAugmentedFocusManager();
56210
56222
  const tableMeta = table.options.meta;
56211
56223
  const isActiveRow = tableMeta.rowActive.rowActiveIndex === index2;
56212
- const rowRef = React__default.useRef(null);
56213
56224
  const hasErrors = tableMeta.editing.hasRowErrors(row.id);
56214
- React__default.useLayoutEffect(() => {
56215
- if (!measureRow || !rowRef.current) return;
56216
- measureRow(rowRef.current.getBoundingClientRect().height);
56217
- }, [hasErrors, measureRow, row.id]);
56218
56225
  React__default.useEffect(() => {
56219
56226
  if (tableMeta.editing.isEditing && isActiveRow && tableMeta.editing.lastFocusedCellIndex === void 0) {
56220
56227
  const element = focusManager.focusFirst();
@@ -56271,7 +56278,7 @@ function Row(props) {
56271
56278
  onFocus: handleFocus,
56272
56279
  onKeyDown: handleKeyDown
56273
56280
  };
56274
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(DisplayRow, { ...props, ...attributes, ref: rowRef }, rowStatus === "saving" || rowStatus === "saved" ? /* @__PURE__ */ React__default.createElement(SaveStatus, { rowId: row.id, table }) : null), /* @__PURE__ */ React__default.createElement(
56281
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(DisplayRow, { ...props, ...attributes, remeasureDependencies: [hasErrors] }, rowStatus === "saving" || rowStatus === "saved" ? /* @__PURE__ */ React__default.createElement(SaveStatus, { rowId: row.id, table }) : null), /* @__PURE__ */ React__default.createElement(
56275
56282
  DiscardChangesConfirmationDialog,
56276
56283
  {
56277
56284
  open: showDiscardDialog,