@economic/taco 1.36.0 → 1.37.0

Sign up to get free protection for your applications and to get access to all the features.
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", {