@economic/taco 2.12.1 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/components/Provider/Localization.d.ts +1 -0
  2. package/dist/components/Select2/components/Option.d.ts +7 -5
  3. package/dist/components/Table3/Table3.d.ts +9 -1
  4. package/dist/components/Table3/components/columns/header/Group.d.ts +15 -0
  5. package/dist/components/Table3/components/columns/header/Header.d.ts +5 -0
  6. package/dist/components/Table3/components/columns/internal/EditingActions.d.ts +1 -1
  7. package/dist/components/Table3/hooks/features/useHeaderOffsetStyle.d.ts +3 -0
  8. package/dist/components/Table3/types.d.ts +7 -0
  9. package/dist/esm/index.css +24 -6
  10. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +1 -1
  11. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Provider/Localization.js +1 -0
  13. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +13 -6
  15. package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +7 -6
  17. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table3/Table3.js +24 -7
  19. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js +70 -0
  21. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js.map +1 -0
  22. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js +26 -8
  23. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js +13 -9
  25. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +8 -5
  27. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +14 -2
  29. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useHeaderOffsetStyle.js +24 -0
  31. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useHeaderOffsetStyle.js.map +1 -0
  32. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +30 -7
  33. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  35. package/dist/index.css +24 -6
  36. package/dist/taco.cjs.development.js +216 -52
  37. package/dist/taco.cjs.development.js.map +1 -1
  38. package/dist/taco.cjs.production.min.js +1 -1
  39. package/dist/taco.cjs.production.min.js.map +1 -1
  40. package/package.json +2 -2
  41. package/types.json +7273 -6481
@@ -4426,6 +4426,7 @@ const defaultLocalisationTexts = {
4426
4426
  condition: 'Condition',
4427
4427
  value: 'Value'
4428
4428
  },
4429
+ hiddenColumn: 'Hidden column',
4429
4430
  tooltip: 'Apply filters',
4430
4431
  total: 'Viewing [CURRENT] of [TOTAL]'
4431
4432
  },
@@ -5558,7 +5559,7 @@ const useCombobox = ({
5558
5559
  // event handlers
5559
5560
  const handleInputBlur = event => {
5560
5561
  event.persist();
5561
- if (event.relatedTarget === listRef.current) {
5562
+ if (listRef.current && event.relatedTarget === listRef.current) {
5562
5563
  event.preventDefault();
5563
5564
  return;
5564
5565
  }
@@ -9854,7 +9855,8 @@ const Option$1 = /*#__PURE__*/React__default.forwardRef(function Select2Option(p
9854
9855
  children,
9855
9856
  color,
9856
9857
  description,
9857
- icon,
9858
+ prefix,
9859
+ postfix,
9858
9860
  className: cName,
9859
9861
  ...otherProps
9860
9862
  } = props;
@@ -9908,14 +9910,20 @@ const Option$1 = /*#__PURE__*/React__default.forwardRef(function Select2Option(p
9908
9910
  }) : null, isTag ? /*#__PURE__*/React__default.createElement(Tag$1, {
9909
9911
  className: "pointer-events-none my-1",
9910
9912
  color: color,
9911
- icon: icon
9912
- }, children) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, icon ? typeof icon === 'string' ? /*#__PURE__*/React__default.createElement(Icon, {
9913
- name: icon
9914
- }) : icon : null, /*#__PURE__*/React__default.createElement("span", {
9913
+ icon: prefix
9914
+ }, children) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, prefix ? typeof prefix === 'string' ? /*#__PURE__*/React__default.createElement(Icon, {
9915
+ name: prefix
9916
+ }) : prefix : null, /*#__PURE__*/React__default.createElement("span", {
9917
+ className: "flex w-full justify-between"
9918
+ }, /*#__PURE__*/React__default.createElement("span", {
9915
9919
  className: "flex flex-col"
9916
9920
  }, /*#__PURE__*/React__default.createElement("span", null, children), description ? /*#__PURE__*/React__default.createElement("span", {
9917
9921
  className: "text-grey-700 -mt-1.5 mb-1.5 text-xs"
9918
- }, description) : null)), popover ? /*#__PURE__*/React__default.createElement(IconButton, {
9922
+ }, description) : null), /*#__PURE__*/React__default.createElement("span", {
9923
+ className: "mt-1 flex flex-col"
9924
+ }, postfix ? typeof postfix === 'string' ? /*#__PURE__*/React__default.createElement(Icon, {
9925
+ name: postfix
9926
+ }) : postfix : null))), popover ? /*#__PURE__*/React__default.createElement(IconButton, {
9919
9927
  icon: "ellipsis-vertical",
9920
9928
  appearance: "discrete",
9921
9929
  className: cn('group-aria-current:visible invisible -mr-1 ml-auto !h-5 min-h-[theme(spacing.6)] !w-5 min-w-[theme(spacing.6)] hover:!bg-black/[.08] focus:!shadow-none group-hover:visible', {
@@ -10065,13 +10073,14 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
10065
10073
  className: "truncate",
10066
10074
  color: currentValue.props.color,
10067
10075
  disabled: disabled,
10068
- icon: currentValue.props.icon,
10076
+ icon: currentValue.props.prefix,
10069
10077
  readOnly: readOnly
10070
10078
  }, currentValue.props.children);
10071
10079
  } else {
10072
- output = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, currentValue.props.icon ? typeof currentValue.props.icon === 'string' ? /*#__PURE__*/React__default.createElement(Icon, {
10073
- name: currentValue.props.icon
10074
- }) : currentValue.props.icon : null, currentValue.props.children);
10080
+ output = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, currentValue.props.prefix ? typeof currentValue.props.prefix === 'string' ? /*#__PURE__*/React__default.createElement(Icon, {
10081
+ name: currentValue.props.prefix,
10082
+ className: "mr-1 !h-5 !w-5"
10083
+ }) : currentValue.props.prefix : null, currentValue.props.children);
10075
10084
  }
10076
10085
  }
10077
10086
  return /*#__PURE__*/React__default.createElement(Button$2, Object.assign({}, buttonProps, {
@@ -10118,7 +10127,7 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
10118
10127
  className: "truncate",
10119
10128
  color: tags ? child.props.color : undefined,
10120
10129
  disabled: disabled,
10121
- icon: child.props.icon,
10130
+ icon: child.props.prefix,
10122
10131
  onDelete: event => {
10123
10132
  event === null || event === void 0 ? void 0 : event.stopPropagation();
10124
10133
  event === null || event === void 0 ? void 0 : event.preventDefault();
@@ -10186,7 +10195,7 @@ const MultipleValue = ({
10186
10195
  }),
10187
10196
  color: tags ? child.props.color : undefined,
10188
10197
  disabled: disabled,
10189
- icon: child.props.icon,
10198
+ icon: child.props.prefix,
10190
10199
  onDelete: open ? createClickHandler(child.props.value) : undefined,
10191
10200
  readOnly: readOnly
10192
10201
  }, child.props.children);
@@ -16197,6 +16206,7 @@ function Header$2(props) {
16197
16206
  children,
16198
16207
  column,
16199
16208
  header,
16209
+ hasSeparator,
16200
16210
  scrollToIndex,
16201
16211
  table
16202
16212
  } = props;
@@ -16232,10 +16242,13 @@ function Header$2(props) {
16232
16242
  canResize: column.getCanResize(),
16233
16243
  canSort,
16234
16244
  children: children !== null && children !== void 0 ? children : columnMeta.header,
16245
+ colSpan: header.colSpan,
16235
16246
  hasMenu: isMenuAvailable(table, header),
16247
+ hasSeparator,
16236
16248
  id: header.id,
16237
16249
  index: header.index,
16238
16250
  isFrozen: isFrozenColumn(header, table),
16251
+ isPlaceholder: header.isPlaceholder,
16239
16252
  isPrinting: tableMeta.isPrinting,
16240
16253
  isResizing: column.getIsResizing(),
16241
16254
  length: table.getRowModel().rows.length,
@@ -16260,10 +16273,13 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
16260
16273
  canHide,
16261
16274
  canResize,
16262
16275
  canSort,
16276
+ colSpan,
16263
16277
  hasMenu,
16278
+ hasSeparator,
16264
16279
  id,
16265
16280
  index,
16266
16281
  isFrozen,
16282
+ isPlaceholder,
16267
16283
  isPrinting,
16268
16284
  isResizing,
16269
16285
  length,
@@ -16277,19 +16293,22 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
16277
16293
  sortDirection,
16278
16294
  table
16279
16295
  } = props;
16280
- const className = cn('sticky top-0 border-b-2 font-bold box-content group/column relative', '[[role="table"][data-resizing="true"]_&]:pointer-events-none', 'px-[var(--table3-cell-padding-x)]', {
16296
+ const className = cn('sticky font-bold border-b-2 box-content group/column relative', '[[role="table"][data-resizing="true"]_&]:pointer-events-none', 'px-[var(--table3-cell-padding-x)]', {
16297
+ '!border-white': isPlaceholder,
16281
16298
  'h-10 items-center': !isPrinting,
16282
16299
  'pb-2': isPrinting,
16283
16300
  'cursor-pointer select-none': canSort,
16284
- 'hover:bg-grey-100': canSort || canResize || hasMenu,
16301
+ 'hover:bg-grey-100': !isPlaceholder && (canSort || canResize || hasMenu),
16285
16302
  'focus-within:bg-grey-100': hasMenu,
16286
- '!pointer-events-all !bg-grey-100': isResizing,
16303
+ '!pointer-events-all !bg-grey-100': !isPlaceholder && isResizing,
16287
16304
  // z-indexes
16288
16305
  'z-10 hover:z-20': !isFrozen && !isResizing,
16289
16306
  'z-20': !isFrozen && isResizing,
16290
- '!z-30': isFrozen,
16307
+ // when column is frozen, we need to increase it's z-index when it's hovered,
16308
+ // so that resize handler appears on top of next frozen cell, and didn't get cut by it.
16309
+ '!z-30 hover:!z-40': isFrozen,
16291
16310
  '!z-40': isFrozen && isResizing
16292
- }, meta.headerClassName);
16311
+ }, colSpan > 1 ? `col-span-${colSpan}` : '', meta.headerClassName);
16293
16312
  const [internalRef, setInternalRef] = React__default.useState(null);
16294
16313
  React__default.useLayoutEffect(() => {
16295
16314
  if (internalRef && length) {
@@ -16312,7 +16331,7 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
16312
16331
  "data-column-index": index,
16313
16332
  role: "columnheader",
16314
16333
  ref: setInternalRef
16315
- }), isInternalColumn$1(id) ? children : /*#__PURE__*/React__default.createElement(Tooltip, {
16334
+ }), isPlaceholder ? null : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isInternalColumn$1(id) ? children : /*#__PURE__*/React__default.createElement(Tooltip, {
16316
16335
  title: String((_meta$tooltip = meta === null || meta === void 0 ? void 0 : meta.tooltip) !== null && _meta$tooltip !== void 0 ? _meta$tooltip : children),
16317
16336
  placement: "top"
16318
16337
  }, /*#__PURE__*/React__default.createElement("span", {
@@ -16337,11 +16356,19 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
16337
16356
  scrollToIndex: scrollToIndex,
16338
16357
  sortDirection: sortDirection,
16339
16358
  table: table
16340
- }) : null, canResize ? /*#__PURE__*/React__default.createElement(Resizer, {
16359
+ }) : null), hasSeparator ? /*#__PURE__*/React__default.createElement(HeaderSeparator, null) : null, !isPlaceholder && canResize ? /*#__PURE__*/React__default.createElement(Resizer, {
16341
16360
  isResizing: isResizing,
16342
16361
  onResize: handleResize
16343
16362
  }) : null);
16344
16363
  });
16364
+ function HeaderSeparator() {
16365
+ return /*#__PURE__*/React__default.createElement("div", {
16366
+ "data-taco": "header-separator",
16367
+ className: cn('invisible absolute right-[0.5px] top-0 flex h-full w-2 touch-none select-none justify-center py-2 group-hover/header:visible')
16368
+ }, /*#__PURE__*/React__default.createElement("div", {
16369
+ className: cn('bg-grey-300 h-full w-[1px]')
16370
+ }));
16371
+ }
16345
16372
 
16346
16373
  const RowContext$1 = /*#__PURE__*/React__default.createContext({
16347
16374
  isHovered: false,
@@ -17555,6 +17582,7 @@ const savingIndicatorHideDelay = 3000;
17555
17582
  const COLUMN_ID$1 = '__editing_actions';
17556
17583
  const MemoedCell$1 = /*#__PURE__*/React__default.memo(function MemoedCell(props) {
17557
17584
  const {
17585
+ hasChanges,
17558
17586
  isCurrentRow,
17559
17587
  isEditing,
17560
17588
  row,
@@ -17563,8 +17591,6 @@ const MemoedCell$1 = /*#__PURE__*/React__default.memo(function MemoedCell(props)
17563
17591
  const tableMeta = table.options.meta;
17564
17592
  const savingState = tableMeta.editing.savingStates && tableMeta.editing.savingStates[row.id];
17565
17593
  const [isSavedIndicatorVisible, setIsSavingIndicatorVisible] = React__default.useState(false);
17566
- const changeset = tableMeta.editing.changes ? Object.keys(tableMeta.editing.changes) : [];
17567
- const isRowInEditingState = changeset.indexOf(row.id) >= 0;
17568
17594
  const {
17569
17595
  texts
17570
17596
  } = useLocalization();
@@ -17586,14 +17612,14 @@ const MemoedCell$1 = /*#__PURE__*/React__default.memo(function MemoedCell(props)
17586
17612
  title: texts.table3.editing.saving.progress
17587
17613
  }, /*#__PURE__*/React__default.createElement(Spinner, {
17588
17614
  delay: 0,
17589
- className: "!text-grey-700 mr-1.5 !h-5 !w-5"
17615
+ className: "!text-grey-700 mr-1 !h-5 !w-5"
17590
17616
  }));
17591
17617
  } else if (isSavedIndicatorVisible) {
17592
17618
  content = /*#__PURE__*/React__default.createElement(Tooltip, {
17593
17619
  title: texts.table3.editing.saving.complete
17594
17620
  }, /*#__PURE__*/React__default.createElement(Icon, {
17595
17621
  name: "tick",
17596
- className: "!text-grey-700 mr-1"
17622
+ className: "!text-grey-700 mr-1 !h-5 !w-5"
17597
17623
  }));
17598
17624
  }
17599
17625
  }
@@ -17604,11 +17630,11 @@ const MemoedCell$1 = /*#__PURE__*/React__default.memo(function MemoedCell(props)
17604
17630
  icon: "more",
17605
17631
  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, {
17606
17632
  icon: "tick",
17607
- disabled: !isRowInEditingState,
17633
+ disabled: !hasChanges,
17608
17634
  onClick: () => tableMeta.editing.saveChangesIfNeeded()
17609
17635
  }, texts.table3.editing.actions.save), /*#__PURE__*/React__default.createElement(Menu$1.Item, {
17610
17636
  icon: "close",
17611
- disabled: !isRowInEditingState,
17637
+ disabled: !hasChanges,
17612
17638
  onClick: () => tableMeta.editing.resetChange(row.id)
17613
17639
  }, texts.table3.editing.actions.clear), /*#__PURE__*/React__default.createElement(Menu$1.Item, {
17614
17640
  icon: "undo",
@@ -17617,12 +17643,15 @@ const MemoedCell$1 = /*#__PURE__*/React__default.memo(function MemoedCell(props)
17617
17643
  tabIndex: isCurrentRow ? 0 : -1
17618
17644
  }));
17619
17645
  }
17646
+ const contentClassName = cn('flex items-center justify-end text-right', {
17647
+ '-mb-2 -mt-2': isCurrentRow
17648
+ });
17620
17649
  return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, props, {
17621
17650
  className: cn({
17622
17651
  '!sticky': !!content
17623
17652
  })
17624
17653
  }), content ? /*#__PURE__*/React__default.createElement("span", {
17625
- className: "-mb-2 -mt-2 flex items-center justify-end text-right"
17654
+ className: contentClassName
17626
17655
  }, content) : undefined);
17627
17656
  });
17628
17657
  function Cell$2(props) {
@@ -17630,12 +17659,14 @@ function Cell$2(props) {
17630
17659
  rowIndex
17631
17660
  } = React__default.useContext(RowContext$1);
17632
17661
  const tableMeta = props.table.options.meta;
17662
+ const changeset = tableMeta.editing.changes ? Object.keys(tableMeta.editing.changes) : [];
17633
17663
  return /*#__PURE__*/React__default.createElement(MemoedCell$1, Object.assign({}, props, {
17664
+ hasChanges: changeset.indexOf(props.row.id) >= 0,
17634
17665
  isCurrentRow: tableMeta.currentRow.currentRowIndex === rowIndex,
17635
17666
  isEditing: tableMeta.editing.isEditing
17636
17667
  }));
17637
17668
  }
17638
- const EDITING_ACTIONS_WIDTH = 45;
17669
+ const EDITING_ACTIONS_WIDTH = 60;
17639
17670
  function createRowEditingActionsColumn() {
17640
17671
  return {
17641
17672
  id: COLUMN_ID$1,
@@ -17644,7 +17675,7 @@ function createRowEditingActionsColumn() {
17644
17675
  footer: Footer$4,
17645
17676
  meta: {
17646
17677
  align: 'right',
17647
- className: cn('items-center print:opacity-0 [[role="table"][data-editing="true"]_&]:group-[[data-current="true"]]/row:sticky right-0 !pl-0 !pr-1', '[[role="table"][data-editing="true"]_&]:group-[[data-current="true"]]/row:shadow-[-6px_0px_6px] [[role="table"][data-pause-hover="false"][data-editing="true"]_&]:group-hover/row:shadow-[-6px_0px_6px]', 'group-[[data-current="true"][data-selected="false"]]/row:text-grey-200', 'group-[[data-selected="true"]]/row:text-blue-100', 'group-[[data-selected="false"]:hover]/row:text-grey-100'),
17678
+ className: cn('items-center print:opacity-0 [[role="table"][data-editing="true"]_&]:group-[[data-current="true"]]/row:sticky right-0 !pl-0 !pr-1', '[[role="table"][data-editing="true"]_&]:group-[[data-current="true"]]/row:shadow-[-6px_0px_6px_var(--table3-row-actions-shadow)]', 'group-[[data-current="true"][data-selected="false"]]/row:text-grey-200', 'group-[[data-selected="true"]]/row:text-blue-100', 'group-[[data-selected="false"]:hover]/row:text-grey-100'),
17648
17679
  enableOrdering: false,
17649
17680
  enableSearch: false,
17650
17681
  enableTruncate: false,
@@ -18578,6 +18609,69 @@ function createRowDragColumn(onRowDrag) {
18578
18609
  };
18579
18610
  }
18580
18611
 
18612
+ function Group$3(props) {
18613
+ const {
18614
+ children,
18615
+ column,
18616
+ header,
18617
+ table,
18618
+ hasSeparator
18619
+ } = props;
18620
+ const columnMeta = React__default.useMemo(() => column.columnDef.meta, []);
18621
+ const tableMeta = table.options.meta;
18622
+ const memoedProps = {
18623
+ align: 'center',
18624
+ children: children !== null && children !== void 0 ? children : columnMeta.header,
18625
+ colSpan: header.colSpan,
18626
+ hasSeparator,
18627
+ id: header.id,
18628
+ index: header.index,
18629
+ isPrinting: tableMeta.isPrinting,
18630
+ length: table.getRowModel().rows.length,
18631
+ meta: columnMeta,
18632
+ table
18633
+ };
18634
+ return /*#__PURE__*/React__default.createElement(MemoedGroup, Object.assign({}, memoedProps));
18635
+ }
18636
+ const MemoedGroup = /*#__PURE__*/React__default.memo(function MemoedGroup(props) {
18637
+ var _meta$tooltip;
18638
+ const {
18639
+ align,
18640
+ children,
18641
+ colSpan,
18642
+ hasSeparator,
18643
+ id,
18644
+ isPrinting,
18645
+ meta,
18646
+ table
18647
+ } = props;
18648
+ const containerClassName = cn('sticky px-2 mb-[2px]', {
18649
+ 'h-10': !isPrinting
18650
+ }, colSpan > 1 ? `col-span-${colSpan}` : '');
18651
+ const innerClassName = cn('font-bold box-content group/column relative', 'px-[var(--table3-cell-padding-x)]', {
18652
+ 'h-full items-center': !isPrinting,
18653
+ 'pb-2': isPrinting,
18654
+ 'border-b-2': !!children
18655
+ }, meta.headerClassName);
18656
+ if (table.options.debugAll) {
18657
+ console.log('header group render', id);
18658
+ }
18659
+ return /*#__PURE__*/React__default.createElement("div", {
18660
+ className: containerClassName,
18661
+ "data-taco": "table3-column-group",
18662
+ "data-align": align
18663
+ }, /*#__PURE__*/React__default.createElement("div", {
18664
+ className: innerClassName
18665
+ }, /*#__PURE__*/React__default.createElement(Tooltip, {
18666
+ title: String((_meta$tooltip = meta === null || meta === void 0 ? void 0 : meta.tooltip) !== null && _meta$tooltip !== void 0 ? _meta$tooltip : children),
18667
+ placement: "top"
18668
+ }, /*#__PURE__*/React__default.createElement("span", {
18669
+ className: cn({
18670
+ truncate: !isPrinting
18671
+ })
18672
+ }, children)), hasSeparator ? /*#__PURE__*/React__default.createElement(HeaderSeparator, null) : null));
18673
+ });
18674
+
18581
18675
  function getSortingFn$1(dataType, customFnOrBuiltIn) {
18582
18676
  if (typeof customFnOrBuiltIn === 'function') {
18583
18677
  return (rowA, rowB, columnId) => customFnOrBuiltIn(rowA.original, rowB.original, columnId);
@@ -18599,13 +18693,12 @@ function useConvertChildrenToColumns(props, options, editing) {
18599
18693
  return React__default.useMemo(() => {
18600
18694
  var _props$actionsForRow;
18601
18695
  const columnHelper = reactTable$1.createColumnHelper();
18602
- const columns = [];
18603
18696
  const defaultColumnSizing = {};
18604
18697
  const defaultColumnVisibility = {};
18605
18698
  const defaultSorting = [];
18606
- React__default.Children.toArray(props.children).filter(child => !!child) // remove falsey children
18607
- .forEach(child => {
18608
- if ( /*#__PURE__*/React__default.isValidElement(child) && child.props.accessor) {
18699
+ function processChild(child) {
18700
+ var _child$type, _child$type2;
18701
+ if ( /*#__PURE__*/React__default.isValidElement(child) && ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'Table3Column' && child.props.accessor) {
18609
18702
  var _child$props$enableRe, _child$props$enableFi, _child$props$enableSo, _child$props$enableHi, _child$props$enableOr, _child$props$enablePr, _child$props$enableSe, _child$props$enableTr;
18610
18703
  if (child.props.defaultWidth) {
18611
18704
  defaultColumnSizing[child.props.accessor] = child.props.defaultWidth === 'grow' ? '1fr' : child.props.defaultWidth;
@@ -18619,7 +18712,8 @@ function useConvertChildrenToColumns(props, options, editing) {
18619
18712
  desc: child.props.sort === 'desc'
18620
18713
  });
18621
18714
  }
18622
- columns.push({
18715
+ // return regular column definition
18716
+ return {
18623
18717
  accessorKey: child.props.accessor,
18624
18718
  id: child.props.accessor,
18625
18719
  header: Header$2,
@@ -18656,9 +18750,31 @@ function useConvertChildrenToColumns(props, options, editing) {
18656
18750
  renderer: child.props.renderer,
18657
18751
  tooltip: child.props.tooltip
18658
18752
  }
18753
+ };
18754
+ } else if ( /*#__PURE__*/React__default.isValidElement(child) && ((_child$type2 = child.type) === null || _child$type2 === void 0 ? void 0 : _child$type2.displayName) === 'Table3Group' && child.props.children) {
18755
+ // return column group definition
18756
+ return columnHelper.group({
18757
+ id: child.props.id,
18758
+ header: Group$3,
18759
+ columns: processChildren(child.props.children),
18760
+ meta: {
18761
+ align: 'center',
18762
+ enableOrdering: false,
18763
+ enableSearch: false,
18764
+ enableTruncate: false,
18765
+ header: child.props.header
18766
+ }
18659
18767
  });
18660
18768
  }
18661
- });
18769
+ return;
18770
+ }
18771
+ function processChildren(children) {
18772
+ return React__default.Children.toArray(children).map(processChild)
18773
+ // compiler cannot get filtering out undefined items, so using the type casting here
18774
+ .filter(child => !!child); // need to remove undefined array items after processing the children
18775
+ }
18776
+
18777
+ const columns = processChildren(props.children);
18662
18778
  if (options.enableRowExpansion && props.expandedRowRenderer) {
18663
18779
  columns.unshift(columnHelper.display(createRowExpansionColumn$1(props.expandedRowRenderer)));
18664
18780
  }
@@ -18680,7 +18796,7 @@ function useConvertChildrenToColumns(props, options, editing) {
18680
18796
  defaultColumnVisibility,
18681
18797
  defaultSorting
18682
18798
  };
18683
- }, []);
18799
+ }, [editing.isEditing]);
18684
18800
  }
18685
18801
 
18686
18802
  function usePrinting(isEnabled, loadAll, showWarningWhenPrintingLargeDataset = true) {
@@ -19703,18 +19819,27 @@ function FilterColumn(props) {
19703
19819
  value = null,
19704
19820
  ...attributes
19705
19821
  } = props;
19822
+ const {
19823
+ texts
19824
+ } = useLocalization();
19706
19825
  return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
19707
19826
  className: "!w-32 flex-shrink-0",
19708
19827
  emptyValue: null,
19709
19828
  onChange: handleChange,
19710
19829
  value: value
19711
19830
  }), allColumns.map(column => {
19712
- var _column$columnDef$met;
19831
+ var _column$columnDef$met, _column$parent, _column$parent$column;
19713
19832
  return /*#__PURE__*/React__default.createElement(Select2.Option, {
19714
19833
  key: column.id,
19715
19834
  value: column.id,
19835
+ postfix: !column.getIsVisible() ? /*#__PURE__*/React__default.createElement(Tooltip, {
19836
+ title: texts.table3.filters.hiddenColumn
19837
+ }, /*#__PURE__*/React__default.createElement(Icon, {
19838
+ name: "eye-off",
19839
+ className: "text-grey-500"
19840
+ })) : undefined,
19716
19841
  disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
19717
- }, (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header);
19842
+ }, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
19718
19843
  }));
19719
19844
  }
19720
19845
 
@@ -20718,7 +20843,7 @@ function RowHeight(props) {
20718
20843
  }
20719
20844
 
20720
20845
  const Column$4 = /*#__PURE__*/React__default.forwardRef(function Column(props, ref) {
20721
- var _column$columnDef$met;
20846
+ var _column$parent, _column$parent$column, _column$columnDef$met;
20722
20847
  const {
20723
20848
  column,
20724
20849
  draggable = false,
@@ -20732,6 +20857,7 @@ const Column$4 = /*#__PURE__*/React__default.forwardRef(function Column(props, r
20732
20857
  });
20733
20858
  const attributes = draggable ? dragAttributes : undefined;
20734
20859
  const isVisible = column.getIsVisible();
20860
+ const parentText = column.parent ? (_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header : null;
20735
20861
  return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
20736
20862
  key: column.id,
20737
20863
  className: className,
@@ -20742,7 +20868,9 @@ const Column$4 = /*#__PURE__*/React__default.forwardRef(function Column(props, r
20742
20868
  className: "text-grey-500 group-hover/column:text-grey-700 -mx-2 !h-5"
20743
20869
  }) : null, /*#__PURE__*/React__default.createElement("span", {
20744
20870
  className: "flex-grow truncate"
20745
- }, (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header), canHide ? /*#__PURE__*/React__default.createElement(Checkbox, {
20871
+ }, (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header, parentText ? /*#__PURE__*/React__default.createElement("span", {
20872
+ className: "italic"
20873
+ }, " (", parentText, ")") : null), canHide ? /*#__PURE__*/React__default.createElement(Checkbox, {
20746
20874
  checked: isVisible,
20747
20875
  onChange: () => column.toggleVisibility(!isVisible)
20748
20876
  }) : null);
@@ -20760,8 +20888,8 @@ function ColumnSettingsPopover(props) {
20760
20888
  const allColumns = table.getAllLeafColumns();
20761
20889
  const tableMeta = table.options.meta;
20762
20890
  const columns = React__default.useMemo(() => allColumns.filter(column => !isInternalColumn$1(column.id)).filter(column => {
20763
- var _column$columnDef$met2;
20764
- return query !== null && query !== void 0 && query.length ? (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.header.toLowerCase().includes(query.toLowerCase()) : true;
20891
+ var _column$columnDef$met2, _column$parent2, _column$parent2$colum;
20892
+ return query !== null && query !== void 0 && query.length ? ((_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.header.toLowerCase().includes(query.toLowerCase())) || ((_column$parent2 = column.parent) === null || _column$parent2 === void 0 ? void 0 : (_column$parent2$colum = _column$parent2.columnDef.meta) === null || _column$parent2$colum === void 0 ? void 0 : _column$parent2$colum.header.toLowerCase().includes(query.toLowerCase())) : true;
20765
20893
  }), [allColumns, query]);
20766
20894
  const listClassName = 'flex max-h-64 flex-col gap-y-px overflow-auto';
20767
20895
  const handleReorder = (activeId, overId) => {
@@ -20776,7 +20904,7 @@ function ColumnSettingsPopover(props) {
20776
20904
  return /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
20777
20905
  anchor: trigger
20778
20906
  }), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
20779
- className: "flex w-60 flex-col gap-2"
20907
+ className: "flex max-w-sm flex-col gap-2"
20780
20908
  }, table.options.enableHiding ? /*#__PURE__*/React__default.createElement(Input, {
20781
20909
  onChange: event => setQuery(event.target.value),
20782
20910
  placeholder: texts.table3.columnSettings.search,
@@ -21055,6 +21183,26 @@ const useCssVars = (height, fontSize) => {
21055
21183
  };
21056
21184
  };
21057
21185
 
21186
+ // header height: 40px, border bottom height: 2px;
21187
+ const HEADER_COLUMN_HEIGHT = 42;
21188
+ function getHeaderTopOffset(depth) {
21189
+ return HEADER_COLUMN_HEIGHT * (depth - 1);
21190
+ }
21191
+ function useHeaderOffsetStyle(tableId, table) {
21192
+ const headers = table.getFlatHeaders();
21193
+ const style = React__default.useMemo(() => {
21194
+ // 'new Set' will remove all duplicates and leave only unique values,
21195
+ // in the end we should get only one depht value per array item, example: [1, 2, 3], which we will iterate through later.
21196
+ const headerDepths = [...new Set(headers.map(header => header.depth))];
21197
+ return headerDepths.map(depth => {
21198
+ return `#${tableId} [data-taco="table2-header"] [role="row"]:nth-child(${depth}) [role="columnheader"],
21199
+ #${tableId} [data-taco="table2-header"] [role="row"]:nth-child(${depth}) [data-taco="table3-column-group"]
21200
+ { top: ${getHeaderTopOffset(depth)}px }`;
21201
+ }).join('\r\n');
21202
+ }, [headers, tableId]);
21203
+ return style;
21204
+ }
21205
+
21058
21206
  function useTable3DataLoader(fetch, fetchAll, options = {
21059
21207
  pageSize: 100
21060
21208
  }) {
@@ -21183,6 +21331,11 @@ function useTable3DataLoader(fetch, fetchAll, options = {
21183
21331
  function Column$5(_) {
21184
21332
  return null;
21185
21333
  }
21334
+ Column$5.displayName = 'Table3Column';
21335
+ function Group$4(_) {
21336
+ return null;
21337
+ }
21338
+ Group$4.displayName = 'Table3Group';
21186
21339
  // Cast the old forwardRef to the new one
21187
21340
  const fixedForwardRef = React__default.forwardRef;
21188
21341
  const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
@@ -21275,10 +21428,13 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
21275
21428
  opacity: 0.999
21276
21429
  };
21277
21430
  const columnFreezingStyle = useColumnFreezingStyle(props.id, table);
21431
+ const headerOffsetStyle = useHeaderOffsetStyle(props.id, table);
21278
21432
  const isServerLoadingAndNotReady = tableMeta.isUsingServer && props.length === undefined;
21279
21433
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, columnFreezingStyle ? /*#__PURE__*/React__default.createElement("style", {
21280
21434
  "data-taco": "table3-column-freezing-styles"
21281
- }, columnFreezingStyle) : null, /*#__PURE__*/React__default.createElement(Toolbar, {
21435
+ }, columnFreezingStyle) : null, headerOffsetStyle ? /*#__PURE__*/React__default.createElement("style", {
21436
+ "data-taco": "table3-column-header-offset-styles"
21437
+ }, headerOffsetStyle) : null, /*#__PURE__*/React__default.createElement(Toolbar, {
21282
21438
  table: table,
21283
21439
  tableProps: props,
21284
21440
  total: length,
@@ -21310,12 +21466,19 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
21310
21466
  className: "contents",
21311
21467
  key: headerGroup.id,
21312
21468
  role: "row"
21313
- }, headerGroup.headers.map(header => /*#__PURE__*/React__default.createElement(React__default.Fragment, {
21314
- key: header.id
21315
- }, reactTable$1.flexRender(header.column.columnDef.header, {
21316
- ...header.getContext(),
21317
- scrollToIndex
21318
- })))))), table.getRowModel().rows.length ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(focus.FocusScope, {
21469
+ }, headerGroup.headers.map((header, index) => {
21470
+ var _headerGroup$headers;
21471
+ // We need to render separator if column is not the last in array, if index is not equal to freeze column index,
21472
+ // if next element is not placeholder and if column itself is not placeholder.
21473
+ const hasSeparator = index !== tableMeta.columnFreezing.frozenColumnIndex && index !== headerGroup.headers.length - 1 && (!((_headerGroup$headers = headerGroup.headers[index + 1]) !== null && _headerGroup$headers !== void 0 && _headerGroup$headers.isPlaceholder) || !header.isPlaceholder);
21474
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
21475
+ key: header.id
21476
+ }, reactTable$1.flexRender(header.column.columnDef.header, {
21477
+ ...header.getContext(),
21478
+ scrollToIndex,
21479
+ hasSeparator
21480
+ }));
21481
+ })))), table.getRowModel().rows.length ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(focus.FocusScope, {
21319
21482
  autoFocus: tableMeta.editing.isEditing
21320
21483
  }, /*#__PURE__*/React__default.createElement("div", {
21321
21484
  onMouseDownCapture: handleMouseCapture,
@@ -21354,6 +21517,7 @@ const Table3 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
21354
21517
  }));
21355
21518
  });
21356
21519
  Table3.Column = Column$5;
21520
+ Table3.Group = Group$4;
21357
21521
 
21358
21522
  const Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {
21359
21523
  const {
@@ -22111,7 +22275,7 @@ Layout$1.Page = Page;
22111
22275
  Layout$1.Sidebar = Sidebar;
22112
22276
  Layout$1.Content = Content$9;
22113
22277
 
22114
- const Group$3 = /*#__PURE__*/React__default.forwardRef(function Group(props, ref) {
22278
+ const Group$5 = /*#__PURE__*/React__default.forwardRef(function Group(props, ref) {
22115
22279
  const {
22116
22280
  children,
22117
22281
  defaultExpanded = false,
@@ -22270,7 +22434,7 @@ const Navigation2 = /*#__PURE__*/React__default.forwardRef(function Navigation2(
22270
22434
  }
22271
22435
  }), children);
22272
22436
  });
22273
- Navigation2.Group = Group$3;
22437
+ Navigation2.Group = Group$5;
22274
22438
  Navigation2.Link = Link$2;
22275
22439
  Navigation2.Section = Section;
22276
22440
  Navigation2.Content = Content$a;