@activecollab/components 2.0.75 → 2.0.77

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 (31) 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/Checkbox/Styles.js +4 -2
  4. package/dist/cjs/components/Checkbox/Styles.js.map +1 -1
  5. package/dist/cjs/components/Select/Option/Option.js.map +1 -1
  6. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js +11 -4
  7. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  8. package/dist/cjs/components/Select/Select.js +28 -3
  9. package/dist/cjs/components/Select/Select.js.map +1 -1
  10. package/dist/esm/components/Autocomplete/Autocomplete.d.ts +2 -0
  11. package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  12. package/dist/esm/components/Autocomplete/Autocomplete.js +5 -3
  13. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
  14. package/dist/esm/components/Checkbox/Styles.d.ts.map +1 -1
  15. package/dist/esm/components/Checkbox/Styles.js +1 -1
  16. package/dist/esm/components/Checkbox/Styles.js.map +1 -1
  17. package/dist/esm/components/Select/Option/Option.d.ts +2 -0
  18. package/dist/esm/components/Select/Option/Option.d.ts.map +1 -1
  19. package/dist/esm/components/Select/Option/Option.js.map +1 -1
  20. package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts +2 -0
  21. package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
  22. package/dist/esm/components/Select/OptionGroup/OptionGroup.js +6 -2
  23. package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  24. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  25. package/dist/esm/components/Select/Select.js +24 -3
  26. package/dist/esm/components/Select/Select.js.map +1 -1
  27. package/dist/index.js +49 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.min.js +1 -1
  30. package/dist/index.min.js.map +1 -1
  31. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -11240,11 +11240,13 @@
11240
11240
  var StyledCheckbox$1 = styled__default["default"].div.withConfig({
11241
11241
  displayName: "Styles__StyledCheckbox",
11242
11242
  componentId: "sc-y7zymm-2"
11243
- })(["height:16px;width:16px;position:relative;transition-duration:0.2s;border-radius:2px;path{transition-duration:0.2s;stroke:transparent;stroke-dashoffset:12;stroke-dasharray:12;}svg{cursor:pointer;border-radius:2px;fill:transparent;}rect{transition-duration:0.2s;", " ", "}", ":disabled ~ ", "{pointer-events:none;opacity:0.5;}", ":focus ~ ", "{rect{stroke:var(--color-secondary);stroke-width:3px;}}&:not(.c-checkbox__controlled) ", ":hover:not(:checked) ~ ", "{path{stroke:var(--color-secondary-500);stroke-dashoffset:24;}rect{stroke:var(--color-secondary);", " stroke-width:3px;}}", " ", ":checked ~ ", "{path{", "}rect{stroke:var(--color-secondary);stroke-width:19px;", "}}"], function (props) {
11243
+ })(["height:16px;width:16px;position:relative;transition-duration:0.2s;border-radius:2px;path{transition-duration:0.2s;stroke:transparent;stroke-dashoffset:12;stroke-dasharray:12;}svg{cursor:pointer;border-radius:2px;fill:transparent;}rect{transition-duration:0.2s;", " ", "}", ":disabled ~ ", "{pointer-events:none;opacity:0.5;}", ":focus ~ ", "{", "}&:not(.c-checkbox__controlled) ", ":hover:not(:checked) ~ ", "{path{stroke:var(--color-secondary-500);stroke-dashoffset:24;}rect{stroke:var(--color-secondary);", " stroke-width:3px;}}", " ", ":checked ~ ", "{path{", "}rect{stroke:var(--color-secondary);stroke-width:19px;", "}}"], function (props) {
11244
11244
  return !props.mixed && styled.css(["stroke:var(--color-theme-500);"]);
11245
11245
  }, function (props) {
11246
11246
  return props.mixed && styled.css(["stroke:transparent;"]);
11247
- }, StyledInput$3, StyledLabel, StyledInput$3, StyledLabel, StyledInput$3, StyledLabel, function (props) {
11247
+ }, StyledInput$3, StyledLabel, StyledInput$3, StyledLabel, function (props) {
11248
+ return !props.mixed && styled.css(["rect{stroke:var(--color-secondary);stroke-width:3px;}"]);
11249
+ }, StyledInput$3, StyledLabel, function (props) {
11248
11250
  return props.mixed && styled.css(["stroke:transparent;"]);
11249
11251
  }, function (props) {
11250
11252
  return props.hover && !props.mixed && styled.css(["", ":not(:checked) ~ ", "{path{stroke:var(--color-secondary-500);stroke-dashoffset:24;}rect{stroke:var(--color-secondary);stroke-width:3px;}}"], StyledInput$3, StyledLabel);
@@ -12076,7 +12078,9 @@
12076
12078
  onChange = _ref.onChange,
12077
12079
  setHover = _ref.setHover,
12078
12080
  renderOptions = _ref.renderOptions,
12079
- optionGroupClassName = _ref.optionGroupClassName;
12081
+ optionGroupClassName = _ref.optionGroupClassName,
12082
+ _ref$mixedOptions = _ref.mixedOptions,
12083
+ mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
12080
12084
  var list = React.useMemo(function () {
12081
12085
  return filter ? options.filter(function (v) {
12082
12086
  return v.name.toLowerCase().includes(filter.trim().toLowerCase());
@@ -12106,6 +12110,13 @@
12106
12110
  return option.id;
12107
12111
  });
12108
12112
  }, [options]);
12113
+ var isMixed = React.useMemo(function () {
12114
+ return (options.some(function (option) {
12115
+ return checked.includes(option.id);
12116
+ }) || mixedOptions.some(function (item) {
12117
+ return allOptionValues.includes(item);
12118
+ })) && !isAllOptionsChecked;
12119
+ }, [allOptionValues, checked, isAllOptionsChecked, mixedOptions, options]);
12109
12120
  var handleClick = React.useCallback(function (e) {
12110
12121
  e.stopPropagation();
12111
12122
  if (onChange) {
@@ -12135,9 +12146,7 @@
12135
12146
  }, name), type === "multiple" && /*#__PURE__*/React__default["default"].createElement(Checkbox, {
12136
12147
  id: `${id}`,
12137
12148
  checked: isAllOptionsChecked,
12138
- mixed: options.some(function (option) {
12139
- return checked.includes(option.id);
12140
- }) && !isAllOptionsChecked,
12149
+ mixed: isMixed,
12141
12150
  onChange: handleClick,
12142
12151
  type: "checkbox"
12143
12152
  }))), /*#__PURE__*/React__default["default"].createElement(List, null, list.map(function (item, index) {
@@ -12176,7 +12185,9 @@
12176
12185
  keepSameOptionsOrder = _ref$keepSameOptionsO === void 0 ? false : _ref$keepSameOptionsO,
12177
12186
  _ref$autoHeightMax = _ref.autoHeightMax,
12178
12187
  autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax,
12179
- clearInputOnSelect = _ref.clearInputOnSelect;
12188
+ clearInputOnSelect = _ref.clearInputOnSelect,
12189
+ _ref$mixedOptions = _ref.mixedOptions,
12190
+ mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
12180
12191
  var itemRef = React.useRef(null);
12181
12192
  var listRef = React.useRef(null);
12182
12193
  var selectedOptions = React.useMemo(function () {
@@ -12420,7 +12431,8 @@
12420
12431
  renderOptions: handleRenderOption,
12421
12432
  type: type,
12422
12433
  onChange: handleChange,
12423
- filter: filter
12434
+ filter: filter,
12435
+ mixedOptions: mixedOptions
12424
12436
  });
12425
12437
  }
12426
12438
  return /*#__PURE__*/React__default["default"].createElement(Option, {
@@ -12443,7 +12455,7 @@
12443
12455
  }
12444
12456
  })
12445
12457
  });
12446
- }, [handleClick, handleMouseEnter, hover.item, optionClassName, renderOption, filter, selectedOptions, handleHoverCallback, type, handleChange]);
12458
+ }, [handleClick, handleMouseEnter, hover.item, optionClassName, renderOption, filter, selectedOptions, handleHoverCallback, type, handleChange, mixedOptions]);
12447
12459
  var handleOnMouseLeave = React.useCallback(function () {
12448
12460
  setHover({
12449
12461
  item: undefined,
@@ -12631,6 +12643,27 @@
12631
12643
  return [...acc, ...allGroupOptions];
12632
12644
  }, []);
12633
12645
  }, [selectOptions]);
12646
+ var getMixedOptionsRecursively = React.useCallback(function (options) {
12647
+ var mixedOptions = [];
12648
+ options.forEach(function (option) {
12649
+ if (option.mixed) {
12650
+ mixedOptions.push(option);
12651
+ }
12652
+ if (isOptionGroup(option) && option.options && option.options.length > 0) {
12653
+ var nestedMixedOptions = getMixedOptionsRecursively(option.options);
12654
+ mixedOptions = mixedOptions.concat(nestedMixedOptions);
12655
+ }
12656
+ });
12657
+ return mixedOptions;
12658
+ }, []);
12659
+ var mixedOptions = React.useRef(type === "multiple" && selectOptions ? getMixedOptionsRecursively(selectOptions).map(function (item) {
12660
+ return item.id;
12661
+ }) : []);
12662
+ var removeFromMixedOptions = React.useCallback(function (idsToRemove) {
12663
+ mixedOptions.current = mixedOptions.current.filter(function (mixedOption) {
12664
+ return !idsToRemove.includes(mixedOption);
12665
+ });
12666
+ }, []);
12634
12667
  var isAllOptionsChecked = React.useMemo(function () {
12635
12668
  return allOptionValues.every(function (option) {
12636
12669
  return selectedOptions.includes(option);
@@ -12654,8 +12687,9 @@
12654
12687
  }
12655
12688
  if (selectedValue !== undefined && selectedValue !== selected && !(selectedValue instanceof Array && selectedValue.includes(undefined))) {
12656
12689
  onChange(selectedValue);
12690
+ type === "multiple" && mixedOptions.current.length && removeFromMixedOptions(selectedValue);
12657
12691
  }
12658
- }, [forceCloseMenu, selected, onSelectClose, onChange]);
12692
+ }, [forceCloseMenu, selected, onSelectClose, onChange, type, removeFromMixedOptions]);
12659
12693
  var onClose = React.useCallback(function () {
12660
12694
  setOpen(false);
12661
12695
  if (onSelectClose) {
@@ -12737,8 +12771,10 @@
12737
12771
  mixed: someOptionsChecked && !isAllOptionsChecked
12738
12772
  }, props)) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, _extends({
12739
12773
  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]);
12774
+ }, props)) : type === "multiple" ? /*#__PURE__*/React__default["default"].createElement(StyledCheckbox, _extends({
12775
+ mixed: mixedOptions.current.includes(option.id)
12776
+ }, props)) : /*#__PURE__*/React__default["default"].createElement(StyledRadioButton, props));
12777
+ }, [isAllOptionsChecked, renderOption, type, someOptionsChecked, selectedOptions]);
12742
12778
  return /*#__PURE__*/React__default["default"].createElement(Tag, props, /*#__PURE__*/React__default["default"].createElement("div", null, !disableSearch ? /*#__PURE__*/React__default["default"].createElement(StyledSelectForm, {
12743
12779
  ref: formRef
12744
12780
  }, startAdornment ? /*#__PURE__*/React__default["default"].createElement(StyledStartAdornment, null, startAdornment) : null, /*#__PURE__*/React__default["default"].createElement(StyledSelectInput, {
@@ -12752,6 +12788,7 @@
12752
12788
  handleChange: handleChange,
12753
12789
  renderOption: handleRenderOption,
12754
12790
  options: options,
12791
+ mixedOptions: mixedOptions.current,
12755
12792
  handleDefaultOptionChange: handleDefaultOptionChangeCallback,
12756
12793
  type: type,
12757
12794
  preselectDefaultValue: preselectDefaultValue,