@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3

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 (647) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +41 -13
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/Autocomplete.md +76 -3
  6. package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  7. package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
  8. package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  9. package/cjs/components/Button/Button.js +2 -2
  10. package/cjs/components/Button/Button.js.map +1 -1
  11. package/cjs/components/Button/Button.md +38 -11
  12. package/cjs/components/Calendar/Calendar.d.ts +28 -5
  13. package/cjs/components/Calendar/Calendar.js +80 -36
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Calendar/Calendar.md +82 -1
  16. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  17. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  18. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  19. package/cjs/components/Calendar/CalendarContext.js +16 -0
  20. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  21. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  22. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  23. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  24. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  25. package/cjs/components/Calendar/CalendarDay.js +79 -0
  26. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  27. package/cjs/components/Calendar/CalendarDay.md +70 -0
  28. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  29. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  30. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  31. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  32. package/cjs/components/Calendar/DayCellView.js +20 -42
  33. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  34. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  35. package/cjs/components/Calendar/DayCellView.styles.js +37 -43
  36. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  37. package/cjs/components/Calendar/Month.d.ts +0 -10
  38. package/cjs/components/Calendar/Month.js +36 -88
  39. package/cjs/components/Calendar/Month.js.map +1 -1
  40. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  41. package/cjs/components/Calendar/MonthView.js +47 -37
  42. package/cjs/components/Calendar/MonthView.js.map +1 -1
  43. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  44. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  45. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  46. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  47. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  48. package/cjs/components/Calendar/config.js +12 -6
  49. package/cjs/components/Calendar/config.js.map +1 -1
  50. package/cjs/components/Calendar/index.d.ts +1 -0
  51. package/cjs/components/Calendar/index.js +2 -1
  52. package/cjs/components/Calendar/index.js.map +1 -1
  53. package/cjs/components/Checkbox/Checkbox.js +1 -1
  54. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  55. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  56. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  57. package/cjs/components/DateInput/DateInput.js +1 -1
  58. package/cjs/components/DateInput/DateInput.js.map +1 -1
  59. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  60. package/cjs/components/DatePicker/DatePicker.js +72 -45
  61. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  62. package/cjs/components/DatePicker/DatePicker.md +29 -1
  63. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  64. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  65. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  66. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  67. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  68. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  69. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  70. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  71. package/cjs/components/DatePicker/Picker.js +1 -1
  72. package/cjs/components/DatePicker/Picker.js.map +1 -1
  73. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  74. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  75. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  76. package/cjs/components/Dropdown/Dropdown.js +1 -1
  77. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  78. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
  79. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  80. package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
  81. package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
  82. package/cjs/components/FileUploader/FileUploader.js +32 -9
  83. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  84. package/cjs/components/FileUploader/FileUploader.md +29 -0
  85. package/cjs/components/FxInput/FxInput.js +1 -1
  86. package/cjs/components/FxInput/FxInput.js.map +1 -1
  87. package/cjs/components/Group/Group.js +1 -1
  88. package/cjs/components/Group/Group.js.map +1 -1
  89. package/cjs/components/Hint/Hint.d.ts +4 -3
  90. package/cjs/components/Hint/Hint.js +9 -8
  91. package/cjs/components/Hint/Hint.js.map +1 -1
  92. package/cjs/components/Input/Input.js +1 -1
  93. package/cjs/components/Input/Input.js.map +1 -1
  94. package/cjs/components/Input/Input.styles.d.ts +1 -1
  95. package/cjs/components/Input/Input.styles.js +3 -2
  96. package/cjs/components/Input/Input.styles.js.map +1 -1
  97. package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  98. package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
  99. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  100. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
  101. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  102. package/cjs/components/Kebab/Kebab.js +6 -1
  103. package/cjs/components/Kebab/Kebab.js.map +1 -1
  104. package/cjs/components/Link/Link.js +3 -2
  105. package/cjs/components/Link/Link.js.map +1 -1
  106. package/cjs/components/Loader/Loader.js +1 -1
  107. package/cjs/components/Loader/Loader.js.map +1 -1
  108. package/cjs/components/MenuItem/MenuItem.js +2 -2
  109. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  110. package/cjs/components/MiniModal/MiniModal.js +1 -1
  111. package/cjs/components/MiniModal/MiniModal.js.map +1 -1
  112. package/cjs/components/Modal/Modal.js +1 -1
  113. package/cjs/components/Modal/Modal.js.map +1 -1
  114. package/cjs/components/Modal/ModalBody.js +1 -1
  115. package/cjs/components/Modal/ModalBody.js.map +1 -1
  116. package/cjs/components/Paging/Paging.js +8 -3
  117. package/cjs/components/Paging/Paging.js.map +1 -1
  118. package/cjs/components/PasswordInput/PasswordInput.js +1 -1
  119. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  120. package/cjs/components/Radio/Radio.js +1 -1
  121. package/cjs/components/Radio/Radio.js.map +1 -1
  122. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  123. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  124. package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
  125. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  126. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  127. package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
  128. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  129. package/cjs/components/Select/Select.js +6 -3
  130. package/cjs/components/Select/Select.js.map +1 -1
  131. package/cjs/components/SidePage/SidePage.js +1 -1
  132. package/cjs/components/SidePage/SidePage.js.map +1 -1
  133. package/cjs/components/SidePage/SidePageBody.js +1 -1
  134. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageContainer.js +1 -1
  136. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  138. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  139. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.js +1 -1
  142. package/cjs/components/Spinner/Spinner.js.map +1 -1
  143. package/cjs/components/Switcher/Switcher.js +1 -1
  144. package/cjs/components/Switcher/Switcher.js.map +1 -1
  145. package/cjs/components/Tabs/Indicator.js +1 -1
  146. package/cjs/components/Tabs/Indicator.js.map +1 -1
  147. package/cjs/components/Tabs/Tab.js +2 -2
  148. package/cjs/components/Tabs/Tab.js.map +1 -1
  149. package/cjs/components/Tabs/Tabs.js +1 -1
  150. package/cjs/components/Tabs/Tabs.js.map +1 -1
  151. package/cjs/components/Textarea/Textarea.js +1 -1
  152. package/cjs/components/Textarea/Textarea.js.map +1 -1
  153. package/cjs/components/Toast/Toast.js +1 -1
  154. package/cjs/components/Toast/Toast.js.map +1 -1
  155. package/cjs/components/Toast/ToastView.js +1 -1
  156. package/cjs/components/Toast/ToastView.js.map +1 -1
  157. package/cjs/components/Toggle/Toggle.js +1 -1
  158. package/cjs/components/Toggle/Toggle.js.map +1 -1
  159. package/cjs/components/Token/Token.js +2 -1
  160. package/cjs/components/Token/Token.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInput.js +1 -1
  162. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  163. package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
  164. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  165. package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
  166. package/cjs/components/Tooltip/Tooltip.js +59 -20
  167. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  168. package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
  169. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  170. package/cjs/hooks/useDrop.d.ts +1 -1
  171. package/cjs/hooks/useDrop.js.map +1 -1
  172. package/cjs/index.d.ts +2 -0
  173. package/cjs/index.js +2 -0
  174. package/cjs/index.js.map +1 -1
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  178. package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
  179. package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
  180. package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
  181. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  182. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
  183. package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
  184. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  185. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
  186. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
  187. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  188. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  189. package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
  190. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  191. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  192. package/cjs/internal/DateSelect/DateSelect.js +51 -4
  193. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  194. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  196. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  197. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  198. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  199. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  200. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  201. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
  204. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  205. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  206. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
  207. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  208. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  209. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
  210. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  211. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  212. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  213. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
  214. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  215. package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
  216. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  217. package/cjs/internal/Menu/Menu.js +2 -2
  218. package/cjs/internal/Menu/Menu.js.map +1 -1
  219. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
  221. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  222. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  223. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  224. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  225. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  226. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  227. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  228. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  229. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  230. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  231. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
  232. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  233. package/cjs/internal/NativeDateInput/utils.js +3 -2
  234. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  235. package/cjs/internal/Popup/Popup.d.ts +15 -4
  236. package/cjs/internal/Popup/Popup.js +67 -4
  237. package/cjs/internal/Popup/Popup.js.map +1 -1
  238. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  239. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  240. package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
  241. package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
  242. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  243. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
  244. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  245. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  246. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  247. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  248. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  249. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
  250. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  251. package/cjs/internal/ThemePlayground/constants.js +2 -1
  252. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  253. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
  254. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  255. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  256. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  257. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  258. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  259. package/cjs/internal/themes/DarkTheme.d.ts +2 -0
  260. package/cjs/internal/themes/DarkTheme.js +6 -1
  261. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  262. package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
  263. package/cjs/internal/themes/DefaultTheme.js +32 -4
  264. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  265. package/cjs/lib/date/InternalDate.d.ts +2 -0
  266. package/cjs/lib/date/InternalDate.js +8 -1
  267. package/cjs/lib/date/InternalDate.js.map +1 -1
  268. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  269. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  270. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  271. package/cjs/lib/date/InternalDateValidator.js +2 -1
  272. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  273. package/cjs/lib/date/comparison.d.ts +6 -0
  274. package/cjs/lib/date/comparison.js +44 -0
  275. package/cjs/lib/date/comparison.js.map +1 -0
  276. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  277. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  278. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  279. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  280. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  281. package/cjs/lib/listenFocusOutside.js +4 -2
  282. package/cjs/lib/listenFocusOutside.js.map +1 -1
  283. package/cjs/lib/locale/constants.d.ts +3 -0
  284. package/cjs/lib/locale/constants.js +6 -2
  285. package/cjs/lib/locale/constants.js.map +1 -1
  286. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  287. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  288. package/cjs/lib/theming/Emotion.d.ts +7 -1
  289. package/cjs/lib/theming/Emotion.js +6 -3
  290. package/cjs/lib/theming/Emotion.js.map +1 -1
  291. package/cjs/lib/theming/ThemeContext.d.ts +0 -2
  292. package/cjs/lib/theming/ThemeContext.js +1 -3
  293. package/cjs/lib/theming/ThemeContext.js.map +1 -1
  294. package/cjs/lib/theming/ThemeContext.md +3 -1
  295. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  296. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
  297. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
  298. package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  299. package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
  300. package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
  301. package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
  302. package/cjs/lib/widgets/StylesContainer.js +70 -0
  303. package/cjs/lib/widgets/StylesContainer.js.map +1 -0
  304. package/cjs/lib/widgets/index.d.ts +1 -0
  305. package/cjs/lib/widgets/index.js +1 -0
  306. package/cjs/lib/widgets/index.js.map +1 -0
  307. package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
  308. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  309. package/components/Autocomplete/Autocomplete.md +76 -3
  310. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
  311. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
  312. package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  313. package/components/Button/Button/Button.js +3 -3
  314. package/components/Button/Button/Button.js.map +1 -1
  315. package/components/Button/Button.md +38 -11
  316. package/components/Calendar/Calendar/Calendar.js +83 -66
  317. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  318. package/components/Calendar/Calendar.d.ts +28 -5
  319. package/components/Calendar/Calendar.md +82 -1
  320. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  321. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  322. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  323. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  324. package/components/Calendar/CalendarContext/package.json +6 -0
  325. package/components/Calendar/CalendarContext.d.ts +12 -0
  326. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  327. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  328. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  329. package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
  330. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  331. package/components/Calendar/CalendarDay/package.json +6 -0
  332. package/components/Calendar/CalendarDay.d.ts +12 -0
  333. package/components/Calendar/CalendarDay.md +70 -0
  334. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  335. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  336. package/components/Calendar/CalendarUtils.d.ts +2 -1
  337. package/components/Calendar/DayCellView/DayCellView.js +33 -46
  338. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  339. package/components/Calendar/DayCellView.d.ts +4 -12
  340. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
  341. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  342. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  343. package/components/Calendar/Month/Month.js +50 -84
  344. package/components/Calendar/Month/Month.js.map +1 -1
  345. package/components/Calendar/Month.d.ts +0 -10
  346. package/components/Calendar/MonthView/MonthView.js +50 -45
  347. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  348. package/components/Calendar/MonthView.d.ts +3 -2
  349. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  350. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  351. package/components/Calendar/MonthView.styles.d.ts +3 -0
  352. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  353. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  354. package/components/Calendar/config/config.js +6 -4
  355. package/components/Calendar/config/config.js.map +1 -1
  356. package/components/Calendar/index/index.js +2 -1
  357. package/components/Calendar/index/index.js.map +1 -1
  358. package/components/Calendar/index.d.ts +1 -0
  359. package/components/Checkbox/Checkbox/Checkbox.js +2 -2
  360. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  361. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
  362. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  363. package/components/DateInput/DateInput/DateInput.js +2 -2
  364. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  365. package/components/DatePicker/DatePicker/DatePicker.js +62 -41
  366. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  367. package/components/DatePicker/DatePicker.d.ts +4 -1
  368. package/components/DatePicker/DatePicker.md +29 -1
  369. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  370. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  371. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  372. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  373. package/components/DatePicker/MobilePicker/package.json +6 -0
  374. package/components/DatePicker/MobilePicker.d.ts +10 -0
  375. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  376. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  377. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  378. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  379. package/components/DatePicker/Picker/Picker.js +3 -3
  380. package/components/DatePicker/Picker/Picker.js.map +1 -1
  381. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  382. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  383. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  384. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  385. package/components/Dropdown/Dropdown/Dropdown.js +3 -3
  386. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  387. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
  388. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  389. package/components/DropdownMenu/DropdownMenu.md +39 -0
  390. package/components/FileUploader/FileUploader/FileUploader.js +30 -8
  391. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  392. package/components/FileUploader/FileUploader.d.ts +2 -0
  393. package/components/FileUploader/FileUploader.md +29 -0
  394. package/components/FxInput/FxInput/FxInput.js +2 -2
  395. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  396. package/components/Group/Group/Group.js +2 -2
  397. package/components/Group/Group/Group.js.map +1 -1
  398. package/components/Hint/Hint/Hint.js +53 -48
  399. package/components/Hint/Hint/Hint.js.map +1 -1
  400. package/components/Hint/Hint.d.ts +4 -3
  401. package/components/Input/Input/Input.js +3 -3
  402. package/components/Input/Input/Input.js.map +1 -1
  403. package/components/Input/Input.styles/Input.styles.js +2 -2
  404. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  405. package/components/Input/Input.styles.d.ts +1 -1
  406. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
  407. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  408. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  409. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
  410. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  411. package/components/Kebab/Kebab/Kebab.js +7 -4
  412. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  413. package/components/Link/Link/Link.js +6 -3
  414. package/components/Link/Link/Link.js.map +1 -1
  415. package/components/Loader/Loader/Loader.js +2 -2
  416. package/components/Loader/Loader/Loader.js.map +1 -1
  417. package/components/MenuItem/MenuItem/MenuItem.js +3 -3
  418. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  419. package/components/MiniModal/MiniModal/MiniModal.js +2 -2
  420. package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
  421. package/components/Modal/Modal/Modal.js +3 -3
  422. package/components/Modal/Modal/Modal.js.map +1 -1
  423. package/components/Modal/ModalBody/ModalBody.js +3 -3
  424. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  425. package/components/Paging/Paging/Paging.js +10 -6
  426. package/components/Paging/Paging/Paging.js.map +1 -1
  427. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
  428. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  429. package/components/Radio/Radio/Radio.js +2 -2
  430. package/components/Radio/Radio/Radio.js.map +1 -1
  431. package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
  432. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  433. package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
  434. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  435. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
  436. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  437. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  438. package/components/Select/Select/Select.js +6 -5
  439. package/components/Select/Select/Select.js.map +1 -1
  440. package/components/SidePage/SidePage/SidePage.js +2 -2
  441. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  442. package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
  443. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  444. package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
  445. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  446. package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
  447. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  448. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
  449. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  450. package/components/Spinner/Spinner/Spinner.js +2 -2
  451. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  452. package/components/Switcher/Switcher/Switcher.js +3 -3
  453. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  454. package/components/Tabs/Indicator/Indicator.js +2 -2
  455. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  456. package/components/Tabs/Tab/Tab.js +3 -3
  457. package/components/Tabs/Tab/Tab.js.map +1 -1
  458. package/components/Tabs/Tabs/Tabs.js +2 -2
  459. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  460. package/components/Textarea/Textarea/Textarea.js +2 -2
  461. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  462. package/components/Toast/Toast/Toast.js +3 -3
  463. package/components/Toast/Toast/Toast.js.map +1 -1
  464. package/components/Toast/ToastView/ToastView.js +2 -2
  465. package/components/Toast/ToastView/ToastView.js.map +1 -1
  466. package/components/Toggle/Toggle/Toggle.js +2 -2
  467. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  468. package/components/Token/Token/Token.js +6 -3
  469. package/components/Token/Token/Token.js.map +1 -1
  470. package/components/TokenInput/TokenInput/TokenInput.js +2 -2
  471. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  472. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
  473. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  474. package/components/Tooltip/Tooltip/Tooltip.js +67 -46
  475. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  476. package/components/Tooltip/Tooltip.d.ts +10 -5
  477. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
  478. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  479. package/hooks/useDrop/useDrop.js.map +1 -1
  480. package/hooks/useDrop.d.ts +1 -1
  481. package/index.d.ts +2 -0
  482. package/index.js +2 -0
  483. package/index.js.map +1 -1
  484. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
  485. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  486. package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
  487. package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
  488. package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  489. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
  490. package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
  491. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
  492. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
  493. package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
  494. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
  495. package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  496. package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
  497. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
  498. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
  499. package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  500. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
  501. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  502. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
  503. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  504. package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
  505. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  506. package/internal/DateSelect/DateSelect.d.ts +2 -0
  507. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  508. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  509. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  510. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  511. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  512. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  513. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  514. package/internal/DateSelect/locale/types.d.ts +1 -0
  515. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
  516. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  517. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  518. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
  519. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  520. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  521. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
  522. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  523. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  524. package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
  525. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  526. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
  527. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  528. package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
  529. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  530. package/internal/Menu/Menu/Menu.js +3 -3
  531. package/internal/Menu/Menu/Menu.js.map +1 -1
  532. package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
  533. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  534. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  535. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  536. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  537. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  538. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  539. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  540. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  541. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  542. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  543. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  544. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  545. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  546. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  547. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  548. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
  549. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  550. package/internal/NativeDateInput/utils/utils.js +2 -1
  551. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  552. package/internal/Popup/Popup/Popup.js +53 -10
  553. package/internal/Popup/Popup/Popup.js.map +1 -1
  554. package/internal/Popup/Popup.d.ts +15 -4
  555. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  556. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  557. package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
  558. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  559. package/internal/RenderContainer/RenderContainer.d.ts +3 -0
  560. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
  561. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  562. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  563. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  564. package/internal/ThemePlayground/Playground/Playground.js +2 -2
  565. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  566. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
  567. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  568. package/internal/ThemePlayground/constants/constants.js +3 -0
  569. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  570. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  571. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  572. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  573. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  574. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  575. package/internal/ZIndex/ZIndex.d.ts +7 -3
  576. package/internal/themes/DarkTheme/DarkTheme.js +2 -0
  577. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  578. package/internal/themes/DarkTheme.d.ts +2 -0
  579. package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
  580. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  581. package/internal/themes/DefaultTheme.d.ts +18 -0
  582. package/lib/date/InternalDate/InternalDate.js +7 -1
  583. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  584. package/lib/date/InternalDate.d.ts +2 -0
  585. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  586. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  587. package/lib/date/InternalDateTransformer.d.ts +3 -0
  588. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  589. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  590. package/lib/date/comparison/comparison.js +45 -0
  591. package/lib/date/comparison/comparison.js.map +1 -0
  592. package/lib/date/comparison/package.json +6 -0
  593. package/lib/date/comparison.d.ts +6 -0
  594. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  595. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  596. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  597. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  598. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  599. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  600. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  601. package/lib/locale/constants/constants.js +4 -1
  602. package/lib/locale/constants/constants.js.map +1 -1
  603. package/lib/locale/constants.d.ts +3 -0
  604. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  605. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  606. package/lib/theming/Emotion/Emotion.js +12 -3
  607. package/lib/theming/Emotion/Emotion.js.map +1 -1
  608. package/lib/theming/Emotion.d.ts +7 -1
  609. package/lib/theming/ThemeContext/ThemeContext.js +0 -2
  610. package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
  611. package/lib/theming/ThemeContext.d.ts +0 -2
  612. package/lib/theming/ThemeContext.md +3 -1
  613. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
  614. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
  615. package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
  616. package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  617. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
  618. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
  619. package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
  620. package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  621. package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
  622. package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
  623. package/lib/widgets/StylesContainer/package.json +6 -0
  624. package/lib/widgets/StylesContainer.d.ts +13 -0
  625. package/lib/widgets/index/index.js +1 -0
  626. package/lib/widgets/index/index.js.map +1 -0
  627. package/lib/widgets/index/package.json +6 -0
  628. package/lib/widgets/index.d.ts +1 -0
  629. package/lib/widgets/package.json +6 -0
  630. package/package.json +3 -2
  631. package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
  632. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
  633. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
  634. package/cjs/lib/theming/StyleContainer.d.ts +0 -4
  635. package/cjs/lib/theming/StyleContainer.js +0 -21
  636. package/cjs/lib/theming/StyleContainer.js.map +0 -1
  637. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
  638. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
  639. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
  640. package/lib/theming/StyleContainer/StyleContainer.js +0 -21
  641. package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
  642. package/lib/theming/StyleContainer/package.json +0 -6
  643. package/lib/theming/StyleContainer.d.ts +0 -4
  644. /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
  645. /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
  646. /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
  647. /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","globalObject","isBrowser","getRandomID","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ArrowChevronDownIcon","ArrowChevronUpIcon","ArrowTriangleUpDownIcon","isMobile","EmotionConsumer","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","isInstanceOf","ThemeConsumer","getStyles","globalClasses","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","menu","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","menuId","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","longClickTimer","setPositionRepeatTimer","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","emotion","theme","renderMain","renderMain2022","width","isInteractiveElement","Tag","styles","rootProps","className","cx","Boolean","style","ref","onClick","undefined","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","arrow","arrowDisabled","renderMenu","root2022","disableItems","index","maxValue","minValue","id","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menuUp","itemsHolder","menuDown","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser, SafeTimer } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ArrowChevronDownIcon, ArrowChevronUpIcon, ArrowTriangleUpDownIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { getStyles, globalClasses } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: SafeTimer;\n private longClickTimer: SafeTimer;\n private setPositionRepeatTimer: SafeTimer;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n globalObject.addEventListener?.('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n globalObject.clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n }\n globalObject.removeEventListener?.('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const styles = getStyles(this.emotion);\n const rootProps = {\n className: this.emotion.cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n <div\n className={this.emotion.cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const styles = getStyles(this.emotion);\n const rootProps = {\n className: this.emotion.cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={this.emotion.cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n this.timeout = globalObject.setTimeout(\n () =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n 0,\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(id?: string): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n const styles = getStyles(this.emotion);\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = this.emotion.cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <button\n aria-label={`Выбрать ${this.getProps().type === 'year' ? 'год' : 'месяц'} ${this.getItem(i)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </button>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = this.emotion.cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <DropdownContainer\n data-tid={DateSelectDataTids.menu}\n id={id}\n getParent={this.getAnchor}\n offsetY={dropdownOffset}\n offsetX={-10}\n >\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={this.emotion.cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={this.emotion.cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n globalObject.clearTimeout(this.longClickTimer);\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent) || !isBrowser(globalObject)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = globalObject.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
1
+ {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","globalObject","isBrowser","responsiveLayout","CalendarDataTids","getRandomID","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ArrowChevronDownIcon","ArrowChevronUpIcon","ArrowTriangleUpDownIcon","isMobile","EmotionConsumer","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","isInstanceOf","ThemeContext","getStyles","globalClasses","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinMonth","defaultMaxMonth","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","menu","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","menuId","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","longClickTimer","setPositionRepeatTimer","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","emotion","theme","renderMain","renderMain2022","isMobileLayout","width","isInteractiveElement","Tag","styles","rootProps","className","cx","Boolean","style","ref","onClick","undefined","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","arrow","arrowDisabled","renderMobileMenu","renderMenu","root2022","disableItems","index","maxValue","minValue","id","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menuUp","itemsHolder","menuDown","min","max","item","monthSelectMobile","yearSelectMobile","nativeSelect","parseInt","target","map","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser, SafeTimer } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { CalendarDataTids } from '../../components/Calendar/Calendar';\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ArrowChevronDownIcon, ArrowChevronUpIcon, ArrowTriangleUpDownIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles, globalClasses } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinMonth = 0;\nconst defaultMaxMonth = 11;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@responsiveLayout\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: SafeTimer;\n private longClickTimer: SafeTimer;\n private setPositionRepeatTimer: SafeTimer;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n private isMobileLayout!: boolean;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n globalObject.addEventListener?.('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n globalObject.clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n }\n globalObject.removeEventListener?.('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n const isMobile = this.isMobileLayout;\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const styles = getStyles(this.emotion);\n const rootProps = {\n className: this.emotion.cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n <div\n className={this.emotion.cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {isMobile\n ? !disabled && this.renderMobileMenu(this.props, this.menuId)\n : this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private renderMain2022() {\n const isMobile = this.isMobileLayout;\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const styles = getStyles(this.emotion);\n const rootProps = {\n className: this.emotion.cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={this.emotion.cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n {isMobile\n ? !disabled && this.renderMobileMenu(this.props, this.menuId)\n : this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n this.timeout = globalObject.setTimeout(\n () =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n 0,\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(id?: string): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n const styles = getStyles(this.emotion);\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = this.emotion.cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <button\n aria-label={`Выбрать ${this.getProps().type === 'year' ? 'год' : 'месяц'} ${this.getItem(i)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </button>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = this.emotion.cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <DropdownContainer\n data-tid={DateSelectDataTids.menu}\n id={id}\n getParent={this.getAnchor}\n offsetY={dropdownOffset}\n offsetX={-10}\n >\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={this.emotion.cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={this.emotion.cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </RenderLayer>\n );\n }\n\n private renderMobileMenu(\n { value, minValue, maxValue, onValueChange, type }: DateSelectProps,\n id?: string,\n ): JSX.Element {\n const from = type === 'month' ? defaultMinMonth : minValue ?? defaultMinYear;\n const to = type === 'month' ? defaultMaxMonth : maxValue ?? defaultMaxYear;\n\n const min = type === 'month' ? minValue ?? defaultMinMonth : minValue ?? defaultMinYear;\n const max = type === 'month' ? maxValue ?? defaultMaxMonth : maxValue ?? defaultMaxYear;\n\n const items: Array<{ item: number; disabled: boolean }> = [];\n for (let item = from; item <= to; ++item) {\n items.push({ item, disabled: item < min || item > max });\n }\n const styles = getStyles(this.emotion);\n\n return (\n // eslint-disable-next-line jsx-a11y/no-onchange\n <select\n id={id}\n data-tid={type === 'month' ? CalendarDataTids.monthSelectMobile : CalendarDataTids.yearSelectMobile}\n className={styles.nativeSelect()}\n value={value}\n onChange={(e) => {\n onValueChange(parseInt(e.target.value));\n }}\n >\n {items.map(({ item, disabled }) => (\n <option key={item} value={item} disabled={disabled}>\n {type === 'month' ? this.locale.months?.[item] : item}\n </option>\n ))}\n </select>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n globalObject.clearTimeout(this.longClickTimer);\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent) || !isBrowser(globalObject)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = globalObject.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
@@ -61,6 +61,7 @@ export declare class DateSelect extends React.PureComponent<DateSelectProps, Dat
61
61
  private setPositionRepeatTimer;
62
62
  private yearStep;
63
63
  private touchStartY;
64
+ private isMobileLayout;
64
65
  componentDidUpdate(): void;
65
66
  componentDidMount(): void;
66
67
  componentWillUnmount(): void;
@@ -80,6 +81,7 @@ export declare class DateSelect extends React.PureComponent<DateSelectProps, Dat
80
81
  private setNodeTop;
81
82
  private disableItems;
82
83
  private renderMenu;
84
+ private renderMobileMenu;
83
85
  private refItemsContainer;
84
86
  private handleLongClickUp;
85
87
  private handleLongClickDown;
@@ -1,6 +1,6 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;
4
4
 
5
5
  import { memoizeStyle, prefix } from "../../../lib/theming/Emotion";
6
6
  export var globalClasses = prefix('select')({
@@ -58,6 +58,9 @@ export var getStyles = function getStyles(emotion) {
58
58
  },
59
59
  menuDown: function menuDown() {
60
60
  return emotion.css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteralLoose(["\n span {\n position: relative;\n top: -1px;\n }\n "])));
61
+ },
62
+ nativeSelect: function nativeSelect() {
63
+ return emotion.css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: -12px;\n right: 0;\n bottom: -8px;\n left: 0;\n cursor: pointer;\n appearance: none;\n opacity: 0;\n border: none;\n "])));
61
64
  }
62
65
  });
63
66
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["DateSelect.styles.ts"],"names":["memoizeStyle","prefix","globalClasses","arrow","getStyles","emotion","root","t","css","dateSelectTextColorDefault","dateSelectFontSize","dateSelectLineHeight","dateSelectLinkColor","transitionDuration","transitionTimingFunction","root2022","disabled","caption","dateSelectTextColorDisabled","arrowDisabled","menuHolder","dateSelectMenuBg","dateSelectPopupBoxShadow","isTopCapped","isBotCapped","itemsHolder","menuItem","menuItemSelected","dateSelectMenuItemBgSelected","dateSelectMenuItemFontSelected","menuItemActive","dateSelectMenuItemBgActive","dateSelectMenuItemFontActive","menuItemDisabled","dateSelectMenuItemBgDisabled","menu","dateSelectTextColorInvert","menuUp","menuDown"],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('select')({\n arrow: 'arrow',\n});\n\nexport const getStyles = (emotion: Emotion) =>\n memoizeStyle({\n root(t: Theme) {\n return emotion.css`\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n display: inline-block;\n font: inherit;\n font-size: ${t.dateSelectFontSize};\n padding: 0px;\n padding-right: 2px;\n position: relative;\n text-align: left;\n touch-action: none;\n border: none;\n line-height: ${t.dateSelectLineHeight};\n background-color: transparent;\n box-sizing: content-box;\n\n &:hover {\n color: ${t.dateSelectLinkColor};\n }\n\n & .${globalClasses.arrow} {\n transition: fill ${t.transitionDuration} ${t.transitionTimingFunction};\n }\n\n &:hover .${globalClasses.arrow} {\n fill: ${t.dateSelectTextColorDefault} !important;\n }\n `;\n },\n\n root2022() {\n return emotion.css`\n display: inline-flex;\n justify-content: space-between;\n `;\n },\n\n disabled() {\n return emotion.css`\n color: inherit !important; // override root:hover style\n cursor: default;\n `;\n },\n\n caption() {\n return emotion.css`\n position: relative;\n `;\n },\n\n arrow(t: Theme) {\n return emotion.css`\n color: ${t.dateSelectTextColorDisabled};\n float: right;\n line-height: ${t.dateSelectLineHeight};\n opacity: 1;\n position: absolute;\n right: 4px;\n top: 0;\n transform: scaleX(0.7);\n transition: opacity 0.2s ease-out;\n `;\n },\n arrowDisabled() {\n return emotion.css`\n opacity: 0;\n `;\n },\n\n menuHolder(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuBg};\n box-shadow: ${t.dateSelectPopupBoxShadow};\n box-sizing: content-box;\n color: ${t.dateSelectTextColorDefault};\n font-size: ${t.dateSelectFontSize};\n margin-top: -11px;\n overflow: hidden;\n position: absolute;\n z-index: 1000;\n `;\n },\n\n isTopCapped() {\n return emotion.css`\n margin-top: 0;\n padding-top: 5px;\n `;\n },\n\n isBotCapped() {\n return emotion.css`\n padding-bottom: 5px;\n `;\n },\n\n itemsHolder() {\n return emotion.css`\n overflow: hidden;\n position: relative;\n `;\n },\n\n menuItem(t: Theme) {\n return emotion.css`\n display: flex;\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n height: 24px;\n padding: 0;\n padding-left: 10px;\n width: 100%;\n user-select: none;\n white-space: nowrap;\n touch-action: none;\n border: none;\n font: inherit;\n line-height: 24px;\n background-color: transparent;\n `;\n },\n\n menuItemSelected(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgSelected};\n color: ${t.dateSelectMenuItemFontSelected};\n `;\n },\n\n menuItemActive(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectMenuItemFontActive};\n `;\n },\n\n menuItemDisabled(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgDisabled};\n color: ${t.dateSelectTextColorDisabled};\n pointer-events: none;\n `;\n },\n\n menu(t: Theme) {\n return emotion.css`\n box-sizing: border-box;\n cursor: pointer;\n height: 16px;\n line-height: 0;\n padding-left: 18px;\n text-align: left;\n user-select: none;\n\n background: ${t.dateSelectMenuBg};\n color: ${t.dateSelectTextColorDefault};\n\n &:hover {\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectTextColorInvert};\n }\n `;\n },\n\n menuUp() {\n return emotion.css`\n span {\n position: relative;\n top: -0.5px;\n }\n `;\n },\n\n menuDown() {\n return emotion.css`\n span {\n position: relative;\n top: -1px;\n }\n `;\n },\n });\n"]}
1
+ {"version":3,"sources":["DateSelect.styles.ts"],"names":["memoizeStyle","prefix","globalClasses","arrow","getStyles","emotion","root","t","css","dateSelectTextColorDefault","dateSelectFontSize","dateSelectLineHeight","dateSelectLinkColor","transitionDuration","transitionTimingFunction","root2022","disabled","caption","dateSelectTextColorDisabled","arrowDisabled","menuHolder","dateSelectMenuBg","dateSelectPopupBoxShadow","isTopCapped","isBotCapped","itemsHolder","menuItem","menuItemSelected","dateSelectMenuItemBgSelected","dateSelectMenuItemFontSelected","menuItemActive","dateSelectMenuItemBgActive","dateSelectMenuItemFontActive","menuItemDisabled","dateSelectMenuItemBgDisabled","menu","dateSelectTextColorInvert","menuUp","menuDown","nativeSelect"],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('select')({\n arrow: 'arrow',\n});\n\nexport const getStyles = (emotion: Emotion) =>\n memoizeStyle({\n root(t: Theme) {\n return emotion.css`\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n display: inline-block;\n font: inherit;\n font-size: ${t.dateSelectFontSize};\n padding: 0px;\n padding-right: 2px;\n position: relative;\n text-align: left;\n touch-action: none;\n border: none;\n line-height: ${t.dateSelectLineHeight};\n background-color: transparent;\n box-sizing: content-box;\n\n &:hover {\n color: ${t.dateSelectLinkColor};\n }\n\n & .${globalClasses.arrow} {\n transition: fill ${t.transitionDuration} ${t.transitionTimingFunction};\n }\n\n &:hover .${globalClasses.arrow} {\n fill: ${t.dateSelectTextColorDefault} !important;\n }\n `;\n },\n\n root2022() {\n return emotion.css`\n display: inline-flex;\n justify-content: space-between;\n `;\n },\n\n disabled() {\n return emotion.css`\n color: inherit !important; // override root:hover style\n cursor: default;\n `;\n },\n\n caption() {\n return emotion.css`\n position: relative;\n `;\n },\n\n arrow(t: Theme) {\n return emotion.css`\n color: ${t.dateSelectTextColorDisabled};\n float: right;\n line-height: ${t.dateSelectLineHeight};\n opacity: 1;\n position: absolute;\n right: 4px;\n top: 0;\n transform: scaleX(0.7);\n transition: opacity 0.2s ease-out;\n `;\n },\n arrowDisabled() {\n return emotion.css`\n opacity: 0;\n `;\n },\n\n menuHolder(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuBg};\n box-shadow: ${t.dateSelectPopupBoxShadow};\n box-sizing: content-box;\n color: ${t.dateSelectTextColorDefault};\n font-size: ${t.dateSelectFontSize};\n margin-top: -11px;\n overflow: hidden;\n position: absolute;\n z-index: 1000;\n `;\n },\n\n isTopCapped() {\n return emotion.css`\n margin-top: 0;\n padding-top: 5px;\n `;\n },\n\n isBotCapped() {\n return emotion.css`\n padding-bottom: 5px;\n `;\n },\n\n itemsHolder() {\n return emotion.css`\n overflow: hidden;\n position: relative;\n `;\n },\n\n menuItem(t: Theme) {\n return emotion.css`\n display: flex;\n color: ${t.dateSelectTextColorDefault};\n cursor: pointer;\n height: 24px;\n padding: 0;\n padding-left: 10px;\n width: 100%;\n user-select: none;\n white-space: nowrap;\n touch-action: none;\n border: none;\n font: inherit;\n line-height: 24px;\n background-color: transparent;\n `;\n },\n\n menuItemSelected(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgSelected};\n color: ${t.dateSelectMenuItemFontSelected};\n `;\n },\n\n menuItemActive(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectMenuItemFontActive};\n `;\n },\n\n menuItemDisabled(t: Theme) {\n return emotion.css`\n background: ${t.dateSelectMenuItemBgDisabled};\n color: ${t.dateSelectTextColorDisabled};\n pointer-events: none;\n `;\n },\n\n menu(t: Theme) {\n return emotion.css`\n box-sizing: border-box;\n cursor: pointer;\n height: 16px;\n line-height: 0;\n padding-left: 18px;\n text-align: left;\n user-select: none;\n\n background: ${t.dateSelectMenuBg};\n color: ${t.dateSelectTextColorDefault};\n\n &:hover {\n background: ${t.dateSelectMenuItemBgActive};\n color: ${t.dateSelectTextColorInvert};\n }\n `;\n },\n\n menuUp() {\n return emotion.css`\n span {\n position: relative;\n top: -0.5px;\n }\n `;\n },\n\n menuDown() {\n return emotion.css`\n span {\n position: relative;\n top: -1px;\n }\n `;\n },\n\n nativeSelect() {\n return emotion.css`\n position: absolute;\n top: -12px;\n right: 0;\n bottom: -8px;\n left: 0;\n cursor: pointer;\n appearance: none;\n opacity: 0;\n border: none;\n `;\n },\n });\n"]}
@@ -21,4 +21,5 @@ export declare const getStyles: (emotion: Emotion) => {
21
21
  menu(t: Theme): string;
22
22
  menuUp(): string;
23
23
  menuDown(): string;
24
+ nativeSelect(): string;
24
25
  };
@@ -1,5 +1,6 @@
1
1
  export var componentsLocales = {
2
2
  selectMonthAriaLabel: 'month',
3
3
  selectYearAriaLabel: 'year',
4
- selectChosenAriaLabel: 'Chosen'
4
+ selectChosenAriaLabel: 'Chosen',
5
+ selectChooseAriaLabel: 'Choose'
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["en.ts"],"names":["componentsLocales","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel"],"mappings":";;AAEA,OAAO,IAAMA,iBAAmC,GAAG;AACjDC,EAAAA,oBAAoB,EAAE,OAD2B;AAEjDC,EAAAA,mBAAmB,EAAE,MAF4B;AAGjDC,EAAAA,qBAAqB,EAAE,QAH0B,EAA5C","sourcesContent":["import { DateSelectLocale } from '../types';\n\nexport const componentsLocales: DateSelectLocale = {\n selectMonthAriaLabel: 'month',\n selectYearAriaLabel: 'year',\n selectChosenAriaLabel: 'Chosen',\n};\n"]}
1
+ {"version":3,"sources":["en.ts"],"names":["componentsLocales","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","selectChooseAriaLabel"],"mappings":";;AAEA,OAAO,IAAMA,iBAAmC,GAAG;AACjDC,EAAAA,oBAAoB,EAAE,OAD2B;AAEjDC,EAAAA,mBAAmB,EAAE,MAF4B;AAGjDC,EAAAA,qBAAqB,EAAE,QAH0B;AAIjDC,EAAAA,qBAAqB,EAAE,QAJ0B,EAA5C","sourcesContent":["import { DateSelectLocale } from '../types';\n\nexport const componentsLocales: DateSelectLocale = {\n selectMonthAriaLabel: 'month',\n selectYearAriaLabel: 'year',\n selectChosenAriaLabel: 'Chosen',\n selectChooseAriaLabel: 'Choose',\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  export var componentsLocales = {
2
2
  selectMonthAriaLabel: 'месяц',
3
3
  selectYearAriaLabel: 'год',
4
- selectChosenAriaLabel: 'Выбранный'
4
+ selectChosenAriaLabel: 'Выбранный',
5
+ selectChooseAriaLabel: 'Выбрать'
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["ru.ts"],"names":["componentsLocales","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel"],"mappings":";;AAEA,OAAO,IAAMA,iBAAmC,GAAG;AACjDC,EAAAA,oBAAoB,EAAE,OAD2B;AAEjDC,EAAAA,mBAAmB,EAAE,KAF4B;AAGjDC,EAAAA,qBAAqB,EAAE,WAH0B,EAA5C","sourcesContent":["import { DateSelectLocale } from '../types';\n\nexport const componentsLocales: DateSelectLocale = {\n selectMonthAriaLabel: 'месяц',\n selectYearAriaLabel: 'год',\n selectChosenAriaLabel: 'Выбранный',\n};\n"]}
1
+ {"version":3,"sources":["ru.ts"],"names":["componentsLocales","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","selectChooseAriaLabel"],"mappings":";;AAEA,OAAO,IAAMA,iBAAmC,GAAG;AACjDC,EAAAA,oBAAoB,EAAE,OAD2B;AAEjDC,EAAAA,mBAAmB,EAAE,KAF4B;AAGjDC,EAAAA,qBAAqB,EAAE,WAH0B;AAIjDC,EAAAA,qBAAqB,EAAE,SAJ0B,EAA5C","sourcesContent":["import { DateSelectLocale } from '../types';\n\nexport const componentsLocales: DateSelectLocale = {\n selectMonthAriaLabel: 'месяц',\n selectYearAriaLabel: 'год',\n selectChosenAriaLabel: 'Выбранный',\n selectChooseAriaLabel: 'Выбрать',\n};\n"]}
@@ -2,4 +2,5 @@ export interface DateSelectLocale {
2
2
  selectMonthAriaLabel?: string;
3
3
  selectYearAriaLabel?: string;
4
4
  selectChosenAriaLabel?: string;
5
+ selectChooseAriaLabel?: string;
5
6
  }
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import React, { useCallback, useState } from 'react';
3
3
  import { useMemoObject } from "../../../hooks/useMemoObject";
4
4
  import { useEffectWithoutInitCall } from "../../../hooks/useEffectWithoutInitCall";
5
- import { FileUploaderFileStatus } from "../fileUtils";
5
+ import { FileUploaderFileStatus, getAttachedFile } from "../fileUtils";
6
6
  import { FileUploaderControlContext } from "../FileUploaderControlContext";
7
7
  import { useControlLocale } from "../hooks/useControlLocale";
8
8
  import { FileUploaderFileValidationResult } from "../FileUploaderFileValidationResult";
@@ -24,12 +24,21 @@ var updateFile = function updateFile(files, fileId, getFileUpdatedProps) {
24
24
  };
25
25
 
26
26
  export var FileUploaderControlProvider = function FileUploaderControlProvider(props) {
27
- var children = props.children,
27
+ var initialFiles = props.initialFiles,
28
+ multiple = props.multiple,
29
+ children = props.children,
28
30
  onValueChange = props.onValueChange,
29
31
  onRemove = props.onRemove,
30
32
  onAttach = props.onAttach;
31
33
 
32
- var _useState = useState([]),
34
+ var _useState = useState(function () {
35
+ if (initialFiles && initialFiles.length > 0) {
36
+ var attachedFiles = initialFiles.map(getAttachedFile);
37
+ return multiple ? attachedFiles : [attachedFiles[0]];
38
+ }
39
+
40
+ return [];
41
+ }),
33
42
  files = _useState[0],
34
43
  setFiles = _useState[1];
35
44
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploaderControlProvider.tsx"],"names":["React","useCallback","useState","useMemoObject","useEffectWithoutInitCall","FileUploaderFileStatus","FileUploaderControlContext","useControlLocale","FileUploaderFileValidationResult","updateFile","files","fileId","getFileUpdatedProps","fileIndex","findIndex","file","id","newFiles","updatedProps","FileUploaderControlProvider","props","children","onValueChange","onRemove","onAttach","setFiles","isMinLengthReached","setIsMinLengthReached","locale","setFileStatus","status","validationResult","Error","error","requestErrorText","handleExternalSetFiles","state","removeFile","filter","setFileValidationResult","reset","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useState } from 'react';\n\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from './fileUtils';\nimport { FileUploaderControlContext } from './FileUploaderControlContext';\nimport { useControlLocale } from './hooks/useControlLocale';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\n\nexport interface FileUploaderControlProviderProps {\n /** Срабатывает при выборе файлов */\n onAttach?: (files: FileUploaderAttachedFile[]) => void;\n /** Срабатывает при удалении файла из контрола */\n onRemove?: (fileId: string) => void;\n /** Срабатывает при onAttach, onRemove и других изменениях файлов. В files передает текущее состояние всего списка файлов */\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) {\n return files;\n }\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = (props: PropsWithChildren<FileUploaderControlProviderProps>) => {\n const { children, onValueChange, onRemove, onAttach } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>([]);\n const [isMinLengthReached, setIsMinLengthReached] = useState<boolean>(false);\n const locale = useControlLocale();\n\n useEffectWithoutInitCall(() => {\n onValueChange?.(files);\n }, [files]);\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) =>\n updateFile(files, fileId, (file) => ({\n status,\n validationResult:\n status === FileUploaderFileStatus.Error\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n })),\n );\n },\n [locale],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onAttach?.(files);\n setFiles((state) => [...state, ...files]);\n },\n [onAttach],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => state.filter((file) => file.id !== fileId));\n },\n [onRemove],\n );\n\n const setFileValidationResult = useCallback((fileId: string, validationResult: FileUploaderFileValidationResult) => {\n setFiles((files) => updateFile(files, fileId, () => ({ validationResult })));\n }, []);\n\n const reset = React.useCallback(() => {\n setFiles(() => [] as FileUploaderAttachedFile[]);\n }, []);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n isMinLengthReached,\n setIsMinLengthReached,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n};\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
1
+ {"version":3,"sources":["FileUploaderControlProvider.tsx"],"names":["React","useCallback","useState","useMemoObject","useEffectWithoutInitCall","FileUploaderFileStatus","getAttachedFile","FileUploaderControlContext","useControlLocale","FileUploaderFileValidationResult","updateFile","files","fileId","getFileUpdatedProps","fileIndex","findIndex","file","id","newFiles","updatedProps","FileUploaderControlProvider","props","initialFiles","multiple","children","onValueChange","onRemove","onAttach","length","attachedFiles","map","setFiles","isMinLengthReached","setIsMinLengthReached","locale","setFileStatus","status","validationResult","Error","error","requestErrorText","handleExternalSetFiles","state","removeFile","filter","setFileValidationResult","reset","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useState } from 'react';\n\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus, getAttachedFile } from './fileUtils';\nimport { FileUploaderControlContext } from './FileUploaderControlContext';\nimport { useControlLocale } from './hooks/useControlLocale';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\n\nexport interface FileUploaderControlProviderProps {\n /** Срабатывает при выборе файлов */\n onAttach?: (files: FileUploaderAttachedFile[]) => void;\n /** Срабатывает при удалении файла из контрола */\n onRemove?: (fileId: string) => void;\n /** Срабатывает при onAttach, onRemove и других изменениях файлов. В files передает текущее состояние всего списка файлов */\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) {\n return files;\n }\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = (\n props: PropsWithChildren<\n FileUploaderControlProviderProps & {\n initialFiles?: File[];\n multiple?: boolean;\n }\n >,\n) => {\n const { initialFiles, multiple, children, onValueChange, onRemove, onAttach } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>(() => {\n if (initialFiles && initialFiles.length > 0) {\n const attachedFiles = initialFiles.map(getAttachedFile);\n return multiple ? attachedFiles : [attachedFiles[0]];\n }\n return [];\n });\n const [isMinLengthReached, setIsMinLengthReached] = useState<boolean>(false);\n const locale = useControlLocale();\n\n useEffectWithoutInitCall(() => {\n onValueChange?.(files);\n }, [files]);\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) =>\n updateFile(files, fileId, (file) => ({\n status,\n validationResult:\n status === FileUploaderFileStatus.Error\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n })),\n );\n },\n [locale],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onAttach?.(files);\n setFiles((state) => [...state, ...files]);\n },\n [onAttach],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => state.filter((file) => file.id !== fileId));\n },\n [onRemove],\n );\n\n const setFileValidationResult = useCallback((fileId: string, validationResult: FileUploaderFileValidationResult) => {\n setFiles((files) => updateFile(files, fileId, () => ({ validationResult })));\n }, []);\n\n const reset = React.useCallback(() => {\n setFiles(() => [] as FileUploaderAttachedFile[]);\n }, []);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n isMinLengthReached,\n setIsMinLengthReached,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n};\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
@@ -1,4 +1,4 @@
1
- import { PropsWithChildren } from 'react';
1
+ import React, { PropsWithChildren } from 'react';
2
2
  import { FileUploaderAttachedFile } from './fileUtils';
3
3
  export interface FileUploaderControlProviderProps {
4
4
  /** Срабатывает при выборе файлов */
@@ -9,6 +9,9 @@ export interface FileUploaderControlProviderProps {
9
9
  onValueChange?: (files: FileUploaderAttachedFile[]) => void;
10
10
  }
11
11
  export declare const FileUploaderControlProvider: {
12
- (props: PropsWithChildren<FileUploaderControlProviderProps>): JSX.Element;
12
+ (props: React.PropsWithChildren<FileUploaderControlProviderProps & {
13
+ initialFiles?: File[] | undefined;
14
+ multiple?: boolean | undefined;
15
+ }>): JSX.Element;
13
16
  displayName: string;
14
17
  };
@@ -53,7 +53,8 @@ export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (pr
53
53
  showSize = props.showSize,
54
54
  error = props.error,
55
55
  multiple = props.multiple,
56
- size = props.size;
56
+ size = props.size,
57
+ onRemove = props.onRemove;
57
58
  var id = file.id,
58
59
  originalFile = file.originalFile,
59
60
  status = file.status,
@@ -101,7 +102,8 @@ export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (pr
101
102
  });
102
103
  var removeUploadFile = useCallback(function () {
103
104
  removeFile(id);
104
- }, [removeFile, id]);
105
+ onRemove(id);
106
+ }, [removeFile, id, onRemove]);
105
107
  var handleRemove = useCallback(function (event) {
106
108
  event.preventDefault();
107
109
  event.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","globalObject","forwardRefAndName","formatBytes","TextWidthHelper","truncate","FileUploaderControlContext","useEmotion","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","useFileUploaderSize","useTheme","getStyles","FileUploaderFileStatusIcon","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","calcTruncatedName","textHelperRef","fileNameElementRef","current","getTextWidth","width","MIN_CHARS_LENGTH","FileUploaderFileDataTids","file","fileTooltip","fileName","fileSize","fileIcon","FileUploaderFile","props","ref","showSize","error","multiple","size","id","originalFile","status","validationResult","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","removeFile","setIsMinLengthReached","isMinLengthReached","theme","emotion","styles","formattedSize","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","sizeIconClass","small","iconSmall","medium","iconMedium","large","iconLarge","renderTooltipContent","sizeContentClass","contentSmall","contentMedium","contentLarge","contentClassNames","cx","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","icon","focusedIcon","iconMultiple","isTruncated","root"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { useEmotion } from '../../../lib/theming/Emotion';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { getDOMRect } from '../../../lib/dom/getDOMRect';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\nimport { SizeProp } from '../../../lib/types/props';\nimport { useTheme } from '../../../lib/theming/useTheme';\n\nimport { getStyles } from './FileUploaderFile.styles';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n multiple?: boolean;\n size: SizeProp;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper>,\n fileNameElementRef: React.RefObject<HTMLSpanElement>,\n name: string,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n};\n\nconst MIN_CHARS_LENGTH = 3;\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n} as const;\n\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const { file, showSize, error, multiple, size } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile, setIsMinLengthReached, isMinLengthReached } = useContext(FileUploaderControlContext);\n const theme = useTheme();\n const emotion = useEmotion();\n const styles = getStyles(emotion);\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n if (setIsMinLengthReached) {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setIsMinLengthReached((truncatedName?.length ?? 0) <= MIN_CHARS_LENGTH);\n }\n }, [name, isMinLengthReached]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setTruncatedFileName(truncatedName);\n });\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: styles.iconSmall(),\n medium: styles.iconMedium(),\n large: styles.iconLarge(),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeContentClass = useFileUploaderSize(size, {\n small: styles.contentSmall(theme),\n medium: styles.contentMedium(theme),\n large: styles.contentLarge(theme),\n });\n\n const contentClassNames = emotion.cx(styles.content(), {\n [sizeContentClass]: true,\n [styles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = emotion.cx(styles.icon(theme), {\n [styles.focusedIcon(theme)]: focusedByTab,\n [sizeIconClass]: true,\n [styles.iconMultiple()]: multiple,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={styles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip data-tid={FileUploaderFileDataTids.fileTooltip} pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid={FileUploaderFileDataTids.fileName} ref={fileNameElementRef} className={styles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={styles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n status={status}\n hovered={hovered}\n focusedByTab={focusedByTab}\n isInvalid={isInvalid}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n );\n },\n);\n"]}
1
+ {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","globalObject","forwardRefAndName","formatBytes","TextWidthHelper","truncate","FileUploaderControlContext","useEmotion","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","useFileUploaderSize","useTheme","getStyles","FileUploaderFileStatusIcon","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","calcTruncatedName","textHelperRef","fileNameElementRef","current","getTextWidth","width","MIN_CHARS_LENGTH","FileUploaderFileDataTids","file","fileTooltip","fileName","fileSize","fileIcon","FileUploaderFile","props","ref","showSize","error","multiple","size","onRemove","id","originalFile","status","validationResult","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","removeFile","setIsMinLengthReached","isMinLengthReached","theme","emotion","styles","formattedSize","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","sizeIconClass","small","iconSmall","medium","iconMedium","large","iconLarge","renderTooltipContent","sizeContentClass","contentSmall","contentMedium","contentLarge","contentClassNames","cx","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","icon","focusedIcon","iconMultiple","isTruncated","root"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { useEmotion } from '../../../lib/theming/Emotion';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { getDOMRect } from '../../../lib/dom/getDOMRect';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\nimport { SizeProp } from '../../../lib/types/props';\nimport { useTheme } from '../../../lib/theming/useTheme';\n\nimport { getStyles } from './FileUploaderFile.styles';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n multiple?: boolean;\n size: SizeProp;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n onRemove(id: string): void;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper>,\n fileNameElementRef: React.RefObject<HTMLSpanElement>,\n name: string,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n};\n\nconst MIN_CHARS_LENGTH = 3;\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n} as const;\n\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const { file, showSize, error, multiple, size, onRemove } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile, setIsMinLengthReached, isMinLengthReached } = useContext(FileUploaderControlContext);\n const theme = useTheme();\n const emotion = useEmotion();\n const styles = getStyles(emotion);\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n if (setIsMinLengthReached) {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setIsMinLengthReached((truncatedName?.length ?? 0) <= MIN_CHARS_LENGTH);\n }\n }, [name, isMinLengthReached]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name);\n\n setTruncatedFileName(truncatedName);\n });\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n onRemove(id);\n }, [removeFile, id, onRemove]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: styles.iconSmall(),\n medium: styles.iconMedium(),\n large: styles.iconLarge(),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeContentClass = useFileUploaderSize(size, {\n small: styles.contentSmall(theme),\n medium: styles.contentMedium(theme),\n large: styles.contentLarge(theme),\n });\n\n const contentClassNames = emotion.cx(styles.content(), {\n [sizeContentClass]: true,\n [styles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = emotion.cx(styles.icon(theme), {\n [styles.focusedIcon(theme)]: focusedByTab,\n [sizeIconClass]: true,\n [styles.iconMultiple()]: multiple,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={styles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip data-tid={FileUploaderFileDataTids.fileTooltip} pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid={FileUploaderFileDataTids.fileName} ref={fileNameElementRef} className={styles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={styles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n status={status}\n hovered={hovered}\n focusedByTab={focusedByTab}\n isInvalid={isInvalid}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n );\n },\n);\n"]}
@@ -7,6 +7,7 @@ interface FileUploaderFileProps {
7
7
  size: SizeProp;
8
8
  /** Состояние ошибки контрола файла */
9
9
  error?: boolean;
10
+ onRemove(id: string): void;
10
11
  }
11
12
  export declare const FileUploaderFileDataTids: {
12
13
  readonly file: "FileUploader__file";
@@ -10,7 +10,8 @@ export var FileUploaderFileDataTids = {
10
10
  };
11
11
  export var FileUploaderFileList = function FileUploaderFileList(props) {
12
12
  var renderFile = props.renderFile,
13
- size = props.size;
13
+ size = props.size,
14
+ onRemove = props.onRemove;
14
15
 
15
16
  var _useContext = useContext(FileUploaderControlContext),
16
17
  files = _useContext.files;
@@ -35,7 +36,8 @@ export var FileUploaderFileList = function FileUploaderFileList(props) {
35
36
  file: file,
36
37
  showSize: true,
37
38
  multiple: true,
38
- size: size
39
+ size: size,
40
+ onRemove: onRemove
39
41
  }))));
40
42
  }));
41
43
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploaderFileList.tsx"],"names":["React","useContext","FileUploaderControlContext","FileUploaderFile","useEmotion","useFileUploaderSize","useTheme","getStyles","FileUploaderFileDataTids","fileList","FileUploaderFileList","props","renderFile","size","files","theme","emotion","styles","fileWrapperClass","small","fileWrapperSmall","medium","fileWrapperMedium","large","fileWrapperLarge","map","file","id","cx","fileWrapper","__KONTUR_REACT_UI__","displayName"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,0BAAT,QAA2C,+BAA3C;AACA,SAASC,gBAAT,QAAiC,sCAAjC;;AAEA,SAASC,UAAT,QAA2B,8BAA3B;AACA,SAASC,mBAAT,QAAoC,8BAApC;;AAEA,SAASC,QAAT,QAAyB,+BAAzB;;AAEA,SAASC,SAAT,QAA0B,+BAA1B;;;;;;;AAOA,OAAO,IAAMC,wBAAwB,GAAG;AACtCC,EAAAA,QAAQ,EAAE,wBAD4B,EAAjC;;;AAIP,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAsC;AACxE,MAAQC,UAAR,GAA6BD,KAA7B,CAAQC,UAAR,CAAoBC,IAApB,GAA6BF,KAA7B,CAAoBE,IAApB;AACA,oBAAkBZ,UAAU,CAACC,0BAAD,CAA5B,CAAQY,KAAR,eAAQA,KAAR;AACA,MAAMC,KAAK,GAAGT,QAAQ,EAAtB;AACA,MAAMU,OAAO,GAAGZ,UAAU,EAA1B;AACA,MAAMa,MAAM,GAAGV,SAAS,CAACS,OAAD,CAAxB;;AAEA,MAAME,gBAAgB,GAAGb,mBAAmB,CAACQ,IAAD,EAAO;AACjDM,IAAAA,KAAK,EAAEF,MAAM,CAACG,gBAAP,CAAwBL,KAAxB,CAD0C;AAEjDM,IAAAA,MAAM,EAAEJ,MAAM,CAACK,iBAAP,CAAyBP,KAAzB,CAFyC;AAGjDQ,IAAAA,KAAK,EAAEN,MAAM,CAACO,gBAAP,CAAwBT,KAAxB,CAH0C,EAAP,CAA5C;;;AAMA;AACE,iCAAK,YAAUP,wBAAwB,CAACC,QAAxC;AACGK,IAAAA,KAAK,CAACW,GAAN,CAAU,UAACC,IAAD;AACT,qCAAK,GAAG,EAAEA,IAAI,CAACC,EAAf,EAAmB,SAAS,EAAEX,OAAO,CAACY,EAAR,CAAWX,MAAM,CAACY,WAAP,CAAmBd,KAAnB,CAAX,EAAsCG,gBAAtC,CAA9B;AACE,qCAAK,SAAS,EAAED,MAAM,CAACS,IAAP,EAAhB;AACGd,QAAAA,UAAU,CAACc,IAAD,eAAO,oBAAC,gBAAD,IAAkB,IAAI,EAAEA,IAAxB,EAA8B,QAAQ,MAAtC,EAAuC,QAAQ,MAA/C,EAAgD,IAAI,EAAEb,IAAtD,GAAP,CADb,CADF,CADS,GAAV,CADH,CADF;;;;;;AAWD,CAxBM;;AA0BPH,oBAAoB,CAACoB,mBAArB,GAA2C,sBAA3C;AACApB,oBAAoB,CAACqB,WAArB,GAAmC,sBAAnC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { FileUploaderFile } from '../FileUploaderFile/FileUploaderFile';\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { useEmotion } from '../../../lib/theming/Emotion';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\nimport { SizeProp } from '../../../lib/types/props';\nimport { useTheme } from '../../../lib/theming/useTheme';\n\nimport { getStyles } from './FileUploaderFileList.styles';\n\ninterface FileUploaderFileListProps {\n renderFile: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n size: SizeProp;\n}\n\nexport const FileUploaderFileDataTids = {\n fileList: 'FileUploader__fileList',\n} as const;\n\nexport const FileUploaderFileList = (props: FileUploaderFileListProps) => {\n const { renderFile, size } = props;\n const { files } = useContext(FileUploaderControlContext);\n const theme = useTheme();\n const emotion = useEmotion();\n const styles = getStyles(emotion);\n\n const fileWrapperClass = useFileUploaderSize(size, {\n small: styles.fileWrapperSmall(theme),\n medium: styles.fileWrapperMedium(theme),\n large: styles.fileWrapperLarge(theme),\n });\n\n return (\n <div data-tid={FileUploaderFileDataTids.fileList}>\n {files.map((file) => (\n <div key={file.id} className={emotion.cx(styles.fileWrapper(theme), fileWrapperClass)}>\n <div className={styles.file()}>\n {renderFile(file, <FileUploaderFile file={file} showSize multiple size={size} />)}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nFileUploaderFileList.__KONTUR_REACT_UI__ = 'FileUploaderFileList';\nFileUploaderFileList.displayName = 'FileUploaderFileList';\n"]}
1
+ {"version":3,"sources":["FileUploaderFileList.tsx"],"names":["React","useContext","FileUploaderControlContext","FileUploaderFile","useEmotion","useFileUploaderSize","useTheme","getStyles","FileUploaderFileDataTids","fileList","FileUploaderFileList","props","renderFile","size","onRemove","files","theme","emotion","styles","fileWrapperClass","small","fileWrapperSmall","medium","fileWrapperMedium","large","fileWrapperLarge","map","file","id","cx","fileWrapper","__KONTUR_REACT_UI__","displayName"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,0BAAT,QAA2C,+BAA3C;AACA,SAASC,gBAAT,QAAiC,sCAAjC;;AAEA,SAASC,UAAT,QAA2B,8BAA3B;AACA,SAASC,mBAAT,QAAoC,8BAApC;;AAEA,SAASC,QAAT,QAAyB,+BAAzB;;AAEA,SAASC,SAAT,QAA0B,+BAA1B;;;;;;;;AAQA,OAAO,IAAMC,wBAAwB,GAAG;AACtCC,EAAAA,QAAQ,EAAE,wBAD4B,EAAjC;;;AAIP,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAsC;AACxE,MAAQC,UAAR,GAAuCD,KAAvC,CAAQC,UAAR,CAAoBC,IAApB,GAAuCF,KAAvC,CAAoBE,IAApB,CAA0BC,QAA1B,GAAuCH,KAAvC,CAA0BG,QAA1B;AACA,oBAAkBb,UAAU,CAACC,0BAAD,CAA5B,CAAQa,KAAR,eAAQA,KAAR;AACA,MAAMC,KAAK,GAAGV,QAAQ,EAAtB;AACA,MAAMW,OAAO,GAAGb,UAAU,EAA1B;AACA,MAAMc,MAAM,GAAGX,SAAS,CAACU,OAAD,CAAxB;;AAEA,MAAME,gBAAgB,GAAGd,mBAAmB,CAACQ,IAAD,EAAO;AACjDO,IAAAA,KAAK,EAAEF,MAAM,CAACG,gBAAP,CAAwBL,KAAxB,CAD0C;AAEjDM,IAAAA,MAAM,EAAEJ,MAAM,CAACK,iBAAP,CAAyBP,KAAzB,CAFyC;AAGjDQ,IAAAA,KAAK,EAAEN,MAAM,CAACO,gBAAP,CAAwBT,KAAxB,CAH0C,EAAP,CAA5C;;;AAMA;AACE,iCAAK,YAAUR,wBAAwB,CAACC,QAAxC;AACGM,IAAAA,KAAK,CAACW,GAAN,CAAU,UAACC,IAAD;AACT,qCAAK,GAAG,EAAEA,IAAI,CAACC,EAAf,EAAmB,SAAS,EAAEX,OAAO,CAACY,EAAR,CAAWX,MAAM,CAACY,WAAP,CAAmBd,KAAnB,CAAX,EAAsCG,gBAAtC,CAA9B;AACE,qCAAK,SAAS,EAAED,MAAM,CAACS,IAAP,EAAhB;AACGf,QAAAA,UAAU,CAACe,IAAD,eAAO,oBAAC,gBAAD,IAAkB,IAAI,EAAEA,IAAxB,EAA8B,QAAQ,MAAtC,EAAuC,QAAQ,MAA/C,EAAgD,IAAI,EAAEd,IAAtD,EAA4D,QAAQ,EAAEC,QAAtE,GAAP,CADb,CADF,CADS,GAAV,CADH,CADF;;;;;;AAWD,CAxBM;;AA0BPJ,oBAAoB,CAACqB,mBAArB,GAA2C,sBAA3C;AACArB,oBAAoB,CAACsB,WAArB,GAAmC,sBAAnC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { FileUploaderFile } from '../FileUploaderFile/FileUploaderFile';\nimport { FileUploaderAttachedFile } from '../fileUtils';\nimport { useEmotion } from '../../../lib/theming/Emotion';\nimport { useFileUploaderSize } from '../hooks/useFileUploaderSize';\nimport { SizeProp } from '../../../lib/types/props';\nimport { useTheme } from '../../../lib/theming/useTheme';\n\nimport { getStyles } from './FileUploaderFileList.styles';\n\ninterface FileUploaderFileListProps {\n renderFile: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n size: SizeProp;\n onRemove(fileId: string): void;\n}\n\nexport const FileUploaderFileDataTids = {\n fileList: 'FileUploader__fileList',\n} as const;\n\nexport const FileUploaderFileList = (props: FileUploaderFileListProps) => {\n const { renderFile, size, onRemove } = props;\n const { files } = useContext(FileUploaderControlContext);\n const theme = useTheme();\n const emotion = useEmotion();\n const styles = getStyles(emotion);\n\n const fileWrapperClass = useFileUploaderSize(size, {\n small: styles.fileWrapperSmall(theme),\n medium: styles.fileWrapperMedium(theme),\n large: styles.fileWrapperLarge(theme),\n });\n\n return (\n <div data-tid={FileUploaderFileDataTids.fileList}>\n {files.map((file) => (\n <div key={file.id} className={emotion.cx(styles.fileWrapper(theme), fileWrapperClass)}>\n <div className={styles.file()}>\n {renderFile(file, <FileUploaderFile file={file} showSize multiple size={size} onRemove={onRemove} />)}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nFileUploaderFileList.__KONTUR_REACT_UI__ = 'FileUploaderFileList';\nFileUploaderFileList.displayName = 'FileUploaderFileList';\n"]}
@@ -4,6 +4,7 @@ import { SizeProp } from '../../../lib/types/props';
4
4
  interface FileUploaderFileListProps {
5
5
  renderFile: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;
6
6
  size: SizeProp;
7
+ onRemove(fileId: string): void;
7
8
  }
8
9
  export declare const FileUploaderFileDataTids: {
9
10
  readonly fileList: "FileUploader__fileList";