@true-engineering/true-react-common-ui-kit 3.24.0 → 3.25.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.
@@ -1,6 +1,6 @@
1
1
  import React, { createContext, useRef, useEffect, useCallback, useState, useMemo, useContext, createElement, Fragment as Fragment$1, forwardRef, createRef, PureComponent, memo } from "react";
2
2
  import { createUseStyles } from "react-jss";
3
- import { mergeStyles, isNotEmpty, isArrayNotEmpty, isEmpty, isString, isStringNotEmpty, mergeRefs, addDataTestId, isReactNodeNotEmpty, addClickHandler, getTestId, getSelectKeyHandler, createFilter, isFunction as isFunction$1, isObject as isObject$1, getTransition, indexMap, isNumberInteger, hasDuplicates } from "@true-engineering/true-react-platform-helpers";
3
+ import { mergeStyles, isNotEmpty, isArrayNotEmpty, isEmpty, isString, isStringNotEmpty, mergeRefs, addDataTestId, isReactNodeNotEmpty, addClickHandler, getTestId, getSelectKeyHandler, getArray, createFilter, isFunction as isFunction$1, isObject as isObject$1, getTransition, applyAction, indexMap, isNumberInteger, hasDuplicates } from "@true-engineering/true-react-platform-helpers";
4
4
  import { CSSTransition } from "react-transition-group";
5
5
  import clsx from "clsx";
6
6
  import hexToRgba from "hex-to-rgba";
@@ -10619,15 +10619,11 @@ var useStyles$F = createThemedStyles("SelectList", {
10619
10619
  withListHeader: {
10620
10620
  paddingTop: 0
10621
10621
  },
10622
- listHeader: {
10623
- "& + $list": {
10624
- borderTop: [
10625
- 1,
10626
- "solid",
10627
- colors.BORDER_LIGHT
10628
- ]
10629
- }
10622
+ withListFooter: {
10623
+ paddingBottom: 0
10630
10624
  },
10625
+ listHeader: {},
10626
+ listFooter: {},
10631
10627
  list: _object_spread$K({
10632
10628
  height: "100%",
10633
10629
  maxHeight: ROW_HEIGHT$1 * 6,
@@ -10724,8 +10720,18 @@ function _object_spread_props$E(target, source) {
10724
10720
  return target;
10725
10721
  }
10726
10722
  var SelectListItem = function(param) {
10727
- var classes = param.classes, index = param.index, isSemiChecked = param.isSemiChecked, isDisabled = param.isDisabled, isActive = param.isActive, children = param.children, isFocused = param.isFocused, onOptionSelect = param.onOptionSelect, onToggleCheckbox = param.onToggleCheckbox;
10728
- var isMultiSelect = isNotEmpty(onToggleCheckbox);
10723
+ var classes = param.classes, index = param.index, isSemiChecked = param.isSemiChecked, isDisabled = param.isDisabled, isActive = param.isActive, children = param.children, isFocused = param.isFocused, isMultiSelect = param.isMultiSelect, onOptionSelect = param.onOptionSelect, onToggleCheckbox = param.onToggleCheckbox;
10724
+ var multiSelectContent = isMultiSelect && /* @__PURE__ */ jsx(Checkbox, {
10725
+ isChecked: isActive || isSemiChecked,
10726
+ isSemiChecked,
10727
+ isDisabled,
10728
+ tweakStyles: checkboxStyles$1,
10729
+ onSelect: function(param2, event) {
10730
+ var isSelected = param2.isSelected;
10731
+ return onToggleCheckbox(index, isSelected, event);
10732
+ },
10733
+ children
10734
+ });
10729
10735
  var _obj2;
10730
10736
  return /* @__PURE__ */ jsx(ScrollIntoViewIfNeeded, _object_spread_props$E(_object_spread$J({
10731
10737
  active: isFocused,
@@ -10741,17 +10747,7 @@ var SelectListItem = function(param) {
10741
10747
  onClick: !isDisabled && !isMultiSelect ? function(event) {
10742
10748
  return onOptionSelect(index, event);
10743
10749
  } : void 0,
10744
- children: isMultiSelect ? /* @__PURE__ */ jsx(Checkbox, {
10745
- value: index,
10746
- isChecked: isActive || isSemiChecked,
10747
- isSemiChecked,
10748
- isDisabled,
10749
- tweakStyles: checkboxStyles$1,
10750
- onSelect: function(v, event) {
10751
- return onToggleCheckbox(index, v.isSelected, event);
10752
- },
10753
- children
10754
- }) : children
10750
+ children: isMultiSelect ? multiSelectContent : children
10755
10751
  }));
10756
10752
  };
10757
10753
  function _define_property$K(obj, key, value) {
@@ -10807,47 +10803,39 @@ function _object_spread_props$D(target, source) {
10807
10803
  return target;
10808
10804
  }
10809
10805
  function SelectList(param) {
10810
- 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;
10806
+ 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, customListFooter = param.customListFooter, isMultiSelect = param.isMultiSelect, 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;
10811
10807
  var classes = useStyles$F({
10812
10808
  theme: tweakStyles
10813
10809
  });
10814
- var isMultiSelect = isNotEmpty(onToggleCheckbox);
10815
- var multiSelectValue = activeValue;
10816
- var _multiSelectValue_length;
10817
- var selectedOptionsCount = (_multiSelectValue_length = multiSelectValue === null || multiSelectValue === void 0 ? void 0 : multiSelectValue.length) !== null && _multiSelectValue_length !== void 0 ? _multiSelectValue_length : 0;
10818
- var activeOptionsIdMap = useMemo(function() {
10819
- var _multiSelectValue_map;
10820
- return isMultiSelect ? (_multiSelectValue_map = multiSelectValue === null || multiSelectValue === void 0 ? void 0 : multiSelectValue.map(convertValueToId)) !== null && _multiSelectValue_map !== void 0 ? _multiSelectValue_map : [] : [];
10821
- }, [
10822
- isMultiSelect,
10823
- multiSelectValue,
10824
- convertValueToId
10825
- ]);
10810
+ var isHeaderNotEmpty = isReactNodeNotEmpty(customListHeader);
10811
+ var isFooterNotEmpty = isReactNodeNotEmpty(customListFooter);
10826
10812
  var optionsDisableMap = useMemo(function() {
10827
- return options.map(function(o) {
10828
- return isOptionDisabled(o);
10829
- });
10813
+ return options.map(isOptionDisabled);
10830
10814
  }, [
10831
10815
  options,
10832
10816
  isOptionDisabled
10833
10817
  ]);
10834
10818
  var listOptions = useMemo(function() {
10835
- return options.map(function(opt, i) {
10836
- return convertValueToReactNode(opt, optionsDisableMap[i]);
10819
+ return options.map(function(option, index) {
10820
+ return convertValueToReactNode(option, optionsDisableMap[index]);
10837
10821
  });
10838
10822
  }, [
10839
10823
  options,
10840
10824
  convertValueToReactNode,
10841
10825
  optionsDisableMap
10842
10826
  ]);
10843
- var isActiveOption = function(item) {
10844
- return isMultiSelect ? activeOptionsIdMap.includes(convertValueToId(item)) : isNotEmpty(activeValue) && convertValueToId(activeValue) === convertValueToId(item);
10845
- };
10827
+ var activeOptionsIds = useMemo(function() {
10828
+ return new Set(getArray(activeValue).map(convertValueToId));
10829
+ }, [
10830
+ activeValue,
10831
+ convertValueToId
10832
+ ]);
10833
+ var _obj2;
10846
10834
  return /* @__PURE__ */ jsxs(ScrollIntoViewIfNeeded, {
10847
10835
  active: shouldScrollToList && !isMultiSelect,
10848
- className: clsx(classes.root, _define_property$K({}, classes.withListHeader, isReactNodeNotEmpty(customListHeader))),
10836
+ className: clsx(classes.root, (_obj2 = {}, _define_property$K(_obj2, classes.withListHeader, isHeaderNotEmpty), _define_property$K(_obj2, classes.withListFooter, isFooterNotEmpty), _obj2)),
10849
10837
  children: [
10850
- isReactNodeNotEmpty(customListHeader) && /* @__PURE__ */ jsx("div", {
10838
+ isHeaderNotEmpty && /* @__PURE__ */ jsx("div", {
10851
10839
  className: classes.listHeader,
10852
10840
  children: customListHeader
10853
10841
  }),
@@ -10873,9 +10861,10 @@ function SelectList(param) {
10873
10861
  isReactNodeNotEmpty(allOptionsLabel) && /* @__PURE__ */ jsx(SelectListItem, {
10874
10862
  classes,
10875
10863
  index: ALL_OPTION_INDEX,
10876
- isSemiChecked: selectedOptionsCount > 0 && !areAllOptionsSelected,
10864
+ isSemiChecked: activeOptionsIds.size > 0 && !areAllOptionsSelected,
10877
10865
  isActive: areAllOptionsSelected,
10878
10866
  isFocused: focusedIndex === ALL_OPTION_INDEX,
10867
+ isMultiSelect,
10879
10868
  onOptionSelect,
10880
10869
  onToggleCheckbox,
10881
10870
  children: allOptionsLabel
@@ -10883,7 +10872,7 @@ function SelectList(param) {
10883
10872
  listOptions.map(function(opt, i) {
10884
10873
  var optionValue = options[i];
10885
10874
  var isFocused = focusedIndex === i;
10886
- var isActive = isActiveOption(optionValue);
10875
+ var isActive = activeOptionsIds.has(convertValueToId(optionValue));
10887
10876
  var isDisabled = optionsDisableMap[i];
10888
10877
  return /* @__PURE__ */ jsx(SelectListItem, {
10889
10878
  classes,
@@ -10891,6 +10880,7 @@ function SelectList(param) {
10891
10880
  isDisabled,
10892
10881
  isActive,
10893
10882
  isFocused,
10883
+ isMultiSelect,
10894
10884
  onOptionSelect,
10895
10885
  onToggleCheckbox,
10896
10886
  children: opt
@@ -10902,7 +10892,11 @@ function SelectList(param) {
10902
10892
  })
10903
10893
  ]
10904
10894
  })
10905
- }))
10895
+ })),
10896
+ isFooterNotEmpty && /* @__PURE__ */ jsx("div", {
10897
+ className: classes.listFooter,
10898
+ children: customListFooter
10899
+ })
10906
10900
  ]
10907
10901
  });
10908
10902
  }
@@ -10921,9 +10915,6 @@ var getDefaultConvertToIdFunction = function(convertValueToString) {
10921
10915
  return isNotEmpty(value === null || value === void 0 ? void 0 : value.id) ? String(value.id) : convertValueToString(value);
10922
10916
  };
10923
10917
  };
10924
- var isMultiSelectValue = function(props, _value) {
10925
- return props.isMultiSelect === true;
10926
- };
10927
10918
  var useStyles$E = createThemedStyles("Select", {
10928
10919
  root: {
10929
10920
  width: "100%",
@@ -10943,7 +10934,7 @@ var useStyles$E = createThemedStyles("Select", {
10943
10934
  },
10944
10935
  withoutPopper: {
10945
10936
  position: "absolute",
10946
- top: "calc(100% + 6px)"
10937
+ top: "calc(var(--dropdown-offset, 100%) + 6px)"
10947
10938
  },
10948
10939
  listWrapperInBody: {
10949
10940
  minWidth: "auto",
@@ -10958,7 +10949,8 @@ var useStyles$E = createThemedStyles("Select", {
10958
10949
  height: 20,
10959
10950
  cursor: "pointer",
10960
10951
  zIndex: 1,
10961
- transition: "transform 0.1s ease"
10952
+ transition: animations.defaultTransition,
10953
+ transitionProperty: "transform"
10962
10954
  },
10963
10955
  activeArrow: {
10964
10956
  transform: "rotate(180deg)"
@@ -11317,9 +11309,13 @@ function _ts_generator$4(thisArg, body) {
11317
11309
  }
11318
11310
  }
11319
11311
  function Select(props) {
11320
- 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$b(props, [
11312
+ var _input_current;
11313
+ var options = props.options, isMultiSelect = props.isMultiSelect, value = props.value, header = props.header, footer = props.footer, 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$b(props, [
11321
11314
  "options",
11315
+ "isMultiSelect",
11322
11316
  "value",
11317
+ "header",
11318
+ "footer",
11323
11319
  "defaultOptionLabel",
11324
11320
  "allOptionsLabel",
11325
11321
  "debounceTime",
@@ -11355,7 +11351,6 @@ function Select(props) {
11355
11351
  "shouldRenderInList"
11356
11352
  ]);
11357
11353
  var hasSearchInputInList = optionsMode !== "normal" && shouldRenderSearchInputInList;
11358
- var isMultiSelect = isMultiSelectValue(props);
11359
11354
  var hasReadonlyInput = isReadonly || optionsMode === "normal" || shouldRenderSearchInputInList;
11360
11355
  var tweakInputStyles = useTweakStyles({
11361
11356
  innerStyles: getInputStyles({
@@ -11384,6 +11379,7 @@ function Select(props) {
11384
11379
  var _useState2 = _sliced_to_array$k(useState(DEFAULT_OPTION_INDEX), 2), focusedListCellIndex = _useState2[0], setFocusedListCellIndex = _useState2[1];
11385
11380
  var _useState3 = _sliced_to_array$k(useState(""), 2), searchValue = _useState3[0], setSearchValue = _useState3[1];
11386
11381
  var _useState4 = _sliced_to_array$k(useState(true), 2), shouldShowDefaultOption = _useState4[0], setShouldShowDefaultOption = _useState4[1];
11382
+ var root2 = useRef(null);
11387
11383
  var inputWrapper = useRef(null);
11388
11384
  var list = useRef(null);
11389
11385
  var input = useRef(null);
@@ -11408,8 +11404,8 @@ function Select(props) {
11408
11404
  optionsMode
11409
11405
  ]);
11410
11406
  var availableOptions = useMemo(function() {
11411
- return options.filter(function(o) {
11412
- return !isOptionDisabled(o);
11407
+ return options.filter(function(option) {
11408
+ return !isOptionDisabled(option);
11413
11409
  });
11414
11410
  }, [
11415
11411
  options,
@@ -11446,17 +11442,39 @@ function Select(props) {
11446
11442
  convertValueToId,
11447
11443
  convertValueToString
11448
11444
  ]);
11449
- var handleListClose = useCallback(function(event) {
11445
+ var getDropdownOffset = function() {
11446
+ var _input_current_parentElement2;
11447
+ if (isEmpty(input.current) || inputProps.errorPosition === "top") {
11448
+ return 0;
11449
+ }
11450
+ var _input_current_parentElement_offsetHeight;
11451
+ return (_input_current_parentElement_offsetHeight = (_input_current_parentElement2 = input.current.parentElement) === null || _input_current_parentElement2 === void 0 ? void 0 : _input_current_parentElement2.offsetHeight) !== null && _input_current_parentElement_offsetHeight !== void 0 ? _input_current_parentElement_offsetHeight : 0;
11452
+ };
11453
+ var closeList = useCallback(function() {
11450
11454
  setIsListOpen(false);
11451
11455
  setSearchValue("");
11452
11456
  setShouldShowDefaultOption(true);
11457
+ if (!(dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.shouldUsePopper)) {
11458
+ var _root_current;
11459
+ (_root_current = root2.current) === null || _root_current === void 0 ? void 0 : _root_current.style.removeProperty("--dropdown-offset");
11460
+ }
11461
+ }, [
11462
+ dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.shouldUsePopper
11463
+ ]);
11464
+ var handleListClose = useCallback(function(event) {
11465
+ closeList();
11453
11466
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
11454
11467
  }, [
11468
+ closeList,
11455
11469
  onBlur
11456
11470
  ]);
11457
11471
  var handleListOpen = function() {
11458
11472
  if (!isListOpen) {
11459
11473
  setIsListOpen(true);
11474
+ if (!(dropdownOptions === null || dropdownOptions === void 0 ? void 0 : dropdownOptions.shouldUsePopper)) {
11475
+ var _root_current;
11476
+ (_root_current = root2.current) === null || _root_current === void 0 ? void 0 : _root_current.style.setProperty("--dropdown-offset", "".concat(getDropdownOffset(), "px"));
11477
+ }
11460
11478
  }
11461
11479
  };
11462
11480
  var handleFocus = function(event) {
@@ -11479,7 +11497,7 @@ function Select(props) {
11479
11497
  handleListClose(event);
11480
11498
  }
11481
11499
  };
11482
- var handleOnChange = useCallback(function(newValue, event) {
11500
+ var handleChange = useCallback(function(newValue, event) {
11483
11501
  if (!compareValuesOnChange(value, newValue)) {
11484
11502
  onChange(newValue, event);
11485
11503
  }
@@ -11489,12 +11507,12 @@ function Select(props) {
11489
11507
  onChange
11490
11508
  ]);
11491
11509
  var handleOptionSelect = useCallback(function(index, event) {
11492
- var _input_current;
11493
- handleOnChange(index === DEFAULT_OPTION_INDEX ? void 0 : filteredOptions[index], event);
11510
+ var _input_current2;
11511
+ handleChange(index === DEFAULT_OPTION_INDEX ? void 0 : filteredOptions[index], event);
11494
11512
  handleListClose(event);
11495
- (_input_current = input.current) === null || _input_current === void 0 ? void 0 : _input_current.blur();
11513
+ (_input_current2 = input.current) === null || _input_current2 === void 0 ? void 0 : _input_current2.blur();
11496
11514
  }, [
11497
- handleOnChange,
11515
+ handleChange,
11498
11516
  handleListClose,
11499
11517
  filteredOptions
11500
11518
  ]);
@@ -11503,15 +11521,15 @@ function Select(props) {
11503
11521
  return;
11504
11522
  }
11505
11523
  if (index === DEFAULT_OPTION_INDEX || index === ALL_OPTION_INDEX && !isSelected) {
11506
- handleOnChange(void 0, event);
11524
+ handleChange(void 0, event);
11507
11525
  return;
11508
11526
  }
11509
11527
  if (index === ALL_OPTION_INDEX && isSelected) {
11510
- handleOnChange(availableOptions, event);
11528
+ handleChange(availableOptions, event);
11511
11529
  return;
11512
11530
  }
11513
11531
  var option = filteredOptions[index];
11514
- handleOnChange(isSelected ? (
11532
+ handleChange(isSelected ? (
11515
11533
  // Добавляем
11516
11534
  _to_consumable_array$7(value !== null && value !== void 0 ? value : []).concat([
11517
11535
  option
@@ -11525,7 +11543,7 @@ function Select(props) {
11525
11543
  }, [
11526
11544
  isMultiSelect,
11527
11545
  filteredOptions,
11528
- handleOnChange,
11546
+ handleChange,
11529
11547
  value,
11530
11548
  availableOptions,
11531
11549
  convertToId
@@ -11585,7 +11603,7 @@ function Select(props) {
11585
11603
  setShouldShowDefaultOption(v === "");
11586
11604
  }
11587
11605
  if (v === "" && !hasSearchInputInList) {
11588
- handleOnChange(void 0, event);
11606
+ handleChange(void 0, event);
11589
11607
  }
11590
11608
  setSearchValue(v);
11591
11609
  };
@@ -11609,7 +11627,8 @@ function Select(props) {
11609
11627
  if (indexToSelect === ALL_OPTION_INDEX) {
11610
11628
  isThisValueAlreadySelected = areAllOptionsSelected;
11611
11629
  } else {
11612
- var valueIdToSelect = convertToId(filteredOptions[indexToSelect]);
11630
+ var option = filteredOptions[indexToSelect];
11631
+ var valueIdToSelect = convertToId(option);
11613
11632
  var _value_some;
11614
11633
  isThisValueAlreadySelected = (_value_some = value === null || value === void 0 ? void 0 : value.some(function(opt) {
11615
11634
  return convertToId(opt) === valueIdToSelect;
@@ -11637,8 +11656,9 @@ function Select(props) {
11637
11656
  };
11638
11657
  var onArrowClick = function() {
11639
11658
  if (isListOpen) {
11640
- var _input_current;
11641
- (_input_current = input.current) === null || _input_current === void 0 ? void 0 : _input_current.blur();
11659
+ var _input_current2;
11660
+ (_input_current2 = input.current) === null || _input_current2 === void 0 ? void 0 : _input_current2.blur();
11661
+ closeList();
11642
11662
  } else {
11643
11663
  var _input_current1;
11644
11664
  (_input_current1 = input.current) === null || _input_current1 === void 0 ? void 0 : _input_current1.focus();
@@ -11658,10 +11678,11 @@ function Select(props) {
11658
11678
  (optionsMode === "normal" || hasEnoughSymbolsToSearch)
11659
11679
  );
11660
11680
  var _ref1 = dropdownOptions !== null && dropdownOptions !== void 0 ? dropdownOptions : {}, _ref_shouldUsePopper = _ref1.shouldUsePopper, shouldUsePopper = _ref_shouldUsePopper === void 0 ? false : _ref_shouldUsePopper, _ref_shouldRenderInBody = _ref1.shouldRenderInBody, shouldRenderInBody = _ref_shouldRenderInBody === void 0 ? false : _ref_shouldRenderInBody, _ref_shouldHideOnScroll = _ref1.shouldHideOnScroll, shouldHideOnScroll = _ref_shouldHideOnScroll === void 0 ? false : _ref_shouldHideOnScroll;
11681
+ var _input_current_parentElement;
11661
11682
  var popperData = useDropdown({
11662
11683
  isOpen,
11663
11684
  onDropdownClose: handleListClose,
11664
- referenceElement: inputWrapper.current,
11685
+ referenceElement: (_input_current_parentElement = (_input_current = input.current) === null || _input_current === void 0 ? void 0 : _input_current.parentElement) !== null && _input_current_parentElement !== void 0 ? _input_current_parentElement : inputWrapper.current,
11665
11686
  dropdownElement: list.current,
11666
11687
  options: dropdownOptions,
11667
11688
  dependenciesForPositionUpdating: [
@@ -11670,10 +11691,11 @@ function Select(props) {
11670
11691
  ]
11671
11692
  });
11672
11693
  useEffect(function() {
11673
- var _optionsIndexesForNavigation_find;
11674
- setFocusedListCellIndex((_optionsIndexesForNavigation_find = optionsIndexesForNavigation.find(function(index) {
11675
- return isNotEmpty(strValue) && isNotEmpty(filteredOptions[index]) && convertToId(filteredOptions[index]) === convertToId(strValue);
11676
- })) !== null && _optionsIndexesForNavigation_find !== void 0 ? _optionsIndexesForNavigation_find : optionsIndexesForNavigation[0]);
11694
+ var focusedCellIndex = isNotEmpty(strValue) ? optionsIndexesForNavigation.find(function(index) {
11695
+ var option = filteredOptions[index];
11696
+ return isNotEmpty(option) && convertToId(option) === convertToId(strValue);
11697
+ }) : void 0;
11698
+ setFocusedListCellIndex(focusedCellIndex !== null && focusedCellIndex !== void 0 ? focusedCellIndex : optionsIndexesForNavigation[0]);
11677
11699
  }, [
11678
11700
  strValue,
11679
11701
  filteredOptions,
@@ -11687,11 +11709,24 @@ function Select(props) {
11687
11709
  }, [
11688
11710
  isOpen
11689
11711
  ]);
11712
+ var searchInputEl = hasSearchInputInList && /* @__PURE__ */ jsx(SearchInput, _object_spread$H({
11713
+ value: searchValue,
11714
+ onChange: handleInputChange,
11715
+ tweakStyles: tweakSearchInputStyles,
11716
+ placeholder: "Поиск"
11717
+ }, searchInputProps));
11718
+ var customHeader = (isReactNodeNotEmpty(searchInputEl) || isReactNodeNotEmpty(header)) && /* @__PURE__ */ jsxs(Fragment, {
11719
+ children: [
11720
+ searchInputEl,
11721
+ header
11722
+ ]
11723
+ });
11690
11724
  var _obj2;
11691
11725
  var listEl = /* @__PURE__ */ jsx("div", _object_spread_props$C(_object_spread$H({
11692
11726
  className: clsx(classes.listWrapper, (_obj2 = {}, _define_property$J(_obj2, classes.withoutPopper, !shouldUsePopper), _define_property$J(_obj2, classes.listWrapperInBody, shouldRenderInBody), _obj2)),
11693
11727
  ref: list,
11694
11728
  style: popperData === null || popperData === void 0 ? void 0 : popperData.styles.popper,
11729
+ tabIndex: 0,
11695
11730
  onBlur: handleBlur
11696
11731
  }, popperData === null || popperData === void 0 ? void 0 : popperData.attributes.popper), {
11697
11732
  children: isOpen && /* @__PURE__ */ jsx(SelectList, {
@@ -11699,12 +11734,8 @@ function Select(props) {
11699
11734
  defaultOptionLabel: hasDefaultOption && shouldShowDefaultOption && defaultOptionLabel,
11700
11735
  allOptionsLabel: shouldShowAllOption && allOptionsLabel,
11701
11736
  areAllOptionsSelected,
11702
- customListHeader: hasSearchInputInList && /* @__PURE__ */ jsx(SearchInput, _object_spread$H({
11703
- value: searchValue,
11704
- onChange: handleInputChange,
11705
- tweakStyles: tweakSearchInputStyles,
11706
- placeholder: "Поиск"
11707
- }, searchInputProps)),
11737
+ customListHeader: customHeader,
11738
+ customListFooter: footer,
11708
11739
  noMatchesLabel,
11709
11740
  focusedIndex: focusedListCellIndex,
11710
11741
  activeValue: value,
@@ -11712,13 +11743,14 @@ function Select(props) {
11712
11743
  loadingLabel,
11713
11744
  tweakStyles: tweakSelectListStyles,
11714
11745
  testId: getTestId(testId, "list"),
11746
+ isMultiSelect,
11715
11747
  shouldScrollToList: shouldScrollToList && !shouldUsePopper && !shouldHideOnScroll,
11716
11748
  isOptionDisabled,
11717
11749
  convertValueToString,
11718
11750
  convertValueToReactNode,
11719
11751
  convertValueToId: convertToId,
11720
11752
  onOptionSelect: handleOptionSelect,
11721
- onToggleCheckbox: isMultiSelect ? handleToggleOptionCheckbox : void 0
11753
+ onToggleCheckbox: handleToggleOptionCheckbox
11722
11754
  })
11723
11755
  }));
11724
11756
  var multiSelectCounterWithIcon = shouldShowMultiSelectCounter || isNotEmpty(iconType) ? /* @__PURE__ */ jsxs(Fragment, {
@@ -11740,6 +11772,7 @@ function Select(props) {
11740
11772
  return /* @__PURE__ */ jsxs("div", {
11741
11773
  className: classes.root,
11742
11774
  onKeyDown: handleKeyDown,
11775
+ ref: root2,
11743
11776
  children: [
11744
11777
  /* @__PURE__ */ jsxs("div", {
11745
11778
  className: clsx(classes.inputWrapper, isDisabled && classes.disabled),
@@ -26092,17 +26125,8 @@ function FlexibleTableRowInner(param) {
26092
26125
  });
26093
26126
  var _useState = _sliced_to_array$8(useState(false), 2), isFocused = _useState[0], setFocused = _useState[1];
26094
26127
  var _useState1 = _sliced_to_array$8(useState(function() {
26095
- var isOpen = isFunction$1(isExpandableRowComponentInitiallyOpen) ? isExpandableRowComponentInitiallyOpen(item, index) : isExpandableRowComponentInitiallyOpen;
26096
- var component = isOpen ? expandableRowComponent === null || expandableRowComponent === void 0 ? void 0 : expandableRowComponent(item, true, function() {
26097
- setNestedComponent({
26098
- isOpen: false
26099
- });
26100
- }) : void 0;
26101
- return isReactNodeNotEmpty(component) ? {
26102
- isOpen: true,
26103
- component
26104
- } : {
26105
- isOpen: false
26128
+ return {
26129
+ isOpen: applyAction(isExpandableRowComponentInitiallyOpen, item, index)
26106
26130
  };
26107
26131
  }), 2), nestedComponent = _useState1[0], setNestedComponent = _useState1[1];
26108
26132
  var _activeRows_includes;
@@ -26124,38 +26148,40 @@ function FlexibleTableRowInner(param) {
26124
26148
  onRowHover === null || onRowHover === void 0 ? void 0 : onRowHover(void 0);
26125
26149
  setFocused(false);
26126
26150
  };
26127
- var updateNestedComponent = function(component, cellKey) {
26128
- setNestedComponent(component === void 0 ? {
26129
- isOpen: false
26130
- } : {
26131
- isOpen: true,
26132
- component,
26133
- cellKey
26134
- });
26135
- };
26136
26151
  var closeNestedComponent = function() {
26137
26152
  setNestedComponent({
26138
26153
  isOpen: false
26139
26154
  });
26140
26155
  };
26156
+ var updateNestedComponent = function(component, cellKey) {
26157
+ if (isEmpty(component)) {
26158
+ closeNestedComponent();
26159
+ } else {
26160
+ setNestedComponent({
26161
+ isOpen: true,
26162
+ component,
26163
+ cellKey
26164
+ });
26165
+ }
26166
+ };
26141
26167
  var handleRowClick = function() {
26142
26168
  if (isNotEmpty(uniqueField)) {
26143
26169
  onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(item[uniqueField]);
26144
26170
  }
26145
- if (isNotEmpty(expandableRowComponent)) {
26146
- var newNestedComponent = expandableRowComponent(item, true, closeNestedComponent);
26147
- if (!isNestedComponentExpanded && newNestedComponent !== null) {
26148
- updateNestedComponent(newNestedComponent);
26149
- return;
26150
- }
26151
- if (isNestedComponentExpanded && isEmpty(nestedComponentCellKey)) {
26152
- closeNestedComponent();
26153
- return;
26154
- }
26171
+ if (isEmpty(expandableRowComponent)) {
26172
+ return;
26173
+ }
26174
+ if (!isNestedComponentExpanded) {
26175
+ setNestedComponent({
26176
+ isOpen: true
26177
+ });
26178
+ } else if (isEmpty(nestedComponentCellKey)) {
26179
+ closeNestedComponent();
26155
26180
  }
26156
26181
  };
26157
26182
  var TableRow = renderMode === "divs" ? "div" : "tr";
26158
26183
  var TableCell = renderMode === "divs" ? "div" : "td";
26184
+ var _nestedComponent_component;
26159
26185
  var _obj2;
26160
26186
  return /* @__PURE__ */ jsxs(Fragment, {
26161
26187
  children: [
@@ -26194,7 +26220,7 @@ function FlexibleTableRowInner(param) {
26194
26220
  children: /* @__PURE__ */ jsx(TableCell, {
26195
26221
  className: classes.nestedComponent,
26196
26222
  colSpan: columns.length,
26197
- children: nestedComponent.component
26223
+ children: (_nestedComponent_component = nestedComponent.component) !== null && _nestedComponent_component !== void 0 ? _nestedComponent_component : expandableRowComponent === null || expandableRowComponent === void 0 ? void 0 : expandableRowComponent(item, true, closeNestedComponent)
26198
26224
  })
26199
26225
  })
26200
26226
  ]