@skbkontur/react-ui 0.0.0-627b6e869c → 0.0.0-69a6fa606f

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 (863) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +1 -1
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +3 -1
  4. package/cjs/components/Autocomplete/Autocomplete.js +21 -15
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +4 -5
  7. package/cjs/components/Button/Button.js +8 -12
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Button/Button.styles.js +1 -1
  10. package/cjs/components/Button/Button.styles.js.map +1 -1
  11. package/cjs/components/Center/Center.d.ts +3 -0
  12. package/cjs/components/Center/Center.js +8 -3
  13. package/cjs/components/Center/Center.js.map +1 -1
  14. package/cjs/components/Checkbox/Checkbox.d.ts +3 -0
  15. package/cjs/components/Checkbox/Checkbox.js +8 -2
  16. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.styles.js +4 -7
  18. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  19. package/cjs/components/CurrencyInput/CurrencyHelper.js +18 -12
  20. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +3 -0
  22. package/cjs/components/CurrencyInput/CurrencyInput.js +23 -10
  23. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  24. package/cjs/components/CurrencyInput/CurrencyInputHelper.js +7 -5
  25. package/cjs/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  26. package/cjs/components/CurrencyInput/CursorHelper.js +19 -16
  27. package/cjs/components/CurrencyInput/CursorHelper.js.map +1 -1
  28. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
  30. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  31. package/cjs/components/DateInput/DateInput.styles.js +2 -2
  32. package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
  33. package/cjs/components/DateInput/helpers/InternalDateMediator.js +8 -2
  34. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  35. package/cjs/components/DatePicker/DatePicker.d.ts +6 -1
  36. package/cjs/components/DatePicker/DatePicker.js +14 -3
  37. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  38. package/cjs/components/DatePicker/Picker.js +7 -2
  39. package/cjs/components/DatePicker/Picker.js.map +1 -1
  40. package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
  41. package/cjs/components/Dropdown/Dropdown.js +7 -2
  42. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  43. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  44. package/cjs/components/DropdownMenu/DropdownMenu.js +2 -16
  45. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  46. package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
  47. package/cjs/components/FileUploader/FileUploader.js +18 -9
  48. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  49. package/cjs/components/FileUploader/FileUploader.styles.d.ts +3 -2
  50. package/cjs/components/FileUploader/FileUploader.styles.js +21 -15
  51. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  52. package/cjs/components/FxInput/FxInput.d.ts +3 -0
  53. package/cjs/components/FxInput/FxInput.js +7 -3
  54. package/cjs/components/FxInput/FxInput.js.map +1 -1
  55. package/cjs/components/Gapped/Gapped.d.ts +4 -0
  56. package/cjs/components/Gapped/Gapped.js +11 -6
  57. package/cjs/components/Gapped/Gapped.js.map +1 -1
  58. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  59. package/cjs/components/GlobalLoader/GlobalLoader.js +9 -7
  60. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  61. package/cjs/components/Group/Group.d.ts +3 -0
  62. package/cjs/components/Group/Group.js +80 -33
  63. package/cjs/components/Group/Group.js.map +1 -1
  64. package/cjs/components/Hint/Hint.d.ts +4 -1
  65. package/cjs/components/Hint/Hint.js +5 -0
  66. package/cjs/components/Hint/Hint.js.map +1 -1
  67. package/cjs/components/Input/Input.d.ts +4 -5
  68. package/cjs/components/Input/Input.js +21 -24
  69. package/cjs/components/Input/Input.js.map +1 -1
  70. package/cjs/components/Kebab/Kebab.d.ts +2 -13
  71. package/cjs/components/Kebab/Kebab.js +5 -29
  72. package/cjs/components/Kebab/Kebab.js.map +1 -1
  73. package/cjs/components/Link/Link.d.ts +3 -0
  74. package/cjs/components/Link/Link.js +7 -3
  75. package/cjs/components/Link/Link.js.map +1 -1
  76. package/cjs/components/Loader/Loader.d.ts +4 -0
  77. package/cjs/components/Loader/Loader.js +15 -10
  78. package/cjs/components/Loader/Loader.js.map +1 -1
  79. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
  80. package/cjs/components/MenuHeader/MenuHeader.js +7 -2
  81. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  82. package/cjs/components/MenuItem/MenuItem.d.ts +4 -0
  83. package/cjs/components/MenuItem/MenuItem.js +10 -4
  84. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  85. package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
  86. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  87. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  88. package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
  89. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  90. package/cjs/components/Modal/Modal.d.ts +5 -0
  91. package/cjs/components/Modal/Modal.js +10 -3
  92. package/cjs/components/Modal/Modal.js.map +1 -1
  93. package/cjs/components/Modal/Modal.styles.js +10 -6
  94. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  95. package/cjs/components/Modal/ModalClose.js +3 -2
  96. package/cjs/components/Modal/ModalClose.js.map +1 -1
  97. package/cjs/components/Modal/ModalFooter.d.ts +3 -0
  98. package/cjs/components/Modal/ModalFooter.js +8 -4
  99. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  100. package/cjs/components/Modal/ModalHeader.d.ts +3 -0
  101. package/cjs/components/Modal/ModalHeader.js +9 -4
  102. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  103. package/cjs/components/Paging/Paging.d.ts +20 -3
  104. package/cjs/components/Paging/Paging.js +29 -10
  105. package/cjs/components/Paging/Paging.js.map +1 -1
  106. package/cjs/components/Paging/PagingDefaultComponent.d.ts +9 -0
  107. package/cjs/components/Paging/PagingDefaultComponent.js +21 -0
  108. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -0
  109. package/cjs/components/PasswordInput/PasswordInput.d.ts +7 -0
  110. package/cjs/components/PasswordInput/PasswordInput.js +37 -10
  111. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  112. package/cjs/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  113. package/cjs/components/PasswordInput/PasswordInputIcon.js +11 -0
  114. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -0
  115. package/cjs/components/Radio/Radio.d.ts +3 -0
  116. package/cjs/components/Radio/Radio.js +7 -3
  117. package/cjs/components/Radio/Radio.js.map +1 -1
  118. package/cjs/components/Radio/Radio.styles.js +4 -7
  119. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  120. package/cjs/components/RadioGroup/RadioGroup.d.ts +4 -1
  121. package/cjs/components/RadioGroup/RadioGroup.js +8 -4
  122. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  123. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +7 -2
  124. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  125. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.d.ts +1 -1
  126. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +3 -4
  127. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  128. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  129. package/cjs/components/ScrollContainer/ScrollContainer.js +17 -6
  130. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  131. package/cjs/components/Select/Select.d.ts +10 -5
  132. package/cjs/components/Select/Select.js +51 -15
  133. package/cjs/components/Select/Select.js.map +1 -1
  134. package/cjs/components/SidePage/SidePage.d.ts +4 -1
  135. package/cjs/components/SidePage/SidePage.js +9 -17
  136. package/cjs/components/SidePage/SidePage.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
  138. package/cjs/components/SidePage/SidePageBody.js +10 -3
  139. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  140. package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
  141. package/cjs/components/SidePage/SidePageContainer.js +7 -2
  142. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  143. package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
  144. package/cjs/components/SidePage/SidePageFooter.js +15 -6
  145. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  146. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
  147. package/cjs/components/SidePage/SidePageHeader.js +11 -5
  148. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  149. package/cjs/components/Spinner/Spinner.d.ts +3 -1
  150. package/cjs/components/Spinner/Spinner.js +8 -8
  151. package/cjs/components/Spinner/Spinner.js.map +1 -1
  152. package/cjs/components/Spinner/SpinnerFallbackAnimation.js +16 -5
  153. package/cjs/components/Spinner/SpinnerFallbackAnimation.js.map +1 -1
  154. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  155. package/cjs/components/Sticky/Sticky.js +11 -6
  156. package/cjs/components/Sticky/Sticky.js.map +1 -1
  157. package/cjs/components/Switcher/Switcher.d.ts +5 -1
  158. package/cjs/components/Switcher/Switcher.js +8 -3
  159. package/cjs/components/Switcher/Switcher.js.map +1 -1
  160. package/cjs/components/Switcher/Switcher.styles.js +2 -2
  161. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  162. package/cjs/components/Tabs/Indicator.js +6 -3
  163. package/cjs/components/Tabs/Indicator.js.map +1 -1
  164. package/cjs/components/Tabs/Tab.d.ts +3 -0
  165. package/cjs/components/Tabs/Tab.js +7 -2
  166. package/cjs/components/Tabs/Tab.js.map +1 -1
  167. package/cjs/components/Tabs/Tabs.d.ts +7 -1
  168. package/cjs/components/Tabs/Tabs.js +20 -7
  169. package/cjs/components/Tabs/Tabs.js.map +1 -1
  170. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  171. package/cjs/components/Textarea/Textarea.js +14 -9
  172. package/cjs/components/Textarea/Textarea.js.map +1 -1
  173. package/cjs/components/Textarea/TextareaCounter.d.ts +1 -2
  174. package/cjs/components/Textarea/TextareaCounter.js +21 -12
  175. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  176. package/cjs/components/Toast/Toast.d.ts +6 -0
  177. package/cjs/components/Toast/Toast.js +9 -2
  178. package/cjs/components/Toast/Toast.js.map +1 -1
  179. package/cjs/components/Toast/ToastStatic.js +1 -1
  180. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  181. package/cjs/components/Toast/ToastView.js +6 -5
  182. package/cjs/components/Toast/ToastView.js.map +1 -1
  183. package/cjs/components/Toast/ToastView.styles.d.ts +1 -1
  184. package/cjs/components/Toast/ToastView.styles.js +3 -2
  185. package/cjs/components/Toast/ToastView.styles.js.map +1 -1
  186. package/cjs/components/Toggle/Toggle.d.ts +4 -1
  187. package/cjs/components/Toggle/Toggle.js +7 -3
  188. package/cjs/components/Toggle/Toggle.js.map +1 -1
  189. package/cjs/components/Toggle/Toggle.styles.js +12 -10
  190. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  191. package/cjs/components/Token/Token.d.ts +3 -0
  192. package/cjs/components/Token/Token.js +20 -3
  193. package/cjs/components/Token/Token.js.map +1 -1
  194. package/cjs/components/Token/Token.styles.js +13 -6
  195. package/cjs/components/Token/Token.styles.js.map +1 -1
  196. package/cjs/components/TokenInput/TextWidthHelper.js +2 -1
  197. package/cjs/components/TokenInput/TextWidthHelper.js.map +1 -1
  198. package/cjs/components/TokenInput/TokenInput.d.ts +4 -0
  199. package/cjs/components/TokenInput/TokenInput.js +20 -12
  200. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  201. package/cjs/components/TokenInput/TokenInput.styles.js +3 -2
  202. package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
  203. package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
  204. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  205. package/cjs/components/Tooltip/Tooltip.d.ts +6 -2
  206. package/cjs/components/Tooltip/Tooltip.js +17 -8
  207. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  208. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -1
  209. package/cjs/components/TooltipMenu/TooltipMenu.js +9 -2
  210. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  211. package/cjs/hooks/useDrop.js +3 -1
  212. package/cjs/hooks/useDrop.js.map +1 -1
  213. package/cjs/index.d.ts +2 -0
  214. package/cjs/index.js +2 -0
  215. package/cjs/index.js.map +1 -1
  216. package/cjs/internal/BGRuler.js +3 -1
  217. package/cjs/internal/BGRuler.js.map +1 -1
  218. package/cjs/internal/Calendar/Calendar.d.ts +6 -0
  219. package/cjs/internal/Calendar/Calendar.js +12 -5
  220. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  221. package/cjs/internal/Calendar/CalendarDateShape.d.ts +1 -1
  222. package/cjs/internal/Calendar/MonthView.js +5 -4
  223. package/cjs/internal/Calendar/MonthView.js.map +1 -1
  224. package/cjs/internal/Calendar/MonthViewModel.js +36 -17
  225. package/cjs/internal/Calendar/MonthViewModel.js.map +1 -1
  226. package/cjs/internal/CommonWrapper/CommonWrapper.js +13 -8
  227. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  228. package/cjs/internal/ComponentTable.d.ts +4 -2
  229. package/cjs/internal/ComponentTable.js +1 -0
  230. package/cjs/internal/ComponentTable.js.map +1 -1
  231. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  232. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +28 -5
  233. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  234. package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
  235. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  236. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  237. package/cjs/internal/CustomComboBox/CustomComboBox.js +9 -4
  238. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  239. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  240. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +35 -35
  241. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  242. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  243. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  244. package/cjs/internal/DataTids/DataTids.js +46 -0
  245. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  246. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  247. package/cjs/internal/DataTids/DataTids.styles.js +41 -0
  248. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  249. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  250. package/cjs/internal/DataTids/componentsDataTids.js +16 -0
  251. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  252. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
  253. package/cjs/internal/DateSelect/DateSelect.js +30 -13
  254. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  255. package/cjs/internal/DropdownContainer/DropdownContainer.js +5 -10
  256. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  257. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +3 -1
  258. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  259. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  260. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +17 -8
  261. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  262. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  263. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
  264. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  265. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +14 -10
  266. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  267. package/cjs/internal/InputLikeText/InputLikeText.d.ts +5 -1
  268. package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
  269. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  270. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
  271. package/cjs/internal/InternalMenu/InternalMenu.js +12 -9
  272. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  273. package/cjs/internal/InternalMenu/InternalMenu.styles.js +2 -2
  274. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  275. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  276. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js +16 -0
  277. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  278. package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
  279. package/cjs/internal/MaskedInput/MaskedInput.js +13 -5
  280. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  281. package/cjs/internal/Menu/Menu.d.ts +3 -0
  282. package/cjs/internal/Menu/Menu.js +20 -16
  283. package/cjs/internal/Menu/Menu.js.map +1 -1
  284. package/cjs/internal/Menu/Menu.styles.js +5 -3
  285. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  286. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  287. package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
  288. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  289. package/cjs/internal/Popup/Popup.d.ts +6 -1
  290. package/cjs/internal/Popup/Popup.js +21 -14
  291. package/cjs/internal/Popup/Popup.js.map +1 -1
  292. package/cjs/internal/Popup/PopupHelper.js +4 -2
  293. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  294. package/cjs/internal/Popup/PopupPin.js +2 -1
  295. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  296. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -0
  297. package/cjs/internal/PopupMenu/PopupMenu.js +22 -4
  298. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  299. package/cjs/internal/PopupMenu/validatePositions.js +6 -6
  300. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  301. package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  302. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  303. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -1
  304. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  305. package/cjs/internal/RenderLayer/RenderLayer.js +4 -1
  306. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  307. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +3 -1
  308. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  309. package/cjs/internal/ThemePlayground/CheckboxPlayground.js +1 -0
  310. package/cjs/internal/ThemePlayground/CheckboxPlayground.js.map +1 -1
  311. package/cjs/internal/ThemePlayground/Playground.js +11 -19
  312. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  313. package/cjs/internal/ThemePlayground/RadioPlayground.js.map +1 -1
  314. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  315. package/cjs/internal/ThemePlayground/SizesGroup.js +20 -0
  316. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -0
  317. package/cjs/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  318. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +14 -2
  319. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  320. package/cjs/internal/ThemePlayground/ThemeEditor.js +8 -1
  321. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  322. package/cjs/internal/ThemePlayground/VariableValue.js +18 -6
  323. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  324. package/cjs/internal/ThemePlayground/constants.d.ts +3 -1
  325. package/cjs/internal/ThemePlayground/constants.js +3 -1
  326. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  327. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +4 -7
  328. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  329. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  330. package/cjs/internal/ThemeShowcase/VariablesCollector.js +5 -6
  331. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  332. package/cjs/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  333. package/cjs/internal/ZIndex/ZIndexStorage.js +13 -6
  334. package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
  335. package/cjs/internal/icons/16px/index.d.ts +19 -19
  336. package/cjs/internal/icons/16px/index.js +45 -38
  337. package/cjs/internal/icons/16px/index.js.map +1 -1
  338. package/cjs/internal/icons/20px/svg.js +6 -0
  339. package/cjs/internal/icons/20px/svg.js.map +1 -1
  340. package/cjs/internal/themes/DefaultTheme.d.ts +21 -1
  341. package/cjs/internal/themes/DefaultTheme.js +43 -5
  342. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  343. package/cjs/internal/themes/NotFlat.d.ts +6 -0
  344. package/cjs/internal/themes/NotFlat.js +12 -2
  345. package/cjs/internal/themes/NotFlat.js.map +1 -1
  346. package/cjs/internal/themes/Theme2022.d.ts +66 -0
  347. package/cjs/internal/themes/Theme2022.js +100 -0
  348. package/cjs/internal/themes/Theme2022.js.map +1 -0
  349. package/cjs/internal/themes/Theme2022Dark.d.ts +5 -0
  350. package/cjs/internal/themes/Theme2022Dark.js +9 -0
  351. package/cjs/internal/themes/Theme2022Dark.js.map +1 -0
  352. package/cjs/lib/ConditionalHandler.d.ts +3 -2
  353. package/cjs/lib/ConditionalHandler.js +5 -3
  354. package/cjs/lib/ConditionalHandler.js.map +1 -1
  355. package/cjs/lib/InstanceWithAnchorElement.d.ts +5 -0
  356. package/cjs/lib/InstanceWithAnchorElement.js +9 -0
  357. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -0
  358. package/cjs/lib/ModalStack.d.ts +1 -1
  359. package/cjs/lib/ModalStack.js.map +1 -1
  360. package/cjs/lib/SSRSafe.d.ts +1 -0
  361. package/cjs/lib/SSRSafe.js +9 -1
  362. package/cjs/lib/SSRSafe.js.map +1 -1
  363. package/cjs/lib/animation/index.d.ts +1 -1
  364. package/cjs/lib/animation/index.js +3 -3
  365. package/cjs/lib/animation/index.js.map +1 -1
  366. package/cjs/lib/date/InternalDate.js +23 -9
  367. package/cjs/lib/date/InternalDate.js.map +1 -1
  368. package/cjs/lib/date/InternalDateCalculator.js +16 -2
  369. package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
  370. package/cjs/lib/date/InternalDateGetter.js +23 -6
  371. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  372. package/cjs/lib/date/InternalDateTransformer.js +11 -2
  373. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  374. package/cjs/lib/date/InternalDateValidator.js +31 -6
  375. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  376. package/cjs/lib/dom/getDOMRect.d.ts +5 -2
  377. package/cjs/lib/dom/getDOMRect.js +30 -18
  378. package/cjs/lib/dom/getDOMRect.js.map +1 -1
  379. package/cjs/lib/events/keyboard/KeyboardMapKeys.d.ts +2 -1
  380. package/cjs/lib/events/keyboard/KeyboardMapKeys.js +1 -0
  381. package/cjs/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  382. package/cjs/lib/events/keyboard/extractCode.js +7 -5
  383. package/cjs/lib/events/keyboard/extractCode.js.map +1 -1
  384. package/cjs/lib/needsPolyfillPlaceholder.d.ts +6 -0
  385. package/cjs/lib/needsPolyfillPlaceholder.js +19 -0
  386. package/cjs/lib/needsPolyfillPlaceholder.js.map +1 -0
  387. package/cjs/lib/rootNode/getRootNode.js +16 -10
  388. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  389. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +3 -6
  390. package/cjs/lib/rootNode/rootNodeDecorator.js +11 -13
  391. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  392. package/cjs/lib/stringUtils.js +3 -1
  393. package/cjs/lib/stringUtils.js.map +1 -1
  394. package/cjs/lib/styles/ColorFactory.js +9 -9
  395. package/cjs/lib/styles/ColorFactory.js.map +1 -1
  396. package/cjs/lib/styles/ColorHelpers.d.ts +1 -0
  397. package/cjs/lib/styles/ColorHelpers.js +33 -10
  398. package/cjs/lib/styles/ColorHelpers.js.map +1 -1
  399. package/cjs/lib/styles/ColorObject.js +3 -2
  400. package/cjs/lib/styles/ColorObject.js.map +1 -1
  401. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  402. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js +9 -0
  403. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -0
  404. package/cjs/lib/taskWithDelayAndMinimalDuration.js +3 -1
  405. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  406. package/cjs/lib/theming/Emotion.js +5 -2
  407. package/cjs/lib/theming/Emotion.js.map +1 -1
  408. package/cjs/lib/theming/ThemeFactory.js +5 -1
  409. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  410. package/cjs/lib/theming/ThemeHelpers.js +7 -2
  411. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  412. package/cjs/lib/theming/themes/Theme2022.d.ts +1 -0
  413. package/cjs/lib/theming/themes/Theme2022.js +6 -0
  414. package/cjs/lib/theming/themes/Theme2022.js.map +1 -0
  415. package/cjs/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  416. package/cjs/lib/theming/themes/Theme2022Dark.js +9 -0
  417. package/cjs/lib/theming/themes/Theme2022Dark.js.map +1 -0
  418. package/cjs/lib/utils.d.ts +15 -0
  419. package/cjs/lib/utils.js +45 -9
  420. package/cjs/lib/utils.js.map +1 -1
  421. package/components/Autocomplete/Autocomplete/Autocomplete.js +18 -20
  422. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  423. package/components/Autocomplete/Autocomplete.d.ts +3 -1
  424. package/components/Button/Button/Button.js +8 -10
  425. package/components/Button/Button/Button.js.map +1 -1
  426. package/components/Button/Button.d.ts +4 -5
  427. package/components/Button/Button.styles/Button.styles.js +1 -1
  428. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  429. package/components/Center/Center/Center.js +10 -5
  430. package/components/Center/Center/Center.js.map +1 -1
  431. package/components/Center/Center.d.ts +3 -0
  432. package/components/Checkbox/Checkbox/Checkbox.js +4 -0
  433. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  434. package/components/Checkbox/Checkbox.d.ts +3 -0
  435. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -1
  436. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  437. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +12 -11
  438. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  439. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +30 -17
  440. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  441. package/components/CurrencyInput/CurrencyInput.d.ts +3 -0
  442. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js +7 -1
  443. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js.map +1 -1
  444. package/components/CurrencyInput/CursorHelper/CursorHelper.js +18 -11
  445. package/components/CurrencyInput/CursorHelper/CursorHelper.js.map +1 -1
  446. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
  447. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  448. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  449. package/components/DateInput/DateInput.styles/DateInput.styles.js +2 -2
  450. package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
  451. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +7 -7
  452. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  453. package/components/DatePicker/DatePicker/DatePicker.js +6 -0
  454. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  455. package/components/DatePicker/DatePicker.d.ts +6 -1
  456. package/components/DatePicker/Picker/Picker.js +3 -1
  457. package/components/DatePicker/Picker/Picker.js.map +1 -1
  458. package/components/Dropdown/Dropdown/Dropdown.js +9 -5
  459. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  460. package/components/Dropdown/Dropdown.d.ts +3 -0
  461. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -16
  462. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  463. package/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  464. package/components/FileUploader/FileUploader/FileUploader.js +18 -9
  465. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  466. package/components/FileUploader/FileUploader.d.ts +5 -0
  467. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +15 -12
  468. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  469. package/components/FileUploader/FileUploader.styles.d.ts +3 -2
  470. package/components/FxInput/FxInput/FxInput.js +6 -2
  471. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  472. package/components/FxInput/FxInput.d.ts +3 -0
  473. package/components/Gapped/Gapped/Gapped.js +14 -7
  474. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  475. package/components/Gapped/Gapped.d.ts +4 -0
  476. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +9 -8
  477. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  478. package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  479. package/components/Group/Group/Group.js +66 -30
  480. package/components/Group/Group/Group.js.map +1 -1
  481. package/components/Group/Group.d.ts +3 -0
  482. package/components/Hint/Hint/Hint.js +6 -0
  483. package/components/Hint/Hint/Hint.js.map +1 -1
  484. package/components/Hint/Hint.d.ts +4 -1
  485. package/components/Input/Input/Input.js +18 -31
  486. package/components/Input/Input/Input.js.map +1 -1
  487. package/components/Input/Input.d.ts +4 -5
  488. package/components/Kebab/Kebab/Kebab.js +3 -13
  489. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  490. package/components/Kebab/Kebab.d.ts +2 -13
  491. package/components/Link/Link/Link.js +10 -5
  492. package/components/Link/Link/Link.js.map +1 -1
  493. package/components/Link/Link.d.ts +3 -0
  494. package/components/Loader/Loader/Loader.js +21 -18
  495. package/components/Loader/Loader/Loader.js.map +1 -1
  496. package/components/Loader/Loader.d.ts +4 -0
  497. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  498. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  499. package/components/MenuHeader/MenuHeader.d.ts +3 -0
  500. package/components/MenuItem/MenuItem/MenuItem.js +15 -9
  501. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  502. package/components/MenuItem/MenuItem.d.ts +4 -0
  503. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  504. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  505. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
  506. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  507. package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  508. package/components/Modal/Modal/Modal.js +9 -3
  509. package/components/Modal/Modal/Modal.js.map +1 -1
  510. package/components/Modal/Modal.d.ts +5 -0
  511. package/components/Modal/Modal.styles/Modal.styles.js +4 -4
  512. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  513. package/components/Modal/ModalClose/ModalClose.js +2 -1
  514. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  515. package/components/Modal/ModalFooter/ModalFooter.js +6 -2
  516. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  517. package/components/Modal/ModalFooter.d.ts +3 -0
  518. package/components/Modal/ModalHeader/ModalHeader.js +6 -2
  519. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  520. package/components/Modal/ModalHeader.d.ts +3 -0
  521. package/components/Paging/Paging/Paging.js +24 -18
  522. package/components/Paging/Paging/Paging.js.map +1 -1
  523. package/components/Paging/Paging.d.ts +20 -3
  524. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js +19 -0
  525. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -0
  526. package/components/Paging/PagingDefaultComponent/package.json +6 -0
  527. package/components/Paging/PagingDefaultComponent.d.ts +9 -0
  528. package/components/PasswordInput/PasswordInput/PasswordInput.js +38 -12
  529. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  530. package/components/PasswordInput/PasswordInput.d.ts +7 -0
  531. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +10 -0
  532. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -0
  533. package/components/PasswordInput/PasswordInputIcon/package.json +6 -0
  534. package/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  535. package/components/Radio/Radio/Radio.js +10 -5
  536. package/components/Radio/Radio/Radio.js.map +1 -1
  537. package/components/Radio/Radio.d.ts +3 -0
  538. package/components/Radio/Radio.styles/Radio.styles.js +2 -1
  539. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  540. package/components/RadioGroup/RadioGroup/RadioGroup.js +16 -12
  541. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  542. package/components/RadioGroup/RadioGroup.d.ts +4 -1
  543. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +5 -0
  544. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  545. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +3 -3
  546. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  547. package/components/ResponsiveLayout/ResponsiveLayoutEvents.d.ts +1 -1
  548. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +9 -3
  549. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  550. package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  551. package/components/Select/Select/Select.js +41 -17
  552. package/components/Select/Select/Select.js.map +1 -1
  553. package/components/Select/Select.d.ts +10 -5
  554. package/components/SidePage/SidePage/SidePage.js +8 -22
  555. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  556. package/components/SidePage/SidePage.d.ts +4 -1
  557. package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
  558. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  559. package/components/SidePage/SidePageBody.d.ts +3 -0
  560. package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
  561. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  562. package/components/SidePage/SidePageContainer.d.ts +3 -0
  563. package/components/SidePage/SidePageFooter/SidePageFooter.js +14 -10
  564. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  565. package/components/SidePage/SidePageFooter.d.ts +3 -0
  566. package/components/SidePage/SidePageHeader/SidePageHeader.js +15 -10
  567. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  568. package/components/SidePage/SidePageHeader.d.ts +4 -0
  569. package/components/Spinner/Spinner/Spinner.js +14 -6
  570. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  571. package/components/Spinner/Spinner.d.ts +3 -1
  572. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js +18 -4
  573. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js.map +1 -1
  574. package/components/Sticky/Sticky/Sticky.js +13 -8
  575. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  576. package/components/Sticky/Sticky.d.ts +3 -0
  577. package/components/Switcher/Switcher/Switcher.js +4 -0
  578. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  579. package/components/Switcher/Switcher.d.ts +5 -1
  580. package/components/Switcher/Switcher.styles/Switcher.styles.js +1 -1
  581. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  582. package/components/Tabs/Indicator/Indicator.js +4 -1
  583. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  584. package/components/Tabs/Tab/Tab.js +4 -0
  585. package/components/Tabs/Tab/Tab.js.map +1 -1
  586. package/components/Tabs/Tab.d.ts +3 -0
  587. package/components/Tabs/Tabs/Tabs.js +11 -6
  588. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  589. package/components/Tabs/Tabs.d.ts +7 -1
  590. package/components/Textarea/Textarea/Textarea.js +21 -15
  591. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  592. package/components/Textarea/Textarea.d.ts +6 -2
  593. package/components/Textarea/TextareaCounter/TextareaCounter.js +13 -2
  594. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  595. package/components/Textarea/TextareaCounter.d.ts +1 -2
  596. package/components/Toast/Toast/Toast.js +16 -10
  597. package/components/Toast/Toast/Toast.js.map +1 -1
  598. package/components/Toast/Toast.d.ts +6 -0
  599. package/components/Toast/ToastStatic/ToastStatic.js +2 -2
  600. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  601. package/components/Toast/ToastView/ToastView.js +5 -4
  602. package/components/Toast/ToastView/ToastView.js.map +1 -1
  603. package/components/Toast/ToastView.styles/ToastView.styles.js +2 -2
  604. package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
  605. package/components/Toast/ToastView.styles.d.ts +1 -1
  606. package/components/Toggle/Toggle/Toggle.js +8 -4
  607. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  608. package/components/Toggle/Toggle.d.ts +4 -1
  609. package/components/Toggle/Toggle.styles/Toggle.styles.js +3 -4
  610. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  611. package/components/Token/Token/Token.js +16 -1
  612. package/components/Token/Token/Token.js.map +1 -1
  613. package/components/Token/Token.d.ts +3 -0
  614. package/components/Token/Token.styles/Token.styles.js +11 -4
  615. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  616. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js +3 -2
  617. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js.map +1 -1
  618. package/components/TokenInput/TokenInput/TokenInput.js +24 -14
  619. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  620. package/components/TokenInput/TokenInput.d.ts +4 -0
  621. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
  622. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
  623. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
  624. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  625. package/components/Tooltip/Tooltip/Tooltip.js +17 -9
  626. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  627. package/components/Tooltip/Tooltip.d.ts +6 -2
  628. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +18 -12
  629. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  630. package/components/TooltipMenu/TooltipMenu.d.ts +4 -1
  631. package/hooks/useDrop/useDrop.js +5 -1
  632. package/hooks/useDrop/useDrop.js.map +1 -1
  633. package/index.d.ts +2 -0
  634. package/index.js +2 -0
  635. package/index.js.map +1 -1
  636. package/internal/BGRuler/BGRuler.js +2 -1
  637. package/internal/BGRuler/BGRuler.js.map +1 -1
  638. package/internal/Calendar/Calendar/Calendar.js +13 -5
  639. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  640. package/internal/Calendar/Calendar.d.ts +6 -0
  641. package/internal/Calendar/CalendarDateShape.d.ts +1 -1
  642. package/internal/Calendar/MonthView/MonthView.js +4 -3
  643. package/internal/Calendar/MonthView/MonthView.js.map +1 -1
  644. package/internal/Calendar/MonthViewModel/MonthViewModel.js +35 -18
  645. package/internal/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  646. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +12 -12
  647. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  648. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  649. package/internal/ComponentTable.d.ts +4 -2
  650. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +34 -19
  651. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  652. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  653. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
  654. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  655. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +21 -17
  656. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  657. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  658. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +35 -35
  659. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  660. package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  661. package/internal/DataTids/DATATIDS.md +12 -0
  662. package/internal/DataTids/DataTids/DataTids.js +69 -0
  663. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  664. package/internal/DataTids/DataTids/package.json +6 -0
  665. package/internal/DataTids/DataTids.d.ts +12 -0
  666. package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
  667. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  668. package/internal/DataTids/DataTids.styles/package.json +6 -0
  669. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  670. package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
  671. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  672. package/internal/DataTids/componentsDataTids/package.json +6 -0
  673. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  674. package/internal/DateSelect/DateSelect/DateSelect.js +29 -18
  675. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  676. package/internal/DateSelect/DateSelect.d.ts +4 -0
  677. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +5 -12
  678. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  679. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +5 -1
  680. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  681. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +15 -7
  682. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  683. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  684. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
  685. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  686. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  687. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -0
  688. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  689. package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
  690. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  691. package/internal/InputLikeText/InputLikeText.d.ts +5 -1
  692. package/internal/InternalMenu/InternalMenu/InternalMenu.js +19 -17
  693. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  694. package/internal/InternalMenu/InternalMenu.d.ts +3 -0
  695. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +1 -1
  696. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  697. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js +14 -0
  698. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  699. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/package.json +6 -0
  700. package/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  701. package/internal/MaskedInput/MaskedInput/MaskedInput.js +11 -3
  702. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  703. package/internal/MaskedInput/MaskedInput.d.ts +3 -0
  704. package/internal/Menu/Menu/Menu.js +13 -14
  705. package/internal/Menu/Menu/Menu.js.map +1 -1
  706. package/internal/Menu/Menu.d.ts +3 -0
  707. package/internal/Menu/Menu.styles/Menu.styles.js +1 -1
  708. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  709. package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
  710. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  711. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  712. package/internal/Popup/Popup/Popup.js +19 -14
  713. package/internal/Popup/Popup/Popup.js.map +1 -1
  714. package/internal/Popup/Popup.d.ts +6 -1
  715. package/internal/Popup/PopupHelper/PopupHelper.js +3 -1
  716. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  717. package/internal/Popup/PopupPin/PopupPin.js +2 -0
  718. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  719. package/internal/PopupMenu/PopupMenu/PopupMenu.js +15 -2
  720. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  721. package/internal/PopupMenu/PopupMenu.d.ts +8 -0
  722. package/internal/PopupMenu/validatePositions/validatePositions.js +6 -6
  723. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  724. package/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  725. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +8 -2
  726. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  727. package/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  728. package/internal/RenderLayer/RenderLayer/RenderLayer.js +5 -1
  729. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  730. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +3 -4
  731. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -1
  732. package/internal/ThemePlayground/CheckboxPlayground/CheckboxPlayground.js.map +1 -1
  733. package/internal/ThemePlayground/Playground/Playground.js +15 -29
  734. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  735. package/internal/ThemePlayground/RadioPlayground/RadioPlayground.js.map +1 -1
  736. package/internal/ThemePlayground/SizesGroup/SizesGroup.js +29 -0
  737. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -0
  738. package/internal/ThemePlayground/SizesGroup/package.json +6 -0
  739. package/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  740. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +14 -2
  741. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  742. package/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  743. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js +5 -1
  744. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  745. package/internal/ThemePlayground/VariableValue/VariableValue.js +16 -5
  746. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  747. package/internal/ThemePlayground/constants/constants.js +2 -0
  748. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  749. package/internal/ThemePlayground/constants.d.ts +3 -1
  750. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +3 -6
  751. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  752. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +4 -6
  753. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  754. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  755. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +12 -6
  756. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
  757. package/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  758. package/internal/icons/16px/index/index.js +28 -20
  759. package/internal/icons/16px/index/index.js.map +1 -1
  760. package/internal/icons/16px/index.d.ts +19 -19
  761. package/internal/icons/20px/svg/svg.js +5 -0
  762. package/internal/icons/20px/svg/svg.js.map +1 -1
  763. package/internal/themes/DefaultTheme/DefaultTheme.js +53 -4
  764. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  765. package/internal/themes/DefaultTheme.d.ts +21 -1
  766. package/internal/themes/NotFlat/NotFlat.js +15 -0
  767. package/internal/themes/NotFlat/NotFlat.js.map +1 -1
  768. package/internal/themes/NotFlat.d.ts +6 -0
  769. package/internal/themes/Theme2022/Theme2022.js +78 -0
  770. package/internal/themes/Theme2022/Theme2022.js.map +1 -0
  771. package/internal/themes/Theme2022/package.json +6 -0
  772. package/internal/themes/Theme2022.d.ts +66 -0
  773. package/internal/themes/Theme2022Dark/Theme2022Dark.js +17 -0
  774. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  775. package/internal/themes/Theme2022Dark/package.json +6 -0
  776. package/internal/themes/Theme2022Dark.d.ts +5 -0
  777. package/lib/ConditionalHandler/ConditionalHandler.js.map +1 -1
  778. package/lib/ConditionalHandler.d.ts +3 -2
  779. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js +3 -0
  780. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -0
  781. package/lib/InstanceWithAnchorElement/package.json +6 -0
  782. package/lib/InstanceWithAnchorElement.d.ts +5 -0
  783. package/lib/ModalStack/ModalStack.js.map +1 -1
  784. package/lib/ModalStack.d.ts +1 -1
  785. package/lib/SSRSafe/SSRSafe.js +7 -0
  786. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  787. package/lib/SSRSafe.d.ts +1 -0
  788. package/lib/animation/index/index.js +1 -1
  789. package/lib/animation/index/index.js.map +1 -1
  790. package/lib/animation/index.d.ts +1 -1
  791. package/lib/date/InternalDate/InternalDate.js +16 -1
  792. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  793. package/lib/date/InternalDateCalculator/InternalDateCalculator.js +14 -2
  794. package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
  795. package/lib/date/InternalDateGetter/InternalDateGetter.js +20 -6
  796. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  797. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +11 -1
  798. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  799. package/lib/date/InternalDateValidator/InternalDateValidator.js +31 -4
  800. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  801. package/lib/dom/getDOMRect/getDOMRect.js +32 -15
  802. package/lib/dom/getDOMRect/getDOMRect.js.map +1 -1
  803. package/lib/dom/getDOMRect.d.ts +5 -2
  804. package/lib/events/keyboard/KeyboardMapKeys/KeyboardMapKeys.js.map +1 -1
  805. package/lib/events/keyboard/KeyboardMapKeys.d.ts +2 -1
  806. package/lib/events/keyboard/extractCode/extractCode.js +5 -5
  807. package/lib/events/keyboard/extractCode/extractCode.js.map +1 -1
  808. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js +21 -0
  809. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js.map +1 -0
  810. package/lib/needsPolyfillPlaceholder/package.json +6 -0
  811. package/lib/needsPolyfillPlaceholder.d.ts +6 -0
  812. package/lib/rootNode/getRootNode/getRootNode.js +14 -10
  813. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  814. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +10 -4
  815. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  816. package/lib/rootNode/rootNodeDecorator.d.ts +3 -6
  817. package/lib/stringUtils/stringUtils.js +4 -1
  818. package/lib/stringUtils/stringUtils.js.map +1 -1
  819. package/lib/styles/ColorFactory/ColorFactory.js +9 -9
  820. package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
  821. package/lib/styles/ColorHelpers/ColorHelpers.js +26 -9
  822. package/lib/styles/ColorHelpers/ColorHelpers.js.map +1 -1
  823. package/lib/styles/ColorHelpers.d.ts +1 -0
  824. package/lib/styles/ColorObject/ColorObject.js +2 -2
  825. package/lib/styles/ColorObject/ColorObject.js.map +1 -1
  826. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js +9 -0
  827. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js.map +1 -0
  828. package/lib/styles/getLabGrotesqueBaselineCompensation/package.json +6 -0
  829. package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  830. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +4 -1
  831. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  832. package/lib/theming/Emotion/Emotion.js +5 -2
  833. package/lib/theming/Emotion/Emotion.js.map +1 -1
  834. package/lib/theming/ThemeFactory/ThemeFactory.js +5 -2
  835. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  836. package/lib/theming/ThemeHelpers/ThemeHelpers.js +5 -1
  837. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  838. package/lib/theming/themes/Theme2022/Theme2022.js +4 -0
  839. package/lib/theming/themes/Theme2022/Theme2022.js.map +1 -0
  840. package/lib/theming/themes/Theme2022/package.json +6 -0
  841. package/lib/theming/themes/Theme2022.d.ts +1 -0
  842. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js +5 -0
  843. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  844. package/lib/theming/themes/Theme2022Dark/package.json +6 -0
  845. package/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  846. package/lib/utils/utils.js +42 -6
  847. package/lib/utils/utils.js.map +1 -1
  848. package/lib/utils.d.ts +15 -0
  849. package/package.json +6 -3
  850. package/cjs/components/Button/Corners.d.ts +0 -6
  851. package/cjs/components/Button/Corners.js +0 -5
  852. package/cjs/components/Button/Corners.js.map +0 -1
  853. package/cjs/lib/polyfillPlaceholder.d.ts +0 -1
  854. package/cjs/lib/polyfillPlaceholder.js +0 -17
  855. package/cjs/lib/polyfillPlaceholder.js.map +0 -1
  856. package/components/Button/Corners/Corners.js +0 -6
  857. package/components/Button/Corners/Corners.js.map +0 -1
  858. package/components/Button/Corners/package.json +0 -6
  859. package/components/Button/Corners.d.ts +0 -6
  860. package/lib/polyfillPlaceholder/package.json +0 -6
  861. package/lib/polyfillPlaceholder/polyfillPlaceholder.js +0 -12
  862. package/lib/polyfillPlaceholder/polyfillPlaceholder.js.map +0 -1
  863. package/lib/polyfillPlaceholder.d.ts +0 -1
@@ -5,6 +5,7 @@ var _dec, _class, _class2, _temp;
5
5
 
6
6
  import React from 'react';
7
7
  import PropTypes from 'prop-types';
8
+ import { isNonNullable } from "../../../lib/utils";
8
9
  import { isKeyEscape } from "../../../lib/events/keyboard/identifiers";
9
10
  import { DatePickerLocaleHelper } from "../../../components/DatePicker/locale";
10
11
  import { locale } from "../../../lib/locale/decorators";
@@ -15,6 +16,7 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
15
16
  import { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from "../../icons/16px";
16
17
  import { isMobile } from "../../../lib/client";
17
18
  import { cx } from "../../../lib/theming/Emotion";
19
+ import { getDOMRect } from "../../../lib/dom/getDOMRect";
18
20
  import { styles } from "../DateSelect.styles";
19
21
  var itemHeight = 24;
20
22
  var visibleYearsCount = 11;
@@ -22,6 +24,23 @@ var itemsToMoveCount = -5;
22
24
  var monthsCount = 12;
23
25
  var defaultMinYear = 1900;
24
26
  var defaultMaxYear = 2100;
27
+
28
+ var calculatePos = function calculatePos(pos, minPos, maxPos) {
29
+ if (maxPos <= pos) {
30
+ return maxPos;
31
+ }
32
+
33
+ if (minPos >= pos) {
34
+ return minPos;
35
+ }
36
+
37
+ return pos;
38
+ };
39
+
40
+ export var DateSelectDataTids = {
41
+ caption: 'DateSelect__caption',
42
+ menuItem: 'DateSelect__menuItem'
43
+ };
25
44
  export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
26
45
  _inheritsLoose(DateSelect, _React$PureComponent);
27
46
 
@@ -94,7 +113,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
94
113
 
95
114
  _this.timeout = setTimeout(function () {
96
115
  return _this.setState({
97
- nodeTop: root.getBoundingClientRect().top
116
+ nodeTop: getDOMRect(root).top
98
117
  });
99
118
  });
100
119
  };
@@ -293,7 +312,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
293
312
  ref: this.refRoot
294
313
  };
295
314
  return /*#__PURE__*/React.createElement("span", rootProps, /*#__PURE__*/React.createElement("div", {
296
- "data-tid": "DateSelect__caption",
315
+ "data-tid": DateSelectDataTids.caption,
297
316
  className: styles.caption(),
298
317
  onClick: this.open
299
318
  }, this.getItem(0), /*#__PURE__*/React.createElement("div", {
@@ -306,15 +325,15 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
306
325
  _proto.disableItems = function disableItems(index) {
307
326
  var value = this.props.value + index;
308
327
 
309
- if (this.props.maxValue != null && this.props.minValue != null) {
328
+ if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {
310
329
  return value > this.props.maxValue || value < this.props.minValue;
311
330
  }
312
331
 
313
- if (this.props.minValue != null) {
332
+ if (isNonNullable(this.props.minValue)) {
314
333
  return value < this.props.minValue;
315
334
  }
316
335
 
317
- if (this.props.maxValue != null) {
336
+ if (isNonNullable(this.props.maxValue)) {
318
337
  return value > this.props.maxValue;
319
338
  }
320
339
  };
@@ -347,7 +366,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
347
366
  onClick: _this3.handleItemClick(i)
348
367
  };
349
368
  items.push( /*#__PURE__*/React.createElement("div", _extends({
350
- "data-tid": "DateSelect__menuItem",
369
+ "data-tid": DateSelectDataTids.menuItem,
351
370
  "data-prop-disabled": disableItems,
352
371
  key: i,
353
372
  className: className,
@@ -444,19 +463,11 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
444
463
 
445
464
  var minPos = this.getMinPos() - top;
446
465
  var maxPos = this.getMaxPos() - top - height + itemHeight;
447
-
448
- if (minPos >= pos) {
449
- pos = minPos;
450
- }
451
-
452
- if (maxPos <= pos) {
453
- pos = maxPos;
454
- }
455
-
456
- var topCapped = pos <= minPos;
457
- var botCapped = pos >= maxPos;
466
+ var calculatedPos = calculatePos(pos, minPos, maxPos);
467
+ var topCapped = calculatedPos <= minPos;
468
+ var botCapped = calculatedPos >= maxPos;
458
469
  this.setState({
459
- pos: pos,
470
+ pos: calculatedPos,
460
471
  top: top,
461
472
  height: height,
462
473
  topCapped: topCapped,
@@ -1 +1 @@
1
- {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","DateSelect","state","botCapped","current","height","opened","pos","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","getBoundingClientRect","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","e","value","onValueChange","handleKey","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","width","rootProps","className","Boolean","style","ref","caption","getItem","arrow","arrowDisabled","renderMenu","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItem","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","onClick","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","menu","menuUp","itemsHolder","menuDown","type","months","minPos","getMinPos","maxPos","getMaxPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func","defaultProps","minMonth","maxMonth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\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 { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } 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\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = '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 = {\n type: 'year',\n minMonth: 0,\n maxMonth: 11,\n width: 'auto',\n };\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 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: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\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 window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.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 <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { width, disabled } = this.props;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid=\"DateSelect__caption\" className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={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()}\n </span>\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 clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: root.getBoundingClientRect().top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (this.props.maxValue != null && this.props.minValue != null) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n if (this.props.minValue != null) {\n return value < this.props.minValue;\n }\n if (this.props.maxValue != null) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): 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\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = 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 <div\n data-tid=\"DateSelect__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 </div>,\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 = 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 return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={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>\n <ArrowChevronUpIcon />\n </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={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>\n <ArrowChevronDownIcon />\n </span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\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 = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.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 = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof 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 (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.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 (e: React.MouseEvent<HTMLElement>) => {\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.props.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.props.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 if (minPos >= pos) {\n pos = minPos;\n }\n if (maxPos <= pos) {\n pos = maxPos;\n }\n const topCapped = pos <= minPos;\n const botCapped = pos >= maxPos;\n\n this.setState({ pos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n if (this.props.type === 'month') {\n return -this.props.value * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n if (this.props.type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (this.props.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","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","DateSelect","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","e","value","onValueChange","handleKey","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","width","rootProps","className","Boolean","style","ref","getItem","arrow","arrowDisabled","renderMenu","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","onClick","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","menu","menuUp","itemsHolder","menuDown","type","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func","defaultProps","minMonth","maxMonth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { 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 { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } 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} as const;\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = '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 = {\n type: 'year',\n minMonth: 0,\n maxMonth: 11,\n width: 'auto',\n };\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 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: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\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 window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.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 <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { width, disabled } = this.props;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={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()}\n </span>\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 clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\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(): 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\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = 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 <div\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 </div>,\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 = 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 return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={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>\n <ArrowChevronUpIcon />\n </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={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>\n <ArrowChevronDownIcon />\n </span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\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 = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.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 = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof 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 (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.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 (e: React.MouseEvent<HTMLElement>) => {\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.props.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.props.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 if (this.props.type === 'month') {\n return -this.props.value * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n if (this.props.type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (this.props.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"]}
@@ -20,6 +20,10 @@ export interface DateSelectState {
20
20
  topCapped: boolean;
21
21
  nodeTop: number;
22
22
  }
23
+ export declare const DateSelectDataTids: {
24
+ readonly caption: "DateSelect__caption";
25
+ readonly menuItem: "DateSelect__menuItem";
26
+ };
23
27
  export declare class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {
24
28
  static __KONTUR_REACT_UI__: string;
25
29
  static propTypes: {
@@ -7,6 +7,7 @@ import { ZIndex } from "../../ZIndex";
7
7
  import { createPropsGetter } from "../../../lib/createPropsGetter";
8
8
  import { cx } from "../../../lib/theming/Emotion";
9
9
  import { isIE11 } from "../../../lib/client";
10
+ import { getDOMRect } from "../../../lib/dom/getDOMRect";
10
11
  import { styles } from "../DropdownContainer.styles";
11
12
  export var DropdownContainer = /*#__PURE__*/function (_React$PureComponent) {
12
13
  _inheritsLoose(DropdownContainer, _React$PureComponent);
@@ -31,7 +32,7 @@ export var DropdownContainer = /*#__PURE__*/function (_React$PureComponent) {
31
32
  var dom = _this.dom;
32
33
 
33
34
  if (target && _this.isElement(target) && dom) {
34
- var targetRect = target.getBoundingClientRect();
35
+ var targetRect = getDOMRect(target);
35
36
  var _document = document,
36
37
  body = _document.body,
37
38
  docEl = _document.documentElement;
@@ -87,21 +88,13 @@ export var DropdownContainer = /*#__PURE__*/function (_React$PureComponent) {
87
88
 
88
89
  var child = _this.dom.children.item(0);
89
90
 
90
- if (!child) {
91
- return 0;
92
- }
93
-
94
- return child.getBoundingClientRect().height;
91
+ return getDOMRect(child).height;
95
92
  };
96
93
 
97
94
  _this.getMinWidth = function () {
98
95
  var target = _this.props.getParent();
99
96
 
100
- if (!target || !_this.isElement(target)) {
101
- return 0;
102
- }
103
-
104
- return target.getBoundingClientRect().width;
97
+ return getDOMRect(target).width;
105
98
  };
106
99
 
107
100
  _this.convertToRelativePosition = function (position) {
@@ -118,7 +111,7 @@ export var DropdownContainer = /*#__PURE__*/function (_React$PureComponent) {
118
111
  right = position.right;
119
112
 
120
113
  if (target && _this.isElement(target)) {
121
- var targetHeight = target.getBoundingClientRect().height;
114
+ var targetHeight = getDOMRect(target).height;
122
115
  return {
123
116
  top: top !== null ? targetHeight + offsetY : null,
124
117
  bottom: bottom !== null ? targetHeight + offsetY : null,
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","styles","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","getBoundingClientRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\n\nimport { styles } from './DropdownContainer.styles';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps {\n align?: 'left' | 'right';\n getParent: () => Nullable<HTMLElement>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.props.align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = target.getBoundingClientRect();\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.props.align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const { offsetY = 0 } = this.props;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n\n top = null;\n bottom = clientHeight + offsetY - scrollY - targetRect.top;\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.props.disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n if (!child) {\n return 0;\n }\n return child.getBoundingClientRect().height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n if (!target || !this.isElement(target)) {\n return 0;\n }\n return target.getBoundingClientRect().width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const { offsetX = 0, offsetY = 0 } = this.props;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = target.getBoundingClientRect().height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
1
+ {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './DropdownContainer.styles';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps {\n align?: 'left' | 'right';\n getParent: () => Nullable<HTMLElement>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.props.align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.props.align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const { offsetY = 0 } = this.props;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n\n top = null;\n bottom = clientHeight + offsetY - scrollY - targetRect.top;\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.props.disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const { offsetX = 0, offsetY = 0 } = this.props;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
@@ -11,7 +11,11 @@ var updateFile = function updateFile(files, fileId, getFileUpdatedProps) {
11
11
  var fileIndex = files.findIndex(function (file) {
12
12
  return file.id === fileId;
13
13
  });
14
- if (fileIndex === -1) return files;
14
+
15
+ if (fileIndex === -1) {
16
+ return files;
17
+ }
18
+
15
19
  var newFiles = [].concat(files);
16
20
  var file = files[fileIndex];
17
21
  var updatedProps = getFileUpdatedProps(file);
@@ -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","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) return files;\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 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 })}\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","FileUploaderControlContext","useControlLocale","FileUploaderFileValidationResult","updateFile","files","fileId","getFileUpdatedProps","fileIndex","findIndex","file","id","newFiles","updatedProps","FileUploaderControlProvider","props","children","onValueChange","onRemove","onAttach","setFiles","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 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 })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n};\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
@@ -12,6 +12,7 @@ import { keyListener } from "../../../../lib/events/keyListener";
12
12
  import { isKeyEnter } from "../../../../lib/events/keyboard/identifiers";
13
13
  import { Hint } from "../../../../components/Hint";
14
14
  import { Tooltip } from "../../../../components/Tooltip";
15
+ import { getDOMRect } from "../../../../lib/dom/getDOMRect";
15
16
  import { jsStyles } from "../FileUploaderFile.styles";
16
17
 
17
18
  var getTruncatedName = function getTruncatedName(fileNameWidth, fileNameElementWidth, name) {
@@ -28,6 +29,13 @@ var getTruncatedName = function getTruncatedName(fileNameWidth, fileNameElementW
28
29
  return truncate(name, maxCharsCountInSpan);
29
30
  };
30
31
 
32
+ export var FileUploaderFileDataTids = {
33
+ file: 'FileUploader__file',
34
+ fileTooltip: 'FileUploader__fileTooltip',
35
+ fileName: 'FileUploader__fileName',
36
+ fileSize: 'FileUploader__fileSize',
37
+ fileIcon: 'FileUploader__fileIcon'
38
+ };
31
39
  export var FileUploaderFile = function FileUploaderFile(props) {
32
40
  var _cx, _cx2;
33
41
 
@@ -65,10 +73,10 @@ export var FileUploaderFile = function FileUploaderFile(props) {
65
73
  }, [size]); // важно запустить после рендера, чтобы успели проставиться рефы
66
74
 
67
75
  useEffect(function () {
68
- var _textHelperRef$curren, _fileNameElementRef$c;
76
+ var _textHelperRef$curren;
69
77
 
70
78
  var fileNameWidth = ((_textHelperRef$curren = textHelperRef.current) == null ? void 0 : _textHelperRef$curren.getTextWidth()) || 0;
71
- var fileNameElementWidth = ((_fileNameElementRef$c = fileNameElementRef.current) == null ? void 0 : _fileNameElementRef$c.getBoundingClientRect().width) || 0;
79
+ var fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;
72
80
  var truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);
73
81
  setTruncatedFileName(truncatedName);
74
82
  }, [name]);
@@ -143,12 +151,12 @@ export var FileUploaderFile = function FileUploaderFile(props) {
143
151
  var iconClassNames = cx(jsStyles.icon(theme), (_cx2 = {}, _cx2[jsStyles.focusedIcon(theme)] = focusedByTab, _cx2));
144
152
  var isTruncated = truncatedFileName !== name;
145
153
  return /*#__PURE__*/React.createElement("div", {
146
- "data-tid": "FileUploader__file",
154
+ "data-tid": FileUploaderFileDataTids.file,
147
155
  className: jsStyles.root(),
148
156
  onMouseEnter: handleMouseEnter,
149
157
  onMouseLeave: handleMouseLeave
150
158
  }, /*#__PURE__*/React.createElement(Tooltip, {
151
- "data-tid": "FileUploader__fileTooltip",
159
+ "data-tid": FileUploaderFileDataTids.fileTooltip,
152
160
  pos: "right middle",
153
161
  render: renderTooltipContent
154
162
  }, /*#__PURE__*/React.createElement("div", {
@@ -160,15 +168,15 @@ export var FileUploaderFile = function FileUploaderFile(props) {
160
168
  maxWidth: '100%',
161
169
  text: isTruncated ? name : null
162
170
  }, /*#__PURE__*/React.createElement("span", {
163
- "data-tid": "FileUploader__fileName",
171
+ "data-tid": FileUploaderFileDataTids.fileName,
164
172
  ref: fileNameElementRef,
165
173
  className: jsStyles.name()
166
174
  }, truncatedFileName)), !!showSize && formattedSize && /*#__PURE__*/React.createElement("span", {
167
- "data-tid": "FileUploader__fileSize",
175
+ "data-tid": FileUploaderFileDataTids.fileSize,
168
176
  className: jsStyles.size()
169
177
  }, formattedSize), /*#__PURE__*/React.createElement("div", {
170
178
  className: iconClassNames,
171
- "data-tid": "FileUploader__fileIcon",
179
+ "data-tid": FileUploaderFileDataTids.fileIcon,
172
180
  tabIndex: 0,
173
181
  onClick: handleRemove,
174
182
  onFocus: handleFocus,
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","FileUploaderFileStatus","formatBytes","TextWidthHelper","truncate","Spinner","FileUploaderControlContext","cx","ThemeContext","DeleteIcon","ErrorIcon","OkIcon","keyListener","isKeyEnter","Hint","Tooltip","jsStyles","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFile","props","file","showSize","error","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","removeFile","theme","formattedSize","current","getTextWidth","getBoundingClientRect","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","icon","deleteIcon","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","isTruncated","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\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';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\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\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize, error } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = 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 } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = fileNameElementRef.current?.getBoundingClientRect().width || 0;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\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 icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n if (isInvalid) {\n return <ErrorIcon />;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n return deleteIcon;\n }\n }, [hovered, status, isInvalid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.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 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 = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid=\"FileUploader__file\"\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid=\"FileUploader__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=\"FileUploader__fileName\" ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid=\"FileUploader__fileSize\" className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid=\"FileUploader__fileIcon\"\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
1
+ {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","FileUploaderFileStatus","formatBytes","TextWidthHelper","truncate","Spinner","FileUploaderControlContext","cx","ThemeContext","DeleteIcon","ErrorIcon","OkIcon","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","jsStyles","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFileDataTids","file","fileTooltip","fileName","fileSize","fileIcon","FileUploaderFile","props","showSize","error","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","removeFile","theme","formattedSize","current","getTextWidth","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","icon","deleteIcon","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","isTruncated","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\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';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\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\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 = (props: FileUploaderFileProps) => {\n const { file, showSize, error } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = 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 } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\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 icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n if (isInvalid) {\n return <ErrorIcon />;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n return deleteIcon;\n }\n }, [hovered, status, isInvalid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.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 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 = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\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={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={jsStyles.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 {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
@@ -5,6 +5,13 @@ interface FileUploaderFileProps {
5
5
  /** Состояние ошибки контрола файла */
6
6
  error?: boolean;
7
7
  }
8
+ export declare const FileUploaderFileDataTids: {
9
+ readonly file: "FileUploader__file";
10
+ readonly fileTooltip: "FileUploader__fileTooltip";
11
+ readonly fileName: "FileUploader__fileName";
12
+ readonly fileSize: "FileUploader__fileSize";
13
+ readonly fileIcon: "FileUploader__fileIcon";
14
+ };
8
15
  export declare const FileUploaderFile: {
9
16
  (props: FileUploaderFileProps): JSX.Element;
10
17
  displayName: string;