@cloud-ru/ds-list 1.0.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 (439) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +1413 -0
  4. package/dist/cjs/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
  5. package/dist/cjs/components/Items/AccordionItem/AccordionItem.js +37 -0
  6. package/dist/cjs/components/Items/AccordionItem/index.d.ts +1 -0
  7. package/dist/cjs/components/Items/AccordionItem/index.js +17 -0
  8. package/dist/cjs/components/Items/BaseItem/BaseItem.d.ts +24 -0
  9. package/dist/cjs/components/Items/BaseItem/BaseItem.js +118 -0
  10. package/dist/cjs/components/Items/BaseItem/constants.d.ts +3 -0
  11. package/dist/cjs/components/Items/BaseItem/constants.js +8 -0
  12. package/dist/cjs/components/Items/BaseItem/index.d.ts +1 -0
  13. package/dist/cjs/components/Items/BaseItem/index.js +17 -0
  14. package/dist/cjs/components/Items/BaseItem/styles.module.css +312 -0
  15. package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
  16. package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.js +22 -0
  17. package/dist/cjs/components/Items/GroupSelectItem/index.d.ts +1 -0
  18. package/dist/cjs/components/Items/GroupSelectItem/index.js +17 -0
  19. package/dist/cjs/components/Items/NextListItem/NextListItem.d.ts +2 -0
  20. package/dist/cjs/components/Items/NextListItem/NextListItem.js +71 -0
  21. package/dist/cjs/components/Items/NextListItem/constants.d.ts +2 -0
  22. package/dist/cjs/components/Items/NextListItem/constants.js +13 -0
  23. package/dist/cjs/components/Items/NextListItem/index.d.ts +1 -0
  24. package/dist/cjs/components/Items/NextListItem/index.js +17 -0
  25. package/dist/cjs/components/Items/NextListItem/types.d.ts +4 -0
  26. package/dist/cjs/components/Items/NextListItem/types.js +2 -0
  27. package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
  28. package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.js +27 -0
  29. package/dist/cjs/components/Items/PinGroupItem/index.d.ts +1 -0
  30. package/dist/cjs/components/Items/PinGroupItem/index.js +17 -0
  31. package/dist/cjs/components/Items/PinGroupItem/styles.module.css +12 -0
  32. package/dist/cjs/components/Items/SearchItem/SearchItem.d.ts +17 -0
  33. package/dist/cjs/components/Items/SearchItem/SearchItem.js +28 -0
  34. package/dist/cjs/components/Items/SearchItem/index.d.ts +1 -0
  35. package/dist/cjs/components/Items/SearchItem/index.js +17 -0
  36. package/dist/cjs/components/Items/SearchItem/styles.module.css +13 -0
  37. package/dist/cjs/components/Items/SimpleItem/components/DragHandle/DragHandle.d.ts +7 -0
  38. package/dist/cjs/components/Items/SimpleItem/components/DragHandle/DragHandle.js +20 -0
  39. package/dist/cjs/components/Items/SimpleItem/components/DragHandle/index.d.ts +1 -0
  40. package/dist/cjs/components/Items/SimpleItem/components/DragHandle/index.js +17 -0
  41. package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.d.ts +2 -0
  42. package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.js +9 -0
  43. package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/index.d.ts +1 -0
  44. package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/index.js +17 -0
  45. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.d.ts +19 -0
  46. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.js +52 -0
  47. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/index.d.ts +1 -0
  48. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/index.js +17 -0
  49. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.d.ts +15 -0
  50. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.js +19 -0
  51. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.d.ts +1 -0
  52. package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.js +17 -0
  53. package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/SimpleItem.d.ts +11 -0
  54. package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/SimpleItem.js +48 -0
  55. package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/index.d.ts +1 -0
  56. package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/index.js +17 -0
  57. package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.d.ts +15 -0
  58. package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.js +19 -0
  59. package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/index.d.ts +1 -0
  60. package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/index.js +17 -0
  61. package/dist/cjs/components/Items/SimpleItem/components/index.d.ts +4 -0
  62. package/dist/cjs/components/Items/SimpleItem/components/index.js +20 -0
  63. package/dist/cjs/components/Items/SimpleItem/constants.d.ts +7 -0
  64. package/dist/cjs/components/Items/SimpleItem/constants.js +9 -0
  65. package/dist/cjs/components/Items/SimpleItem/index.d.ts +2 -0
  66. package/dist/cjs/components/Items/SimpleItem/index.js +18 -0
  67. package/dist/cjs/components/Items/SimpleItem/styles.module.css +96 -0
  68. package/dist/cjs/components/Items/SimpleItem/types.d.ts +3 -0
  69. package/dist/cjs/components/Items/SimpleItem/types.js +2 -0
  70. package/dist/cjs/components/Items/SimpleItem/utils.d.ts +6 -0
  71. package/dist/cjs/components/Items/SimpleItem/utils.js +11 -0
  72. package/dist/cjs/components/Items/hooks.d.ts +23 -0
  73. package/dist/cjs/components/Items/hooks.js +130 -0
  74. package/dist/cjs/components/Items/index.d.ts +5 -0
  75. package/dist/cjs/components/Items/index.js +21 -0
  76. package/dist/cjs/components/Items/styles.module.css +168 -0
  77. package/dist/cjs/components/Items/types.d.ts +168 -0
  78. package/dist/cjs/components/Items/types.js +2 -0
  79. package/dist/cjs/components/Items/utils.d.ts +52 -0
  80. package/dist/cjs/components/Items/utils.js +218 -0
  81. package/dist/cjs/components/Lists/Droplist/DropList.d.ts +21 -0
  82. package/dist/cjs/components/Lists/Droplist/DropList.js +36 -0
  83. package/dist/cjs/components/Lists/Droplist/constants.d.ts +8 -0
  84. package/dist/cjs/components/Lists/Droplist/constants.js +10 -0
  85. package/dist/cjs/components/Lists/Droplist/index.d.ts +1 -0
  86. package/dist/cjs/components/Lists/Droplist/index.js +17 -0
  87. package/dist/cjs/components/Lists/List/List.d.ts +61 -0
  88. package/dist/cjs/components/Lists/List/List.js +62 -0
  89. package/dist/cjs/components/Lists/List/index.d.ts +1 -0
  90. package/dist/cjs/components/Lists/List/index.js +17 -0
  91. package/dist/cjs/components/Lists/ListPrivate/ListPrivate.d.ts +18 -0
  92. package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +301 -0
  93. package/dist/cjs/components/Lists/ListPrivate/constants.d.ts +7 -0
  94. package/dist/cjs/components/Lists/ListPrivate/constants.js +19 -0
  95. package/dist/cjs/components/Lists/ListPrivate/index.d.ts +1 -0
  96. package/dist/cjs/components/Lists/ListPrivate/index.js +17 -0
  97. package/dist/cjs/components/Lists/ListPrivate/styles.module.css +80 -0
  98. package/dist/cjs/components/Lists/contexts/CollapseProvider.d.ts +17 -0
  99. package/dist/cjs/components/Lists/contexts/CollapseProvider.js +10 -0
  100. package/dist/cjs/components/Lists/contexts/FocusListProvider.d.ts +9 -0
  101. package/dist/cjs/components/Lists/contexts/FocusListProvider.js +9 -0
  102. package/dist/cjs/components/Lists/contexts/NewListProvider.d.ts +33 -0
  103. package/dist/cjs/components/Lists/contexts/NewListProvider.js +23 -0
  104. package/dist/cjs/components/Lists/contexts/OpenListProvider.d.ts +6 -0
  105. package/dist/cjs/components/Lists/contexts/OpenListProvider.js +10 -0
  106. package/dist/cjs/components/Lists/contexts/SelectionProvider.d.ts +74 -0
  107. package/dist/cjs/components/Lists/contexts/SelectionProvider.js +90 -0
  108. package/dist/cjs/components/Lists/contexts/index.d.ts +5 -0
  109. package/dist/cjs/components/Lists/contexts/index.js +21 -0
  110. package/dist/cjs/components/Lists/hooks.d.ts +83 -0
  111. package/dist/cjs/components/Lists/hooks.js +242 -0
  112. package/dist/cjs/components/Lists/index.d.ts +5 -0
  113. package/dist/cjs/components/Lists/index.js +21 -0
  114. package/dist/cjs/components/Lists/styles.module.css +65 -0
  115. package/dist/cjs/components/Lists/types.d.ts +200 -0
  116. package/dist/cjs/components/Lists/types.js +2 -0
  117. package/dist/cjs/components/Lists/utils.d.ts +8 -0
  118. package/dist/cjs/components/Lists/utils.js +31 -0
  119. package/dist/cjs/components/index.d.ts +2 -0
  120. package/dist/cjs/components/index.js +18 -0
  121. package/dist/cjs/constants.d.ts +48 -0
  122. package/dist/cjs/constants.js +51 -0
  123. package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
  124. package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +15 -0
  125. package/dist/cjs/helperComponents/CollapseBlockPrivate/index.d.ts +1 -0
  126. package/dist/cjs/helperComponents/CollapseBlockPrivate/index.js +17 -0
  127. package/dist/cjs/helperComponents/CollapseBlockPrivate/styles.module.css +27 -0
  128. package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.d.ts +7 -0
  129. package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.js +142 -0
  130. package/dist/cjs/helperComponents/DesktopDroplist/index.d.ts +1 -0
  131. package/dist/cjs/helperComponents/DesktopDroplist/index.js +17 -0
  132. package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
  133. package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.js +20 -0
  134. package/dist/cjs/helperComponents/HiddenTabButton/index.d.ts +1 -0
  135. package/dist/cjs/helperComponents/HiddenTabButton/index.js +17 -0
  136. package/dist/cjs/helperComponents/HiddenTabButton/styles.module.css +9 -0
  137. package/dist/cjs/helperComponents/ItemContent/ItemContent.d.ts +17 -0
  138. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +27 -0
  139. package/dist/cjs/helperComponents/ItemContent/index.d.ts +1 -0
  140. package/dist/cjs/helperComponents/ItemContent/index.js +17 -0
  141. package/dist/cjs/helperComponents/ItemContent/styles.module.css +139 -0
  142. package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.d.ts +16 -0
  143. package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.js +25 -0
  144. package/dist/cjs/helperComponents/ListEmptyState/hooks.d.ts +10 -0
  145. package/dist/cjs/helperComponents/ListEmptyState/hooks.js +30 -0
  146. package/dist/cjs/helperComponents/ListEmptyState/index.d.ts +2 -0
  147. package/dist/cjs/helperComponents/ListEmptyState/index.js +20 -0
  148. package/dist/cjs/helperComponents/ListEmptyState/styles.module.css +8 -0
  149. package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.d.ts +9 -0
  150. package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.js +143 -0
  151. package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.module.css +16 -0
  152. package/dist/cjs/helperComponents/MobileDroplist/index.d.ts +1 -0
  153. package/dist/cjs/helperComponents/MobileDroplist/index.js +17 -0
  154. package/dist/cjs/helperComponents/MobileDroplist/utils.d.ts +11 -0
  155. package/dist/cjs/helperComponents/MobileDroplist/utils.js +65 -0
  156. package/dist/cjs/helperComponents/Separator/Separator.d.ts +20 -0
  157. package/dist/cjs/helperComponents/Separator/Separator.js +40 -0
  158. package/dist/cjs/helperComponents/Separator/constants.d.ts +3 -0
  159. package/dist/cjs/helperComponents/Separator/constants.js +10 -0
  160. package/dist/cjs/helperComponents/Separator/index.d.ts +1 -0
  161. package/dist/cjs/helperComponents/Separator/index.js +17 -0
  162. package/dist/cjs/helperComponents/Separator/styles.module.css +168 -0
  163. package/dist/cjs/helperComponents/index.d.ts +5 -0
  164. package/dist/cjs/helperComponents/index.js +21 -0
  165. package/dist/cjs/index.d.ts +9 -0
  166. package/dist/cjs/index.js +37 -0
  167. package/dist/cjs/locale/index.d.ts +79 -0
  168. package/dist/cjs/locale/index.js +44 -0
  169. package/dist/cjs/package.json +3 -0
  170. package/dist/cjs/style.css +1113 -0
  171. package/dist/cjs/types.d.ts +38 -0
  172. package/dist/cjs/types.js +2 -0
  173. package/dist/cjs/utils.d.ts +18 -0
  174. package/dist/cjs/utils.js +26 -0
  175. package/dist/esm/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
  176. package/dist/esm/components/Items/AccordionItem/AccordionItem.js +34 -0
  177. package/dist/esm/components/Items/AccordionItem/index.d.ts +1 -0
  178. package/dist/esm/components/Items/AccordionItem/index.js +1 -0
  179. package/dist/esm/components/Items/BaseItem/BaseItem.d.ts +24 -0
  180. package/dist/esm/components/Items/BaseItem/BaseItem.js +112 -0
  181. package/dist/esm/components/Items/BaseItem/constants.d.ts +3 -0
  182. package/dist/esm/components/Items/BaseItem/constants.js +5 -0
  183. package/dist/esm/components/Items/BaseItem/index.d.ts +1 -0
  184. package/dist/esm/components/Items/BaseItem/index.js +1 -0
  185. package/dist/esm/components/Items/BaseItem/styles.module.css +312 -0
  186. package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
  187. package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.js +19 -0
  188. package/dist/esm/components/Items/GroupSelectItem/index.d.ts +1 -0
  189. package/dist/esm/components/Items/GroupSelectItem/index.js +1 -0
  190. package/dist/esm/components/Items/NextListItem/NextListItem.d.ts +2 -0
  191. package/dist/esm/components/Items/NextListItem/NextListItem.js +68 -0
  192. package/dist/esm/components/Items/NextListItem/constants.d.ts +2 -0
  193. package/dist/esm/components/Items/NextListItem/constants.js +10 -0
  194. package/dist/esm/components/Items/NextListItem/index.d.ts +1 -0
  195. package/dist/esm/components/Items/NextListItem/index.js +1 -0
  196. package/dist/esm/components/Items/NextListItem/types.d.ts +4 -0
  197. package/dist/esm/components/Items/NextListItem/types.js +1 -0
  198. package/dist/esm/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
  199. package/dist/esm/components/Items/PinGroupItem/PinGroupItem.js +20 -0
  200. package/dist/esm/components/Items/PinGroupItem/index.d.ts +1 -0
  201. package/dist/esm/components/Items/PinGroupItem/index.js +1 -0
  202. package/dist/esm/components/Items/PinGroupItem/styles.module.css +12 -0
  203. package/dist/esm/components/Items/SearchItem/SearchItem.d.ts +17 -0
  204. package/dist/esm/components/Items/SearchItem/SearchItem.js +22 -0
  205. package/dist/esm/components/Items/SearchItem/index.d.ts +1 -0
  206. package/dist/esm/components/Items/SearchItem/index.js +1 -0
  207. package/dist/esm/components/Items/SearchItem/styles.module.css +13 -0
  208. package/dist/esm/components/Items/SimpleItem/components/DragHandle/DragHandle.d.ts +7 -0
  209. package/dist/esm/components/Items/SimpleItem/components/DragHandle/DragHandle.js +14 -0
  210. package/dist/esm/components/Items/SimpleItem/components/DragHandle/index.d.ts +1 -0
  211. package/dist/esm/components/Items/SimpleItem/components/DragHandle/index.js +1 -0
  212. package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.d.ts +2 -0
  213. package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.js +6 -0
  214. package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/index.d.ts +1 -0
  215. package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/index.js +1 -0
  216. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.d.ts +19 -0
  217. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.js +46 -0
  218. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/index.d.ts +1 -0
  219. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/index.js +1 -0
  220. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.d.ts +15 -0
  221. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.js +13 -0
  222. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.d.ts +1 -0
  223. package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.js +1 -0
  224. package/dist/esm/components/Items/SimpleItem/components/SimpleItem/SimpleItem.d.ts +11 -0
  225. package/dist/esm/components/Items/SimpleItem/components/SimpleItem/SimpleItem.js +42 -0
  226. package/dist/esm/components/Items/SimpleItem/components/SimpleItem/index.d.ts +1 -0
  227. package/dist/esm/components/Items/SimpleItem/components/SimpleItem/index.js +1 -0
  228. package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.d.ts +15 -0
  229. package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.js +13 -0
  230. package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/index.d.ts +1 -0
  231. package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/index.js +1 -0
  232. package/dist/esm/components/Items/SimpleItem/components/index.d.ts +4 -0
  233. package/dist/esm/components/Items/SimpleItem/components/index.js +4 -0
  234. package/dist/esm/components/Items/SimpleItem/constants.d.ts +7 -0
  235. package/dist/esm/components/Items/SimpleItem/constants.js +6 -0
  236. package/dist/esm/components/Items/SimpleItem/index.d.ts +2 -0
  237. package/dist/esm/components/Items/SimpleItem/index.js +2 -0
  238. package/dist/esm/components/Items/SimpleItem/styles.module.css +96 -0
  239. package/dist/esm/components/Items/SimpleItem/types.d.ts +3 -0
  240. package/dist/esm/components/Items/SimpleItem/types.js +1 -0
  241. package/dist/esm/components/Items/SimpleItem/utils.d.ts +6 -0
  242. package/dist/esm/components/Items/SimpleItem/utils.js +8 -0
  243. package/dist/esm/components/Items/hooks.d.ts +23 -0
  244. package/dist/esm/components/Items/hooks.js +125 -0
  245. package/dist/esm/components/Items/index.d.ts +5 -0
  246. package/dist/esm/components/Items/index.js +5 -0
  247. package/dist/esm/components/Items/styles.module.css +168 -0
  248. package/dist/esm/components/Items/types.d.ts +168 -0
  249. package/dist/esm/components/Items/types.js +1 -0
  250. package/dist/esm/components/Items/utils.d.ts +52 -0
  251. package/dist/esm/components/Items/utils.js +203 -0
  252. package/dist/esm/components/Lists/Droplist/DropList.d.ts +21 -0
  253. package/dist/esm/components/Lists/Droplist/DropList.js +32 -0
  254. package/dist/esm/components/Lists/Droplist/constants.d.ts +8 -0
  255. package/dist/esm/components/Lists/Droplist/constants.js +7 -0
  256. package/dist/esm/components/Lists/Droplist/index.d.ts +1 -0
  257. package/dist/esm/components/Lists/Droplist/index.js +1 -0
  258. package/dist/esm/components/Lists/List/List.d.ts +61 -0
  259. package/dist/esm/components/Lists/List/List.js +56 -0
  260. package/dist/esm/components/Lists/List/index.d.ts +1 -0
  261. package/dist/esm/components/Lists/List/index.js +1 -0
  262. package/dist/esm/components/Lists/ListPrivate/ListPrivate.d.ts +18 -0
  263. package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +295 -0
  264. package/dist/esm/components/Lists/ListPrivate/constants.d.ts +7 -0
  265. package/dist/esm/components/Lists/ListPrivate/constants.js +16 -0
  266. package/dist/esm/components/Lists/ListPrivate/index.d.ts +1 -0
  267. package/dist/esm/components/Lists/ListPrivate/index.js +1 -0
  268. package/dist/esm/components/Lists/ListPrivate/styles.module.css +80 -0
  269. package/dist/esm/components/Lists/contexts/CollapseProvider.d.ts +17 -0
  270. package/dist/esm/components/Lists/contexts/CollapseProvider.js +5 -0
  271. package/dist/esm/components/Lists/contexts/FocusListProvider.d.ts +9 -0
  272. package/dist/esm/components/Lists/contexts/FocusListProvider.js +5 -0
  273. package/dist/esm/components/Lists/contexts/NewListProvider.d.ts +33 -0
  274. package/dist/esm/components/Lists/contexts/NewListProvider.js +18 -0
  275. package/dist/esm/components/Lists/contexts/OpenListProvider.d.ts +6 -0
  276. package/dist/esm/components/Lists/contexts/OpenListProvider.js +6 -0
  277. package/dist/esm/components/Lists/contexts/SelectionProvider.d.ts +74 -0
  278. package/dist/esm/components/Lists/contexts/SelectionProvider.js +83 -0
  279. package/dist/esm/components/Lists/contexts/index.d.ts +5 -0
  280. package/dist/esm/components/Lists/contexts/index.js +5 -0
  281. package/dist/esm/components/Lists/hooks.d.ts +83 -0
  282. package/dist/esm/components/Lists/hooks.js +238 -0
  283. package/dist/esm/components/Lists/index.d.ts +5 -0
  284. package/dist/esm/components/Lists/index.js +5 -0
  285. package/dist/esm/components/Lists/styles.module.css +65 -0
  286. package/dist/esm/components/Lists/types.d.ts +200 -0
  287. package/dist/esm/components/Lists/types.js +1 -0
  288. package/dist/esm/components/Lists/utils.d.ts +8 -0
  289. package/dist/esm/components/Lists/utils.js +28 -0
  290. package/dist/esm/components/index.d.ts +2 -0
  291. package/dist/esm/components/index.js +2 -0
  292. package/dist/esm/constants.d.ts +48 -0
  293. package/dist/esm/constants.js +48 -0
  294. package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
  295. package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +9 -0
  296. package/dist/esm/helperComponents/CollapseBlockPrivate/index.d.ts +1 -0
  297. package/dist/esm/helperComponents/CollapseBlockPrivate/index.js +1 -0
  298. package/dist/esm/helperComponents/CollapseBlockPrivate/styles.module.css +27 -0
  299. package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.d.ts +7 -0
  300. package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.js +136 -0
  301. package/dist/esm/helperComponents/DesktopDroplist/index.d.ts +1 -0
  302. package/dist/esm/helperComponents/DesktopDroplist/index.js +1 -0
  303. package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
  304. package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.js +14 -0
  305. package/dist/esm/helperComponents/HiddenTabButton/index.d.ts +1 -0
  306. package/dist/esm/helperComponents/HiddenTabButton/index.js +1 -0
  307. package/dist/esm/helperComponents/HiddenTabButton/styles.module.css +9 -0
  308. package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +17 -0
  309. package/dist/esm/helperComponents/ItemContent/ItemContent.js +21 -0
  310. package/dist/esm/helperComponents/ItemContent/index.d.ts +1 -0
  311. package/dist/esm/helperComponents/ItemContent/index.js +1 -0
  312. package/dist/esm/helperComponents/ItemContent/styles.module.css +139 -0
  313. package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.d.ts +16 -0
  314. package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.js +19 -0
  315. package/dist/esm/helperComponents/ListEmptyState/hooks.d.ts +10 -0
  316. package/dist/esm/helperComponents/ListEmptyState/hooks.js +27 -0
  317. package/dist/esm/helperComponents/ListEmptyState/index.d.ts +2 -0
  318. package/dist/esm/helperComponents/ListEmptyState/index.js +2 -0
  319. package/dist/esm/helperComponents/ListEmptyState/styles.module.css +8 -0
  320. package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.d.ts +9 -0
  321. package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.js +137 -0
  322. package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.module.css +16 -0
  323. package/dist/esm/helperComponents/MobileDroplist/index.d.ts +1 -0
  324. package/dist/esm/helperComponents/MobileDroplist/index.js +1 -0
  325. package/dist/esm/helperComponents/MobileDroplist/utils.d.ts +11 -0
  326. package/dist/esm/helperComponents/MobileDroplist/utils.js +61 -0
  327. package/dist/esm/helperComponents/Separator/Separator.d.ts +20 -0
  328. package/dist/esm/helperComponents/Separator/Separator.js +34 -0
  329. package/dist/esm/helperComponents/Separator/constants.d.ts +3 -0
  330. package/dist/esm/helperComponents/Separator/constants.js +7 -0
  331. package/dist/esm/helperComponents/Separator/index.d.ts +1 -0
  332. package/dist/esm/helperComponents/Separator/index.js +1 -0
  333. package/dist/esm/helperComponents/Separator/styles.module.css +168 -0
  334. package/dist/esm/helperComponents/index.d.ts +5 -0
  335. package/dist/esm/helperComponents/index.js +5 -0
  336. package/dist/esm/index.d.ts +9 -0
  337. package/dist/esm/index.js +14 -0
  338. package/dist/esm/locale/index.d.ts +79 -0
  339. package/dist/esm/locale/index.js +41 -0
  340. package/dist/esm/style.css +1113 -0
  341. package/dist/esm/types.d.ts +38 -0
  342. package/dist/esm/types.js +1 -0
  343. package/dist/esm/utils.d.ts +18 -0
  344. package/dist/esm/utils.js +19 -0
  345. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  346. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  347. package/package.json +70 -0
  348. package/src/_iconSizes.scss +7 -0
  349. package/src/components/Items/AccordionItem/AccordionItem.tsx +79 -0
  350. package/src/components/Items/AccordionItem/index.ts +1 -0
  351. package/src/components/Items/BaseItem/BaseItem.tsx +274 -0
  352. package/src/components/Items/BaseItem/constants.ts +9 -0
  353. package/src/components/Items/BaseItem/index.ts +1 -0
  354. package/src/components/Items/BaseItem/styles.module.scss +330 -0
  355. package/src/components/Items/GroupSelectItem/GroupSelectItem.tsx +48 -0
  356. package/src/components/Items/GroupSelectItem/index.ts +1 -0
  357. package/src/components/Items/NextListItem/NextListItem.tsx +157 -0
  358. package/src/components/Items/NextListItem/constants.ts +12 -0
  359. package/src/components/Items/NextListItem/index.ts +1 -0
  360. package/src/components/Items/NextListItem/types.ts +3 -0
  361. package/src/components/Items/PinGroupItem/PinGroupItem.tsx +38 -0
  362. package/src/components/Items/PinGroupItem/index.ts +1 -0
  363. package/src/components/Items/PinGroupItem/styles.module.scss +14 -0
  364. package/src/components/Items/SearchItem/SearchItem.tsx +55 -0
  365. package/src/components/Items/SearchItem/index.ts +1 -0
  366. package/src/components/Items/SearchItem/styles.module.scss +26 -0
  367. package/src/components/Items/SimpleItem/components/DragHandle/DragHandle.tsx +27 -0
  368. package/src/components/Items/SimpleItem/components/DragHandle/index.ts +1 -0
  369. package/src/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.tsx +6 -0
  370. package/src/components/Items/SimpleItem/components/OverlayDragHandle/index.ts +1 -0
  371. package/src/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.tsx +87 -0
  372. package/src/components/Items/SimpleItem/components/SimpleGroupBlock/index.ts +1 -0
  373. package/src/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.tsx +33 -0
  374. package/src/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.ts +1 -0
  375. package/src/components/Items/SimpleItem/components/SimpleItem/SimpleItem.tsx +70 -0
  376. package/src/components/Items/SimpleItem/components/SimpleItem/index.ts +1 -0
  377. package/src/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.tsx +26 -0
  378. package/src/components/Items/SimpleItem/components/SimpleItemOverlay/index.ts +1 -0
  379. package/src/components/Items/SimpleItem/components/index.ts +4 -0
  380. package/src/components/Items/SimpleItem/constants.ts +8 -0
  381. package/src/components/Items/SimpleItem/index.ts +2 -0
  382. package/src/components/Items/SimpleItem/styles.module.scss +149 -0
  383. package/src/components/Items/SimpleItem/types.ts +7 -0
  384. package/src/components/Items/SimpleItem/utils.ts +8 -0
  385. package/src/components/Items/hooks.tsx +233 -0
  386. package/src/components/Items/index.ts +5 -0
  387. package/src/components/Items/styles.module.scss +107 -0
  388. package/src/components/Items/types.ts +203 -0
  389. package/src/components/Items/utils.ts +302 -0
  390. package/src/components/Lists/Droplist/DropList.tsx +62 -0
  391. package/src/components/Lists/Droplist/constants.ts +11 -0
  392. package/src/components/Lists/Droplist/index.ts +1 -0
  393. package/src/components/Lists/List/List.tsx +155 -0
  394. package/src/components/Lists/List/index.ts +1 -0
  395. package/src/components/Lists/ListPrivate/ListPrivate.tsx +560 -0
  396. package/src/components/Lists/ListPrivate/constants.ts +22 -0
  397. package/src/components/Lists/ListPrivate/index.ts +1 -0
  398. package/src/components/Lists/ListPrivate/styles.module.scss +90 -0
  399. package/src/components/Lists/contexts/CollapseProvider.tsx +22 -0
  400. package/src/components/Lists/contexts/FocusListProvider.tsx +15 -0
  401. package/src/components/Lists/contexts/NewListProvider.tsx +76 -0
  402. package/src/components/Lists/contexts/OpenListProvider.tsx +13 -0
  403. package/src/components/Lists/contexts/SelectionProvider.tsx +214 -0
  404. package/src/components/Lists/contexts/index.ts +5 -0
  405. package/src/components/Lists/hooks.ts +351 -0
  406. package/src/components/Lists/index.ts +5 -0
  407. package/src/components/Lists/styles.module.scss +95 -0
  408. package/src/components/Lists/types.ts +231 -0
  409. package/src/components/Lists/utils.ts +32 -0
  410. package/src/components/index.ts +2 -0
  411. package/src/constants.ts +53 -0
  412. package/src/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.tsx +32 -0
  413. package/src/helperComponents/CollapseBlockPrivate/index.ts +1 -0
  414. package/src/helperComponents/CollapseBlockPrivate/styles.module.scss +32 -0
  415. package/src/helperComponents/DesktopDroplist/DesktopDroplist.tsx +313 -0
  416. package/src/helperComponents/DesktopDroplist/index.ts +1 -0
  417. package/src/helperComponents/HiddenTabButton/HiddenTabButton.tsx +35 -0
  418. package/src/helperComponents/HiddenTabButton/index.ts +1 -0
  419. package/src/helperComponents/HiddenTabButton/styles.module.scss +11 -0
  420. package/src/helperComponents/ItemContent/ItemContent.tsx +80 -0
  421. package/src/helperComponents/ItemContent/index.ts +1 -0
  422. package/src/helperComponents/ItemContent/styles.module.scss +100 -0
  423. package/src/helperComponents/ListEmptyState/ListEmptyState.tsx +52 -0
  424. package/src/helperComponents/ListEmptyState/hooks.ts +42 -0
  425. package/src/helperComponents/ListEmptyState/index.ts +2 -0
  426. package/src/helperComponents/ListEmptyState/styles.module.scss +11 -0
  427. package/src/helperComponents/MobileDroplist/MobileDroplist.module.scss +25 -0
  428. package/src/helperComponents/MobileDroplist/MobileDroplist.tsx +230 -0
  429. package/src/helperComponents/MobileDroplist/index.ts +1 -0
  430. package/src/helperComponents/MobileDroplist/utils.tsx +76 -0
  431. package/src/helperComponents/Separator/Separator.tsx +115 -0
  432. package/src/helperComponents/Separator/constants.ts +11 -0
  433. package/src/helperComponents/Separator/index.ts +1 -0
  434. package/src/helperComponents/Separator/styles.module.scss +255 -0
  435. package/src/helperComponents/index.ts +5 -0
  436. package/src/index.ts +19 -0
  437. package/src/locale/index.ts +45 -0
  438. package/src/types.ts +44 -0
  439. package/src/utils.ts +26 -0
@@ -0,0 +1,38 @@
1
+ import { ScrollProps as OriginalScrollProps } from '@cloud-ru/ds-scroll';
2
+ import { ValueOf } from '@cloud-ru/ds-utils';
3
+ import { ChangeEvent, KeyboardEvent, Ref } from 'react';
4
+ import { ITEM_TYPE, MODE, SIZE } from './constants';
5
+ /** Размер списка и его элементов */
6
+ export type Size = ValueOf<typeof SIZE>;
7
+ /** Режим выбора элементов списка */
8
+ export type Mode = ValueOf<typeof MODE>;
9
+ /** Тип группового / составного элемента списка */
10
+ export type ItemType = ValueOf<typeof ITEM_TYPE>;
11
+ /** Настройки поисковой строки списка */
12
+ export type SearchState = {
13
+ placeholder?: string;
14
+ loading?: boolean;
15
+ value?: string;
16
+ onChange(value: string, e?: ChangeEvent<HTMLInputElement>): void;
17
+ onKeyDown?(e: KeyboardEvent<HTMLElement>): void;
18
+ };
19
+ export type ScrollProps = {
20
+ /** Включить ли скролл для основной части списка */
21
+ scroll?: boolean;
22
+ /** Ссылка на элемент, обозначающий самый конец прокручиваемого списка */
23
+ scrollRef?: Ref<HTMLElement>;
24
+ /** Ссылка на контейнер, который скроллится */
25
+ scrollContainerRef?: Ref<HTMLElement>;
26
+ /** Отключает возможность взаимодействовать со скролбарами мышью. */
27
+ untouchableScrollbars?: boolean;
28
+ /**
29
+ * Управление скрытием скролл баров:
30
+ * <br> - `Never` - показывать всегда
31
+ * <br> - `Leave` - скрывать когда курсор покидает компонент
32
+ * <br> - `Scroll` - показывать только когда происходит скроллинг
33
+ * <br> - `Move` - показывать при движении курсора над компонентом
34
+ */
35
+ barHideStrategy?: OriginalScrollProps['barHideStrategy'];
36
+ /** Колбек на скролл прокручиваемого списка */
37
+ onScroll?: OriginalScrollProps['onScroll'];
38
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { ReactEventHandler } from 'react';
2
+ import { ItemId } from './components';
3
+ export declare const stopPropagation: ReactEventHandler;
4
+ /**
5
+ * Возвращает id для элемента футера
6
+ * @function helper
7
+ */
8
+ export declare const getFooterItemId: (id: ItemId) => string;
9
+ /**
10
+ * Возвращает id для элемента, подставляя префикс
11
+ * @function helper
12
+ */
13
+ export declare const getItemAutoId: (prefix: ItemId, id: ItemId) => string;
14
+ /**
15
+ * Возвращает id для дефолтного элемента
16
+ * @function helper
17
+ */
18
+ export declare const getDefaultItemId: (id: ItemId) => string;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultItemId = exports.getItemAutoId = exports.getFooterItemId = exports.stopPropagation = void 0;
4
+ const constants_1 = require("./constants");
5
+ const stopPropagation = e => {
6
+ e.stopPropagation();
7
+ };
8
+ exports.stopPropagation = stopPropagation;
9
+ /**
10
+ * Возвращает id для элемента футера
11
+ * @function helper
12
+ */
13
+ const getFooterItemId = (id) => `${constants_1.ITEM_PREFIXES.footer}__${id}`;
14
+ exports.getFooterItemId = getFooterItemId;
15
+ /**
16
+ * Возвращает id для элемента, подставляя префикс
17
+ * @function helper
18
+ */
19
+ const getItemAutoId = (prefix, id) => [prefix, id].join('-');
20
+ exports.getItemAutoId = getItemAutoId;
21
+ /**
22
+ * Возвращает id для дефолтного элемента
23
+ * @function helper
24
+ */
25
+ const getDefaultItemId = (id) => (0, exports.getItemAutoId)(constants_1.ITEM_PREFIXES.default, id);
26
+ exports.getDefaultItemId = getDefaultItemId;
@@ -0,0 +1,4 @@
1
+ import { CommonFlattenProps, FlattenAccordionItem } from '../types.js';
2
+ type AccordionItemProps = Omit<FlattenAccordionItem, 'type'> & CommonFlattenProps;
3
+ export declare function AccordionItem({ id, disabled, allChildIds, items, ...option }: AccordionItemProps): import("react/jsx-runtime").JSX.Element;
4
+ export {};
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ChevronDownSVG, ChevronUpSVG } from '@cloud-ru/ds-icons/interface/system';
3
+ import { useCallback } from 'react';
4
+ import { TEST_IDS } from '../../../constants.js';
5
+ import { CollapseBlockPrivate } from '../../../helperComponents/index.js';
6
+ import { CollapseLevelContext, useCollapseContext, useCollapseLevelContext, useSelectionContext, } from '../../Lists/contexts/index.js';
7
+ import { BaseItem } from '../BaseItem/index.js';
8
+ import { useGroupItemSelection, useRenderItems } from '../hooks.js';
9
+ export function AccordionItem({ id, disabled, allChildIds, items, ...option }) {
10
+ const { level = 0 } = useCollapseLevelContext();
11
+ const { openCollapseItems = [], toggleOpenCollapseItem } = useCollapseContext();
12
+ const { value, isSelectionSingle, isSelectionMultiple } = useSelectionContext();
13
+ const { indeterminate, handleOnSelect, checked: checkedProp, } = useGroupItemSelection({
14
+ items,
15
+ id,
16
+ disabled,
17
+ allChildIds,
18
+ });
19
+ const isOpen = Boolean(openCollapseItems.includes(id ?? ''));
20
+ const checked = Boolean((indeterminate && !isOpen && isSelectionSingle && value && allChildIds.includes(value)) ||
21
+ (isSelectionMultiple && checkedProp));
22
+ const handleKeyDown = useCallback(() => {
23
+ toggleOpenCollapseItem?.(id ?? '');
24
+ }, [id, toggleOpenCollapseItem]);
25
+ const itemsJSX = useRenderItems(items);
26
+ // Раскрытие привязано к явной кнопке-триггеру `groupIndicator` (шеврон справа) и
27
+ // ТОЛЬКО переключает collapse — `option.onClick` сюда не зовём, иначе у потребителя,
28
+ // который вешает на onClick собственный toggle, выходит двойное переключение.
29
+ // Клик по телу строки (выбор/навигация) идёт через `option.onClick` в BaseItem.
30
+ const handleExpandIconClick = () => {
31
+ toggleOpenCollapseItem?.(id ?? '');
32
+ };
33
+ return (_jsx(CollapseBlockPrivate, { header: _jsx(BaseItem, { ...option, id: id, disabled: disabled, open: isOpen, expandIcon: isOpen ? _jsx(ChevronUpSVG, {}) : _jsx(ChevronDownSVG, {}), onExpandIconClick: handleExpandIconClick, isParentNode: true, onOpenNestedList: handleKeyDown, checked: checked, indeterminate: indeterminate, onSelect: !disabled ? handleOnSelect : undefined }), expanded: isOpen, "data-test-id": `${TEST_IDS.accordionItem}-${id}`, children: _jsx(CollapseLevelContext.Provider, { value: { level: level + 1 }, children: itemsJSX }) }));
34
+ }
@@ -0,0 +1 @@
1
+ export * from './AccordionItem.js';
@@ -0,0 +1 @@
1
+ export * from './AccordionItem.js';
@@ -0,0 +1,24 @@
1
+ import { KeyboardEvent, MouseEvent, ReactNode } from 'react';
2
+ import { FlattenBaseItem } from '../types.js';
3
+ type AllBaseItemProps = FlattenBaseItem & {
4
+ expandIcon?: ReactNode;
5
+ open?: boolean;
6
+ indeterminate?: boolean;
7
+ onSelect?(): void;
8
+ isParentNode?: boolean;
9
+ onOpenNestedList?(e?: KeyboardEvent<HTMLElement>): void;
10
+ /**
11
+ * Клик по явной кнопке-триггеру `groupIndicator` (шеврон справа), открывающей/закрывающей
12
+ * вложенный список. Если передан — шеврон рендерится как отдельная интерактивная кнопка
13
+ * со своим state-layer'ом, а клик по телу строки больше не переключает раскрытие.
14
+ */
15
+ onExpandIconClick?(e: MouseEvent<HTMLElement>): void;
16
+ /**
17
+ * Слот ручки drag&drop (Figma `centeredWrapper`) — рендерится первым в строке, перед
18
+ * маркером/чекбоксом. Интерактивность (обработчики `@dnd-kit`) и содержимое (иконка)
19
+ * приходят снаружи — `BaseItem` только позиционирует слот, ничего не знает про DnD.
20
+ */
21
+ dragHandle?: ReactNode;
22
+ };
23
+ export declare function BaseItem({ beforeContent, afterContent, content, onClick, onMouseDown, id, expandIcon, disabled, open, itemRef, switch: switchProp, onKeyDown, onFocus, indeterminate, checked: checkedProp, onSelect, onOpenNestedList, onExpandIconClick, isParentNode, className, inactive, itemWrapRender, dragHandle, ...rest }: AllBaseItemProps): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
24
+ export {};
@@ -0,0 +1,112 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Checkbox, Switch } from '@cloud-ru/ds-toggles';
3
+ import { extractSupportProps } from '@cloud-ru/ds-utils';
4
+ import cn from 'classnames';
5
+ import { DEFAULT_SIZE, TEST_IDS } from '../../../constants.js';
6
+ import { ItemContent } from '../../../helperComponents/index.js';
7
+ import { useCollapseLevelContext, useNewListContext, useOpenListContext, useSelectionContext, } from '../../Lists/contexts/index.js';
8
+ import commonStyles from '../styles.module.css';
9
+ import { isContentItem, isPrimitiveContent } from '../utils.js';
10
+ import { TOGGLE_SIZE_MAP } from './constants.js';
11
+ import styles from './styles.module.css';
12
+ export function BaseItem({ beforeContent, afterContent, content, onClick, onMouseDown, id, expandIcon, disabled, open, itemRef, switch: switchProp, onKeyDown, onFocus, indeterminate, checked: checkedProp, onSelect, onOpenNestedList, onExpandIconClick, isParentNode, className, inactive, itemWrapRender, dragHandle, ...rest }) {
13
+ const interactive = !inactive;
14
+ const { size = DEFAULT_SIZE, marker, contentRender, firstItemId, focusFlattenItems } = useNewListContext();
15
+ const { level = 0 } = useCollapseLevelContext();
16
+ const { closeDroplist, closeDroplistOnItemClick } = useOpenListContext();
17
+ const { value, onChange, mode, isSelectionSingle, isSelectionMultiple } = useSelectionContext();
18
+ const isChecked = isSelectionSingle ? (checkedProp ?? value === id) : (checkedProp ?? value?.includes(id ?? ''));
19
+ const handleChange = () => {
20
+ onChange?.(id);
21
+ };
22
+ const handleItemMouseDown = (e) => {
23
+ if (disabled)
24
+ return;
25
+ onMouseDown?.(e);
26
+ };
27
+ const handleItemFocus = (e) => {
28
+ onFocus?.(e);
29
+ e.stopPropagation();
30
+ };
31
+ const handleCheckboxChange = () => {
32
+ if (isParentNode && onSelect) {
33
+ onSelect();
34
+ }
35
+ else {
36
+ handleChange();
37
+ }
38
+ };
39
+ const handleItemClick = (e) => {
40
+ if (disabled) {
41
+ return;
42
+ }
43
+ // Активация элемента: клик мышью и Enter/Space с клавиатуры дают одинаковый эффект.
44
+ // `onClick` в публичном API типизирован под `MouseEvent` (это семантически клик по
45
+ // пункту меню), поэтому keyboard-событие пробрасывается под тем же типом.
46
+ onClick?.(e);
47
+ if (interactive && !isParentNode) {
48
+ handleChange();
49
+ }
50
+ if (!isSelectionMultiple && closeDroplistOnItemClick) {
51
+ closeDroplist();
52
+ }
53
+ };
54
+ const handleItemKeyDown = (e) => {
55
+ onKeyDown?.(e);
56
+ if (e.key === 'ArrowRight' && onOpenNestedList) {
57
+ onOpenNestedList(e);
58
+ e.preventDefault();
59
+ e.stopPropagation();
60
+ return;
61
+ }
62
+ if (e.key === 'Enter' || e.key === ' ') {
63
+ if (isSelectionMultiple && isParentNode && onSelect) {
64
+ onSelect();
65
+ }
66
+ // Повторяем клик по элементу: `handleItemClick` сам вызывает `handleChange` /
67
+ // `closeDroplist`. Отдельный `handleChange` здесь не нужен — иначе в multiple-режиме
68
+ // выбор переключался бы дважды (toggle + откат) и Enter не менял бы состояние.
69
+ !isParentNode && handleItemClick(e);
70
+ e.stopPropagation();
71
+ e.preventDefault();
72
+ }
73
+ };
74
+ const handleCheckboxClick = (e) => {
75
+ if (isParentNode) {
76
+ e.stopPropagation();
77
+ }
78
+ };
79
+ const handleExpandIconClick = (e) => {
80
+ if (disabled) {
81
+ return;
82
+ }
83
+ // Триггер раскрытия изолирован от клика по строке: всплытие останавливаем,
84
+ // чтобы клик по шеврону не активировал выбор/навигацию пункта.
85
+ e.stopPropagation();
86
+ e.preventDefault();
87
+ onExpandIconClick?.(e);
88
+ };
89
+ const props = extractSupportProps(rest);
90
+ let contentNode;
91
+ if (content && isContentItem(content)) {
92
+ contentNode = contentRender?.({ id, content, disabled }) ?? _jsx(ItemContent, { disabled: disabled, ...content });
93
+ }
94
+ else if (isPrimitiveContent(content)) {
95
+ // Примитивный content — шорткат `{ label: content }`: рендерим через ItemContent,
96
+ // чтобы строка получила размерную высоту, а не схлопывалась до высоты текста.
97
+ contentNode = _jsx(ItemContent, { disabled: disabled, label: content });
98
+ }
99
+ else {
100
+ contentNode = _jsxs("div", { className: styles.content, children: [" ", content, " "] });
101
+ }
102
+ const stateLayerState = isSelectionSingle && isChecked && !switchProp && !isParentNode
103
+ ? 'activatedOnBackground'
104
+ : 'emptyNeutralOnBackground';
105
+ const itemJSX = (_jsxs("div", { className: cn(commonStyles.itemWrapper, styles.innerWrapper, className), "data-inactive": inactive || undefined, "data-disabled": disabled || undefined, "data-variant": mode || undefined, "data-checked": (isParentNode && isChecked) || (!isParentNode && isChecked && !switchProp) || undefined, children: [_jsx("span", { className: commonStyles.stateLayer, "aria-hidden": true, "data-state": stateLayerState }), _jsxs("li", { "data-type": 'outside', role: 'menuitem', "data-test-id": props['data-test-id'] || `${TEST_IDS.baseItem}_${id}`, ref: itemRef, className: cn(commonStyles.listItem, styles.droplistItem), "data-size": size, onClick: handleItemClick, onMouseDown: handleItemMouseDown, tabIndex: firstItemId && id === focusFlattenItems[firstItemId]?.originalId ? 0 : -1, "data-non-pointer": (inactive && !onClick) || undefined, "data-variant": mode || undefined, "data-open": open || undefined, onKeyDown: handleItemKeyDown, onFocus: handleItemFocus, style: { '--level': level }, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, "data-checked": (isParentNode && (indeterminate || isChecked)) || (isChecked && !switchProp) || undefined, children: [dragHandle && _jsx("div", { className: styles.dragHandle, children: dragHandle }), !switchProp && isSelectionSingle && marker && !isParentNode && interactive && (_jsx("div", { className: styles.markerContainer, "data-test-id": TEST_IDS.baseItemMarker })), !switchProp && isSelectionMultiple && interactive && (_jsx("div", { className: styles.checkbox, children: _jsx(Checkbox, { size: TOGGLE_SIZE_MAP[size], disabled: disabled, tabIndex: -1, onChange: isParentNode ? handleCheckboxChange : undefined, checked: isChecked, "data-test-id": TEST_IDS.baseItemCheckbox, onClick: handleCheckboxClick, indeterminate: indeterminate }) })), beforeContent && _jsx("div", { className: styles.beforeContent, children: beforeContent }), contentNode, afterContent && _jsx("div", { className: styles.afterContent, children: afterContent }), switchProp && interactive && (_jsx(Switch, { size: TOGGLE_SIZE_MAP[size], disabled: disabled, checked: isChecked, "data-test-id": TEST_IDS.baseItemSwitch })), !switchProp &&
106
+ expandIcon &&
107
+ (onExpandIconClick ? (_jsxs("button", { type: 'button', className: styles.groupIndicator, "data-size": size, "data-open": open || undefined, "data-test-id": TEST_IDS.groupIndicator, tabIndex: -1, disabled: disabled, onClick: handleExpandIconClick, onMouseDown: e => e.stopPropagation(), children: [_jsx("span", { className: styles.groupIndicatorState, "aria-hidden": true }), expandIcon] })) : (_jsx("span", { className: styles.expandableIcon, children: expandIcon })))] })] }));
108
+ if (!itemWrapRender) {
109
+ return itemJSX;
110
+ }
111
+ return itemWrapRender(itemJSX);
112
+ }
@@ -0,0 +1,3 @@
1
+ import { CheckboxProps } from '@cloud-ru/ds-toggles';
2
+ import { Size } from '../../../types.js';
3
+ export declare const TOGGLE_SIZE_MAP: Record<Size, NonNullable<CheckboxProps['size']>>;
@@ -0,0 +1,5 @@
1
+ export const TOGGLE_SIZE_MAP = {
2
+ s: 'xs',
3
+ m: 's',
4
+ l: 's',
5
+ };
@@ -0,0 +1 @@
1
+ export * from './BaseItem.js';
@@ -0,0 +1 @@
1
+ export * from './BaseItem.js';
@@ -0,0 +1,312 @@
1
+ @charset "UTF-8";
2
+ .checkbox{
3
+ display:inline-flex;
4
+ flex-grow:0;
5
+ flex-shrink:0;
6
+ align-items:center;
7
+ justify-content:center;
8
+ box-sizing:content-box;
9
+ }
10
+
11
+ .beforeContent,
12
+ .afterContent,
13
+ .dragHandle{
14
+ display:inline-flex;
15
+ flex-grow:0;
16
+ flex-shrink:0;
17
+ align-items:center;
18
+ justify-content:center;
19
+ box-sizing:content-box;
20
+ color:var(--sn-theme-color-available-version-textTertiary, var(--sn-brand-color-text-version-tertiary, rgba(65, 66, 78, 0.5490196078)));
21
+ }
22
+ .beforeContent svg,
23
+ .afterContent svg,
24
+ .dragHandle svg{
25
+ width:100%;
26
+ max-width:100%;
27
+ height:100%;
28
+ max-height:100%;
29
+ }
30
+
31
+ .dragHandle{
32
+ cursor:grab;
33
+ }
34
+ .dragHandle:active{
35
+ cursor:grabbing;
36
+ }
37
+ .dragHandle button{
38
+ display:flex;
39
+ align-items:center;
40
+ justify-content:center;
41
+ width:100%;
42
+ height:100%;
43
+ padding:0;
44
+ border:none;
45
+ color:inherit;
46
+ -webkit-appearance:none;
47
+ -moz-appearance:none;
48
+ appearance:none;
49
+ background:transparent;
50
+ }
51
+ .dragHandle button:disabled{
52
+ cursor:not-allowed;
53
+ }
54
+
55
+ .afterContent{
56
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
57
+ }
58
+
59
+ .expandableIcon{
60
+ display:flex;
61
+ align-items:center;
62
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
63
+ fill:currentcolor;
64
+ }
65
+
66
+ .groupIndicator{
67
+ cursor:pointer;
68
+ position:relative;
69
+ display:flex;
70
+ flex-shrink:0;
71
+ align-items:center;
72
+ justify-content:center;
73
+ padding:0;
74
+ border:none;
75
+ border-radius:var(--sn-primitive-dimension-8, 8px);
76
+ color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
77
+ -webkit-appearance:none;
78
+ -moz-appearance:none;
79
+ appearance:none;
80
+ background:transparent;
81
+ outline:none;
82
+ }
83
+ .groupIndicator svg{
84
+ position:relative;
85
+ z-index:1;
86
+ width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
87
+ height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
88
+ }
89
+ .groupIndicator:focus-visible{
90
+ outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
91
+ outline-offset:calc(0px - var(--sn-primitive-strokeWeight-strokeSemiBold, 2px));
92
+ }
93
+ .groupIndicator[data-open]{
94
+ border-radius:var(--sn-primitive-dimension-2, 2px);
95
+ color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
96
+ }
97
+
98
+ .groupIndicatorState{
99
+ pointer-events:none;
100
+ position:absolute;
101
+ inset:0;
102
+ border-radius:inherit;
103
+ background:transparent;
104
+ }
105
+
106
+ .groupIndicator:hover > .groupIndicatorState{
107
+ background:var(--sn-theme-color-material-stateLayer-neutral-onBackground-hovered-filled, var(--sn-brand-color-state-neutral-forLightMode-hovered-background, rgba(188, 195, 220, 0.1490196078)));
108
+ }
109
+
110
+ .groupIndicator:active > .groupIndicatorState{
111
+ background:var(--sn-theme-color-material-stateLayer-neutral-onBackground-pressed-filled, var(--sn-brand-color-state-neutral-forLightMode-pressed-background, rgba(188, 195, 220, 0.3019607843)));
112
+ }
113
+
114
+ .groupIndicator[data-open] > .groupIndicatorState{
115
+ background:var(--sn-theme-color-neutral-decorTransparent, var(--sn-brand-color-neutral-transparent-forLightMode, rgba(124, 131, 182, 0.0784313725)));
116
+ }
117
+
118
+ .markerContainer{
119
+ pointer-events:none;
120
+ position:absolute;
121
+ top:0;
122
+ left:0;
123
+ box-sizing:border-box;
124
+ height:100%;
125
+ }
126
+ .markerContainer::before{
127
+ content:"";
128
+ display:block;
129
+ width:100%;
130
+ height:100%;
131
+ }
132
+
133
+ .droplistItem{
134
+ position:relative;
135
+ z-index:1;
136
+ width:100%;
137
+ }
138
+ .droplistItem[data-size=s][data-level-one], .droplistItem[data-size=s][data-level-more-one]{
139
+ padding-left:calc(var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-primitive-dimension-12, 12px))) + var(--level, 0) * calc(var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px)) + var(--sn-list-anatomy-size-s-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)))));
140
+ }
141
+ .droplistItem[data-size=s] .checkbox{
142
+ width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
143
+ height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
144
+ padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
145
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
146
+ }
147
+ .droplistItem[data-size=s] .beforeContent,
148
+ .droplistItem[data-size=s] .dragHandle{
149
+ width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
150
+ height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
151
+ padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
152
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
153
+ }
154
+ .droplistItem[data-size=s] .afterContent{
155
+ min-width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
156
+ min-height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
157
+ padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
158
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
159
+ }
160
+ .droplistItem[data-size=s] .expandableIcon{
161
+ width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
162
+ height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
163
+ }
164
+ .droplistItem[data-size=s] .groupIndicator{
165
+ width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
166
+ height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
167
+ margin-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
168
+ }
169
+ .droplistItem[data-size=s] .markerContainer{
170
+ padding-top:var(--sn-list-anatomy-size-s-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-2, 2px));
171
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-2, 2px));
172
+ width:var(--sn-list-anatomy-size-s-listItem-markerWrapper-width, var(--sn-primitive-dimension-2, 2px));
173
+ }
174
+ .droplistItem[data-size=s] .markerContainer::before{
175
+ border-radius:var(--sn-list-anatomy-size-s-listItem-markerWrapper-borderTopLeftRadius, var(--sn-primitive-dimension-0, 0)) var(--sn-list-anatomy-size-s-listItem-markerWrapper-borderTopRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-s-listItem-markerWrapper-borderBottomRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-s-listItem-markerWrapper-borderBottomLeftRadius, var(--sn-primitive-dimension-0, 0));
176
+ }
177
+ .droplistItem[data-size=s] .content{
178
+ font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
179
+ font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
180
+ line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
181
+ font-size:var(--sn-regular-body-s-fontSize, var(--sn-density-typography-roleBody-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
182
+ letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
183
+ paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
184
+ }
185
+ .droplistItem[data-size=m][data-level-one], .droplistItem[data-size=m][data-level-more-one]{
186
+ padding-left:calc(var(--sn-list-anatomy-size-m-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-primitive-dimension-16, 16px))) + var(--level, 0) * calc(var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px)) + var(--sn-list-anatomy-size-m-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)))));
187
+ }
188
+ .droplistItem[data-size=m] .checkbox{
189
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
190
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
191
+ padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
192
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
193
+ }
194
+ .droplistItem[data-size=m] .beforeContent,
195
+ .droplistItem[data-size=m] .dragHandle{
196
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
197
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
198
+ padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
199
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
200
+ }
201
+ .droplistItem[data-size=m] .afterContent{
202
+ min-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
203
+ min-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
204
+ padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
205
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
206
+ }
207
+ .droplistItem[data-size=m] .expandableIcon{
208
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
209
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
210
+ }
211
+ .droplistItem[data-size=m] .groupIndicator{
212
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
213
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
214
+ margin-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
215
+ }
216
+ .droplistItem[data-size=m] .markerContainer{
217
+ padding-top:var(--sn-list-anatomy-size-m-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-4, 4px));
218
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-4, 4px));
219
+ width:var(--sn-list-anatomy-size-m-listItem-markerWrapper-width, var(--sn-primitive-dimension-2, 2px));
220
+ }
221
+ .droplistItem[data-size=m] .markerContainer::before{
222
+ border-radius:var(--sn-list-anatomy-size-m-listItem-markerWrapper-borderTopLeftRadius, var(--sn-primitive-dimension-0, 0)) var(--sn-list-anatomy-size-m-listItem-markerWrapper-borderTopRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-m-listItem-markerWrapper-borderBottomRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-m-listItem-markerWrapper-borderBottomLeftRadius, var(--sn-primitive-dimension-0, 0));
223
+ }
224
+ .droplistItem[data-size=m] .content{
225
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
226
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
227
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
228
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
229
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
230
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
231
+ }
232
+ .droplistItem[data-size=l][data-level-one], .droplistItem[data-size=l][data-level-more-one]{
233
+ padding-left:calc(var(--sn-list-anatomy-size-l-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-l, var(--sn-primitive-dimension-20, 20px))) + var(--level, 0) * calc(var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px)) + var(--sn-list-anatomy-size-l-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)))));
234
+ }
235
+ .droplistItem[data-size=l] .checkbox{
236
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
237
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
238
+ padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
239
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
240
+ }
241
+ .droplistItem[data-size=l] .beforeContent,
242
+ .droplistItem[data-size=l] .dragHandle{
243
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
244
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
245
+ padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
246
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
247
+ }
248
+ .droplistItem[data-size=l] .afterContent{
249
+ min-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
250
+ min-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
251
+ padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
252
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
253
+ }
254
+ .droplistItem[data-size=l] .expandableIcon{
255
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
256
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
257
+ }
258
+ .droplistItem[data-size=l] .groupIndicator{
259
+ width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
260
+ height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
261
+ margin-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
262
+ }
263
+ .droplistItem[data-size=l] .markerContainer{
264
+ padding-top:var(--sn-list-anatomy-size-l-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-6, 6px));
265
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-markerWrapper-marker-paddingVertical, var(--sn-primitive-dimension-6, 6px));
266
+ width:var(--sn-list-anatomy-size-l-listItem-markerWrapper-width, var(--sn-primitive-dimension-4, 4px));
267
+ }
268
+ .droplistItem[data-size=l] .markerContainer::before{
269
+ border-radius:var(--sn-list-anatomy-size-l-listItem-markerWrapper-borderTopLeftRadius, var(--sn-primitive-dimension-0, 0)) var(--sn-list-anatomy-size-l-listItem-markerWrapper-borderTopRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-l-listItem-markerWrapper-borderBottomRightRadius, var(--sn-primitive-dimension-2, 2px)) var(--sn-list-anatomy-size-l-listItem-markerWrapper-borderBottomLeftRadius, var(--sn-primitive-dimension-0, 0));
270
+ }
271
+ .droplistItem[data-size=l] .content{
272
+ font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
273
+ font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
274
+ line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
275
+ font-size:var(--sn-regular-body-l-fontSize, var(--sn-density-typography-roleBody-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
276
+ letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
277
+ paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
278
+ }
279
+ .droplistItem[data-non-pointer]{
280
+ cursor:inherit;
281
+ }
282
+
283
+ .innerWrapper[data-disabled] .expandableIcon{
284
+ color:var(--sn-theme-color-available-version-textDisabled, var(--sn-brand-color-text-version-disabled, rgba(65, 66, 78, 0.3490196078)));
285
+ }
286
+ .innerWrapper[data-disabled] .groupIndicator{
287
+ cursor:not-allowed;
288
+ color:var(--sn-theme-color-available-version-textDisabled, var(--sn-brand-color-text-version-disabled, rgba(65, 66, 78, 0.3490196078)));
289
+ }
290
+ .innerWrapper[data-disabled] .beforeContent,
291
+ .innerWrapper[data-disabled] .dragHandle{
292
+ opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
293
+ }
294
+ .innerWrapper[data-disabled] .droplistItem{
295
+ cursor:not-allowed;
296
+ }
297
+ .innerWrapper[data-has-checked] .markerContainer::before, .innerWrapper[data-checked] .markerContainer::before{
298
+ background-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
299
+ }
300
+ .innerWrapper[data-has-checked] .droplistItem:focus-visible, .innerWrapper[data-checked] .droplistItem:focus-visible{
301
+ outline-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
302
+ }
303
+ .innerWrapper[data-has-checked][data-disabled] .markerContainer::before, .innerWrapper[data-checked][data-disabled] .markerContainer::before{
304
+ background-color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
305
+ }
306
+
307
+ .content{
308
+ overflow:hidden;
309
+ flex-grow:1;
310
+ flex-shrink:1;
311
+ box-sizing:border-box;
312
+ }
@@ -0,0 +1,4 @@
1
+ import { CommonFlattenProps, FlattenGroupSelectListItem } from '../types.js';
2
+ type GroupSelectItemProps = Omit<FlattenGroupSelectListItem, 'type'> & CommonFlattenProps;
3
+ export declare function GroupSelectItem({ label, beforeContent, truncate, divider, items, groupVariant, id, itemRef, allChildIds, selectButtonLabel, }: GroupSelectItemProps): import("react/jsx-runtime").JSX.Element;
4
+ export {};
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Separator } from '../../../helperComponents/index.js';
3
+ import { useGroupItemSelection, useRenderItems } from '../hooks.js';
4
+ export function GroupSelectItem({ label, beforeContent, truncate, divider, items, groupVariant, id, itemRef, allChildIds, selectButtonLabel, }) {
5
+ const { indeterminate, checked, handleOnSelect } = useGroupItemSelection({
6
+ items,
7
+ id,
8
+ disabled: false,
9
+ allChildIds,
10
+ });
11
+ const itemsJSX = useRenderItems(items);
12
+ return (_jsxs(_Fragment, { children: [_jsx(Separator, { label: label, beforeContent: beforeContent, truncate: truncate, divider: divider, groupVariant: groupVariant, selectButton: {
13
+ indeterminate,
14
+ checked,
15
+ itemRef,
16
+ onClick: handleOnSelect,
17
+ label: selectButtonLabel,
18
+ } }), itemsJSX] }));
19
+ }
@@ -0,0 +1 @@
1
+ export * from './GroupSelectItem.js';
@@ -0,0 +1 @@
1
+ export * from './GroupSelectItem.js';