@alfalab/core-components-select 17.19.0 → 17.20.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 (246) hide show
  1. package/components/arrow/Component.js +1 -1
  2. package/components/arrow/index.css +5 -5
  3. package/components/base-checkmark/Component.js +1 -1
  4. package/components/base-checkmark/index.css +6 -6
  5. package/components/base-option/Component.js +1 -1
  6. package/components/base-option/index.css +15 -15
  7. package/components/base-select/Component.js +2 -2
  8. package/components/base-select/components/list-desktop/helpers/get-list-popover-desktop-props.d.ts +1 -1
  9. package/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  10. package/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  11. package/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  12. package/components/base-select/index.css +11 -11
  13. package/components/base-select/mobile.css +12 -12
  14. package/components/checkmark/Component.js +1 -1
  15. package/components/checkmark/index.css +10 -10
  16. package/components/checkmark-mobile/Component.js +1 -1
  17. package/components/checkmark-mobile/index.css +6 -6
  18. package/components/clear-button/Component.js +1 -1
  19. package/components/clear-button/index.css +7 -7
  20. package/components/field/Component.js +1 -1
  21. package/components/field/index.css +14 -14
  22. package/components/footer/Component.js +1 -1
  23. package/components/footer/index.css +5 -5
  24. package/components/index.js +6 -2
  25. package/components/optgroup/Component.js +1 -1
  26. package/components/optgroup/index.css +6 -6
  27. package/components/option/Component.d.ts +16 -3
  28. package/components/option/Component.js +4 -9
  29. package/components/option/Component.responsive.d.ts +5 -0
  30. package/components/option/Component.responsive.js +19 -0
  31. package/components/option/desktop/Component.d.ts +5 -0
  32. package/components/option/desktop/Component.js +22 -0
  33. package/components/option/desktop/index.css +135 -0
  34. package/components/option/index.d.ts +3 -1
  35. package/components/option/index.js +6 -2
  36. package/components/option/mobile/Component.d.ts +5 -0
  37. package/components/option/mobile/Component.js +22 -0
  38. package/components/option/{index.css → mobile/index.css} +19 -19
  39. package/components/options-list/Component.js +1 -1
  40. package/components/options-list/index.css +11 -11
  41. package/components/search/Component.js +1 -1
  42. package/components/search/index.css +2 -2
  43. package/components/virtual-options-list/Component.js +8 -4
  44. package/components/virtual-options-list/index.css +15 -15
  45. package/cssm/components/index.js +6 -2
  46. package/cssm/components/option/Component.d.ts +16 -3
  47. package/cssm/components/option/Component.js +10 -14
  48. package/cssm/components/option/Component.responsive.d.ts +5 -0
  49. package/cssm/components/option/Component.responsive.js +19 -0
  50. package/cssm/components/option/desktop/Component.d.ts +5 -0
  51. package/cssm/components/option/desktop/Component.js +21 -0
  52. package/cssm/components/option/desktop/index.module.css +134 -0
  53. package/cssm/components/option/index.d.ts +3 -1
  54. package/cssm/components/option/index.js +6 -2
  55. package/cssm/components/option/mobile/Component.d.ts +5 -0
  56. package/cssm/components/option/mobile/Component.js +21 -0
  57. package/cssm/components/option/mobile/index.module.css +128 -0
  58. package/cssm/components/virtual-options-list/Component.js +7 -3
  59. package/cssm/desktop/Component.desktop.js +11 -2
  60. package/cssm/mobile/Component.mobile.js +11 -2
  61. package/cssm/presets/useLazyLoading/hook.js +11 -2
  62. package/cssm/presets/useSelectWithLoading/hook.js +11 -2
  63. package/cssm/shared/index.js +6 -2
  64. package/cssm/typings.d.ts +5 -3
  65. package/desktop/Component.desktop.js +7 -2
  66. package/esm/components/arrow/Component.js +1 -1
  67. package/esm/components/arrow/index.css +5 -5
  68. package/esm/components/base-checkmark/Component.js +1 -1
  69. package/esm/components/base-checkmark/index.css +6 -6
  70. package/esm/components/base-option/Component.js +1 -1
  71. package/esm/components/base-option/index.css +15 -15
  72. package/esm/components/base-select/Component.js +2 -2
  73. package/esm/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  74. package/esm/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  75. package/esm/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  76. package/esm/components/base-select/index.css +11 -11
  77. package/esm/components/base-select/mobile.css +12 -12
  78. package/esm/components/checkmark/Component.js +1 -1
  79. package/esm/components/checkmark/index.css +10 -10
  80. package/esm/components/checkmark-mobile/Component.js +1 -1
  81. package/esm/components/checkmark-mobile/index.css +6 -6
  82. package/esm/components/clear-button/Component.js +1 -1
  83. package/esm/components/clear-button/index.css +7 -7
  84. package/esm/components/field/Component.js +1 -1
  85. package/esm/components/field/index.css +14 -14
  86. package/esm/components/footer/Component.js +1 -1
  87. package/esm/components/footer/index.css +5 -5
  88. package/esm/components/index.js +3 -1
  89. package/esm/components/optgroup/Component.js +1 -1
  90. package/esm/components/optgroup/index.css +6 -6
  91. package/esm/components/option/Component.d.ts +16 -3
  92. package/esm/components/option/Component.js +6 -11
  93. package/esm/components/option/Component.responsive.d.ts +5 -0
  94. package/esm/components/option/Component.responsive.js +11 -0
  95. package/esm/components/option/desktop/Component.d.ts +5 -0
  96. package/esm/components/option/desktop/Component.js +14 -0
  97. package/esm/components/option/desktop/index.css +135 -0
  98. package/esm/components/option/index.d.ts +3 -1
  99. package/esm/components/option/index.js +3 -1
  100. package/esm/components/option/mobile/Component.d.ts +5 -0
  101. package/esm/components/option/mobile/Component.js +14 -0
  102. package/esm/components/option/{index.css → mobile/index.css} +19 -19
  103. package/esm/components/options-list/Component.js +1 -1
  104. package/esm/components/options-list/index.css +11 -11
  105. package/esm/components/search/Component.js +1 -1
  106. package/esm/components/search/index.css +2 -2
  107. package/esm/components/virtual-options-list/Component.js +8 -4
  108. package/esm/components/virtual-options-list/index.css +15 -15
  109. package/esm/desktop/Component.desktop.js +8 -3
  110. package/esm/{list-popover-desktop-3f111509.js → list-popover-desktop-e50a493c.js} +1 -1
  111. package/esm/mobile/Component.mobile.js +9 -4
  112. package/esm/mobile.module-3e93ab18.js +4 -0
  113. package/esm/presets/index.js +1 -1
  114. package/esm/presets/useLazyLoading/hook.js +8 -3
  115. package/esm/presets/useSelectWithApply/hook.js +1 -1
  116. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  117. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  118. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  119. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  120. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  121. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  122. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  123. package/esm/presets/useSelectWithLoading/hook.js +9 -4
  124. package/esm/presets/useSelectWithLoading/index.css +2 -2
  125. package/esm/shared/index.js +4 -2
  126. package/esm/typings.d.ts +5 -3
  127. package/{list-popover-desktop-a809f4f3.js → list-popover-desktop-65455002.js} +1 -1
  128. package/mobile/Component.mobile.js +8 -3
  129. package/mobile.module-f81e94c5.js +6 -0
  130. package/modern/components/arrow/Component.js +1 -1
  131. package/modern/components/arrow/index.css +5 -5
  132. package/modern/components/base-checkmark/Component.js +1 -1
  133. package/modern/components/base-checkmark/index.css +6 -6
  134. package/modern/components/base-option/Component.js +1 -1
  135. package/modern/components/base-option/index.css +15 -15
  136. package/modern/components/base-select/Component.js +2 -2
  137. package/modern/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  138. package/modern/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  139. package/modern/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  140. package/modern/components/base-select/index.css +11 -11
  141. package/modern/components/base-select/mobile.css +12 -12
  142. package/modern/components/checkmark/Component.js +1 -1
  143. package/modern/components/checkmark/index.css +10 -10
  144. package/modern/components/checkmark-mobile/Component.js +1 -1
  145. package/modern/components/checkmark-mobile/index.css +6 -6
  146. package/modern/components/clear-button/Component.js +1 -1
  147. package/modern/components/clear-button/index.css +7 -7
  148. package/modern/components/field/Component.js +1 -1
  149. package/modern/components/field/index.css +14 -14
  150. package/modern/components/footer/Component.js +1 -1
  151. package/modern/components/footer/index.css +5 -5
  152. package/modern/components/index.js +3 -1
  153. package/modern/components/optgroup/Component.js +1 -1
  154. package/modern/components/optgroup/index.css +6 -6
  155. package/modern/components/option/Component.d.ts +16 -3
  156. package/modern/components/option/Component.js +4 -9
  157. package/modern/components/option/Component.responsive.d.ts +5 -0
  158. package/modern/components/option/Component.responsive.js +7 -0
  159. package/modern/components/option/desktop/Component.d.ts +5 -0
  160. package/modern/components/option/desktop/Component.js +10 -0
  161. package/modern/components/option/desktop/index.css +135 -0
  162. package/modern/components/option/index.d.ts +3 -1
  163. package/modern/components/option/index.js +3 -1
  164. package/modern/components/option/mobile/Component.d.ts +5 -0
  165. package/modern/components/option/mobile/Component.js +10 -0
  166. package/modern/components/option/{index.css → mobile/index.css} +19 -19
  167. package/modern/components/options-list/Component.js +1 -1
  168. package/modern/components/options-list/index.css +11 -11
  169. package/modern/components/search/Component.js +1 -1
  170. package/modern/components/search/index.css +2 -2
  171. package/modern/components/virtual-options-list/Component.js +3 -3
  172. package/modern/components/virtual-options-list/index.css +15 -15
  173. package/modern/desktop/Component.desktop.js +7 -2
  174. package/modern/{list-popover-desktop-6d15956b.js → list-popover-desktop-39136773.js} +1 -1
  175. package/modern/mobile/Component.mobile.js +9 -4
  176. package/modern/mobile.module-7061a16e.js +4 -0
  177. package/modern/presets/index.js +1 -1
  178. package/modern/presets/useLazyLoading/hook.js +8 -3
  179. package/modern/presets/useSelectWithApply/hook.js +1 -1
  180. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  181. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  182. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  183. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  184. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  185. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  186. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  187. package/modern/presets/useSelectWithLoading/hook.js +9 -4
  188. package/modern/presets/useSelectWithLoading/index.css +2 -2
  189. package/modern/shared/index.js +4 -2
  190. package/modern/typings.d.ts +5 -3
  191. package/moderncssm/components/index.js +3 -1
  192. package/moderncssm/components/option/Component.d.ts +16 -3
  193. package/moderncssm/components/option/Component.js +4 -7
  194. package/moderncssm/components/option/Component.responsive.d.ts +5 -0
  195. package/moderncssm/components/option/Component.responsive.js +7 -0
  196. package/moderncssm/components/option/desktop/Component.d.ts +5 -0
  197. package/moderncssm/components/option/desktop/Component.js +8 -0
  198. package/moderncssm/components/option/desktop/index.module.css +118 -0
  199. package/moderncssm/components/option/index.d.ts +3 -1
  200. package/moderncssm/components/option/index.js +3 -1
  201. package/moderncssm/components/option/mobile/Component.d.ts +5 -0
  202. package/moderncssm/components/option/mobile/Component.js +8 -0
  203. package/moderncssm/components/option/mobile/index.module.css +110 -0
  204. package/moderncssm/components/virtual-options-list/Component.js +2 -2
  205. package/moderncssm/desktop/Component.desktop.js +11 -2
  206. package/moderncssm/mobile/Component.mobile.js +12 -3
  207. package/moderncssm/presets/useLazyLoading/hook.js +12 -3
  208. package/moderncssm/presets/useSelectWithLoading/hook.js +12 -3
  209. package/moderncssm/shared/index.js +3 -1
  210. package/moderncssm/typings.d.ts +5 -3
  211. package/package.json +1 -1
  212. package/presets/index.js +1 -1
  213. package/presets/useLazyLoading/hook.js +7 -2
  214. package/presets/useSelectWithApply/hook.js +1 -1
  215. package/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  216. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  217. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  218. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  219. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  220. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  221. package/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  222. package/presets/useSelectWithLoading/hook.js +8 -3
  223. package/presets/useSelectWithLoading/index.css +2 -2
  224. package/shared/index.js +7 -3
  225. package/src/components/option/Component.responsive.tsx +9 -0
  226. package/src/components/option/Component.tsx +17 -6
  227. package/src/components/option/desktop/Component.tsx +11 -0
  228. package/src/components/option/desktop/index.module.css +13 -0
  229. package/src/components/option/index.ts +3 -1
  230. package/src/components/option/mobile/Component.tsx +11 -0
  231. package/src/components/option/mobile/index.module.css +3 -0
  232. package/src/components/virtual-options-list/Component.tsx +6 -3
  233. package/src/typings.ts +4 -2
  234. package/typings.d.ts +5 -3
  235. package/esm/mobile.module-8b1bdca7.js +0 -4
  236. package/mobile.module-e1d050c2.js +0 -6
  237. package/modern/mobile.module-13db2bf1.js +0 -4
  238. /package/esm/{hook-1ba9fd0a.d.ts → hook-754422a7.d.ts} +0 -0
  239. /package/esm/{hook-1ba9fd0a.js → hook-754422a7.js} +0 -0
  240. /package/esm/{list-popover-desktop-3f111509.d.ts → list-popover-desktop-e50a493c.d.ts} +0 -0
  241. /package/{hook-639eaf6a.d.ts → hook-e07a6d8c.d.ts} +0 -0
  242. /package/{hook-639eaf6a.js → hook-e07a6d8c.js} +0 -0
  243. /package/{list-popover-desktop-a809f4f3.d.ts → list-popover-desktop-65455002.d.ts} +0 -0
  244. /package/modern/{hook-f9dc9773.d.ts → hook-80b83b8e.d.ts} +0 -0
  245. /package/modern/{hook-f9dc9773.js → hook-80b83b8e.js} +0 -0
  246. /package/modern/{list-popover-desktop-6d15956b.d.ts → list-popover-desktop-39136773.d.ts} +0 -0
@@ -95,9 +95,9 @@ const VirtualOptionsList = forwardRef(({ size = 48, flatOptions = [], highlighte
95
95
  const group = options[groupStartIndexes[virtualRow.index]];
96
96
  if (!group)
97
97
  return null;
98
- const groupSelectedItems = selectedItems?.filter((item) => group.options.includes(item));
98
+ const groupSelectedItems = selectedItems?.filter(({ key: selectedItemKey }) => group.options.some((opt) => opt.key === selectedItemKey));
99
99
  const handleSelectedItems = (items) => {
100
- setSelectedItems((selectedItems?.filter((item) => !group.options.includes(item)) ?? []).concat(items));
100
+ setSelectedItems((selectedItems?.filter(({ key: selectedItemKey }) => !group.options.some((opt) => opt.key === selectedItemKey)) ?? []).concat(items));
101
101
  };
102
102
  return (React.createElement(Optgroup$1, { label: group.label, size: size, className: optionGroupClassName, options: group.options, selectedItems: groupSelectedItems, setSelectedItems: handleSelectedItems, search: search, multiple: multiple, ...groupOptionProps }));
103
103
  };
@@ -5,11 +5,20 @@ import { Arrow } from '../components/arrow/Component.js';
5
5
  import { BaseSelect } from '../components/base-select/Component.js';
6
6
  import { Field } from '../components/field/Component.js';
7
7
  import { Optgroup } from '../components/optgroup/Component.js';
8
- import { Option } from '../components/option/Component.js';
8
+ import 'classnames';
9
+ import '@alfalab/core-components-badge/moderncssm';
10
+ import '@alfalab/core-components-checkbox/moderncssm';
11
+ import '@alfalab/icons-glyph/CheckmarkCircleMIcon';
12
+ import '@alfalab/icons-glyph/CheckmarkMIcon';
13
+ import '../components/checkmark/index.module.css';
14
+ import '../components/option/desktop/index.module.css';
15
+ import '../components/checkmark-mobile/index.module.css';
16
+ import '../components/option/mobile/index.module.css';
17
+ import { OptionResponsive } from '../components/option/Component.responsive.js';
9
18
  import { OptionsList } from '../components/options-list/Component.js';
10
19
  import { Search } from '../components/search/Component.js';
11
20
 
12
- const SelectDesktop = forwardRef(({ Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, OptionsList: OptionsList$1 = OptionsList, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Search: Search$1 = Search, fieldProps = {}, ...restProps }, ref) => (React.createElement(BaseSelect, { ref: ref, view: 'desktop', Option: Option$1, Field: Field$1, fieldProps: {
21
+ const SelectDesktop = forwardRef(({ Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, OptionsList: OptionsList$1 = OptionsList, Optgroup: Optgroup$1 = Optgroup, Option = OptionResponsive, Search: Search$1 = Search, fieldProps = {}, ...restProps }, ref) => (React.createElement(BaseSelect, { ref: ref, view: 'desktop', Option: Option, Field: Field$1, fieldProps: {
13
22
  FormControlComponent: FormControlDesktop,
14
23
  ...fieldProps,
15
24
  }, Search: Search$1, Optgroup: Optgroup$1, OptionsList: OptionsList$1, Arrow: Arrow$1, Popover: Popover, ...restProps })));
@@ -7,7 +7,16 @@ import { BaseSelect } from '../components/base-select/Component.js';
7
7
  import { Field } from '../components/field/Component.js';
8
8
  import { Footer } from '../components/footer/Component.js';
9
9
  import { Optgroup } from '../components/optgroup/Component.js';
10
- import { Option } from '../components/option/Component.js';
10
+ import 'classnames';
11
+ import '@alfalab/core-components-badge/moderncssm';
12
+ import '@alfalab/core-components-checkbox/moderncssm';
13
+ import '@alfalab/icons-glyph/CheckmarkCircleMIcon';
14
+ import '@alfalab/icons-glyph/CheckmarkMIcon';
15
+ import '../components/checkmark/index.module.css';
16
+ import '../components/option/desktop/index.module.css';
17
+ import '../components/checkmark-mobile/index.module.css';
18
+ import '../components/option/mobile/index.module.css';
19
+ import { OptionResponsive } from '../components/option/Component.responsive.js';
11
20
  import { OptionsList } from '../components/options-list/Component.js';
12
21
  import { Search } from '../components/search/Component.js';
13
22
  import { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
@@ -15,7 +24,7 @@ import { u as useSelectWithApply } from '../hook-50057c35.js';
15
24
  import { Header } from '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
16
25
 
17
26
  const VIRTUAL_OPTIONS_LIST_THRESHOLD = 30;
18
- const SelectMobile = forwardRef(({ autocomplete = false, multiple = false, allowUnselect = false, disabled = false, closeOnSelect = !multiple, circularNavigation = false, defaultOpen = false, open: openProp, size = 56, optionsSize = 56, fieldProps = {}, optionProps = {}, optionsListProps = {}, Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Search: Search$1 = Search, selected, options, OptionsList: OptionsList$1 = options.length > VIRTUAL_OPTIONS_LIST_THRESHOLD
27
+ const SelectMobile = forwardRef(({ autocomplete = false, multiple = false, allowUnselect = false, disabled = false, closeOnSelect = !multiple, circularNavigation = false, defaultOpen = false, open: openProp, size = 56, optionsSize = 56, fieldProps = {}, optionProps = {}, optionsListProps = {}, Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, Optgroup: Optgroup$1 = Optgroup, Option = OptionResponsive, Search: Search$1 = Search, selected, options, OptionsList: OptionsList$1 = options.length > VIRTUAL_OPTIONS_LIST_THRESHOLD
19
28
  ? VirtualOptionsList
20
29
  : OptionsList, onChange, showClear = true, showSelectAll, showHeaderWithSelectAll, useWithApplyHook = multiple, showSearch, searchProps, ...restProps }, ref) => {
21
30
  const applyProps = useSelectWithApply({
@@ -38,7 +47,7 @@ const SelectMobile = forwardRef(({ autocomplete = false, multiple = false, allow
38
47
  return (React.createElement(BaseSelect, { ref: ref, view: 'mobile', autocomplete: autocomplete, multiple: multiple, allowUnselect: allowUnselect, disabled: disabled, closeOnSelect: closeOnSelect, circularNavigation: circularNavigation, defaultOpen: defaultOpen, open: openProp, size: size, optionsSize: optionsSize, fieldProps: {
39
48
  FormControlComponent: FormControlMobile,
40
49
  ...fieldProps,
41
- }, optionProps: optionProps, Arrow: Arrow$1, Field: Field$1, Optgroup: Optgroup$1, Option: Option$1, Search: Search$1, options: options, selected: selected, onChange: onChange, OptionsList: OptionsList$1, showSearch: showSearch, searchProps: searchProps, BottomSheet: BottomSheet, ModalMobile: ModalMobile, optionsListProps: optionsListProps, ...restProps, ...(restProps.isBottomSheet === false
50
+ }, optionProps: optionProps, Arrow: Arrow$1, Field: Field$1, Optgroup: Optgroup$1, Option: Option, Search: Search$1, options: options, selected: selected, onChange: onChange, OptionsList: OptionsList$1, showSearch: showSearch, searchProps: searchProps, BottomSheet: BottomSheet, ModalMobile: ModalMobile, optionsListProps: optionsListProps, ...restProps, ...(restProps.isBottomSheet === false
42
51
  ? {
43
52
  modalHeaderProps: {
44
53
  bottomAddons,
@@ -1,6 +1,15 @@
1
1
  import React, { useReducer, useRef, useCallback, useEffect, useMemo } from 'react';
2
2
  import { Skeleton } from '@alfalab/core-components-skeleton/moderncssm';
3
- import { Option } from '../../components/option/Component.js';
3
+ import 'classnames';
4
+ import '@alfalab/core-components-badge/moderncssm';
5
+ import '@alfalab/core-components-checkbox/moderncssm';
6
+ import '@alfalab/icons-glyph/CheckmarkCircleMIcon';
7
+ import '@alfalab/icons-glyph/CheckmarkMIcon';
8
+ import '../../components/checkmark/index.module.css';
9
+ import '../../components/option/desktop/index.module.css';
10
+ import '../../components/checkmark-mobile/index.module.css';
11
+ import '../../components/option/mobile/index.module.css';
12
+ import { OptionResponsive } from '../../components/option/Component.responsive.js';
4
13
  import 'intersection-observer';
5
14
 
6
15
  const DEBOUNCE_TIMEOUT = 300;
@@ -31,7 +40,7 @@ const skeletonStyle = {
31
40
  height: '16px',
32
41
  width: '50%',
33
42
  };
34
- function useLazyLoading({ limit = 10, initialOffset = 0, optionsFetcher, skeleton = React.createElement(Skeleton, { style: skeletonStyle, visible: true }), Option: Option$1 = Option, }) {
43
+ function useLazyLoading({ limit = 10, initialOffset = 0, optionsFetcher, skeleton = React.createElement(Skeleton, { style: skeletonStyle, visible: true }), Option = OptionResponsive, }) {
35
44
  const initialOptions = [];
36
45
  const initialLoading = false;
37
46
  const lazyLoadingInitialState = {
@@ -184,7 +193,7 @@ function useLazyLoading({ limit = 10, initialOffset = 0, optionsFetcher, skeleto
184
193
  }, DEBOUNCE_TIMEOUT);
185
194
  /* eslint-enable */
186
195
  }, []);
187
- const renderOption = (props) => (React.createElement(Option$1, { ...props, highlighted: loading ? false : props.highlighted }));
196
+ const renderOption = (props) => (React.createElement(Option, { ...props, highlighted: loading ? false : props.highlighted }));
188
197
  const skeletonOptions = useMemo(() => Array(loading ? limit : 0)
189
198
  .fill(0)
190
199
  .map((_, key) => ({
@@ -1,10 +1,19 @@
1
1
  import React from 'react';
2
2
  import { Skeleton } from '@alfalab/core-components-skeleton/moderncssm';
3
- import { Option } from '../../components/option/Component.js';
3
+ import 'classnames';
4
+ import '@alfalab/core-components-badge/moderncssm';
5
+ import '@alfalab/core-components-checkbox/moderncssm';
6
+ import '@alfalab/icons-glyph/CheckmarkCircleMIcon';
7
+ import '@alfalab/icons-glyph/CheckmarkMIcon';
8
+ import '../../components/checkmark/index.module.css';
9
+ import '../../components/option/desktop/index.module.css';
10
+ import '../../components/checkmark-mobile/index.module.css';
11
+ import '../../components/option/mobile/index.module.css';
12
+ import { OptionResponsive } from '../../components/option/Component.responsive.js';
4
13
  import styles from './index.module.css';
5
14
 
6
- function useSelectWithLoading({ loading = false, visibleOptions = 6, Option: Option$1 = Option, }) {
7
- const renderOption = (props) => (React.createElement(Option$1, { ...props, Checkmark: null, highlighted: loading ? false : props.highlighted }));
15
+ function useSelectWithLoading({ loading = false, visibleOptions = 6, Option = OptionResponsive, }) {
16
+ const renderOption = (props) => (React.createElement(Option, { ...props, Checkmark: null, highlighted: loading ? false : props.highlighted }));
8
17
  const options = Array(visibleOptions)
9
18
  .fill(0)
10
19
  .map((_, key) => ({
@@ -2,7 +2,9 @@ export { useSelectWithLoading } from '../presets/useSelectWithLoading/hook.js';
2
2
  export { useLazyLoading } from '../presets/useLazyLoading/hook.js';
3
3
  export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-50057c35.js';
4
4
  export { defaultAccessor, defaultFilterFn, defaultGroupAccessor, getSelectTestIds, isGroup, isOptionShape, joinOptions, lastIndexOf, processOptions, usePrevious, useVirtualVisibleOptions, useVisibleOptions } from '../utils.js';
5
- export { Option } from '../components/option/Component.js';
5
+ export { OptionDesktop } from '../components/option/desktop/Component.js';
6
+ export { OptionMobile } from '../components/option/mobile/Component.js';
7
+ export { OptionResponsive as Option } from '../components/option/Component.responsive.js';
6
8
  export { BaseOption } from '../components/base-option/Component.js';
7
9
  export { OptionsList } from '../components/options-list/Component.js';
8
10
  export { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
@@ -567,7 +567,7 @@ type OptgroupProps = {
567
567
  */
568
568
  multiple?: boolean;
569
569
  };
570
- type OptionProps = {
570
+ type OptionCommonProps = {
571
571
  /**
572
572
  * Дополнительный класс
573
573
  */
@@ -631,8 +631,10 @@ type OptionProps = {
631
631
  * Выравнивание чекбокса или иконки "галочки"
632
632
  */
633
633
  align?: 'start' | 'center';
634
+ };
635
+ type OptionProps = OptionCommonProps & {
634
636
  /**
635
- * Мобильная верcия option.
637
+ * Мобильная версия option.
636
638
  */
637
639
  mobile?: boolean;
638
640
  };
@@ -768,4 +770,4 @@ type ClearButtonProps = {
768
770
  */
769
771
  size?: FormControlProps['size'];
770
772
  };
771
- export { AnyObject, OptionShape, GroupShape, BaseSelectChangePayload, BaseSelectProps, FieldProps, ArrowProps, OptionsListProps, OptgroupProps, OptionProps, CheckmarkProps, SearchProps, SelectFieldProps, AdditionalMobileProps, BottomSheetSelectMobileProps, ModalSelectMobileProps, SelectModalMobileProps, SelectMobileProps, SelectDesktopProps, SelectProps, ClearButtonProps };
773
+ export { AnyObject, OptionShape, GroupShape, BaseSelectChangePayload, BaseSelectProps, FieldProps, ArrowProps, OptionsListProps, OptgroupProps, OptionCommonProps, OptionProps, CheckmarkProps, SearchProps, SelectFieldProps, AdditionalMobileProps, BottomSheetSelectMobileProps, ModalSelectMobileProps, SelectModalMobileProps, SelectMobileProps, SelectDesktopProps, SelectProps, ClearButtonProps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-select",
3
- "version": "17.19.0",
3
+ "version": "17.20.0",
4
4
  "description": "Select component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
package/presets/index.js CHANGED
@@ -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-639eaf6a.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-e07a6d8c.js');
8
8
 
9
9
 
10
10
 
@@ -5,7 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
7
  var coreComponentsSkeleton = require('@alfalab/core-components-skeleton');
8
- var components_option_Component = require('../../components/option/Component.js');
8
+ require('classnames');
9
+ require('@alfalab/core-components-badge');
10
+ require('@alfalab/core-components-checkbox');
11
+ require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
12
+ require('@alfalab/icons-glyph/CheckmarkMIcon');
13
+ var components_option_Component_responsive = require('../../components/option/Component.responsive.js');
9
14
  require('intersection-observer');
10
15
 
11
16
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -41,7 +46,7 @@ var skeletonStyle = {
41
46
  width: '50%',
42
47
  };
43
48
  function useLazyLoading(_a) {
44
- var _b = _a.limit, limit = _b === void 0 ? 10 : _b, _c = _a.initialOffset, initialOffset = _c === void 0 ? 0 : _c, optionsFetcher = _a.optionsFetcher, _d = _a.skeleton, skeleton = _d === void 0 ? React__default.default.createElement(coreComponentsSkeleton.Skeleton, { style: skeletonStyle, visible: true }) : _d, _e = _a.Option, Option = _e === void 0 ? components_option_Component.Option : _e;
49
+ var _b = _a.limit, limit = _b === void 0 ? 10 : _b, _c = _a.initialOffset, initialOffset = _c === void 0 ? 0 : _c, optionsFetcher = _a.optionsFetcher, _d = _a.skeleton, skeleton = _d === void 0 ? React__default.default.createElement(coreComponentsSkeleton.Skeleton, { style: skeletonStyle, visible: true }) : _d, _e = _a.Option, Option = _e === void 0 ? components_option_Component_responsive.OptionResponsive : _e;
45
50
  var initialOptions = [];
46
51
  var initialLoading = false;
47
52
  var lazyLoadingInitialState = {
@@ -6,7 +6,7 @@ require('tslib');
6
6
  require('react');
7
7
  require('react-fast-compare');
8
8
  require('../../utils.js');
9
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-639eaf6a.js');
9
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-e07a6d8c.js');
10
10
 
11
11
 
12
12
 
@@ -6,7 +6,7 @@ require('tslib');
6
6
  require('react');
7
7
  require('../../../components/options-list/Component.js');
8
8
  require('../../../consts.js');
9
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-639eaf6a.js');
9
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-e07a6d8c.js');
10
10
  require('./footer/Component.js');
11
11
  require('./header/Component.js');
12
12
 
@@ -10,7 +10,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
10
10
 
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
 
13
- var styles = {"footer":"select__footer_15tub","button":"select__button_15tub"};
13
+ var styles = {"footer":"select__footer_1p1bl","button":"select__button_1p1bl"};
14
14
  require('./index.css')
15
15
 
16
16
  var Footer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1hwep */
1
+ /* hash: 1v2br */
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-base-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 */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -25,10 +25,10 @@
25
25
  } :root {
26
26
  } /* сбрасывает синюю подсветку при нажатии */ :root {
27
27
  --select-option-list-footer-button-gap: var(--gap-8);
28
- } .select__footer_15tub {
28
+ } .select__footer_1p1bl {
29
29
  background-color: var(--color-light-base-bg-primary);
30
30
  padding: var(--gap-12);
31
31
  outline: none
32
- } .select__footer_15tub > .select__button_15tub + .select__button_15tub {
32
+ } .select__footer_1p1bl > .select__button_1p1bl + .select__button_1p1bl {
33
33
  margin-left: var(--select-option-list-footer-button-gap);
34
34
  }
@@ -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_iyr56","mobile":"select__mobile_iyr56"};
14
+ var styles = {"desktop":"select__desktop_ahzwp","mobile":"select__mobile_ahzwp"};
15
15
  require('./index.css')
16
16
 
17
17
  var Header = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 14ykw */
1
+ /* hash: 1i4hz */
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 */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* 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 */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -22,8 +22,8 @@
22
22
  --gap-12: var(--gap-s);
23
23
  } :root {
24
24
  } :root {
25
- } /* сбрасывает синюю подсветку при нажатии */ .select__desktop_iyr56 {
25
+ } /* сбрасывает синюю подсветку при нажатии */ .select__desktop_ahzwp {
26
26
  padding: var(--gap-12);
27
- } .select__mobile_iyr56 {
27
+ } .select__mobile_ahzwp {
28
28
  padding: var(--gap-12) var(--gap-8);
29
29
  }
@@ -1 +1 @@
1
- export * from "../../../hook-639eaf6a";
1
+ export * from "../../../hook-e07a6d8c";
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-639eaf6a.js');
5
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-e07a6d8c.js');
6
6
 
7
7
 
8
8
 
@@ -5,17 +5,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
7
  var coreComponentsSkeleton = require('@alfalab/core-components-skeleton');
8
- var components_option_Component = require('../../components/option/Component.js');
8
+ require('classnames');
9
+ require('@alfalab/core-components-badge');
10
+ require('@alfalab/core-components-checkbox');
11
+ require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
12
+ require('@alfalab/icons-glyph/CheckmarkMIcon');
13
+ var components_option_Component_responsive = require('../../components/option/Component.responsive.js');
9
14
 
10
15
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
16
 
12
17
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
13
18
 
14
- var styles = {"skeleton":"select__skeleton_13ypz"};
19
+ var styles = {"skeleton":"select__skeleton_6w1ig"};
15
20
  require('./index.css')
16
21
 
17
22
  function useSelectWithLoading(_a) {
18
- var _b = _a.loading, loading = _b === void 0 ? false : _b, _c = _a.visibleOptions, visibleOptions = _c === void 0 ? 6 : _c, _d = _a.Option, Option = _d === void 0 ? components_option_Component.Option : _d;
23
+ var _b = _a.loading, loading = _b === void 0 ? false : _b, _c = _a.visibleOptions, visibleOptions = _c === void 0 ? 6 : _c, _d = _a.Option, Option = _d === void 0 ? components_option_Component_responsive.OptionResponsive : _d;
19
24
  var renderOption = function (props) { return (React__default.default.createElement(Option, tslib.__assign({}, props, { Checkmark: null, highlighted: loading ? false : props.highlighted }))); };
20
25
  var options = Array(visibleOptions)
21
26
  .fill(0)
@@ -1,5 +1,5 @@
1
- /* hash: 1lqlg */
2
- .select__skeleton_13ypz {
1
+ /* hash: ycvmk */
2
+ .select__skeleton_6w1ig {
3
3
  position: absolute;
4
4
  top: 50%;
5
5
  transform: translateY(-50%);
package/shared/index.js CHANGED
@@ -4,9 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var presets_useSelectWithLoading_hook = require('../presets/useSelectWithLoading/hook.js');
6
6
  var presets_useLazyLoading_hook = require('../presets/useLazyLoading/hook.js');
7
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-639eaf6a.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-e07a6d8c.js');
8
8
  var utils = require('../utils.js');
9
- var components_option_Component = require('../components/option/Component.js');
9
+ var components_option_desktop_Component = require('../components/option/desktop/Component.js');
10
+ var components_option_mobile_Component = require('../components/option/mobile/Component.js');
11
+ var components_option_Component_responsive = require('../components/option/Component.responsive.js');
10
12
  var components_baseOption_Component = require('../components/base-option/Component.js');
11
13
  var components_optionsList_Component = require('../components/options-list/Component.js');
12
14
  var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
@@ -35,7 +37,9 @@ exports.processOptions = utils.processOptions;
35
37
  exports.usePrevious = utils.usePrevious;
36
38
  exports.useVirtualVisibleOptions = utils.useVirtualVisibleOptions;
37
39
  exports.useVisibleOptions = utils.useVisibleOptions;
38
- exports.Option = components_option_Component.Option;
40
+ exports.OptionDesktop = components_option_desktop_Component.OptionDesktop;
41
+ exports.OptionMobile = components_option_mobile_Component.OptionMobile;
42
+ exports.Option = components_option_Component_responsive.OptionResponsive;
39
43
  exports.BaseOption = components_baseOption_Component.BaseOption;
40
44
  exports.OptionsList = components_optionsList_Component.OptionsList;
41
45
  exports.VirtualOptionsList = components_virtualOptionsList_Component.VirtualOptionsList;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ import type { OptionProps } from '../../typings';
4
+
5
+ import { OptionDesktop } from './desktop/Component'
6
+ import { OptionMobile } from './mobile/Component'
7
+
8
+ export const OptionResponsive = ({mobile, ...props}: OptionProps) =>
9
+ mobile ? <OptionMobile {...props} /> : <OptionDesktop {...props} />
@@ -2,13 +2,23 @@ import React, { FC, isValidElement } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { SIZE_TO_CLASSNAME_MAP } from '../../consts';
5
- import { OptionProps } from '../../typings';
6
- import { Checkmark as DefaultCheckMark } from '../checkmark';
7
- import { Checkmark as DefaultMobileCheckmark } from '../checkmark-mobile';
5
+ import { OptionCommonProps } from '../../typings';
8
6
 
9
- import styles from './index.module.css';
7
+ import type stylesDesktop from './desktop/index.module.css';
8
+ import type stylesMobile from './mobile/index.module.css';
10
9
 
11
- export const Option: FC<OptionProps> = ({
10
+ type OptionPrivateProps = {
11
+ /**
12
+ * Мобильная версия option.
13
+ */
14
+ mobile: boolean;
15
+ /**
16
+ * Стили
17
+ */
18
+ styles: typeof stylesDesktop | typeof stylesMobile;
19
+ };
20
+
21
+ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
12
22
  size = 48,
13
23
  className,
14
24
  option,
@@ -18,9 +28,10 @@ export const Option: FC<OptionProps> = ({
18
28
  disabled,
19
29
  multiple,
20
30
  mobile,
21
- Checkmark = mobile ? DefaultMobileCheckmark : DefaultCheckMark,
31
+ Checkmark,
22
32
  innerProps,
23
33
  dataTestId,
34
+ styles,
24
35
  }) => {
25
36
  const content = children || option.content || option.key;
26
37
  const { showCheckMark = true } = option;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+
3
+ import type { OptionCommonProps } from '../../../typings';
4
+ import { Checkmark as DefaultCheckMark } from '../../checkmark';
5
+ import { OptionBase } from '../Component';
6
+
7
+ import styles from './index.module.css';
8
+
9
+ export const OptionDesktop = ({ Checkmark = DefaultCheckMark, ...props }: OptionCommonProps) => (
10
+ <OptionBase {...props} mobile={false} Checkmark={Checkmark} styles={styles} />
11
+ );
@@ -0,0 +1,13 @@
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
+ @import '../../../vars.css';
3
+ @import '../index.module.css';
4
+
5
+ .highlighted {
6
+ background: var(--select-option-hover-background);
7
+ color: var(--select-option-hover-color);
8
+
9
+ &:before,
10
+ & + .option:before {
11
+ opacity: 0;
12
+ }
13
+ }
@@ -1 +1,3 @@
1
- export * from './Component';
1
+ export * from './desktop/Component';
2
+ export * from './mobile/Component';
3
+ export { OptionResponsive as Option } from './Component.responsive';
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+
3
+ import type { OptionCommonProps } from '../../../typings';
4
+ import { Checkmark as DefaultCheckMark } from '../../checkmark-mobile';
5
+ import { OptionBase } from '../Component';
6
+
7
+ import styles from './index.module.css';
8
+
9
+ export const OptionMobile = ({ Checkmark = DefaultCheckMark, ...props }: OptionCommonProps) => (
10
+ <OptionBase {...props} mobile={true} Checkmark={Checkmark} styles={styles} />
11
+ );
@@ -0,0 +1,3 @@
1
+ @import '@alfalab/core-components-vars/src/index.css';
2
+ @import '../../../vars.css';
3
+ @import '../index.module.css';
@@ -149,13 +149,16 @@ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
149
149
 
150
150
  if (!group) return null;
151
151
 
152
- const groupSelectedItems = selectedItems?.filter((item) =>
153
- group.options.includes(item),
152
+ const groupSelectedItems = selectedItems?.filter(({ key: selectedItemKey }) =>
153
+ group.options.some((opt) => opt.key === selectedItemKey),
154
154
  );
155
155
  const handleSelectedItems = (items: OptionShape[]) => {
156
156
  setSelectedItems(
157
157
  (
158
- selectedItems?.filter((item) => !group.options.includes(item)) ?? []
158
+ selectedItems?.filter(
159
+ ({ key: selectedItemKey }) =>
160
+ !group.options.some((opt) => opt.key === selectedItemKey),
161
+ ) ?? []
159
162
  ).concat(items),
160
163
  );
161
164
  };
package/src/typings.ts CHANGED
@@ -723,7 +723,7 @@ export type OptgroupProps = {
723
723
  multiple?: boolean;
724
724
  };
725
725
 
726
- export type OptionProps = {
726
+ export type OptionCommonProps = {
727
727
  /**
728
728
  * Дополнительный класс
729
729
  */
@@ -801,9 +801,11 @@ export type OptionProps = {
801
801
  * Выравнивание чекбокса или иконки "галочки"
802
802
  */
803
803
  align?: 'start' | 'center';
804
+ };
804
805
 
806
+ export type OptionProps = OptionCommonProps & {
805
807
  /**
806
- * Мобильная верcия option.
808
+ * Мобильная версия option.
807
809
  */
808
810
  mobile?: boolean;
809
811
  };