@economic/taco 2.40.2 → 2.41.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. package/dist/components/OverflowGroup/OverflowGroup.d.ts +1 -0
  2. package/dist/components/Tabs/Tabs.d.ts +5 -0
  3. package/dist/esm/index.css +2 -2
  4. package/dist/esm/packages/taco/src/components/BadgeIcon/BadgeIcon.js +1 -1
  5. package/dist/esm/packages/taco/src/components/BadgeIcon/BadgeIcon.js.map +1 -1
  6. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js +4 -1
  7. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Select2/components/Search.js +0 -1
  9. package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Cell.js +1 -1
  11. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js +17 -3
  15. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js.map +1 -1
  16. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js +5 -44
  17. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
  18. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +8 -5
  19. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  20. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +2 -1
  21. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  22. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +3 -1
  23. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  24. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js +1 -1
  25. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  26. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +33 -1
  27. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  28. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +2 -1
  29. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  30. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowSelection.js +4 -3
  32. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
  33. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +13 -10
  34. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  35. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +1 -1
  36. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  37. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +8 -6
  38. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +2 -2
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  41. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +7 -2
  42. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  43. package/dist/index.css +2 -2
  44. package/dist/primitives/Table/types.d.ts +7 -4
  45. package/dist/primitives/Table/useTableManager/useTableManager.d.ts +1 -0
  46. package/dist/taco.cjs.development.js +108 -85
  47. package/dist/taco.cjs.development.js.map +1 -1
  48. package/dist/taco.cjs.production.min.js +1 -1
  49. package/dist/taco.cjs.production.min.js.map +1 -1
  50. package/package.json +2 -2
@@ -3765,7 +3765,7 @@ const BadgeIcon = /*#__PURE__*/React.forwardRef(function Badge(props, ref) {
3765
3765
  small,
3766
3766
  ...otherProps
3767
3767
  } = props;
3768
- const className = cn(`rounded-full border overflow-hidden whitespace-nowrap inline-flex items-center justify-center border-transparent [&>*]:max-h-full`, {
3768
+ const className = cn(`rounded-full border overflow-hidden whitespace-nowrap inline-flex items-center justify-center border-transparent [&>*]:max-h-full shrink-0`, {
3769
3769
  'w-5 h-5': !small
3770
3770
  }, {
3771
3771
  'w-4 h-4 text-xs': small
@@ -8941,6 +8941,7 @@ const OverflowGroup = /*#__PURE__*/React__default.forwardRef(function OverflowGr
8941
8941
  var _moreButton;
8942
8942
  const {
8943
8943
  moreButton,
8944
+ wrapChild,
8944
8945
  ...attributes
8945
8946
  } = props;
8946
8947
  const internalRef = useMergedRef(ref);
@@ -8974,7 +8975,9 @@ const OverflowGroup = /*#__PURE__*/React__default.forwardRef(function OverflowGr
8974
8975
  })), hiddenChildren.length ? /*#__PURE__*/React__default.cloneElement(MoreButton, {
8975
8976
  className: cn('sticky right-0 order-[99]', MoreButton.props.className),
8976
8977
  'data-observer-ignore': true,
8977
- menu: menuProps => (/*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, hiddenChildren.map(sanitizeButtonPropsForMenuItem)))),
8978
+ menu: menuProps => (/*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, hiddenChildren.map((child, index) => wrapChild ? (/*#__PURE__*/React__default.createElement(Menu$1.Item, {
8979
+ key: index
8980
+ }, child)) : sanitizeButtonPropsForMenuItem(child, index))))),
8978
8981
  ref: buttonRefCallback
8979
8982
  }) : null);
8980
8983
  });
@@ -10079,6 +10082,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10079
10082
  aggregationFn,
10080
10083
  defaultHidden,
10081
10084
  defaultWidth,
10085
+ enableEditing = !!child.props.control,
10082
10086
  enableFiltering: enableColumnFilter = true,
10083
10087
  enableGrouping = false,
10084
10088
  enableHiding = true,
@@ -10130,6 +10134,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10130
10134
  enableOrdering: isGrouped ? false : enableOrdering,
10131
10135
  enablePrinting,
10132
10136
  enableTruncate,
10137
+ enableEditing,
10133
10138
  header,
10134
10139
  renderer
10135
10140
  }
@@ -10228,6 +10233,9 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
10228
10233
  function configureReactTableOptions(options, props) {
10229
10234
  var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
10230
10235
  const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
10236
+ // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,
10237
+ // which receives the React Table Row object and passes row.original to a callback.
10238
+ const reactTableEnableRowSelection = typeof enableRowSelection === 'function' ? row => enableRowSelection(row.original) : enableRowSelection;
10231
10239
  const tableOptions = {
10232
10240
  defaultColumn: {
10233
10241
  enableColumnFilter: options.enableFiltering || true,
@@ -10246,8 +10254,8 @@ function configureReactTableOptions(options, props) {
10246
10254
  enableGrouping: true,
10247
10255
  enableHiding: (_options$enableColumn2 = options.enableColumnHiding) !== null && _options$enableColumn2 !== void 0 ? _options$enableColumn2 : false,
10248
10256
  enablePinning: (_options$enableColumn3 = options.enableColumnFreezing) !== null && _options$enableColumn3 !== void 0 ? _options$enableColumn3 : false,
10249
- enableRowSelection: enableRowSelection !== null && enableRowSelection !== void 0 ? enableRowSelection : false,
10250
- enableMultiRowSelection: options.enableRowSelectionSingle === true ? false : enableRowSelection,
10257
+ enableRowSelection: reactTableEnableRowSelection !== null && reactTableEnableRowSelection !== void 0 ? reactTableEnableRowSelection : false,
10258
+ enableMultiRowSelection: !options.enableRowSelectionSingle && reactTableEnableRowSelection,
10251
10259
  enableSorting: (_options$enableSortin = options.enableSorting) !== null && _options$enableSortin !== void 0 ? _options$enableSortin : false,
10252
10260
  // models for default features
10253
10261
  getExpandedRowModel: reactTable.getExpandedRowModel(),
@@ -10447,8 +10455,8 @@ function getTableFeaturePreset(props) {
10447
10455
  enableColumnHiding: (_props$enableColumnHi = props.enableColumnHiding) !== null && _props$enableColumnHi !== void 0 ? _props$enableColumnHi : presetOptions.enableColumnHiding,
10448
10456
  enableColumnResizing: (_props$enableColumnRe = props.enableColumnResizing) !== null && _props$enableColumnRe !== void 0 ? _props$enableColumnRe : presetOptions.enableColumnResizing,
10449
10457
  enableRowExpansion: enableRowExpansion && !!props.rowExpansionRenderer,
10450
- enableRowSelection: enableRowSelection && !!props.onRowSelect,
10451
- enableRowSelectionSingle: enableRowSelectionSingle && !!props.onRowSelect,
10458
+ enableRowSelection: !!props.onRowSelect && enableRowSelection,
10459
+ enableRowSelectionSingle: !!props.onRowSelect && enableRowSelectionSingle,
10452
10460
  // custom -- common between all table types
10453
10461
  enableColumnOrdering: (_props$enableColumnOr = props.enableColumnOrdering) !== null && _props$enableColumnOr !== void 0 ? _props$enableColumnOr : presetOptions.enableColumnOrdering,
10454
10462
  enableFontSize: (_props$enableFontSize = props.enableFontSize) !== null && _props$enableFontSize !== void 0 ? _props$enableFontSize : presetOptions.enableFontSize,
@@ -10745,11 +10753,12 @@ function useTableRowSelection(isEnabled = false) {
10745
10753
  const rows = table.getRowModel().rows;
10746
10754
  const tableMeta = table.options.meta;
10747
10755
  if (event.key === ' ') {
10756
+ var _rows$rowActiveIndex;
10748
10757
  event.preventDefault();
10749
10758
  const rowActiveIndex = tableMeta.rowActive.rowActiveIndex;
10750
- if (rowActiveIndex !== undefined) {
10751
- var _rows$rowActiveIndex;
10752
- (_rows$rowActiveIndex = rows[rowActiveIndex]) === null || _rows$rowActiveIndex === void 0 ? void 0 : _rows$rowActiveIndex.toggleSelected();
10759
+ if (rowActiveIndex !== undefined && (_rows$rowActiveIndex = rows[rowActiveIndex]) !== null && _rows$rowActiveIndex !== void 0 && _rows$rowActiveIndex.getCanSelect()) {
10760
+ var _rows$rowActiveIndex2;
10761
+ (_rows$rowActiveIndex2 = rows[rowActiveIndex]) === null || _rows$rowActiveIndex2 === void 0 ? void 0 : _rows$rowActiveIndex2.toggleSelected();
10753
10762
  }
10754
10763
  return;
10755
10764
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'a') {
@@ -11365,22 +11374,24 @@ function useTableRowHeightListener(table) {
11365
11374
  }
11366
11375
 
11367
11376
  function useTableRowSelectionListener(table, onRowSelect) {
11368
- const rowSelection = table.getState().rowSelection;
11377
+ const rows = table.getSelectedRowModel().flatRows;
11378
+ const rowSelection = React__default.useMemo(() => rows.map(row => row.original), [rows]);
11369
11379
  useLazyEffect(() => {
11370
- const selectedRows = table.getSelectedRowModel().rows;
11371
11380
  if (table.options.enableRowSelection && typeof onRowSelect === 'function') {
11372
11381
  if (table.options.enableMultiRowSelection) {
11373
- onRowSelect(selectedRows.map(row => row.original));
11382
+ onRowSelect(rowSelection);
11374
11383
  } else {
11375
- var _ref, _selectedRows$;
11376
- onRowSelect((_ref = [(_selectedRows$ = selectedRows[0]) === null || _selectedRows$ === void 0 ? void 0 : _selectedRows$.original]) !== null && _ref !== void 0 ? _ref : []);
11384
+ var _ref;
11385
+ onRowSelect((_ref = [rowSelection[0]]) !== null && _ref !== void 0 ? _ref : []);
11377
11386
  }
11378
11387
  }
11379
- // It is important to stringify either rowSelection state or selectedRows, because we don't
11380
- // know if the array or object that is returned by react-table has the same reference or not.
11381
- // rowSelection state is used here because it will be more expensive to strigify selectedRows
11382
- // than rowSelection state.
11383
- }, [table.options.enableRowSelection, table.options.enableMultiRowSelection, JSON.stringify(rowSelection)]);
11388
+ /**
11389
+ * Casting to a boolean, since enableRowSelection and enableMultiRowSelection can be a functions,
11390
+ * and setting a function as depoendency will lead to infinity loop. And in case of row selection useEffect,
11391
+ * we only need to know if selection was enabled or disabled, because enableRowSelection/enableMultiRowSelection functions
11392
+ * will be applied directly to particular rows.
11393
+ */
11394
+ }, [!!table.options.enableRowSelection, !!table.options.enableMultiRowSelection, rowSelection]);
11384
11395
  }
11385
11396
 
11386
11397
  function resetHighlightedColumnIndexes(value, table) {
@@ -11445,7 +11456,7 @@ function useTableSearchListener(table, onChangeSearch) {
11445
11456
  onChangeSearch(query);
11446
11457
  }
11447
11458
  }
11448
- }, [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]);
11459
+ }, [meta.server.loadAllStatus, meta.search.isEnabled, meta.search.enableGlobalFilter, table.getRowModel().rows, table.getState().globalFilter, JSON.stringify(table.getState().sorting), JSON.stringify(table.getState().columnVisibility), onChangeSearch]);
11449
11460
  }
11450
11461
 
11451
11462
  function useTableSettingsListener(table, onChangeSettings) {
@@ -11556,14 +11567,19 @@ function useTableRowDrop(isEnabled = false, onRowDrop) {
11556
11567
  };
11557
11568
  }
11558
11569
 
11570
+ // Placed this array outside the hook to avoid creating a new array reference on each hook re-render
11571
+ const DEFAULT_EMPTY_ARRAY = [];
11559
11572
  function useTableManager(props, meta, internalColumns) {
11560
- var _props$data, _props$length, _instance$options$met;
11573
+ var _props$data, _props$length, _meta$editing, _instance$options$met;
11561
11574
  // CSS.escape would be best here, but it doesn't seem to work very well
11562
11575
  const safeId = props.id.replace('.', '_');
11563
11576
  // configure table options, merging props with presets
11564
11577
  const options = getTableFeaturePreset(props);
11565
11578
  // load any persisted table settings and merge them with any defaults
11566
11579
  const [settings, setSettings] = useTableSettings(options.enableSaveSettings, safeId, props.defaultSettings, props.onChangeSettings);
11580
+ // ensure data is always valid
11581
+ const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : DEFAULT_EMPTY_ARRAY;
11582
+ const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
11567
11583
  // configure common custom features
11568
11584
  const columnFreezing = useTableColumnFreezing(options.enableColumnFreezing);
11569
11585
  const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);
@@ -11573,13 +11589,13 @@ function useTableManager(props, meta, internalColumns) {
11573
11589
  const rowActive = useTableRowActive(options.enableRowActive, props.defaultRowActiveIndex);
11574
11590
  const rowActions = useTableRowActions(options.enableRowActions, props.rowActions, props.rowActionsLength);
11575
11591
  const rowClick = useTableRowClick(options.enableRowClick, props.onRowClick);
11576
- const rowDrag = useTableRowDrag(options.enableRowDrag, props.onRowDrag);
11592
+ const rowDrag = useTableRowDrag(options.enableRowDrag && !(meta !== null && meta !== void 0 && (_meta$editing = meta.editing) !== null && _meta$editing !== void 0 && _meta$editing.isEditing), props.onRowDrag);
11577
11593
  const rowDrop = useTableRowDrop(options.enableRowDrop, props.onRowDrop);
11578
11594
  const rowExpansion = useTableRowExpansion(options.enableRowExpansion, props.rowExpansionRenderer);
11579
11595
  const rowGoto = useTableRowGoto(options.enableRowGoto, props.onRowGoto);
11580
11596
  const rowGroups = useTableRowGroups(props.rowActionsForGroup);
11581
11597
  const rowHeight = useTableRowHeight(options.enableRowHeight, settings.rowHeight);
11582
- const rowSelection = useTableRowSelection(options.enableRowSelection);
11598
+ const rowSelection = useTableRowSelection(!!options.enableRowSelection);
11583
11599
  const search = useTableSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);
11584
11600
  const server = useTableServerLoading(props.loadPage, props.loadAll, props.pageSize);
11585
11601
  // TODO: memoise
@@ -11590,9 +11606,6 @@ function useTableManager(props, meta, internalColumns) {
11590
11606
  } = mapTableChildrenToColumns(props, settings, options, internalColumns);
11591
11607
  // configure initial table state
11592
11608
  const initialState = useReactTableInitialState(props, columns, settings, defaultState);
11593
- // ensure data is always valid
11594
- const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
11595
- const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
11596
11609
  // create a react-table instance
11597
11610
  const instance = reactTable.useReactTable({
11598
11611
  data,
@@ -11705,8 +11718,9 @@ function useTableStyleGrid(tableId, table, fontSize) {
11705
11718
  // printing grid
11706
11719
  // we have to be specific so that nested tables don't inherit the same css
11707
11720
  const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\n`).join(',');
11721
+ // Ensure that tfoot cells are not hidden so that the summary and footer cells appear in the printed document
11708
11722
  const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }
11709
- table[data-taco^='table']#${tableId} [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; }}`;
11723
+ table[data-taco^='table']#${tableId} &:not(tfoot) [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;
11710
11724
  return {
11711
11725
  style,
11712
11726
  stylesheet
@@ -12251,58 +12265,18 @@ const renderer = {
12251
12265
  }
12252
12266
  };
12253
12267
 
12254
- const GHOST_ELEMENT_ID = 'taco_table_dragging';
12255
12268
  function Header$2() {
12256
12269
  return null;
12257
12270
  }
12258
- function Cell$1(context) {
12259
- const {
12260
- row,
12261
- table
12262
- } = context;
12271
+ function Cell$1() {
12263
12272
  const {
12264
12273
  texts
12265
12274
  } = useLocalization();
12266
- const tableMeta = context.table.options.meta;
12267
- const onDragStart = event => {
12268
- var _tableMeta$rowDrag$se, _tableMeta$rowDrag, _tableMeta$rowDrag$ha, _tableMeta$rowDrag2;
12269
- let rows = [row];
12270
- if (table.options.enableRowSelection) {
12271
- rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];
12272
- }
12273
- const data = rows.map(row => row.original);
12274
- (_tableMeta$rowDrag$se = (_tableMeta$rowDrag = tableMeta.rowDrag).setDragging) === null || _tableMeta$rowDrag$se === void 0 ? void 0 : _tableMeta$rowDrag$se.call(_tableMeta$rowDrag, rows.reduce((dragging, rowBeingDragged) => ({
12275
- ...dragging,
12276
- [rowBeingDragged.id]: true
12277
- }), {}));
12278
- // set a default data value so that the consumer doesn't have to
12279
- event.dataTransfer.setData('text', JSON.stringify(data));
12280
- const showPlaceholder = text => {
12281
- const ghost = document.createElement('div');
12282
- ghost.id = GHOST_ELEMENT_ID;
12283
- ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';
12284
- ghost.innerText = text;
12285
- document.body.appendChild(ghost);
12286
- event.dataTransfer.setDragImage(ghost, 0, 0);
12287
- };
12288
- const setDataTransfer = text => event.dataTransfer.setData('text', text);
12289
- (_tableMeta$rowDrag$ha = (_tableMeta$rowDrag2 = tableMeta.rowDrag).handleRowDrag) === null || _tableMeta$rowDrag$ha === void 0 ? void 0 : _tableMeta$rowDrag$ha.call(_tableMeta$rowDrag2, data, showPlaceholder, setDataTransfer);
12290
- };
12291
- const handleDragEnd = () => {
12292
- var _document$getElementB, _tableMeta$rowDrag$se2, _tableMeta$rowDrag3;
12293
- (_document$getElementB = document.getElementById(GHOST_ELEMENT_ID)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.remove();
12294
- (_tableMeta$rowDrag$se2 = (_tableMeta$rowDrag3 = tableMeta.rowDrag).setDragging) === null || _tableMeta$rowDrag$se2 === void 0 ? void 0 : _tableMeta$rowDrag$se2.call(_tableMeta$rowDrag3, {});
12295
- };
12296
- return /*#__PURE__*/React__default.createElement("div", {
12297
- draggable: true,
12298
- onDragStart: onDragStart,
12299
- onDragOver: event => event.preventDefault(),
12300
- onDragEnd: handleDragEnd
12301
- }, /*#__PURE__*/React__default.createElement(Icon, {
12275
+ return /*#__PURE__*/React__default.createElement(Icon, {
12302
12276
  "aria-label": texts.table.columns.drag.tooltip,
12303
12277
  name: "drag",
12304
- className: "text-grey-darkest invisible -mt-1 ml-[2px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white"
12305
- }));
12278
+ className: cn("text-grey-darkest invisible -mt-1 ml-[2px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white", '[[data-table-editing-mode]_&]:!invisible')
12279
+ });
12306
12280
  }
12307
12281
  const renderer$1 = {
12308
12282
  header: Header$2,
@@ -12416,9 +12390,8 @@ function Header$4(context) {
12416
12390
  }, /*#__PURE__*/React__default.createElement(Checkbox, {
12417
12391
  "aria-label": title,
12418
12392
  className: "hover:border-blue !-mt-px",
12419
- key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
12420
12393
  checked: isAllRowsSelected,
12421
- indeterminate: isSomeRowsSelected,
12394
+ indeterminate: isSomeRowsSelected && !isAllRowsSelected,
12422
12395
  loading: tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
12423
12396
  onChange: handleChange
12424
12397
  }));
@@ -12447,6 +12420,7 @@ function Cell$3(context) {
12447
12420
  return null;
12448
12421
  }
12449
12422
  const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();
12423
+ const canSelect = row.getCanSelect();
12450
12424
  const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;
12451
12425
  if (table.options.enableMultiRowSelection) {
12452
12426
  const handleClick = function (event) {
@@ -12465,7 +12439,7 @@ function Cell$3(context) {
12465
12439
  function _temp4() {
12466
12440
  table.setRowSelection(currentRowSelection => ({
12467
12441
  ...currentRowSelection,
12468
- ...selectedRows.reduce((state, row) => ({
12442
+ ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
12469
12443
  ...state,
12470
12444
  [row.id]: true
12471
12445
  }), {})
@@ -12493,6 +12467,7 @@ function Cell$3(context) {
12493
12467
  }
12494
12468
  };
12495
12469
  return /*#__PURE__*/React__default.createElement(Tooltip, {
12470
+ hidden: !canSelect,
12496
12471
  title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
12497
12472
  className: "ml-2",
12498
12473
  keys: "Space"
@@ -12502,11 +12477,12 @@ function Cell$3(context) {
12502
12477
  className: "!mt-0",
12503
12478
  checked: isSelected,
12504
12479
  onClick: handleClick,
12480
+ disabled: !canSelect,
12505
12481
  // this is necessary to remove console spam from eslint
12506
12482
  onChange: () => false
12507
12483
  }));
12508
12484
  } else {
12509
- const className = cn('!mt-0', getRadioClassnames());
12485
+ const className = cn('!mt-0', getRadioClassnames(!canSelect));
12510
12486
  const handleClick = event => {
12511
12487
  event.stopPropagation();
12512
12488
  row.toggleSelected();
@@ -12514,7 +12490,8 @@ function Cell$3(context) {
12514
12490
  };
12515
12491
  return /*#__PURE__*/React__default.createElement("button", {
12516
12492
  className: className,
12517
- "aria-checked": isSelected,
12493
+ "aria-checked": canSelect && isSelected,
12494
+ disabled: !canSelect,
12518
12495
  onClick: handleClick,
12519
12496
  role: "radio",
12520
12497
  type: "button"
@@ -12767,6 +12744,37 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
12767
12744
  // row drag
12768
12745
  if (tableMeta.rowDrag.isEnabled) {
12769
12746
  attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];
12747
+ attributes.draggable = true;
12748
+ const GHOST_ELEMENT_ID = 'taco_table_dragging';
12749
+ attributes.onDragStart = event => {
12750
+ var _tableMeta$rowDrag$se, _tableMeta$rowDrag, _tableMeta$rowDrag$ha, _tableMeta$rowDrag2;
12751
+ let rows = [row];
12752
+ if (row.getCanSelect()) {
12753
+ rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];
12754
+ }
12755
+ const data = rows.map(row => row.original);
12756
+ (_tableMeta$rowDrag$se = (_tableMeta$rowDrag = tableMeta.rowDrag).setDragging) === null || _tableMeta$rowDrag$se === void 0 ? void 0 : _tableMeta$rowDrag$se.call(_tableMeta$rowDrag, rows.reduce((dragging, rowBeingDragged) => ({
12757
+ ...dragging,
12758
+ [rowBeingDragged.id]: true
12759
+ }), {}));
12760
+ // set a default data value so that the consumer doesn't have to
12761
+ event.dataTransfer.setData('text', JSON.stringify(data));
12762
+ const showPlaceholder = text => {
12763
+ const ghost = document.createElement('div');
12764
+ ghost.id = GHOST_ELEMENT_ID;
12765
+ ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';
12766
+ ghost.innerText = text;
12767
+ document.body.appendChild(ghost);
12768
+ event.dataTransfer.setDragImage(ghost, 0, 0);
12769
+ };
12770
+ const setDataTransfer = text => event.dataTransfer.setData('text', text);
12771
+ (_tableMeta$rowDrag$ha = (_tableMeta$rowDrag2 = tableMeta.rowDrag).handleRowDrag) === null || _tableMeta$rowDrag$ha === void 0 ? void 0 : _tableMeta$rowDrag$ha.call(_tableMeta$rowDrag2, data, showPlaceholder, setDataTransfer);
12772
+ };
12773
+ attributes.onDragEnd = () => {
12774
+ var _document$getElementB, _tableMeta$rowDrag$se2, _tableMeta$rowDrag3;
12775
+ (_document$getElementB = document.getElementById(GHOST_ELEMENT_ID)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.remove();
12776
+ (_tableMeta$rowDrag$se2 = (_tableMeta$rowDrag3 = tableMeta.rowDrag).setDragging) === null || _tableMeta$rowDrag$se2 === void 0 ? void 0 : _tableMeta$rowDrag$se2.call(_tableMeta$rowDrag3, {});
12777
+ };
12770
12778
  }
12771
12779
  // row drop
12772
12780
  const [isDraggedOver, dropTargetProps] = useDropTarget(event => {
@@ -12785,7 +12793,7 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
12785
12793
  attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;
12786
12794
  }
12787
12795
  // row selection
12788
- if (table.options.enableRowSelection) {
12796
+ if (row.getCanSelect()) {
12789
12797
  attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;
12790
12798
  }
12791
12799
  // row expansion
@@ -12806,6 +12814,7 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
12806
12814
  const isExpanded = !!attributes['data-row-expanded'];
12807
12815
  useSetVirtualisedRowHeight(measureRow, ref.current, expansionRef.current, isExpanded);
12808
12816
  const className = cn('group/row', {
12817
+ 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',
12809
12818
  'hover:cursor-pointer': typeof attributes.onClick === 'function'
12810
12819
  });
12811
12820
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("tr", Object.assign({}, attributes, {
@@ -12956,7 +12965,7 @@ function Resizer(props) {
12956
12965
  }
12957
12966
  };
12958
12967
  const handle = /*#__PURE__*/React__default.createElement("div", {
12959
- className: cn('invisible absolute right-0 top-0 z-10 -mr-2 flex h-full w-4 cursor-col-resize touch-none select-none justify-center rounded py-0.5', 'group-hover/header:visible', '[th:last-child>&]:!mr-0 [th:last-child>&]:w-2', {
12968
+ className: cn('invisible absolute right-0 top-0 z-10 -mr-2 flex h-full w-4 cursor-col-resize touch-none select-none justify-center rounded py-0.5', 'group-hover/header:visible print:hidden', '[th:last-child>&]:!mr-0 [th:last-child>&]:w-2', {
12960
12969
  '!visible': isResizing
12961
12970
  }),
12962
12971
  onClick: handleClick,
@@ -13191,7 +13200,9 @@ function HeaderMenu(props) {
13191
13200
  // visible - expanded
13192
13201
  'aria-expanded:!w-6 aria-expanded:!min-w-[theme(spacing.6)]',
13193
13202
  // visible - focus
13194
- 'focus:!w-6 focus:!min-w-[theme(spacing.6)]', {
13203
+ 'focus:!w-6 focus:!min-w-[theme(spacing.6)]',
13204
+ // print styles
13205
+ 'print:!hidden', {
13195
13206
  '!w-6 !min-w-[theme(spacing.6)]': !!popoverElement
13196
13207
  }, props.className);
13197
13208
  return /*#__PURE__*/React__default.createElement(IconButton, {
@@ -13591,7 +13602,8 @@ function Summary(props) {
13591
13602
  count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
13592
13603
  }
13593
13604
  return /*#__PURE__*/React__default.createElement("div", {
13594
- className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]",
13605
+ // translate-y-1 is used to prevent the summary cell's box shadow from clipping the border
13606
+ className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white] print:!translate-y-1",
13595
13607
  "data-taco": "table-footer-summary"
13596
13608
  }, label, "\u00A0", count);
13597
13609
  }
@@ -15331,7 +15343,6 @@ const Search$2 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
15331
15343
  invalid: !!validationError,
15332
15344
  message: validationError === null || validationError === void 0 ? void 0 : validationError.message
15333
15345
  }, /*#__PURE__*/React__default.createElement(Input, Object.assign({}, otherProps, {
15334
- "aria-hidden": true,
15335
15346
  autoFocus: true,
15336
15347
  invalid: !!validationError,
15337
15348
  onChange: handleChange,
@@ -19208,7 +19219,7 @@ function Cell$5(props) {
19208
19219
  const tableMeta = cell.getContext().table.options.meta;
19209
19220
  const columnMeta = cell.column.columnDef.meta;
19210
19221
  if (tableMeta.editing.isEditing) {
19211
- if (columnMeta.control) {
19222
+ if (columnMeta.control && columnMeta.enableEditing) {
19212
19223
  const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;
19213
19224
  const cellError = tableMeta.editing.getCellError(cell);
19214
19225
  const hasErrorAndIsEditing = cellError ? tableMeta.editing.isEditing : true;
@@ -19602,7 +19613,7 @@ function CreateNewRowButton(props) {
19602
19613
  }, [rowCreated]);
19603
19614
  return /*#__PURE__*/React__default.createElement("tr", {
19604
19615
  onClick: handleCreate,
19605
- className: "border-grey-300 hover:bg-grey-100 group !sticky bottom-10 left-0 z-[21] !block cursor-pointer border-t"
19616
+ className: "border-grey-300 hover:bg-grey-100 group !sticky bottom-10 left-0 z-[21] !block cursor-pointer border-t print:!hidden"
19606
19617
  }, /*#__PURE__*/React__default.createElement("td", {
19607
19618
  className: "!border-t-0 !bg-transparent"
19608
19619
  }, /*#__PURE__*/React__default.createElement(Button$1, {
@@ -19726,11 +19737,23 @@ const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {
19726
19737
  }), children);
19727
19738
  });
19728
19739
  const TabList = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {
19740
+ const {
19741
+ children
19742
+ } = props;
19729
19743
  const className = cn('border-grey-300 flex flex-row m-0 mb-4 print:hidden', 'aria-orientation-horizontal:border-b', 'aria-orientation-vertical:border-r aria-orientation-vertical:m-0 aria-orientation-vertical:mr-4 aria-orientation-vertical:flex-col', props.className);
19730
19744
  return /*#__PURE__*/React.createElement(TabsPrimitive.List, Object.assign({}, props, {
19731
19745
  className: className,
19732
19746
  ref: ref
19733
- }));
19747
+ }), /*#__PURE__*/React.createElement(OverflowGroup, {
19748
+ wrapChild: true,
19749
+ className: 'w-full [[aria-orientation="vertical"]_&]:flex-col',
19750
+ moreButton: text => /*#__PURE__*/React.createElement(Button$1, null, text)
19751
+ }, React.Children.toArray(children).filter(child => {
19752
+ if (/*#__PURE__*/React.isValidElement(child)) {
19753
+ return !child.props.hidden;
19754
+ }
19755
+ return true;
19756
+ })));
19734
19757
  });
19735
19758
  const TabTrigger = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {
19736
19759
  const {
@@ -19740,7 +19763,7 @@ const TabTrigger = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {
19740
19763
  tooltip,
19741
19764
  ...otherProps
19742
19765
  } = props;
19743
- const triggerClassName = cn('group relative p-0.5 outline-none disabled:cursor-not-allowed disabled:text-black/50',
19766
+ const triggerClassName = cn(props.className, 'group relative p-0.5 outline-none disabled:cursor-not-allowed disabled:text-black/50',
19744
19767
  // horizontal
19745
19768
  '[[aria-orientation="horizontal"]_&]:pb-1',
19746
19769
  // horizontal