@sberbusiness/triplex-next 1.38.0 → 1.40.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 (597) hide show
  1. package/chunks/{AlertProcessSpoiler-BgW2Rm1M.js → AlertProcessSpoiler-BNrk1vyk.js} +17 -17
  2. package/chunks/{AlertProcessSpoiler-BgW2Rm1M.js.map → AlertProcessSpoiler-BNrk1vyk.js.map} +1 -1
  3. package/chunks/{CalendarViewItem-BN36lbJt.js → CalendarViewItem-knPscTce.js} +21 -21
  4. package/chunks/{CalendarViewItem-BN36lbJt.js.map → CalendarViewItem-knPscTce.js.map} +1 -1
  5. package/chunks/Card.module-Dd2_zoXF.js +30 -0
  6. package/chunks/Card.module-Dd2_zoXF.js.map +1 -0
  7. package/chunks/Carousel.module-LNo8o3qn.js +30 -0
  8. package/chunks/Carousel.module-LNo8o3qn.js.map +1 -0
  9. package/chunks/CheckboxTreeExtended.module-CKUO50mv.js +24 -0
  10. package/chunks/CheckboxTreeExtended.module-CKUO50mv.js.map +1 -0
  11. package/chunks/{Chip-DPZKIU4i.js → Chip-CI8ALCUS.js} +17 -17
  12. package/chunks/{Chip-DPZKIU4i.js.map → Chip-CI8ALCUS.js.map} +1 -1
  13. package/chunks/Confirm.module-BtnLGqBz.js +24 -0
  14. package/chunks/Confirm.module-BtnLGqBz.js.map +1 -0
  15. package/chunks/{DropdownListItem-R6GgcMur.js → DropdownListItem-BqOoPFSx.js} +21 -23
  16. package/chunks/DropdownListItem-BqOoPFSx.js.map +1 -0
  17. package/chunks/DropdownMobile.module-xbkYiPM1.js +40 -0
  18. package/chunks/DropdownMobile.module-xbkYiPM1.js.map +1 -0
  19. package/chunks/Footer.module-CYELL0O7.js +12 -0
  20. package/chunks/Footer.module-CYELL0O7.js.map +1 -0
  21. package/chunks/{HeaderLayoutSidebar.module-ClAll71g.js → HeaderLayoutSidebar.module-MnhSBdiv.js} +4 -4
  22. package/chunks/HeaderLayoutSidebar.module-MnhSBdiv.js.map +1 -0
  23. package/chunks/HeaderTabs.module-D9u9xuSn.js +12 -0
  24. package/chunks/HeaderTabs.module-D9u9xuSn.js.map +1 -0
  25. package/chunks/{HeaderTitle.module-uQ2R0h5h.js → HeaderTitle.module-BGOYMt6r.js} +4 -4
  26. package/chunks/HeaderTitle.module-BGOYMt6r.js.map +1 -0
  27. package/chunks/ImageGalleryExtendedMain.module-CQNClbso.js +28 -0
  28. package/chunks/ImageGalleryExtendedMain.module-CQNClbso.js.map +1 -0
  29. package/chunks/{ImageGalleryExtendedThumb-DEwS4p6H.js → ImageGalleryExtendedThumb-D6RAJpt8.js} +6 -6
  30. package/chunks/{ImageGalleryExtendedThumb-DEwS4p6H.js.map → ImageGalleryExtendedThumb-D6RAJpt8.js.map} +1 -1
  31. package/chunks/IslandAccordion.module-nyPnHohH.js +44 -0
  32. package/chunks/IslandAccordion.module-nyPnHohH.js.map +1 -0
  33. package/chunks/IslandWidgetFooter.module-CNyLawMh.js +12 -0
  34. package/chunks/IslandWidgetFooter.module-CNyLawMh.js.map +1 -0
  35. package/chunks/IslandWidgetHeader.module-ChE5SXll.js +20 -0
  36. package/chunks/IslandWidgetHeader.module-ChE5SXll.js.map +1 -0
  37. package/chunks/{LightBoxContent-DhmrVe_B.js → LightBoxContent-d_LBU_ZW.js} +15 -15
  38. package/chunks/LightBoxContent-d_LBU_ZW.js.map +1 -0
  39. package/chunks/LightBoxControls.module-Buvm7RbG.js +26 -0
  40. package/chunks/LightBoxControls.module-Buvm7RbG.js.map +1 -0
  41. package/chunks/{LightBoxSideOverlayClose.module-DH3toLJp.js → LightBoxSideOverlayClose.module-eTdxNvSz.js} +4 -4
  42. package/chunks/LightBoxSideOverlayClose.module-eTdxNvSz.js.map +1 -0
  43. package/chunks/{ListItemControlsButton-xLk41F4G.js → ListItemControlsButton-D2ONoqII.js} +10 -10
  44. package/chunks/{ListItemControlsButton-xLk41F4G.js.map → ListItemControlsButton-D2ONoqII.js.map} +1 -1
  45. package/chunks/ListItemTail.module-BhSOptJB.js +18 -0
  46. package/chunks/ListItemTail.module-BhSOptJB.js.map +1 -0
  47. package/chunks/ListMasterFooter.module-DrlO_YrT.js +14 -0
  48. package/chunks/ListMasterFooter.module-DrlO_YrT.js.map +1 -0
  49. package/chunks/ModalWindow.module-DrJpRuNK.js +28 -0
  50. package/chunks/ModalWindow.module-DrJpRuNK.js.map +1 -0
  51. package/chunks/Notification.module-tEh-vvv0.js +34 -0
  52. package/chunks/Notification.module-tEh-vvv0.js.map +1 -0
  53. package/chunks/Overlay.module-CPNLKKsF.js +30 -0
  54. package/chunks/Overlay.module-CPNLKKsF.js.map +1 -0
  55. package/chunks/Page.module-Dru0rPA5.js +15 -0
  56. package/chunks/Page.module-Dru0rPA5.js.map +1 -0
  57. package/chunks/SMSField.module-CjGkO6u6.js +26 -0
  58. package/chunks/SMSField.module-CjGkO6u6.js.map +1 -0
  59. package/chunks/SliderExtendedMarks.module-CAeqmSQq.js +24 -0
  60. package/chunks/SliderExtendedMarks.module-CAeqmSQq.js.map +1 -0
  61. package/chunks/{SliderExtendedRail-rikPcrUi.js → SliderExtendedRail-CVEwe6OK.js} +6 -6
  62. package/chunks/{SliderExtendedRail-rikPcrUi.js.map → SliderExtendedRail-CVEwe6OK.js.map} +1 -1
  63. package/chunks/StatusTracker.module-BD5zJfbg.js +42 -0
  64. package/chunks/StatusTracker.module-BD5zJfbg.js.map +1 -0
  65. package/chunks/{StepperStepArrowBorder-D96B8pND.js → StepperStepArrowBorder-BO_ItxMh.js} +16 -16
  66. package/chunks/{StepperStepArrowBorder-D96B8pND.js.map → StepperStepArrowBorder-BO_ItxMh.js.map} +1 -1
  67. package/chunks/{SuggestFieldMobileDropdownHint-mgLnJbKK.js → SuggestFieldMobileDropdownHint-DyfJuyUe.js} +3 -3
  68. package/chunks/{SuggestFieldMobileDropdownHint-mgLnJbKK.js.map → SuggestFieldMobileDropdownHint-DyfJuyUe.js.map} +1 -1
  69. package/chunks/TableFooter.module-DhudGmzN.js +22 -0
  70. package/chunks/TableFooter.module-DhudGmzN.js.map +1 -0
  71. package/chunks/TabsExtended.module-DNjJIne-.js +26 -0
  72. package/chunks/TabsExtended.module-DNjJIne-.js.map +1 -0
  73. package/chunks/TabsLine.module-CbVAypRw.js +36 -0
  74. package/chunks/TabsLine.module-CbVAypRw.js.map +1 -0
  75. package/chunks/TooltipDesktop.module-DBiY8cJJ.js +32 -0
  76. package/chunks/TooltipDesktop.module-DBiY8cJJ.js.map +1 -0
  77. package/chunks/TreeView.module-GA-NyzjK.js +12 -0
  78. package/chunks/TreeView.module-GA-NyzjK.js.map +1 -0
  79. package/chunks/{UploadZoneInput-CL5n-88i.js → UploadZoneInput-BHUONqVR.js} +6 -6
  80. package/chunks/{UploadZoneInput-CL5n-88i.js.map → UploadZoneInput-BHUONqVR.js.map} +1 -1
  81. package/chunks/{constants-6r0L2MTn.js → constants-C-WrqYH6.js} +27 -27
  82. package/chunks/{constants-6r0L2MTn.js.map → constants-C-WrqYH6.js.map} +1 -1
  83. package/chunks/{utils-jrjtwu4s.js → utils-BHxrQbA6.js} +8 -8
  84. package/chunks/{utils-jrjtwu4s.js.map → utils-BHxrQbA6.js.map} +1 -1
  85. package/chunks/{utils-Bs1RRAwM.js → utils-BaakoACO.js} +6 -6
  86. package/chunks/{utils-Bs1RRAwM.js.map → utils-BaakoACO.js.map} +1 -1
  87. package/chunks/{utils-DPci6J0N.js → utils-D4UOxU49.js} +27 -27
  88. package/chunks/{utils-DPci6J0N.js.map → utils-D4UOxU49.js.map} +1 -1
  89. package/chunks/{utils-CbmIP4b4.js → utils-g0xZYVuS.js} +11 -11
  90. package/chunks/{utils-CbmIP4b4.js.map → utils-g0xZYVuS.js.map} +1 -1
  91. package/chunks/{vendor-Bco_z_Yi.js → vendor-CtuAQuEN.js} +13 -13
  92. package/chunks/{vendor-Bco_z_Yi.js.map → vendor-CtuAQuEN.js.map} +1 -1
  93. package/components/AbstractTree/AbstractTreeNode.js +1 -1
  94. package/components/AccordionBase/protected/AccordionBase.js +1 -1
  95. package/components/Alert/AlertContext/AlertContext.js +17 -29
  96. package/components/Alert/AlertContext/AlertContext.js.map +1 -1
  97. package/components/Alert/AlertProcess/AlertProcess.js +3 -3
  98. package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +2 -2
  99. package/components/Amount/Amount.js +3 -3
  100. package/components/Avatar/Avatar.js +14 -14
  101. package/components/Badge/Badge.js +5 -5
  102. package/components/Badge/BadgeDot.js +5 -5
  103. package/components/Badge/components/BadgeContent.js +7 -7
  104. package/components/Badge/components/BadgePostfix.js +2 -2
  105. package/components/Badge/components/BadgePrefix.js +2 -2
  106. package/components/Body/Body.js +4 -4
  107. package/components/Button/Button.js +30 -29
  108. package/components/Button/Button.js.map +1 -1
  109. package/components/Button/ButtonBase.js +1 -1
  110. package/components/Button/ButtonDropdown.js +66 -84
  111. package/components/Button/ButtonDropdown.js.map +1 -1
  112. package/components/Button/ButtonDropdownExtended.js +18 -22
  113. package/components/Button/ButtonDropdownExtended.js.map +1 -1
  114. package/components/Button/ButtonIcon.js +4 -4
  115. package/components/Button/ButtonIcon.js.map +1 -1
  116. package/components/Button/index.js +0 -2
  117. package/components/Button/index.js.map +1 -1
  118. package/components/Calendar/Calendar.js +5 -5
  119. package/components/Calendar/components/CalendarControls.js +1 -1
  120. package/components/Calendar/components/CalendarFooter.js +1 -1
  121. package/components/Calendar/components/CalendarViewDays.js +2 -2
  122. package/components/Calendar/components/CalendarViewItem.js +2 -2
  123. package/components/Calendar/components/CalendarViewMonths.js +1 -1
  124. package/components/Calendar/components/CalendarViewYears.js +1 -1
  125. package/components/Card/CardAction.js +6 -6
  126. package/components/Card/CardStatic.js +3 -3
  127. package/components/Card/components/CardContent/CardContent.js +2 -2
  128. package/components/Card/components/CardContent/components/CardContentBody.js +2 -2
  129. package/components/Card/components/CardContent/components/CardContentFooter.js +2 -2
  130. package/components/Card/components/CardContent/components/CardContentHeader.js +2 -2
  131. package/components/Card/components/CardMedia.js +2 -2
  132. package/components/Card/utils.js +1 -1
  133. package/components/Carousel/Carousel.js +362 -0
  134. package/components/Carousel/Carousel.js.map +1 -0
  135. package/components/Carousel/CarouselButton.js +78 -0
  136. package/components/Carousel/CarouselButton.js.map +1 -0
  137. package/components/Carousel/CarouselContext.js +30 -0
  138. package/components/Carousel/CarouselContext.js.map +1 -0
  139. package/components/Carousel/CarouselIndicators.js +157 -0
  140. package/components/Carousel/CarouselIndicators.js.map +1 -0
  141. package/components/Carousel/CarouselItem.js +34 -0
  142. package/components/Carousel/CarouselItem.js.map +1 -0
  143. package/components/Carousel/CarouselTrack.js +36 -0
  144. package/components/Carousel/CarouselTrack.js.map +1 -0
  145. package/components/Carousel/CarouselViewport.js +159 -0
  146. package/components/Carousel/CarouselViewport.js.map +1 -0
  147. package/components/Carousel/constants.js +9 -0
  148. package/components/Carousel/constants.js.map +1 -0
  149. package/components/Carousel/enums.js +15 -0
  150. package/components/Carousel/enums.js.map +1 -0
  151. package/components/Carousel/index.js +8 -0
  152. package/components/Carousel/index.js.map +1 -0
  153. package/components/Carousel/types.js +2 -0
  154. package/components/Carousel/types.js.map +1 -0
  155. package/components/Carousel/utils.js +71 -0
  156. package/components/Carousel/utils.js.map +1 -0
  157. package/components/CarouselExtended/CarouselExtended.js +2 -2
  158. package/components/Checkbox/Checkbox.js +11 -11
  159. package/components/Checkbox/CheckboxXGroup.js +9 -9
  160. package/components/Checkbox/CheckboxYGroup.js +2 -2
  161. package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +2 -2
  162. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
  163. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +2 -2
  164. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +2 -2
  165. package/components/Chip/Chip.js +2 -2
  166. package/components/Chip/ChipClearButton.js +2 -2
  167. package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
  168. package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
  169. package/components/Chip/ChipDropdownArrow.js +3 -3
  170. package/components/Chip/ChipIcon.js +1 -1
  171. package/components/Chip/ChipMultiselect.js +2 -2
  172. package/components/Chip/ChipOptions.js +2 -2
  173. package/components/Chip/ChipSelect/ChipSelect.js +2 -2
  174. package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
  175. package/components/Chip/ChipSort.js +2 -2
  176. package/components/Chip/ChipSuggest/ChipSuggest.js +2 -2
  177. package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +2 -2
  178. package/components/Chip/ChipSuggest/ChipSuggestTarget.js +1 -1
  179. package/components/Chip/ChipSuggest/desktop/ChipSuggestDesktopDropdownField.js +1 -1
  180. package/components/Chip/index.js +1 -1
  181. package/components/ChipGroup/ChipGroup.js +8 -8
  182. package/components/Col/Col.js +181 -178
  183. package/components/Col/Col.js.map +1 -1
  184. package/components/CollapsibleTree/CollapsibleTree.js +2 -2
  185. package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +2 -2
  186. package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +2 -2
  187. package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +5 -5
  188. package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +2 -2
  189. package/components/Confirm/Confirm.js +2 -2
  190. package/components/Confirm/components/ConfirmCloseButton.js +2 -2
  191. package/components/Confirm/components/ConfirmContent.js +2 -2
  192. package/components/Confirm/components/ConfirmContentTitle.js +2 -2
  193. package/components/Confirm/components/ConfirmControls.js +2 -2
  194. package/components/DatePickerExtended/DatePickerExtended.js +2 -2
  195. package/components/DatePickerExtended/DatePickerExtendedDropdown.js +2 -2
  196. package/components/DateRange/DateRange.js +4 -4
  197. package/components/DesignTokens/DesignTokenUtils.js +2 -2
  198. package/components/DesignTokens/DesignTokensComponents.js +2 -0
  199. package/components/DesignTokens/DesignTokensComponents.js.map +1 -1
  200. package/components/DesignTokens/DesignTokensComponentsThemeDark.js +2 -0
  201. package/components/DesignTokens/DesignTokensComponentsThemeDark.js.map +1 -1
  202. package/components/DesignTokens/components/Carousel.js +51 -0
  203. package/components/DesignTokens/components/Carousel.js.map +1 -0
  204. package/components/DesignTokens/components/index.js +3 -0
  205. package/components/DesignTokens/components/index.js.map +1 -1
  206. package/components/DesignTokens/types/DesignTokensTypes.js.map +1 -1
  207. package/components/Divider/Divider.js +18 -18
  208. package/components/DocumentNumberEdit/DocumentNumberEdit.js +4 -4
  209. package/components/Dropdown/Dropdown.js +14 -7
  210. package/components/Dropdown/Dropdown.js.map +1 -1
  211. package/components/Dropdown/desktop/DropdownDesktop.js +21 -25
  212. package/components/Dropdown/desktop/DropdownDesktop.js.map +1 -1
  213. package/components/Dropdown/desktop/DropdownList.js +38 -73
  214. package/components/Dropdown/desktop/DropdownList.js.map +1 -1
  215. package/components/Dropdown/desktop/DropdownListItem.js +2 -2
  216. package/components/Dropdown/desktop/index.js +1 -1
  217. package/components/Dropdown/desktop/utils.js +34 -0
  218. package/components/Dropdown/desktop/utils.js.map +1 -0
  219. package/components/Dropdown/index.js +1 -1
  220. package/components/Dropdown/mobile/DropdownMobile.js +2 -2
  221. package/components/Dropdown/mobile/DropdownMobileBody.js +2 -2
  222. package/components/Dropdown/mobile/DropdownMobileClose.js +2 -2
  223. package/components/Dropdown/mobile/DropdownMobileFooter.js +2 -2
  224. package/components/Dropdown/mobile/DropdownMobileHeader.js +2 -2
  225. package/components/Dropdown/mobile/DropdownMobileInner.js +6 -4
  226. package/components/Dropdown/mobile/DropdownMobileInner.js.map +1 -1
  227. package/components/Dropdown/mobile/DropdownMobileInput.js +2 -2
  228. package/components/Dropdown/mobile/DropdownMobileList.js +3 -3
  229. package/components/Dropdown/mobile/DropdownMobileList.js.map +1 -1
  230. package/components/Dropdown/mobile/DropdownMobileListItem.js +2 -2
  231. package/components/Dropdown/mobile/DropdownMobileListItem.js.map +1 -1
  232. package/components/Dropdown/mobile/DropdownMobileLoader.js +2 -2
  233. package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +2 -2
  234. package/components/Ellipsis/Ellipsis.js +4 -4
  235. package/components/EmptyView/EmptyView.js +5 -5
  236. package/components/ExpandAnimation/ExpandAnimation.js +2 -2
  237. package/components/FocusTrapExtended/FocusTrapExtended.js +1 -1
  238. package/components/Footer/Footer.js +1 -1
  239. package/components/Footer/components/FooterDescription.js +2 -2
  240. package/components/Footer/components/FooterDescriptionContent.js +2 -2
  241. package/components/Footer/components/FooterDescriptionControls.js +2 -2
  242. package/components/FormField/FormField.js +12 -12
  243. package/components/FormField/components/FormFieldClear.js +2 -2
  244. package/components/FormField/components/FormFieldCounter.js +1 -1
  245. package/components/FormField/components/FormFieldDescription.js +3 -3
  246. package/components/FormField/components/FormFieldInput.js +5 -5
  247. package/components/FormField/components/FormFieldLabel.js +8 -8
  248. package/components/FormField/components/FormFieldMaskedInput.js +7 -7
  249. package/components/FormField/components/FormFieldPostfix.js +2 -2
  250. package/components/FormField/components/FormFieldPrefix.js +2 -2
  251. package/components/FormField/components/FormFieldTarget.js +9 -9
  252. package/components/FormField/components/FormFieldTextarea.js +5 -5
  253. package/components/Gap/Gap.js +9 -9
  254. package/components/Header/Header.js +1 -1
  255. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +2 -2
  256. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +2 -2
  257. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +2 -2
  258. package/components/Header/components/HeaderSubheader/HeaderSubheader.js +3 -3
  259. package/components/Header/components/HeaderTabs/HeaderTabs.js +2 -2
  260. package/components/Header/components/HeaderTabs/HeaderTabsContent.js +2 -2
  261. package/components/Header/components/HeaderTabs/HeaderTabsControls.js +2 -2
  262. package/components/Header/components/HeaderTitle/HeaderTitle.js +2 -2
  263. package/components/Header/components/HeaderTitle/HeaderTitleContent.js +2 -2
  264. package/components/Header/components/HeaderTitle/HeaderTitleControls.js +2 -2
  265. package/components/HelpBox/HelpBox.js +2 -2
  266. package/components/IconWrapper/IconWrapper.js +3 -3
  267. package/components/ImageGallery/ImageGallery.js +1 -1
  268. package/components/ImageGalleryExtended/ImageGalleryExtended.js +3 -3
  269. package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +2 -2
  270. package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +4 -4
  271. package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +2 -2
  272. package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +2 -2
  273. package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +2 -2
  274. package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +2 -2
  275. package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +2 -2
  276. package/components/ImageGalleryExtended/components/index.js +1 -1
  277. package/components/ImageGalleryExtended/index.js +1 -1
  278. package/components/Island/Island.js +2 -2
  279. package/components/Island/components/IslandBody.js +2 -2
  280. package/components/Island/components/IslandFooter.js +2 -2
  281. package/components/Island/components/IslandHeader.js +2 -2
  282. package/components/Island/utils.js +1 -1
  283. package/components/IslandAccordion/IslandAccordion.js +3 -3
  284. package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
  285. package/components/IslandAccordion/components/IslandAccordionFooter.js +2 -2
  286. package/components/IslandAccordion/components/IslandAccordionItem.js +3 -4
  287. package/components/IslandAccordion/components/IslandAccordionItem.js.map +1 -1
  288. package/components/IslandWidget/IslandWidget.js +5 -5
  289. package/components/IslandWidget/components/IslandWidgetBody.js +2 -2
  290. package/components/IslandWidget/components/IslandWidgetExtraFooter.js +2 -2
  291. package/components/IslandWidget/components/IslandWidgetFooter.js +2 -2
  292. package/components/IslandWidget/components/IslandWidgetFooterContent.js +1 -1
  293. package/components/IslandWidget/components/IslandWidgetFooterControls.js +1 -1
  294. package/components/IslandWidget/components/IslandWidgetHeader.js +2 -2
  295. package/components/IslandWidget/components/IslandWidgetHeaderContent.js +2 -2
  296. package/components/IslandWidget/components/IslandWidgetHeaderControls.js +2 -2
  297. package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +2 -2
  298. package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +2 -2
  299. package/components/IslandWidget/components/IslandWidgetWrapper.js +2 -2
  300. package/components/LightBox/LightBox.js +34 -30
  301. package/components/LightBox/LightBox.js.map +1 -1
  302. package/components/LightBox/LightBoxContent.js +2 -2
  303. package/components/LightBox/LightBoxControls/LightBoxArrow.js +63 -0
  304. package/components/LightBox/LightBoxControls/LightBoxArrow.js.map +1 -0
  305. package/components/LightBox/LightBoxControls/LightBoxClose.js +8 -6
  306. package/components/LightBox/LightBoxControls/LightBoxClose.js.map +1 -1
  307. package/components/LightBox/LightBoxControls/LightBoxControls.js +2 -2
  308. package/components/LightBox/LightBoxControls/LightBoxControls.js.map +1 -1
  309. package/components/LightBox/LightBoxControls/LightBoxNext.js +18 -53
  310. package/components/LightBox/LightBoxControls/LightBoxNext.js.map +1 -1
  311. package/components/LightBox/LightBoxControls/LightBoxPrev.js +18 -53
  312. package/components/LightBox/LightBoxControls/LightBoxPrev.js.map +1 -1
  313. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +15 -15
  314. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js.map +1 -1
  315. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +2 -2
  316. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +2 -2
  317. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +5 -8
  318. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js.map +1 -1
  319. package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +7 -34
  320. package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js.map +1 -1
  321. package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +7 -34
  322. package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js.map +1 -1
  323. package/components/LightBox/LightBoxSidebars/useLightBoxSidebarVisibility.js +37 -0
  324. package/components/LightBox/LightBoxSidebars/useLightBoxSidebarVisibility.js.map +1 -0
  325. package/components/LightBox/LightBoxViewManager/LightBoxViewManager.js +32 -30
  326. package/components/LightBox/LightBoxViewManager/LightBoxViewManager.js.map +1 -1
  327. package/components/LightBox/LightBoxViewManager/LightBoxViewManagerConsts.js +0 -11
  328. package/components/LightBox/LightBoxViewManager/LightBoxViewManagerConsts.js.map +1 -1
  329. package/components/LightBox/enums.js.map +1 -1
  330. package/components/Link/Link.js +6 -6
  331. package/components/List/List.js +4 -4
  332. package/components/List/ListSortable.js +1 -1
  333. package/components/List/components/ListActionItem.js +2 -2
  334. package/components/List/components/ListEmptyState.js +2 -2
  335. package/components/List/components/ListItem.js +1 -1
  336. package/components/List/components/ListItemContent.js +5 -5
  337. package/components/List/components/ListItemControls.js +2 -2
  338. package/components/List/components/ListItemControlsButton.js +2 -2
  339. package/components/List/components/ListItemControlsButtonDropdown.js +2 -2
  340. package/components/List/components/ListItemLoading.js +2 -2
  341. package/components/List/components/ListItemSelectable.js +7 -7
  342. package/components/List/components/ListItemTailLeft.js +2 -2
  343. package/components/List/components/ListItemTailRight.js +2 -2
  344. package/components/List/components/ListSortableItem.js +3 -3
  345. package/components/List/components/ListSortableItemControls.js +2 -2
  346. package/components/List/components/ListSortableItemTarget.js +5 -5
  347. package/components/List/components/ListTableItem.js +4 -4
  348. package/components/List/index.js +1 -1
  349. package/components/ListMaster/ListMaster.js +1 -1
  350. package/components/ListMaster/components/ListMasterBody.js +1 -1
  351. package/components/ListMaster/components/ListMasterChipGroup.js +2 -2
  352. package/components/ListMaster/components/ListMasterFooter.js +2 -2
  353. package/components/ListMaster/components/ListMasterFooterControls.js +2 -2
  354. package/components/ListMaster/components/ListMasterFooterDescription.js +2 -2
  355. package/components/ListMaster/components/ListMasterHeader.js +3 -3
  356. package/components/ListMaster/components/SelectionControls.js +3 -3
  357. package/components/Loader/LoaderMiddle/LoaderMiddle.js +9 -9
  358. package/components/Loader/LoaderSmall/LoaderSmall.js +11 -11
  359. package/components/LoaderScreen/LoaderScreen.js +6 -6
  360. package/components/Marker/Marker.js +2 -2
  361. package/components/Marker/utils.js +1 -1
  362. package/components/MarkerStatus/MarkerStatus.js +8 -8
  363. package/components/ModalWindow/ModalWindow.js +2 -2
  364. package/components/ModalWindow/components/ModalWindowBody.js +2 -2
  365. package/components/ModalWindow/components/ModalWindowClose.js +1 -1
  366. package/components/ModalWindow/components/ModalWindowContent.js +2 -2
  367. package/components/ModalWindow/components/ModalWindowHeader.js +2 -2
  368. package/components/ModalWindow/components/ModalWindowViewManager.js +2 -2
  369. package/components/MonthYearRange/MonthYearRange.js +4 -4
  370. package/components/MultiselectField/components/MultiselectFieldDropdown.js +2 -2
  371. package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +6 -6
  372. package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +2 -2
  373. package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +2 -2
  374. package/components/Notification/Notification.js +3 -3
  375. package/components/Notification/NotificationGrouped.js +1 -1
  376. package/components/Notification/components/NotificationBody.js +1 -1
  377. package/components/Notification/components/NotificationBodyList.js +2 -2
  378. package/components/Notification/components/NotificationClose.js +1 -2
  379. package/components/Notification/components/NotificationClose.js.map +1 -1
  380. package/components/Notification/components/NotificationFooter.js +1 -1
  381. package/components/Notification/components/NotificationGroupedFooter.js +2 -2
  382. package/components/Notification/components/NotificationHeader.js +1 -1
  383. package/components/Notification/components/NotificationIcon.js +1 -1
  384. package/components/Notification/components/NotificationTime.js +1 -1
  385. package/components/OrderedList/OrderedList.js +3 -3
  386. package/components/OrderedList/OrderedListItem.js +3 -3
  387. package/components/Overlay/Overlay.js +2 -2
  388. package/components/Overlay/OverlayMask.js +2 -2
  389. package/components/Overlay/OverlayPanel.js +2 -2
  390. package/components/Page/Page.js +2 -2
  391. package/components/Page/components/BodyPage.js +4 -4
  392. package/components/Page/components/FooterPage.js +2 -2
  393. package/components/Page/components/HeaderPage.js +2 -2
  394. package/components/Pagination/components/PaginationExtended.js +3 -3
  395. package/components/Pagination/components/PaginationNavigationButton.js +2 -2
  396. package/components/Pagination/components/PaginationNavigationExtended.js +2 -2
  397. package/components/Pagination/components/PaginationPageButton.js +3 -7
  398. package/components/Pagination/components/PaginationPageButton.js.map +1 -1
  399. package/components/Pagination/components/PaginationPageEllipsis.js +2 -2
  400. package/components/Pagination/components/PaginationSelect.js +3 -3
  401. package/components/Pagination/utils/paginationUtils.js +1 -1
  402. package/components/Portal/Portal.js.map +1 -1
  403. package/components/Radio/Radio.js +10 -10
  404. package/components/Radio/RadioXGroup.js +9 -9
  405. package/components/Radio/RadioYGroup.js +2 -2
  406. package/components/Row/Row.js +25 -17
  407. package/components/Row/Row.js.map +1 -1
  408. package/components/Row/RowContext.js.map +1 -1
  409. package/components/SMSField/SMSField.js +3 -3
  410. package/components/SMSField/components/RefreshIcon.js +2 -2
  411. package/components/SMSField/components/SMSFieldInput.js +2 -2
  412. package/components/SMSField/components/SMSFieldRefresh.js +2 -3
  413. package/components/SMSField/components/SMSFieldRefresh.js.map +1 -1
  414. package/components/SMSField/components/SMSFieldSubmit.js +2 -3
  415. package/components/SMSField/components/SMSFieldSubmit.js.map +1 -1
  416. package/components/SMSField/components/SMSFieldTooltip.js +1 -1
  417. package/components/SegmentedControl/SegmentedControl.js +10 -10
  418. package/components/SegmentedControl/SegmentedControlSegment.js +4 -4
  419. package/components/SelectExtendedField/SelectExtendedField.js +2 -2
  420. package/components/SelectExtendedField/components/SelectExtendedFieldDropdown.js +1 -1
  421. package/components/SelectExtendedField/components/SelectExtendedFieldDropdownDefault.js +1 -1
  422. package/components/SelectExtendedField/components/SelectExtendedFieldTarget.js +8 -8
  423. package/components/SelectField/SelectField.js +2 -2
  424. package/components/Skeleton/Skeleton.js +5 -5
  425. package/components/SliderExtended/SliderExtended.js +3 -3
  426. package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +6 -6
  427. package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +2 -2
  428. package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +2 -2
  429. package/components/SliderExtended/components/SliderExtendedRail.js +2 -2
  430. package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +5 -5
  431. package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +7 -7
  432. package/components/SmallInput/SmallInput.js +2 -2
  433. package/components/Spoiler/Spoiler.js +11 -12
  434. package/components/Spoiler/Spoiler.js.map +1 -1
  435. package/components/StatusTracker/StatusTracker.js +3 -3
  436. package/components/StatusTracker/components/StatusTrackerAlert.js +2 -2
  437. package/components/StatusTracker/components/StatusTrackerBody.js +2 -2
  438. package/components/StatusTracker/components/StatusTrackerButton.js +2 -3
  439. package/components/StatusTracker/components/StatusTrackerButton.js.map +1 -1
  440. package/components/StatusTracker/components/StatusTrackerDescription.js +2 -2
  441. package/components/StatusTracker/components/StatusTrackerFooter.js +2 -2
  442. package/components/StatusTracker/components/StatusTrackerHeader.js +2 -2
  443. package/components/StatusTracker/components/StatusTrackerMedia.js +2 -2
  444. package/components/StatusTracker/components/StatusTrackerStatus.js +2 -2
  445. package/components/StatusTracker/components/StatusTrackerStatusGroup.js +2 -2
  446. package/components/StatusTracker/components/StatusTrackerSum.js +2 -2
  447. package/components/StatusTracker/components/StatusTrackerTitle.js +2 -2
  448. package/components/Step/Step.js +11 -11
  449. package/components/Stepper/Stepper.js +9 -9
  450. package/components/Stepper/StepperExtended.js +2 -2
  451. package/components/Stepper/StepperStep.js +3 -3
  452. package/components/Stepper/StepperStepArrowBorder.js +1 -1
  453. package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
  454. package/components/Suggest/useSuggest.js +1 -1
  455. package/components/SuggestField/SuggestField.js +1 -1
  456. package/components/SuggestField/desktop/SuggestFieldDesktop.js +2 -2
  457. package/components/SuggestField/desktop/SuggestFieldDesktopDropdown.js +1 -1
  458. package/components/SuggestField/index.js +1 -1
  459. package/components/SuggestField/mobile/SuggestFieldMobile.js +1 -1
  460. package/components/SuggestField/mobile/SuggestFieldMobileDropdown.js +2 -2
  461. package/components/SuggestField/mobile/SuggestFieldMobileDropdownHint.js +1 -1
  462. package/components/SuggestField/mobile/index.js +1 -1
  463. package/components/SwipeableArea/SwipeableArea.js +9 -9
  464. package/components/Table/ChipPanel.js +2 -2
  465. package/components/Table/ChipPanelLinks.js +2 -2
  466. package/components/Table/FilterPanel.js +3 -3
  467. package/components/Table/MasterTable.js +3 -3
  468. package/components/Table/NoColumns.js +3 -3
  469. package/components/Table/PaginationPanel.js +3 -3
  470. package/components/Table/TableBasic/TableBasic.js +2 -2
  471. package/components/Table/TableBasic/components/TableBasicBody.js +2 -2
  472. package/components/Table/TableBasic/components/TableBasicHeader.js +2 -2
  473. package/components/Table/TableBasic/components/TableBasicRow.js +2 -2
  474. package/components/Table/TableBasicSettings/TableBasicSettings.js +3 -3
  475. package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +3 -3
  476. package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +2 -2
  477. package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +2 -2
  478. package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +2 -2
  479. package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +2 -2
  480. package/components/Table/TableFooter/TableFooter.js +2 -2
  481. package/components/Table/TableFooter/components/TableFooterSummary.js +1 -1
  482. package/components/Table/TableFooter/components/TableFooterSummaryAmount.js +1 -1
  483. package/components/Table/TableFooter/components/TableFooterSummarySelectAllButton.js +1 -1
  484. package/components/Table/TableFooter/components/TableFooterSummarySelectedCount.js +1 -1
  485. package/components/Table/utils.js +1 -1
  486. package/components/Tabs/Tabs.js +6 -7
  487. package/components/Tabs/Tabs.js.map +1 -1
  488. package/components/TabsExtended/TabsExtended.js +3 -3
  489. package/components/TabsExtended/components/TabsExtendedContent.js +2 -2
  490. package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +2 -2
  491. package/components/TabsExtended/components/TabsExtendedTab.js +2 -2
  492. package/components/TabsExtended/components/TabsExtendedTabButton.js +2 -2
  493. package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +2 -2
  494. package/components/TabsExtended/utils.js +1 -1
  495. package/components/TabsLine/TabsLine.js +2 -2
  496. package/components/TabsLine/components/TabsLineDesktop.js +2 -2
  497. package/components/TabsLine/components/TabsLineDropdown.js +3 -3
  498. package/components/TabsLine/components/TabsLineItem.js +2 -2
  499. package/components/TabsLine/components/TabsLineMobile.js +2 -2
  500. package/components/Tag/Tag.js +6 -6
  501. package/components/TagColor/TagColor.js +11 -11
  502. package/components/TagGroup/TagGroup.js +5 -5
  503. package/components/TextField/TextField.js.map +1 -1
  504. package/components/TextField/TextFieldBase.js.map +1 -1
  505. package/components/ThemeProvider/ThemeProvider.js +1 -1
  506. package/components/ThemeProvider/components/ThemeProviderView.js +1 -1
  507. package/components/Tooltip/components/common/TooltipBody.js +2 -2
  508. package/components/Tooltip/components/common/TooltipLink.js +6 -6
  509. package/components/Tooltip/components/common/TooltipXButton.js +1 -1
  510. package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +2 -2
  511. package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +2 -2
  512. package/components/Tooltip/components/mobile/TooltipMobile.js +5 -5
  513. package/components/TopOverlay/TopOverlay.js +7 -7
  514. package/components/TreeView/TreeView.js +2 -2
  515. package/components/TreeView/components/TreeViewGroup.js +1 -1
  516. package/components/TreeView/components/TreeViewNode.js +2 -2
  517. package/components/Typography/Caption.js +10 -13
  518. package/components/Typography/Caption.js.map +1 -1
  519. package/components/Typography/CodeText.js +5 -8
  520. package/components/Typography/CodeText.js.map +1 -1
  521. package/components/Typography/Text.js +12 -15
  522. package/components/Typography/Text.js.map +1 -1
  523. package/components/Typography/Title.js +12 -15
  524. package/components/Typography/Title.js.map +1 -1
  525. package/components/Typography/constants.js +1 -1
  526. package/components/Typography/enums.js.map +1 -1
  527. package/components/Typography/utils.js +16 -0
  528. package/components/Typography/utils.js.map +1 -0
  529. package/components/UnorderedList/UnorderedList.js +3 -3
  530. package/components/UnorderedList/UnorderedListItem.js +3 -3
  531. package/components/UploadZone/UploadZone.js +3 -3
  532. package/components/UploadZone/components/UploadZoneInput.js +2 -2
  533. package/components/UploadZone/index.js +1 -1
  534. package/components/WindowResizeListener/WindowResizeListener.js +1 -1
  535. package/components/index.js +11 -8
  536. package/components/index.js.map +1 -1
  537. package/index.d.ts +247 -53
  538. package/index.js +11 -8
  539. package/index.js.map +1 -1
  540. package/package.json +5 -1
  541. package/styles/triplex-next.css +3086 -2914
  542. package/utils/amountUtils.js +1 -1
  543. package/chunks/Card.module-ByDQccH3.js +0 -30
  544. package/chunks/Card.module-ByDQccH3.js.map +0 -1
  545. package/chunks/CheckboxTreeExtended.module-CNm5PG-E.js +0 -24
  546. package/chunks/CheckboxTreeExtended.module-CNm5PG-E.js.map +0 -1
  547. package/chunks/Confirm.module-2RjEubTA.js +0 -24
  548. package/chunks/Confirm.module-2RjEubTA.js.map +0 -1
  549. package/chunks/DropdownListItem-R6GgcMur.js.map +0 -1
  550. package/chunks/DropdownMobile.module-QbABKAsu.js +0 -40
  551. package/chunks/DropdownMobile.module-QbABKAsu.js.map +0 -1
  552. package/chunks/Footer.module-BluyUQCL.js +0 -12
  553. package/chunks/Footer.module-BluyUQCL.js.map +0 -1
  554. package/chunks/HeaderLayoutSidebar.module-ClAll71g.js.map +0 -1
  555. package/chunks/HeaderTabs.module-CUwJ5fM3.js +0 -12
  556. package/chunks/HeaderTabs.module-CUwJ5fM3.js.map +0 -1
  557. package/chunks/HeaderTitle.module-uQ2R0h5h.js.map +0 -1
  558. package/chunks/ImageGalleryExtendedMain.module-I0Gz1tNa.js +0 -28
  559. package/chunks/ImageGalleryExtendedMain.module-I0Gz1tNa.js.map +0 -1
  560. package/chunks/IslandAccordion.module-CM3fce-H.js +0 -44
  561. package/chunks/IslandAccordion.module-CM3fce-H.js.map +0 -1
  562. package/chunks/IslandWidgetFooter.module-XUbrmzyT.js +0 -12
  563. package/chunks/IslandWidgetFooter.module-XUbrmzyT.js.map +0 -1
  564. package/chunks/IslandWidgetHeader.module-DIvckBK0.js +0 -20
  565. package/chunks/IslandWidgetHeader.module-DIvckBK0.js.map +0 -1
  566. package/chunks/LightBoxContent-DhmrVe_B.js.map +0 -1
  567. package/chunks/LightBoxControls.module-NJhXErnc.js +0 -26
  568. package/chunks/LightBoxControls.module-NJhXErnc.js.map +0 -1
  569. package/chunks/LightBoxSideOverlayClose.module-DH3toLJp.js.map +0 -1
  570. package/chunks/ListItemTail.module-CTCT4Ip2.js +0 -18
  571. package/chunks/ListItemTail.module-CTCT4Ip2.js.map +0 -1
  572. package/chunks/ListMasterFooter.module-5PZkmDVy.js +0 -14
  573. package/chunks/ListMasterFooter.module-5PZkmDVy.js.map +0 -1
  574. package/chunks/ModalWindow.module-D6KenC3t.js +0 -28
  575. package/chunks/ModalWindow.module-D6KenC3t.js.map +0 -1
  576. package/chunks/Notification.module-DLDTRU_N.js +0 -34
  577. package/chunks/Notification.module-DLDTRU_N.js.map +0 -1
  578. package/chunks/Overlay.module-BF-87L2z.js +0 -30
  579. package/chunks/Overlay.module-BF-87L2z.js.map +0 -1
  580. package/chunks/Page.module-C-q8yIcu.js +0 -15
  581. package/chunks/Page.module-C-q8yIcu.js.map +0 -1
  582. package/chunks/SMSField.module-B1m8ilx_.js +0 -26
  583. package/chunks/SMSField.module-B1m8ilx_.js.map +0 -1
  584. package/chunks/SliderExtendedMarks.module-D3H3S6p2.js +0 -24
  585. package/chunks/SliderExtendedMarks.module-D3H3S6p2.js.map +0 -1
  586. package/chunks/StatusTracker.module-lbYqNd1P.js +0 -42
  587. package/chunks/StatusTracker.module-lbYqNd1P.js.map +0 -1
  588. package/chunks/TableFooter.module-m3QKshwy.js +0 -22
  589. package/chunks/TableFooter.module-m3QKshwy.js.map +0 -1
  590. package/chunks/TabsExtended.module-D9BiyvHA.js +0 -26
  591. package/chunks/TabsExtended.module-D9BiyvHA.js.map +0 -1
  592. package/chunks/TabsLine.module-DcxnBOgb.js +0 -36
  593. package/chunks/TabsLine.module-DcxnBOgb.js.map +0 -1
  594. package/chunks/TooltipDesktop.module-BQpMEMtl.js +0 -32
  595. package/chunks/TooltipDesktop.module-BQpMEMtl.js.map +0 -1
  596. package/chunks/TreeView.module-BW9vWJxu.js +0 -12
  597. package/chunks/TreeView.module-BW9vWJxu.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownDesktop.js","sources":["../../../../src/components/Dropdown/desktop/DropdownDesktop.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { EDropdownAlignment, EDropdownDirection, EDropdownWidth } from \"./enums\";\nimport { EComponentSize } from \"../../../enums/EComponentSize\";\nimport { createSizeToClassNameMap } from \"../../../utils/classNameMaps\";\nimport { useToken } from \"../../ThemeProvider/useToken\";\nimport { isKey } from \"../../../utils/keyboard\";\nimport styles from \"../styles/DropdownDesktop.module.less\";\n\n/** Свойства компонента DropdownDesktop. */\nexport interface IDropdownDesktopProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Открыт. */\n opened: boolean;\n /** Устанавливает флаг opened. */\n setOpened: (opened: boolean) => void;\n /** Ссылка на управляющий элемент. */\n targetRef: React.RefObject<HTMLElement>;\n /** Размер дропдауна. */\n size?: EComponentSize;\n /** Направление выпадающего меню. */\n direction?: EDropdownDirection;\n /** Выравнивание списка относительно управляющего элемента. */\n alignment?: EDropdownAlignment;\n /** Вариант расчёта ширины выпадающего списка. */\n width?: EDropdownWidth;\n}\n\nconst sizeToClassNameMap = createSizeToClassNameMap(styles);\n\nconst overflowHiddenClassName = styles.dropdownDesktopOverflowHidden;\n\n/** Выпадающее меню. */\nexport const DropdownDesktop = React.forwardRef<HTMLDivElement, IDropdownDesktopProps>((props, ref) => {\n const {\n children,\n className,\n style: styleProp,\n size = EComponentSize.MD,\n direction = EDropdownDirection.AUTO,\n alignment = EDropdownAlignment.LEFT,\n width = EDropdownWidth.CONTENT,\n opened,\n targetRef,\n setOpened,\n ...rest\n } = props;\n const [styleState, setStyleState] = useState<React.CSSProperties>({ opacity: 0 });\n const dropdownRef = useRef<HTMLDivElement | null>(null);\n\n const { scopeClassName } = useToken();\n const classNames = clsx(styles.dropdownDesktop, sizeToClassNameMap[size], scopeClassName, className);\n\n /** Блокировка скролла вне дропдауна. */\n const wheelHandler = useCallback(\n (event: WheelEvent) => {\n if (!dropdownRef.current?.contains(event.target as Node)) {\n event.preventDefault();\n }\n },\n [dropdownRef],\n );\n\n const keyDownHandler = useCallback((event: KeyboardEvent) => {\n if (event.target === document.body) {\n const key = event.code || event.keyCode;\n\n if (\n isKey(key, \"SPACE\") ||\n isKey(key, \"PAGE_UP\") ||\n isKey(key, \"PAGE_DOWN\") ||\n isKey(key, \"END\") ||\n isKey(key, \"HOME\") ||\n isKey(key, \"ARROW_LEFT\") ||\n isKey(key, \"ARROW_UP\") ||\n isKey(key, \"ARROW_RIGHT\") ||\n isKey(key, \"ARROW_DOWN\")\n ) {\n event.preventDefault();\n }\n }\n }, []);\n\n /** Управление скроллом внешней области. */\n const toggleScrollEventListener = useCallback(\n /** Запрет скролла всей страницы. */\n (add: boolean) => {\n if (add) {\n document.addEventListener(\"wheel\", wheelHandler, { passive: false });\n document.addEventListener(\"keydown\", keyDownHandler);\n } else {\n document.removeEventListener(\"wheel\", wheelHandler);\n document.removeEventListener(\"keydown\", keyDownHandler);\n }\n },\n [wheelHandler, keyDownHandler],\n );\n\n /** Расчёт положения по горизонтали. */\n const calculatePositionHorizontal = useCallback(\n (css: React.CSSProperties, targetRect: DOMRect, expectedWidth: number) => {\n const clientWidth = document.documentElement.clientWidth;\n\n const leftPos = targetRect.left;\n const rightPos = targetRect.right - expectedWidth;\n\n if (alignment === EDropdownAlignment.LEFT) {\n const fitsRightSide = leftPos + expectedWidth <= clientWidth;\n css.left = fitsRightSide ? leftPos : Math.max(0, rightPos);\n } else {\n const fitsLeftSide = rightPos >= 0;\n css.left = fitsLeftSide ? rightPos : Math.max(0, Math.min(leftPos, clientWidth - expectedWidth));\n }\n },\n [alignment],\n );\n\n /** Расчёт положения по вертикали. */\n const calculatePositionVertical = useCallback(\n (css: React.CSSProperties, dropdownRect: DOMRect, targetRect: DOMRect) => {\n // Отступ между target и dropdown.\n const offset = 4;\n\n if (direction === EDropdownDirection.AUTO) {\n if (targetRect.bottom + offset + dropdownRect.height < document.documentElement.clientHeight) {\n // Если влезает снизу.\n css.top = targetRect.bottom + offset;\n } else if (targetRect.top - offset - dropdownRect.height > 0) {\n // Если не влезает снизу, но влезает сверху.\n css.bottom = document.documentElement.clientHeight - targetRect.top + offset;\n } else {\n // Если не влезает снизу и сверху.\n css.top = targetRect.bottom + offset;\n }\n } else if (direction === EDropdownDirection.BOTTOM) {\n css.top = targetRect.bottom + offset;\n } else if (direction === EDropdownDirection.TOP) {\n css.bottom = document.documentElement.clientHeight - targetRect.top + offset;\n }\n },\n [direction],\n );\n\n /** Установка положения меню. */\n const setPosition = useCallback(() => {\n if (dropdownRef.current === null || targetRef.current === null) return;\n\n const dropdownRect = dropdownRef.current.getBoundingClientRect();\n const targetRect = targetRef.current.getBoundingClientRect();\n const css: React.CSSProperties = {};\n let expectedWidth = dropdownRect.width;\n\n if (width === EDropdownWidth.TARGET) {\n expectedWidth = targetRect.width;\n css.width = targetRect.width;\n } else if (width === EDropdownWidth.MIN_TARGET) {\n expectedWidth = Math.max(dropdownRect.width, targetRect.width);\n css.minWidth = targetRect.width;\n }\n\n calculatePositionVertical(css, dropdownRect, targetRect);\n calculatePositionHorizontal(css, targetRect, expectedWidth);\n\n setStyleState(css);\n }, [targetRef, width, calculatePositionVertical, calculatePositionHorizontal]);\n\n useEffect(() => {\n if (opened) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setPosition();\n } else {\n setStyleState({ opacity: 0 });\n }\n }, [opened, setPosition]);\n\n useEffect(() => {\n if (!opened || dropdownRef.current === null || targetRef.current === null) return;\n\n const observer = new ResizeObserver(setPosition);\n\n observer.observe(dropdownRef.current);\n observer.observe(targetRef.current);\n return () => observer.disconnect();\n }, [opened, targetRef, setPosition]);\n\n /** Планирует перерасчет позиции дропдауна в следующем кадре. */\n const updatePosition = useCallback(() => {\n setTimeout(setPosition);\n }, [setPosition]);\n\n useEffect(() => {\n if (opened) {\n document.addEventListener(\"scroll\", updatePosition, true);\n window.addEventListener(\"resize\", updatePosition);\n toggleScrollEventListener(true);\n document.body.classList.add(overflowHiddenClassName);\n updatePosition();\n\n return () => {\n document.removeEventListener(\"scroll\", updatePosition, true);\n window.removeEventListener(\"resize\", updatePosition);\n toggleScrollEventListener(false);\n document.body.classList.remove(overflowHiddenClassName);\n };\n }\n }, [opened, updatePosition, toggleScrollEventListener]);\n\n /** Функция для хранения ссылки. */\n const setRef = (instance: HTMLDivElement | null) => {\n dropdownRef.current = instance;\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref) {\n ref.current = instance;\n }\n };\n\n if (!opened) {\n return null;\n }\n\n return (\n <div\n className={classNames}\n style={{ ...styleState, ...styleProp }}\n {...rest}\n data-tx={process.env.npm_package_version}\n ref={setRef}\n >\n {children}\n </div>\n );\n});\n\nDropdownDesktop.displayName = \"DropdownDesktop\";\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownDesktop.js","sources":["../../../../src/components/Dropdown/desktop/DropdownDesktop.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { EDropdownAlignment, EDropdownDirection, EDropdownWidth } from \"./enums\";\nimport { EComponentSize } from \"../../../enums/EComponentSize\";\nimport { createSizeToClassNameMap } from \"../../../utils/classNameMaps\";\nimport { useToken } from \"../../ThemeProvider/useToken\";\nimport { isKey } from \"../../../utils/keyboard\";\nimport styles from \"../styles/DropdownDesktop.module.less\";\n\n/** Свойства компонента DropdownDesktop. */\nexport interface IDropdownDesktopProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Открыт. */\n opened: boolean;\n /** Устанавливает флаг opened. */\n setOpened: (opened: boolean) => void;\n /** Ссылка на управляющий элемент. */\n targetRef: React.RefObject<HTMLElement>;\n /** Размер дропдауна. */\n size?: EComponentSize;\n /** Направление выпадающего меню. */\n direction?: EDropdownDirection;\n /** Выравнивание списка относительно управляющего элемента. */\n alignment?: EDropdownAlignment;\n /** Вариант расчёта ширины выпадающего списка. */\n width?: EDropdownWidth;\n}\n\nconst sizeToClassNameMap = createSizeToClassNameMap(styles);\n\nconst overflowHiddenClassName = styles.dropdownDesktopOverflowHidden;\n\n/** Отступ между управляющим элементом и выпадающим меню, px. */\nconst TARGET_OFFSET = 4;\n\n/**\n * Десктопная версия выпадающего меню.\n * Позиционируется фиксированно относительно targetRef, пересчитывает положение при скролле,\n * ресайзе окна и изменении размеров меню или управляющего элемента. Пока меню открыто,\n * скролл страницы вне меню заблокирован. В закрытом состоянии ничего не рендерит.\n */\nexport const DropdownDesktop = React.forwardRef<HTMLDivElement, IDropdownDesktopProps>((props, ref) => {\n const {\n children,\n className,\n style: styleProp,\n size = EComponentSize.MD,\n direction = EDropdownDirection.AUTO,\n alignment = EDropdownAlignment.LEFT,\n width = EDropdownWidth.CONTENT,\n opened,\n targetRef,\n setOpened,\n ...rest\n } = props;\n const [styleState, setStyleState] = useState<React.CSSProperties>({ opacity: 0 });\n const dropdownRef = useRef<HTMLDivElement | null>(null);\n\n const { scopeClassName } = useToken();\n const classNames = clsx(styles.dropdownDesktop, sizeToClassNameMap[size], scopeClassName, className);\n\n /** Блокировка скролла вне дропдауна. */\n const wheelHandler = useCallback((event: WheelEvent) => {\n if (!dropdownRef.current?.contains(event.target as Node)) {\n event.preventDefault();\n }\n }, []);\n\n const keyDownHandler = useCallback((event: KeyboardEvent) => {\n if (event.target === document.body) {\n const key = event.code || event.keyCode;\n\n if (\n isKey(key, \"SPACE\") ||\n isKey(key, \"PAGE_UP\") ||\n isKey(key, \"PAGE_DOWN\") ||\n isKey(key, \"END\") ||\n isKey(key, \"HOME\") ||\n isKey(key, \"ARROW_LEFT\") ||\n isKey(key, \"ARROW_UP\") ||\n isKey(key, \"ARROW_RIGHT\") ||\n isKey(key, \"ARROW_DOWN\")\n ) {\n event.preventDefault();\n }\n }\n }, []);\n\n /** Управление подпиской на события, блокирующие скролл страницы вне дропдауна. */\n const toggleScrollEventListener = useCallback(\n (add: boolean) => {\n if (add) {\n document.addEventListener(\"wheel\", wheelHandler, { passive: false });\n document.addEventListener(\"keydown\", keyDownHandler);\n } else {\n document.removeEventListener(\"wheel\", wheelHandler);\n document.removeEventListener(\"keydown\", keyDownHandler);\n }\n },\n [wheelHandler, keyDownHandler],\n );\n\n /** Расчёт положения по горизонтали. */\n const calculatePositionHorizontal = useCallback(\n (css: React.CSSProperties, targetRect: DOMRect, expectedWidth: number) => {\n const clientWidth = document.documentElement.clientWidth;\n\n const leftPos = targetRect.left;\n const rightPos = targetRect.right - expectedWidth;\n\n if (alignment === EDropdownAlignment.LEFT) {\n const fitsRightSide = leftPos + expectedWidth <= clientWidth;\n css.left = fitsRightSide ? leftPos : Math.max(0, rightPos);\n } else {\n const fitsLeftSide = rightPos >= 0;\n css.left = fitsLeftSide ? rightPos : Math.max(0, Math.min(leftPos, clientWidth - expectedWidth));\n }\n },\n [alignment],\n );\n\n /** Расчёт положения по вертикали. */\n const calculatePositionVertical = useCallback(\n (css: React.CSSProperties, dropdownRect: DOMRect, targetRect: DOMRect) => {\n if (direction === EDropdownDirection.AUTO) {\n if (targetRect.bottom + TARGET_OFFSET + dropdownRect.height < document.documentElement.clientHeight) {\n // Если влезает снизу.\n css.top = targetRect.bottom + TARGET_OFFSET;\n } else if (targetRect.top - TARGET_OFFSET - dropdownRect.height > 0) {\n // Если не влезает снизу, но влезает сверху.\n css.bottom = document.documentElement.clientHeight - targetRect.top + TARGET_OFFSET;\n } else {\n // Если не влезает снизу и сверху.\n css.top = targetRect.bottom + TARGET_OFFSET;\n }\n } else if (direction === EDropdownDirection.BOTTOM) {\n css.top = targetRect.bottom + TARGET_OFFSET;\n } else if (direction === EDropdownDirection.TOP) {\n css.bottom = document.documentElement.clientHeight - targetRect.top + TARGET_OFFSET;\n }\n },\n [direction],\n );\n\n /** Установка положения меню. */\n const setPosition = useCallback(() => {\n if (dropdownRef.current === null || targetRef.current === null) return;\n\n const dropdownRect = dropdownRef.current.getBoundingClientRect();\n const targetRect = targetRef.current.getBoundingClientRect();\n const css: React.CSSProperties = {};\n let expectedWidth = dropdownRect.width;\n\n if (width === EDropdownWidth.TARGET) {\n expectedWidth = targetRect.width;\n css.width = targetRect.width;\n } else if (width === EDropdownWidth.MIN_TARGET) {\n expectedWidth = Math.max(dropdownRect.width, targetRect.width);\n css.minWidth = targetRect.width;\n }\n\n calculatePositionVertical(css, dropdownRect, targetRect);\n calculatePositionHorizontal(css, targetRect, expectedWidth);\n\n setStyleState(css);\n }, [targetRef, width, calculatePositionVertical, calculatePositionHorizontal]);\n\n useEffect(() => {\n if (opened) {\n // Положение можно посчитать только после того, как меню отрендерено и его размеры измеримы.\n setPosition();\n } else {\n setStyleState({ opacity: 0 });\n }\n }, [opened, setPosition]);\n\n useEffect(() => {\n if (!opened || dropdownRef.current === null || targetRef.current === null) return;\n\n const observer = new ResizeObserver(setPosition);\n\n observer.observe(dropdownRef.current);\n observer.observe(targetRef.current);\n return () => observer.disconnect();\n }, [opened, targetRef, setPosition]);\n\n /** Планирует перерасчет позиции дропдауна в следующем кадре. */\n const updatePosition = useCallback(() => {\n setTimeout(setPosition);\n }, [setPosition]);\n\n useEffect(() => {\n if (opened) {\n document.addEventListener(\"scroll\", updatePosition, true);\n window.addEventListener(\"resize\", updatePosition);\n toggleScrollEventListener(true);\n document.body.classList.add(overflowHiddenClassName);\n updatePosition();\n\n return () => {\n document.removeEventListener(\"scroll\", updatePosition, true);\n window.removeEventListener(\"resize\", updatePosition);\n toggleScrollEventListener(false);\n document.body.classList.remove(overflowHiddenClassName);\n };\n }\n }, [opened, updatePosition, toggleScrollEventListener]);\n\n const setRef = (instance: HTMLDivElement | null) => {\n dropdownRef.current = instance;\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref) {\n ref.current = instance;\n }\n };\n\n if (!opened) {\n return null;\n }\n\n return (\n <div\n className={classNames}\n style={{ ...styleState, ...styleProp }}\n {...rest}\n data-tx={process.env.npm_package_version}\n ref={setRef}\n >\n {children}\n </div>\n );\n});\n\nDropdownDesktop.displayName = \"DropdownDesktop\";\n"],"names":["React"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import React__default, { useContext, useRef, useState, useEffect } from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
- import { s as styles, D as DropdownListItem } from "../../../chunks/DropdownListItem-R6GgcMur.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
+ import { s as styles, D as DropdownListItem } from "../../../chunks/DropdownListItem-BqOoPFSx.js";
5
5
  import { EVENT_KEY_CODES } from "../../../utils/keyboard.js";
6
6
  import { DropdownListContext } from "../DropdownListContext.js";
7
7
  import { LoaderSmall } from "../../Loader/LoaderSmall/LoaderSmall.js";
@@ -9,7 +9,9 @@ import { ELoaderSmallTheme } from "../../Loader/LoaderSmall/enum.js";
9
9
  import "../../Loader/LoaderMiddle/LoaderMiddle.js";
10
10
  import { EComponentSize } from "../../../enums/EComponentSize.js";
11
11
  import { createSizeToClassNameMap } from "../../../utils/classNameMaps.js";
12
+ import { getSelectedListItemIndex, scrollListToTop, scrollListToItem } from "./utils.js";
12
13
  const sizeToClassNameMap = createSizeToClassNameMap(styles);
14
+ const LOADER_ITEM_ID = "dropdown-desktop-list-loader-item";
13
15
  const DropdownList = (props) => {
14
16
  const {
15
17
  children,
@@ -21,65 +23,36 @@ const DropdownList = (props) => {
21
23
  ...htmlDivAttributes
22
24
  } = props;
23
25
  const classNames = clsx(styles.dropdownDesktopList, sizeToClassNameMap[size], className);
24
- const { activeDescendant, setActiveDescendant } = useContext(DropdownListContext);
25
- const containerRef = listRef || React__default.createRef();
26
+ const { setActiveDescendant } = useContext(DropdownListContext);
27
+ const innerContainerRef = useRef(null);
28
+ const containerRef = listRef || innerContainerRef;
26
29
  const listItemsRef = useRef([]);
27
- const [activeListItemIndex, setActiveListItemIndex] = useState(void 0);
30
+ const selectedListItemIndex = getSelectedListItemIndex(children);
31
+ const activeListItemIndexOnOpen = selectedListItemIndex ?? 0;
32
+ const [activeListItemIndex, setActiveListItemIndex] = useState(
33
+ dropdownOpened ? activeListItemIndexOnOpen : void 0
34
+ );
35
+ const [prevDropdownOpened, setPrevDropdownOpened] = useState(dropdownOpened);
36
+ if (dropdownOpened !== prevDropdownOpened) {
37
+ setPrevDropdownOpened(dropdownOpened);
38
+ setActiveListItemIndex(dropdownOpened ? activeListItemIndexOnOpen : void 0);
39
+ }
28
40
  const childrenCount = React__default.Children.count(children);
29
- const scrollContainerToItem = (itemIndex) => {
30
- const parent = containerRef == null ? void 0 : containerRef.current;
31
- const activeItem = listItemsRef.current[itemIndex];
32
- if (parent && activeItem) {
33
- const { top: parentTop, bottom: parentBottom } = parent.getBoundingClientRect();
34
- const { top: itemTop, bottom: itemBottom } = activeItem.getBoundingClientRect();
35
- const offset = 4;
36
- if (parentTop > itemTop) {
37
- parent.scrollTop = parent.scrollTop - parentTop + itemTop - offset;
38
- } else if (itemBottom > parentBottom) {
39
- parent.scrollTop = parent.scrollTop + itemBottom - parentBottom + offset;
40
- }
41
- }
42
- };
43
- const scrollContainerToTop = () => {
44
- const container = containerRef == null ? void 0 : containerRef.current;
45
- if (container) {
46
- container.scrollTop = 0;
47
- }
48
- };
49
41
  useEffect(() => {
50
42
  if (!dropdownOpened) {
51
43
  return;
52
44
  }
53
45
  const handleKeyDown = (event) => {
54
- const { keyCode } = event;
55
- const childrenLength = childrenCount;
56
- const currentIndex = activeListItemIndex;
57
46
  let nextActiveListItemIndex;
58
- if (keyCode === EVENT_KEY_CODES.ARROW_DOWN) {
59
- if (currentIndex !== void 0) {
60
- if (currentIndex < childrenLength - 1) {
61
- nextActiveListItemIndex = currentIndex + 1;
62
- } else {
63
- nextActiveListItemIndex = 0;
64
- }
65
- } else {
66
- nextActiveListItemIndex = 0;
67
- }
47
+ if (event.keyCode === EVENT_KEY_CODES.ARROW_DOWN) {
48
+ nextActiveListItemIndex = activeListItemIndex === void 0 || activeListItemIndex >= childrenCount - 1 ? 0 : activeListItemIndex + 1;
68
49
  event.preventDefault();
69
- } else if (keyCode === EVENT_KEY_CODES.ARROW_UP) {
70
- if (currentIndex !== void 0) {
71
- if (currentIndex > 0) {
72
- nextActiveListItemIndex = currentIndex - 1;
73
- } else {
74
- nextActiveListItemIndex = childrenLength - 1;
75
- }
76
- } else {
77
- nextActiveListItemIndex = childrenLength - 1;
78
- }
50
+ } else if (event.keyCode === EVENT_KEY_CODES.ARROW_UP) {
51
+ nextActiveListItemIndex = activeListItemIndex === void 0 || activeListItemIndex <= 0 ? childrenCount - 1 : activeListItemIndex - 1;
79
52
  event.preventDefault();
80
53
  }
81
- if (nextActiveListItemIndex !== void 0 && currentIndex !== nextActiveListItemIndex) {
82
- scrollContainerToItem(nextActiveListItemIndex);
54
+ if (nextActiveListItemIndex !== void 0 && activeListItemIndex !== nextActiveListItemIndex) {
55
+ scrollListToItem(containerRef.current, listItemsRef.current[nextActiveListItemIndex]);
83
56
  setActiveListItemIndex(nextActiveListItemIndex);
84
57
  }
85
58
  };
@@ -87,22 +60,15 @@ const DropdownList = (props) => {
87
60
  return () => {
88
61
  document.removeEventListener("keydown", handleKeyDown);
89
62
  };
90
- }, [dropdownOpened, activeListItemIndex, childrenCount]);
63
+ }, [dropdownOpened, activeListItemIndex, childrenCount, containerRef]);
91
64
  useEffect(() => {
92
65
  if (!dropdownOpened) {
93
66
  return;
94
67
  }
95
- let isSelectedItemExist = false;
96
- React__default.Children.forEach(children, (child, index) => {
97
- if (React__default.isValidElement(child) && child.props.selected) {
98
- isSelectedItemExist = true;
99
- scrollContainerToItem(index);
100
- setActiveListItemIndex(index);
101
- }
102
- });
103
- if (!isSelectedItemExist) {
104
- setActiveListItemIndex(0);
105
- scrollContainerToTop();
68
+ if (selectedListItemIndex === void 0) {
69
+ scrollListToTop(containerRef.current);
70
+ } else {
71
+ scrollListToItem(containerRef.current, listItemsRef.current[selectedListItemIndex]);
106
72
  }
107
73
  }, [dropdownOpened]);
108
74
  useEffect(() => {
@@ -111,17 +77,16 @@ const DropdownList = (props) => {
111
77
  setActiveDescendant((_a = listItemsRef.current[activeListItemIndex]) == null ? void 0 : _a.id);
112
78
  return;
113
79
  }
114
- if (!dropdownOpened && activeDescendant !== void 0) {
115
- setActiveDescendant();
80
+ if (!dropdownOpened) {
81
+ setActiveDescendant(void 0);
116
82
  }
117
- }, [dropdownOpened, activeListItemIndex, activeDescendant, setActiveDescendant]);
118
- useEffect(() => {
119
- return () => {
120
- if (activeDescendant !== void 0) {
121
- setActiveDescendant();
122
- }
123
- };
124
- }, [activeDescendant, setActiveDescendant]);
83
+ }, [dropdownOpened, activeListItemIndex, setActiveDescendant]);
84
+ useEffect(
85
+ () => () => {
86
+ setActiveDescendant(void 0);
87
+ },
88
+ [setActiveDescendant]
89
+ );
125
90
  const renderedChildren = React__default.Children.map(children, (child, index) => {
126
91
  if (!React__default.isValidElement(child)) {
127
92
  return child;
@@ -144,7 +109,7 @@ const DropdownList = (props) => {
144
109
  }
145
110
  });
146
111
  });
147
- const renderLoaderItem = () => /* @__PURE__ */ jsx(DropdownListItem, { id: "dropdown-desktop-list-loader-item", children: /* @__PURE__ */ jsx(LoaderSmall, { className: styles.dropdownDesktopListLoader, theme: ELoaderSmallTheme.BRAND, size }) });
112
+ const renderLoaderItem = () => /* @__PURE__ */ jsx(DropdownListItem, { id: LOADER_ITEM_ID, children: /* @__PURE__ */ jsx(LoaderSmall, { className: styles.dropdownDesktopListLoader, theme: ELoaderSmallTheme.BRAND, size }) });
148
113
  return /* @__PURE__ */ jsxs("div", { className: classNames, role: "listbox", ...htmlDivAttributes, ref: containerRef, children: [
149
114
  renderedChildren,
150
115
  loading && renderLoaderItem()
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownList.js","sources":["../../../../src/components/Dropdown/desktop/DropdownList.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n DropdownListItem,\n IDropdownListItemProps,\n} from \"@sberbusiness/triplex-next/components/Dropdown/desktop/DropdownListItem\";\nimport { EVENT_KEY_CODES } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { DropdownListContext } from \"@sberbusiness/triplex-next/components/Dropdown/DropdownListContext\";\nimport { LoaderSmall, ELoaderSmallTheme } from \"@sberbusiness/triplex-next/components/Loader\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums/EComponentSize\";\nimport { createSizeToClassNameMap } from \"../../../utils/classNameMaps\";\nimport styles from \"../styles/DropdownDesktopList.module.less\";\n\n/** Свойства компонента DropdownList. */\nexport interface IDropdownListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Dropdown открыт. */\n dropdownOpened: boolean;\n /** Объект для создания ссылки на html-элемент \"список\". */\n listRef?: React.RefObject<HTMLDivElement>;\n /** Состояние загрузки. */\n loading?: boolean;\n /** Размер списка. */\n size?: EComponentSize;\n}\n\n/** Индекс текущего выделенного элемента списка при навигации с клавиатуры. */\ntype TActiveListItemIndex = number | undefined;\n\n/** Композиция компонента DropdownList. */\nexport interface IDropdownListComponent extends React.FC<IDropdownListProps> {\n Item: typeof DropdownListItem;\n}\n\n// Соответствие размера имени класса.\nconst sizeToClassNameMap = createSizeToClassNameMap(styles);\n\n/**\n * Компонент DropdownList.\n * Используется для обрамления вложенного списка и добавляет спику возможность навигации с клавиатуры.\n * В качестве children принимает только DropdownDesktopList.Item.\n */\nexport const DropdownList: IDropdownListComponent = (props) => {\n const {\n children,\n className,\n dropdownOpened,\n listRef,\n loading,\n size = EComponentSize.MD,\n ...htmlDivAttributes\n } = props;\n const classNames = clsx(styles.dropdownDesktopList, sizeToClassNameMap[size], className);\n\n const { activeDescendant, setActiveDescendant } = useContext(DropdownListContext);\n\n // Ref контейнера списка.\n const containerRef = listRef || React.createRef<HTMLDivElement>();\n // Массив DOM-элементов списка.\n const listItemsRef = useRef<Array<HTMLDivElement | null>>([]);\n const [activeListItemIndex, setActiveListItemIndex] = useState<TActiveListItemIndex>(undefined);\n\n const childrenCount = React.Children.count(children);\n\n const scrollContainerToItem = (itemIndex: number) => {\n const parent = containerRef?.current;\n const activeItem = listItemsRef.current[itemIndex];\n\n if (parent && activeItem) {\n const { top: parentTop, bottom: parentBottom } = parent.getBoundingClientRect();\n const { top: itemTop, bottom: itemBottom } = activeItem.getBoundingClientRect();\n const offset = 4;\n\n if (parentTop > itemTop) {\n parent.scrollTop = parent.scrollTop - parentTop + itemTop - offset;\n } else if (itemBottom > parentBottom) {\n parent.scrollTop = parent.scrollTop + itemBottom - parentBottom + offset;\n }\n }\n };\n\n const scrollContainerToTop = () => {\n const container = containerRef?.current;\n if (container) {\n container.scrollTop = 0;\n }\n };\n\n // Подписка на keydown когда открыт, с актуальным индексом.\n useEffect(() => {\n if (!dropdownOpened) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const { keyCode } = event;\n const childrenLength = childrenCount;\n const currentIndex = activeListItemIndex;\n let nextActiveListItemIndex: number | undefined;\n\n if (keyCode === EVENT_KEY_CODES.ARROW_DOWN) {\n if (currentIndex !== undefined) {\n if (currentIndex < childrenLength - 1) {\n nextActiveListItemIndex = currentIndex + 1;\n } else {\n nextActiveListItemIndex = 0;\n }\n } else {\n nextActiveListItemIndex = 0;\n }\n event.preventDefault();\n } else if (keyCode === EVENT_KEY_CODES.ARROW_UP) {\n if (currentIndex !== undefined) {\n if (currentIndex > 0) {\n nextActiveListItemIndex = currentIndex - 1;\n } else {\n nextActiveListItemIndex = childrenLength - 1;\n }\n } else {\n nextActiveListItemIndex = childrenLength - 1;\n }\n event.preventDefault();\n }\n\n if (nextActiveListItemIndex !== undefined && currentIndex !== nextActiveListItemIndex) {\n scrollContainerToItem(nextActiveListItemIndex);\n setActiveListItemIndex(nextActiveListItemIndex);\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropdownOpened, activeListItemIndex, childrenCount]);\n\n // Установка активного элемента и скролла при открытии.\n useEffect(() => {\n if (!dropdownOpened) {\n return;\n }\n let isSelectedItemExist = false;\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement<IDropdownListItemProps>(child) && child.props.selected) {\n isSelectedItemExist = true;\n scrollContainerToItem(index);\n setActiveListItemIndex(index);\n }\n });\n if (!isSelectedItemExist) {\n setActiveListItemIndex(0);\n scrollContainerToTop();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropdownOpened]);\n\n // Синхронизация activeDescendant при изменении activeListItemIndex\n useEffect(() => {\n if (dropdownOpened && activeListItemIndex !== undefined) {\n setActiveDescendant(listItemsRef.current[activeListItemIndex]?.id);\n return;\n }\n if (!dropdownOpened && activeDescendant !== undefined) {\n setActiveDescendant();\n }\n }, [dropdownOpened, activeListItemIndex, activeDescendant, setActiveDescendant]);\n\n useEffect(() => {\n return () => {\n if (activeDescendant !== undefined) {\n setActiveDescendant();\n }\n };\n }, [activeDescendant, setActiveDescendant]);\n\n const renderedChildren = React.Children.map(children, (child, index) => {\n if (!React.isValidElement<IDropdownListItemProps & React.RefAttributes<HTMLDivElement>>(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n active: activeListItemIndex === index,\n onMouseOver: (event: React.MouseEvent<HTMLDivElement>) => {\n setActiveListItemIndex(index);\n child.props.onMouseOver?.(event);\n },\n onMouseOut: (event: React.MouseEvent<HTMLDivElement>) => {\n setActiveListItemIndex(undefined);\n child.props.onMouseOut?.(event);\n },\n size: size,\n ref: (node: HTMLDivElement | null) => {\n listItemsRef.current[index] = node;\n },\n });\n });\n\n const renderLoaderItem = () => (\n <DropdownListItem id=\"dropdown-desktop-list-loader-item\">\n <LoaderSmall className={styles.dropdownDesktopListLoader} theme={ELoaderSmallTheme.BRAND} size={size} />\n </DropdownListItem>\n );\n\n return (\n <div className={classNames} role=\"listbox\" {...htmlDivAttributes} ref={containerRef}>\n {renderedChildren}\n {loading && renderLoaderItem()}\n </div>\n );\n};\n\nDropdownList.Item = DropdownListItem;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownList.js","sources":["../../../../src/components/Dropdown/desktop/DropdownList.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport {\n DropdownListItem,\n IDropdownListItemProps,\n} from \"@sberbusiness/triplex-next/components/Dropdown/desktop/DropdownListItem\";\nimport { EVENT_KEY_CODES } from \"@sberbusiness/triplex-next/utils/keyboard\";\nimport { DropdownListContext } from \"@sberbusiness/triplex-next/components/Dropdown/DropdownListContext\";\nimport { LoaderSmall, ELoaderSmallTheme } from \"@sberbusiness/triplex-next/components/Loader\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums/EComponentSize\";\nimport { createSizeToClassNameMap } from \"../../../utils/classNameMaps\";\nimport { getSelectedListItemIndex, scrollListToItem, scrollListToTop } from \"./utils\";\nimport styles from \"../styles/DropdownDesktopList.module.less\";\n\n/** Свойства компонента DropdownList. */\nexport interface IDropdownListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Dropdown открыт. При открытии список подписывается на клавиатурную навигацию. */\n dropdownOpened: boolean;\n /** Объект для создания ссылки на html-элемент \"список\". */\n listRef?: React.RefObject<HTMLDivElement>;\n /** Состояние загрузки. Дополняет список элементом с лоадером. */\n loading?: boolean;\n /** Размер списка. Пробрасывается в элементы списка. */\n size?: EComponentSize;\n}\n\n/** Индекс текущего выделенного элемента списка при навигации с клавиатуры. */\ntype TActiveListItemIndex = number | undefined;\n\n/** Композиция компонента DropdownList. */\nexport interface IDropdownListComponent extends React.FC<IDropdownListProps> {\n /** Элемент выпадающего списка. */\n Item: typeof DropdownListItem;\n}\n\n// Соответствие размера имени класса.\nconst sizeToClassNameMap = createSizeToClassNameMap(styles);\n\n/** Идентификатор служебного элемента списка с лоадером. */\nconst LOADER_ITEM_ID = \"dropdown-desktop-list-loader-item\";\n\n/**\n * Компонент DropdownList.\n * Используется для обрамления вложенного списка и добавляет списку возможность навигации с клавиатуры.\n * В качестве children принимает только DropdownList.Item.\n */\nexport const DropdownList: IDropdownListComponent = (props) => {\n const {\n children,\n className,\n dropdownOpened,\n listRef,\n loading,\n size = EComponentSize.MD,\n ...htmlDivAttributes\n } = props;\n const classNames = clsx(styles.dropdownDesktopList, sizeToClassNameMap[size], className);\n\n const { setActiveDescendant } = useContext(DropdownListContext);\n\n // Ref контейнера списка. Используется внутренний ref, если listRef не передан снаружи.\n const innerContainerRef = useRef<HTMLDivElement>(null);\n const containerRef = listRef || innerContainerRef;\n // Массив DOM-элементов списка.\n const listItemsRef = useRef<Array<HTMLDivElement | null>>([]);\n\n // Индекс элемента, который становится активным при открытии: выбранный элемент либо первый.\n const selectedListItemIndex = getSelectedListItemIndex(children);\n const activeListItemIndexOnOpen = selectedListItemIndex ?? 0;\n\n const [activeListItemIndex, setActiveListItemIndex] = useState<TActiveListItemIndex>(\n dropdownOpened ? activeListItemIndexOnOpen : undefined,\n );\n const [prevDropdownOpened, setPrevDropdownOpened] = useState(dropdownOpened);\n\n // Сброс активного элемента при смене открытости — корректировка state в ответ на изменение props.\n // Сброс симметричен: на закрытии активный элемент снимается вместе с activeDescendant,\n // иначе список, оставленный смонтированным в закрытом виде, сохранял бы подсветку.\n if (dropdownOpened !== prevDropdownOpened) {\n setPrevDropdownOpened(dropdownOpened);\n setActiveListItemIndex(dropdownOpened ? activeListItemIndexOnOpen : undefined);\n }\n\n const childrenCount = React.Children.count(children);\n\n // Подписка на keydown когда открыт, с актуальным индексом.\n useEffect(() => {\n if (!dropdownOpened) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n let nextActiveListItemIndex: number | undefined;\n\n if (event.keyCode === EVENT_KEY_CODES.ARROW_DOWN) {\n nextActiveListItemIndex =\n activeListItemIndex === undefined || activeListItemIndex >= childrenCount - 1\n ? 0\n : activeListItemIndex + 1;\n event.preventDefault();\n } else if (event.keyCode === EVENT_KEY_CODES.ARROW_UP) {\n nextActiveListItemIndex =\n activeListItemIndex === undefined || activeListItemIndex <= 0\n ? childrenCount - 1\n : activeListItemIndex - 1;\n event.preventDefault();\n }\n\n if (nextActiveListItemIndex !== undefined && activeListItemIndex !== nextActiveListItemIndex) {\n scrollListToItem(containerRef.current, listItemsRef.current[nextActiveListItemIndex]);\n setActiveListItemIndex(nextActiveListItemIndex);\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [dropdownOpened, activeListItemIndex, childrenCount, containerRef]);\n\n // Прокрутка списка к активному элементу при открытии.\n useEffect(() => {\n if (!dropdownOpened) {\n return;\n }\n\n if (selectedListItemIndex === undefined) {\n scrollListToTop(containerRef.current);\n } else {\n scrollListToItem(containerRef.current, listItemsRef.current[selectedListItemIndex]);\n }\n // Прокрутка выполняется один раз на открытие, по состоянию списка на момент открытия.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dropdownOpened]);\n\n // Синхронизация activeDescendant при изменении activeListItemIndex.\n useEffect(() => {\n if (dropdownOpened && activeListItemIndex !== undefined) {\n setActiveDescendant(listItemsRef.current[activeListItemIndex]?.id);\n return;\n }\n\n if (!dropdownOpened) {\n setActiveDescendant(undefined);\n }\n }, [dropdownOpened, activeListItemIndex, setActiveDescendant]);\n\n // Сброс activeDescendant при размонтировании списка.\n useEffect(\n () => () => {\n setActiveDescendant(undefined);\n },\n [setActiveDescendant],\n );\n\n const renderedChildren = React.Children.map(children, (child, index) => {\n if (!React.isValidElement<IDropdownListItemProps & React.RefAttributes<HTMLDivElement>>(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n active: activeListItemIndex === index,\n onMouseOver: (event: React.MouseEvent<HTMLDivElement>) => {\n setActiveListItemIndex(index);\n child.props.onMouseOver?.(event);\n },\n onMouseOut: (event: React.MouseEvent<HTMLDivElement>) => {\n setActiveListItemIndex(undefined);\n child.props.onMouseOut?.(event);\n },\n size: size,\n ref: (node: HTMLDivElement | null) => {\n listItemsRef.current[index] = node;\n },\n });\n });\n\n const renderLoaderItem = () => (\n <DropdownListItem id={LOADER_ITEM_ID}>\n <LoaderSmall className={styles.dropdownDesktopListLoader} theme={ELoaderSmallTheme.BRAND} size={size} />\n </DropdownListItem>\n );\n\n return (\n <div className={classNames} role=\"listbox\" {...htmlDivAttributes} ref={containerRef}>\n {renderedChildren}\n {loading && renderLoaderItem()}\n </div>\n );\n};\n\nDropdownList.Item = DropdownListItem;\n"],"names":["React"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import "../../../chunks/vendor-Bco_z_Yi.js";
3
+ import "../../../chunks/vendor-CtuAQuEN.js";
4
4
  import "../../../enums/EComponentSize.js";
5
5
  import "../../../utils/keyboard.js";
6
6
  import "../../Badge/Badge.js";
7
- import { D } from "../../../chunks/DropdownListItem-R6GgcMur.js";
7
+ import { D } from "../../../chunks/DropdownListItem-BqOoPFSx.js";
8
8
  export {
9
9
  D as DropdownListItem
10
10
  };
@@ -1,6 +1,6 @@
1
1
  import { DropdownDesktop } from "./DropdownDesktop.js";
2
2
  import { DropdownList } from "./DropdownList.js";
3
- import { D } from "../../../chunks/DropdownListItem-R6GgcMur.js";
3
+ import { D } from "../../../chunks/DropdownListItem-BqOoPFSx.js";
4
4
  import { EDropdownAlignment, EDropdownDirection, EDropdownWidth } from "./enums.js";
5
5
  export {
6
6
  DropdownDesktop,
@@ -0,0 +1,34 @@
1
+ import React__default from "react";
2
+ const SCROLL_OFFSET = 4;
3
+ const getSelectedListItemIndex = (children) => {
4
+ let selectedIndex;
5
+ React__default.Children.forEach(children, (child, index) => {
6
+ if (React__default.isValidElement(child) && child.props.selected) {
7
+ selectedIndex = index;
8
+ }
9
+ });
10
+ return selectedIndex;
11
+ };
12
+ const scrollListToTop = (container) => {
13
+ if (container) {
14
+ container.scrollTop = 0;
15
+ }
16
+ };
17
+ const scrollListToItem = (container, item) => {
18
+ if (!container || !item) {
19
+ return;
20
+ }
21
+ const { top: containerTop, bottom: containerBottom } = container.getBoundingClientRect();
22
+ const { top: itemTop, bottom: itemBottom } = item.getBoundingClientRect();
23
+ if (containerTop > itemTop) {
24
+ container.scrollTop = container.scrollTop - containerTop + itemTop - SCROLL_OFFSET;
25
+ } else if (itemBottom > containerBottom) {
26
+ container.scrollTop = container.scrollTop + itemBottom - containerBottom + SCROLL_OFFSET;
27
+ }
28
+ };
29
+ export {
30
+ getSelectedListItemIndex,
31
+ scrollListToItem,
32
+ scrollListToTop
33
+ };
34
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/Dropdown/desktop/utils.ts"],"sourcesContent":["import React from \"react\";\nimport { IDropdownListItemProps } from \"./DropdownListItem\";\n\n/** Отступ между краем списка и элементом при автоматической прокрутке, px. */\nconst SCROLL_OFFSET = 4;\n\n/**\n * Возвращает индекс выбранного (selected) элемента списка.\n * Если выбранных элементов несколько, возвращается индекс последнего из них.\n * Если выбранных элементов нет, возвращается undefined.\n */\nexport const getSelectedListItemIndex = (children: React.ReactNode): number | undefined => {\n let selectedIndex: number | undefined;\n\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement<IDropdownListItemProps>(child) && child.props.selected) {\n selectedIndex = index;\n }\n });\n\n return selectedIndex;\n};\n\n/** Прокручивает контейнер списка к началу. */\nexport const scrollListToTop = (container: HTMLElement | null): void => {\n if (container) {\n container.scrollTop = 0;\n }\n};\n\n/**\n * Прокручивает контейнер списка так, чтобы элемент целиком попал в видимую область.\n * Если элемент уже видим полностью, прокрутка не выполняется.\n */\nexport const scrollListToItem = (container: HTMLElement | null, item: HTMLElement | null): void => {\n if (!container || !item) {\n return;\n }\n\n const { top: containerTop, bottom: containerBottom } = container.getBoundingClientRect();\n const { top: itemTop, bottom: itemBottom } = item.getBoundingClientRect();\n\n if (containerTop > itemTop) {\n container.scrollTop = container.scrollTop - containerTop + itemTop - SCROLL_OFFSET;\n } else if (itemBottom > containerBottom) {\n container.scrollTop = container.scrollTop + itemBottom - containerBottom + SCROLL_OFFSET;\n }\n};\n"],"names":["React"],"mappings":";AAIA,MAAM,gBAAgB;AAOf,MAAM,2BAA2B,CAAC,aAAkD;AACvF,MAAI;AAEJA,iBAAM,SAAS,QAAQ,UAAU,CAAC,OAAO,UAAU;AAC/C,QAAIA,eAAM,eAAuC,KAAK,KAAK,MAAM,MAAM,UAAU;AAC7E,sBAAgB;AAAA,IACpB;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAGO,MAAM,kBAAkB,CAAC,cAAwC;AACpE,MAAI,WAAW;AACX,cAAU,YAAY;AAAA,EAC1B;AACJ;AAMO,MAAM,mBAAmB,CAAC,WAA+B,SAAmC;AAC/F,MAAI,CAAC,aAAa,CAAC,MAAM;AACrB;AAAA,EACJ;AAEA,QAAM,EAAE,KAAK,cAAc,QAAQ,gBAAA,IAAoB,UAAU,sBAAA;AACjE,QAAM,EAAE,KAAK,SAAS,QAAQ,WAAA,IAAe,KAAK,sBAAA;AAElD,MAAI,eAAe,SAAS;AACxB,cAAU,YAAY,UAAU,YAAY,eAAe,UAAU;AAAA,EACzE,WAAW,aAAa,iBAAiB;AACrC,cAAU,YAAY,UAAU,YAAY,aAAa,kBAAkB;AAAA,EAC/E;AACJ;"}
@@ -1,7 +1,7 @@
1
1
  import { DropdownListContext } from "./DropdownListContext.js";
2
2
  import { DropdownDesktop } from "./desktop/DropdownDesktop.js";
3
3
  import { DropdownList } from "./desktop/DropdownList.js";
4
- import { D } from "../../chunks/DropdownListItem-R6GgcMur.js";
4
+ import { D } from "../../chunks/DropdownListItem-BqOoPFSx.js";
5
5
  import { EDropdownAlignment, EDropdownDirection, EDropdownWidth } from "./desktop/enums.js";
6
6
  import { DropdownMobile } from "./mobile/DropdownMobile.js";
7
7
  import { DropdownMobileBody } from "./mobile/DropdownMobileBody.js";
@@ -2,7 +2,7 @@ import { jsx } from "react/jsx-runtime";
2
2
  import React__default, { useEffect } from "react";
3
3
  import { OverlayBase, EOverlayDirection } from "../../Overlay/OverlayBase.js";
4
4
  import { DropdownMobileInner } from "./DropdownMobileInner.js";
5
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
5
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
6
6
  const dropdownMobileBodyOverflowClassName = styles.dropdownMobileBodyOverflow;
7
7
  const DropdownMobile = React__default.forwardRef(
8
8
  ({ children, opened, setOpened, ...htmlAttributes }, ref) => {
@@ -20,7 +20,7 @@ const DropdownMobile = React__default.forwardRef(
20
20
  ...props,
21
21
  ...htmlAttributes,
22
22
  ref,
23
- "data-tx": "1.38.0",
23
+ "data-tx": "1.40.0",
24
24
  children
25
25
  }
26
26
  ) });
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
5
5
  const DropdownMobileBody = React__default.forwardRef(
6
6
  ({ children, className, ...htmlAttributes }, ref) => /* @__PURE__ */ jsx("div", { className: clsx(styles.dropdownMobileContent, className), ref, ...htmlAttributes, children })
7
7
  );
@@ -2,8 +2,8 @@ import { jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
3
  import { ButtonIcon } from "../../Button/ButtonIcon.js";
4
4
  import { CrossStrokeSrvIcon16 } from "@sberbusiness/icons-next";
5
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
6
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
5
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
6
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
7
7
  const DropdownMobileClose = React__default.forwardRef(
8
8
  ({ className, ...buttonIconProps }, ref) => /* @__PURE__ */ jsx(ButtonIcon, { className: clsx(styles.dropdownMobileClose, className), ref, ...buttonIconProps, children: /* @__PURE__ */ jsx(CrossStrokeSrvIcon16, { paletteIndex: 5 }) })
9
9
  );
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
5
5
  const DropdownMobileFooter = React__default.forwardRef(
6
6
  ({ children, className, ...htmlAttributes }, ref) => /* @__PURE__ */ jsx("div", { className: clsx(styles.dropdownMobileFooter, className), ref, ...htmlAttributes, children })
7
7
  );
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
5
5
  const DropdownMobileHeader = React__default.forwardRef(
6
6
  ({ children, className, controlButtons, ...htmlAttributes }, ref) => /* @__PURE__ */ jsxs("div", { className: clsx(styles.dropdownMobileHeader, className), ref, ...htmlAttributes, children: [
7
7
  /* @__PURE__ */ jsx("div", { className: styles.dropdownMobileHeaderContent, children }),
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import React__default, { useState, useEffect } from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
4
  import { useToken } from "../../ThemeProvider/useToken.js";
5
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
5
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
6
6
  const DropdownMobileInner = React__default.forwardRef(
7
7
  ({
8
8
  children,
@@ -19,10 +19,12 @@ const DropdownMobileInner = React__default.forwardRef(
19
19
  const [openedState, setOpenedState] = useState(false);
20
20
  const { scopeClassName } = useToken();
21
21
  useEffect(() => {
22
- setTimeout(() => setOpeningState(openingProps));
22
+ const timeoutId = setTimeout(() => setOpeningState(openingProps));
23
+ return () => clearTimeout(timeoutId);
23
24
  }, [openingProps]);
24
25
  useEffect(() => {
25
- setTimeout(() => setOpenedState(openedProps));
26
+ const timeoutId = setTimeout(() => setOpenedState(openedProps));
27
+ return () => clearTimeout(timeoutId);
26
28
  }, [openedProps]);
27
29
  const classNamesWrapper = clsx(styles.dropdownMobileWrapper, scopeClassName, className);
28
30
  const classNamesBackDrop = clsx(styles.dropdownMobileBackdrop, {
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMobileInner.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileInner.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { IOverlayChildrenProvideProps } from \"@sberbusiness/triplex-next/components/Overlay/OverlayBase\";\nimport { useToken } from \"../../ThemeProvider/useToken\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileInner. */\nexport interface IDropdownMobileInnerProps extends IOverlayChildrenProvideProps, React.HTMLAttributes<HTMLDivElement> {}\n\n/** Контент мобильного Dropdown. */\nexport const DropdownMobileInner = React.forwardRef<HTMLDivElement, IDropdownMobileInnerProps>(\n (\n {\n children,\n className,\n opened: openedProps,\n opening: openingProps,\n closing,\n setOpened,\n setClosing,\n setOpening,\n ...htmlAttributes\n },\n ref,\n ) => {\n // OpeningState после рендера становится равен openingProps. Чтобы появилась анимация открытия, сначала нужно отрендерить элемент в закрытом виде.\n const [openingState, setOpeningState] = useState(false);\n const [openedState, setOpenedState] = useState(false);\n const { scopeClassName } = useToken();\n\n useEffect(() => {\n setTimeout(() => setOpeningState(openingProps));\n }, [openingProps]);\n\n useEffect(() => {\n setTimeout(() => setOpenedState(openedProps));\n }, [openedProps]);\n\n const classNamesWrapper = clsx(styles.dropdownMobileWrapper, scopeClassName, className);\n\n const classNamesBackDrop = clsx(styles.dropdownMobileBackdrop, {\n [styles.closing]: closing,\n [styles.opened]: openedState,\n [styles.opening]: openingState,\n });\n\n const classNamesContent = clsx(styles.dropdownMobile, {\n [styles.closing]: closing,\n [styles.opened]: openedState,\n [styles.opening]: openingState,\n });\n\n const handleTransitionEnd = (event: React.TransitionEvent<HTMLDivElement>) => {\n const { target, currentTarget } = event;\n\n if (target === currentTarget) {\n if (closing) {\n setClosing(false);\n } else if (openingProps) {\n setOpening(false);\n }\n }\n };\n\n /** Функция закрытия DropdownMobile. */\n const closeDropdown = () => {\n if (openedProps) {\n setOpened(false);\n }\n };\n\n if (!openingProps && !openedProps && !closing) {\n return null;\n }\n\n return (\n <div className={classNamesWrapper}>\n <div\n className={classNamesBackDrop}\n onTransitionEnd={handleTransitionEnd}\n onTouchStart={closeDropdown}\n onMouseDown={closeDropdown}\n />\n <div className={classNamesContent} ref={ref} {...htmlAttributes}>\n {children}\n </div>\n </div>\n );\n },\n);\n\nDropdownMobileInner.displayName = \"DropdownMobileInner\";\n"],"names":["React"],"mappings":";;;;;AAUO,MAAM,sBAAsBA,eAAM;AAAA,EACrC,CACI;AAAA,IACI;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEP,QACC;AAED,UAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,UAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,UAAM,EAAE,eAAA,IAAmB,SAAA;AAE3B,cAAU,MAAM;AACZ,iBAAW,MAAM,gBAAgB,YAAY,CAAC;AAAA,IAClD,GAAG,CAAC,YAAY,CAAC;AAEjB,cAAU,MAAM;AACZ,iBAAW,MAAM,eAAe,WAAW,CAAC;AAAA,IAChD,GAAG,CAAC,WAAW,CAAC;AAEhB,UAAM,oBAAoB,KAAK,OAAO,uBAAuB,gBAAgB,SAAS;AAEtF,UAAM,qBAAqB,KAAK,OAAO,wBAAwB;AAAA,MAC3D,CAAC,OAAO,OAAO,GAAG;AAAA,MAClB,CAAC,OAAO,MAAM,GAAG;AAAA,MACjB,CAAC,OAAO,OAAO,GAAG;AAAA,IAAA,CACrB;AAED,UAAM,oBAAoB,KAAK,OAAO,gBAAgB;AAAA,MAClD,CAAC,OAAO,OAAO,GAAG;AAAA,MAClB,CAAC,OAAO,MAAM,GAAG;AAAA,MACjB,CAAC,OAAO,OAAO,GAAG;AAAA,IAAA,CACrB;AAED,UAAM,sBAAsB,CAAC,UAAiD;AAC1E,YAAM,EAAE,QAAQ,cAAA,IAAkB;AAElC,UAAI,WAAW,eAAe;AAC1B,YAAI,SAAS;AACT,qBAAW,KAAK;AAAA,QACpB,WAAW,cAAc;AACrB,qBAAW,KAAK;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AAGA,UAAM,gBAAgB,MAAM;AACxB,UAAI,aAAa;AACb,kBAAU,KAAK;AAAA,MACnB;AAAA,IACJ;AAEA,QAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS;AAC3C,aAAO;AAAA,IACX;AAEA,WACI,qBAAC,OAAA,EAAI,WAAW,mBACZ,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,0BAEhB,OAAA,EAAI,WAAW,mBAAmB,KAAW,GAAG,gBAC5C,SAAA,CACL;AAAA,IAAA,GACJ;AAAA,EAER;AACJ;AAEA,oBAAoB,cAAc;"}
1
+ {"version":3,"file":"DropdownMobileInner.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileInner.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { IOverlayChildrenProvideProps } from \"@sberbusiness/triplex-next/components/Overlay/OverlayBase\";\nimport { useToken } from \"../../ThemeProvider/useToken\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileInner. */\nexport interface IDropdownMobileInnerProps extends IOverlayChildrenProvideProps, React.HTMLAttributes<HTMLDivElement> {}\n\n/** Контент мобильного Dropdown. */\nexport const DropdownMobileInner = React.forwardRef<HTMLDivElement, IDropdownMobileInnerProps>(\n (\n {\n children,\n className,\n opened: openedProps,\n opening: openingProps,\n closing,\n setOpened,\n setClosing,\n setOpening,\n ...htmlAttributes\n },\n ref,\n ) => {\n // OpeningState после рендера становится равен openingProps. Чтобы появилась анимация открытия, сначала нужно отрендерить элемент в закрытом виде.\n const [openingState, setOpeningState] = useState(false);\n const [openedState, setOpenedState] = useState(false);\n const { scopeClassName } = useToken();\n\n useEffect(() => {\n const timeoutId = setTimeout(() => setOpeningState(openingProps));\n\n return () => clearTimeout(timeoutId);\n }, [openingProps]);\n\n useEffect(() => {\n const timeoutId = setTimeout(() => setOpenedState(openedProps));\n\n return () => clearTimeout(timeoutId);\n }, [openedProps]);\n\n const classNamesWrapper = clsx(styles.dropdownMobileWrapper, scopeClassName, className);\n\n const classNamesBackDrop = clsx(styles.dropdownMobileBackdrop, {\n [styles.closing]: closing,\n [styles.opened]: openedState,\n [styles.opening]: openingState,\n });\n\n const classNamesContent = clsx(styles.dropdownMobile, {\n [styles.closing]: closing,\n [styles.opened]: openedState,\n [styles.opening]: openingState,\n });\n\n const handleTransitionEnd = (event: React.TransitionEvent<HTMLDivElement>) => {\n const { target, currentTarget } = event;\n\n if (target === currentTarget) {\n if (closing) {\n setClosing(false);\n } else if (openingProps) {\n setOpening(false);\n }\n }\n };\n\n /** Функция закрытия DropdownMobile. */\n const closeDropdown = () => {\n if (openedProps) {\n setOpened(false);\n }\n };\n\n if (!openingProps && !openedProps && !closing) {\n return null;\n }\n\n return (\n <div className={classNamesWrapper}>\n <div\n className={classNamesBackDrop}\n onTransitionEnd={handleTransitionEnd}\n onTouchStart={closeDropdown}\n onMouseDown={closeDropdown}\n />\n <div className={classNamesContent} ref={ref} {...htmlAttributes}>\n {children}\n </div>\n </div>\n );\n },\n);\n\nDropdownMobileInner.displayName = \"DropdownMobileInner\";\n"],"names":["React"],"mappings":";;;;;AAUO,MAAM,sBAAsBA,eAAM;AAAA,EACrC,CACI;AAAA,IACI;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEP,QACC;AAED,UAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,UAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,UAAM,EAAE,eAAA,IAAmB,SAAA;AAE3B,cAAU,MAAM;AACZ,YAAM,YAAY,WAAW,MAAM,gBAAgB,YAAY,CAAC;AAEhE,aAAO,MAAM,aAAa,SAAS;AAAA,IACvC,GAAG,CAAC,YAAY,CAAC;AAEjB,cAAU,MAAM;AACZ,YAAM,YAAY,WAAW,MAAM,eAAe,WAAW,CAAC;AAE9D,aAAO,MAAM,aAAa,SAAS;AAAA,IACvC,GAAG,CAAC,WAAW,CAAC;AAEhB,UAAM,oBAAoB,KAAK,OAAO,uBAAuB,gBAAgB,SAAS;AAEtF,UAAM,qBAAqB,KAAK,OAAO,wBAAwB;AAAA,MAC3D,CAAC,OAAO,OAAO,GAAG;AAAA,MAClB,CAAC,OAAO,MAAM,GAAG;AAAA,MACjB,CAAC,OAAO,OAAO,GAAG;AAAA,IAAA,CACrB;AAED,UAAM,oBAAoB,KAAK,OAAO,gBAAgB;AAAA,MAClD,CAAC,OAAO,OAAO,GAAG;AAAA,MAClB,CAAC,OAAO,MAAM,GAAG;AAAA,MACjB,CAAC,OAAO,OAAO,GAAG;AAAA,IAAA,CACrB;AAED,UAAM,sBAAsB,CAAC,UAAiD;AAC1E,YAAM,EAAE,QAAQ,cAAA,IAAkB;AAElC,UAAI,WAAW,eAAe;AAC1B,YAAI,SAAS;AACT,qBAAW,KAAK;AAAA,QACpB,WAAW,cAAc;AACrB,qBAAW,KAAK;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AAGA,UAAM,gBAAgB,MAAM;AACxB,UAAI,aAAa;AACb,kBAAU,KAAK;AAAA,MACnB;AAAA,IACJ;AAEA,QAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS;AAC3C,aAAO;AAAA,IACX;AAEA,WACI,qBAAC,OAAA,EAAI,WAAW,mBACZ,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAW;AAAA,UACX,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,0BAEhB,OAAA,EAAI,WAAW,mBAAmB,KAAW,GAAG,gBAC5C,SAAA,CACL;AAAA,IAAA,GACJ;AAAA,EAER;AACJ;AAEA,oBAAoB,cAAc;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
- const dropdownMobileInput = "dropdownMobileInput__6b928c13";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
+ const dropdownMobileInput = "dropdownMobileInput__f2f377bc";
5
5
  const styles = {
6
6
  dropdownMobileInput
7
7
  };
@@ -1,17 +1,17 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import React__default, { useState } from "react";
3
- import { u as uniqueId, c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
4
3
  import { LoaderSmall } from "../../Loader/LoaderSmall/LoaderSmall.js";
5
4
  import { ELoaderSmallTheme } from "../../Loader/LoaderSmall/enum.js";
6
5
  import "../../Loader/LoaderMiddle/LoaderMiddle.js";
7
6
  import { EComponentSize } from "../../../enums/EComponentSize.js";
8
7
  import { DropdownMobileListItem } from "./DropdownMobileListItem.js";
9
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
8
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
9
+ import { u as uniqueId } from "../../../chunks/vendor-CtuAQuEN.js";
10
10
  const DropdownMobileList = React__default.forwardRef(
11
11
  ({ children, className, loading, ...htmlAttributes }, ref) => {
12
12
  const [loaderId] = useState(() => uniqueId());
13
13
  const renderLoaderItem = () => /* @__PURE__ */ jsx(DropdownMobileListItem, { id: loaderId, className: styles.dropdownMobileListLoader, children: /* @__PURE__ */ jsx(LoaderSmall, { theme: ELoaderSmallTheme.BRAND, size: EComponentSize.MD }) });
14
- return /* @__PURE__ */ jsxs("div", { className: clsx(styles.dropdownMobileList, className), role: "listbox", ...htmlAttributes, ref, children: [
14
+ return /* @__PURE__ */ jsxs("div", { className, role: "listbox", ...htmlAttributes, ref, children: [
15
15
  children,
16
16
  loading && renderLoaderItem()
17
17
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMobileList.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileList.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { uniqueId } from \"lodash-es\";\nimport { LoaderSmall, ELoaderSmallTheme } from \"../../Loader\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums\";\nimport { DropdownMobileListItem } from \"./DropdownMobileListItem\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileList. */\nexport interface IDropdownMobileListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Состояние загрузки. */\n loading?: boolean;\n}\n\n/** Список мобильной версии Dropdown. */\nexport const DropdownMobileList = React.forwardRef<HTMLDivElement, IDropdownMobileListProps>(\n ({ children, className, loading, ...htmlAttributes }, ref) => {\n const [loaderId] = useState(() => uniqueId());\n\n const renderLoaderItem = () => (\n <DropdownMobileListItem id={loaderId} className={styles.dropdownMobileListLoader}>\n <LoaderSmall theme={ELoaderSmallTheme.BRAND} size={EComponentSize.MD} />\n </DropdownMobileListItem>\n );\n\n return (\n <div className={clsx(styles.dropdownMobileList, className)} role=\"listbox\" {...htmlAttributes} ref={ref}>\n {children}\n {loading && renderLoaderItem()}\n </div>\n );\n },\n);\n\nDropdownMobileList.displayName = \"DropdownMobileList\";\n"],"names":["React"],"mappings":";;;;;;;;;AAeO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,eAAA,GAAkB,QAAQ;AAC1D,UAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,UAAU;AAE5C,UAAM,mBAAmB,MACrB,oBAAC,wBAAA,EAAuB,IAAI,UAAU,WAAW,OAAO,0BACpD,UAAA,oBAAC,eAAY,OAAO,kBAAkB,OAAO,MAAM,eAAe,IAAI,GAC1E;AAGJ,WACI,qBAAC,OAAA,EAAI,WAAW,KAAK,OAAO,oBAAoB,SAAS,GAAG,MAAK,WAAW,GAAG,gBAAgB,KAC1F,UAAA;AAAA,MAAA;AAAA,MACA,WAAW,iBAAA;AAAA,IAAiB,GACjC;AAAA,EAER;AACJ;AAEA,mBAAmB,cAAc;"}
1
+ {"version":3,"file":"DropdownMobileList.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileList.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { uniqueId } from \"lodash-es\";\nimport { LoaderSmall, ELoaderSmallTheme } from \"../../Loader\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums\";\nimport { DropdownMobileListItem } from \"./DropdownMobileListItem\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileList. */\nexport interface IDropdownMobileListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Состояние загрузки. */\n loading?: boolean;\n}\n\n/** Список мобильной версии Dropdown. */\nexport const DropdownMobileList = React.forwardRef<HTMLDivElement, IDropdownMobileListProps>(\n ({ children, className, loading, ...htmlAttributes }, ref) => {\n const [loaderId] = useState(() => uniqueId());\n\n const renderLoaderItem = () => (\n <DropdownMobileListItem id={loaderId} className={styles.dropdownMobileListLoader}>\n <LoaderSmall theme={ELoaderSmallTheme.BRAND} size={EComponentSize.MD} />\n </DropdownMobileListItem>\n );\n\n return (\n <div className={className} role=\"listbox\" {...htmlAttributes} ref={ref}>\n {children}\n {loading && renderLoaderItem()}\n </div>\n );\n },\n);\n\nDropdownMobileList.displayName = \"DropdownMobileList\";\n"],"names":["React"],"mappings":";;;;;;;;;AAcO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,eAAA,GAAkB,QAAQ;AAC1D,UAAM,CAAC,QAAQ,IAAI,SAAS,MAAM,UAAU;AAE5C,UAAM,mBAAmB,MACrB,oBAAC,wBAAA,EAAuB,IAAI,UAAU,WAAW,OAAO,0BACpD,UAAA,oBAAC,eAAY,OAAO,kBAAkB,OAAO,MAAM,eAAe,IAAI,GAC1E;AAGJ,gCACK,OAAA,EAAI,WAAsB,MAAK,WAAW,GAAG,gBAAgB,KACzD,UAAA;AAAA,MAAA;AAAA,MACA,WAAW,iBAAA;AAAA,IAAiB,GACjC;AAAA,EAER;AACJ;AAEA,mBAAmB,cAAc;"}
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
4
  import { Text } from "../../Typography/Text.js";
5
5
  import { ETextSize } from "../../Typography/enums.js";
6
6
  import { Badge } from "../../Badge/Badge.js";
7
7
  import { EComponentSize } from "../../../enums/EComponentSize.js";
8
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
8
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
9
9
  const DropdownMobileListItem = React__default.forwardRef(
10
10
  ({ children, className, id, onClick, onSelect, selected, showNotificationIcon, ...htmlAttributes }, ref) => {
11
11
  const handleClick = (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMobileListItem.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileListItem.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport { Text } from \"@sberbusiness/triplex-next/components/Typography/Text\";\nimport { ETextSize } from \"@sberbusiness/triplex-next/components/Typography/enums\";\nimport { Badge } from \"../../Badge/Badge\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileListItem. */\nexport interface IDropdownMobileListItemProps extends React.HTMLAttributes<HTMLDivElement> {\n id: string;\n onSelect?: () => void;\n selected?: boolean;\n /** Флаг отображения значка новых уведомлений. */\n showNotificationIcon?: boolean;\n}\n\n/** Элемент списка мобильной версии Dropdown. */\nexport const DropdownMobileListItem = React.forwardRef<HTMLDivElement, IDropdownMobileListItemProps>(\n ({ children, className, id, onClick, onSelect, selected, showNotificationIcon, ...htmlAttributes }, ref) => {\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n onSelect?.();\n onClick?.(event);\n };\n\n return (\n <Text\n tag=\"div\"\n size={ETextSize.B3}\n className={clsx(styles.dropdownMobileListItem, { [styles.selected]: Boolean(selected) }, className)}\n aria-selected={Boolean(selected)}\n role=\"option\"\n ref={ref}\n onClick={handleClick}\n title={typeof children === \"string\" ? children : undefined}\n {...htmlAttributes}\n >\n {children}\n {showNotificationIcon && <Badge.Dot size={EComponentSize.MD} className={styles.notificationIcon} />}\n </Text>\n );\n },\n);\n\nDropdownMobileListItem.displayName = \"DropdownMobileListItem\";\n"],"names":["React"],"mappings":";;;;;;;;AAkBO,MAAM,yBAAyBA,eAAM;AAAA,EACxC,CAAC,EAAE,UAAU,WAAW,IAAI,SAAS,UAAU,UAAU,sBAAsB,GAAG,eAAA,GAAkB,QAAQ;AACxG,UAAM,cAAc,CAAC,UAA4C;AAC7D;AACA,yCAAU;AAAA,IACd;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAI;AAAA,QACJ,MAAM,UAAU;AAAA,QAChB,WAAW,KAAK,OAAO,wBAAwB,EAAE,CAAC,OAAO,QAAQ,GAAG,QAAQ,QAAQ,EAAA,GAAK,SAAS;AAAA,QAClG,iBAAe,QAAQ,QAAQ;AAAA,QAC/B,MAAK;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,OAAO,OAAO,aAAa,WAAW,WAAW;AAAA,QAChD,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA;AAAA,UACA,wBAAwB,oBAAC,MAAM,KAAN,EAAU,MAAM,eAAe,IAAI,WAAW,OAAO,iBAAA,CAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG7G;AACJ;AAEA,uBAAuB,cAAc;"}
1
+ {"version":3,"file":"DropdownMobileListItem.js","sources":["../../../../src/components/Dropdown/mobile/DropdownMobileListItem.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\nimport { Text } from \"@sberbusiness/triplex-next/components/Typography/Text\";\nimport { ETextSize } from \"@sberbusiness/triplex-next/components/Typography/enums\";\nimport { Badge } from \"../../Badge/Badge\";\nimport { EComponentSize } from \"@sberbusiness/triplex-next/enums\";\nimport styles from \"../styles/DropdownMobile.module.less\";\n\n/** Свойства компонента DropdownMobileListItem. */\nexport interface IDropdownMobileListItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Идентификатор элемента. */\n id: string;\n /** Обработчик выбора текущего элемента. Вызывается по клику, до onClick. */\n onSelect?: () => void;\n /** Флаг - текущий элемент выбран. */\n selected?: boolean;\n /** Флаг отображения значка новых уведомлений. */\n showNotificationIcon?: boolean;\n}\n\n/** Элемент списка мобильной версии Dropdown. */\nexport const DropdownMobileListItem = React.forwardRef<HTMLDivElement, IDropdownMobileListItemProps>(\n ({ children, className, id, onClick, onSelect, selected, showNotificationIcon, ...htmlAttributes }, ref) => {\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n onSelect?.();\n onClick?.(event);\n };\n\n return (\n <Text\n tag=\"div\"\n size={ETextSize.B3}\n className={clsx(styles.dropdownMobileListItem, { [styles.selected]: Boolean(selected) }, className)}\n aria-selected={Boolean(selected)}\n role=\"option\"\n ref={ref}\n onClick={handleClick}\n title={typeof children === \"string\" ? children : undefined}\n {...htmlAttributes}\n >\n {children}\n {showNotificationIcon && <Badge.Dot size={EComponentSize.MD} className={styles.notificationIcon} />}\n </Text>\n );\n },\n);\n\nDropdownMobileListItem.displayName = \"DropdownMobileListItem\";\n"],"names":["React"],"mappings":";;;;;;;;AAqBO,MAAM,yBAAyBA,eAAM;AAAA,EACxC,CAAC,EAAE,UAAU,WAAW,IAAI,SAAS,UAAU,UAAU,sBAAsB,GAAG,eAAA,GAAkB,QAAQ;AACxG,UAAM,cAAc,CAAC,UAA4C;AAC7D;AACA,yCAAU;AAAA,IACd;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAI;AAAA,QACJ,MAAM,UAAU;AAAA,QAChB,WAAW,KAAK,OAAO,wBAAwB,EAAE,CAAC,OAAO,QAAQ,GAAG,QAAQ,QAAQ,EAAA,GAAK,SAAS;AAAA,QAClG,iBAAe,QAAQ,QAAQ;AAAA,QAC/B,MAAK;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,OAAO,OAAO,aAAa,WAAW,WAAW;AAAA,QAChD,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA;AAAA,UACA,wBAAwB,oBAAC,MAAM,KAAN,EAAU,MAAM,eAAe,IAAI,WAAW,OAAO,iBAAA,CAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG7G;AACJ;AAEA,uBAAuB,cAAc;"}
@@ -1,10 +1,10 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
2
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
3
3
  import { LoaderSmall } from "../../Loader/LoaderSmall/LoaderSmall.js";
4
4
  import { ELoaderSmallTheme } from "../../Loader/LoaderSmall/enum.js";
5
5
  import "../../Loader/LoaderMiddle/LoaderMiddle.js";
6
6
  import { EComponentSize } from "../../../enums/EComponentSize.js";
7
- import { s as styles } from "../../../chunks/DropdownMobile.module-QbABKAsu.js";
7
+ import { s as styles } from "../../../chunks/DropdownMobile.module-xbkYiPM1.js";
8
8
  const DropdownMobileLoader = ({ className, ...restProps }) => /* @__PURE__ */ jsx(
9
9
  LoaderSmall,
10
10
  {
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import React__default from "react";
3
- import { c as clsx } from "../../../chunks/vendor-Bco_z_Yi.js";
3
+ import { c as clsx } from "../../../chunks/vendor-CtuAQuEN.js";
4
4
  import { FormFieldMaskedInput } from "../../FormField/components/FormFieldMaskedInput.js";
5
- const dropdownMobileMaskedInput = "dropdownMobileMaskedInput__02e994d7";
5
+ const dropdownMobileMaskedInput = "dropdownMobileMaskedInput__40e2f02b";
6
6
  const styles = {
7
7
  dropdownMobileMaskedInput
8
8
  };