@alfalab/core-components-select 15.2.0 → 15.2.2

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 (198) hide show
  1. package/Component-89f0cb07.d.ts +38 -0
  2. package/Component.mobile-ebda875c.d.ts +4 -4
  3. package/Component.mobile-f1f15074.d.ts +1 -1
  4. package/Component.mobile.js +2 -2
  5. package/Component.modal.mobile.js +2 -2
  6. package/Component.responsive.js +1 -1
  7. package/components/arrow/Component.js +1 -1
  8. package/components/arrow/index.css +3 -3
  9. package/components/base-checkmark/Component.js +1 -1
  10. package/components/base-checkmark/index.css +4 -4
  11. package/components/base-option/Component.js +1 -1
  12. package/components/base-option/index.css +13 -13
  13. package/components/base-select/Component.js +12 -5
  14. package/components/base-select/index.css +11 -11
  15. package/components/base-select-mobile/Component.js +13 -4
  16. package/components/base-select-mobile/footer/Component.js +1 -1
  17. package/components/base-select-mobile/footer/index.css +5 -5
  18. package/components/base-select-mobile/index.css +17 -18
  19. package/components/checkmark/Component.js +1 -1
  20. package/components/checkmark/index.css +10 -10
  21. package/components/checkmark-mobile/Component.js +1 -1
  22. package/components/checkmark-mobile/index.css +6 -6
  23. package/components/field/Component.js +1 -1
  24. package/components/field/index.css +12 -12
  25. package/components/optgroup/Component.js +1 -1
  26. package/components/optgroup/index.css +6 -6
  27. package/components/option/Component.js +1 -1
  28. package/components/option/index.css +20 -20
  29. package/components/options-list/Component.js +5 -4
  30. package/components/options-list/index.css +9 -9
  31. package/components/search/Component.js +1 -1
  32. package/components/search/index.css +2 -2
  33. package/components/virtual-options-list/Component.js +5 -4
  34. package/components/virtual-options-list/index.css +15 -15
  35. package/cssm/Component-89f0cb07.d.ts +38 -0
  36. package/cssm/Component.mobile-ebda875c.d.ts +4 -4
  37. package/cssm/Component.mobile.js +2 -2
  38. package/cssm/Component.modal.mobile.js +2 -2
  39. package/cssm/Component.responsive.js +1 -1
  40. package/cssm/components/base-select/Component.js +11 -4
  41. package/cssm/components/base-select-mobile/Component.js +12 -3
  42. package/cssm/components/base-select-mobile/index.module.css +1 -2
  43. package/cssm/components/options-list/Component.js +4 -3
  44. package/cssm/components/virtual-options-list/Component.js +4 -3
  45. package/cssm/desktop-69921c40.d.ts +6 -0
  46. package/{hook-45ab0a9c.js → cssm/hook-244c8d6e.js} +4 -1
  47. package/cssm/index-ebda875c.d.ts +1 -37
  48. package/cssm/index.js +1 -1
  49. package/cssm/mobile.js +1 -1
  50. package/cssm/presets/index.js +1 -1
  51. package/cssm/presets/useSelectWithApply/hook.js +1 -1
  52. package/cssm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  53. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  54. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  55. package/cssm/shared.js +1 -1
  56. package/{esm/typings-9211a437.d.ts → cssm/typings-89f0cb07.d.ts} +5 -7
  57. package/cssm/typings.d.ts +4 -0
  58. package/desktop-69921c40.d.ts +6 -0
  59. package/esm/Component-89f0cb07.d.ts +38 -0
  60. package/esm/Component.mobile-ebda875c.d.ts +4 -4
  61. package/esm/Component.mobile.js +2 -2
  62. package/esm/Component.modal.mobile.js +2 -2
  63. package/esm/Component.responsive.js +1 -1
  64. package/esm/components/arrow/Component.js +1 -1
  65. package/esm/components/arrow/index.css +3 -3
  66. package/esm/components/base-checkmark/Component.js +1 -1
  67. package/esm/components/base-checkmark/index.css +4 -4
  68. package/esm/components/base-option/Component.js +1 -1
  69. package/esm/components/base-option/index.css +13 -13
  70. package/esm/components/base-select/Component.js +12 -5
  71. package/esm/components/base-select/index.css +11 -11
  72. package/esm/components/base-select-mobile/Component.js +13 -4
  73. package/esm/components/base-select-mobile/footer/Component.js +1 -1
  74. package/esm/components/base-select-mobile/footer/index.css +5 -5
  75. package/esm/components/base-select-mobile/index.css +17 -18
  76. package/esm/components/checkmark/Component.js +1 -1
  77. package/esm/components/checkmark/index.css +10 -10
  78. package/esm/components/checkmark-mobile/Component.js +1 -1
  79. package/esm/components/checkmark-mobile/index.css +6 -6
  80. package/esm/components/field/Component.js +1 -1
  81. package/esm/components/field/index.css +12 -12
  82. package/esm/components/optgroup/Component.js +1 -1
  83. package/esm/components/optgroup/index.css +6 -6
  84. package/esm/components/option/Component.js +1 -1
  85. package/esm/components/option/index.css +20 -20
  86. package/esm/components/options-list/Component.js +5 -4
  87. package/esm/components/options-list/index.css +9 -9
  88. package/esm/components/search/Component.js +1 -1
  89. package/esm/components/search/index.css +2 -2
  90. package/esm/components/virtual-options-list/Component.js +5 -4
  91. package/esm/components/virtual-options-list/index.css +15 -15
  92. package/esm/desktop-69921c40.d.ts +6 -0
  93. package/esm/{hook-3fd6d6d4.js → hook-571dca86.js} +4 -1
  94. package/esm/index-ebda875c.d.ts +1 -37
  95. package/esm/index.js +1 -1
  96. package/esm/mobile.js +1 -1
  97. package/esm/presets/index.js +1 -1
  98. package/esm/presets/useSelectWithApply/hook.js +1 -1
  99. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  100. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  101. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  102. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  103. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  104. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  105. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  106. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  107. package/esm/presets/useSelectWithLoading/index.css +2 -2
  108. package/esm/shared.js +1 -1
  109. package/{modern/typings-9211a437.d.ts → esm/typings-89f0cb07.d.ts} +5 -7
  110. package/esm/typings.d.ts +4 -0
  111. package/{cssm/hook-d1f5dd40.js → hook-a6f060a1.js} +4 -1
  112. package/index-ebda875c.d.ts +1 -37
  113. package/index.js +1 -1
  114. package/mobile.js +1 -1
  115. package/modern/Component-89f0cb07.d.ts +38 -0
  116. package/modern/Component.mobile-ebda875c.d.ts +4 -4
  117. package/modern/Component.mobile.js +2 -2
  118. package/modern/Component.modal.mobile.js +2 -2
  119. package/modern/Component.responsive.js +1 -1
  120. package/modern/components/arrow/Component.js +1 -1
  121. package/modern/components/arrow/index.css +3 -3
  122. package/modern/components/base-checkmark/Component.js +1 -1
  123. package/modern/components/base-checkmark/index.css +4 -4
  124. package/modern/components/base-option/Component.js +1 -1
  125. package/modern/components/base-option/index.css +13 -13
  126. package/modern/components/base-select/Component.js +9 -5
  127. package/modern/components/base-select/index.css +11 -11
  128. package/modern/components/base-select-mobile/Component.js +10 -4
  129. package/modern/components/base-select-mobile/footer/Component.js +1 -1
  130. package/modern/components/base-select-mobile/footer/index.css +5 -5
  131. package/modern/components/base-select-mobile/index.css +17 -18
  132. package/modern/components/checkmark/Component.js +1 -1
  133. package/modern/components/checkmark/index.css +10 -10
  134. package/modern/components/checkmark-mobile/Component.js +1 -1
  135. package/modern/components/checkmark-mobile/index.css +6 -6
  136. package/modern/components/field/Component.js +1 -1
  137. package/modern/components/field/index.css +12 -12
  138. package/modern/components/optgroup/Component.js +1 -1
  139. package/modern/components/optgroup/index.css +6 -6
  140. package/modern/components/option/Component.js +1 -1
  141. package/modern/components/option/index.css +20 -20
  142. package/modern/components/options-list/Component.js +5 -4
  143. package/modern/components/options-list/index.css +9 -9
  144. package/modern/components/search/Component.js +1 -1
  145. package/modern/components/search/index.css +2 -2
  146. package/modern/components/virtual-options-list/Component.js +5 -4
  147. package/modern/components/virtual-options-list/index.css +15 -15
  148. package/modern/desktop-69921c40.d.ts +6 -0
  149. package/modern/{hook-5dd83d48.js → hook-7e628eb4.js} +1 -1
  150. package/modern/index-ebda875c.d.ts +1 -37
  151. package/modern/index.js +1 -1
  152. package/modern/mobile.js +1 -1
  153. package/modern/presets/index.js +1 -1
  154. package/modern/presets/useSelectWithApply/hook.js +1 -1
  155. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  156. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  157. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  158. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  159. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  160. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  161. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  162. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  163. package/modern/presets/useSelectWithLoading/index.css +2 -2
  164. package/modern/shared.js +1 -1
  165. package/{typings-9211a437.d.ts → modern/typings-89f0cb07.d.ts} +5 -7
  166. package/modern/typings.d.ts +4 -0
  167. package/package.json +7 -7
  168. package/presets/index.js +1 -1
  169. package/presets/useSelectWithApply/hook.js +1 -1
  170. package/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  171. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  172. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  173. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  174. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  175. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  176. package/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  177. package/presets/useSelectWithLoading/hook.js +1 -1
  178. package/presets/useSelectWithLoading/index.css +2 -2
  179. package/shared.js +1 -1
  180. package/src/Component.mobile.tsx +2 -0
  181. package/src/Component.modal.mobile.tsx +2 -0
  182. package/src/components/base-select/Component.tsx +12 -2
  183. package/src/components/base-select-mobile/Component.tsx +16 -3
  184. package/src/components/base-select-mobile/index.module.css +1 -1
  185. package/src/components/options-list/Component.tsx +9 -1
  186. package/src/components/virtual-options-list/Component.tsx +12 -1
  187. package/src/presets/useSelectWithApply/options-list-with-apply/Component.tsx +1 -1
  188. package/src/typings.ts +5 -0
  189. package/{cssm/typings-9211a437.d.ts → typings-89f0cb07.d.ts} +5 -7
  190. package/typings.d.ts +4 -0
  191. package/cssm/desktop-63dec22f.d.ts +0 -6
  192. package/desktop-63dec22f.d.ts +0 -6
  193. package/esm/desktop-63dec22f.d.ts +0 -6
  194. package/modern/desktop-63dec22f.d.ts +0 -6
  195. /package/cssm/{hook-d1f5dd40.d.ts → hook-244c8d6e.d.ts} +0 -0
  196. /package/esm/{hook-3fd6d6d4.d.ts → hook-571dca86.d.ts} +0 -0
  197. /package/{hook-45ab0a9c.d.ts → hook-a6f060a1.d.ts} +0 -0
  198. /package/modern/{hook-5dd83d48.d.ts → hook-7e628eb4.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- /* hash: 1mb8q */
1
+ /* hash: r40yx */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-bg-primary: #fff; /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -17,10 +17,10 @@
17
17
  --gap-s: 12px;
18
18
  } :root {
19
19
  } :root {
20
- } .select__footer_1hcm9 {
20
+ } .select__footer_zbbxs {
21
21
  background-color: var(--color-light-bg-primary);
22
22
  padding: var(--gap-s);
23
23
  outline: none
24
- } .select__footer_1hcm9 > * + * {
24
+ } .select__footer_zbbxs > * + * {
25
25
  margin-left: var(--gap-xs);
26
26
  }
@@ -11,7 +11,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
13
13
 
14
- var styles = {"desktop":"select__desktop_s77i9","mobile":"select__mobile_s77i9"};
14
+ var styles = {"desktop":"select__desktop_1a8hu","mobile":"select__mobile_1a8hu"};
15
15
  require('./index.css')
16
16
 
17
17
  var Header = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: ex6il */
1
+ /* hash: 1qszj */
2
2
  :root {
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 */
@@ -16,8 +16,8 @@
16
16
  --gap-s: 12px;
17
17
  } :root {
18
18
  } :root {
19
- } .select__desktop_s77i9 {
19
+ } .select__desktop_1a8hu {
20
20
  padding: var(--gap-s);
21
- } .select__mobile_s77i9 {
21
+ } .select__mobile_1a8hu {
22
22
  padding: var(--gap-s) var(--gap-xs);
23
23
  }
@@ -1 +1 @@
1
- export * from "../../../hook-45ab0a9c";
1
+ export * from "../../../hook-a6f060a1";
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-45ab0a9c.js');
5
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-a6f060a1.js');
6
6
  require('tslib');
7
7
  require('react');
8
8
  require('../../../utils.js');
@@ -18,7 +18,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
18
18
 
19
19
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
20
20
 
21
- var styles = {"skeleton":"select__skeleton_1f6a1"};
21
+ var styles = {"skeleton":"select__skeleton_1eba2"};
22
22
  require('./index.css')
23
23
 
24
24
  function useSelectWithLoading(_a) {
@@ -1,5 +1,5 @@
1
- /* hash: 52mbq */
2
- .select__skeleton_1f6a1 {
1
+ /* hash: 1fned */
2
+ .select__skeleton_1eba2 {
3
3
  position: absolute;
4
4
  top: 50%;
5
5
  transform: translateY(-50%);
package/shared.js CHANGED
@@ -13,7 +13,7 @@ var components_baseOption_Component = require('./components/base-option/Componen
13
13
  var components_search_Component = require('./components/search/Component.js');
14
14
  var presets_useSelectWithLoading_hook = require('./presets/useSelectWithLoading/hook.js');
15
15
  var presets_useLazyLoading_hook = require('./presets/useLazyLoading/hook.js');
16
- var presets_useSelectWithApply_optionsListWithApply_Component = require('./hook-45ab0a9c.js');
16
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('./hook-a6f060a1.js');
17
17
  var utils = require('./utils.js');
18
18
  require('react');
19
19
  require('classnames');
@@ -141,6 +141,8 @@ export const SelectMobile = forwardRef(
141
141
  selected={selected}
142
142
  onChange={onChange}
143
143
  OptionsList={OptionsList}
144
+ showSearch={showSearch}
145
+ searchProps={searchProps}
144
146
  bottomSheetProps={{
145
147
  bottomAddons: useWithApplyHook && showHeaderWithSelectAll && (
146
148
  <Header {...applyProps.optionsListProps.headerProps} mobile={true} />
@@ -134,6 +134,8 @@ export const SelectModalMobile = forwardRef(
134
134
  onChange={onChange}
135
135
  OptionsList={OptionsList}
136
136
  optionsListProps={optionsListProps}
137
+ showSearch={showSearch}
138
+ searchProps={searchProps}
137
139
  modalHeaderProps={{
138
140
  bottomAddons: useWithApplyHook && showHeaderWithSelectAll && (
139
141
  <Header {...applyProps.optionsListProps.headerProps} mobile={true} />
@@ -171,6 +171,7 @@ export const BaseSelect = forwardRef(
171
171
  highlightedIndex,
172
172
  toggleMenu,
173
173
  openMenu,
174
+ setHighlightedIndex,
174
175
  } = useCombobox<OptionShape>({
175
176
  id,
176
177
  isOpen: openProp,
@@ -274,7 +275,15 @@ export const BaseSelect = forwardRef(
274
275
 
275
276
  const handleFieldKeyDown = (event: KeyboardEvent<HTMLDivElement | HTMLInputElement>) => {
276
277
  inputProps.onKeyDown(event);
277
- if (autocomplete && !open && (event.key.length === 1 || event.key === 'Backspace')) {
278
+
279
+ // https://caniuse.com/?search=KeyboardEvent.key
280
+ const isKeyUnsupported = event.key === 'Unidentified';
281
+
282
+ if (
283
+ autocomplete &&
284
+ !open &&
285
+ (isKeyUnsupported || event.key.length === 1 || event.key === 'Backspace')
286
+ ) {
278
287
  // Для автокомплита - открываем меню при начале ввода
279
288
  openMenu();
280
289
  }
@@ -330,7 +339,7 @@ export const BaseSelect = forwardRef(
330
339
  size: optionsSize,
331
340
  disabled: option.disabled,
332
341
  highlighted: index === highlightedIndex,
333
- selected: selectedItems.includes(option),
342
+ selected: selectedItems.some(({ key }) => key === option.key),
334
343
  dataTestId: getDataTestId(dataTestId, 'option'),
335
344
  }),
336
345
  [
@@ -540,6 +549,7 @@ export const BaseSelect = forwardRef(
540
549
  >
541
550
  <OptionsList
542
551
  {...(optionsListProps as AnyObject)}
552
+ setHighlightedIndex={setHighlightedIndex}
543
553
  optionsListWidth={optionsListWidth}
544
554
  flatOptions={flatOptions}
545
555
  highlightedIndex={highlightedIndex}
@@ -323,7 +323,15 @@ export const BaseSelectMobile = forwardRef(
323
323
 
324
324
  const handleFieldKeyDown = (event: KeyboardEvent<HTMLDivElement | HTMLInputElement>) => {
325
325
  inputProps.onKeyDown(event);
326
- if (autocomplete && !open && (event.key.length === 1 || event.key === 'Backspace')) {
326
+
327
+ // https://caniuse.com/?search=KeyboardEvent.key
328
+ const isKeyUnsupported = event.key === 'Unidentified';
329
+
330
+ if (
331
+ autocomplete &&
332
+ !open &&
333
+ (isKeyUnsupported || event.key.length === 1 || event.key === 'Backspace')
334
+ ) {
327
335
  // Для автокомплита - открываем меню при начале ввода
328
336
  openMenu();
329
337
  }
@@ -349,7 +357,7 @@ export const BaseSelectMobile = forwardRef(
349
357
  };
350
358
 
351
359
  const getOptionProps = (option: OptionShape, index: number): OptionProps => {
352
- const selectedItem = selectedItems.includes(option);
360
+ const selectedItem = selectedItems.some(({ key }) => key === option.key);
353
361
 
354
362
  return {
355
363
  ...(optionProps as object),
@@ -539,8 +547,13 @@ export const BaseSelectMobile = forwardRef(
539
547
  <ModalMobile.Header
540
548
  hasCloser={true}
541
549
  sticky={true}
542
- bottomAddons={renderSearch()}
543
550
  {...modalHeaderProps}
551
+ bottomAddons={
552
+ <React.Fragment>
553
+ {renderSearch()}
554
+ {modalHeaderProps?.bottomAddons}
555
+ </React.Fragment>
556
+ }
544
557
  >
545
558
  {label || placeholder}
546
559
  </ModalMobile.Header>
@@ -49,7 +49,7 @@
49
49
  }
50
50
 
51
51
  .search {
52
- padding: var(--gap-m) var(--gap-xs) var(--gap-s);
52
+ padding: var(--gap-xs);
53
53
  }
54
54
 
55
55
  /* width: max-content; fix for IE */
@@ -41,6 +41,7 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
41
41
  optionsListWidth,
42
42
  nativeScrollbar: nativeScrollbarProp,
43
43
  flatOptions = [],
44
+ setHighlightedIndex,
44
45
  },
45
46
  ref,
46
47
  ) => {
@@ -120,17 +121,24 @@ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
120
121
  </div>
121
122
  );
122
123
 
124
+ const resetHighlightedIndex = () => setHighlightedIndex?.(-1);
125
+
123
126
  return (
124
127
  <div
125
128
  {...(nativeScrollbar && { 'data-test-id': dataTestId })}
126
129
  className={cn(styles.optionsList, styles[size], className)}
127
130
  >
128
- {header && <div className={styles.optionsListHeader}>{header}</div>}
131
+ {header && (
132
+ <div className={styles.optionsListHeader} onMouseEnter={resetHighlightedIndex}>
133
+ {header}
134
+ </div>
135
+ )}
129
136
 
130
137
  {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}
131
138
 
132
139
  {showFooter && footer && (
133
140
  <div
141
+ onMouseEnter={resetHighlightedIndex}
134
142
  className={cn(styles.optionsListFooter, {
135
143
  [styles.withBorder]:
136
144
  visibleOptions && flatOptions.length > visibleOptions,
@@ -34,6 +34,7 @@ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
34
34
  optionsListWidth,
35
35
  onScroll,
36
36
  nativeScrollbar: nativeScrollbarProp,
37
+ setHighlightedIndex,
37
38
  },
38
39
  ref,
39
40
  ) => {
@@ -184,6 +185,8 @@ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
184
185
  return <div {...contentNodeProps}>{renderList()}</div>;
185
186
  };
186
187
 
188
+ const resetHighlightedIndex = () => setHighlightedIndex?.(-1);
189
+
187
190
  if (options.length === 0 && !emptyPlaceholder) {
188
191
  return null;
189
192
  }
@@ -193,7 +196,14 @@ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
193
196
  className={cn(styles.virtualOptionsList, styles[size], className)}
194
197
  data-test-id={dataTestId}
195
198
  >
196
- {header && <div className={styles.virtualOptionsListHeader}>{header}</div>}
199
+ {header && (
200
+ <div
201
+ className={styles.virtualOptionsListHeader}
202
+ onMouseEnter={resetHighlightedIndex}
203
+ >
204
+ {header}
205
+ </div>
206
+ )}
197
207
 
198
208
  {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}
199
209
 
@@ -203,6 +213,7 @@ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
203
213
 
204
214
  {showFooter && footer && (
205
215
  <div
216
+ onMouseEnter={resetHighlightedIndex}
206
217
  className={cn(styles.virtualOptionsListFooter, {
207
218
  [styles.withBorder]:
208
219
  visibleOptions && flatOptions.length > visibleOptions,
@@ -48,7 +48,7 @@ export const OptionsListWithApply = forwardRef<HTMLDivElement, OptionsListWithAp
48
48
  const selected =
49
49
  option.key === SELECT_ALL_KEY
50
50
  ? selectedDraft.length === flatOptions.length - 1
51
- : selectedDraft.includes(option);
51
+ : selectedDraft.some(({ key }) => key === option.key);
52
52
 
53
53
  return {
54
54
  ...optionProps,
package/src/typings.ts CHANGED
@@ -580,6 +580,11 @@ export type OptionsListProps = {
580
580
  * Обработчик отмены изменений
581
581
  */
582
582
  onClear?: () => void;
583
+
584
+ /**
585
+ * Указать индекс пункта для hover состояния
586
+ */
587
+ setHighlightedIndex?: (index: number) => void;
583
588
  };
584
589
 
585
590
  export type OptgroupProps = {
@@ -69,6 +69,8 @@ type ComponentProps = {
69
69
  * Дочерние элементы.
70
70
  */
71
71
  children?: ReactNode;
72
+ };
73
+ type PrivateButtonProps = {
72
74
  /**
73
75
  * Основные стили компонента.
74
76
  */
@@ -80,16 +82,12 @@ type ComponentProps = {
80
82
  */
81
83
  colorStylesMap: StyleColors;
82
84
  };
83
- type AnchorBaseButtonProps = ComponentProps & AnchorHTMLAttributes<HTMLAnchorElement>;
84
- type NativeBaseButtonProps = ComponentProps & ButtonHTMLAttributes<HTMLButtonElement>;
85
- type BaseButtonProps = Partial<AnchorBaseButtonProps | NativeBaseButtonProps>;
86
- type AnchorButtonProps = Omit<BaseButtonProps, 'styles' | 'colorStylesMap'> & AnchorHTMLAttributes<HTMLAnchorElement>;
87
- type NativeButtonProps = Omit<BaseButtonProps, 'styles' | 'colorStylesMap'> & ButtonHTMLAttributes<HTMLButtonElement>;
88
- type ButtonProps = Partial<AnchorButtonProps | NativeButtonProps> & {
85
+ type CommonButtonProps = ComponentProps & Partial<AnchorHTMLAttributes<HTMLAnchorElement> | ButtonHTMLAttributes<HTMLButtonElement>>;
86
+ type ButtonProps = CommonButtonProps & {
89
87
  /**
90
88
  * Контрольная точка, с нее начинается desktop версия
91
89
  * @default 1024
92
90
  */
93
91
  breakpoint?: number;
94
92
  };
95
- export { StyleColors, ComponentProps, AnchorBaseButtonProps, NativeBaseButtonProps, BaseButtonProps, AnchorButtonProps, NativeButtonProps, ButtonProps };
93
+ export { StyleColors, ComponentProps, PrivateButtonProps, CommonButtonProps, ButtonProps };
package/typings.d.ts CHANGED
@@ -459,6 +459,10 @@ type OptionsListProps = {
459
459
  * Обработчик отмены изменений
460
460
  */
461
461
  onClear?: () => void;
462
+ /**
463
+ * Указать индекс пункта для hover состояния
464
+ */
465
+ setHighlightedIndex?: (index: number) => void;
462
466
  };
463
467
  type OptgroupProps = {
464
468
  /**
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import React from "react";
3
- import { AnchorButtonProps, NativeButtonProps } from "./typings-9211a437";
4
- type ButtonDesktopProps = Partial<AnchorButtonProps | NativeButtonProps>;
5
- declare const ButtonDesktop: React.ForwardRefExoticComponent<ButtonDesktopProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
6
- export { ButtonDesktopProps, ButtonDesktop };
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import React from "react";
3
- import { AnchorButtonProps, NativeButtonProps } from "./typings-9211a437";
4
- type ButtonDesktopProps = Partial<AnchorButtonProps | NativeButtonProps>;
5
- declare const ButtonDesktop: React.ForwardRefExoticComponent<ButtonDesktopProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
6
- export { ButtonDesktopProps, ButtonDesktop };
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import React from "react";
3
- import { AnchorButtonProps, NativeButtonProps } from "./typings-9211a437";
4
- type ButtonDesktopProps = Partial<AnchorButtonProps | NativeButtonProps>;
5
- declare const ButtonDesktop: React.ForwardRefExoticComponent<ButtonDesktopProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
6
- export { ButtonDesktopProps, ButtonDesktop };
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import React from "react";
3
- import { AnchorButtonProps, NativeButtonProps } from "./typings-9211a437";
4
- type ButtonDesktopProps = Partial<AnchorButtonProps | NativeButtonProps>;
5
- declare const ButtonDesktop: React.ForwardRefExoticComponent<ButtonDesktopProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
6
- export { ButtonDesktopProps, ButtonDesktop };
File without changes
File without changes
File without changes