@true-engineering/true-react-common-ui-kit 1.10.0 → 1.11.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.
@@ -7863,7 +7863,7 @@
7863
7863
  return obj;
7864
7864
  }
7865
7865
  function SelectList(param) {
7866
- var options = param.options, focusedIndex = param.focusedIndex, activeValue = param.activeValue, defaultOptionLabel = param.defaultOptionLabel, _param_noMatchesLabel = param.noMatchesLabel, noMatchesLabel = _param_noMatchesLabel === void 0 ? "Совпадений не найдено" : _param_noMatchesLabel, isLoading = param.isLoading, _param_loadingLabel = param.loadingLabel, loadingLabel = _param_loadingLabel === void 0 ? "Загрузка..." : _param_loadingLabel, tweakStyles = param.tweakStyles, testId = param.testId, _param_shouldScrollToList = param.shouldScrollToList, shouldScrollToList = _param_shouldScrollToList === void 0 ? true : _param_shouldScrollToList, customListHeader = param.customListHeader, isOptionDisabled = param.isOptionDisabled, allOptionsLabel = param.allOptionsLabel, onOptionSelect = param.onOptionSelect, onToggleCheckbox = param.onToggleCheckbox, convertValueToString = param.convertValueToString, _param_convertValueToReactNode = param.convertValueToReactNode, convertValueToReactNode = _param_convertValueToReactNode === void 0 ? convertValueToString : _param_convertValueToReactNode, convertValueToId = param.convertValueToId;
7866
+ var options = param.options, focusedIndex = param.focusedIndex, activeValue = param.activeValue, defaultOptionLabel = param.defaultOptionLabel, _param_noMatchesLabel = param.noMatchesLabel, noMatchesLabel = _param_noMatchesLabel === void 0 ? "Совпадений не найдено" : _param_noMatchesLabel, isLoading = param.isLoading, _param_loadingLabel = param.loadingLabel, loadingLabel = _param_loadingLabel === void 0 ? "Загрузка..." : _param_loadingLabel, tweakStyles = param.tweakStyles, testId = param.testId, _param_shouldScrollToList = param.shouldScrollToList, shouldScrollToList = _param_shouldScrollToList === void 0 ? true : _param_shouldScrollToList, areAllOptionsSelected = param.areAllOptionsSelected, customListHeader = param.customListHeader, isOptionDisabled = param.isOptionDisabled, allOptionsLabel = param.allOptionsLabel, onOptionSelect = param.onOptionSelect, onToggleCheckbox = param.onToggleCheckbox, convertValueToString = param.convertValueToString, _param_convertValueToReactNode = param.convertValueToReactNode, convertValueToReactNode = _param_convertValueToReactNode === void 0 ? convertValueToString : _param_convertValueToReactNode, convertValueToId = param.convertValueToId;
7867
7867
  var classes = useTheme("SelectList", styles$v, tweakStyles).classes;
7868
7868
  var isMultiSelect = isNotEmpty(onToggleCheckbox);
7869
7869
  var multiSelectValue = activeValue;
@@ -7927,8 +7927,8 @@
7927
7927
  isNotEmpty(allOptionsLabel) && /* @__PURE__ */ jsx(SelectListItem, {
7928
7928
  classes,
7929
7929
  index: ALL_OPTION_INDEX,
7930
- isSemiChecked: selectedOptionsCount > 0 && selectedOptionsCount < options.length,
7931
- isActive: selectedOptionsCount === options.length,
7930
+ isSemiChecked: selectedOptionsCount > 0 && !areAllOptionsSelected,
7931
+ isActive: areAllOptionsSelected,
7932
7932
  isFocused: focusedIndex === ALL_OPTION_INDEX,
7933
7933
  onOptionSelect,
7934
7934
  onToggleCheckbox,
@@ -8022,25 +8022,19 @@
8022
8022
  cursor: "default"
8023
8023
  }
8024
8024
  },
8025
+ counter: {
8026
+ "&:not(:last-child)": {
8027
+ paddingRight: 8
8028
+ }
8029
+ },
8030
+ icon: {
8031
+ width: 16,
8032
+ height: 16
8033
+ },
8025
8034
  tweakInput: {
8026
8035
  input: {
8027
8036
  paddingRight: 32
8028
8037
  },
8029
- withUnits: {
8030
- paddingRight: 8
8031
- },
8032
- unitsWrapper: {
8033
- position: "unset",
8034
- padding: [
8035
- 0,
8036
- 32,
8037
- 0,
8038
- 0
8039
- ]
8040
- },
8041
- fakeValue: {
8042
- display: "none"
8043
- },
8044
8038
  disabled: {
8045
8039
  "& $input": {
8046
8040
  cursor: "default"
@@ -8502,7 +8496,7 @@
8502
8496
  }
8503
8497
  };
8504
8498
  function Select(props) {
8505
- var options = props.options, value = props.value, defaultOptionLabel = props.defaultOptionLabel, allOptionsLabel = props.allOptionsLabel, _props_debounceTime = props.debounceTime, debounceTime = _props_debounceTime === void 0 ? 400 : _props_debounceTime, _props_optionsMode = props.optionsMode, optionsMode = _props_optionsMode === void 0 ? "normal" : _props_optionsMode, noMatchesLabel = props.noMatchesLabel, loadingLabel = props.loadingLabel, tweakStyles = props.tweakStyles, testId = props.testId, isReadonly = props.isReadonly, isDisabled = props.isDisabled, dropdownOptions = props.dropdownOptions, _props_minSymbolsCountToOpenList = props.minSymbolsCountToOpenList, minSymbolsCountToOpenList = _props_minSymbolsCountToOpenList === void 0 ? 0 : _props_minSymbolsCountToOpenList, _props_dropdownIcon = props.dropdownIcon, dropdownIcon = _props_dropdownIcon === void 0 ? "chevron-down" : _props_dropdownIcon, _props_shouldScrollToList = props.shouldScrollToList, shouldScrollToList = _props_shouldScrollToList === void 0 ? true : _props_shouldScrollToList, searchInput = props.searchInput, units = props.units, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onType = props.onType, onOpen = props.onOpen, _props_isOptionDisabled = props.isOptionDisabled, isOptionDisabled = _props_isOptionDisabled === void 0 ? defaultIsOptionDisabled : _props_isOptionDisabled, _props_compareValuesOnChange = props.compareValuesOnChange, compareValuesOnChange = _props_compareValuesOnChange === void 0 ? defaultCompareFunction : _props_compareValuesOnChange, _props_convertValueToString = props.convertValueToString, convertValueToString = _props_convertValueToString === void 0 ? defaultConvertFunction$2 : _props_convertValueToString, convertValueToId = props.convertValueToId, convertValueToReactNode = props.convertValueToReactNode, optionsFilter = props.optionsFilter, inputProps = _object_without_properties$5(props, [
8499
+ var options = props.options, value = props.value, defaultOptionLabel = props.defaultOptionLabel, allOptionsLabel = props.allOptionsLabel, _props_debounceTime = props.debounceTime, debounceTime = _props_debounceTime === void 0 ? 400 : _props_debounceTime, _props_optionsMode = props.optionsMode, optionsMode = _props_optionsMode === void 0 ? "normal" : _props_optionsMode, noMatchesLabel = props.noMatchesLabel, loadingLabel = props.loadingLabel, tweakStyles = props.tweakStyles, testId = props.testId, isReadonly = props.isReadonly, isDisabled = props.isDisabled, dropdownOptions = props.dropdownOptions, _props_minSymbolsCountToOpenList = props.minSymbolsCountToOpenList, minSymbolsCountToOpenList = _props_minSymbolsCountToOpenList === void 0 ? 0 : _props_minSymbolsCountToOpenList, _props_dropdownIcon = props.dropdownIcon, dropdownIcon = _props_dropdownIcon === void 0 ? "chevron-down" : _props_dropdownIcon, _props_shouldScrollToList = props.shouldScrollToList, shouldScrollToList = _props_shouldScrollToList === void 0 ? true : _props_shouldScrollToList, searchInput = props.searchInput, iconType = props.iconType, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onType = props.onType, onOpen = props.onOpen, _props_isOptionDisabled = props.isOptionDisabled, isOptionDisabled = _props_isOptionDisabled === void 0 ? defaultIsOptionDisabled : _props_isOptionDisabled, _props_compareValuesOnChange = props.compareValuesOnChange, compareValuesOnChange = _props_compareValuesOnChange === void 0 ? defaultCompareFunction : _props_compareValuesOnChange, _props_convertValueToString = props.convertValueToString, convertValueToString = _props_convertValueToString === void 0 ? defaultConvertFunction$2 : _props_convertValueToString, convertValueToId = props.convertValueToId, convertValueToReactNode = props.convertValueToReactNode, optionsFilter = props.optionsFilter, inputProps = _object_without_properties$5(props, [
8506
8500
  "options",
8507
8501
  "value",
8508
8502
  "defaultOptionLabel",
@@ -8520,7 +8514,7 @@
8520
8514
  "dropdownIcon",
8521
8515
  "shouldScrollToList",
8522
8516
  "searchInput",
8523
- "units",
8517
+ "iconType",
8524
8518
  "onChange",
8525
8519
  "onFocus",
8526
8520
  "onBlur",
@@ -8567,6 +8561,16 @@
8567
8561
  searchValue,
8568
8562
  optionsMode
8569
8563
  ]);
8564
+ var availableOptions = React.useMemo(function() {
8565
+ return options.filter(function(o) {
8566
+ return !isOptionDisabled(o);
8567
+ });
8568
+ }, [
8569
+ options,
8570
+ isOptionDisabled
8571
+ ]);
8572
+ var areAllOptionsSelected = isMultiSelect && (value === null || value === void 0 ? void 0 : value.length) === availableOptions.length;
8573
+ var shouldShowMultiSelectCounter = isMultiSelect && isNotEmpty(value) && value.length > 1 && !areAllOptionsSelected;
8570
8574
  var optionsIndexesForNavigation = React.useMemo(function() {
8571
8575
  var result = [];
8572
8576
  if (shouldShowDefaultOption && hasDefaultOption) {
@@ -8585,7 +8589,7 @@
8585
8589
  filteredOptions
8586
8590
  ]);
8587
8591
  var stringValue = isNotEmpty(strValue) ? convertValueToString(strValue) : void 0;
8588
- var showedStringValue = isMultiSelect && (value === null || value === void 0 ? void 0 : value.length) === filteredOptions.length && isNotEmpty(allOptionsLabel) ? allOptionsLabel : stringValue;
8592
+ var showedStringValue = areAllOptionsSelected && isNotEmpty(allOptionsLabel) ? allOptionsLabel : stringValue;
8589
8593
  var convertToId = React.useCallback(function(v) {
8590
8594
  return (convertValueToId !== null && convertValueToId !== void 0 ? convertValueToId : getDefaultConvertToIdFunction(convertValueToString))(v);
8591
8595
  }, [
@@ -8653,7 +8657,7 @@
8653
8657
  return;
8654
8658
  }
8655
8659
  if (index === ALL_OPTION_INDEX && isSelected) {
8656
- handleOnChange(options);
8660
+ handleOnChange(availableOptions);
8657
8661
  return;
8658
8662
  }
8659
8663
  var option = filteredOptions[index];
@@ -8746,7 +8750,7 @@
8746
8750
  if (isMultiSelect) {
8747
8751
  var isThisValueAlreadySelected;
8748
8752
  if (indexToSelect === ALL_OPTION_INDEX) {
8749
- isThisValueAlreadySelected = (value === null || value === void 0 ? void 0 : value.length) === options.length;
8753
+ isThisValueAlreadySelected = areAllOptionsSelected;
8750
8754
  } else {
8751
8755
  var valueIdToSelect = convertToId(filteredOptions[indexToSelect]);
8752
8756
  var _value_some;
@@ -8802,6 +8806,10 @@
8802
8806
  input: {
8803
8807
  cursor: "pointer"
8804
8808
  }
8809
+ }), _object_spread$u({}, isMultiSelect && {
8810
+ inputIcon: {
8811
+ width: "auto"
8812
+ }
8805
8813
  }), tweakStyles === null || tweakStyles === void 0 ? void 0 : tweakStyles.tweakInput);
8806
8814
  }, [
8807
8815
  tweakStyles === null || tweakStyles === void 0 ? void 0 : tweakStyles.tweakInput,
@@ -8843,6 +8851,7 @@
8843
8851
  options: filteredOptions,
8844
8852
  defaultOptionLabel: hasDefaultOption && shouldShowDefaultOption ? defaultOptionLabel : void 0,
8845
8853
  allOptionsLabel: shouldShowAllOption ? allOptionsLabel : void 0,
8854
+ areAllOptionsSelected,
8846
8855
  customListHeader: hasSearchInputInList ? /* @__PURE__ */ jsx(SearchInput, _object_spread$u({
8847
8856
  value: searchValue,
8848
8857
  onChange: handleInputChange,
@@ -8865,6 +8874,22 @@
8865
8874
  onToggleCheckbox: isMultiSelect ? handleToggleOptionCheckbox : void 0
8866
8875
  })
8867
8876
  }));
8877
+ var multiSelectCounterWithIcon = shouldShowMultiSelectCounter || isNotEmpty(iconType) ? /* @__PURE__ */ jsxs(Fragment, {
8878
+ children: [
8879
+ shouldShowMultiSelectCounter && /* @__PURE__ */ jsxs("div", {
8880
+ className: classes.counter,
8881
+ children: [
8882
+ "(+",
8883
+ value.length - 1,
8884
+ ")"
8885
+ ]
8886
+ }),
8887
+ isNotEmpty(iconType) && /* @__PURE__ */ jsx("div", {
8888
+ className: classes.icon,
8889
+ children: renderIcon(iconType)
8890
+ })
8891
+ ]
8892
+ }) : void 0;
8868
8893
  return /* @__PURE__ */ jsxs("div", {
8869
8894
  className: classes.root,
8870
8895
  onKeyDown: handleKeyDown,
@@ -8886,7 +8911,7 @@
8886
8911
  isLoading: areOptionsLoading,
8887
8912
  tweakStyles: tweakInputStyles,
8888
8913
  testId,
8889
- units: isMultiSelect && isNotEmpty(value) && value.length > 1 && value.length !== options.length ? "(+".concat(value.length - 1, ")") : units
8914
+ iconType: isMultiSelect ? multiSelectCounterWithIcon : iconType
8890
8915
  }, inputProps)),
8891
8916
  /* @__PURE__ */ jsx("div", {
8892
8917
  onMouseDown: function(event) {