@salutejs/plasma-new-hope 0.325.0-dev.0 → 0.326.0-canary.1986.15321507276.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 (233) hide show
  1. package/cjs/components/Combobox/ComboboxNew/Combobox.css +55 -51
  2. package/cjs/components/Combobox/ComboboxNew/Combobox.js +5 -1
  3. package/cjs/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  4. package/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  5. package/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js.map +1 -1
  6. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +1 -1
  7. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.css +56 -0
  8. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +44 -0
  9. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js.map +1 -0
  10. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +53 -0
  11. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js.map +1 -0
  12. package/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles_1bpknuo.css +3 -0
  13. package/cjs/components/Pagination/Pagination.css +57 -52
  14. package/cjs/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.css +57 -52
  15. package/cjs/components/Select/FloatingPopover.js +9 -5
  16. package/cjs/components/Select/FloatingPopover.js.map +1 -1
  17. package/cjs/components/Select/Select.css +57 -52
  18. package/cjs/components/Select/Select.js +14 -5
  19. package/cjs/components/Select/Select.js.map +1 -1
  20. package/cjs/components/Select/Select.styles.js +17 -17
  21. package/cjs/components/Select/Select.styles.js.map +1 -1
  22. package/cjs/components/Select/Select.styles_bjoo18.css +3 -0
  23. package/cjs/components/Select/Select.tokens.js +9 -2
  24. package/cjs/components/Select/Select.tokens.js.map +1 -1
  25. package/cjs/components/Select/hooks/useKeyboardNavigation.js +2 -2
  26. package/cjs/components/Select/hooks/useKeyboardNavigation.js.map +1 -1
  27. package/cjs/components/Select/ui/Inner/Inner.css +11 -10
  28. package/cjs/components/Select/ui/Inner/Inner.js +5 -4
  29. package/cjs/components/Select/ui/Inner/Inner.js.map +1 -1
  30. package/cjs/components/Select/ui/Inner/ui/Item/Item.styles.js +4 -4
  31. package/cjs/components/Select/ui/Inner/ui/Item/Item.styles.js.map +1 -1
  32. package/cjs/components/Select/ui/Inner/ui/Item/Item.styles_1qpfn0s.css +11 -0
  33. package/cjs/components/Select/ui/SelectAll/SelectAll.css +54 -0
  34. package/cjs/components/Select/ui/SelectAll/SelectAll.js +44 -0
  35. package/cjs/components/Select/ui/SelectAll/SelectAll.js.map +1 -0
  36. package/cjs/components/Select/ui/SelectAll/SelectAll.styles.js +53 -0
  37. package/cjs/components/Select/ui/SelectAll/SelectAll.styles.js.map +1 -0
  38. package/cjs/components/Select/ui/SelectAll/SelectAll.styles_1puprwc.css +3 -0
  39. package/cjs/components/Select/ui/VirtualList/VirtualList.css +10 -10
  40. package/cjs/components/Table/Table.css +34 -29
  41. package/cjs/components/Table/ui/Cell/Cell.css +34 -29
  42. package/cjs/components/Table/ui/EditableCell/EditableCell.css +34 -29
  43. package/cjs/components/Table/ui/HeadCell/HeadCell.css +34 -29
  44. package/cjs/components/Table/ui/HeadCell/ui/Filter/Filter.css +34 -29
  45. package/cjs/index.css +23 -14
  46. package/emotion/cjs/components/Combobox/Combobox.template-doc.mdx +58 -0
  47. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.js +4 -1
  48. package/emotion/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  49. package/emotion/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +39 -0
  50. package/emotion/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +30 -0
  51. package/emotion/cjs/components/Combobox/ComboboxNew/ui/index.js +11 -0
  52. package/emotion/cjs/components/Select/FloatingPopover.js +9 -5
  53. package/emotion/cjs/components/Select/Select.js +13 -5
  54. package/emotion/cjs/components/Select/Select.styles.js +11 -10
  55. package/emotion/cjs/components/Select/Select.template-doc.mdx +58 -0
  56. package/emotion/cjs/components/Select/Select.tokens.js +9 -2
  57. package/emotion/cjs/components/Select/hooks/useKeyboardNavigation.js +2 -2
  58. package/emotion/cjs/components/Select/ui/Inner/Inner.js +5 -4
  59. package/emotion/cjs/components/Select/ui/Inner/ui/Item/Item.styles.js +14 -14
  60. package/emotion/cjs/components/Select/ui/SelectAll/SelectAll.js +39 -0
  61. package/emotion/cjs/components/Select/ui/SelectAll/SelectAll.styles.js +30 -0
  62. package/emotion/cjs/components/Select/ui/index.js +11 -0
  63. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +15 -15
  64. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.js +13 -2
  65. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +187 -0
  66. package/emotion/cjs/examples/plasma_b2c/components/Select/Select.config.js +24 -24
  67. package/emotion/cjs/examples/plasma_b2c/components/Select/Select.stories.tsx +186 -0
  68. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +15 -15
  69. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.js +12 -2
  70. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +186 -0
  71. package/emotion/cjs/examples/plasma_web/components/Select/Select.config.js +24 -24
  72. package/emotion/cjs/examples/plasma_web/components/Select/Select.stories.tsx +186 -0
  73. package/emotion/es/components/Combobox/Combobox.template-doc.mdx +58 -0
  74. package/emotion/es/components/Combobox/ComboboxNew/Combobox.js +5 -2
  75. package/emotion/es/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  76. package/emotion/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +32 -0
  77. package/emotion/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +23 -0
  78. package/emotion/es/components/Combobox/ComboboxNew/ui/index.js +2 -1
  79. package/emotion/es/components/Select/FloatingPopover.js +9 -5
  80. package/emotion/es/components/Select/Select.js +15 -7
  81. package/emotion/es/components/Select/Select.styles.js +10 -9
  82. package/emotion/es/components/Select/Select.template-doc.mdx +58 -0
  83. package/emotion/es/components/Select/Select.tokens.js +9 -2
  84. package/emotion/es/components/Select/hooks/useKeyboardNavigation.js +2 -2
  85. package/emotion/es/components/Select/ui/Inner/Inner.js +6 -5
  86. package/emotion/es/components/Select/ui/Inner/ui/Item/Item.styles.js +14 -14
  87. package/emotion/es/components/Select/ui/SelectAll/SelectAll.js +32 -0
  88. package/emotion/es/components/Select/ui/SelectAll/SelectAll.styles.js +23 -0
  89. package/emotion/es/components/Select/ui/index.js +2 -1
  90. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +15 -15
  91. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.js +10 -2
  92. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +187 -0
  93. package/emotion/es/examples/plasma_b2c/components/Select/Select.config.js +24 -24
  94. package/emotion/es/examples/plasma_b2c/components/Select/Select.stories.tsx +186 -0
  95. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.config.js +15 -15
  96. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.js +10 -3
  97. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +186 -0
  98. package/emotion/es/examples/plasma_web/components/Select/Select.config.js +24 -24
  99. package/emotion/es/examples/plasma_web/components/Select/Select.stories.tsx +186 -0
  100. package/es/components/Combobox/ComboboxNew/Combobox.css +55 -51
  101. package/es/components/Combobox/ComboboxNew/Combobox.js +5 -1
  102. package/es/components/Combobox/ComboboxNew/Combobox.js.map +1 -1
  103. package/es/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  104. package/es/components/Combobox/ComboboxNew/Combobox.tokens.js.map +1 -1
  105. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +1 -1
  106. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.css +56 -0
  107. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +36 -0
  108. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js.map +1 -0
  109. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +47 -0
  110. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js.map +1 -0
  111. package/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles_1bpknuo.css +3 -0
  112. package/es/components/Pagination/Pagination.css +57 -52
  113. package/es/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.css +57 -52
  114. package/es/components/Select/FloatingPopover.js +9 -5
  115. package/es/components/Select/FloatingPopover.js.map +1 -1
  116. package/es/components/Select/Select.css +57 -52
  117. package/es/components/Select/Select.js +15 -6
  118. package/es/components/Select/Select.js.map +1 -1
  119. package/es/components/Select/Select.styles.js +17 -18
  120. package/es/components/Select/Select.styles.js.map +1 -1
  121. package/es/components/Select/Select.styles_bjoo18.css +3 -0
  122. package/es/components/Select/Select.tokens.js +9 -2
  123. package/es/components/Select/Select.tokens.js.map +1 -1
  124. package/es/components/Select/hooks/useKeyboardNavigation.js +2 -2
  125. package/es/components/Select/hooks/useKeyboardNavigation.js.map +1 -1
  126. package/es/components/Select/ui/Inner/Inner.css +11 -10
  127. package/es/components/Select/ui/Inner/Inner.js +6 -5
  128. package/es/components/Select/ui/Inner/Inner.js.map +1 -1
  129. package/es/components/Select/ui/Inner/ui/Item/Item.styles.js +4 -4
  130. package/es/components/Select/ui/Inner/ui/Item/Item.styles.js.map +1 -1
  131. package/es/components/Select/ui/Inner/ui/Item/Item.styles_1qpfn0s.css +11 -0
  132. package/es/components/Select/ui/SelectAll/SelectAll.css +54 -0
  133. package/es/components/Select/ui/SelectAll/SelectAll.js +36 -0
  134. package/es/components/Select/ui/SelectAll/SelectAll.js.map +1 -0
  135. package/es/components/Select/ui/SelectAll/SelectAll.styles.js +47 -0
  136. package/es/components/Select/ui/SelectAll/SelectAll.styles.js.map +1 -0
  137. package/es/components/Select/ui/SelectAll/SelectAll.styles_1puprwc.css +3 -0
  138. package/es/components/Select/ui/VirtualList/VirtualList.css +10 -10
  139. package/es/components/Table/Table.css +34 -29
  140. package/es/components/Table/ui/Cell/Cell.css +34 -29
  141. package/es/components/Table/ui/EditableCell/EditableCell.css +34 -29
  142. package/es/components/Table/ui/HeadCell/HeadCell.css +34 -29
  143. package/es/components/Table/ui/HeadCell/ui/Filter/Filter.css +34 -29
  144. package/es/index.css +23 -14
  145. package/package.json +2 -2
  146. package/styled-components/cjs/components/Combobox/Combobox.template-doc.mdx +58 -0
  147. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.js +4 -1
  148. package/styled-components/cjs/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  149. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +39 -0
  150. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +27 -0
  151. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/index.js +11 -0
  152. package/styled-components/cjs/components/Select/FloatingPopover.js +9 -5
  153. package/styled-components/cjs/components/Select/Select.js +13 -5
  154. package/styled-components/cjs/components/Select/Select.styles.js +8 -8
  155. package/styled-components/cjs/components/Select/Select.template-doc.mdx +58 -0
  156. package/styled-components/cjs/components/Select/Select.tokens.js +9 -2
  157. package/styled-components/cjs/components/Select/hooks/useKeyboardNavigation.js +2 -2
  158. package/styled-components/cjs/components/Select/ui/Inner/Inner.js +5 -4
  159. package/styled-components/cjs/components/Select/ui/Inner/ui/Item/Item.styles.js +3 -3
  160. package/styled-components/cjs/components/Select/ui/SelectAll/SelectAll.js +39 -0
  161. package/styled-components/cjs/components/Select/ui/SelectAll/SelectAll.styles.js +27 -0
  162. package/styled-components/cjs/components/Select/ui/index.js +11 -0
  163. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +8 -8
  164. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.js +13 -2
  165. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +187 -0
  166. package/styled-components/cjs/examples/plasma_b2c/components/Select/Select.config.js +14 -14
  167. package/styled-components/cjs/examples/plasma_b2c/components/Select/Select.stories.tsx +186 -0
  168. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +8 -8
  169. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.js +12 -2
  170. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.stories.tsx +186 -0
  171. package/styled-components/cjs/examples/plasma_web/components/Select/Select.config.js +14 -14
  172. package/styled-components/cjs/examples/plasma_web/components/Select/Select.stories.tsx +186 -0
  173. package/styled-components/es/components/Combobox/Combobox.template-doc.mdx +58 -0
  174. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.js +5 -2
  175. package/styled-components/es/components/Combobox/ComboboxNew/Combobox.tokens.js +8 -1
  176. package/styled-components/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.js +32 -0
  177. package/styled-components/es/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.js +20 -0
  178. package/styled-components/es/components/Combobox/ComboboxNew/ui/index.js +2 -1
  179. package/styled-components/es/components/Select/FloatingPopover.js +9 -5
  180. package/styled-components/es/components/Select/Select.js +15 -7
  181. package/styled-components/es/components/Select/Select.styles.js +7 -7
  182. package/styled-components/es/components/Select/Select.template-doc.mdx +58 -0
  183. package/styled-components/es/components/Select/Select.tokens.js +9 -2
  184. package/styled-components/es/components/Select/hooks/useKeyboardNavigation.js +2 -2
  185. package/styled-components/es/components/Select/ui/Inner/Inner.js +6 -5
  186. package/styled-components/es/components/Select/ui/Inner/ui/Item/Item.styles.js +3 -3
  187. package/styled-components/es/components/Select/ui/SelectAll/SelectAll.js +32 -0
  188. package/styled-components/es/components/Select/ui/SelectAll/SelectAll.styles.js +20 -0
  189. package/styled-components/es/components/Select/ui/index.js +2 -1
  190. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +8 -8
  191. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.js +10 -2
  192. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.stories.tsx +187 -0
  193. package/styled-components/es/examples/plasma_b2c/components/Select/Select.config.js +14 -14
  194. package/styled-components/es/examples/plasma_b2c/components/Select/Select.stories.tsx +186 -0
  195. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.config.js +8 -8
  196. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.js +10 -3
  197. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.stories.tsx +186 -0
  198. package/styled-components/es/examples/plasma_web/components/Select/Select.config.js +14 -14
  199. package/styled-components/es/examples/plasma_web/components/Select/Select.stories.tsx +186 -0
  200. package/types/components/Combobox/ComboboxNew/Combobox.d.ts.map +1 -1
  201. package/types/components/Combobox/ComboboxNew/Combobox.tokens.d.ts +7 -0
  202. package/types/components/Combobox/ComboboxNew/Combobox.tokens.d.ts.map +1 -1
  203. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts +11 -0
  204. package/types/components/Combobox/ComboboxNew/Combobox.types.d.ts.map +1 -1
  205. package/types/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.d.ts +7 -0
  206. package/types/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.d.ts.map +1 -0
  207. package/types/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.d.ts +11 -0
  208. package/types/components/Combobox/ComboboxNew/ui/SelectAll/SelectAll.styles.d.ts.map +1 -0
  209. package/types/components/Combobox/ComboboxNew/ui/index.d.ts +1 -0
  210. package/types/components/Combobox/ComboboxNew/ui/index.d.ts.map +1 -1
  211. package/types/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.styles.d.ts +3 -0
  212. package/types/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.styles.d.ts.map +1 -1
  213. package/types/components/Select/FloatingPopover.d.ts.map +1 -1
  214. package/types/components/Select/Select.d.ts.map +1 -1
  215. package/types/components/Select/Select.styles.d.ts +3 -1
  216. package/types/components/Select/Select.styles.d.ts.map +1 -1
  217. package/types/components/Select/Select.tokens.d.ts +7 -0
  218. package/types/components/Select/Select.tokens.d.ts.map +1 -1
  219. package/types/components/Select/Select.types.d.ts +13 -1
  220. package/types/components/Select/Select.types.d.ts.map +1 -1
  221. package/types/components/Select/ui/Inner/Inner.d.ts.map +1 -1
  222. package/types/components/Select/ui/SelectAll/SelectAll.d.ts +7 -0
  223. package/types/components/Select/ui/SelectAll/SelectAll.d.ts.map +1 -0
  224. package/types/components/Select/ui/SelectAll/SelectAll.styles.d.ts +11 -0
  225. package/types/components/Select/ui/SelectAll/SelectAll.styles.d.ts.map +1 -0
  226. package/types/components/Select/ui/index.d.ts +1 -0
  227. package/types/components/Select/ui/index.d.ts.map +1 -1
  228. package/types/components/Table/ui/HeadCell/ui/Filter/Filter.styles.d.ts +3 -0
  229. package/types/components/Table/ui/HeadCell/ui/Filter/Filter.styles.d.ts.map +1 -1
  230. package/cjs/components/Select/Select.styles_11cghkj.css +0 -2
  231. package/cjs/components/Select/ui/Inner/ui/Item/Item.styles_ir8fmi.css +0 -11
  232. package/es/components/Select/Select.styles_11cghkj.css +0 -2
  233. package/es/components/Select/ui/Inner/ui/Item/Item.styles_ir8fmi.css +0 -11
@@ -13,6 +13,8 @@ import { Select } from './Select';
13
13
  type StorySelectProps = ComponentProps<typeof Select> & {
14
14
  enableContentLeft?: boolean;
15
15
  hasHint?: boolean;
16
+ selectAllLabel?: string;
17
+ selectAllSticky?: boolean;
16
18
  };
17
19
 
18
20
  const view = ['default', 'accent', 'secondary', 'clear', 'positive', 'warning', 'negative', 'dark', 'black', 'white'];
@@ -997,3 +999,187 @@ export const Common: StoryObj<StorySelectProps> = {
997
999
  },
998
1000
  render: (args) => <CommonStory {...args} />,
999
1001
  };
1002
+
1003
+ const flatItems = [
1004
+ {
1005
+ value: 'north_america',
1006
+ label: 'Северная Америка',
1007
+ },
1008
+ {
1009
+ value: 'rio_de_janeiro',
1010
+ label: 'Рио-де-Жанейро',
1011
+ },
1012
+ {
1013
+ value: 'sao_paulo',
1014
+ label: 'Сан-Паулу',
1015
+ },
1016
+ {
1017
+ value: 'buenos_aires',
1018
+ label: 'Буэнос-Айрес',
1019
+ },
1020
+ {
1021
+ value: 'cordoba',
1022
+ label: 'Кордова',
1023
+ },
1024
+ {
1025
+ value: 'bogota',
1026
+ label: 'Богота',
1027
+ },
1028
+ {
1029
+ value: 'medellin',
1030
+ label: 'Медельин',
1031
+ },
1032
+ {
1033
+ value: 'paris',
1034
+ label: 'Париж',
1035
+ },
1036
+ {
1037
+ value: 'lyon',
1038
+ label: 'Лион',
1039
+ },
1040
+ {
1041
+ value: 'berlin',
1042
+ label: 'Берлин',
1043
+ },
1044
+ {
1045
+ value: 'munich',
1046
+ label: 'Мюнхен',
1047
+ },
1048
+ {
1049
+ value: 'rome',
1050
+ label: 'Рим',
1051
+ },
1052
+ {
1053
+ value: 'milan',
1054
+ label: 'Милан',
1055
+ },
1056
+ {
1057
+ value: 'madrid',
1058
+ label: 'Мадрид',
1059
+ },
1060
+ {
1061
+ value: 'barcelona',
1062
+ label: 'Барселона',
1063
+ },
1064
+ {
1065
+ value: 'london',
1066
+ label: 'Лондон',
1067
+ },
1068
+ {
1069
+ value: 'manchester',
1070
+ label: 'Манчестер',
1071
+ },
1072
+ {
1073
+ value: 'beijing',
1074
+ label: 'Пекин',
1075
+ },
1076
+ {
1077
+ value: 'shanghai',
1078
+ label: 'Шанхай',
1079
+ },
1080
+ {
1081
+ value: 'tokyo',
1082
+ label: 'Токио',
1083
+ },
1084
+ {
1085
+ value: 'osaka',
1086
+ label: 'Осака',
1087
+ },
1088
+ {
1089
+ value: 'delhi',
1090
+ label: 'Дели',
1091
+ },
1092
+ {
1093
+ value: 'mumbai',
1094
+ label: 'Мумбаи',
1095
+ },
1096
+ {
1097
+ value: 'seoul',
1098
+ label: 'Сеул',
1099
+ },
1100
+ {
1101
+ value: 'busan',
1102
+ label: 'Пусан',
1103
+ },
1104
+ {
1105
+ value: 'bangkok',
1106
+ label: 'Бангкок',
1107
+ },
1108
+ {
1109
+ value: 'phuket',
1110
+ label: 'Пхукет',
1111
+ },
1112
+ {
1113
+ value: 'africa',
1114
+ label: 'Африка',
1115
+ },
1116
+ ];
1117
+
1118
+ const SelectAllStory = (args: StorySelectProps) => {
1119
+ const [value, setValue] = useState([]);
1120
+ const [checked, setChecked] = useState(false);
1121
+ const [indeterminate, setIndeterminate] = useState(false);
1122
+
1123
+ const handleClick = () => {
1124
+ if (checked && !indeterminate) {
1125
+ setValue([]);
1126
+ } else {
1127
+ setValue(flatItems.map((item) => item.value));
1128
+ }
1129
+ };
1130
+
1131
+ React.useEffect(() => {
1132
+ if (value.length === 0) {
1133
+ setChecked(false);
1134
+ setIndeterminate(false);
1135
+ } else if (value.length === flatItems.length) {
1136
+ setChecked(true);
1137
+ setIndeterminate(false);
1138
+ } else {
1139
+ setChecked(true);
1140
+ setIndeterminate(true);
1141
+ }
1142
+ }, [value]);
1143
+
1144
+ return (
1145
+ <div style={{ width: '400px' }}>
1146
+ <Select
1147
+ placeholder="Placeholder"
1148
+ multiselect
1149
+ items={flatItems}
1150
+ value={value}
1151
+ onChange={setValue}
1152
+ listOverflow="auto"
1153
+ listMaxHeight="300px"
1154
+ selectAllOptions={{
1155
+ sticky: args?.selectAllSticky || false,
1156
+ label: args?.selectAllLabel,
1157
+ checked,
1158
+ indeterminate,
1159
+ onClick: handleClick,
1160
+ }}
1161
+ />
1162
+ </div>
1163
+ );
1164
+ };
1165
+
1166
+ export const SelectAll: StoryObj<StorySelectProps> = {
1167
+ render: (args) => <SelectAllStory {...args} />,
1168
+ argTypes: {
1169
+ selectAllSticky: {
1170
+ control: 'boolean',
1171
+ },
1172
+ selectAllLabel: {
1173
+ control: 'text',
1174
+ },
1175
+ },
1176
+ args: {
1177
+ selectAllSticky: false,
1178
+ selectAllLabel: 'Выбрать все',
1179
+ },
1180
+ parameters: {
1181
+ controls: {
1182
+ include: ['selectAllSticky', 'selectAllLabel'],
1183
+ },
1184
+ },
1185
+ };
@@ -436,6 +436,64 @@ type Items = Array<{
436
436
  }
437
437
  ```
438
438
  </TabItem>
439
+ <TabItem value="selectAll" label="Выбрать всё">
440
+ Работа с кнопкой "Выбрать всё" осуществляется через свойство `selectAllOptions` только в режиме `multiple`:
441
+ ```tsx
442
+ type SelectAllProps = {
443
+ checked?: boolean;
444
+ indeterminate?: boolean;
445
+ label?: string;
446
+ onClick?: () => void;
447
+ sticky?: boolean;
448
+ };
449
+ ```
450
+ Вся логика выбора элементов и взаимодействия с компонентом лежит на стороне пользователя.
451
+
452
+ ```tsx live
453
+ import React, { useState } from 'react';
454
+ import { Select } from '@salutejs/{{ package }}';
455
+
456
+ export function App() {
457
+ const [checked, setChecked] = useState(false);
458
+
459
+ const items = [
460
+ {
461
+ value: 'north_america',
462
+ label: 'Северная Америка',
463
+ },
464
+ {
465
+ value: 'south_america',
466
+ label: 'Южная Америка',
467
+ items: [
468
+ {
469
+ value: 'brazil',
470
+ label: 'Бразилия',
471
+ },
472
+ {
473
+ value: 'argentina',
474
+ label: 'Аргентина',
475
+ },
476
+ ],
477
+ },
478
+ ];
479
+
480
+ return (
481
+ <div style={{ display: "flex", gap: "30px", height: "300px" }}>
482
+ <Combobox
483
+ label="Label"
484
+ placeholder="Placeholder"
485
+ items={items}
486
+ multiple
487
+ selectAllOptions={{
488
+ checked,
489
+ onClick: () => setChecked(prev => !prev)
490
+ }}
491
+ />
492
+ </div>
493
+ );
494
+ }
495
+ ```
496
+ </TabItem>
439
497
  </Tabs>
440
498
 
441
499
  ## Использование с React Hook Form и нативной формой
@@ -22,7 +22,7 @@ import { classes } from "./Combobox.tokens";
22
22
  import { FloatingPopover } from "./FloatingPopover";
23
23
  import { useKeyNavigation, getItemByFocused } from "./hooks/useKeyboardNavigation";
24
24
  import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, filterItems, getItemId, getRemovedElement } from "./utils";
25
- import { Inner, StyledTextField, VirtualList } from "./ui";
25
+ import { Inner, StyledTextField, VirtualList, SelectAll } from "./ui";
26
26
  import { pathReducer, focusedPathReducer } from "./reducers";
27
27
  import { getPathMap, getTreeMaps } from "./hooks/getPathMaps";
28
28
  import { Ul, base, StyledArrow, IconArrowWrapper, StyledEmptyState, StyledLeftHelper } from "./Combobox.styles";
@@ -543,7 +543,10 @@ export var comboboxRoot = function comboboxRoot(Root) {
543
543
  className: classes.emptyStateWrapper,
544
544
  size: size,
545
545
  description: emptyStateDescription || 'Ничего не найдено'
546
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, virtual ? /*#__PURE__*/React.createElement(VirtualList, {
546
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, props.multiple && props.selectAllOptions && /*#__PURE__*/React.createElement(SelectAll, {
547
+ selectAllOptions: props.selectAllOptions,
548
+ variant: variant
549
+ }), virtual ? /*#__PURE__*/React.createElement(VirtualList, {
547
550
  items: filteredItems,
548
551
  listMaxHeight: listMaxHeight || listHeight,
549
552
  onScroll: onScroll
@@ -217,7 +217,14 @@ export var tokens = {
217
217
  disclosureIconColor: '--plasma-combobox-disclosure-icon-color',
218
218
  disclosureIconColorHover: '--plasma-combobox-disclosure-icon-color-hover',
219
219
  disclosureIconSize: '--plasma-select-disclosure-icon-size',
220
- disclosureIconMargin: '--plasma-select-disclosure-icon-margin'
220
+ disclosureIconMargin: '--plasma-select-disclosure-icon-margin',
221
+ dividerMarginTop: '--plasma-combobox-divider-margin-top',
222
+ dividerMarginTopTight: '--plasma-combobox-divider-margin-top-tight',
223
+ dividerMarginRight: '--plasma-combobox-divider-margin-right',
224
+ dividerMarginBottom: '--plasma-combobox-divider-margin-bottom',
225
+ dividerMarginBottomTight: '--plasma-combobox-divider-margin-bottom-tight',
226
+ dividerMarginLeft: '--plasma-combobox-divider-margin-left',
227
+ dividerColor: '--plasma-combobox-divider-color'
221
228
  };
222
229
  export var constants = {
223
230
  focusColor: '--surface-accent',
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { IconWrapper, StyledCell, StyledCheckbox, StyledCheckboxWrapper, StyledWrapper, Wrapper as ItemWrapper } from "../Inner/ui/Item/Item.styles";
3
+ import { Divider, Wrapper, DividerWrapper } from "./SelectAll.styles";
4
+ export var SelectAll = function SelectAll(_ref) {
5
+ var variant = _ref.variant,
6
+ selectAllOptions = _ref.selectAllOptions;
7
+ return /*#__PURE__*/React.createElement(Wrapper, {
8
+ variant: variant,
9
+ onClick: selectAllOptions === null || selectAllOptions === void 0 ? void 0 : selectAllOptions.onClick,
10
+ sticky: selectAllOptions === null || selectAllOptions === void 0 ? void 0 : selectAllOptions.sticky
11
+ }, /*#__PURE__*/React.createElement(ItemWrapper, {
12
+ variant: variant
13
+ }, /*#__PURE__*/React.createElement(IconWrapper, {
14
+ variant: variant
15
+ }, /*#__PURE__*/React.createElement(StyledCheckboxWrapper, {
16
+ onClick: function onClick(e) {
17
+ return e.preventDefault();
18
+ }
19
+ }, /*#__PURE__*/React.createElement(StyledCheckbox, {
20
+ checked: selectAllOptions === null || selectAllOptions === void 0 ? void 0 : selectAllOptions.checked,
21
+ indeterminate: selectAllOptions === null || selectAllOptions === void 0 ? void 0 : selectAllOptions.indeterminate,
22
+ appearance: "default"
23
+ }))), /*#__PURE__*/React.createElement(StyledWrapper, null, /*#__PURE__*/React.createElement(StyledCell
24
+ // TODO: #1548
25
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
+ // @ts-ignore
27
+ , {
28
+ title: /*#__PURE__*/React.createElement("span", null, (selectAllOptions === null || selectAllOptions === void 0 ? void 0 : selectAllOptions.label) || 'Выбрать всё')
29
+ }))), /*#__PURE__*/React.createElement(DividerWrapper, null, /*#__PURE__*/React.createElement(Divider, {
30
+ variant: variant
31
+ })));
32
+ };
@@ -0,0 +1,23 @@
1
+ import _styled from "@emotion/styled/base";
2
+ import { tokens, constants } from "../../Combobox.tokens";
3
+ export var Wrapper = /*#__PURE__*/_styled("div", {
4
+ target: "e1syfhrs2",
5
+ label: "plasma-new-hope__Wrapper"
6
+ })("position:", function (_ref) {
7
+ var sticky = _ref.sticky;
8
+ return sticky ? 'sticky' : 'static';
9
+ }, ";z-index:10;top:0;display:flex;flex-direction:column;background:var(", constants.background, ");margin-bottom:", function (_ref2) {
10
+ var variant = _ref2.variant;
11
+ return "var(".concat(variant === 'tight' ? tokens.dividerMarginBottomTight : tokens.dividerMarginBottom, ")");
12
+ }, ";border-top-left-radius:calc(var(", tokens.borderRadius, ") - 0.125rem - var(", tokens.dropdownBorderWidth, ", 0rem));border-top-right-radius:calc(var(", tokens.borderRadius, ") - 0.125rem - var(", tokens.dropdownBorderWidth, ", 0rem));" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvQ29tYm9ib3gvQ29tYm9ib3hOZXcvdWkvU2VsZWN0QWxsL1NlbGVjdEFsbC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSzBGIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvQ29tYm9ib3gvQ29tYm9ib3hOZXcvdWkvU2VsZWN0QWxsL1NlbGVjdEFsbC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7IENvbWJvYm94UHJvcHMgfSBmcm9tICcuLi8uLi9Db21ib2JveC50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMsIGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL0NvbWJvYm94LnRva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBXcmFwcGVyID0gc3R5bGVkLmRpdjx7IHZhcmlhbnQ6IENvbWJvYm94UHJvcHNbJ3ZhcmlhbnQnXTsgc3RpY2t5PzogYm9vbGVhbiB9PmBcbiAgICBwb3NpdGlvbjogJHsoeyBzdGlja3kgfSkgPT4gKHN0aWNreSA/ICdzdGlja3knIDogJ3N0YXRpYycpfTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICB0b3A6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGJhY2tncm91bmQ6IHZhcigke2NvbnN0YW50cy5iYWNrZ3JvdW5kfSk7XG4gICAgbWFyZ2luLWJvdHRvbTogJHsoeyB2YXJpYW50IH0pID0+XG4gICAgICAgIGB2YXIoJHt2YXJpYW50ID09PSAndGlnaHQnID8gdG9rZW5zLmRpdmlkZXJNYXJnaW5Cb3R0b21UaWdodCA6IHRva2Vucy5kaXZpZGVyTWFyZ2luQm90dG9tfSlgfTtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KSAtIDAuMTI1cmVtIC0gdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGModmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pIC0gMC4xMjVyZW0gLSB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pKTtcbmA7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gICAgbWFyZ2luOiAwIGNhbGMoMC4xMjVyZW0gKyB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuYDtcblxuZXhwb3J0IGNvbnN0IERpdmlkZXIgPSBzdHlsZWQuZGl2PHsgdmFyaWFudDogQ29tYm9ib3hQcm9wc1sndmFyaWFudCddIH0+YFxuICAgIGhlaWdodDogMC4wNjI1cmVtO1xuICAgIG1hcmdpbi10b3A6ICR7KHsgdmFyaWFudCB9KSA9PlxuICAgICAgICBgdmFyKCR7dmFyaWFudCA9PT0gJ3RpZ2h0JyA/IHRva2Vucy5kaXZpZGVyTWFyZ2luVG9wVGlnaHQgOiB0b2tlbnMuZGl2aWRlck1hcmdpblRvcH0pYH07XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoJHt0b2tlbnMuZGl2aWRlck1hcmdpblJpZ2h0fSk7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigke3Rva2Vucy5kaXZpZGVyTWFyZ2luTGVmdH0pO1xuICAgIGJhY2tncm91bmQ6IHZhcigke3Rva2Vucy5kaXZpZGVyQ29sb3J9KTtcbmA7XG4iXX0= */"));
13
+ export var DividerWrapper = /*#__PURE__*/_styled("div", {
14
+ target: "e1syfhrs1",
15
+ label: "plasma-new-hope__DividerWrapper"
16
+ })("margin:0 calc(0.125rem + var(", tokens.dropdownBorderWidth, ", 0rem));background:var(", constants.background, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvQ29tYm9ib3gvQ29tYm9ib3hOZXcvdWkvU2VsZWN0QWxsL1NlbGVjdEFsbC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0J3QyIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0NvbWJvYm94L0NvbWJvYm94TmV3L3VpL1NlbGVjdEFsbC9TZWxlY3RBbGwuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQgeyBDb21ib2JveFByb3BzIH0gZnJvbSAnLi4vLi4vQ29tYm9ib3gudHlwZXMnO1xuaW1wb3J0IHsgdG9rZW5zLCBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9Db21ib2JveC50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXY8eyB2YXJpYW50OiBDb21ib2JveFByb3BzWyd2YXJpYW50J107IHN0aWNreT86IGJvb2xlYW4gfT5gXG4gICAgcG9zaXRpb246ICR7KHsgc3RpY2t5IH0pID0+IChzdGlja3kgPyAnc3RpY2t5JyA6ICdzdGF0aWMnKX07XG4gICAgei1pbmRleDogMTA7XG4gICAgdG9wOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIG1hcmdpbi1ib3R0b206ICR7KHsgdmFyaWFudCB9KSA9PlxuICAgICAgICBgdmFyKCR7dmFyaWFudCA9PT0gJ3RpZ2h0JyA/IHRva2Vucy5kaXZpZGVyTWFyZ2luQm90dG9tVGlnaHQgOiB0b2tlbnMuZGl2aWRlck1hcmdpbkJvdHRvbX0pYH07XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYyh2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSkgLSAwLjEyNXJlbSAtIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkpO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KSAtIDAuMTI1cmVtIC0gdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG5gO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICAgIG1hcmdpbjogMCBjYWxjKDAuMTI1cmVtICsgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG4gICAgYmFja2dyb3VuZDogdmFyKCR7Y29uc3RhbnRzLmJhY2tncm91bmR9KTtcbmA7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGVyID0gc3R5bGVkLmRpdjx7IHZhcmlhbnQ6IENvbWJvYm94UHJvcHNbJ3ZhcmlhbnQnXSB9PmBcbiAgICBoZWlnaHQ6IDAuMDYyNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAkeyh7IHZhcmlhbnQgfSkgPT5cbiAgICAgICAgYHZhcigke3ZhcmlhbnQgPT09ICd0aWdodCcgPyB0b2tlbnMuZGl2aWRlck1hcmdpblRvcFRpZ2h0IDogdG9rZW5zLmRpdmlkZXJNYXJnaW5Ub3B9KWB9O1xuICAgIG1hcmdpbi1yaWdodDogdmFyKCR7dG9rZW5zLmRpdmlkZXJNYXJnaW5SaWdodH0pO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoJHt0b2tlbnMuZGl2aWRlck1hcmdpbkxlZnR9KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuZGl2aWRlckNvbG9yfSk7XG5gO1xuIl19 */"));
17
+ export var Divider = /*#__PURE__*/_styled("div", {
18
+ target: "e1syfhrs0",
19
+ label: "plasma-new-hope__Divider"
20
+ })("height:0.0625rem;margin-top:", function (_ref3) {
21
+ var variant = _ref3.variant;
22
+ return "var(".concat(variant === 'tight' ? tokens.dividerMarginTopTight : tokens.dividerMarginTop, ")");
23
+ }, ";margin-right:var(", tokens.dividerMarginRight, ");margin-left:var(", tokens.dividerMarginLeft, ");background:var(", tokens.dividerColor, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvQ29tYm9ib3gvQ29tYm9ib3hOZXcvdWkvU2VsZWN0QWxsL1NlbGVjdEFsbC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJ3RSIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0NvbWJvYm94L0NvbWJvYm94TmV3L3VpL1NlbGVjdEFsbC9TZWxlY3RBbGwuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQgeyBDb21ib2JveFByb3BzIH0gZnJvbSAnLi4vLi4vQ29tYm9ib3gudHlwZXMnO1xuaW1wb3J0IHsgdG9rZW5zLCBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9Db21ib2JveC50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXY8eyB2YXJpYW50OiBDb21ib2JveFByb3BzWyd2YXJpYW50J107IHN0aWNreT86IGJvb2xlYW4gfT5gXG4gICAgcG9zaXRpb246ICR7KHsgc3RpY2t5IH0pID0+IChzdGlja3kgPyAnc3RpY2t5JyA6ICdzdGF0aWMnKX07XG4gICAgei1pbmRleDogMTA7XG4gICAgdG9wOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIG1hcmdpbi1ib3R0b206ICR7KHsgdmFyaWFudCB9KSA9PlxuICAgICAgICBgdmFyKCR7dmFyaWFudCA9PT0gJ3RpZ2h0JyA/IHRva2Vucy5kaXZpZGVyTWFyZ2luQm90dG9tVGlnaHQgOiB0b2tlbnMuZGl2aWRlck1hcmdpbkJvdHRvbX0pYH07XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYyh2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSkgLSAwLjEyNXJlbSAtIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkpO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KSAtIDAuMTI1cmVtIC0gdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG5gO1xuXG5leHBvcnQgY29uc3QgRGl2aWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICAgIG1hcmdpbjogMCBjYWxjKDAuMTI1cmVtICsgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG4gICAgYmFja2dyb3VuZDogdmFyKCR7Y29uc3RhbnRzLmJhY2tncm91bmR9KTtcbmA7XG5cbmV4cG9ydCBjb25zdCBEaXZpZGVyID0gc3R5bGVkLmRpdjx7IHZhcmlhbnQ6IENvbWJvYm94UHJvcHNbJ3ZhcmlhbnQnXSB9PmBcbiAgICBoZWlnaHQ6IDAuMDYyNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAkeyh7IHZhcmlhbnQgfSkgPT5cbiAgICAgICAgYHZhcigke3ZhcmlhbnQgPT09ICd0aWdodCcgPyB0b2tlbnMuZGl2aWRlck1hcmdpblRvcFRpZ2h0IDogdG9rZW5zLmRpdmlkZXJNYXJnaW5Ub3B9KWB9O1xuICAgIG1hcmdpbi1yaWdodDogdmFyKCR7dG9rZW5zLmRpdmlkZXJNYXJnaW5SaWdodH0pO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoJHt0b2tlbnMuZGl2aWRlck1hcmdpbkxlZnR9KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuZGl2aWRlckNvbG9yfSk7XG5gO1xuIl19 */"));
@@ -1,3 +1,4 @@
1
1
  export * from "./Inner/Inner";
2
2
  export * from "./Target/Target";
3
- export * from "./VirtualList/VirtualList";
3
+ export * from "./VirtualList/VirtualList";
4
+ export * from "./SelectAll/SelectAll";
@@ -8,6 +8,8 @@ import { flip, shift, size, useFloating, FloatingPortal, offset as offsetMiddlew
8
8
  import React, { forwardRef } from 'react';
9
9
  import { safeUseId } from '@salutejs/plasma-core';
10
10
  import { getPlacement, getFallbackPlacements } from "./utils";
11
+ // TODO: #2003
12
+ var LIST_PADDING = 2;
11
13
  var FloatingPopover = /*#__PURE__*/forwardRef(function (_ref, ref) {
12
14
  var target = _ref.target,
13
15
  children = _ref.children,
@@ -16,9 +18,8 @@ var FloatingPopover = /*#__PURE__*/forwardRef(function (_ref, ref) {
16
18
  placement = _ref.placement,
17
19
  portal = _ref.portal,
18
20
  listWidth = _ref.listWidth,
19
- _ref$offset = _ref.offset,
20
- offset = _ref$offset === void 0 ? 0 : _ref$offset,
21
- zIndex = _ref.zIndex;
21
+ zIndex = _ref.zIndex,
22
+ isInner = _ref.isInner;
22
23
  var _useFloating = useFloating({
23
24
  whileElementsMounted: function whileElementsMounted(referenceEl, floatingEl, update) {
24
25
  return autoUpdate(referenceEl, floatingEl, update, {
@@ -29,14 +30,17 @@ var FloatingPopover = /*#__PURE__*/forwardRef(function (_ref, ref) {
29
30
  },
30
31
  placement: getPlacement(placement),
31
32
  open: opened,
32
- middleware: [offsetMiddleware(offset), flip({
33
+ middleware: [offsetMiddleware({
34
+ mainAxis: isInner ? 4 : 0,
35
+ alignmentAxis: isInner ? -LIST_PADDING : 0
36
+ }), flip({
33
37
  fallbackPlacements: getFallbackPlacements(placement)
34
38
  }), shift(), size({
35
39
  apply: function apply(_ref2) {
36
40
  var rects = _ref2.rects,
37
41
  elements = _ref2.elements;
38
42
  Object.assign(elements.floating.style, {
39
- width: listWidth || "".concat(rects.reference.width, "px")
43
+ width: listWidth || "".concat(isInner ? rects.reference.width + LIST_PADDING * 2 : rects.reference.width, "px")
40
44
  });
41
45
  }
42
46
  })]
@@ -15,10 +15,10 @@ import { isEmpty } from "../../utils";
15
15
  import { useOutsideClick } from "../../hooks";
16
16
  import { useKeyNavigation, getItemByFocused } from "./hooks/useKeyboardNavigation";
17
17
  import { initialItemsTransform, updateAncestors, updateDescendants, updateSingleAncestors, getView } from "./utils";
18
- import { Inner, Target, VirtualList } from "./ui";
18
+ import { Inner, Target, VirtualList, SelectAll } from "./ui";
19
19
  import { pathReducer, focusedPathReducer } from "./reducers";
20
20
  import { usePathMaps } from "./hooks/usePathMaps";
21
- import { Ul, base } from "./Select.styles";
21
+ import { Ul, base, ListWrapper } from "./Select.styles";
22
22
  import { FloatingPopover } from "./FloatingPopover";
23
23
  import { SelectNative } from "./ui/SelectNative/SelectNative";
24
24
  import { Context } from "./Select.context";
@@ -402,7 +402,8 @@ export var selectRoot = function selectRoot(Root) {
402
402
  hintProps: hintProps
403
403
  });
404
404
  },
405
- zIndex: zIndex
405
+ zIndex: zIndex,
406
+ isInner: false
406
407
  }, /*#__PURE__*/React.createElement(Root, _extends({
407
408
  view: view,
408
409
  size: size,
@@ -410,17 +411,24 @@ export var selectRoot = function selectRoot(Root) {
410
411
  chipView: chipView,
411
412
  disabled: disabled,
412
413
  readOnly: readOnly
413
- }, rest), /*#__PURE__*/React.createElement(Ul, {
414
+ }, rest), /*#__PURE__*/React.createElement(ListWrapper, {
415
+ listWidth: listWidth
416
+ }, /*#__PURE__*/React.createElement(Ul, {
414
417
  role: "tree",
415
418
  id: "".concat(treeId, "_tree_level_1"),
416
419
  "aria-multiselectable": Boolean(props.multiselect),
417
420
  listOverflow: listOverflow,
418
421
  listMaxHeight: listMaxHeight || listHeight,
419
422
  onScroll: virtual ? undefined : handleScroll,
420
- listWidth: listWidth,
421
423
  ref: targetRef,
422
424
  virtual: virtual
423
- }, beforeList, virtual ? /*#__PURE__*/React.createElement(VirtualList, {
425
+ }, beforeList, props.multiselect && props.selectAllOptions &&
426
+ /*#__PURE__*/
427
+ // TODO: #2004
428
+ React.createElement(SelectAll, {
429
+ selectAllOptions: props.selectAllOptions,
430
+ variant: variant
431
+ }), virtual ? /*#__PURE__*/React.createElement(VirtualList, {
424
432
  items: transformedItems,
425
433
  listMaxHeight: listMaxHeight || listHeight,
426
434
  onScroll: onScroll
@@ -434,7 +442,7 @@ export var selectRoot = function selectRoot(Root) {
434
442
  index: index,
435
443
  listWidth: listWidth
436
444
  });
437
- }), afterList)))));
445
+ }), afterList))))));
438
446
  });
439
447
  };
440
448
  export var selectConfig = {
@@ -2,13 +2,17 @@ import _styled from "@emotion/styled/base";
2
2
  import { css } from '@emotion/react';
3
3
  import { getCorrectHeight } from "./utils";
4
4
  import { tokens, constants } from "./Select.tokens";
5
+ export var ListWrapper = /*#__PURE__*/_styled("div", {
6
+ target: "e1ea4cwt1",
7
+ label: "plasma-new-hope__ListWrapper"
8
+ })("width:", function (_ref) {
9
+ var listWidth = _ref.listWidth;
10
+ return listWidth || '100%';
11
+ }, ";padding:calc(var(", tokens.padding, ") + var(", tokens.dropdownBorderWidth, ", 0rem));border-radius:var(", tokens.borderRadius, ");box-sizing:border-box;background:var(", constants.background, ");box-shadow:", constants.boxShadow, ",inset 0 0 0 var(", tokens.dropdownBorderWidth, ", 0rem) var(", tokens.dropdownBorderColor, ", transparent);" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0UiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgZ2V0Q29ycmVjdEhlaWdodCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0UHJvcHMgfSBmcm9tICcuL1NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMsIGNvbnN0YW50cyB9IGZyb20gJy4vU2VsZWN0LnRva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBMaXN0V3JhcHBlciA9IHN0eWxlZC5kaXY8e1xuICAgIGxpc3RXaWR0aD86IFNlbGVjdFByb3BzWydsaXN0V2lkdGgnXTtcbn0+YFxuICAgIHdpZHRoOiAkeyh7IGxpc3RXaWR0aCB9KSA9PiBsaXN0V2lkdGggfHwgJzEwMCUnfTtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKyB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6ICR7Y29uc3RhbnRzLmJveFNoYWRvd30sXG4gICAgICAgIGluc2V0IDAgMCAwIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyQ29sb3J9LCB0cmFuc3BhcmVudCk7XG5gO1xuXG5leHBvcnQgY29uc3QgVWwgPSBzdHlsZWQudWw8e1xuICAgIHZpcnR1YWw6IFNlbGVjdFByb3BzWyd2aXJ0dWFsJ107XG4gICAgbGlzdE92ZXJmbG93PzogU2VsZWN0UHJvcHNbJ2xpc3RPdmVyZmxvdyddO1xuICAgIGxpc3RNYXhIZWlnaHQ/OiBTZWxlY3RQcm9wc1snbGlzdE1heEhlaWdodCddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG59PmBcbiAgICBtYXgtaGVpZ2h0OiAkeyh7IHZpcnR1YWwsIGxpc3RNYXhIZWlnaHQgfSkgPT5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgIHZpcnR1YWwgPyAnYXV0bycgOiBsaXN0TWF4SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0TWF4SGVpZ2h0KSA6ICdhdXRvJ307XG4gICAgb3ZlcmZsb3cteTogJHsoeyB2aXJ0dWFsLCBsaXN0T3ZlcmZsb3cgfSkgPT4gKHZpcnR1YWwgPyAndmlzaWJsZScgOiBsaXN0T3ZlcmZsb3cgfHwgJ3Zpc2libGUnKX07XG4gICAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSkgLSAwLjEyNXJlbSAtIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgYDtcbiJdfQ== */"));
5
12
  export var Ul = /*#__PURE__*/_styled("ul", {
6
13
  target: "e1ea4cwt0",
7
14
  label: "plasma-new-hope__Ul"
8
- })("background:var(", constants.background, ");box-shadow:", constants.boxShadow, ",inset 0 0 0 var(", tokens.dropdownBorderWidth, ", 0rem) var(", tokens.dropdownBorderColor, ", transparent);border-radius:var(", tokens.borderRadius, ");width:", function (_ref) {
9
- var listWidth = _ref.listWidth;
10
- return listWidth || '100%';
11
- }, ";max-height:", function (_ref2) {
15
+ })("max-height:", function (_ref2) {
12
16
  var virtual = _ref2.virtual,
13
17
  listMaxHeight = _ref2.listMaxHeight;
14
18
  return (
@@ -19,8 +23,5 @@ export var Ul = /*#__PURE__*/_styled("ul", {
19
23
  var virtual = _ref3.virtual,
20
24
  listOverflow = _ref3.listOverflow;
21
25
  return virtual ? 'visible' : listOverflow || 'visible';
22
- }, ";margin:", function (_ref4) {
23
- var isInnerUl = _ref4.isInnerUl;
24
- return isInnerUl ? "calc(var(".concat(tokens.padding, ") * -1) 0 0 0") : "var(".concat(tokens.margin, ") 0 0 0");
25
- }, ";padding:calc(var(", tokens.padding, ") + var(", tokens.dropdownBorderWidth, ", 0rem)) 0;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUUiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgZ2V0Q29ycmVjdEhlaWdodCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0UHJvcHMgfSBmcm9tICcuL1NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMsIGNvbnN0YW50cyB9IGZyb20gJy4vU2VsZWN0LnRva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgdmlydHVhbDogU2VsZWN0UHJvcHNbJ3ZpcnR1YWwnXTtcbiAgICBsaXN0T3ZlcmZsb3c/OiBTZWxlY3RQcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgbGlzdE1heEhlaWdodD86IFNlbGVjdFByb3BzWydsaXN0TWF4SGVpZ2h0J107XG4gICAgbGlzdFdpZHRoPzogU2VsZWN0UHJvcHNbJ2xpc3RXaWR0aCddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG59PmBcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6ICR7Y29uc3RhbnRzLmJveFNoYWRvd30sXG4gICAgICAgIGluc2V0IDAgMCAwIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyQ29sb3J9LCB0cmFuc3BhcmVudCk7XG5cbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG4gICAgd2lkdGg6ICR7KHsgbGlzdFdpZHRoIH0pID0+IGxpc3RXaWR0aCB8fCAnMTAwJSd9O1xuXG4gICAgbWF4LWhlaWdodDogJHsoeyB2aXJ0dWFsLCBsaXN0TWF4SGVpZ2h0IH0pID0+XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXN0ZWQtdGVybmFyeVxuICAgICAgICB2aXJ0dWFsID8gJ2F1dG8nIDogbGlzdE1heEhlaWdodCA/IGdldENvcnJlY3RIZWlnaHQobGlzdE1heEhlaWdodCkgOiAnYXV0byd9O1xuICAgIG92ZXJmbG93LXk6ICR7KHsgdmlydHVhbCwgbGlzdE92ZXJmbG93IH0pID0+ICh2aXJ0dWFsID8gJ3Zpc2libGUnIDogbGlzdE92ZXJmbG93IHx8ICd2aXNpYmxlJyl9O1xuXG4gICAgbWFyZ2luOiAkeyh7IGlzSW5uZXJVbCB9KSA9PlxuICAgICAgICBpc0lubmVyVWwgPyBgY2FsYyh2YXIoJHt0b2tlbnMucGFkZGluZ30pICogLTEpIDAgMCAwYCA6IGB2YXIoJHt0b2tlbnMubWFyZ2lufSkgMCAwIDBgfTtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKyB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pKSAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgYDtcbiJdfQ== */"));
26
- export var base = /*#__PURE__*/css(";label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0J1QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3Quc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZWxlY3RQcm9wcyB9IGZyb20gJy4vU2VsZWN0LnR5cGVzJztcbmltcG9ydCB7IHRva2VucywgY29uc3RhbnRzIH0gZnJvbSAnLi9TZWxlY3QudG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFVsID0gc3R5bGVkLnVsPHtcbiAgICB2aXJ0dWFsOiBTZWxlY3RQcm9wc1sndmlydHVhbCddO1xuICAgIGxpc3RPdmVyZmxvdz86IFNlbGVjdFByb3BzWydsaXN0T3ZlcmZsb3cnXTtcbiAgICBsaXN0TWF4SGVpZ2h0PzogU2VsZWN0UHJvcHNbJ2xpc3RNYXhIZWlnaHQnXTtcbiAgICBsaXN0V2lkdGg/OiBTZWxlY3RQcm9wc1snbGlzdFdpZHRoJ107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbn0+YFxuICAgIGJhY2tncm91bmQ6IHZhcigke2NvbnN0YW50cy5iYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogJHtjb25zdGFudHMuYm94U2hhZG93fSxcbiAgICAgICAgaW5zZXQgMCAwIDAgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJDb2xvcn0sIHRyYW5zcGFyZW50KTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8ICcxMDAlJ307XG5cbiAgICBtYXgtaGVpZ2h0OiAkeyh7IHZpcnR1YWwsIGxpc3RNYXhIZWlnaHQgfSkgPT5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgIHZpcnR1YWwgPyAnYXV0bycgOiBsaXN0TWF4SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0TWF4SGVpZ2h0KSA6ICdhdXRvJ307XG4gICAgb3ZlcmZsb3cteTogJHsoeyB2aXJ0dWFsLCBsaXN0T3ZlcmZsb3cgfSkgPT4gKHZpcnR1YWwgPyAndmlzaWJsZScgOiBsaXN0T3ZlcmZsb3cgfHwgJ3Zpc2libGUnKX07XG5cbiAgICBtYXJnaW46ICR7KHsgaXNJbm5lclVsIH0pID0+XG4gICAgICAgIGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMCAwIDBgIDogYHZhcigke3Rva2Vucy5tYXJnaW59KSAwIDAgMGB9O1xuICAgIHBhZGRpbmc6IGNhbGModmFyKCR7dG9rZW5zLnBhZGRpbmd9KSArIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkpIDA7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BgO1xuIl19 */"));
26
+ }, ";border-radius:calc(var(", tokens.borderRadius, ") - 0.125rem - var(", tokens.dropdownBorderWidth, ", 0rem));margin:0;padding:0;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JFIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGdldENvcnJlY3RIZWlnaHQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdFByb3BzIH0gZnJvbSAnLi9TZWxlY3QudHlwZXMnO1xuaW1wb3J0IHsgdG9rZW5zLCBjb25zdGFudHMgfSBmcm9tICcuL1NlbGVjdC50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2PHtcbiAgICBsaXN0V2lkdGg/OiBTZWxlY3RQcm9wc1snbGlzdFdpZHRoJ107XG59PmBcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8ICcxMDAlJ307XG4gICAgcGFkZGluZzogY2FsYyh2YXIoJHt0b2tlbnMucGFkZGluZ30pICsgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYmFja2dyb3VuZDogdmFyKCR7Y29uc3RhbnRzLmJhY2tncm91bmR9KTtcbiAgICBib3gtc2hhZG93OiAke2NvbnN0YW50cy5ib3hTaGFkb3d9LFxuICAgICAgICBpbnNldCAwIDAgMCB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlckNvbG9yfSwgdHJhbnNwYXJlbnQpO1xuYDtcblxuZXhwb3J0IGNvbnN0IFVsID0gc3R5bGVkLnVsPHtcbiAgICB2aXJ0dWFsOiBTZWxlY3RQcm9wc1sndmlydHVhbCddO1xuICAgIGxpc3RPdmVyZmxvdz86IFNlbGVjdFByb3BzWydsaXN0T3ZlcmZsb3cnXTtcbiAgICBsaXN0TWF4SGVpZ2h0PzogU2VsZWN0UHJvcHNbJ2xpc3RNYXhIZWlnaHQnXTtcbiAgICBpc0lubmVyVWw/OiBib29sZWFuO1xufT5gXG4gICAgbWF4LWhlaWdodDogJHsoeyB2aXJ0dWFsLCBsaXN0TWF4SGVpZ2h0IH0pID0+XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXN0ZWQtdGVybmFyeVxuICAgICAgICB2aXJ0dWFsID8gJ2F1dG8nIDogbGlzdE1heEhlaWdodCA/IGdldENvcnJlY3RIZWlnaHQobGlzdE1heEhlaWdodCkgOiAnYXV0byd9O1xuICAgIG92ZXJmbG93LXk6ICR7KHsgdmlydHVhbCwgbGlzdE92ZXJmbG93IH0pID0+ICh2aXJ0dWFsID8gJ3Zpc2libGUnIDogbGlzdE92ZXJmbG93IHx8ICd2aXNpYmxlJyl9O1xuICAgIGJvcmRlci1yYWRpdXM6IGNhbGModmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pIC0gMC4xMjVyZW0gLSB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJXaWR0aH0sIDByZW0pKTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbmA7XG5cbmV4cG9ydCBjb25zdCBiYXNlID0gY3NzYGA7XG4iXX0= */"));
27
+ export var base = /*#__PURE__*/css(";label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0N1QiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3Quc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTZWxlY3RQcm9wcyB9IGZyb20gJy4vU2VsZWN0LnR5cGVzJztcbmltcG9ydCB7IHRva2VucywgY29uc3RhbnRzIH0gZnJvbSAnLi9TZWxlY3QudG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IExpc3RXcmFwcGVyID0gc3R5bGVkLmRpdjx7XG4gICAgbGlzdFdpZHRoPzogU2VsZWN0UHJvcHNbJ2xpc3RXaWR0aCddO1xufT5gXG4gICAgd2lkdGg6ICR7KHsgbGlzdFdpZHRoIH0pID0+IGxpc3RXaWR0aCB8fCAnMTAwJSd9O1xuICAgIHBhZGRpbmc6IGNhbGModmFyKCR7dG9rZW5zLnBhZGRpbmd9KSArIHZhcigke3Rva2Vucy5kcm9wZG93bkJvcmRlcldpZHRofSwgMHJlbSkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJhY2tncm91bmQ6IHZhcigke2NvbnN0YW50cy5iYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogJHtjb25zdGFudHMuYm94U2hhZG93fSxcbiAgICAgICAgaW5zZXQgMCAwIDAgdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSB2YXIoJHt0b2tlbnMuZHJvcGRvd25Cb3JkZXJDb2xvcn0sIHRyYW5zcGFyZW50KTtcbmA7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgdmlydHVhbDogU2VsZWN0UHJvcHNbJ3ZpcnR1YWwnXTtcbiAgICBsaXN0T3ZlcmZsb3c/OiBTZWxlY3RQcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgbGlzdE1heEhlaWdodD86IFNlbGVjdFByb3BzWydsaXN0TWF4SGVpZ2h0J107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbn0+YFxuICAgIG1heC1oZWlnaHQ6ICR7KHsgdmlydHVhbCwgbGlzdE1heEhlaWdodCB9KSA9PlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgdmlydHVhbCA/ICdhdXRvJyA6IGxpc3RNYXhIZWlnaHQgPyBnZXRDb3JyZWN0SGVpZ2h0KGxpc3RNYXhIZWlnaHQpIDogJ2F1dG8nfTtcbiAgICBvdmVyZmxvdy15OiAkeyh7IHZpcnR1YWwsIGxpc3RPdmVyZmxvdyB9KSA9PiAodmlydHVhbCA/ICd2aXNpYmxlJyA6IGxpc3RPdmVyZmxvdyB8fCAndmlzaWJsZScpfTtcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KSAtIDAuMTI1cmVtIC0gdmFyKCR7dG9rZW5zLmRyb3Bkb3duQm9yZGVyV2lkdGh9LCAwcmVtKSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BgO1xuIl19 */"));
@@ -508,6 +508,64 @@ Select может выглядеть как Button и как Textfield. За э
508
508
  }
509
509
  ```
510
510
  </TabItem>
511
+ <TabItem value="selectAll" label="Выбрать всё">
512
+ Работа с кнопкой "Выбрать всё" осуществляется через свойство `selectAllOptions` только в режиме `multiselect`:
513
+ ```tsx
514
+ type SelectAllProps = {
515
+ checked?: boolean;
516
+ indeterminate?: boolean;
517
+ label?: string;
518
+ onClick?: () => void;
519
+ sticky?: boolean;
520
+ };
521
+ ```
522
+ Вся логика выбора элементов и взаимодействия с компонентом лежит на стороне пользователя.
523
+
524
+ ```tsx live
525
+ import React, { useState } from 'react';
526
+ import { Select } from '@salutejs/{{ package }}';
527
+
528
+ export function App() {
529
+ const [checked, setChecked] = useState(false);
530
+
531
+ const items = [
532
+ {
533
+ value: 'north_america',
534
+ label: 'Северная Америка',
535
+ },
536
+ {
537
+ value: 'south_america',
538
+ label: 'Южная Америка',
539
+ items: [
540
+ {
541
+ value: 'brazil',
542
+ label: 'Бразилия',
543
+ },
544
+ {
545
+ value: 'argentina',
546
+ label: 'Аргентина',
547
+ },
548
+ ],
549
+ },
550
+ ];
551
+
552
+ return (
553
+ <div style={{ display: "flex", gap: "30px", height: "300px" }}>
554
+ <Select
555
+ label="Label"
556
+ placeholder="Placeholder"
557
+ items={items}
558
+ multiselect
559
+ selectAllOptions={{
560
+ checked,
561
+ onClick: () => setChecked(prev => !prev)
562
+ }}
563
+ />
564
+ </div>
565
+ );
566
+ }
567
+ ```
568
+ </TabItem>
511
569
  </Tabs>
512
570
 
513
571
 
@@ -55,6 +55,13 @@ export var tokens = {
55
55
  checkboxTriggerBorderWidth: '--plasma-select-checkbox-trigger-border-width',
56
56
  indicatorSize: '--plasma-select-indicator-size',
57
57
  targetHeight: '--plasma-select-target-height',
58
+ dividerMarginTop: '--plasma-select-divider-margin-top',
59
+ dividerMarginTopTight: '--plasma-select-divider-margin-top-tight',
60
+ dividerMarginRight: '--plasma-select-divider-margin-right',
61
+ dividerMarginBottom: '--plasma-select-divider-margin-bottom',
62
+ dividerMarginBottomTight: '--plasma-select-divider-margin-bottom-tight',
63
+ dividerMarginLeft: '--plasma-select-divider-margin-left',
64
+ dividerColor: '--plasma-select-divider-color',
58
65
  // Токены для Button
59
66
  buttonColor: '--plasma-select-button-color',
60
67
  buttonColorHover: '--plasma-select-button-color-hover',
@@ -228,7 +235,7 @@ export var constants = {
228
235
  focusSize: '0.0625rem',
229
236
  background: '--surface-solid-card',
230
237
  boxShadow: '0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04)',
231
- itemBackground: '--plasma-colors-transparent',
238
+ itemBackground: '--surface-clear',
232
239
  textfieldTargetColor: '--text-primary',
233
240
  textfieldOuterLabelColor: '--text-primary',
234
241
  textfieldInnerLabelColor: '--text-secondary',
@@ -241,5 +248,5 @@ export var constants = {
241
248
  fontLetterSpacing: '--plasma-typo-body-xs-letter-spacing',
242
249
  fontLineHeight: '--plasma-typo-body-xs-line-height',
243
250
  cellTitleColor: '--text-primary',
244
- cellBackgroundColor: '--plasma-colors-transparent'
251
+ cellBackgroundColor: '--surface-clear'
245
252
  };
@@ -142,7 +142,7 @@ export var useKeyNavigation = function useKeyNavigation(_ref) {
142
142
  });
143
143
  break;
144
144
  }
145
- if (!_currentItem || _currentItem !== null && _currentItem !== void 0 && _currentItem.disabled) {
145
+ if (!_currentItem || _currentItem !== null && _currentItem !== void 0 && _currentItem.disabled || _currentItem !== null && _currentItem !== void 0 && _currentItem.isDisabled) {
146
146
  break;
147
147
  }
148
148
  handlePressDown(_currentItem);
@@ -152,7 +152,7 @@ export var useKeyNavigation = function useKeyNavigation(_ref) {
152
152
  {
153
153
  event.preventDefault();
154
154
  var _currentItem2 = getItemByFocused(focusedPath, focusedToValueMap);
155
- if (_currentItem2 !== null && _currentItem2 !== void 0 && _currentItem2.disabled) {
155
+ if (_currentItem2 !== null && _currentItem2 !== void 0 && _currentItem2.disabled || _currentItem2 !== null && _currentItem2 !== void 0 && _currentItem2.isDisabled) {
156
156
  break;
157
157
  }
158
158
  if (!path[0]) {