@skbkontur/react-ui 5.2.1 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +7 -7
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +6 -23
  4. package/cjs/components/Autocomplete/Autocomplete.js +49 -46
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +2 -0
  7. package/cjs/components/Button/Button.js +29 -1
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Button/Button.styles.d.ts +6 -0
  10. package/cjs/components/Button/Button.styles.js +107 -75
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Calendar/Calendar.d.ts +2 -0
  13. package/cjs/components/Calendar/Calendar.js +1 -0
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Center/Center.d.ts +2 -0
  16. package/cjs/components/Center/Center.js +1 -0
  17. package/cjs/components/Center/Center.js.map +1 -1
  18. package/cjs/components/Checkbox/Checkbox.d.ts +2 -12
  19. package/cjs/components/Checkbox/Checkbox.js +2 -14
  20. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  21. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  22. package/cjs/components/ComboBox/ComboBox.js +1 -0
  23. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  24. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  25. package/cjs/components/CurrencyInput/CurrencyInput.js +5 -28
  26. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  27. package/cjs/components/CurrencyInput/constants.js +1 -2
  28. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
  30. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  31. package/cjs/components/DateInput/DateInput.d.ts +2 -0
  32. package/cjs/components/DateInput/DateInput.js +1 -0
  33. package/cjs/components/DateInput/DateInput.js.map +1 -1
  34. package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
  35. package/cjs/components/DatePicker/DatePicker.js +6 -60
  36. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  37. package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
  38. package/cjs/components/Dropdown/Dropdown.js +2 -82
  39. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  40. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  41. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
  42. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  43. package/cjs/components/FxInput/FxInput.d.ts +2 -5
  44. package/cjs/components/FxInput/FxInput.js +2 -7
  45. package/cjs/components/FxInput/FxInput.js.map +1 -1
  46. package/cjs/components/Gapped/Gapped.d.ts +2 -15
  47. package/cjs/components/Gapped/Gapped.js +1 -24
  48. package/cjs/components/Gapped/Gapped.js.map +1 -1
  49. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  50. package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
  51. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  52. package/cjs/components/Group/Group.d.ts +5 -4
  53. package/cjs/components/Group/Group.js +91 -40
  54. package/cjs/components/Group/Group.js.map +1 -1
  55. package/cjs/components/Group/Group.styles.d.ts +1 -0
  56. package/cjs/components/Group/Group.styles.js +12 -6
  57. package/cjs/components/Group/Group.styles.js.map +1 -1
  58. package/cjs/components/Hint/Hint.d.ts +2 -0
  59. package/cjs/components/Hint/Hint.js +1 -0
  60. package/cjs/components/Hint/Hint.js.map +1 -1
  61. package/cjs/components/Input/Input.d.ts +2 -0
  62. package/cjs/components/Input/Input.js +1 -0
  63. package/cjs/components/Input/Input.js.map +1 -1
  64. package/cjs/components/Kebab/Kebab.d.ts +2 -1
  65. package/cjs/components/Kebab/Kebab.js +2 -26
  66. package/cjs/components/Kebab/Kebab.js.map +1 -1
  67. package/cjs/components/Link/Link.d.ts +2 -0
  68. package/cjs/components/Link/Link.js +1 -0
  69. package/cjs/components/Link/Link.js.map +1 -1
  70. package/cjs/components/Loader/Loader.d.ts +6 -36
  71. package/cjs/components/Loader/Loader.js +3 -57
  72. package/cjs/components/Loader/Loader.js.map +1 -1
  73. package/cjs/components/MaskedInput/MaskedInput.d.ts +1 -0
  74. package/cjs/components/MaskedInput/MaskedInput.js +17 -1
  75. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  76. package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
  77. package/cjs/components/MenuItem/MenuItem.js +2 -22
  78. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  79. package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
  80. package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
  81. package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
  82. package/cjs/components/MiniModal/MiniModalBody.js +17 -2
  83. package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
  84. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  85. package/cjs/components/Modal/Modal.styles.js +36 -28
  86. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  87. package/cjs/components/Modal/ModalBody.d.ts +2 -0
  88. package/cjs/components/Modal/ModalBody.js +1 -0
  89. package/cjs/components/Modal/ModalBody.js.map +1 -1
  90. package/cjs/components/Modal/ModalHeader.d.ts +5 -0
  91. package/cjs/components/Modal/ModalHeader.js +8 -1
  92. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  93. package/cjs/components/Paging/DotsIcon.d.ts +3 -0
  94. package/cjs/components/Paging/DotsIcon.js +13 -0
  95. package/cjs/components/Paging/DotsIcon.js.map +1 -0
  96. package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
  97. package/cjs/components/Paging/ForwardIcon.js +13 -1
  98. package/cjs/components/Paging/ForwardIcon.js.map +1 -1
  99. package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
  100. package/cjs/components/Paging/NavigationHelper.js +8 -6
  101. package/cjs/components/Paging/NavigationHelper.js.map +1 -1
  102. package/cjs/components/Paging/Paging.d.ts +13 -2
  103. package/cjs/components/Paging/Paging.js +120 -50
  104. package/cjs/components/Paging/Paging.js.map +1 -1
  105. package/cjs/components/Paging/Paging.styles.d.ts +24 -1
  106. package/cjs/components/Paging/Paging.styles.js +151 -22
  107. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  108. package/cjs/components/Paging/PagingHelper.d.ts +1 -1
  109. package/cjs/components/Paging/PagingHelper.js +18 -11
  110. package/cjs/components/Paging/PagingHelper.js.map +1 -1
  111. package/cjs/components/PasswordInput/PasswordInput.d.ts +2 -7
  112. package/cjs/components/PasswordInput/PasswordInput.js +2 -11
  113. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  114. package/cjs/components/Radio/Radio.d.ts +2 -0
  115. package/cjs/components/Radio/Radio.js +1 -0
  116. package/cjs/components/Radio/Radio.js.map +1 -1
  117. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -0
  118. package/cjs/components/RadioGroup/RadioGroup.js +1 -0
  119. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  120. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  121. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
  122. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  123. package/cjs/components/Select/Select.d.ts +2 -0
  124. package/cjs/components/Select/Select.js +1 -0
  125. package/cjs/components/Select/Select.js.map +1 -1
  126. package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
  127. package/cjs/components/SidePage/SidePage.styles.js +52 -38
  128. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  129. package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
  130. package/cjs/components/SidePage/SidePageBody.js +1 -0
  131. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  132. package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
  133. package/cjs/components/SidePage/SidePageContainer.js +1 -0
  134. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
  136. package/cjs/components/SidePage/SidePageFooter.js +1 -0
  137. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  138. package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
  139. package/cjs/components/SidePage/SidePageHeader.js +60 -19
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.d.ts +2 -18
  142. package/cjs/components/Spinner/Spinner.js +2 -32
  143. package/cjs/components/Spinner/Spinner.js.map +1 -1
  144. package/cjs/components/Sticky/Sticky.d.ts +2 -13
  145. package/cjs/components/Sticky/Sticky.js +2 -22
  146. package/cjs/components/Sticky/Sticky.js.map +1 -1
  147. package/cjs/components/Switcher/Switcher.d.ts +6 -21
  148. package/cjs/components/Switcher/Switcher.js +11 -20
  149. package/cjs/components/Switcher/Switcher.js.map +1 -1
  150. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
  151. package/cjs/components/Switcher/Switcher.styles.js +17 -9
  152. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  153. package/cjs/components/Tabs/Indicator.d.ts +2 -0
  154. package/cjs/components/Tabs/Indicator.js +1 -0
  155. package/cjs/components/Tabs/Indicator.js.map +1 -1
  156. package/cjs/components/Tabs/Tab.d.ts +2 -0
  157. package/cjs/components/Tabs/Tab.js +1 -0
  158. package/cjs/components/Tabs/Tab.js.map +1 -1
  159. package/cjs/components/Tabs/Tabs.d.ts +2 -0
  160. package/cjs/components/Tabs/Tabs.js +1 -0
  161. package/cjs/components/Tabs/Tabs.js.map +1 -1
  162. package/cjs/components/Textarea/Textarea.d.ts +2 -44
  163. package/cjs/components/Textarea/Textarea.js +2 -56
  164. package/cjs/components/Textarea/Textarea.js.map +1 -1
  165. package/cjs/components/Textarea/TextareaCounter.js +2 -13
  166. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  167. package/cjs/components/Toast/Toast.d.ts +2 -0
  168. package/cjs/components/Toast/Toast.js +1 -0
  169. package/cjs/components/Toast/Toast.js.map +1 -1
  170. package/cjs/components/Toast/ToastView.d.ts +2 -14
  171. package/cjs/components/Toast/ToastView.js +3 -22
  172. package/cjs/components/Toast/ToastView.js.map +1 -1
  173. package/cjs/components/Toggle/Toggle.d.ts +2 -10
  174. package/cjs/components/Toggle/Toggle.js +1 -11
  175. package/cjs/components/Toggle/Toggle.js.map +1 -1
  176. package/cjs/components/Token/Token.d.ts +2 -0
  177. package/cjs/components/Token/Token.js +1 -0
  178. package/cjs/components/Token/Token.js.map +1 -1
  179. package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
  180. package/cjs/components/TokenInput/TokenInput.js +1 -0
  181. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  182. package/cjs/components/Tooltip/Tooltip.d.ts +14 -9
  183. package/cjs/components/Tooltip/Tooltip.js +95 -13
  184. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  185. package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
  186. package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
  187. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  188. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  189. package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
  190. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  191. package/cjs/index.d.ts +1 -0
  192. package/cjs/index.js.map +1 -1
  193. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  194. package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
  195. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  196. package/cjs/internal/ComponentTable.js +2 -3
  197. package/cjs/internal/ComponentTable.js.map +1 -1
  198. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  199. package/cjs/internal/CustomComboBox/ComboBoxView.js +1 -0
  200. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  201. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  202. package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -0
  203. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  204. package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
  205. package/cjs/internal/DateSelect/DateSelect.js +1 -18
  206. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  207. package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
  208. package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
  209. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  210. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
  211. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  212. package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -0
  213. package/cjs/internal/InputLikeText/InputLikeText.js +1 -0
  214. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  215. package/cjs/internal/Menu/Menu.d.ts +2 -0
  216. package/cjs/internal/Menu/Menu.js +1 -0
  217. package/cjs/internal/Menu/Menu.js.map +1 -1
  218. package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
  219. package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  221. package/cjs/internal/Popup/Popup.d.ts +41 -59
  222. package/cjs/internal/Popup/Popup.js +36 -79
  223. package/cjs/internal/Popup/Popup.js.map +1 -1
  224. package/cjs/internal/Popup/PopupPin.d.ts +23 -33
  225. package/cjs/internal/Popup/PopupPin.js +2 -35
  226. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  227. package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
  228. package/cjs/internal/Popup/PopupPinNew.js +180 -0
  229. package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
  230. package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  231. package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
  232. package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
  233. package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
  234. package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
  235. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  236. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  237. package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
  238. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  239. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
  240. package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
  241. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  242. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  243. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  244. package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
  245. package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
  246. package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
  247. package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
  248. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  249. package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
  250. package/cjs/internal/ZIndex/ZIndex.js +5 -1
  251. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  252. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  253. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
  254. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
  255. package/cjs/internal/themes/BasicTheme.d.ts +112 -20
  256. package/cjs/internal/themes/BasicTheme.js +149 -18
  257. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  258. package/cjs/internal/themes/DarkTheme5_2.js +1 -1
  259. package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
  260. package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
  261. package/cjs/internal/themes/DarkTheme5_3.js +13 -0
  262. package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
  263. package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
  264. package/cjs/internal/themes/LightTheme5_3.js +13 -0
  265. package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
  266. package/cjs/lib/delay.mts +3 -0
  267. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  268. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  269. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +11 -1
  270. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  271. package/cjs/lib/forwardRefAndName.d.ts +1 -1
  272. package/cjs/lib/forwardRefAndName.js +0 -1
  273. package/cjs/lib/forwardRefAndName.js.map +1 -1
  274. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  275. package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
  276. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  277. package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
  278. package/cjs/lib/theming/ThemeVersions.js.map +1 -1
  279. package/cjs/lib/theming/themes/DarkTheme.d.ts +1 -0
  280. package/cjs/lib/theming/themes/DarkTheme.js +4 -2
  281. package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
  282. package/cjs/lib/theming/themes/LightTheme.d.ts +1 -0
  283. package/cjs/lib/theming/themes/LightTheme.js +4 -2
  284. package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
  285. package/cjs/lib/utils.d.ts +4 -0
  286. package/cjs/lib/utils.js +5 -1
  287. package/cjs/lib/utils.js.map +1 -1
  288. package/components/Autocomplete/Autocomplete/Autocomplete.js +49 -45
  289. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  290. package/components/Autocomplete/Autocomplete.d.ts +6 -23
  291. package/components/Button/Button/Button.js +26 -5
  292. package/components/Button/Button/Button.js.map +1 -1
  293. package/components/Button/Button.d.ts +2 -0
  294. package/components/Button/Button.styles/Button.styles.js +78 -60
  295. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  296. package/components/Button/Button.styles.d.ts +6 -0
  297. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  298. package/components/Calendar/Calendar.d.ts +2 -0
  299. package/components/Center/Center/Center.js.map +1 -1
  300. package/components/Center/Center.d.ts +2 -0
  301. package/components/Checkbox/Checkbox/Checkbox.js +0 -11
  302. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  303. package/components/Checkbox/Checkbox.d.ts +2 -12
  304. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  305. package/components/ComboBox/ComboBox.d.ts +2 -0
  306. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +12 -36
  307. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  308. package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  309. package/components/CurrencyInput/constants/constants.js +0 -1
  310. package/components/CurrencyInput/constants/constants.js.map +1 -1
  311. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
  312. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  313. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  314. package/components/DateInput/DateInput.d.ts +2 -0
  315. package/components/DatePicker/DatePicker/DatePicker.js +1 -32
  316. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  317. package/components/DatePicker/DatePicker.d.ts +6 -33
  318. package/components/Dropdown/Dropdown/Dropdown.js +1 -47
  319. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  320. package/components/Dropdown/Dropdown.d.ts +2 -47
  321. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  322. package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  323. package/components/FxInput/FxInput/FxInput.js +1 -5
  324. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  325. package/components/FxInput/FxInput.d.ts +2 -5
  326. package/components/Gapped/Gapped/Gapped.js +1 -15
  327. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  328. package/components/Gapped/Gapped.d.ts +2 -15
  329. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  330. package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  331. package/components/Group/Group/Group.js +64 -28
  332. package/components/Group/Group/Group.js.map +1 -1
  333. package/components/Group/Group.d.ts +5 -4
  334. package/components/Group/Group.styles/Group.styles.js +9 -6
  335. package/components/Group/Group.styles/Group.styles.js.map +1 -1
  336. package/components/Group/Group.styles.d.ts +1 -0
  337. package/components/Hint/Hint/Hint.js.map +1 -1
  338. package/components/Hint/Hint.d.ts +2 -0
  339. package/components/Input/Input/Input.js.map +1 -1
  340. package/components/Input/Input.d.ts +2 -0
  341. package/components/Kebab/Kebab/Kebab.js +2 -20
  342. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  343. package/components/Kebab/Kebab.d.ts +2 -1
  344. package/components/Link/Link/Link.js.map +1 -1
  345. package/components/Link/Link.d.ts +2 -0
  346. package/components/Loader/Loader/Loader.js +0 -33
  347. package/components/Loader/Loader/Loader.js.map +1 -1
  348. package/components/Loader/Loader.d.ts +6 -36
  349. package/components/MaskedInput/MaskedInput/MaskedInput.js +14 -0
  350. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  351. package/components/MaskedInput/MaskedInput.d.ts +1 -0
  352. package/components/MenuItem/MenuItem/MenuItem.js +1 -12
  353. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  354. package/components/MenuItem/MenuItem.d.ts +2 -12
  355. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
  356. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
  357. package/components/MiniModal/MiniModal.styles.d.ts +1 -0
  358. package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
  359. package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
  360. package/components/Modal/Modal.styles/Modal.styles.js +31 -28
  361. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  362. package/components/Modal/Modal.styles.d.ts +1 -0
  363. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  364. package/components/Modal/ModalBody.d.ts +2 -0
  365. package/components/Modal/ModalHeader/ModalHeader.js +3 -1
  366. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  367. package/components/Modal/ModalHeader.d.ts +5 -0
  368. package/components/Paging/DotsIcon/DotsIcon.js +14 -0
  369. package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
  370. package/components/Paging/DotsIcon/package.json +6 -0
  371. package/components/Paging/DotsIcon.d.ts +3 -0
  372. package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
  373. package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
  374. package/components/Paging/ForwardIcon.d.ts +3 -0
  375. package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
  376. package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
  377. package/components/Paging/NavigationHelper.d.ts +3 -2
  378. package/components/Paging/Paging/Paging.js +96 -47
  379. package/components/Paging/Paging/Paging.js.map +1 -1
  380. package/components/Paging/Paging.d.ts +13 -2
  381. package/components/Paging/Paging.styles/Paging.styles.js +77 -16
  382. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  383. package/components/Paging/Paging.styles.d.ts +24 -1
  384. package/components/Paging/PagingHelper/PagingHelper.js +16 -8
  385. package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
  386. package/components/Paging/PagingHelper.d.ts +1 -1
  387. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -7
  388. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  389. package/components/PasswordInput/PasswordInput.d.ts +2 -7
  390. package/components/Radio/Radio/Radio.js.map +1 -1
  391. package/components/Radio/Radio.d.ts +2 -0
  392. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  393. package/components/RadioGroup/RadioGroup.d.ts +2 -0
  394. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
  395. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  396. package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  397. package/components/Select/Select/Select.js.map +1 -1
  398. package/components/Select/Select.d.ts +2 -0
  399. package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
  400. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  401. package/components/SidePage/SidePage.styles.d.ts +3 -1
  402. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  403. package/components/SidePage/SidePageBody.d.ts +2 -0
  404. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  405. package/components/SidePage/SidePageContainer.d.ts +2 -0
  406. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  407. package/components/SidePage/SidePageFooter.d.ts +2 -0
  408. package/components/SidePage/SidePageHeader/SidePageHeader.js +61 -39
  409. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  410. package/components/SidePage/SidePageHeader.d.ts +12 -2
  411. package/components/Spinner/Spinner/Spinner.js +1 -18
  412. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  413. package/components/Spinner/Spinner.d.ts +2 -18
  414. package/components/Sticky/Sticky/Sticky.js +1 -13
  415. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  416. package/components/Sticky/Sticky.d.ts +2 -13
  417. package/components/Switcher/Switcher/Switcher.js +19 -16
  418. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  419. package/components/Switcher/Switcher.d.ts +6 -21
  420. package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
  421. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  422. package/components/Switcher/Switcher.styles.d.ts +1 -0
  423. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  424. package/components/Tabs/Indicator.d.ts +2 -0
  425. package/components/Tabs/Tab/Tab.js.map +1 -1
  426. package/components/Tabs/Tab.d.ts +2 -0
  427. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  428. package/components/Tabs/Tabs.d.ts +2 -0
  429. package/components/Textarea/Textarea/Textarea.js +1 -44
  430. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  431. package/components/Textarea/Textarea.d.ts +2 -44
  432. package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
  433. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  434. package/components/Toast/Toast/Toast.js.map +1 -1
  435. package/components/Toast/Toast.d.ts +2 -0
  436. package/components/Toast/ToastView/ToastView.js +3 -17
  437. package/components/Toast/ToastView/ToastView.js.map +1 -1
  438. package/components/Toast/ToastView.d.ts +2 -14
  439. package/components/Toggle/Toggle/Toggle.js +1 -10
  440. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  441. package/components/Toggle/Toggle.d.ts +2 -10
  442. package/components/Token/Token/Token.js.map +1 -1
  443. package/components/Token/Token.d.ts +2 -0
  444. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  445. package/components/TokenInput/TokenInput.d.ts +2 -0
  446. package/components/Tooltip/Tooltip/Tooltip.js +67 -20
  447. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  448. package/components/Tooltip/Tooltip.d.ts +14 -9
  449. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
  450. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  451. package/components/Tooltip/Tooltip.styles.d.ts +7 -1
  452. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  453. package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  454. package/index.d.ts +1 -0
  455. package/index.js +1 -0
  456. package/index.js.map +1 -1
  457. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  458. package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  459. package/internal/ComponentTable/ComponentTable.js +0 -2
  460. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  461. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  462. package/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  463. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  464. package/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  465. package/internal/DateSelect/DateSelect/DateSelect.js +1 -10
  466. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  467. package/internal/DateSelect/DateSelect.d.ts +0 -10
  468. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  469. package/internal/FocusTrap/FocusTrap.d.ts +2 -0
  470. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  471. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  472. package/internal/InputLikeText/InputLikeText.d.ts +2 -0
  473. package/internal/Menu/Menu/Menu.js.map +1 -1
  474. package/internal/Menu/Menu.d.ts +2 -0
  475. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  476. package/internal/MobilePopup/MobilePopup.d.ts +2 -0
  477. package/internal/Popup/Popup/Popup.js +14 -64
  478. package/internal/Popup/Popup/Popup.js.map +1 -1
  479. package/internal/Popup/Popup.d.ts +41 -59
  480. package/internal/Popup/PopupPin/PopupPin.js +1 -34
  481. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  482. package/internal/Popup/PopupPin.d.ts +23 -33
  483. package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
  484. package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
  485. package/internal/Popup/PopupPinNew/package.json +6 -0
  486. package/internal/Popup/PopupPinNew.d.ts +31 -0
  487. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
  488. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
  489. package/internal/Popup/PopupPinNew.styles/package.json +6 -0
  490. package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  491. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  492. package/internal/PopupMenu/PopupMenu.d.ts +2 -0
  493. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
  494. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  495. package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  496. package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
  497. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  498. package/internal/RenderLayer/RenderLayer.d.ts +2 -3
  499. package/internal/ThemePlayground/Playground/Playground.js +4 -3
  500. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  501. package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
  502. package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
  503. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
  504. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
  505. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  506. package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
  507. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  508. package/internal/ZIndex/ZIndex.d.ts +3 -3
  509. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
  510. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
  511. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
  512. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  513. package/internal/themes/BasicTheme/BasicTheme.js +170 -26
  514. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  515. package/internal/themes/BasicTheme.d.ts +112 -20
  516. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
  517. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
  518. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
  519. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
  520. package/internal/themes/DarkTheme5_3/package.json +6 -0
  521. package/internal/themes/DarkTheme5_3.d.ts +1 -0
  522. package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
  523. package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
  524. package/internal/themes/LightTheme5_3/package.json +6 -0
  525. package/internal/themes/LightTheme5_3.d.ts +1 -0
  526. package/lib/delay.d.mts +1 -0
  527. package/lib/delay.mts +3 -0
  528. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  529. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +6 -1
  530. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  531. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  532. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
  533. package/lib/forwardRefAndName.d.ts +1 -1
  534. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  535. package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  536. package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
  537. package/lib/theming/ThemeVersions.d.ts +1 -1
  538. package/lib/theming/themes/DarkTheme/DarkTheme.js +3 -1
  539. package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
  540. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  541. package/lib/theming/themes/LightTheme/LightTheme.js +3 -1
  542. package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
  543. package/lib/theming/themes/LightTheme.d.ts +1 -0
  544. package/lib/utils/utils.js +2 -0
  545. package/lib/utils/utils.js.map +1 -1
  546. package/lib/utils.d.ts +4 -0
  547. package/package.json +10 -13
  548. package/cjs/lib/SSRSafe.d.ts +0 -2
  549. package/cjs/lib/SSRSafe.js +0 -5
  550. package/cjs/lib/SSRSafe.js.map +0 -1
  551. package/lib/SSRSafe/SSRSafe.js +0 -4
  552. package/lib/SSRSafe/SSRSafe.js.map +0 -1
  553. package/lib/SSRSafe/package.json +0 -6
  554. package/lib/SSRSafe.d.ts +0 -2
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  var _class, _Switcher;
4
4
  import React from 'react';
5
- import PropTypes from 'prop-types';
6
5
  import { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from "../../../lib/events/keyboard/identifiers";
7
6
  import { getButtonCorners, Group } from "../../Group";
8
7
  import { Button } from "../../Button";
@@ -11,6 +10,7 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
11
10
  import { cx } from "../../../lib/theming/Emotion";
12
11
  import { rootNode } from "../../../lib/rootNode";
13
12
  import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
13
+ import { ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
14
14
  import { styles } from "../Switcher.styles";
15
15
  import { getSwitcherTheme } from "../switcherTheme";
16
16
  import { mod } from "../helpers";
@@ -121,6 +121,7 @@ export var Switcher = rootNode(_class = (_Switcher = /*#__PURE__*/function (_Rea
121
121
  items = _this$props2.items,
122
122
  value = _this$props2.value,
123
123
  size = _this$props2.size,
124
+ width = _this$props2.width,
124
125
  disabled = _this$props2.disabled,
125
126
  role = _this$props2.role,
126
127
  renderItem = _this$props2.renderItem;
@@ -145,6 +146,9 @@ export var Switcher = rootNode(_class = (_Switcher = /*#__PURE__*/function (_Rea
145
146
  corners: getButtonCorners(i === 0, i === items.length - 1)
146
147
  };
147
148
  var buttonProps = _extends({}, commonButtonProps, customButtonProps);
149
+ if (!buttonProps.width && width) {
150
+ buttonProps.width = '100%';
151
+ }
148
152
  var renderDefault = function renderDefault() {
149
153
  return _this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);
150
154
  };
@@ -184,6 +188,7 @@ export var Switcher = rootNode(_class = (_Switcher = /*#__PURE__*/function (_Rea
184
188
  });
185
189
  };
186
190
  _proto.renderMain = function renderMain() {
191
+ var _cx, _cx2;
187
192
  var inputProps = {
188
193
  type: 'checkbox',
189
194
  onKeyDown: this.handleKey,
@@ -193,15 +198,24 @@ export var Switcher = rootNode(_class = (_Switcher = /*#__PURE__*/function (_Rea
193
198
  };
194
199
  var isThemeGTE_5_1 = isThemeGTE(this.theme, '5.1');
195
200
  var isTheme_5_0 = !isThemeGTE_5_1;
196
- var items = /*#__PURE__*/React.createElement(Group, null, this._renderItems());
201
+ var items = /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Provider, {
202
+ value: {
203
+ groupAddHintAndTooltipSupport: true
204
+ }
205
+ }, /*#__PURE__*/React.createElement(Group, {
206
+ width: '100%'
207
+ }, this._renderItems()));
197
208
  var captionClassName = cx(styles.caption(this.theme), this.getLabelSizeClassName());
198
- var wrapperClassName = cx(styles.wrap(), isThemeGTE_5_1 && this.props.error && styles.error5_1(this.theme));
199
- var errorClassName = cx(isTheme_5_0 && this.props.error && styles.error(this.theme));
209
+ var wrapperClassName = cx(styles.wrap(), (_cx = {}, _cx[styles.error5_1(this.theme)] = isThemeGTE_5_1 && this.props.error, _cx[styles.wrapCustomWidth()] = this.props.width !== undefined, _cx));
210
+ var errorClassName = cx((_cx2 = {}, _cx2[styles.error(this.theme)] = isTheme_5_0 && this.props.error, _cx2));
200
211
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
201
212
  rootNodeRef: this.setRootNode
202
213
  }, this.props), /*#__PURE__*/React.createElement("div", {
203
214
  "data-tid": SwitcherDataTids.root,
204
- className: styles.root()
215
+ className: styles.root(),
216
+ style: {
217
+ width: this.props.width
218
+ }
205
219
  }, this.props.caption ? /*#__PURE__*/React.createElement("div", {
206
220
  className: captionClassName
207
221
  }, this.props.caption) : null, /*#__PURE__*/React.createElement("div", {
@@ -213,15 +227,4 @@ export var Switcher = rootNode(_class = (_Switcher = /*#__PURE__*/function (_Rea
213
227
  return Switcher;
214
228
  }(React.Component), _Switcher.__KONTUR_REACT_UI__ = 'Switcher', _Switcher.displayName = 'Switcher', _Switcher.defaultProps = {
215
229
  role: 'switch'
216
- }, _Switcher.propTypes = {
217
- error: PropTypes.bool,
218
- disabled: PropTypes.bool,
219
- items: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.shape({
220
- label: PropTypes.string,
221
- value: PropTypes.string
222
- }))]).isRequired,
223
- caption: PropTypes.string,
224
- value: PropTypes.string,
225
- onValueChange: PropTypes.func,
226
- renderItem: PropTypes.func
227
230
  }, _Switcher)) || _class;
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","isKeyArrowHorizontal","isKeyArrowLeft","isKeyEnter","getButtonCorners","Group","Button","ThemeContext","CommonWrapper","cx","rootNode","isThemeGTE","styles","getSwitcherTheme","mod","SwitcherDataTids","root","Switcher","_class","_Switcher","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","focusedIndex","selectItem","value","props","onValueChange","_extractPropsFromItem","item","label","_extractValuesFromItems","items","map","_this$_extractPropsFr","_focus","index","setState","handleKey","e","_this$_extractPropsFr2","buttonProps","disabled","preventDefault","move","left","selectedIndex","newFocusedIndex","_getNextFocusedIndex","_this$props","i","_this$_extractPropsFr3","_handleFocus","currentIndex","indexOf","_handleBlur","_renderItems","_this$props2","size","role","renderItem","_this$_extractPropsFr4","ariaLabel","itemValue","customButtonProps","isChecked","commonButtonProps","checked","visuallyFocused","onClick","disableFocus","corners","_extends","renderDefault","renderDefaultItem","createElement","key","getLabelSizeClassName","captionLarge","theme","captionMedium","captionSmall","_inheritsLoose","_proto","prototype","render","_this2","Consumer","Provider","renderMain","inputProps","type","onKeyDown","onFocus","onBlur","className","input","isThemeGTE_5_1","isTheme_5_0","captionClassName","caption","wrapperClassName","wrap","error","error5_1","errorClassName","rootNodeRef","setRootNode","Component","__KONTUR_REACT_UI__","displayName","defaultProps","propTypes","bool","oneOfType","arrayOf","string","shape","isRequired","func"],"sources":["Switcher.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { getButtonCorners, Group } from '../Group';\nimport type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './Switcher.styles';\nimport { getSwitcherTheme } from './switcherTheme';\nimport { mod } from './helpers';\n\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /** Задает список строк или список элементов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }`. */\n items: SwitcherItems[];\n\n /** Устанавливает значение свитчера. */\n value?: string;\n\n /** Задает функцию, которая вызывается при изменении значения свитчера (value). */\n onValueChange?: (value: string) => void;\n\n /** Задает подпись около свитчера. */\n caption?: string;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает функцию отрисовки элемента.\n * @param `label` -\n * @param `value` -\n * @param `buttonProps` -\n * @param `renderDefault` -\n * @param `ariaLabel` -\n */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n/**\n * Переключатель `Switcher` — это замена RadioGroup.\n *\n * Не используйте переключатель в качестве навигации, для этого лучше подходят Tabs.\n */\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public static propTypes = {\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n items: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.string,\n }),\n ),\n ]).isRequired,\n caption: PropTypes.string,\n value: PropTypes.string,\n onValueChange: PropTypes.func,\n renderItem: PropTypes.func,\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: styles.input(),\n };\n const isThemeGTE_5_1 = isThemeGTE(this.theme, '5.1');\n const isTheme_5_0 = !isThemeGTE_5_1;\n const items = <Group>{this._renderItems()}</Group>;\n\n const captionClassName = cx(styles.caption(this.theme), this.getLabelSizeClassName());\n const wrapperClassName = cx(styles.wrap(), isThemeGTE_5_1 && this.props.error && styles.error5_1(this.theme));\n const errorClassName = cx(isTheme_5_0 && this.props.error && styles.error(this.theme));\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={styles.root()}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={wrapperClassName}>\n <input {...inputProps} />\n {isThemeGTE_5_1 ? items : <div className={errorClassName}>{items}</div>}\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, disabled, role, renderItem } = this.props;\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n };\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n switch (this.props.size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","isKeyArrowHorizontal","isKeyArrowLeft","isKeyEnter","getButtonCorners","Group","Button","ThemeContext","CommonWrapper","cx","rootNode","isThemeGTE","ReactUIFeatureFlagsContext","styles","getSwitcherTheme","mod","SwitcherDataTids","root","Switcher","_class","_Switcher","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","focusedIndex","selectItem","value","props","onValueChange","_extractPropsFromItem","item","label","_extractValuesFromItems","items","map","_this$_extractPropsFr","_focus","index","setState","handleKey","e","_this$_extractPropsFr2","buttonProps","disabled","preventDefault","move","left","selectedIndex","newFocusedIndex","_getNextFocusedIndex","_this$props","i","_this$_extractPropsFr3","_handleFocus","currentIndex","indexOf","_handleBlur","_renderItems","_this$props2","size","width","role","renderItem","_this$_extractPropsFr4","ariaLabel","itemValue","customButtonProps","isChecked","commonButtonProps","checked","visuallyFocused","onClick","disableFocus","corners","_extends","renderDefault","renderDefaultItem","createElement","key","getLabelSizeClassName","captionLarge","theme","captionMedium","captionSmall","_inheritsLoose","_proto","prototype","render","_this2","Consumer","Provider","renderMain","_cx","_cx2","inputProps","type","onKeyDown","onFocus","onBlur","className","input","isThemeGTE_5_1","isTheme_5_0","groupAddHintAndTooltipSupport","captionClassName","caption","wrapperClassName","wrap","error5_1","error","wrapCustomWidth","undefined","errorClassName","rootNodeRef","setRootNode","style","Component","__KONTUR_REACT_UI__","displayName","defaultProps"],"sources":["Switcher.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport React from 'react';\n\nimport { isKeyArrowHorizontal, isKeyArrowLeft, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { getButtonCorners, Group } from '../Group';\nimport type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } from './Switcher.styles';\nimport { getSwitcherTheme } from './switcherTheme';\nimport { mod } from './helpers';\n\nexport type SwitcherItems = string | SwitcherItem;\n\nexport const SwitcherDataTids = {\n root: 'Switcher__root',\n} as const;\n\nexport interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {\n /** Задает список элементов в свитчере. Это массив строк или объектов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }` */\n items: SwitcherItems[];\n\n /** Устанавливает значение свитчера. */\n value?: string;\n\n /** Задает функцию, которая вызывается при изменении значения свитчера (value). */\n onValueChange?: (value: string) => void;\n\n /** Задает подпись около свитчера. */\n caption?: string;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Задает ширину контрола. С этим пропом элементы внутри автоматически равномерно растянутся. */\n width?: React.CSSProperties['width'];\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает функцию отрисовки элемента. Параметр `renderDefault` - это встроенная дефолтная функция отрисовки элемента, которую можно вызывать в `renderItem`. */\n renderItem?: (\n label: string,\n value: string,\n buttonProps: ButtonProps,\n renderDefault: () => React.ReactNode,\n ariaLabel?: string,\n ) => React.ReactNode;\n}\n\ntype DefaultProps = Required<Pick<SwitcherProps, 'role'>>;\n\nexport interface SwitcherState {\n focusedIndex: Nullable<number>;\n}\n\ninterface SwitcherItem {\n value: string;\n label: string;\n 'aria-label'?: string;\n buttonProps?: Partial<ButtonProps>;\n}\n\n/**\n * Переключатель `Switcher` — это замена RadioGroup.\n *\n * Не используйте переключатель в качестве навигации, для этого лучше подходят Tabs.\n */\n@rootNode\nexport class Switcher extends React.Component<SwitcherProps, SwitcherState> {\n public static __KONTUR_REACT_UI__ = 'Switcher';\n public static displayName = 'Switcher';\n\n public static defaultProps: DefaultProps = {\n role: 'switch',\n };\n\n public state: SwitcherState = {\n focusedIndex: null,\n };\n\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getSwitcherTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const inputProps = {\n type: 'checkbox',\n onKeyDown: this.handleKey,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n className: styles.input(),\n };\n const isThemeGTE_5_1 = isThemeGTE(this.theme, '5.1');\n const isTheme_5_0 = !isThemeGTE_5_1;\n const items = (\n <ReactUIFeatureFlagsContext.Provider value={{ groupAddHintAndTooltipSupport: true }}>\n <Group width={'100%'}>{this._renderItems()}</Group>\n </ReactUIFeatureFlagsContext.Provider>\n );\n\n const captionClassName = cx(styles.caption(this.theme), this.getLabelSizeClassName());\n const wrapperClassName = cx(styles.wrap(), {\n [styles.error5_1(this.theme)]: isThemeGTE_5_1 && this.props.error,\n [styles.wrapCustomWidth()]: this.props.width !== undefined,\n });\n const errorClassName = cx({ [styles.error(this.theme)]: isTheme_5_0 && this.props.error });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SwitcherDataTids.root} className={styles.root()} style={{ width: this.props.width }}>\n {this.props.caption ? <div className={captionClassName}>{this.props.caption}</div> : null}\n <div className={wrapperClassName}>\n <input {...inputProps} />\n {isThemeGTE_5_1 ? items : <div className={errorClassName}>{items}</div>}\n </div>\n </div>\n </CommonWrapper>\n );\n }\n\n private selectItem = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private _extractPropsFromItem = (item: string | SwitcherItem): SwitcherItem => {\n return typeof item === 'object' ? item : { label: item, value: item };\n };\n\n private _extractValuesFromItems = (): string[] => {\n return this.props.items.map((item) => {\n const { value } = this._extractPropsFromItem(item);\n return value;\n });\n };\n\n private _focus = (index: number) => {\n this.setState({ focusedIndex: index });\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const focusedIndex = this.state.focusedIndex;\n if (typeof focusedIndex !== 'number') {\n return;\n }\n\n if (isKeyEnter(e)) {\n if (this.props.onValueChange) {\n const { value, buttonProps } = this._extractPropsFromItem(this.props.items[focusedIndex]);\n if (!buttonProps?.disabled) {\n this.selectItem(value);\n }\n }\n return;\n }\n\n if (isKeyArrowHorizontal(e)) {\n e.preventDefault();\n this.move(isKeyArrowLeft(e));\n }\n };\n\n private move = (left: boolean) => {\n const selectedIndex = this.state.focusedIndex;\n\n if (typeof selectedIndex !== 'number') {\n return;\n }\n const newFocusedIndex = this._getNextFocusedIndex(left, selectedIndex);\n this._focus(newFocusedIndex);\n };\n\n private _getNextFocusedIndex = (left: boolean, focusedIndex: number): number => {\n const { items, disabled } = this.props;\n if (disabled) {\n return focusedIndex;\n }\n\n for (let i = 1; i < items.length; i++) {\n const index = mod(focusedIndex + (left ? -i : i), items.length);\n const { buttonProps } = this._extractPropsFromItem(items[index]);\n if (!buttonProps?.disabled) {\n return index;\n }\n }\n return focusedIndex;\n };\n\n private _handleFocus = () => {\n const { value } = this.props;\n\n const items = this._extractValuesFromItems();\n const currentIndex = [...items].indexOf(value as string);\n const index = currentIndex > -1 ? currentIndex : 0;\n\n this.setState({ focusedIndex: index });\n };\n\n private _handleBlur = () => {\n this.setState({ focusedIndex: null });\n };\n\n private _renderItems = () => {\n const { items, value, size, width, disabled, role, renderItem } = this.props;\n\n return items.map((item, i) => {\n const {\n 'aria-label': ariaLabel,\n label,\n value: itemValue,\n buttonProps: customButtonProps,\n } = this._extractPropsFromItem(item);\n\n const isChecked = value === itemValue;\n const commonButtonProps = {\n 'aria-checked': isChecked,\n role,\n checked: isChecked,\n visuallyFocused: this.state.focusedIndex === i,\n onClick: () => {\n this.selectItem(itemValue);\n },\n disableFocus: true,\n size,\n disabled,\n corners: getButtonCorners(i === 0, i === items.length - 1),\n };\n\n const buttonProps = {\n ...commonButtonProps,\n ...customButtonProps,\n };\n\n if (!buttonProps.width && width) {\n buttonProps.width = '100%';\n }\n\n const renderDefault = () => this.renderDefaultItem(label, itemValue, buttonProps, ariaLabel);\n return renderItem ? renderItem(label, itemValue, buttonProps, renderDefault, ariaLabel) : renderDefault();\n });\n };\n\n private renderDefaultItem = (label: string, value: string, buttonProps: ButtonProps, ariaLabel?: string) => (\n <Button aria-label={ariaLabel} key={value} {...buttonProps}>\n {label}\n </Button>\n );\n\n private getLabelSizeClassName = (): string => {\n switch (this.props.size) {\n case 'large':\n return styles.captionLarge(this.theme);\n case 'medium':\n return styles.captionMedium(this.theme);\n case 'small':\n default:\n return styles.captionSmall(this.theme);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  import type { HTMLAttributes } from 'react';
2
2
  import React from 'react';
3
- import PropTypes from 'prop-types';
4
3
  import type { ButtonProps } from '../Button';
5
4
  import type { Nullable } from '../../typings/utility-types';
6
5
  import type { CommonProps } from '../../internal/CommonWrapper';
6
+ import type { TGetRootNode } from '../../lib/rootNode';
7
7
  import type { SizeProp } from '../../lib/types/props';
8
8
  export type SwitcherItems = string | SwitcherItem;
9
9
  export declare const SwitcherDataTids: {
10
10
  readonly root: "Switcher__root";
11
11
  };
12
12
  export interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {
13
- /** Задает список строк или список элементов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }`. */
13
+ /** Задает список элементов в свитчере. Это массив строк или объектов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }` */
14
14
  items: SwitcherItems[];
15
15
  /** Устанавливает значение свитчера. */
16
16
  value?: string;
@@ -22,15 +22,11 @@ export interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, Co
22
22
  error?: boolean;
23
23
  /** Задает размер контрола. */
24
24
  size?: SizeProp;
25
+ /** Задает ширину контрола. С этим пропом элементы внутри автоматически равномерно растянутся. */
26
+ width?: React.CSSProperties['width'];
25
27
  /** Делает компонент недоступным. */
26
28
  disabled?: boolean;
27
- /** Задает функцию отрисовки элемента.
28
- * @param `label` -
29
- * @param `value` -
30
- * @param `buttonProps` -
31
- * @param `renderDefault` -
32
- * @param `ariaLabel` -
33
- */
29
+ /** Задает функцию отрисовки элемента. Параметр `renderDefault` - это встроенная дефолтная функция отрисовки элемента, которую можно вызывать в `renderItem`. */
34
30
  renderItem?: (label: string, value: string, buttonProps: ButtonProps, renderDefault: () => React.ReactNode, ariaLabel?: string) => React.ReactNode;
35
31
  }
36
32
  type DefaultProps = Required<Pick<SwitcherProps, 'role'>>;
@@ -52,20 +48,9 @@ export declare class Switcher extends React.Component<SwitcherProps, SwitcherSta
52
48
  static __KONTUR_REACT_UI__: string;
53
49
  static displayName: string;
54
50
  static defaultProps: DefaultProps;
55
- static propTypes: {
56
- error: PropTypes.Requireable<boolean>;
57
- disabled: PropTypes.Requireable<boolean>;
58
- items: PropTypes.Validator<NonNullable<NonNullable<(string | null | undefined)[] | (PropTypes.InferProps<{
59
- label: PropTypes.Requireable<string>;
60
- value: PropTypes.Requireable<string>;
61
- }> | null | undefined)[] | null | undefined>>>;
62
- caption: PropTypes.Requireable<string>;
63
- value: PropTypes.Requireable<string>;
64
- onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
65
- renderItem: PropTypes.Requireable<(...args: any[]) => any>;
66
- };
67
51
  state: SwitcherState;
68
52
  private theme;
53
+ getRootNode: TGetRootNode;
69
54
  private setRootNode;
70
55
  render(): React.JSX.Element;
71
56
  private renderMain;
@@ -1,34 +1,37 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
3
3
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
4
4
  export var styles = memoizeStyle({
5
5
  root: function root() {
6
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n line-height: normal;\n "])));
6
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n line-height: normal;\n "])));
7
7
  },
8
8
  wrap: function wrap() {
9
9
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: inline-block;\n vertical-align: middle;\n "])));
10
10
  },
11
+ wrapCustomWidth: function wrapCustomWidth() {
12
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n flex-grow: 1;\n "])));
13
+ },
11
14
  input: function input() {
12
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n "])));
15
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n "])));
13
16
  },
14
17
  caption: function caption(t) {
15
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n color: ", ";\n vertical-align: middle;\n display: inline-block;\n "])), t.switcherTextColor);
18
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n color: ", ";\n vertical-align: middle;\n display: inline-block;\n "])), t.switcherTextColor);
16
19
  },
17
20
  captionSmall: function captionSmall(t) {
18
- return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapSmall, t.switcherCaptionFontSizeSmall, t.switcherCaptionLineHeightSmall);
21
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapSmall, t.switcherCaptionFontSizeSmall, t.switcherCaptionLineHeightSmall);
19
22
  },
20
23
  captionMedium: function captionMedium(t) {
21
- return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapMedium, t.switcherCaptionFontSizeMedium, t.switcherCaptionLineHeightMedium);
24
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapMedium, t.switcherCaptionFontSizeMedium, t.switcherCaptionLineHeightMedium);
22
25
  },
23
26
  captionLarge: function captionLarge(t) {
24
- return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapLarge, t.switcherCaptionFontSizeLarge, t.switcherCaptionLineHeightLarge);
27
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n font-size: ", ";\n line-height: ", ";\n "])), t.switcherCaptionGapLarge, t.switcherCaptionFontSizeLarge, t.switcherCaptionLineHeightLarge);
25
28
  },
26
29
  error: function error(t) {
27
30
  var insideWidth = parseInt(t.btnBorderWidth);
28
31
  var outsideWidth = parseInt(t.switcherOutlineWidth) - insideWidth + "px";
29
- return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n border-radius: ", ";\n box-shadow:\n inset 0 0 0 ", "px ", ",\n 0 0 0 ", " ", ";\n "])), t.switcherBorderRadius, insideWidth, t.borderColorError, outsideWidth, t.borderColorError);
32
+ return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n border-radius: ", ";\n box-shadow:\n inset 0 0 0 ", "px ", ",\n 0 0 0 ", " ", ";\n "])), t.switcherBorderRadius, insideWidth, t.borderColorError, outsideWidth, t.borderColorError);
30
33
  },
31
34
  error5_1: function error5_1(t) {
32
- return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n z-index: 1;\n border-radius: ", ";\n box-shadow: 0 0 0 ", " ", ";\n }\n "])), t.switcherBorderRadius, t.switcherOutlineWidth, t.borderColorError);
35
+ return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n z-index: 1;\n border-radius: ", ";\n box-shadow: 0 0 0 ", " ", ";\n }\n "])), t.switcherBorderRadius, t.switcherOutlineWidth, t.borderColorError);
33
36
  }
34
37
  });
@@ -1 +1 @@
1
- {"version":3,"names":["css","memoizeStyle","styles","root","_templateObject","_taggedTemplateLiteralLoose","wrap","_templateObject2","input","_templateObject3","caption","t","_templateObject4","switcherTextColor","captionSmall","_templateObject5","switcherCaptionGapSmall","switcherCaptionFontSizeSmall","switcherCaptionLineHeightSmall","captionMedium","_templateObject6","switcherCaptionGapMedium","switcherCaptionFontSizeMedium","switcherCaptionLineHeightMedium","captionLarge","_templateObject7","switcherCaptionGapLarge","switcherCaptionFontSizeLarge","switcherCaptionLineHeightLarge","error","insideWidth","parseInt","btnBorderWidth","outsideWidth","switcherOutlineWidth","_templateObject8","switcherBorderRadius","borderColorError","error5_1","_templateObject9"],"sources":["Switcher.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n line-height: normal;\n `;\n },\n\n wrap() {\n return css`\n display: inline-block;\n vertical-align: middle;\n `;\n },\n\n input() {\n return css`\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.switcherTextColor};\n vertical-align: middle;\n display: inline-block;\n `;\n },\n\n captionSmall(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapSmall};\n font-size: ${t.switcherCaptionFontSizeSmall};\n line-height: ${t.switcherCaptionLineHeightSmall};\n `;\n },\n\n captionMedium(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapMedium};\n font-size: ${t.switcherCaptionFontSizeMedium};\n line-height: ${t.switcherCaptionLineHeightMedium};\n `;\n },\n\n captionLarge(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapLarge};\n font-size: ${t.switcherCaptionFontSizeLarge};\n line-height: ${t.switcherCaptionLineHeightLarge};\n `;\n },\n\n error(t: Theme) {\n const insideWidth = parseInt(t.btnBorderWidth);\n const outsideWidth = `${parseInt(t.switcherOutlineWidth) - insideWidth}px`;\n return css`\n border-radius: ${t.switcherBorderRadius};\n box-shadow:\n inset 0 0 0 ${insideWidth}px ${t.borderColorError},\n 0 0 0 ${outsideWidth} ${t.borderColorError};\n `;\n },\n\n error5_1(t: Theme) {\n return css`\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n z-index: 1;\n border-radius: ${t.switcherBorderRadius};\n box-shadow: 0 0 0 ${t.switcherOutlineWidth} ${t.borderColorError};\n }\n `;\n },\n});\n"],"mappings":"oQAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;;AAG7D,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;EACjCE,IAAI,WAAAA,KAAA,EAAG;IACL,OAAOH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;EAGZ,CAAC;;EAEDC,IAAI,WAAAA,KAAA,EAAG;IACL,OAAON,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,2BAAA;;;;EAIZ,CAAC;;EAEDG,KAAK,WAAAA,MAAA,EAAG;IACN,OAAOR,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,2BAAA;;;;;;EAMZ,CAAC;;EAEDK,OAAO,WAAAA,QAACC,CAAQ,EAAE;IAChB,OAAOX,GAAG,CAAAY,gBAAA,KAAAA,gBAAA,GAAAP,2BAAA;IACCM,CAAC,CAACE,iBAAiB;;;;EAIhC,CAAC;;EAEDC,YAAY,WAAAA,aAACH,CAAQ,EAAE;IACrB,OAAOX,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,2BAAA;IACQM,CAAC,CAACK,uBAAuB;IAC5BL,CAAC,CAACM,4BAA4B;IAC5BN,CAAC,CAACO,8BAA8B;;EAEnD,CAAC;;EAEDC,aAAa,WAAAA,cAACR,CAAQ,EAAE;IACtB,OAAOX,GAAG,CAAAoB,gBAAA,KAAAA,gBAAA,GAAAf,2BAAA;IACQM,CAAC,CAACU,wBAAwB;IAC7BV,CAAC,CAACW,6BAA6B;IAC7BX,CAAC,CAACY,+BAA+B;;EAEpD,CAAC;;EAEDC,YAAY,WAAAA,aAACb,CAAQ,EAAE;IACrB,OAAOX,GAAG,CAAAyB,gBAAA,KAAAA,gBAAA,GAAApB,2BAAA;IACQM,CAAC,CAACe,uBAAuB;IAC5Bf,CAAC,CAACgB,4BAA4B;IAC5BhB,CAAC,CAACiB,8BAA8B;;EAEnD,CAAC;;EAEDC,KAAK,WAAAA,MAAClB,CAAQ,EAAE;IACd,IAAMmB,WAAW,GAAGC,QAAQ,CAACpB,CAAC,CAACqB,cAAc,CAAC;IAC9C,IAAMC,YAAY,GAAMF,QAAQ,CAACpB,CAAC,CAACuB,oBAAoB,CAAC,GAAGJ,WAAW,OAAI;IAC1E,OAAO9B,GAAG,CAAAmC,gBAAA,KAAAA,gBAAA,GAAA9B,2BAAA;IACSM,CAAC,CAACyB,oBAAoB;;IAEvBN,WAAW,EAAMnB,CAAC,CAAC0B,gBAAgB;IACzCJ,YAAY,EAAItB,CAAC,CAAC0B,gBAAgB;;EAEhD,CAAC;;EAEDC,QAAQ,WAAAA,SAAC3B,CAAQ,EAAE;IACjB,OAAOX,GAAG,CAAAuC,gBAAA,KAAAA,gBAAA,GAAAlC,2BAAA;;;;;;;;;;;;IAYWM,CAAC,CAACyB,oBAAoB;IACnBzB,CAAC,CAACuB,oBAAoB,EAAIvB,CAAC,CAAC0B,gBAAgB;;;EAGtE;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["css","memoizeStyle","styles","root","_templateObject","_taggedTemplateLiteralLoose","wrap","_templateObject2","wrapCustomWidth","_templateObject3","input","_templateObject4","caption","t","_templateObject5","switcherTextColor","captionSmall","_templateObject6","switcherCaptionGapSmall","switcherCaptionFontSizeSmall","switcherCaptionLineHeightSmall","captionMedium","_templateObject7","switcherCaptionGapMedium","switcherCaptionFontSizeMedium","switcherCaptionLineHeightMedium","captionLarge","_templateObject8","switcherCaptionGapLarge","switcherCaptionFontSizeLarge","switcherCaptionLineHeightLarge","error","insideWidth","parseInt","btnBorderWidth","outsideWidth","switcherOutlineWidth","_templateObject9","switcherBorderRadius","borderColorError","error5_1","_templateObject10"],"sources":["Switcher.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport type { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n display: flex;\n align-items: center;\n line-height: normal;\n `;\n },\n\n wrap() {\n return css`\n display: inline-block;\n vertical-align: middle;\n `;\n },\n\n wrapCustomWidth() {\n return css`\n flex-grow: 1;\n `;\n },\n\n input() {\n return css`\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n `;\n },\n\n caption(t: Theme) {\n return css`\n color: ${t.switcherTextColor};\n vertical-align: middle;\n display: inline-block;\n `;\n },\n\n captionSmall(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapSmall};\n font-size: ${t.switcherCaptionFontSizeSmall};\n line-height: ${t.switcherCaptionLineHeightSmall};\n `;\n },\n\n captionMedium(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapMedium};\n font-size: ${t.switcherCaptionFontSizeMedium};\n line-height: ${t.switcherCaptionLineHeightMedium};\n `;\n },\n\n captionLarge(t: Theme) {\n return css`\n margin-right: ${t.switcherCaptionGapLarge};\n font-size: ${t.switcherCaptionFontSizeLarge};\n line-height: ${t.switcherCaptionLineHeightLarge};\n `;\n },\n\n error(t: Theme) {\n const insideWidth = parseInt(t.btnBorderWidth);\n const outsideWidth = `${parseInt(t.switcherOutlineWidth) - insideWidth}px`;\n return css`\n border-radius: ${t.switcherBorderRadius};\n box-shadow:\n inset 0 0 0 ${insideWidth}px ${t.borderColorError},\n 0 0 0 ${outsideWidth} ${t.borderColorError};\n `;\n },\n\n error5_1(t: Theme) {\n return css`\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n z-index: 1;\n border-radius: ${t.switcherBorderRadius};\n box-shadow: 0 0 0 ${t.switcherOutlineWidth} ${t.borderColorError};\n }\n `;\n },\n});\n"],"mappings":"uRAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;;AAG7D,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;EACjCE,IAAI,WAAAA,KAAA,EAAG;IACL,OAAOH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;;;EAKZ,CAAC;;EAEDC,IAAI,WAAAA,KAAA,EAAG;IACL,OAAON,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,2BAAA;;;;EAIZ,CAAC;;EAEDG,eAAe,WAAAA,gBAAA,EAAG;IAChB,OAAOR,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,2BAAA;;;EAGZ,CAAC;;EAEDK,KAAK,WAAAA,MAAA,EAAG;IACN,OAAOV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,2BAAA;;;;;;EAMZ,CAAC;;EAEDO,OAAO,WAAAA,QAACC,CAAQ,EAAE;IAChB,OAAOb,GAAG,CAAAc,gBAAA,KAAAA,gBAAA,GAAAT,2BAAA;IACCQ,CAAC,CAACE,iBAAiB;;;;EAIhC,CAAC;;EAEDC,YAAY,WAAAA,aAACH,CAAQ,EAAE;IACrB,OAAOb,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,2BAAA;IACQQ,CAAC,CAACK,uBAAuB;IAC5BL,CAAC,CAACM,4BAA4B;IAC5BN,CAAC,CAACO,8BAA8B;;EAEnD,CAAC;;EAEDC,aAAa,WAAAA,cAACR,CAAQ,EAAE;IACtB,OAAOb,GAAG,CAAAsB,gBAAA,KAAAA,gBAAA,GAAAjB,2BAAA;IACQQ,CAAC,CAACU,wBAAwB;IAC7BV,CAAC,CAACW,6BAA6B;IAC7BX,CAAC,CAACY,+BAA+B;;EAEpD,CAAC;;EAEDC,YAAY,WAAAA,aAACb,CAAQ,EAAE;IACrB,OAAOb,GAAG,CAAA2B,gBAAA,KAAAA,gBAAA,GAAAtB,2BAAA;IACQQ,CAAC,CAACe,uBAAuB;IAC5Bf,CAAC,CAACgB,4BAA4B;IAC5BhB,CAAC,CAACiB,8BAA8B;;EAEnD,CAAC;;EAEDC,KAAK,WAAAA,MAAClB,CAAQ,EAAE;IACd,IAAMmB,WAAW,GAAGC,QAAQ,CAACpB,CAAC,CAACqB,cAAc,CAAC;IAC9C,IAAMC,YAAY,GAAMF,QAAQ,CAACpB,CAAC,CAACuB,oBAAoB,CAAC,GAAGJ,WAAW,OAAI;IAC1E,OAAOhC,GAAG,CAAAqC,gBAAA,KAAAA,gBAAA,GAAAhC,2BAAA;IACSQ,CAAC,CAACyB,oBAAoB;;IAEvBN,WAAW,EAAMnB,CAAC,CAAC0B,gBAAgB;IACzCJ,YAAY,EAAItB,CAAC,CAAC0B,gBAAgB;;EAEhD,CAAC;;EAEDC,QAAQ,WAAAA,SAAC3B,CAAQ,EAAE;IACjB,OAAOb,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAApC,2BAAA;;;;;;;;;;;;IAYWQ,CAAC,CAACyB,oBAAoB;IACnBzB,CAAC,CAACuB,oBAAoB,EAAIvB,CAAC,CAAC0B,gBAAgB;;;EAGtE;AACF,CAAC,CAAC","ignoreList":[]}
@@ -2,6 +2,7 @@ import type { Theme } from '../../lib/theming/Theme';
2
2
  export declare const styles: {
3
3
  root(): string;
4
4
  wrap(): string;
5
+ wrapCustomWidth(): string;
5
6
  input(): string;
6
7
  caption(t: Theme): string;
7
8
  captionSmall(t: Theme): string;
@@ -1 +1 @@
1
- {"version":3,"names":["React","throttle","globalObject","isInstanceOf","LayoutEvents","ThemeContext","cx","getRootNode","rootNode","getDOMRect","styles","TabsContext","TabsDataTids","Indicator","_class","_Indicator","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","eventListener","removeTabUpdatesListener","reflow","_this$context","getTab","activeTab","node","nodeStyles","getStyles","stylesUpdated","some","prop","setState","_inheritsLoose","_proto","prototype","componentDidMount","addListener","props","tabUpdates","on","componentWillUnmount","cancel","remove","componentDidUpdate","render","_this2","createElement","Consumer","theme","renderMain","_this$context2","indicators","getIndicators","error","warning","success","primary","disabled","indicatorRoot","className","root","style","ref","setRootNode","htmlNode","HTMLElement","rect","vertical","width","tabBorderWidth","left","offsetLeft","top","offsetTop","height","bottom","parseInt","offsetHeight","right","Component","contextType"],"sources":["Indicator.tsx"],"sourcesContent":["import React from 'react';\nimport throttle from 'lodash.throttle';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Indicator.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport type { TabIndicators } from './Tab';\nimport { TabsDataTids } from './Tabs';\n\nexport interface IndicatorProps {\n className?: string;\n tabUpdates: {\n on: (x0: () => void) => () => void;\n };\n vertical: boolean;\n}\n\nexport interface IndicatorState {\n styles: React.CSSProperties;\n}\n\n@rootNode\nexport class Indicator extends React.Component<IndicatorProps, IndicatorState> {\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public state: IndicatorState = {\n styles: {},\n };\n\n private theme!: Theme;\n\n private eventListener: Nullable<{\n remove: () => void;\n }> = null;\n\n private removeTabUpdatesListener: Nullable<() => void> = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.eventListener = LayoutEvents.addListener(this.reflow);\n this.removeTabUpdatesListener = this.props.tabUpdates.on(this.reflow);\n this.reflow();\n }\n\n public componentWillUnmount() {\n this.reflow.cancel();\n\n if (this.eventListener) {\n this.eventListener.remove();\n }\n if (this.removeTabUpdatesListener) {\n this.removeTabUpdatesListener();\n }\n }\n\n public componentDidUpdate() {\n this.reflow();\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 { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const indicators: TabIndicators = (node && node.getIndicators && node.getIndicators()) || {\n error: false,\n warning: false,\n success: false,\n primary: false,\n disabled: false,\n };\n return (\n <div\n data-tid={TabsDataTids.indicatorRoot}\n className={cx(\n styles.root(this.theme),\n indicators.primary && styles.primary(this.theme),\n indicators.success && styles.success(this.theme),\n indicators.warning && styles.warning(this.theme),\n indicators.error && styles.error(this.theme),\n this.props.className,\n )}\n style={this.state.styles}\n ref={this.setRootNode}\n />\n );\n }\n\n private reflow = throttle(() => {\n const { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const nodeStyles = this.getStyles(node);\n const stylesUpdated = ['left', 'top', 'width', 'height'].some(\n (prop) => nodeStyles[prop as keyof React.CSSProperties] !== this.state.styles[prop as keyof React.CSSProperties],\n );\n if (stylesUpdated) {\n this.setState({ styles: nodeStyles });\n }\n }, 100);\n\n private getStyles(node: any): React.CSSProperties {\n const htmlNode = getRootNode(node);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement)) {\n const rect = getDOMRect(htmlNode);\n if (this.props.vertical) {\n return {\n width: this.theme.tabBorderWidth,\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetTop,\n height: rect.bottom - rect.top,\n };\n }\n\n const tabBorderWidth = parseInt(this.theme.tabBorderWidth, 10) || 0;\n return {\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetHeight + htmlNode.offsetTop - tabBorderWidth,\n width: rect.right - rect.left,\n };\n }\n\n return {};\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","throttle","globalObject","isInstanceOf","LayoutEvents","ThemeContext","cx","getRootNode","rootNode","getDOMRect","styles","TabsContext","TabsDataTids","Indicator","_class","_Indicator","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","eventListener","removeTabUpdatesListener","reflow","_this$context","getTab","activeTab","node","nodeStyles","getStyles","stylesUpdated","some","prop","setState","_inheritsLoose","_proto","prototype","componentDidMount","addListener","props","tabUpdates","on","componentWillUnmount","cancel","remove","componentDidUpdate","render","_this2","createElement","Consumer","theme","renderMain","_this$context2","indicators","getIndicators","error","warning","success","primary","disabled","indicatorRoot","className","root","style","ref","setRootNode","htmlNode","HTMLElement","rect","vertical","width","tabBorderWidth","left","offsetLeft","top","offsetTop","height","bottom","parseInt","offsetHeight","right","Component","contextType"],"sources":["Indicator.tsx"],"sourcesContent":["import React from 'react';\nimport throttle from 'lodash.throttle';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Indicator.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport type { TabIndicators } from './Tab';\nimport { TabsDataTids } from './Tabs';\n\nexport interface IndicatorProps {\n className?: string;\n tabUpdates: {\n on: (x0: () => void) => () => void;\n };\n vertical: boolean;\n}\n\nexport interface IndicatorState {\n styles: React.CSSProperties;\n}\n\n@rootNode\nexport class Indicator extends React.Component<IndicatorProps, IndicatorState> {\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public state: IndicatorState = {\n styles: {},\n };\n\n private theme!: Theme;\n\n private eventListener: Nullable<{\n remove: () => void;\n }> = null;\n\n private removeTabUpdatesListener: Nullable<() => void> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.eventListener = LayoutEvents.addListener(this.reflow);\n this.removeTabUpdatesListener = this.props.tabUpdates.on(this.reflow);\n this.reflow();\n }\n\n public componentWillUnmount() {\n this.reflow.cancel();\n\n if (this.eventListener) {\n this.eventListener.remove();\n }\n if (this.removeTabUpdatesListener) {\n this.removeTabUpdatesListener();\n }\n }\n\n public componentDidUpdate() {\n this.reflow();\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 { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const indicators: TabIndicators = (node && node.getIndicators && node.getIndicators()) || {\n error: false,\n warning: false,\n success: false,\n primary: false,\n disabled: false,\n };\n return (\n <div\n data-tid={TabsDataTids.indicatorRoot}\n className={cx(\n styles.root(this.theme),\n indicators.primary && styles.primary(this.theme),\n indicators.success && styles.success(this.theme),\n indicators.warning && styles.warning(this.theme),\n indicators.error && styles.error(this.theme),\n this.props.className,\n )}\n style={this.state.styles}\n ref={this.setRootNode}\n />\n );\n }\n\n private reflow = throttle(() => {\n const { getTab, activeTab } = this.context;\n const node = getTab(activeTab);\n const nodeStyles = this.getStyles(node);\n const stylesUpdated = ['left', 'top', 'width', 'height'].some(\n (prop) => nodeStyles[prop as keyof React.CSSProperties] !== this.state.styles[prop as keyof React.CSSProperties],\n );\n if (stylesUpdated) {\n this.setState({ styles: nodeStyles });\n }\n }, 100);\n\n private getStyles(node: any): React.CSSProperties {\n const htmlNode = getRootNode(node);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement)) {\n const rect = getDOMRect(htmlNode);\n if (this.props.vertical) {\n return {\n width: this.theme.tabBorderWidth,\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetTop,\n height: rect.bottom - rect.top,\n };\n }\n\n const tabBorderWidth = parseInt(this.theme.tabBorderWidth, 10) || 0;\n return {\n left: htmlNode.offsetLeft,\n top: htmlNode.offsetHeight + htmlNode.offsetTop - tabBorderWidth,\n width: rect.right - rect.left,\n };\n }\n\n return {};\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { TGetRootNode } from '../../lib/rootNode';
2
3
  import type { TabsContextType } from './TabsContext';
3
4
  export interface IndicatorProps {
4
5
  className?: string;
@@ -17,6 +18,7 @@ export declare class Indicator extends React.Component<IndicatorProps, Indicator
17
18
  private theme;
18
19
  private eventListener;
19
20
  private removeTabUpdatesListener;
21
+ getRootNode: TGetRootNode;
20
22
  private setRootNode;
21
23
  componentDidMount(): void;
22
24
  componentWillUnmount(): void;
@@ -1 +1 @@
1
- {"version":3,"names":["React","invariant","globalObject","ResizeDetector","isKeyArrow","isKeyArrowLeft","isKeyArrowUp","keyListener","isFunctionalComponent","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","getVisualStateDataAttributes","TabsContext","TabsContextDefaultValue","globalClasses","horizontalStyles","styles","verticalStyles","TabDataTids","root","Tab","_class","_Tab","_React$Component","props","_this","call","context","getProps","defaultProps","state","focusedByKeyboard","tabComponent","getUnderlyingNode","getId","id","href","refTabComponent","instance","getTabInstance","switchTab","event","disabled","preventDefault","_this$getProps","component","onClick","defaultPrevented","handleKeyDown","e","onKeyDown","delta","shiftFocus","handleFocus","requestAnimationFrame","isTabPressed","isArrowPressed","setState","handleBlur","_inheritsLoose","_proto","prototype","componentDidMount","addTab","componentDidUpdate","activeTab","notifyUpdate","componentWillUnmount","removeTab","render","_this2","createElement","Consumer","theme","renderMain","getIndicators","error","Boolean","warning","success","primary","_cx","_cx2","_this$props","children","ariaDescribedby","ariaLabel","_this$getProps2","Component","isActive","isVertical","vertical","orientationStyles","_extends","rootNodeRef","setRootNode","active","className","rootSmall","size","rootMedium","rootLarge","verticalSmall","verticalMedium","verticalLarge","onBlur","onFocus","tabIndex","ref","onResize","focus","focusSmall","focusMedium","focusLarge","__KONTUR_REACT_UI__","displayName","contextType"],"sources":["Tab.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunctionalComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext, TabsContextDefaultValue } from './TabsContext';\nimport { globalClasses, horizontalStyles, styles, verticalStyles } from './Tab.styles';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n CommonProps {\n /** Позволяет передавать свой компонент, строку или функцию, которая заменит собой элемент используемый в компоненте по умолчанию.\n * Реализует паттерн [render prop](https://www.patterns.dev/posts/render-props-pattern). */\n component?: React.ComponentType<any> | string;\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: string;\n\n /** Задает уникальный идентификатор таба. По нему компонент `<Tabs />` определяет какой `<Tab />` сейчас выбран. */\n id?: T;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** `HTML`-событие `onkeydown`. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Устанавливает визульное состояние валидации \"успех\". */\n success?: boolean;\n\n /** Задает визульное состояние главного элемента. */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Вложенный элемент компонента Tabs.\n */\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private theme!: Theme;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\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 public getIndicators() {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode = () => this.tabComponent;\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? verticalStyles : horizontalStyles;\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={cx({\n [styles.rootSmall(this.theme)]: this.context.size === 'small',\n [styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [styles.rootLarge(this.theme)]: this.context.size === 'large',\n [styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={cx(globalClasses.focus, {\n [styles.focusSmall(this.theme)]: this.context.size === 'small',\n [styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed || keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","invariant","globalObject","ResizeDetector","isKeyArrow","isKeyArrowLeft","isKeyArrowUp","keyListener","isFunctionalComponent","ThemeContext","CommonWrapper","cx","rootNode","createPropsGetter","getVisualStateDataAttributes","TabsContext","TabsContextDefaultValue","globalClasses","horizontalStyles","styles","verticalStyles","TabDataTids","root","Tab","_class","_Tab","_React$Component","props","_this","call","context","getProps","defaultProps","state","focusedByKeyboard","tabComponent","getUnderlyingNode","getId","id","href","refTabComponent","instance","getTabInstance","switchTab","event","disabled","preventDefault","_this$getProps","component","onClick","defaultPrevented","handleKeyDown","e","onKeyDown","delta","shiftFocus","handleFocus","requestAnimationFrame","isTabPressed","isArrowPressed","setState","handleBlur","_inheritsLoose","_proto","prototype","componentDidMount","addTab","componentDidUpdate","activeTab","notifyUpdate","componentWillUnmount","removeTab","render","_this2","createElement","Consumer","theme","renderMain","getIndicators","error","Boolean","warning","success","primary","_cx","_cx2","_this$props","children","ariaDescribedby","ariaLabel","_this$getProps2","Component","isActive","isVertical","vertical","orientationStyles","_extends","rootNodeRef","setRootNode","active","className","rootSmall","size","rootMedium","rootLarge","verticalSmall","verticalMedium","verticalLarge","onBlur","onFocus","tabIndex","ref","onResize","focus","focusSmall","focusMedium","focusLarge","__KONTUR_REACT_UI__","displayName","contextType"],"sources":["Tab.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport invariant from 'invariant';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers';\nimport { keyListener } from '../../lib/events/keyListener';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunctionalComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\n\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext, TabsContextDefaultValue } from './TabsContext';\nimport { globalClasses, horizontalStyles, styles, verticalStyles } from './Tab.styles';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>,\n CommonProps {\n /** Позволяет передавать свой компонент, строку или функцию, которая заменит собой элемент используемый в компоненте по умолчанию.\n * Реализует паттерн [render prop](https://www.patterns.dev/posts/render-props-pattern). */\n component?: React.ComponentType<any> | string;\n\n /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */\n href?: string;\n\n /** Задает уникальный идентификатор таба. По нему компонент `<Tabs />` определяет какой `<Tab />` сейчас выбран. */\n id?: T;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** `HTML`-событие `onkeydown`. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Устанавливает визульное состояние валидации \"успех\". */\n success?: boolean;\n\n /** Задает визульное состояние главного элемента. */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Вложенный элемент компонента Tabs.\n */\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private theme!: Theme;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\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 public getIndicators() {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode = () => this.tabComponent;\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? verticalStyles : horizontalStyles;\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={cx({\n [styles.rootSmall(this.theme)]: this.context.size === 'small',\n [styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [styles.rootLarge(this.theme)]: this.context.size === 'large',\n [styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={cx(globalClasses.focus, {\n [styles.focusSmall(this.theme)]: this.context.size === 'small',\n [styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed || keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import type { AriaAttributes } from 'react';
2
2
  import React from 'react';
3
3
  import type { Nullable } from '../../typings/utility-types';
4
4
  import type { CommonProps } from '../../internal/CommonWrapper';
5
+ import type { TGetRootNode } from '../../lib/rootNode';
5
6
  import type { TabsContextType } from './TabsContext';
6
7
  export interface TabIndicators {
7
8
  error: boolean;
@@ -53,6 +54,7 @@ export declare class Tab<T extends string = string> extends React.Component<TabP
53
54
  state: TabState;
54
55
  private theme;
55
56
  private tabComponent;
57
+ getRootNode: TGetRootNode;
56
58
  private setRootNode;
57
59
  constructor(props: TabProps<T>);
58
60
  componentDidMount(): void;
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","ThemeContext","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","isInstanceOf","Indicator","styles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","_class","_Tabs","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","_this2","findIndex","x","id","newIndex","Math","max","min","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","_this$props","props","onValueChange","value","getTab","_ref","find","_ref$getNode","addTab","removeTab","filter","_inheritsLoose","_proto","prototype","render","_this3","_this$props2","width","children","indicatorClassName","ariaDescribedby","_this$getProps","vertical","size","createElement","Consumer","theme","_cx","_extends","rootNodeRef","setRootNode","className","rootSmall","rootMedium","rootLarge","style","Provider","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Tabs.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { Indicator } from './Indicator';\nimport { styles } from './Tabs.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Задает кастомный класс подчёркиванию таба. */\n indicatorClassName?: string;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Задает текущий активный `<Tab />`. Принимает `id` таба. */\n value: T;\n\n /** Задает функцию, изменяющую текущий активный `<Tab />`. */\n onValueChange?: (value: T) => void;\n\n /** Задает расположение элементов по вертикали.\n * @default false */\n vertical?: boolean;\n\n /** Задает ширину компонента Tabs. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента Tab. Связывает `Tab`'ы в группу и позволяет управлять их состоянием, помогают в навигации.\n *\n * Используйте `Tabs` для второстепенной навигации, для группировки или фильтрации контента.\n *\n * Не используйте `Tabs` для основной навигации. Для этого лучше подходит главное меню на цветной плашке — оно более заметно на странице.\n * Не используйте `Tabs` для переключения состояний — для этого есть RadioGroup, Toggle и Switcher.\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={cx({\n [styles.rootSmall(this.theme)]: size === 'small',\n [styles.rootMedium(this.theme)]: size === 'medium',\n [styles.rootLarge(this.theme)]: size === 'large',\n [styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","globalObject","ThemeContext","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","isInstanceOf","Indicator","styles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","_class","_Tabs","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","_this2","findIndex","x","id","newIndex","Math","max","min","tab","tabNode","getNode","htmlNode","HTMLElement","focus","notifyUpdate","forEach","switchTab","_this$props","props","onValueChange","value","getTab","_ref","find","_ref$getNode","addTab","removeTab","filter","_inheritsLoose","_proto","prototype","render","_this3","_this$props2","width","children","indicatorClassName","ariaDescribedby","_this$getProps","vertical","size","createElement","Consumer","theme","_cx","_extends","rootNodeRef","setRootNode","className","rootSmall","rootMedium","rootLarge","style","Provider","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Tabs.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { Indicator } from './Indicator';\nimport { styles } from './Tabs.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Задает кастомный класс подчёркиванию таба. */\n indicatorClassName?: string;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Задает текущий активный `<Tab />`. Принимает `id` таба. */\n value: T;\n\n /** Задает функцию, изменяющую текущий активный `<Tab />`. */\n onValueChange?: (value: T) => void;\n\n /** Задает расположение элементов по вертикали.\n * @default false */\n vertical?: boolean;\n\n /** Задает ширину компонента Tabs. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента Tab. Связывает `Tab`'ы в группу и позволяет управлять их состоянием, помогают в навигации.\n *\n * Используйте `Tabs` для второстепенной навигации, для группировки или фильтрации контента.\n *\n * Не используйте `Tabs` для основной навигации. Для этого лучше подходит главное меню на цветной плашке — оно более заметно на странице.\n * Не используйте `Tabs` для переключения состояний — для этого есть RadioGroup, Toggle и Switcher.\n */\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={cx({\n [styles.rootSmall(this.theme)]: size === 'small',\n [styles.rootMedium(this.theme)]: size === 'medium',\n [styles.rootLarge(this.theme)]: size === 'large',\n [styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"],"mappings":"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","ignoreList":[]}