@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
@@ -29,7 +29,6 @@ export var Kebab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_
29
29
 
30
30
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
31
31
  _this.state = {
32
- opened: false,
33
32
  focusedByTab: false,
34
33
  anchor: null
35
34
  };
@@ -75,18 +74,7 @@ export var Kebab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_
75
74
 
76
75
  _this.handleChangeMenuState = function (isOpened, restoreFocus) {
77
76
  _this.setState({
78
- opened: isOpened,
79
77
  focusedByTab: !isOpened && restoreFocus
80
- }, function () {
81
- if (_this.props.disabled) {
82
- return;
83
- }
84
-
85
- if (_this.state.opened) {
86
- _this.props.onOpen();
87
- } else {
88
- _this.props.onClose();
89
- }
90
78
  });
91
79
  };
92
80
 
@@ -153,7 +141,9 @@ export var Kebab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_
153
141
  onChangeMenuState: this.handleChangeMenuState,
154
142
  caption: this.renderCaption,
155
143
  disableAnimations: this.props.disableAnimations,
156
- menuMaxHeight: this.props.menuMaxHeight
144
+ menuMaxHeight: this.props.menuMaxHeight,
145
+ onOpen: this.props.onOpen,
146
+ onClose: this.props.onClose
157
147
  }, !disabled && this.props.children));
158
148
  };
159
149
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","styles","Kebab","state","opened","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","focused","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","onOpen","onClose","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","setRootNode","disableAnimations","menuMaxHeight","children","icon","iconsmall","size","iconmedium","iconlarge","Component","__KONTUR_REACT_UI__","propTypes","defaultProps","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps {\n disabled?: boolean;\n /**\n * Функция вызываемая при закрытии выпадашки\n * @default () => undefined\n */\n onClose: () => void;\n /**\n * Функция вызываемая при открытии выпадашки\n * @default () => undefined\n */\n onOpen: () => void;\n size: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n opened: boolean;\n}\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n public state = {\n opened: false,\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled, positions } = this.props;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={this.props.disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState(\n {\n opened: isOpened,\n focusedByTab: !isOpened && restoreFocus,\n },\n () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n this.props.onOpen();\n } else {\n this.props.onClose();\n }\n },\n );\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: this.props.size === 'small',\n [styles.iconmedium()]: this.props.size === 'medium',\n [styles.iconlarge()]: this.props.size === 'large',\n })}\n >\n {this.props.icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
1
+ {"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","styles","Kebab","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","opened","focused","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","setRootNode","disableAnimations","menuMaxHeight","onOpen","onClose","children","icon","iconsmall","size","iconmedium","iconlarge","Component","__KONTUR_REACT_UI__","propTypes","defaultProps","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n disabled?: boolean;\n size: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n public state = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled, positions } = this.props;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={this.props.disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: this.props.size === 'small',\n [styles.iconmedium()]: this.props.size === 'medium',\n [styles.iconlarge()]: this.props.size === 'large',\n })}\n >\n {this.props.icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
@@ -1,19 +1,10 @@
1
1
  import React from 'react';
2
+ import { PopupMenuProps } from '../../internal/PopupMenu';
2
3
  import { Nullable } from '../../typings/utility-types';
3
4
  import { PopupPositionsType } from '../../internal/Popup';
4
5
  import { CommonProps } from '../../internal/CommonWrapper';
5
- export interface KebabProps extends CommonProps {
6
+ export interface KebabProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {
6
7
  disabled?: boolean;
7
- /**
8
- * Функция вызываемая при закрытии выпадашки
9
- * @default () => undefined
10
- */
11
- onClose: () => void;
12
- /**
13
- * Функция вызываемая при открытии выпадашки
14
- * @default () => undefined
15
- */
16
- onOpen: () => void;
17
8
  size: 'small' | 'medium' | 'large';
18
9
  /**
19
10
  * Список позиций доступных для расположения выпадашки.
@@ -37,7 +28,6 @@ export interface KebabProps extends CommonProps {
37
28
  export interface KebabState {
38
29
  anchor: Nullable<HTMLElement>;
39
30
  focusedByTab: boolean;
40
- opened: boolean;
41
31
  }
42
32
  export declare class Kebab extends React.Component<KebabProps, KebabState> {
43
33
  static __KONTUR_REACT_UI__: string;
@@ -51,7 +41,6 @@ export declare class Kebab extends React.Component<KebabProps, KebabState> {
51
41
  icon: JSX.Element;
52
42
  };
53
43
  state: {
54
- opened: boolean;
55
44
  focusedByTab: boolean;
56
45
  anchor: null;
57
46
  };
@@ -15,11 +15,14 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
15
15
  import { cx } from "../../../lib/theming/Emotion";
16
16
  import { rootNode } from "../../../lib/rootNode/rootNodeDecorator";
17
17
  import { styles } from "../Link.styles";
18
- export
18
+ export var LinkDataTids = {
19
+ root: 'Link__root'
20
+ };
19
21
  /**
20
- * Элемент ссылки из HTML.
21
- */
22
- var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
22
+ * Элемент ссылки из HTML.
23
+ */
24
+
25
+ export var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
23
26
  _inheritsLoose(Link, _React$Component);
24
27
 
25
28
  function Link() {
@@ -83,7 +86,9 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
83
86
  onBlur: _this._handleBlur,
84
87
  tabIndex: disabled || loading ? -1 : _this.props.tabIndex
85
88
  };
86
- return /*#__PURE__*/React.createElement("a", _extends({}, rest, linkProps), iconElement, _this.props.children, arrow);
89
+ return /*#__PURE__*/React.createElement("a", _extends({
90
+ "data-tid": LinkDataTids.root
91
+ }, rest, linkProps), iconElement, _this.props.children, arrow);
87
92
  };
88
93
 
89
94
  _this._handleFocus = function (event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","isExternalLink","Spinner","CommonWrapper","cx","rootNode","styles","Link","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","theme","arrow","focused","linkProps","className","root","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","event","requestAnimationFrame","isTabPressed","setState","preventDefault","render","setRootNode","Component","__KONTUR_REACT_UI__","propTypes","bool","string","oneOfType","node","oneOf","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps = {\n href: '',\n use: 'default',\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<LinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n return (\n <a {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLAnchorElement>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { href, onClick, disabled, loading } = this.props;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","keyListener","ThemeContext","isExternalLink","Spinner","CommonWrapper","cx","rootNode","styles","LinkDataTids","root","Link","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","theme","arrow","focused","linkProps","className","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","event","requestAnimationFrame","isTabPressed","setState","preventDefault","render","setRootNode","Component","__KONTUR_REACT_UI__","propTypes","bool","string","oneOfType","node","oneOf","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps = {\n href: '',\n use: 'default',\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<LinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n return (\n <a data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLAnchorElement>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { href, onClick, disabled, loading } = this.props;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n"]}
@@ -44,6 +44,9 @@ export interface LinkProps extends CommonProps, Override<React.AnchorHTMLAttribu
44
44
  export interface LinkState {
45
45
  focusedByTab: boolean;
46
46
  }
47
+ export declare const LinkDataTids: {
48
+ readonly root: "Link__root";
49
+ };
47
50
  /**
48
51
  * Элемент ссылки из HTML.
49
52
  */
@@ -16,12 +16,17 @@ import { isTestEnv } from "../../../lib/currentEnvironment";
16
16
  import { TaskWithDelayAndMinimalDuration } from "../../../lib/taskWithDelayAndMinimalDuration";
17
17
  import { getTabbableElements } from "../../../lib/dom/tabbableHelpers";
18
18
  import { rootNode } from "../../../lib/rootNode";
19
+ import { getDOMRect } from "../../../lib/dom/getDOMRect";
19
20
  import { styles } from "../Loader.styles";
20
- export
21
+ export var LoaderDataTids = {
22
+ veil: 'Loader__Veil',
23
+ spinner: 'Loader__Spinner'
24
+ };
21
25
  /**
22
- * DRAFT - лоадер-контейнер
23
- */
24
- var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
26
+ * DRAFT - лоадер-контейнер
27
+ */
28
+
29
+ export var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
25
30
  _inheritsLoose(Loader, _React$Component);
26
31
 
27
32
  function Loader(props) {
@@ -42,13 +47,13 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
42
47
  return;
43
48
  }
44
49
 
45
- var _this$spinnerContaine = _this.spinnerContainerNode.getBoundingClientRect(),
46
- containerTop = _this$spinnerContaine.top,
47
- containerRight = _this$spinnerContaine.right,
48
- containerBottom = _this$spinnerContaine.bottom,
49
- containerLeft = _this$spinnerContaine.left,
50
- containerHeight = _this$spinnerContaine.height,
51
- containerWidth = _this$spinnerContaine.width;
50
+ var _getDOMRect = getDOMRect(_this.spinnerContainerNode),
51
+ containerTop = _getDOMRect.top,
52
+ containerRight = _getDOMRect.right,
53
+ containerBottom = _getDOMRect.bottom,
54
+ containerLeft = _getDOMRect.left,
55
+ containerHeight = _getDOMRect.height,
56
+ containerWidth = _getDOMRect.width;
52
57
 
53
58
  var windowHeight = window.innerHeight;
54
59
  var windowWidth = window.innerWidth; // Если контейнер не больше высоты и не шире окна,
@@ -84,12 +89,10 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
84
89
  // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера
85
90
 
86
91
 
87
- if (_this.spinnerNode) {
88
- var spinnerHeight = _this.spinnerNode.getBoundingClientRect().height;
92
+ var spinnerHeight = getDOMRect(_this.spinnerNode).height;
89
93
 
90
- if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {
91
- delete spinnerStyle.top;
92
- }
94
+ if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {
95
+ delete spinnerStyle.top;
93
96
  } // ПО ГОРИЗОНТАЛИ
94
97
  // Если левый край контейнера правее левого края окна,
95
98
  // то сдвигаем и лоадер
@@ -278,7 +281,7 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
278
281
  rootNodeRef: this.setRootNode
279
282
  }, this.props), /*#__PURE__*/React.createElement("div", {
280
283
  className: styles.loader(),
281
- "data-tid": isLoaderActive ? 'Loader__Veil' : ''
284
+ "data-tid": isLoaderActive ? LoaderDataTids.veil : ''
282
285
  }, /*#__PURE__*/React.createElement(ZIndex, {
283
286
  priority: 'Loader',
284
287
  applyZIndex: isLoaderActive,
@@ -299,7 +302,7 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
299
302
  _this3 = this;
300
303
 
301
304
  return /*#__PURE__*/React.createElement("span", {
302
- "data-tid": 'Loader__Spinner',
305
+ "data-tid": LoaderDataTids.spinner,
303
306
  className: cx(styles.spinnerContainer(), (_cx2 = {}, _cx2[styles.spinnerContainerSticky()] = this.state.isStickySpinner, _cx2)),
304
307
  style: this.state.spinnerStyle
305
308
  }, /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","styles","Loader","props","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","getBoundingClientRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerNode","spinnerHeight","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","type","caption","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\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 { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = this.spinnerContainerNode.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n if (this.spinnerNode) {\n const spinnerHeight = this.spinnerNode.getBoundingClientRect().height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
1
+ {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","styles","LoaderDataTids","veil","spinner","Loader","props","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","type","caption","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\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 { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
@@ -33,6 +33,10 @@ export interface LoaderState {
33
33
  isLoaderActive: boolean;
34
34
  spinnerStyle?: object;
35
35
  }
36
+ export declare const LoaderDataTids: {
37
+ readonly veil: "Loader__Veil";
38
+ readonly spinner: "Loader__Spinner";
39
+ };
36
40
  /**
37
41
  * DRAFT - лоадер-контейнер
38
42
  */
@@ -5,6 +5,9 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
5
5
  import { CommonWrapper } from "../../../internal/CommonWrapper";
6
6
  import { cx } from "../../../lib/theming/Emotion";
7
7
  import { styles } from "../MenuHeader.styles";
8
+ export var MenuHeaderDataTids = {
9
+ root: 'MenuHeader__root'
10
+ };
8
11
  /**
9
12
  * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
10
13
  *
@@ -23,6 +26,7 @@ function MenuHeader(_ref) {
23
26
 
24
27
  var theme = useContext(ThemeContext);
25
28
  return /*#__PURE__*/React.createElement(CommonWrapper, rest, /*#__PURE__*/React.createElement("div", {
29
+ "data-tid": MenuHeaderDataTids.root,
26
30
  className: cx((_cx = {}, _cx[styles.root(theme)] = true, _cx[styles.withLeftPadding(theme)] = _enableIconPadding, _cx))
27
31
  }, children));
28
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeader","_enableIconPadding","children","rest","theme","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGT,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,IAAnB;AACE;AACE,MAAA,SAAS,EAAEL,EAAE;AACVC,MAAAA,MAAM,CAACM,IAAP,CAAYD,KAAZ,CADU,IACW,IADX;AAEVL,MAAAA,MAAM,CAACO,eAAP,CAAuBF,KAAvB,CAFU,IAEsBH,kBAFtB,OADf;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACO,mBAAX,GAAiC,YAAjC;AACAP,UAAU,CAACQ,eAAX,GAA6B,IAA7B;;AAEA,SAASR,UAAT;;AAEA,OAAO,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAhB,KAAK,CAACiB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeaderDataTids","root","MenuHeader","_enableIconPadding","children","rest","theme","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA,OAAO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B,EAA3B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGX,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBS,IAAnB;AACE;AACE,kBAAUL,kBAAkB,CAACC,IAD/B;AAEE,MAAA,SAAS,EAAEH,EAAE;AACVC,MAAAA,MAAM,CAACE,IAAP,CAAYK,KAAZ,CADU,IACW,IADX;AAEVP,MAAAA,MAAM,CAACQ,eAAP,CAAuBD,KAAvB,CAFU,IAEsBH,kBAFtB,OAFf;;;AAOGC,IAAAA,QAPH,CADF,CADF;;;;AAaD;;AAEDF,UAAU,CAACM,mBAAX,GAAiC,YAAjC;AACAN,UAAU,CAACO,eAAX,GAA6B,IAA7B;;AAEA,SAASP,UAAT;;AAEA,OAAO,IAAMQ,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAjB,KAAK,CAACkB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={MenuHeaderDataTids.root}\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
@@ -4,6 +4,9 @@ export interface MenuHeaderProps extends CommonProps {
4
4
  _enableIconPadding?: boolean;
5
5
  children: ReactNode;
6
6
  }
7
+ export declare const MenuHeaderDataTids: {
8
+ readonly root: "MenuHeader__root";
9
+ };
7
10
  /**
8
11
  * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
9
12
  *
@@ -13,14 +13,18 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
13
13
  import { cx } from "../../../lib/theming/Emotion";
14
14
  import { rootNode } from "../../../lib/rootNode/rootNodeDecorator";
15
15
  import { styles } from "../MenuItem.styles";
16
- export
16
+ export var MenuItemDataTids = {
17
+ root: 'MenuItem__root',
18
+ comment: 'MenuItem__comment'
19
+ };
17
20
  /**
18
- *
19
- * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
20
- *
21
- * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
22
- */
23
- var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
21
+ *
22
+ * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
23
+ *
24
+ * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
25
+ */
26
+
27
+ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
24
28
  _inheritsLoose(MenuItem, _React$Component);
25
29
 
26
30
  function MenuItem() {
@@ -67,14 +71,16 @@ var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
67
71
 
68
72
  var Component = _this.getComponent();
69
73
 
70
- return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
74
+ return /*#__PURE__*/React.createElement(Component, _extends({
75
+ "data-tid": MenuItemDataTids.root
76
+ }, rest, {
71
77
  state: state,
72
78
  onMouseOver: _this.handleMouseEnterFix,
73
79
  onMouseLeave: _this.handleMouseLeave,
74
80
  className: className,
75
81
  tabIndex: -1
76
82
  }), iconElement, content, _this.props.comment && /*#__PURE__*/React.createElement("div", {
77
- "data-tid": "MenuItem__comment",
83
+ "data-tid": MenuItemDataTids.comment,
78
84
  className: cx((_cx2 = {}, _cx2[styles.comment(_this.theme)] = true, _cx2[styles.commentHover(_this.theme)] = hover, _cx2))
79
85
  }, comment));
80
86
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItem","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","theme","className","root","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","mouseEntered","renderMain","props","link","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem"],"mappings":"4YAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAEA,SAASC,UAAT,EAAqBC,kBAArB,QAA+C,iBAA/C;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,sCAAvC;;AAEA,SAASC,MAAT,QAAuB,mBAAvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,OAAO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB;AAE9BC,EAAAA,OAAO,EAAE,mBAFqB,EAAzB;;;AAKP;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAaC,QAAb,GADCL,QACD;;;;;;;;;;;;;;;;;;;;;;;AAuBUM,IAAAA,YAvBV,GAuByB,KAvBzB;;;;;;;;;;;;;;;;;;AAyCUC,IAAAA,UAzCV,GAyCuB,UAACC,KAAD,EAAkD;AACrE;AACEC,MAAAA,IADF;;;;;;;;;;;AAYID,MAAAA,KAZJ,CACEC,IADF,CAEEL,OAFF,GAYII,KAZJ,CAEEJ,OAFF,CAGEM,IAHF,GAYIF,KAZJ,CAGEE,IAHF,CAIEC,KAJF,GAYIH,KAZJ,CAIEG,KAJF,CAKEC,KALF,GAYIJ,KAZJ,CAKEI,KALF,CAMEC,kBANF,GAYIL,KAZJ,CAMEK,kBANF,CAOEC,SAPF,GAYIN,KAZJ,CAOEM,SAPF,CAQEC,YARF,GAYIP,KAZJ,CAQEO,YARF,CASEC,YATF,GAYIR,KAZJ,CASEQ,YATF,CAUEC,QAVF,GAYIT,KAZJ,CAUES,QAVF,CAWKC,IAXL,iCAYIV,KAZJ;;AAcA,UAAMW,KAAK,GAAGP,KAAK,KAAK,OAAV,IAAqB,CAAC,MAAKJ,KAAL,CAAWY,QAA/C;;AAEA,UAAIC,WAAW,GAAG,IAAlB;AACA,UAAIX,IAAJ,EAAU;AACRW,QAAAA,WAAW,gBAAG,6BAAK,SAAS,EAAEpB,MAAM,CAACS,IAAP,CAAY,MAAKY,KAAjB,CAAhB,IAA0CZ,IAA1C,CAAd;AACD;;AAED,UAAMa,SAAS,GAAGxB,EAAE;AACjBE,MAAAA,MAAM,CAACE,IAAP,CAAY,MAAKmB,KAAjB,CADiB,IACS,IADT;AAEjBrB,MAAAA,MAAM,CAACuB,UAAP,CAAkB,MAAKF,KAAvB,CAFiB,IAEeL,QAFf;AAGjBhB,MAAAA,MAAM,CAACU,KAAP,EAHiB,IAGA,CAAC,CAACA,KAHF;AAIjBV,MAAAA,MAAM,CAACkB,KAAP,CAAa,MAAKG,KAAlB,CAJiB,IAIUH,KAJV;AAKjBlB,MAAAA,MAAM,CAACwB,QAAP,CAAgB,MAAKH,KAArB,CALiB,IAKaV,KAAK,KAAK,UALvB;AAMjBX,MAAAA,MAAM,CAACQ,IAAP,CAAY,MAAKa,KAAjB,CANiB,IAMS,CAAC,CAACb,IANX;AAOjBR,MAAAA,MAAM,CAACyB,QAAP,CAAgB,MAAKJ,KAArB,CAPiB,IAOaK,OAAO,CAACN,WAAD,CAAP,IAAwB,CAAC,CAACR,kBAPvC;AAQjBZ,MAAAA,MAAM,CAACmB,QAAP,CAAgB,MAAKE,KAArB,CARiB,IAQa,CAAC,CAAC,MAAKd,KAAL,CAAWY,QAR1B,OAApB;;;AAWA,UAAQQ,QAAR,GAAqB,MAAKpB,KAA1B,CAAQoB,QAAR;;AAEA,UAAIC,OAAO,GAAGD,QAAd;AACA,UAAIjC,UAAU,CAACiC,QAAD,CAAd,EAA0B;AACxBC,QAAAA,OAAO,GAAGD,QAAQ,CAAC,MAAKpB,KAAL,CAAWI,KAAZ,CAAlB;AACD;;AAED,UAAMkB,SAAS,GAAG,MAAKC,YAAL,EAAlB;;AAEA;AACE,4BAAC,SAAD;AACE,sBAAU7B,gBAAgB,CAACC,IAD7B;AAEMe,QAAAA,IAFN;AAGE,UAAA,KAAK,EAAEN,KAHT;AAIE,UAAA,WAAW,EAAE,MAAKoB,mBAJpB;AAKE,UAAA,YAAY,EAAE,MAAKC,gBALrB;AAME,UAAA,SAAS,EAAEV,SANb;AAOE,UAAA,QAAQ,EAAE,CAAC,CAPb;;AASGF,QAAAA,WATH;AAUGQ,QAAAA,OAVH;AAWG,cAAKrB,KAAL,CAAWJ,OAAX;AACC;AACE,sBAAUF,gBAAgB,CAACE,OAD7B;AAEE,UAAA,SAAS,EAAEL,EAAE;AACVE,UAAAA,MAAM,CAACG,OAAP,CAAe,MAAKkB,KAApB,CADU,IACmB,IADnB;AAEVrB,UAAAA,MAAM,CAACiC,YAAP,CAAoB,MAAKZ,KAAzB,CAFU,IAEwBH,KAFxB,QAFf;;;AAOGf,QAAAA,OAPH,CAZJ,CADF;;;;;AAyBD,KA5GH;;;;AAgHU4B,IAAAA,mBAhHV,GAgHgC,UAACG,CAAD,EAAsC;AAClE,UAAI,CAAC,MAAK7B,YAAN,IAAsB,MAAKE,KAAL,CAAWO,YAArC,EAAmD;AACjD,cAAKT,YAAL,GAAoB,IAApB;AACA,cAAKE,KAAL,CAAWO,YAAX,CAAwBoB,CAAxB;AACD;AACF,KArHH;;AAuHUF,IAAAA,gBAvHV,GAuH6B,UAACE,CAAD,EAAsC;AAC/D,YAAK7B,YAAL,GAAoB,KAApB;AACA,UAAI,MAAKE,KAAL,CAAWQ,YAAf,EAA6B;AAC3B,cAAKR,KAAL,CAAWQ,YAAX,CAAwBmB,CAAxB;AACD;AACF,KA5HH;;AA8HUJ,IAAAA,YA9HV,GA8HyB,YAAM;AAC3B,wBAAsC,MAAKvB,KAA3C,CAAQY,QAAR,eAAQA,QAAR,CAAkBN,SAAlB,eAAkBA,SAAlB,CAA6BsB,IAA7B,eAA6BA,IAA7B;;AAEA,UAAIhB,QAAJ,EAAc;AACZ,eAAO,QAAP;AACD;;AAED,UAAIN,SAAJ,EAAe;AACb,eAAOA,SAAP;AACD;;AAED,UAAIsB,IAAJ,EAAU;AACR,eAAO,GAAP;AACD;;AAED,aAAO,QAAP;AACD,KA9IH,sDA0BSC,MA1BT,GA0BE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACf,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,MAAI,CAACgB,WAAjC,IAAkD,MAAI,CAAC9B,KAAvD,GACG,MAAI,CAACD,UADR,CADF,CAKD,CARH,CADF,CAYD,CAvCH,mBAA8Bd,KAAK,CAACqC,SAApC,WACgBS,mBADhB,GACsC,UADtC,UAEgBC,aAFhB,GAEgC,IAFhC,UAIgBC,SAJhB,GAI4B,EACxBrC,OAAO,EAAEV,SAAS,CAACgD,IADK,EAGxBtB,QAAQ,EAAE1B,SAAS,CAACiD,IAHI,EAKxBP,IAAI,EAAE1C,SAAS,CAACkD,MALQ,EAOxBlC,IAAI,EAAEhB,SAAS,CAACmD,SAAV,CAAoB,CAACnD,SAAS,CAACkD,MAAX,EAAmBlD,SAAS,CAACgD,IAA7B,CAApB,CAPkB,EASxB/B,KAAK,EAAEjB,SAAS,CAACiD,IATO,EAWxB/B,KAAK,EAAElB,SAAS,CAACkD,MAXO,EAaxBE,MAAM,EAAEpD,SAAS,CAACkD,MAbM,EAexBG,OAAO,EAAErD,SAAS,CAACsD,IAfK,EAJ5B;;;AAiJA,OAAO,IAAMC,UAAU,GAAGrD,kBAAkB,CAAC,UAAD,CAArC","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n data-tid={MenuItemDataTids.root}\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}