@economic/taco 1.36.0 → 1.37.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 (36) hide show
  1. package/dist/components/Icon/components/EyeOff.d.ts +3 -0
  2. package/dist/components/Icon/components/EyeOn.d.ts +3 -0
  3. package/dist/components/Icon/components/index.d.ts +1 -1
  4. package/dist/components/Input/Input.d.ts +1 -1
  5. package/dist/components/Menu/components/Item.d.ts +1 -1
  6. package/dist/components/Menu/components/Link.d.ts +1 -1
  7. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  8. package/dist/components/Provider/Localization.d.ts +1 -0
  9. package/dist/components/Select2/components/Option.d.ts +1 -1
  10. package/dist/components/Select2/components/Search.d.ts +1 -1
  11. package/dist/components/Select2/components/Trigger.d.ts +1 -0
  12. package/dist/components/Table2/Table2.d.ts +1 -0
  13. package/dist/components/Tag/Tag.d.ts +1 -1
  14. package/dist/esm/packages/taco/src/components/Icon/components/EyeOff.js +19 -0
  15. package/dist/esm/packages/taco/src/components/Icon/components/EyeOff.js.map +1 -0
  16. package/dist/esm/packages/taco/src/components/Icon/components/EyeOn.js +19 -0
  17. package/dist/esm/packages/taco/src/components/Icon/components/EyeOn.js.map +1 -0
  18. package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
  19. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Provider/Localization.js +1 -0
  21. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -0
  23. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +1 -1
  25. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +3 -1
  27. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +51 -38
  30. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
  31. package/dist/taco.cjs.development.js +89 -40
  32. package/dist/taco.cjs.development.js.map +1 -1
  33. package/dist/taco.cjs.production.min.js +1 -1
  34. package/dist/taco.cjs.production.min.js.map +1 -1
  35. package/package.json +2 -2
  36. package/types.json +10 -3
@@ -1460,6 +1460,36 @@ function IconExport(props, svgRef) {
1460
1460
  }
1461
1461
  var Export = /*#__PURE__*/React.forwardRef(IconExport);
1462
1462
 
1463
+ function IconEyeOff(props, svgRef) {
1464
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
1465
+ fill: "none",
1466
+ xmlns: "http://www.w3.org/2000/svg",
1467
+ viewBox: "0 0 24 24",
1468
+ ref: svgRef
1469
+ }, props), /*#__PURE__*/React.createElement("path", {
1470
+ fillRule: "evenodd",
1471
+ clipRule: "evenodd",
1472
+ d: "M3.53 2.47a.75.75 0 00-1.06 1.06l3.605 3.605a10.258 10.258 0 00-4.097 6.208.75.75 0 101.466.314 8.757 8.757 0 013.71-5.443l1.987 1.988a4 4 0 005.656 5.656l5.673 5.672a.75.75 0 101.06-1.06l-18-18zm10.207 12.328l-3.535-3.535a2.5 2.5 0 003.535 3.535zM12.061 9L16 12.94A4 4 0 0012.06 9zM8.815 5.754l1.218 1.218a8.753 8.753 0 0110.523 6.685.75.75 0 101.467-.314C21.032 8.718 16.922 5.25 12 5.25c-1.112 0-2.182.177-3.185.504z",
1473
+ fill: "currentColor"
1474
+ }));
1475
+ }
1476
+ var EyeOff = /*#__PURE__*/React.forwardRef(IconEyeOff);
1477
+
1478
+ function IconEyeOn(props, svgRef) {
1479
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
1480
+ fill: "none",
1481
+ xmlns: "http://www.w3.org/2000/svg",
1482
+ viewBox: "0 0 24 24",
1483
+ ref: svgRef
1484
+ }, props), /*#__PURE__*/React.createElement("path", {
1485
+ fillRule: "evenodd",
1486
+ clipRule: "evenodd",
1487
+ d: "M3.444 13.657a8.753 8.753 0 0117.112 0 .75.75 0 101.466-.314C21.033 8.718 16.922 5.25 12 5.25c-4.922 0-9.031 3.468-10.022 8.093a.75.75 0 101.466.314zM14.5 13a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm1.5 0a4 4 0 11-8 0 4 4 0 018 0z",
1488
+ fill: "currentColor"
1489
+ }));
1490
+ }
1491
+ var EyeOn = /*#__PURE__*/React.forwardRef(IconEyeOn);
1492
+
1463
1493
  function IconFilterSolid(props, svgRef) {
1464
1494
  return /*#__PURE__*/React.createElement("svg", Object.assign({
1465
1495
  xmlns: "http://www.w3.org/2000/svg",
@@ -3139,6 +3169,8 @@ const icons = {
3139
3169
  'export-to-excel': ExportToExcel,
3140
3170
  'export-to-pdf': ExportToPdf,
3141
3171
  export: Export,
3172
+ 'eye-off': EyeOff,
3173
+ 'eye-on': EyeOn,
3142
3174
  'filter-solid': FilterSolid,
3143
3175
  filter: Filter,
3144
3176
  'graph-solid': GraphSolid,
@@ -3960,6 +3992,7 @@ const defaultLocalisationTexts = {
3960
3992
  selectAll: 'Select all rows'
3961
3993
  },
3962
3994
  menu: {
3995
+ hideColumn: 'Hide column',
3963
3996
  freezeColumns: (count = 1) => count === 1 ? 'Freeze the first column' : `Freeze first ${count} columns`,
3964
3997
  unfreezeColumns: 'Unfreeze all columns'
3965
3998
  }
@@ -9261,6 +9294,7 @@ const Button$2 = /*#__PURE__*/React__default.forwardRef(function Select2TriggerB
9261
9294
  const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSingle(props, ref) {
9262
9295
  const {
9263
9296
  children,
9297
+ emptyValue,
9264
9298
  value,
9265
9299
  ...buttonProps
9266
9300
  } = props;
@@ -9273,7 +9307,7 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
9273
9307
  const currentValue = children.find(matchesValue(value));
9274
9308
  let output;
9275
9309
  if (currentValue) {
9276
- if (tags) {
9310
+ if (tags && emptyValue !== undefined && emptyValue !== value) {
9277
9311
  output = /*#__PURE__*/React__default.createElement(Tag$1, {
9278
9312
  className: "truncate",
9279
9313
  color: currentValue.props.color,
@@ -9297,6 +9331,7 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
9297
9331
  var _buttonRef$current;
9298
9332
  const {
9299
9333
  children,
9334
+ emptyValue: _,
9300
9335
  values = [],
9301
9336
  ...buttonProps
9302
9337
  } = props;
@@ -9612,7 +9647,7 @@ const getNextColor = options => {
9612
9647
  }, {});
9613
9648
  const colors = Object.keys(occurences);
9614
9649
  if (colors.length) {
9615
- return colors.sort((a, b) => occurences[b] - occurences[a])[0];
9650
+ return colors.sort((a, b) => occurences[a] - occurences[b])[0];
9616
9651
  }
9617
9652
  return undefined;
9618
9653
  };
@@ -9847,6 +9882,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
9847
9882
  "data-taco": "Select2"
9848
9883
  }, /*#__PURE__*/React__default.createElement(Trigger$7, Object.assign({}, otherProps, {
9849
9884
  "aria-haspopup": "listbox",
9885
+ emptyValue: emptyValue,
9850
9886
  onBlur: handleBlur,
9851
9887
  onKeyDown: handleKeyDown,
9852
9888
  ref: internalRef
@@ -12871,7 +12907,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
12871
12907
  }));
12872
12908
 
12873
12909
  const Header$1 = function Header(props) {
12874
- var _header$column$column, _header$column$column2, _asc$desc$header$colu, _header$column$column4, _header$column$column5, _header$column$column6, _header$column$column7, _asc$desc$header$colu2, _header$column$column8, _header$column$column9;
12910
+ var _header$column$column, _header$column$column2, _asc$desc$header$colu, _header$column$column4, _header$column$column5, _header$column$column6, _header$column$column7, _asc$desc$header$colu2, _header$column$column8;
12875
12911
  const {
12876
12912
  header,
12877
12913
  index,
@@ -12977,8 +13013,7 @@ const Header$1 = function Header(props) {
12977
13013
  className: "pointer-events-none -my-0.5"
12978
13014
  })
12979
13015
  }[header.column.getIsSorted()]) !== null && _asc$desc$header$colu2 !== void 0 ? _asc$desc$header$colu2 : null), !isInternalColumn(header.column.id) && ((_header$column$column8 = header.column.columnDef.meta) !== null && _header$column$column8 !== void 0 && _header$column$column8.menu || enableColumnFreezing) ? /*#__PURE__*/React__default.createElement(HeaderMenu, {
12980
- menu: (_header$column$column9 = header.column.columnDef.meta) === null || _header$column$column9 === void 0 ? void 0 : _header$column$column9.menu,
12981
- enableColumnFreezing: enableColumnFreezing,
13016
+ header: header,
12982
13017
  table: table,
12983
13018
  columnIndex: index
12984
13019
  }) : null), header.column.getCanResize() ? /*#__PURE__*/React__default.createElement(Tooltip, {
@@ -13003,46 +13038,62 @@ const Header$1 = function Header(props) {
13003
13038
  }))) : null);
13004
13039
  };
13005
13040
  const HeaderMenu = ({
13006
- menu,
13007
- enableColumnFreezing,
13041
+ header,
13008
13042
  table,
13009
13043
  columnIndex
13010
13044
  }) => {
13045
+ var _header$column$column9;
13011
13046
  const [open, setOpen] = React__default.useState(false);
13012
13047
  const {
13013
13048
  texts
13014
13049
  } = useLocalization();
13050
+ const menu = (_header$column$column9 = header.column.columnDef.meta) === null || _header$column$column9 === void 0 ? void 0 : _header$column$column9.menu;
13051
+ const meta = table.options.meta;
13015
13052
  const {
13016
13053
  frozenColumnsCount,
13017
13054
  setFrozenColumnsCount
13018
- } = table.options.meta;
13055
+ } = meta;
13019
13056
  const columns = table.getVisibleLeafColumns();
13020
13057
  const {
13021
13058
  columnVisibility,
13022
13059
  columnOrder
13023
13060
  } = table.getState();
13024
13061
  const visibleInternalColumnsCount = React__default.useMemo(() => columns.filter(column => isInternalFrozenColumn(column.id)).length, [columns]);
13025
- const columnPosition = columnIndex + 1;
13026
- const externalFrozenColumnsCount = columnPosition - visibleInternalColumnsCount;
13027
- const isSomeExternalColumnFrozen = frozenColumnsCount !== 0;
13028
- const freeAllColumns = () => {
13029
- setFrozenColumnsCount(0);
13030
- };
13031
- const freezeColumns = () => {
13032
- setFrozenColumnsCount(externalFrozenColumnsCount);
13033
- };
13034
13062
  const className = cn('-my-0.5 -mr-1 -ml-0.5 hidden !h-6 !min-h-[theme(spacing.6)] !w-6 !min-w-[theme(spacing.6)] flex-shrink-0 justify-end group-hover/header:flex', {
13035
13063
  '!flex': open
13036
13064
  });
13037
- const freezeMenuItems = [/*#__PURE__*/React__default.createElement(Menu$1.Item, {
13038
- icon: "column-freeze",
13039
- onClick: freezeColumns,
13040
- key: "_freeze-columns_"
13041
- }, texts.table2.columns.menu.freezeColumns(externalFrozenColumnsCount)), ...(isSomeExternalColumnFrozen ? [/*#__PURE__*/React__default.createElement(Menu$1.Item, {
13042
- icon: "column-unfreeze",
13043
- onClick: freeAllColumns,
13044
- key: "_unfreeze-columns_"
13045
- }, texts.table2.columns.menu.unfreezeColumns)] : [])];
13065
+ const menuItems = [];
13066
+ if (table.options.enableHiding) {
13067
+ // we do this in the next tick, otherwise the menu closes and react throws a "state update on unmounted component" error
13068
+ const handleClick = () => setTimeout(() => header.column.toggleVisibility(), 1);
13069
+ menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
13070
+ icon: "eye-off",
13071
+ onClick: handleClick
13072
+ }, texts.table2.columns.menu.hideColumn));
13073
+ }
13074
+ if (meta.enableColumnFreezing) {
13075
+ const columnPosition = columnIndex + 1;
13076
+ const externalFrozenColumnsCount = columnPosition - visibleInternalColumnsCount;
13077
+ const isSomeExternalColumnFrozen = frozenColumnsCount !== 0;
13078
+ const freeAllColumns = () => {
13079
+ setFrozenColumnsCount(0);
13080
+ };
13081
+ const freezeColumns = () => {
13082
+ setFrozenColumnsCount(externalFrozenColumnsCount);
13083
+ };
13084
+ menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
13085
+ icon: "column-freeze",
13086
+ onClick: freezeColumns,
13087
+ key: "_freeze-columns_"
13088
+ }, texts.table2.columns.menu.freezeColumns(externalFrozenColumnsCount)));
13089
+ if (isSomeExternalColumnFrozen) {
13090
+ menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
13091
+ icon: "column-unfreeze",
13092
+ onClick: freeAllColumns,
13093
+ key: "_unfreeze-columns_"
13094
+ }, texts.table2.columns.menu.unfreezeColumns));
13095
+ }
13096
+ }
13046
13097
  React__default.useEffect(() => {
13047
13098
  // Update column pinning/freezing whenever frozen columns count changes, or column order or visiblity changes
13048
13099
  const totalFrozenColumnsCount = visibleInternalColumnsCount + frozenColumnsCount;
@@ -13059,23 +13110,21 @@ const HeaderMenu = ({
13059
13110
  open: open,
13060
13111
  onChange: setOpen
13061
13112
  };
13062
- let menuComponent = null;
13063
13113
  if (menu) {
13064
- menuComponent = menu(menuProps);
13065
- if (enableColumnFreezing) {
13066
- const menuContent = React__default.Children.only(menuComponent.props.children);
13067
- const menuContentChildren = React__default.Children.toArray(menuContent.props.children);
13068
- const menuItemsWithFreezingItems = [...menuContentChildren, /*#__PURE__*/React__default.createElement(Menu$1.Separator, null), ...freezeMenuItems];
13069
- const menuContentWithFreezingItems = /*#__PURE__*/React__default.createElement(Menu$1.Content, null, menuItemsWithFreezingItems.map((item, key) => /*#__PURE__*/React__default.cloneElement(item, {
13070
- key
13071
- })));
13072
- menuComponent = /*#__PURE__*/React__default.cloneElement(menuComponent, {
13073
- children: menuContentWithFreezingItems
13074
- });
13114
+ const customMenu = menu({
13115
+ trigger: undefined
13116
+ });
13117
+ const customItems = React__default.Children.toArray(customMenu.props.children.props.children);
13118
+ if (customItems.length) {
13119
+ if (menuItems.length) {
13120
+ menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Separator, null));
13121
+ }
13122
+ menuItems.push(...customItems);
13075
13123
  }
13076
- } else if (enableColumnFreezing) {
13077
- menuComponent = /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, freezeMenuItems));
13078
13124
  }
13125
+ const menuComponent = /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, menuItems.map((item, key) => /*#__PURE__*/React__default.cloneElement(item, {
13126
+ key
13127
+ }))));
13079
13128
  // This div catches the mousedown events from menu item and menu trigger and prevents
13080
13129
  // mousedown event from bubbling up to the Header component to prevent toggling sorting
13081
13130
  return menuComponent ? /*#__PURE__*/React__default.createElement("div", {