@alfalab/core-components-select 17.4.4 → 17.5.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.
Files changed (166) hide show
  1. package/Component.responsive.js +1 -0
  2. package/components/arrow/Component.js +1 -1
  3. package/components/arrow/index.css +3 -3
  4. package/components/base-checkmark/Component.js +1 -1
  5. package/components/base-checkmark/index.css +4 -4
  6. package/components/base-option/Component.js +1 -1
  7. package/components/base-option/index.css +15 -15
  8. package/components/base-select/Component.js +3 -3
  9. package/components/base-select/index.css +11 -11
  10. package/components/base-select/mobile.css +12 -12
  11. package/components/checkmark/Component.js +1 -1
  12. package/components/checkmark/index.css +12 -12
  13. package/components/checkmark-mobile/Component.js +1 -1
  14. package/components/checkmark-mobile/index.css +6 -6
  15. package/components/field/Component.js +1 -1
  16. package/components/field/index.css +12 -12
  17. package/components/footer/Component.js +1 -1
  18. package/components/footer/index.css +5 -5
  19. package/components/optgroup/Component.js +1 -1
  20. package/components/optgroup/index.css +6 -6
  21. package/components/option/Component.js +1 -1
  22. package/components/option/index.css +19 -19
  23. package/components/options-list/Component.js +12 -3
  24. package/components/options-list/index.css +10 -10
  25. package/components/search/Component.js +1 -1
  26. package/components/search/index.css +2 -2
  27. package/components/virtual-options-list/Component.js +16 -4
  28. package/components/virtual-options-list/index.css +17 -15
  29. package/cssm/Component.responsive.js +1 -0
  30. package/cssm/components/base-select/Component.js +1 -1
  31. package/cssm/components/checkmark/index.module.css +2 -2
  32. package/cssm/components/options-list/Component.js +11 -2
  33. package/cssm/components/virtual-options-list/Component.js +15 -3
  34. package/cssm/components/virtual-options-list/index.module.css +2 -0
  35. package/cssm/{hook-aae7b381.d.ts → hook-546b2479.d.ts} +1 -0
  36. package/cssm/{hook-aae7b381.js → hook-546b2479.js} +12 -4
  37. package/{hook-d4f77aed.d.ts → cssm/hook-64a8061f.d.ts} +7 -2
  38. package/cssm/mobile/Component.mobile.js +1 -1
  39. package/cssm/presets/index.d.ts +1 -1
  40. package/cssm/presets/index.js +1 -1
  41. package/cssm/presets/useSelectWithApply/hook.js +2 -1
  42. package/cssm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  43. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  44. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  45. package/cssm/shared/index.js +1 -1
  46. package/cssm/typings.d.ts +29 -1
  47. package/esm/Component.responsive.js +1 -0
  48. package/esm/components/arrow/Component.js +1 -1
  49. package/esm/components/arrow/index.css +3 -3
  50. package/esm/components/base-checkmark/Component.js +1 -1
  51. package/esm/components/base-checkmark/index.css +4 -4
  52. package/esm/components/base-option/Component.js +1 -1
  53. package/esm/components/base-option/index.css +15 -15
  54. package/esm/components/base-select/Component.js +3 -3
  55. package/esm/components/base-select/index.css +11 -11
  56. package/esm/components/base-select/mobile.css +12 -12
  57. package/esm/components/checkmark/Component.js +1 -1
  58. package/esm/components/checkmark/index.css +12 -12
  59. package/esm/components/checkmark-mobile/Component.js +1 -1
  60. package/esm/components/checkmark-mobile/index.css +6 -6
  61. package/esm/components/field/Component.js +1 -1
  62. package/esm/components/field/index.css +12 -12
  63. package/esm/components/footer/Component.js +1 -1
  64. package/esm/components/footer/index.css +5 -5
  65. package/esm/components/optgroup/Component.js +1 -1
  66. package/esm/components/optgroup/index.css +6 -6
  67. package/esm/components/option/Component.js +1 -1
  68. package/esm/components/option/index.css +19 -19
  69. package/esm/components/options-list/Component.js +12 -3
  70. package/esm/components/options-list/index.css +10 -10
  71. package/esm/components/search/Component.js +1 -1
  72. package/esm/components/search/index.css +2 -2
  73. package/esm/components/virtual-options-list/Component.js +16 -4
  74. package/esm/components/virtual-options-list/index.css +17 -15
  75. package/{hook-3bb5c3ed.d.ts → esm/hook-5906d9e6.d.ts} +1 -0
  76. package/esm/{hook-cf6ae3b4.js → hook-5906d9e6.js} +11 -4
  77. package/{modern/hook-d4f77aed.d.ts → esm/hook-64a8061f.d.ts} +7 -2
  78. package/esm/mobile/Component.mobile.js +1 -1
  79. package/esm/presets/index.d.ts +1 -1
  80. package/esm/presets/index.js +1 -1
  81. package/esm/presets/useSelectWithApply/hook.js +2 -1
  82. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  83. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  84. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  85. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  86. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  87. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  88. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  89. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  90. package/esm/presets/useSelectWithLoading/index.css +2 -2
  91. package/esm/shared/index.js +1 -1
  92. package/esm/typings.d.ts +29 -1
  93. package/{modern/hook-ea85cac7.d.ts → hook-598322df.d.ts} +1 -0
  94. package/{hook-3bb5c3ed.js → hook-598322df.js} +12 -4
  95. package/{cssm/hook-d4f77aed.d.ts → hook-64a8061f.d.ts} +7 -2
  96. package/mobile/Component.mobile.js +1 -1
  97. package/modern/Component.responsive.js +1 -0
  98. package/modern/components/arrow/Component.js +1 -1
  99. package/modern/components/arrow/index.css +3 -3
  100. package/modern/components/base-checkmark/Component.js +1 -1
  101. package/modern/components/base-checkmark/index.css +4 -4
  102. package/modern/components/base-option/Component.js +1 -1
  103. package/modern/components/base-option/index.css +15 -15
  104. package/modern/components/base-select/Component.js +3 -3
  105. package/modern/components/base-select/index.css +11 -11
  106. package/modern/components/base-select/mobile.css +12 -12
  107. package/modern/components/checkmark/Component.js +1 -1
  108. package/modern/components/checkmark/index.css +12 -12
  109. package/modern/components/checkmark-mobile/Component.js +1 -1
  110. package/modern/components/checkmark-mobile/index.css +6 -6
  111. package/modern/components/field/Component.js +1 -1
  112. package/modern/components/field/index.css +12 -12
  113. package/modern/components/footer/Component.js +1 -1
  114. package/modern/components/footer/index.css +5 -5
  115. package/modern/components/optgroup/Component.js +1 -1
  116. package/modern/components/optgroup/index.css +6 -6
  117. package/modern/components/option/Component.js +1 -1
  118. package/modern/components/option/index.css +19 -19
  119. package/modern/components/options-list/Component.js +9 -3
  120. package/modern/components/options-list/index.css +10 -10
  121. package/modern/components/search/Component.js +1 -1
  122. package/modern/components/search/index.css +2 -2
  123. package/modern/components/virtual-options-list/Component.js +13 -4
  124. package/modern/components/virtual-options-list/index.css +17 -15
  125. package/{esm/hook-cf6ae3b4.d.ts → modern/hook-241d62bb.d.ts} +1 -0
  126. package/modern/{hook-ea85cac7.js → hook-241d62bb.js} +11 -3
  127. package/{esm/hook-d4f77aed.d.ts → modern/hook-64a8061f.d.ts} +7 -2
  128. package/modern/mobile/Component.mobile.js +1 -1
  129. package/modern/presets/index.d.ts +1 -1
  130. package/modern/presets/index.js +1 -1
  131. package/modern/presets/useSelectWithApply/hook.js +2 -1
  132. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  133. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  134. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  135. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  136. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  137. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  138. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  139. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  140. package/modern/presets/useSelectWithLoading/index.css +2 -2
  141. package/modern/shared/index.js +1 -1
  142. package/modern/typings.d.ts +29 -1
  143. package/package.json +11 -11
  144. package/presets/index.d.ts +1 -1
  145. package/presets/index.js +1 -1
  146. package/presets/useSelectWithApply/hook.js +2 -1
  147. package/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  148. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  149. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  150. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  151. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  152. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  153. package/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  154. package/presets/useSelectWithLoading/hook.js +1 -1
  155. package/presets/useSelectWithLoading/index.css +2 -2
  156. package/shared/index.js +1 -1
  157. package/src/Component.responsive.tsx +2 -0
  158. package/src/components/base-select/Component.tsx +2 -0
  159. package/src/components/options-list/Component.tsx +32 -10
  160. package/src/components/virtual-options-list/Component.tsx +34 -8
  161. package/src/components/virtual-options-list/index.module.css +2 -0
  162. package/src/presets/useSelectWithApply/hook.tsx +6 -1
  163. package/src/presets/useSelectWithApply/options-list-with-apply/Component.tsx +11 -0
  164. package/src/typings.ts +36 -0
  165. package/src/vars.css +1 -1
  166. package/typings.d.ts +29 -1
@@ -1,4 +1,4 @@
1
- /* hash: 1hu7n */
1
+ /* hash: iyeme */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-primary: #d5d6dc;
@@ -53,7 +53,7 @@
53
53
  /* checkmark */
54
54
 
55
55
  /* optgroup */
56
- } .select__option_6do03 {
56
+ } .select__option_1b9hf {
57
57
  font-size: 16px;
58
58
  line-height: 20px;
59
59
  font-weight: 400;
@@ -68,10 +68,10 @@
68
68
  box-sizing: border-box;
69
69
  position: relative;
70
70
  cursor: pointer
71
- } .select__option_6do03:not(.select__disabled_6do03):active {
71
+ } .select__option_1b9hf:not(.select__disabled_1b9hf):active {
72
72
  background: var(--select-option-active-background);
73
73
  color: var(--select-option-active-color);
74
- } .select__option_6do03:before {
74
+ } .select__option_1b9hf:before {
75
75
  content: '';
76
76
  position: absolute;
77
77
  left: var(--select-option-left-padding);
@@ -81,42 +81,42 @@
81
81
  background: var(--select-option-divider-background);
82
82
  display: var(--select-option-divider-display);
83
83
  transition: opacity 0.2s ease;
84
- } .select__option_6do03:first-child:before {
84
+ } .select__option_1b9hf:first-child:before {
85
85
  display: none;
86
- } .select__size-48_6do03 {
86
+ } .select__size-48_1b9hf {
87
87
  min-height: var(--size-s-height);
88
- } .select__size-56_6do03 {
88
+ } .select__size-56_1b9hf {
89
89
  min-height: var(--size-m-height);
90
- } .select__size-64_6do03 {
90
+ } .select__size-64_1b9hf {
91
91
  min-height: var(--size-l-height);
92
- } .select__size-72_6do03 {
92
+ } .select__size-72_1b9hf {
93
93
  min-height: var(--size-xl-height);
94
- } .select__size-64_6do03,
95
- .select__size-72_6do03 {
94
+ } .select__size-64_1b9hf,
95
+ .select__size-72_1b9hf {
96
96
  padding-left: var(--select-option-l-left-padding);
97
97
  padding-right: var(--select-option-l-right-padding)
98
- } .select__size-64_6do03:before, .select__size-72_6do03:before {
98
+ } .select__size-64_1b9hf:before, .select__size-72_1b9hf:before {
99
99
  left: var(--select-option-l-left-padding);
100
100
  right: var(--select-option-l-right-padding);
101
- } .select__selected_6do03 {
101
+ } .select__selected_1b9hf {
102
102
  background: var(--select-option-selected-background);
103
103
  color: var(--select-option-selected-color);
104
104
  cursor: default;
105
- } .select__highlighted_6do03 {
105
+ } .select__highlighted_1b9hf {
106
106
  background: var(--select-option-hover-background);
107
107
  color: var(--select-option-hover-color)
108
- } .select__highlighted_6do03:before,
109
- .select__highlighted_6do03 + .select__option_6do03:before {
108
+ } .select__highlighted_1b9hf:before,
109
+ .select__highlighted_1b9hf + .select__option_1b9hf:before {
110
110
  opacity: 0;
111
- } .select__disabled_6do03 {
111
+ } .select__disabled_1b9hf {
112
112
  cursor: var(--disabled-cursor);
113
113
  background: var(--select-option-disabled-background);
114
114
  color: var(--select-option-disabled-color);
115
- } .select__content_6do03 {
115
+ } .select__content_1b9hf {
116
116
  overflow: hidden;
117
117
  flex: 1;
118
118
  text-overflow: ellipsis;
119
- } .select__textContent_6do03 {
119
+ } .select__textContent_1b9hf {
120
120
  padding-top: var(--gap-s);
121
121
  padding-bottom: var(--gap-s);
122
122
  }
@@ -19,7 +19,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
19
19
  var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
20
20
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
21
21
 
22
- var styles = {"optionsList":"select__optionsList_1sg7b","optionsListHeader":"select__optionsListHeader_1sg7b","headerHighlighted":"select__headerHighlighted_1sg7b","optionsListFooter":"select__optionsListFooter_1sg7b","withBorder":"select__withBorder_1sg7b","scrollable":"select__scrollable_1sg7b","emptyPlaceholder":"select__emptyPlaceholder_1sg7b","size-64":"select__size-64_1sg7b","size-72":"select__size-72_1sg7b"};
22
+ var styles = {"optionsList":"select__optionsList_1vmhv","optionsListHeader":"select__optionsListHeader_1vmhv","headerHighlighted":"select__headerHighlighted_1vmhv","optionsListFooter":"select__optionsListFooter_1vmhv","withBorder":"select__withBorder_1vmhv","scrollable":"select__scrollable_1vmhv","emptyPlaceholder":"select__emptyPlaceholder_1vmhv","size-64":"select__size-64_1vmhv","size-72":"select__size-72_1vmhv"};
23
23
  require('./index.css')
24
24
 
25
25
  var createCounter = function () {
@@ -29,7 +29,7 @@ var createCounter = function () {
29
29
  };
30
30
  var OptionsList = React.forwardRef(function (_a, ref) {
31
31
  var _b, _c;
32
- var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex;
32
+ var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, search = _a.search, setSelectedItems = _a.setSelectedItems, multiple = _a.multiple;
33
33
  var _k = React.useState(true), scrollTop = _k[0], setScrollTop = _k[1];
34
34
  var _l = React.useState(false), scrollBottom = _l[0], setScrollBottom = _l[1];
35
35
  var query = '(max-width: 1023px)';
@@ -49,7 +49,16 @@ var OptionsList = React.forwardRef(function (_a, ref) {
49
49
  var listRef = React.useRef(null);
50
50
  var scrollbarRef = React.useRef(null);
51
51
  var counter = createCounter();
52
- var renderGroup = function (group) { return (React__default.default.createElement(Optgroup, { className: optionGroupClassName, label: group.label, key: group.label, size: size }, group.options.map(function (option) { return renderOption(option, counter()); }))); };
52
+ var renderGroup = function (group) {
53
+ var groupSelectedItems = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) {
54
+ return group.options.includes(item);
55
+ });
56
+ var handleSelectedItems = function (items) {
57
+ var _a;
58
+ setSelectedItems(((_a = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) { return !group.options.includes(item); })) !== null && _a !== void 0 ? _a : []).concat(items));
59
+ };
60
+ return (React__default.default.createElement(Optgroup, { className: optionGroupClassName, label: group.label, key: group.label, size: size, options: group.options, selectedItems: groupSelectedItems, setSelectedItems: handleSelectedItems, search: search, multiple: multiple }, group.options.map(function (option) { return renderOption(option, counter()); })));
61
+ };
53
62
  utils.useVisibleOptions(tslib.__assign(tslib.__assign({}, (!nativeScrollbar && { styleTargetRef: scrollbarRef })), { visibleOptions: visibleOptions, listRef: listRef, open: open, invalidate: options }));
54
63
  if (options.length === 0 && !emptyPlaceholder && !header && !footer) {
55
64
  return null;
@@ -1,4 +1,4 @@
1
- /* hash: 8xp08 */
1
+ /* hash: 1mmer */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-neutral-300: #e7e8eb;
@@ -29,32 +29,32 @@
29
29
  /* checkmark */
30
30
 
31
31
  /* optgroup */
32
- } .select__optionsList_1sg7b {
32
+ } .select__optionsList_1vmhv {
33
33
  width: 100%;
34
34
  outline: none;
35
35
  box-sizing: border-box;
36
36
  position: relative;
37
- } .select__optionsListHeader_1sg7b {
37
+ } .select__optionsListHeader_1vmhv {
38
38
  box-sizing: border-box;
39
39
  border-bottom: 1px solid transparent;
40
40
  transition: border-color 0.2s ease
41
- } .select__optionsListHeader_1sg7b.select__headerHighlighted_1sg7b {
41
+ } .select__optionsListHeader_1vmhv.select__headerHighlighted_1vmhv {
42
42
  border-bottom-color: var(--color-light-neutral-300);
43
- } .select__optionsListFooter_1sg7b {
43
+ } .select__optionsListFooter_1vmhv {
44
44
  position: sticky;
45
45
  bottom: 0;
46
46
  box-sizing: border-box;
47
47
  border-top: 1px solid transparent;
48
48
  transition: border-color 0.2s ease
49
- } .select__optionsListFooter_1sg7b.select__withBorder_1sg7b {
49
+ } .select__optionsListFooter_1vmhv.select__withBorder_1vmhv {
50
50
  border-top-color: var(--color-light-neutral-300);
51
- } .select__scrollable_1sg7b {
51
+ } .select__scrollable_1vmhv {
52
52
  overflow: auto;
53
53
  width: 100%;
54
- } .select__emptyPlaceholder_1sg7b {
54
+ } .select__emptyPlaceholder_1vmhv {
55
55
  padding: var(--gap-m) var(--gap-s);
56
56
  color: var(--select-options-list-empty-placeholder-color);
57
- } .select__size-64_1sg7b .select__emptyPlaceholder_1sg7b,
58
- .select__size-72_1sg7b .select__emptyPlaceholder_1sg7b {
57
+ } .select__size-64_1vmhv .select__emptyPlaceholder_1vmhv,
58
+ .select__size-72_1vmhv .select__emptyPlaceholder_1vmhv {
59
59
  padding: var(--gap-xl) var(--gap-m);
60
60
  }
@@ -13,7 +13,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
13
13
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
14
14
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
15
15
 
16
- var styles = {"component":"select__component_1nt10"};
16
+ var styles = {"component":"select__component_bzehz"};
17
17
  require('./index.css')
18
18
 
19
19
  var Search = React.forwardRef(function (_a, ref) {
@@ -1,4 +1,4 @@
1
- /* hash: 1chu6 */
1
+ /* hash: 1v7r9 */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -23,6 +23,6 @@
23
23
  /* checkmark */
24
24
 
25
25
  /* optgroup */
26
- } .select__component_1nt10.select__component_1nt10 {
26
+ } .select__component_bzehz.select__component_bzehz {
27
27
  width: auto;
28
28
  }
@@ -20,12 +20,12 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
20
20
  var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
21
21
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
22
22
 
23
- var styles = {"virtualOptionsList":"select__virtualOptionsList_vpr6w","virtualOptionsListHeader":"select__virtualOptionsListHeader_vpr6w","virtualOptionsListFooter":"select__virtualOptionsListFooter_vpr6w","withBorder":"select__withBorder_vpr6w","scrollable":"select__scrollable_vpr6w","inner":"select__inner_vpr6w","virtualRow":"select__virtualRow_vpr6w","highlighted":"select__highlighted_vpr6w","emptyPlaceholder":"select__emptyPlaceholder_vpr6w","size-64":"select__size-64_vpr6w","size-72":"select__size-72_vpr6w"};
23
+ var styles = {"virtualOptionsList":"select__virtualOptionsList_106ul","virtualOptionsListHeader":"select__virtualOptionsListHeader_106ul","virtualOptionsListFooter":"select__virtualOptionsListFooter_106ul","withBorder":"select__withBorder_106ul","scrollable":"select__scrollable_106ul","inner":"select__inner_106ul","virtualRow":"select__virtualRow_106ul","highlighted":"select__highlighted_106ul","emptyPlaceholder":"select__emptyPlaceholder_106ul","size-64":"select__size-64_106ul","size-72":"select__size-72_106ul"};
24
24
  require('./index.css')
25
25
 
26
26
  var VirtualOptionsList = React.forwardRef(function (_a, ref) {
27
27
  var _b;
28
- var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, Option = _a.Option, open = _a.open, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? components_optgroup_Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex;
28
+ var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, Option = _a.Option, open = _a.open, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? components_optgroup_Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, setSelectedItems = _a.setSelectedItems, search = _a.search, multiple = _a.multiple;
29
29
  var listRef = React.useRef(null);
30
30
  var parentRef = React.useRef(null);
31
31
  var scrollbarRef = React.useRef(null);
@@ -110,13 +110,25 @@ var VirtualOptionsList = React.forwardRef(function (_a, ref) {
110
110
  return rowVirtualizer.virtualItems.map(function (virtualRow) {
111
111
  var _a;
112
112
  var option = flatOptions[virtualRow.index];
113
- var group = options[groupStartIndexes[virtualRow.index]];
113
+ var renderGroup = function () {
114
+ var group = options[groupStartIndexes[virtualRow.index]];
115
+ if (!group)
116
+ return null;
117
+ var groupSelectedItems = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) {
118
+ return group.options.includes(item);
119
+ });
120
+ var handleSelectedItems = function (items) {
121
+ var _a;
122
+ setSelectedItems(((_a = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) { return !group.options.includes(item); })) !== null && _a !== void 0 ? _a : []).concat(items));
123
+ };
124
+ return (React__default.default.createElement(Optgroup, { label: group.label, size: size, className: optionGroupClassName, options: group.options, selectedItems: groupSelectedItems, setSelectedItems: handleSelectedItems, search: search, multiple: multiple }));
125
+ };
114
126
  return (React__default.default.createElement("div", { key: virtualRow.index, ref: virtualRow.measureRef, className: cn__default.default(styles.virtualRow, (_a = {},
115
127
  _a[styles.highlighted] = highlightedIndex === virtualRow.index,
116
128
  _a)), style: {
117
129
  transform: "translateY(".concat(virtualRow.start, "px)"),
118
130
  } },
119
- group && (React__default.default.createElement(Optgroup, { label: group.label, size: size, className: optionGroupClassName })),
131
+ renderGroup(),
120
132
  !utils.isGroup(option) && (React__default.default.createElement(Option, tslib.__assign({}, getOptionProps(option, virtualRow.index))))));
121
133
  });
122
134
  };
@@ -1,4 +1,4 @@
1
- /* hash: 60hpt */
1
+ /* hash: 1651d */
2
2
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
3
3
  } /* deprecated */ :root {
4
4
  --color-light-border-primary: #d5d6dc;
@@ -35,34 +35,35 @@
35
35
  /* checkmark */
36
36
 
37
37
  /* optgroup */
38
- } .select__virtualOptionsList_vpr6w {
38
+ } .select__virtualOptionsList_106ul {
39
39
  width: 100%;
40
40
  outline: none;
41
41
  box-sizing: border-box;
42
42
  position: sticky;
43
- } .select__virtualOptionsListHeader_vpr6w {
43
+ justify-content: space-between;
44
+ } .select__virtualOptionsListHeader_106ul {
44
45
  box-sizing: border-box;
45
46
  border-bottom: 1px solid var(--color-light-neutral-300);
46
- } .select__virtualOptionsListFooter_vpr6w {
47
+ } .select__virtualOptionsListFooter_106ul {
47
48
  position: sticky;
48
49
  bottom: 0;
49
50
  box-sizing: border-box;
50
51
  border-top: 1px solid transparent
51
- } .select__virtualOptionsListFooter_vpr6w.select__withBorder_vpr6w {
52
+ } .select__virtualOptionsListFooter_106ul.select__withBorder_106ul {
52
53
  border-top: 1px solid var(--color-light-neutral-300);
53
- } .select__scrollable_vpr6w {
54
+ } .select__scrollable_106ul {
54
55
  position: relative;
55
56
  overflow: auto;
56
57
  width: 100%;
57
- } .select__inner_vpr6w {
58
+ } .select__inner_106ul {
58
59
  position: relative;
59
60
  width: 100%;
60
- } .select__virtualRow_vpr6w {
61
+ } .select__virtualRow_106ul {
61
62
  position: absolute;
62
63
  top: 0;
63
64
  left: 0;
64
65
  width: 100%
65
- } .select__virtualRow_vpr6w:before {
66
+ } .select__virtualRow_106ul:before {
66
67
  content: '';
67
68
  position: absolute;
68
69
  z-index: 1;
@@ -72,15 +73,16 @@
72
73
  height: 1px;
73
74
  background: var(--select-option-divider-background);
74
75
  display: var(--select-option-divider-display);
75
- } .select__virtualRow_vpr6w:first-child:before {
76
+ } .select__virtualRow_106ul:first-child:before {
76
77
  display: none;
77
- } .select__highlighted_vpr6w:before,
78
- .select__highlighted_vpr6w + .select__virtualRow_vpr6w:before {
78
+ } .select__highlighted_106ul:before,
79
+ .select__highlighted_106ul + .select__virtualRow_106ul:before {
79
80
  display: none;
80
- } .select__emptyPlaceholder_vpr6w {
81
+ } .select__emptyPlaceholder_106ul {
81
82
  padding: var(--gap-m) var(--gap-s);
82
83
  color: var(--select-options-list-empty-placeholder-color);
83
- } .select__size-64_vpr6w .select__emptyPlaceholder_vpr6w,
84
- .select__size-72_vpr6w .select__emptyPlaceholder_vpr6w {
84
+ flex: 1;
85
+ } .select__size-64_106ul .select__emptyPlaceholder_106ul,
86
+ .select__size-72_106ul .select__emptyPlaceholder_106ul {
85
87
  padding: var(--gap-xl) var(--gap-m);
86
88
  }
@@ -22,5 +22,6 @@ var SelectResponsive = React.forwardRef(function (_a, ref) {
22
22
  var mobileProps = tslib.__assign(tslib.__assign({}, restProps), restProps.originalProps);
23
23
  return React__default.default.createElement(mobile_Component_mobile.SelectMobile, tslib.__assign({ fieldProps: fieldProps }, mobileProps, { ref: ref }));
24
24
  });
25
+ SelectResponsive.displayName = 'SelectResponsive';
25
26
 
26
27
  exports.SelectResponsive = SelectResponsive;
@@ -363,7 +363,7 @@ function (_a, ref) {
363
363
  return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles__default.default.optionsListWrapper, view === 'desktop' && styles__default.default.optionsListWrapper) }),
364
364
  React__default.default.createElement(OptionsList, tslib.__assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn__default.default((_a = {}, _a[mobileStyles__default.default.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn__default.default((_b = {}, _b[mobileStyles__default.default.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn__default.default(optionGroupClassName, (_c = {},
365
365
  _c[mobileStyles__default.default.optionGroup] = view === 'mobile',
366
- _c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
366
+ _c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll, search: search, multiple: multiple })),
367
367
  view === 'desktop' && React__default.default.createElement("div", { className: styles__default.default.optionsListBorder })));
368
368
  };
369
369
  var renderInPopover = function () {
@@ -1,6 +1,6 @@
1
1
  :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
2
2
  } /* deprecated */ :root {
3
- --color-light-neutral-1500: #121213;
3
+ --color-light-neutral-translucent-1300: rgba(3, 3, 6, 0.88);
4
4
  --color-light-status-positive: #0cc44d; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
5
5
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
6
6
  } :root {
@@ -34,7 +34,7 @@
34
34
  --select-checkmark-before-display-multiple: block;
35
35
  --select-checkmark-after-display-single: none;
36
36
  --select-checkmark-unselected-opacity: 0;
37
- --select-checkmark-background: var(--color-light-neutral-1500);
37
+ --select-checkmark-background: var(--color-light-neutral-translucent-1300);
38
38
  --select-checkmark-border-radius: var(--border-radius-circle);
39
39
 
40
40
  /* optgroup */
@@ -28,7 +28,7 @@ var createCounter = function () {
28
28
  };
29
29
  var OptionsList = React.forwardRef(function (_a, ref) {
30
30
  var _b, _c;
31
- var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex;
31
+ var _d = _a.size, size = _d === void 0 ? 48 : _d, className = _a.className, optionGroupClassName = _a.optionGroupClassName, scrollbarClassName = _a.scrollbarClassName, Option = _a.Option, getOptionProps = _a.getOptionProps, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.Optgroup, Optgroup = _f === void 0 ? components_optgroup_Component.Optgroup : _f, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _g = _a.visibleOptions, visibleOptions = _g === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _g, onScroll = _a.onScroll, open = _a.open, header = _a.header, footer = _a.footer, _h = _a.showFooter, showFooter = _h === void 0 ? true : _h, optionsListWidth = _a.optionsListWidth, nativeScrollbarProp = _a.nativeScrollbar, _j = _a.flatOptions, flatOptions = _j === void 0 ? [] : _j, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, search = _a.search, setSelectedItems = _a.setSelectedItems, multiple = _a.multiple;
32
32
  var _k = React.useState(true), scrollTop = _k[0], setScrollTop = _k[1];
33
33
  var _l = React.useState(false), scrollBottom = _l[0], setScrollBottom = _l[1];
34
34
  var query = '(max-width: 1023px)';
@@ -48,7 +48,16 @@ var OptionsList = React.forwardRef(function (_a, ref) {
48
48
  var listRef = React.useRef(null);
49
49
  var scrollbarRef = React.useRef(null);
50
50
  var counter = createCounter();
51
- var renderGroup = function (group) { return (React__default.default.createElement(Optgroup, { className: optionGroupClassName, label: group.label, key: group.label, size: size }, group.options.map(function (option) { return renderOption(option, counter()); }))); };
51
+ var renderGroup = function (group) {
52
+ var groupSelectedItems = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) {
53
+ return group.options.includes(item);
54
+ });
55
+ var handleSelectedItems = function (items) {
56
+ var _a;
57
+ setSelectedItems(((_a = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) { return !group.options.includes(item); })) !== null && _a !== void 0 ? _a : []).concat(items));
58
+ };
59
+ return (React__default.default.createElement(Optgroup, { className: optionGroupClassName, label: group.label, key: group.label, size: size, options: group.options, selectedItems: groupSelectedItems, setSelectedItems: handleSelectedItems, search: search, multiple: multiple }, group.options.map(function (option) { return renderOption(option, counter()); })));
60
+ };
52
61
  utils.useVisibleOptions(tslib.__assign(tslib.__assign({}, (!nativeScrollbar && { styleTargetRef: scrollbarRef })), { visibleOptions: visibleOptions, listRef: listRef, open: open, invalidate: options }));
53
62
  if (options.length === 0 && !emptyPlaceholder && !header && !footer) {
54
63
  return null;
@@ -24,7 +24,7 @@ var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
24
24
 
25
25
  var VirtualOptionsList = React.forwardRef(function (_a, ref) {
26
26
  var _b;
27
- var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, Option = _a.Option, open = _a.open, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? components_optgroup_Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex;
27
+ var _c = _a.size, size = _c === void 0 ? 48 : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.highlightedIndex, highlightedIndex = _e === void 0 ? -1 : _e, optionGroupClassName = _a.optionGroupClassName, className = _a.className, getOptionProps = _a.getOptionProps, Option = _a.Option, open = _a.open, _f = _a.options, options = _f === void 0 ? [] : _f, _g = _a.Optgroup, Optgroup = _g === void 0 ? components_optgroup_Component.Optgroup : _g, dataTestId = _a.dataTestId, emptyPlaceholder = _a.emptyPlaceholder, _h = _a.visibleOptions, visibleOptions = _h === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _h, header = _a.header, footer = _a.footer, _j = _a.showFooter, showFooter = _j === void 0 ? true : _j, optionsListWidth = _a.optionsListWidth, onScroll = _a.onScroll, nativeScrollbarProp = _a.nativeScrollbar, setHighlightedIndex = _a.setHighlightedIndex, selectedItems = _a.selectedItems, setSelectedItems = _a.setSelectedItems, search = _a.search, multiple = _a.multiple;
28
28
  var listRef = React.useRef(null);
29
29
  var parentRef = React.useRef(null);
30
30
  var scrollbarRef = React.useRef(null);
@@ -109,13 +109,25 @@ var VirtualOptionsList = React.forwardRef(function (_a, ref) {
109
109
  return rowVirtualizer.virtualItems.map(function (virtualRow) {
110
110
  var _a;
111
111
  var option = flatOptions[virtualRow.index];
112
- var group = options[groupStartIndexes[virtualRow.index]];
112
+ var renderGroup = function () {
113
+ var group = options[groupStartIndexes[virtualRow.index]];
114
+ if (!group)
115
+ return null;
116
+ var groupSelectedItems = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) {
117
+ return group.options.includes(item);
118
+ });
119
+ var handleSelectedItems = function (items) {
120
+ var _a;
121
+ setSelectedItems(((_a = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(function (item) { return !group.options.includes(item); })) !== null && _a !== void 0 ? _a : []).concat(items));
122
+ };
123
+ return (React__default.default.createElement(Optgroup, { label: group.label, size: size, className: optionGroupClassName, options: group.options, selectedItems: groupSelectedItems, setSelectedItems: handleSelectedItems, search: search, multiple: multiple }));
124
+ };
113
125
  return (React__default.default.createElement("div", { key: virtualRow.index, ref: virtualRow.measureRef, className: cn__default.default(styles__default.default.virtualRow, (_a = {},
114
126
  _a[styles__default.default.highlighted] = highlightedIndex === virtualRow.index,
115
127
  _a)), style: {
116
128
  transform: "translateY(".concat(virtualRow.start, "px)"),
117
129
  } },
118
- group && (React__default.default.createElement(Optgroup, { label: group.label, size: size, className: optionGroupClassName })),
130
+ renderGroup(),
119
131
  !utils.isGroup(option) && (React__default.default.createElement(Option, tslib.__assign({}, getOptionProps(option, virtualRow.index))))));
120
132
  });
121
133
  };
@@ -39,6 +39,7 @@
39
39
  outline: none;
40
40
  box-sizing: border-box;
41
41
  position: sticky;
42
+ justify-content: space-between;
42
43
  } .virtualOptionsListHeader {
43
44
  box-sizing: border-box;
44
45
  border-bottom: 1px solid var(--color-light-neutral-300);
@@ -79,6 +80,7 @@
79
80
  } .emptyPlaceholder {
80
81
  padding: var(--gap-m) var(--gap-s);
81
82
  color: var(--select-options-list-empty-placeholder-color);
83
+ flex: 1;
82
84
  } .size-64 .emptyPlaceholder,
83
85
  .size-72 .emptyPlaceholder {
84
86
  padding: var(--gap-xl) var(--gap-m);
@@ -12,5 +12,6 @@ declare const OptionsListWithApply: React.ForwardRefExoticComponent<OptionsListP
12
12
  Header?: React.FC<HeaderProps> | undefined;
13
13
  headerProps?: HeaderProps | undefined;
14
14
  showHeaderWithSelectAll?: boolean | undefined;
15
+ setSelectedDraft?: ((selectedDraft: OptionShape[]) => void) | undefined;
15
16
  } & React.RefAttributes<HTMLDivElement>>;
16
17
  export { OptionsListWithApply };
@@ -2,6 +2,7 @@
2
2
 
3
3
  var tslib = require('tslib');
4
4
  var React = require('react');
5
+ var deepEqual = require('deep-equal');
5
6
  var utils = require('./utils.js');
6
7
  var components_optionsList_Component = require('./components/options-list/Component.js');
7
8
  var consts = require('./consts.js');
@@ -11,9 +12,10 @@ var presets_useSelectWithApply_optionsListWithApply_header_Component = require('
11
12
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
12
13
 
13
14
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
15
+ var deepEqual__default = /*#__PURE__*/_interopDefaultCompat(deepEqual);
14
16
 
15
17
  var OptionsListWithApply = React.forwardRef(function (_a, ref) {
16
- var toggleMenu = _a.toggleMenu, defaultGetOptionProps = _a.getOptionProps, _b = _a.showClear, showClear = _b === void 0 ? true : _b, showHeaderWithSelectAll = _a.showHeaderWithSelectAll, _c = _a.selectedDraft, selectedDraft = _c === void 0 ? [] : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.OptionsList, OptionsList = _e === void 0 ? components_optionsList_Component.OptionsList : _e, _f = _a.onApply, onApply = _f === void 0 ? function () { return null; } : _f, _g = _a.onClear, onClear = _g === void 0 ? function () { return null; } : _g, _h = _a.onClose, onClose = _h === void 0 ? function () { return null; } : _h, _j = _a.visibleOptions, visibleOptions = _j === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _j, _k = _a.Footer, Footer = _k === void 0 ? presets_useSelectWithApply_optionsListWithApply_footer_Component.Footer : _k, _l = _a.Header, Header = _l === void 0 ? presets_useSelectWithApply_optionsListWithApply_header_Component.Header : _l, header = _a.header, headerProps = _a.headerProps, restProps = tslib.__rest(_a, ["toggleMenu", "getOptionProps", "showClear", "showHeaderWithSelectAll", "selectedDraft", "flatOptions", "OptionsList", "onApply", "onClear", "onClose", "visibleOptions", "Footer", "Header", "header", "headerProps"]);
18
+ var toggleMenu = _a.toggleMenu, defaultGetOptionProps = _a.getOptionProps, _b = _a.showClear, showClear = _b === void 0 ? true : _b, showHeaderWithSelectAll = _a.showHeaderWithSelectAll, _c = _a.selectedDraft, selectedDraft = _c === void 0 ? [] : _c, _d = _a.flatOptions, flatOptions = _d === void 0 ? [] : _d, _e = _a.OptionsList, OptionsList = _e === void 0 ? components_optionsList_Component.OptionsList : _e, _f = _a.onApply, onApply = _f === void 0 ? function () { return null; } : _f, _g = _a.onClear, onClear = _g === void 0 ? function () { return null; } : _g, _h = _a.onClose, onClose = _h === void 0 ? function () { return null; } : _h, _j = _a.visibleOptions, visibleOptions = _j === void 0 ? consts.DEFAULT_VISIBLE_OPTIONS : _j, _k = _a.Footer, Footer = _k === void 0 ? presets_useSelectWithApply_optionsListWithApply_footer_Component.Footer : _k, _l = _a.Header, Header = _l === void 0 ? presets_useSelectWithApply_optionsListWithApply_header_Component.Header : _l, header = _a.header, headerProps = _a.headerProps, setSelectedDraft = _a.setSelectedDraft, restProps = tslib.__rest(_a, ["toggleMenu", "getOptionProps", "showClear", "showHeaderWithSelectAll", "selectedDraft", "flatOptions", "OptionsList", "onApply", "onClear", "onClose", "visibleOptions", "Footer", "Header", "header", "headerProps", "setSelectedDraft"]);
17
19
  var getOptionProps = React.useCallback(function (option, index) {
18
20
  var optionProps = defaultGetOptionProps(option, index);
19
21
  var selected = option.key === SELECT_ALL_KEY
@@ -32,6 +34,9 @@ var OptionsListWithApply = React.forwardRef(function (_a, ref) {
32
34
  onClear();
33
35
  toggleMenu();
34
36
  }, [onClear, toggleMenu]);
37
+ var handleSelectedItems = React.useCallback(function (items) {
38
+ setSelectedDraft === null || setSelectedDraft === void 0 ? void 0 : setSelectedDraft(items);
39
+ }, [setSelectedDraft]);
35
40
  React.useEffect(function () {
36
41
  var activeElement = document.activeElement;
37
42
  return function () {
@@ -49,7 +54,7 @@ var OptionsListWithApply = React.forwardRef(function (_a, ref) {
49
54
  header,
50
55
  showHeaderWithSelectAll && React__default.default.createElement(Header, tslib.__assign({}, headerProps))));
51
56
  };
52
- return (React__default.default.createElement(OptionsList, tslib.__assign({}, restProps, { ref: ref, visibleOptions: visibleOptions, toggleMenu: toggleMenu, flatOptions: flatOptions, getOptionProps: getOptionProps, onApply: handleApply, onClear: handleClear, header: renderHeader(), footer: React__default.default.createElement(Footer, { handleApply: handleApply, handleClear: handleClear, showClear: showClear, selectedDraft: selectedDraft, dataTestId: restProps === null || restProps === void 0 ? void 0 : restProps.dataTestId }) })));
57
+ return (React__default.default.createElement(OptionsList, tslib.__assign({}, restProps, { ref: ref, visibleOptions: visibleOptions, toggleMenu: toggleMenu, flatOptions: flatOptions, getOptionProps: getOptionProps, onApply: handleApply, onClear: handleClear, header: renderHeader(), selectedItems: selectedDraft, setSelectedItems: handleSelectedItems, footer: React__default.default.createElement(Footer, { handleApply: handleApply, handleClear: handleClear, showClear: showClear, selectedDraft: selectedDraft, dataTestId: restProps === null || restProps === void 0 ? void 0 : restProps.dataTestId }) })));
53
58
  });
54
59
 
55
60
  var SELECT_ALL_KEY = 'select_all';
@@ -104,13 +109,16 @@ function useSelectWithApply(_a) {
104
109
  };
105
110
  var handleClose = function () { return setSelectedDraft(selectedOptionsRef.current); };
106
111
  React.useEffect(function () {
107
- setSelectedDraft(selectedOptions);
112
+ // устанавливать selectedDraft если selectedOptions изменились
113
+ if (!deepEqual__default.default(selectedOptionsRef.current, selectedOptions)) {
114
+ setSelectedDraft(selectedOptions);
115
+ }
108
116
  selectedOptionsRef.current = selectedOptions;
109
117
  }, [selectedOptions]);
110
118
  var memoizedOptions = React.useMemo(function () { return (showSelectAll ? tslib.__spreadArray([selectAllOption], options, true) : options); }, [options, showSelectAll]);
111
119
  return {
112
120
  OptionsList: OptionsListWithApply,
113
- optionsListProps: tslib.__assign(tslib.__assign({}, optionsListProps), { OptionsList: OptionsList, showClear: showClear, onClear: handleClear, onApply: handleApply, onClose: handleClose, selectedDraft: selectedDraft, showHeaderWithSelectAll: showHeaderWithSelectAll, headerProps: {
121
+ optionsListProps: tslib.__assign(tslib.__assign({}, optionsListProps), { OptionsList: OptionsList, showClear: showClear, onClear: handleClear, onApply: handleApply, onClose: handleClose, selectedDraft: selectedDraft, setSelectedDraft: setSelectedDraft, showHeaderWithSelectAll: showHeaderWithSelectAll, headerProps: {
114
122
  indeterminate: !!selectedDraft.length && selectedDraft.length < flatOptions.length,
115
123
  checked: selectedDraft.length === flatOptions.length,
116
124
  onChange: handleToggleAll,
@@ -45,16 +45,20 @@ type UseSelectWithApplyProps = {
45
45
  declare const SELECT_ALL_KEY = "select_all";
46
46
  declare function useSelectWithApply({ options, selected, onChange, OptionsList, optionsListProps, showClear, showSelectAll, showHeaderWithSelectAll, showSearch, searchProps, }: UseSelectWithApplyProps): {
47
47
  OptionsList: import("react").ForwardRefExoticComponent<import("./typings").OptionsListProps & {
48
+ /**
49
+ * Обработчик выбора
50
+ */
48
51
  showClear?: boolean | undefined;
49
- onClose?: (() => void) | undefined; /**
52
+ onClose?: (() => void) | undefined;
53
+ selectedDraft?: OptionShape[] | undefined; /**
50
54
  * Компонент выпадающего меню
51
55
  */
52
- selectedDraft?: OptionShape[] | undefined;
53
56
  OptionsList?: import("react").FC<import("./typings").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
54
57
  Footer?: import("react").FC<import("./presets/useSelectWithApply/options-list-with-apply/footer/Component").FooterProps> | undefined;
55
58
  Header?: import("react").FC<import("./presets/useSelectWithApply/options-list-with-apply/header/Component").HeaderProps> | undefined;
56
59
  headerProps?: import("./presets/useSelectWithApply/options-list-with-apply/header/Component").HeaderProps | undefined;
57
60
  showHeaderWithSelectAll?: boolean | undefined;
61
+ setSelectedDraft?: ((selectedDraft: OptionShape[]) => void) | undefined;
58
62
  } & import("react").RefAttributes<HTMLDivElement>>;
59
63
  optionsListProps: {
60
64
  OptionsList: import("react").ComponentType<import("./typings").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
@@ -63,6 +67,7 @@ declare function useSelectWithApply({ options, selected, onChange, OptionsList,
63
67
  onApply: () => void;
64
68
  onClose: () => void;
65
69
  selectedDraft: OptionShape[];
70
+ setSelectedDraft: import("react").Dispatch<import("react").SetStateAction<OptionShape[]>>;
66
71
  showHeaderWithSelectAll: boolean;
67
72
  headerProps: {
68
73
  indeterminate: boolean;
@@ -16,7 +16,7 @@ var components_option_Component = require('../components/option/Component.js');
16
16
  var components_optionsList_Component = require('../components/options-list/Component.js');
17
17
  var components_search_Component = require('../components/search/Component.js');
18
18
  var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
19
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-aae7b381.js');
19
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-546b2479.js');
20
20
  var presets_useSelectWithApply_optionsListWithApply_header_Component = require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
21
21
 
22
22
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -1,3 +1,3 @@
1
1
  export * from "./useSelectWithLoading/hook";
2
2
  export * from "./useLazyLoading/hook";
3
- export * from "../hook-d4f77aed";
3
+ export * from "../hook-64a8061f";
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var presets_useSelectWithLoading_hook = require('./useSelectWithLoading/hook.js');
6
6
  var presets_useLazyLoading_hook = require('./useLazyLoading/hook.js');
7
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-aae7b381.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-546b2479.js');
8
8
 
9
9
 
10
10
 
@@ -4,8 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('tslib');
6
6
  require('react');
7
+ require('deep-equal');
7
8
  require('../../utils.js');
8
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-aae7b381.js');
9
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-546b2479.js');
9
10
 
10
11
 
11
12