@activecollab/components 2.0.75 → 2.0.76

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 (26) hide show
  1. package/dist/cjs/components/Autocomplete/Autocomplete.js +6 -3
  2. package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/dist/cjs/components/Select/Option/Option.js.map +1 -1
  4. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js +11 -4
  5. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  6. package/dist/cjs/components/Select/Select.js +28 -3
  7. package/dist/cjs/components/Select/Select.js.map +1 -1
  8. package/dist/esm/components/Autocomplete/Autocomplete.d.ts +2 -0
  9. package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  10. package/dist/esm/components/Autocomplete/Autocomplete.js +5 -3
  11. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
  12. package/dist/esm/components/Select/Option/Option.d.ts +2 -0
  13. package/dist/esm/components/Select/Option/Option.d.ts.map +1 -1
  14. package/dist/esm/components/Select/Option/Option.js.map +1 -1
  15. package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts +2 -0
  16. package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
  17. package/dist/esm/components/Select/OptionGroup/OptionGroup.js +6 -2
  18. package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  19. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  20. package/dist/esm/components/Select/Select.js +24 -3
  21. package/dist/esm/components/Select/Select.js.map +1 -1
  22. package/dist/index.js +45 -10
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.min.js +1 -1
  25. package/dist/index.min.js.map +1 -1
  26. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -12076,7 +12076,9 @@
12076
12076
  onChange = _ref.onChange,
12077
12077
  setHover = _ref.setHover,
12078
12078
  renderOptions = _ref.renderOptions,
12079
- optionGroupClassName = _ref.optionGroupClassName;
12079
+ optionGroupClassName = _ref.optionGroupClassName,
12080
+ _ref$mixedOptions = _ref.mixedOptions,
12081
+ mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
12080
12082
  var list = React.useMemo(function () {
12081
12083
  return filter ? options.filter(function (v) {
12082
12084
  return v.name.toLowerCase().includes(filter.trim().toLowerCase());
@@ -12106,6 +12108,13 @@
12106
12108
  return option.id;
12107
12109
  });
12108
12110
  }, [options]);
12111
+ var isMixed = React.useMemo(function () {
12112
+ return (options.some(function (option) {
12113
+ return checked.includes(option.id);
12114
+ }) || mixedOptions.some(function (item) {
12115
+ return allOptionValues.includes(item);
12116
+ })) && !isAllOptionsChecked;
12117
+ }, [allOptionValues, checked, isAllOptionsChecked, mixedOptions, options]);
12109
12118
  var handleClick = React.useCallback(function (e) {
12110
12119
  e.stopPropagation();
12111
12120
  if (onChange) {
@@ -12135,9 +12144,7 @@
12135
12144
  }, name), type === "multiple" && /*#__PURE__*/React__default["default"].createElement(Checkbox, {
12136
12145
  id: `${id}`,
12137
12146
  checked: isAllOptionsChecked,
12138
- mixed: options.some(function (option) {
12139
- return checked.includes(option.id);
12140
- }) && !isAllOptionsChecked,
12147
+ mixed: isMixed,
12141
12148
  onChange: handleClick,
12142
12149
  type: "checkbox"
12143
12150
  }))), /*#__PURE__*/React__default["default"].createElement(List, null, list.map(function (item, index) {
@@ -12176,7 +12183,9 @@
12176
12183
  keepSameOptionsOrder = _ref$keepSameOptionsO === void 0 ? false : _ref$keepSameOptionsO,
12177
12184
  _ref$autoHeightMax = _ref.autoHeightMax,
12178
12185
  autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax,
12179
- clearInputOnSelect = _ref.clearInputOnSelect;
12186
+ clearInputOnSelect = _ref.clearInputOnSelect,
12187
+ _ref$mixedOptions = _ref.mixedOptions,
12188
+ mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
12180
12189
  var itemRef = React.useRef(null);
12181
12190
  var listRef = React.useRef(null);
12182
12191
  var selectedOptions = React.useMemo(function () {
@@ -12420,7 +12429,8 @@
12420
12429
  renderOptions: handleRenderOption,
12421
12430
  type: type,
12422
12431
  onChange: handleChange,
12423
- filter: filter
12432
+ filter: filter,
12433
+ mixedOptions: mixedOptions
12424
12434
  });
12425
12435
  }
12426
12436
  return /*#__PURE__*/React__default["default"].createElement(Option, {
@@ -12443,7 +12453,7 @@
12443
12453
  }
12444
12454
  })
12445
12455
  });
12446
- }, [handleClick, handleMouseEnter, hover.item, optionClassName, renderOption, filter, selectedOptions, handleHoverCallback, type, handleChange]);
12456
+ }, [handleClick, handleMouseEnter, hover.item, optionClassName, renderOption, filter, selectedOptions, handleHoverCallback, type, handleChange, mixedOptions]);
12447
12457
  var handleOnMouseLeave = React.useCallback(function () {
12448
12458
  setHover({
12449
12459
  item: undefined,
@@ -12631,6 +12641,27 @@
12631
12641
  return [...acc, ...allGroupOptions];
12632
12642
  }, []);
12633
12643
  }, [selectOptions]);
12644
+ var getMixedOptionsRecursively = React.useCallback(function (options) {
12645
+ var mixedOptions = [];
12646
+ options.forEach(function (option) {
12647
+ if (option.mixed) {
12648
+ mixedOptions.push(option);
12649
+ }
12650
+ if (isOptionGroup(option) && option.options && option.options.length > 0) {
12651
+ var nestedMixedOptions = getMixedOptionsRecursively(option.options);
12652
+ mixedOptions = mixedOptions.concat(nestedMixedOptions);
12653
+ }
12654
+ });
12655
+ return mixedOptions;
12656
+ }, []);
12657
+ var mixedOptions = React.useRef(type === "multiple" && selectOptions ? getMixedOptionsRecursively(selectOptions).map(function (item) {
12658
+ return item.id;
12659
+ }) : []);
12660
+ var removeFromMixedOptions = React.useCallback(function (idsToRemove) {
12661
+ mixedOptions.current = mixedOptions.current.filter(function (mixedOption) {
12662
+ return !idsToRemove.includes(mixedOption);
12663
+ });
12664
+ }, []);
12634
12665
  var isAllOptionsChecked = React.useMemo(function () {
12635
12666
  return allOptionValues.every(function (option) {
12636
12667
  return selectedOptions.includes(option);
@@ -12654,8 +12685,9 @@
12654
12685
  }
12655
12686
  if (selectedValue !== undefined && selectedValue !== selected && !(selectedValue instanceof Array && selectedValue.includes(undefined))) {
12656
12687
  onChange(selectedValue);
12688
+ type === "multiple" && mixedOptions.current.length && removeFromMixedOptions(selectedValue);
12657
12689
  }
12658
- }, [forceCloseMenu, selected, onSelectClose, onChange]);
12690
+ }, [forceCloseMenu, selected, onSelectClose, onChange, type, removeFromMixedOptions]);
12659
12691
  var onClose = React.useCallback(function () {
12660
12692
  setOpen(false);
12661
12693
  if (onSelectClose) {
@@ -12737,8 +12769,10 @@
12737
12769
  mixed: someOptionsChecked && !isAllOptionsChecked
12738
12770
  }, props)) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, _extends({
12739
12771
  checked: selectedOptions.length < 1 || !selectedOptions[0]
12740
- }, props)) : type === "multiple" ? /*#__PURE__*/React__default["default"].createElement(StyledCheckbox, props) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, props));
12741
- }, [isAllOptionsChecked, renderOption, selectedOptions, type, someOptionsChecked]);
12772
+ }, props)) : type === "multiple" ? /*#__PURE__*/React__default["default"].createElement(StyledCheckbox, _extends({
12773
+ mixed: mixedOptions.current.includes(option.id)
12774
+ }, props)) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, props));
12775
+ }, [isAllOptionsChecked, renderOption, type, someOptionsChecked, selectedOptions]);
12742
12776
  return /*#__PURE__*/React__default["default"].createElement(Tag, props, /*#__PURE__*/React__default["default"].createElement("div", null, !disableSearch ? /*#__PURE__*/React__default["default"].createElement(StyledSelectForm, {
12743
12777
  ref: formRef
12744
12778
  }, startAdornment ? /*#__PURE__*/React__default["default"].createElement(StyledStartAdornment, null, startAdornment) : null, /*#__PURE__*/React__default["default"].createElement(StyledSelectInput, {
@@ -12752,6 +12786,7 @@
12752
12786
  handleChange: handleChange,
12753
12787
  renderOption: handleRenderOption,
12754
12788
  options: options,
12789
+ mixedOptions: mixedOptions.current,
12755
12790
  handleDefaultOptionChange: handleDefaultOptionChangeCallback,
12756
12791
  type: type,
12757
12792
  preselectDefaultValue: preselectDefaultValue,