@skbkontur/react-ui 4.1.1 → 4.2.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 (481) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +3 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -3
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +3 -0
  6. package/cjs/components/Button/Button.js +8 -4
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.styles.d.ts +1 -1
  9. package/cjs/components/Button/Button.styles.js +6 -6
  10. package/cjs/components/Button/Button.styles.js.map +1 -1
  11. package/cjs/components/Center/Center.d.ts +3 -0
  12. package/cjs/components/Center/Center.js +8 -3
  13. package/cjs/components/Center/Center.js.map +1 -1
  14. package/cjs/components/Checkbox/Checkbox.d.ts +8 -0
  15. package/cjs/components/Checkbox/Checkbox.js +37 -3
  16. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -0
  18. package/cjs/components/Checkbox/Checkbox.styles.js +23 -17
  19. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  20. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.js +23 -5
  22. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  23. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  24. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
  25. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  26. package/cjs/components/DateInput/DateInput.js +5 -1
  27. package/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  29. package/cjs/components/DateInput/helpers/InternalDateMediator.js +7 -3
  30. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  31. package/cjs/components/DateInput/helpers/inputNumber.d.ts +1 -1
  32. package/cjs/components/DateInput/helpers/inputNumber.js +45 -12
  33. package/cjs/components/DateInput/helpers/inputNumber.js.map +1 -1
  34. package/cjs/components/DatePicker/DatePicker.d.ts +5 -0
  35. package/cjs/components/DatePicker/DatePicker.js +14 -3
  36. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  37. package/cjs/components/DatePicker/Picker.js +7 -2
  38. package/cjs/components/DatePicker/Picker.js.map +1 -1
  39. package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
  40. package/cjs/components/Dropdown/Dropdown.js +7 -2
  41. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  42. package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
  43. package/cjs/components/FileUploader/FileUploader.js +10 -4
  44. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  45. package/cjs/components/FxInput/FxInput.d.ts +3 -0
  46. package/cjs/components/FxInput/FxInput.js +7 -3
  47. package/cjs/components/FxInput/FxInput.js.map +1 -1
  48. package/cjs/components/Gapped/Gapped.d.ts +4 -0
  49. package/cjs/components/Gapped/Gapped.js +11 -5
  50. package/cjs/components/Gapped/Gapped.js.map +1 -1
  51. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  52. package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
  53. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  54. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +5 -7
  55. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  56. package/cjs/components/Group/Group.d.ts +3 -0
  57. package/cjs/components/Group/Group.js +7 -3
  58. package/cjs/components/Group/Group.js.map +1 -1
  59. package/cjs/components/Input/Input.d.ts +3 -0
  60. package/cjs/components/Input/Input.js +7 -3
  61. package/cjs/components/Input/Input.js.map +1 -1
  62. package/cjs/components/Link/Link.d.ts +4 -1
  63. package/cjs/components/Link/Link.js +8 -4
  64. package/cjs/components/Link/Link.js.map +1 -1
  65. package/cjs/components/Loader/Loader.d.ts +4 -0
  66. package/cjs/components/Loader/Loader.js +8 -3
  67. package/cjs/components/Loader/Loader.js.map +1 -1
  68. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
  69. package/cjs/components/MenuHeader/MenuHeader.js +7 -2
  70. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  71. package/cjs/components/MenuItem/MenuItem.d.ts +5 -1
  72. package/cjs/components/MenuItem/MenuItem.js +11 -5
  73. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  74. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  75. package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
  76. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  77. package/cjs/components/Modal/Modal.d.ts +5 -0
  78. package/cjs/components/Modal/Modal.js +9 -3
  79. package/cjs/components/Modal/Modal.js.map +1 -1
  80. package/cjs/components/Modal/ModalClose.js +3 -2
  81. package/cjs/components/Modal/ModalClose.js.map +1 -1
  82. package/cjs/components/Modal/ModalFooter.d.ts +3 -0
  83. package/cjs/components/Modal/ModalFooter.js +7 -2
  84. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  85. package/cjs/components/Modal/ModalHeader.d.ts +3 -0
  86. package/cjs/components/Modal/ModalHeader.js +8 -2
  87. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  88. package/cjs/components/Paging/Paging.d.ts +8 -1
  89. package/cjs/components/Paging/Paging.js +15 -7
  90. package/cjs/components/Paging/Paging.js.map +1 -1
  91. package/cjs/components/PasswordInput/PasswordInput.d.ts +6 -1
  92. package/cjs/components/PasswordInput/PasswordInput.js +21 -15
  93. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  94. package/cjs/components/PasswordInput/PasswordInputIcon.js +5 -1
  95. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -1
  96. package/cjs/components/Radio/Radio.d.ts +3 -0
  97. package/cjs/components/Radio/Radio.js +7 -3
  98. package/cjs/components/Radio/Radio.js.map +1 -1
  99. package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -0
  100. package/cjs/components/RadioGroup/RadioGroup.js +21 -4
  101. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  102. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  103. package/cjs/components/ScrollContainer/ScrollContainer.js +14 -4
  104. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  105. package/cjs/components/Select/Select.d.ts +3 -0
  106. package/cjs/components/Select/Select.js +14 -6
  107. package/cjs/components/Select/Select.js.map +1 -1
  108. package/cjs/components/SidePage/SidePage.d.ts +4 -0
  109. package/cjs/components/SidePage/SidePage.js +7 -2
  110. package/cjs/components/SidePage/SidePage.js.map +1 -1
  111. package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
  112. package/cjs/components/SidePage/SidePageBody.js +10 -3
  113. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  114. package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
  115. package/cjs/components/SidePage/SidePageContainer.js +7 -2
  116. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  117. package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
  118. package/cjs/components/SidePage/SidePageFooter.js +11 -3
  119. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  120. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
  121. package/cjs/components/SidePage/SidePageHeader.js +9 -4
  122. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  123. package/cjs/components/Spinner/Spinner.d.ts +3 -0
  124. package/cjs/components/Spinner/Spinner.js +7 -3
  125. package/cjs/components/Spinner/Spinner.js.map +1 -1
  126. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  127. package/cjs/components/Sticky/Sticky.js +7 -3
  128. package/cjs/components/Sticky/Sticky.js.map +1 -1
  129. package/cjs/components/Switcher/Switcher.d.ts +3 -0
  130. package/cjs/components/Switcher/Switcher.js +7 -3
  131. package/cjs/components/Switcher/Switcher.js.map +1 -1
  132. package/cjs/components/Tabs/Indicator.js +4 -2
  133. package/cjs/components/Tabs/Indicator.js.map +1 -1
  134. package/cjs/components/Tabs/Tab.d.ts +3 -0
  135. package/cjs/components/Tabs/Tab.js +7 -2
  136. package/cjs/components/Tabs/Tab.js.map +1 -1
  137. package/cjs/components/Tabs/Tabs.d.ts +4 -0
  138. package/cjs/components/Tabs/Tabs.js +12 -3
  139. package/cjs/components/Tabs/Tabs.js.map +1 -1
  140. package/cjs/components/Textarea/Textarea.d.ts +4 -0
  141. package/cjs/components/Textarea/Textarea.js +8 -3
  142. package/cjs/components/Textarea/Textarea.js.map +1 -1
  143. package/cjs/components/Textarea/TextareaCounter.js +10 -9
  144. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  145. package/cjs/components/Toast/Toast.d.ts +6 -0
  146. package/cjs/components/Toast/Toast.js +9 -2
  147. package/cjs/components/Toast/Toast.js.map +1 -1
  148. package/cjs/components/Toast/ToastStatic.js +1 -1
  149. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  150. package/cjs/components/Toast/ToastView.js +5 -4
  151. package/cjs/components/Toast/ToastView.js.map +1 -1
  152. package/cjs/components/Toggle/Toggle.d.ts +3 -0
  153. package/cjs/components/Toggle/Toggle.js +7 -3
  154. package/cjs/components/Toggle/Toggle.js.map +1 -1
  155. package/cjs/components/Token/Token.d.ts +3 -0
  156. package/cjs/components/Token/Token.js +8 -3
  157. package/cjs/components/Token/Token.js.map +1 -1
  158. package/cjs/components/TokenInput/TokenInput.d.ts +14 -0
  159. package/cjs/components/TokenInput/TokenInput.js +23 -3
  160. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
  162. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  163. package/cjs/components/Tooltip/Tooltip.d.ts +3 -0
  164. package/cjs/components/Tooltip/Tooltip.js +7 -2
  165. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  166. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  167. package/cjs/components/TooltipMenu/TooltipMenu.js +7 -2
  168. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  169. package/cjs/internal/Calendar/Calendar.d.ts +6 -0
  170. package/cjs/internal/Calendar/Calendar.js +9 -2
  171. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  172. package/cjs/internal/Calendar/MonthView.js +5 -4
  173. package/cjs/internal/Calendar/MonthView.js.map +1 -1
  174. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +4 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  178. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +23 -5
  179. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  180. package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
  181. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  182. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  183. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -2
  184. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  185. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  186. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  187. package/cjs/internal/DataTids/DataTids.js +46 -0
  188. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  189. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  190. package/cjs/internal/DataTids/DataTids.styles.js +41 -0
  191. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  192. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  193. package/cjs/internal/DataTids/componentsDataTids.js +16 -0
  194. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
  196. package/cjs/internal/DateSelect/DateSelect.js +8 -3
  197. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  198. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  199. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +14 -6
  200. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  201. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  204. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -0
  205. package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
  206. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  207. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
  208. package/cjs/internal/InternalMenu/InternalMenu.js +9 -8
  209. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  210. package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
  211. package/cjs/internal/MaskedInput/MaskedInput.js +11 -5
  212. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  213. package/cjs/internal/Menu/Menu.d.ts +3 -0
  214. package/cjs/internal/Menu/Menu.js +10 -8
  215. package/cjs/internal/Menu/Menu.js.map +1 -1
  216. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  217. package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
  218. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  219. package/cjs/internal/Popup/Popup.d.ts +5 -0
  220. package/cjs/internal/Popup/Popup.js +10 -4
  221. package/cjs/internal/Popup/Popup.js.map +1 -1
  222. package/cjs/internal/Popup/PopupPin.js +2 -1
  223. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  224. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
  225. package/cjs/internal/PopupMenu/PopupMenu.js +9 -4
  226. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  227. package/cjs/internal/icons/16px/index.js +1 -1
  228. package/cjs/internal/icons/16px/index.js.map +1 -1
  229. package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
  230. package/cjs/lib/date/InternalDateGetter.js +4 -1
  231. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  232. package/cjs/lib/date/InternalDateValidator.js +32 -22
  233. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  234. package/cjs/lib/date/types.d.ts +4 -0
  235. package/cjs/lib/date/types.js.map +1 -1
  236. package/cjs/lib/events/MouseDrag.js +5 -1
  237. package/cjs/lib/events/MouseDrag.js.map +1 -1
  238. package/cjs/lib/listenFocusOutside.js +1 -1
  239. package/cjs/lib/listenFocusOutside.js.map +1 -1
  240. package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -6
  241. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  242. package/components/Autocomplete/Autocomplete.d.ts +3 -0
  243. package/components/Button/Button/Button.js +5 -1
  244. package/components/Button/Button/Button.js.map +1 -1
  245. package/components/Button/Button.d.ts +3 -0
  246. package/components/Button/Button.styles/Button.styles.js +6 -6
  247. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  248. package/components/Button/Button.styles.d.ts +1 -1
  249. package/components/Center/Center/Center.js +10 -5
  250. package/components/Center/Center/Center.js.map +1 -1
  251. package/components/Center/Center.d.ts +3 -0
  252. package/components/Checkbox/Checkbox/Checkbox.js +33 -2
  253. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  254. package/components/Checkbox/Checkbox.d.ts +8 -0
  255. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +20 -17
  256. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  257. package/components/Checkbox/Checkbox.styles.d.ts +1 -0
  258. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +27 -12
  259. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  260. package/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  261. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
  262. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  263. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  264. package/components/DateInput/DateInput/DateInput.js +9 -1
  265. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  266. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +9 -3
  267. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  268. package/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  269. package/components/DateInput/helpers/inputNumber/inputNumber.js +53 -16
  270. package/components/DateInput/helpers/inputNumber/inputNumber.js.map +1 -1
  271. package/components/DateInput/helpers/inputNumber.d.ts +1 -1
  272. package/components/DatePicker/DatePicker/DatePicker.js +6 -0
  273. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  274. package/components/DatePicker/DatePicker.d.ts +5 -0
  275. package/components/DatePicker/Picker/Picker.js +3 -1
  276. package/components/DatePicker/Picker/Picker.js.map +1 -1
  277. package/components/Dropdown/Dropdown/Dropdown.js +9 -5
  278. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  279. package/components/Dropdown/Dropdown.d.ts +3 -0
  280. package/components/FileUploader/FileUploader/FileUploader.js +9 -2
  281. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  282. package/components/FileUploader/FileUploader.d.ts +5 -0
  283. package/components/FxInput/FxInput/FxInput.js +6 -2
  284. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  285. package/components/FxInput/FxInput.d.ts +3 -0
  286. package/components/Gapped/Gapped/Gapped.js +14 -6
  287. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  288. package/components/Gapped/Gapped.d.ts +4 -0
  289. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -1
  290. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  291. package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  292. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +1 -2
  293. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  294. package/components/Group/Group/Group.js +4 -0
  295. package/components/Group/Group/Group.js.map +1 -1
  296. package/components/Group/Group.d.ts +3 -0
  297. package/components/Input/Input/Input.js +11 -6
  298. package/components/Input/Input/Input.js.map +1 -1
  299. package/components/Input/Input.d.ts +3 -0
  300. package/components/Link/Link/Link.js +11 -6
  301. package/components/Link/Link/Link.js.map +1 -1
  302. package/components/Link/Link.d.ts +4 -1
  303. package/components/Loader/Loader/Loader.js +10 -6
  304. package/components/Loader/Loader/Loader.js.map +1 -1
  305. package/components/Loader/Loader.d.ts +4 -0
  306. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  307. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  308. package/components/MenuHeader/MenuHeader.d.ts +3 -0
  309. package/components/MenuItem/MenuItem/MenuItem.js +16 -10
  310. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  311. package/components/MenuItem/MenuItem.d.ts +5 -1
  312. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
  313. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  314. package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  315. package/components/Modal/Modal/Modal.js +7 -2
  316. package/components/Modal/Modal/Modal.js.map +1 -1
  317. package/components/Modal/Modal.d.ts +5 -0
  318. package/components/Modal/ModalClose/ModalClose.js +2 -1
  319. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  320. package/components/Modal/ModalFooter/ModalFooter.js +4 -0
  321. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  322. package/components/Modal/ModalFooter.d.ts +3 -0
  323. package/components/Modal/ModalHeader/ModalHeader.js +4 -0
  324. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  325. package/components/Modal/ModalHeader.d.ts +3 -0
  326. package/components/Paging/Paging/Paging.js +12 -5
  327. package/components/Paging/Paging/Paging.js.map +1 -1
  328. package/components/Paging/Paging.d.ts +8 -1
  329. package/components/PasswordInput/PasswordInput/PasswordInput.js +24 -19
  330. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  331. package/components/PasswordInput/PasswordInput.d.ts +6 -1
  332. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +8 -3
  333. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -1
  334. package/components/Radio/Radio/Radio.js +10 -5
  335. package/components/Radio/Radio/Radio.js.map +1 -1
  336. package/components/Radio/Radio.d.ts +3 -0
  337. package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -11
  338. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  339. package/components/RadioGroup/RadioGroup.d.ts +9 -0
  340. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +6 -1
  341. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  342. package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  343. package/components/Select/Select/Select.js +9 -3
  344. package/components/Select/Select/Select.js.map +1 -1
  345. package/components/Select/Select.d.ts +3 -0
  346. package/components/SidePage/SidePage/SidePage.js +6 -2
  347. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  348. package/components/SidePage/SidePage.d.ts +4 -0
  349. package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
  350. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  351. package/components/SidePage/SidePageBody.d.ts +3 -0
  352. package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
  353. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  354. package/components/SidePage/SidePageContainer.d.ts +3 -0
  355. package/components/SidePage/SidePageFooter/SidePageFooter.js +10 -6
  356. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  357. package/components/SidePage/SidePageFooter.d.ts +3 -0
  358. package/components/SidePage/SidePageHeader/SidePageHeader.js +12 -7
  359. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  360. package/components/SidePage/SidePageHeader.d.ts +4 -0
  361. package/components/Spinner/Spinner/Spinner.js +8 -4
  362. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  363. package/components/Spinner/Spinner.d.ts +3 -0
  364. package/components/Sticky/Sticky/Sticky.js +4 -0
  365. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  366. package/components/Sticky/Sticky.d.ts +3 -0
  367. package/components/Switcher/Switcher/Switcher.js +4 -0
  368. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  369. package/components/Switcher/Switcher.d.ts +3 -0
  370. package/components/Tabs/Indicator/Indicator.js +2 -0
  371. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  372. package/components/Tabs/Tab/Tab.js +4 -0
  373. package/components/Tabs/Tab/Tab.js.map +1 -1
  374. package/components/Tabs/Tab.d.ts +3 -0
  375. package/components/Tabs/Tabs/Tabs.js +11 -6
  376. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  377. package/components/Tabs/Tabs.d.ts +4 -0
  378. package/components/Textarea/Textarea/Textarea.js +15 -9
  379. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  380. package/components/Textarea/Textarea.d.ts +4 -0
  381. package/components/Textarea/TextareaCounter/TextareaCounter.js +8 -3
  382. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  383. package/components/Toast/Toast/Toast.js +16 -10
  384. package/components/Toast/Toast/Toast.js.map +1 -1
  385. package/components/Toast/Toast.d.ts +6 -0
  386. package/components/Toast/ToastStatic/ToastStatic.js +2 -2
  387. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  388. package/components/Toast/ToastView/ToastView.js +4 -3
  389. package/components/Toast/ToastView/ToastView.js.map +1 -1
  390. package/components/Toggle/Toggle/Toggle.js +8 -4
  391. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  392. package/components/Toggle/Toggle.d.ts +3 -0
  393. package/components/Token/Token/Token.js +4 -0
  394. package/components/Token/Token/Token.js.map +1 -1
  395. package/components/Token/Token.d.ts +3 -0
  396. package/components/TokenInput/TokenInput/TokenInput.js +11 -2
  397. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  398. package/components/TokenInput/TokenInput.d.ts +14 -0
  399. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
  400. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  401. package/components/Tooltip/Tooltip/Tooltip.js +4 -0
  402. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  403. package/components/Tooltip/Tooltip.d.ts +3 -0
  404. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +16 -12
  405. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  406. package/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  407. package/internal/Calendar/Calendar/Calendar.js +7 -1
  408. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  409. package/internal/Calendar/Calendar.d.ts +6 -0
  410. package/internal/Calendar/MonthView/MonthView.js +4 -3
  411. package/internal/Calendar/MonthView/MonthView.js.map +1 -1
  412. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +4 -5
  413. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  414. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  415. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +12 -5
  416. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  417. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  418. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
  419. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  420. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -0
  421. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  422. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  423. package/internal/DataTids/DATATIDS.md +12 -0
  424. package/internal/DataTids/DataTids/DataTids.js +69 -0
  425. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  426. package/internal/DataTids/DataTids/package.json +6 -0
  427. package/internal/DataTids/DataTids.d.ts +12 -0
  428. package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
  429. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  430. package/internal/DataTids/DataTids.styles/package.json +6 -0
  431. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  432. package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
  433. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  434. package/internal/DataTids/componentsDataTids/package.json +6 -0
  435. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  436. package/internal/DateSelect/DateSelect/DateSelect.js +6 -2
  437. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  438. package/internal/DateSelect/DateSelect.d.ts +4 -0
  439. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +12 -5
  440. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  441. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  442. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
  443. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  444. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  445. package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
  446. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  447. package/internal/InputLikeText/InputLikeText.d.ts +4 -0
  448. package/internal/InternalMenu/InternalMenu/InternalMenu.js +6 -6
  449. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  450. package/internal/InternalMenu/InternalMenu.d.ts +3 -0
  451. package/internal/MaskedInput/MaskedInput/MaskedInput.js +8 -2
  452. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  453. package/internal/MaskedInput/MaskedInput.d.ts +3 -0
  454. package/internal/Menu/Menu/Menu.js +6 -5
  455. package/internal/Menu/Menu/Menu.js.map +1 -1
  456. package/internal/Menu/Menu.d.ts +3 -0
  457. package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
  458. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  459. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  460. package/internal/Popup/Popup/Popup.js +7 -2
  461. package/internal/Popup/Popup/Popup.js.map +1 -1
  462. package/internal/Popup/Popup.d.ts +5 -0
  463. package/internal/Popup/PopupPin/PopupPin.js +2 -0
  464. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  465. package/internal/PopupMenu/PopupMenu/PopupMenu.js +7 -2
  466. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  467. package/internal/PopupMenu/PopupMenu.d.ts +4 -0
  468. package/internal/icons/16px/index/index.js +1 -1
  469. package/internal/icons/16px/index/index.js.map +1 -1
  470. package/lib/date/InternalDateGetter/InternalDateGetter.js +3 -1
  471. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  472. package/lib/date/InternalDateGetter.d.ts +1 -1
  473. package/lib/date/InternalDateValidator/InternalDateValidator.js +55 -41
  474. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  475. package/lib/date/types/types.js.map +1 -1
  476. package/lib/date/types.d.ts +4 -0
  477. package/lib/events/MouseDrag/MouseDrag.js +5 -1
  478. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  479. package/lib/listenFocusOutside/listenFocusOutside.js +1 -1
  480. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  481. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["PasswordInput.tsx"],"names":["React","PropTypes","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","styles","PasswordInputIcon","PasswordInput","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","onKeyDown","handleToggleVisibility","prevState","handleFocus","onBlur","renderEye","iconWrapper","capsLockDetector","toggleVisibility","theme","getEyeWrapperClassname","disabled","refInput","element","renderMain","rest","inputProps","rightIcon","root","componentDidMount","window","document","msCapsLockWarningOff","getDerivedStateFromProps","render","setRootNode","right","size","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport { Input, InputProps } from '../Input';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\n\nexport interface PasswordInputProps extends CommonProps, InputProps {\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n capsLockEnabled?: boolean | null;\n}\n\n/**\n * Компонент для ввода пароля\n */\n@rootNode\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n\n public static propTypes = {\n /**\n * Включает CapsLock детектор\n */\n detectCapsLock: PropTypes.bool,\n };\n\n public static defaultProps = {\n size: 'small',\n };\n\n public state: PasswordInputState = {\n visible: false,\n capsLockEnabled: false,\n };\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-ignore\n if (isIE11 && !window.document.msCapsLockWarningOff) {\n // turns off default ie capslock warning\n // @ts-ignore\n window.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n this.handleBlur();\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.handleFocus);\n };\n\n private handleFocus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleBlur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private onBlur = (e: React.FocusEvent<HTMLInputElement, Element>) => {\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n\n this.setState({ visible: false });\n };\n\n private getEyeWrapperClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && <span className={styles.capsLockDetector()} data-tid=\"PasswordInputCapsLockDetector\" />}\n <span\n data-tid=\"PasswordInputEyeIcon\"\n className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}\n onClick={this.handleToggleVisibility}\n >\n {!this.props.disabled && <PasswordInputIcon visible={this.state.visible} />}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n const { detectCapsLock, ...rest } = props;\n const inputProps = {\n ...rest,\n onBlur: this.onBlur,\n onKeyDown: this.handleKeydown,\n onKeyPress: this.handleKeyPress,\n rightIcon: this.renderEye(),\n };\n\n return (\n <div className={styles.root()}>\n <Input ref={this.refInput} type={this.state.visible ? 'text' : 'password'} {...inputProps} />\n </div>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["PasswordInput.tsx"],"names":["React","PropTypes","RenderLayer","isNonNullable","isKeyCapsLock","KeyboardEventCodes","Codes","Input","isIE11","CommonWrapper","ThemeContext","cx","rootNode","styles","PasswordInputIcon","PasswordInputDataTids","root","capsLockDetector","eyeIcon","PasswordInput","state","visible","capsLockEnabled","focus","input","blur","handleBlur","handleKeyPress","e","props","onKeyPress","detectCapsLock","getModifierState","CapsLock","setState","handleKeydown","onKeyDown","handleToggleVisibility","prevState","handleFocus","renderEye","iconWrapper","toggleVisibility","theme","getEyeWrapperClassname","disabled","refInput","element","hideSymbols","renderMain","rest","inputProps","rightIcon","componentDidMount","window","document","msCapsLockWarningOff","getDerivedStateFromProps","render","setRootNode","right","size","eyeWrapperLarge","eyeWrapperMedium","eyeWrapperSmall","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyCapsLock } from '../../lib/events/keyboard/identifiers';\nimport { KeyboardEventCodes as Codes } from '../../lib/events/keyboard/KeyboardEventCodes';\nimport { Input, InputProps } from '../Input';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './PasswordInput.styles';\nimport { PasswordInputIcon } from './PasswordInputIcon';\n\nexport interface PasswordInputProps extends CommonProps, InputProps {\n detectCapsLock?: boolean;\n}\n\nexport interface PasswordInputState {\n visible: boolean;\n capsLockEnabled?: boolean | null;\n}\n\nexport const PasswordInputDataTids = {\n root: 'PasswordInput',\n capsLockDetector: 'PasswordInputCapsLockDetector',\n eyeIcon: 'PasswordInputEyeIcon',\n} as const;\n\n/**\n * Компонент для ввода пароля\n */\n@rootNode\nexport class PasswordInput extends React.PureComponent<PasswordInputProps, PasswordInputState> {\n public static __KONTUR_REACT_UI__ = 'PasswordInput';\n\n public static propTypes = {\n /**\n * Включает CapsLock детектор\n */\n detectCapsLock: PropTypes.bool,\n };\n\n public static defaultProps = {\n size: 'small',\n };\n\n public state: PasswordInputState = {\n visible: false,\n capsLockEnabled: false,\n };\n\n private theme!: Theme;\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.detectCapsLock) {\n this.setState({ capsLockEnabled: null });\n }\n\n // @ts-ignore\n if (isIE11 && !window.document.msCapsLockWarningOff) {\n // turns off default ie capslock warning\n // @ts-ignore\n window.document.msCapsLockWarningOff = true;\n }\n }\n\n public static getDerivedStateFromProps(props: PasswordInputProps, state: PasswordInputState) {\n if (props.disabled) {\n return { visible: false };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n this.handleBlur();\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { onKeyPress, detectCapsLock } = this.props;\n\n if (onKeyPress) {\n onKeyPress(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n const capsLockEnabled = e.getModifierState(Codes.CapsLock);\n\n this.setState({ capsLockEnabled });\n };\n\n private handleKeydown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const {\n props: { detectCapsLock, onKeyDown },\n state: { capsLockEnabled },\n } = this;\n\n if (onKeyDown) {\n onKeyDown(e);\n }\n\n if (!detectCapsLock) {\n return;\n }\n\n if (isKeyCapsLock(e) && isNonNullable(capsLockEnabled)) {\n this.setState({ capsLockEnabled: !capsLockEnabled });\n }\n };\n\n private handleToggleVisibility = () => {\n this.setState((prevState) => ({ visible: !prevState.visible }), this.handleFocus);\n };\n\n private handleFocus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n private handleBlur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getEyeWrapperClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return styles.eyeWrapperLarge(this.theme);\n case 'medium':\n return styles.eyeWrapperMedium(this.theme);\n case 'small':\n default:\n return styles.eyeWrapperSmall(this.theme);\n }\n }\n\n private renderEye = () => {\n const { capsLockEnabled } = this.state;\n\n return (\n <span className={styles.iconWrapper()}>\n {capsLockEnabled && (\n <span className={styles.capsLockDetector()} data-tid={PasswordInputDataTids.capsLockDetector} />\n )}\n <span\n data-tid={PasswordInputDataTids.eyeIcon}\n className={cx(styles.toggleVisibility(this.theme), this.getEyeWrapperClassname())}\n onClick={this.handleToggleVisibility}\n >\n {!this.props.disabled && <PasswordInputIcon visible={this.state.visible} />}\n </span>\n </span>\n );\n };\n\n private refInput = (element: Input) => {\n this.input = element;\n };\n\n private hideSymbols = () => {\n this.setState({ visible: false });\n };\n\n private renderMain = (props: CommonWrapperRestProps<PasswordInputProps>) => {\n const { detectCapsLock, ...rest } = props;\n const inputProps = {\n ...rest,\n onKeyDown: this.handleKeydown,\n onKeyPress: this.handleKeyPress,\n rightIcon: this.renderEye(),\n };\n\n return (\n <RenderLayer onFocusOutside={this.hideSymbols} onClickOutside={this.hideSymbols}>\n <div data-tid={PasswordInputDataTids.root} className={styles.root()}>\n <Input ref={this.refInput} type={this.state.visible ? 'text' : 'password'} {...inputProps} />\n </div>\n </RenderLayer>\n );\n };\n}\n"]}
@@ -9,6 +9,11 @@ export interface PasswordInputState {
9
9
  visible: boolean;
10
10
  capsLockEnabled?: boolean | null;
11
11
  }
12
+ export declare const PasswordInputDataTids: {
13
+ readonly root: "PasswordInput";
14
+ readonly capsLockDetector: "PasswordInputCapsLockDetector";
15
+ readonly eyeIcon: "PasswordInputEyeIcon";
16
+ };
12
17
  /**
13
18
  * Компонент для ввода пароля
14
19
  */
@@ -43,9 +48,9 @@ export declare class PasswordInput extends React.PureComponent<PasswordInputProp
43
48
  private handleToggleVisibility;
44
49
  private handleFocus;
45
50
  private handleBlur;
46
- private onBlur;
47
51
  private getEyeWrapperClassname;
48
52
  private renderEye;
49
53
  private refInput;
54
+ private hideSymbols;
50
55
  private renderMain;
51
56
  }
@@ -2,9 +2,14 @@ import React from 'react';
2
2
  import { EyeClosedIcon, EyeOpenedIcon } from "../../../internal/icons/16px";
3
3
  export var PasswordInputIcon = function PasswordInputIcon(_ref) {
4
4
  var visible = _ref.visible;
5
- return visible ? /*#__PURE__*/React.createElement(EyeClosedIcon, {
6
- size: 14
7
- }) : /*#__PURE__*/React.createElement(EyeOpenedIcon, {
5
+
6
+ if (visible) {
7
+ return /*#__PURE__*/React.createElement(EyeClosedIcon, {
8
+ size: 14
9
+ });
10
+ }
11
+
12
+ return /*#__PURE__*/React.createElement(EyeOpenedIcon, {
8
13
  size: 14
9
14
  });
10
15
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["PasswordInputIcon.tsx"],"names":["React","EyeClosedIcon","EyeOpenedIcon","PasswordInputIcon","visible"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,aAAT,EAAwBC,aAAxB,QAA6C,2BAA7C;;;;;;AAMA,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,OAAyC,KAAtCC,OAAsC,QAAtCA,OAAsC;AACxE,SAAOA,OAAO,gBAAG,oBAAC,aAAD,IAAe,IAAI,EAAE,EAArB,GAAH,gBAAiC,oBAAC,aAAD,IAAe,IAAI,EAAE,EAArB,GAA/C;AACD,CAFM","sourcesContent":["import React from 'react';\n\nimport { EyeClosedIcon, EyeOpenedIcon } from '../../internal/icons/16px';\n\nimport { PasswordInputState } from './PasswordInput';\n\nexport type PasswordInputIconProps = Pick<PasswordInputState, 'visible'>;\n\nexport const PasswordInputIcon = ({ visible }: PasswordInputIconProps) => {\n return visible ? <EyeClosedIcon size={14} /> : <EyeOpenedIcon size={14} />;\n};\n"]}
1
+ {"version":3,"sources":["PasswordInputIcon.tsx"],"names":["React","EyeClosedIcon","EyeOpenedIcon","PasswordInputIcon","visible"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,aAAT,EAAwBC,aAAxB,QAA6C,2BAA7C;;;;;;AAMA,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,OAAyC,KAAtCC,OAAsC,QAAtCA,OAAsC;AACxE,MAAIA,OAAJ,EAAa;AACX,wBAAO,oBAAC,aAAD,IAAe,IAAI,EAAE,EAArB,GAAP;AACD;;AAED,sBAAO,oBAAC,aAAD,IAAe,IAAI,EAAE,EAArB,GAAP;AACD,CANM","sourcesContent":["import React from 'react';\n\nimport { EyeClosedIcon, EyeOpenedIcon } from '../../internal/icons/16px';\n\nimport { PasswordInputState } from './PasswordInput';\n\nexport type PasswordInputIconProps = Pick<PasswordInputState, 'visible'>;\n\nexport const PasswordInputIcon = ({ visible }: PasswordInputIconProps) => {\n if (visible) {\n return <EyeClosedIcon size={14} />;\n }\n\n return <EyeOpenedIcon size={14} />;\n};\n"]}
@@ -15,11 +15,14 @@ import { fixFirefoxModifiedClickOnLabel } from "../../../lib/events/fixFirefoxMo
15
15
  import { isEdge, isIE11 } from "../../../lib/client";
16
16
  import { RadioGroupContext } from "../../RadioGroup/RadioGroupContext";
17
17
  import { styles, globalClasses } from "../Radio.styles";
18
- export
18
+ export var RadioDataTids = {
19
+ root: 'Radio__root'
20
+ };
19
21
  /**
20
- * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
21
- */
22
- var Radio = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
22
+ * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
23
+ */
24
+
25
+ export var Radio = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
23
26
  _inheritsLoose(Radio, _React$Component);
24
27
 
25
28
  function Radio() {
@@ -92,7 +95,9 @@ var Radio = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
92
95
  radioProps.className = cx(radioProps.className, (_cx4 = {}, _cx4[styles.checked(_this.theme)] = checked, _cx4[styles.checkedDisabled(_this.theme)] = checked && disabled, _cx4));
93
96
  }
94
97
 
95
- return /*#__PURE__*/React.createElement("label", labelProps, /*#__PURE__*/React.createElement("input", inputProps), /*#__PURE__*/React.createElement("span", radioProps, /*#__PURE__*/React.createElement("span", {
98
+ return /*#__PURE__*/React.createElement("label", _extends({
99
+ "data-tid": RadioDataTids.root
100
+ }, labelProps), /*#__PURE__*/React.createElement("input", inputProps), /*#__PURE__*/React.createElement("span", radioProps, /*#__PURE__*/React.createElement("span", {
96
101
  className: styles.placeholder()
97
102
  })), _this.props.children && _this.renderCaption());
98
103
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.tsx"],"names":["React","ThemeContext","CommonWrapper","cx","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","styles","globalClasses","Radio","state","focusedByKeyboard","context","inputEl","createRef","renderMain","props","disabled","warning","error","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","circle","theme","checked","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","root","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","defaultProps","contextType"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.circle(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = cx(styles.root(this.theme), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
1
+ {"version":3,"sources":["Radio.tsx"],"names":["React","ThemeContext","CommonWrapper","cx","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","styles","globalClasses","RadioDataTids","root","Radio","state","focusedByKeyboard","context","inputEl","createRef","renderMain","props","disabled","warning","error","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","circle","theme","checked","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","defaultProps","contextType"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.circle(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = cx(styles.root(this.theme), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const captionClassNames = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
@@ -40,6 +40,9 @@ export interface RadioProps<T> extends CommonProps, Override<React.InputHTMLAttr
40
40
  export interface RadioState {
41
41
  focusedByKeyboard: boolean;
42
42
  }
43
+ export declare const RadioDataTids: {
44
+ readonly root: "Radio__root";
45
+ };
43
46
  /**
44
47
  * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
45
48
  */
@@ -57,17 +57,20 @@ import { rootNode } from "../../../lib/rootNode";
57
57
  import { styles } from "../RadioGroup.styles";
58
58
  import { Prevent } from "../Prevent";
59
59
  import { RadioGroupContext } from "../RadioGroupContext";
60
- export
60
+ export var RadioGroupDataTids = {
61
+ root: 'RadioGroup__root'
62
+ };
61
63
  /**
62
- *
63
- * `children` может содержать любую разметку с компонентами Radio,
64
- * если не передан параметр `items`.
65
- * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
66
- * как и параметр `value` самой радиогруппы.
67
- *
68
- * Значения активного элемента сравниваются по строгому равенству `===`
69
- */
70
- var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
64
+ *
65
+ * `children` может содержать любую разметку с компонентами Radio,
66
+ * если не передан параметр `items`.
67
+ * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
68
+ * как и параметр `value` самой радиогруппы.
69
+ *
70
+ * Значения активного элемента сравниваются по строгому равенству `===`
71
+ */
72
+
73
+ export var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
71
74
  _inheritsLoose(RadioGroup, _React$Component);
72
75
 
73
76
  function RadioGroup(props) {
@@ -116,7 +119,7 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
116
119
  var _cx;
117
120
 
118
121
  var itemProps = {
119
- key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,
122
+ key: _this.getKeyByItem(itemValue),
120
123
  className: cx((_cx = {}, _cx[styles.item(_this.theme)] = true, _cx[styles.itemFirst()] = index === 0, _cx[styles.itemInline()] = !!_this.props.inline, _cx))
121
124
  };
122
125
  return /*#__PURE__*/React.createElement("span", itemProps, /*#__PURE__*/React.createElement(Radio, {
@@ -124,6 +127,14 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
124
127
  }, _this.getProps().renderItem(itemValue, data)));
125
128
  };
126
129
 
130
+ _this.getKeyByItem = function (itemValue) {
131
+ if (_this.props.toKey) {
132
+ return _this.props.toKey(itemValue);
133
+ }
134
+
135
+ return typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : undefined;
136
+ };
137
+
127
138
  _this.ref = function (element) {
128
139
  _this.node = element;
129
140
  };
@@ -165,6 +176,7 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
165
176
  }, this.props), /*#__PURE__*/React.createElement(FocusTrap, {
166
177
  onBlur: onBlur
167
178
  }, /*#__PURE__*/React.createElement("span", _extends({
179
+ "data-tid": RadioGroupDataTids.root,
168
180
  ref: this.ref,
169
181
  style: style,
170
182
  className: styles.root()
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","isNonNullable","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","rootNode","styles","Prevent","RadioGroupContext","RadioGroup","props","name","getProps","defaultProps","getRadioGroupContextValue","activeItem","getValue","onSelect","handleSelect","getName","disabled","error","warning","isControlled","value","state","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","theme","itemFirst","itemInline","inline","renderItem","ref","element","node","defaultValue","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","setRootNode","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","propTypes","bool","string","oneOfType","number","func","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\nimport { RadioGroupContext, RadioGroupContextType } from './RadioGroupContext';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтролируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | Array<[T, React.ReactNode]>;\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\n/**\n *\n * `children` может содержать любую разметку с компонентами Radio,\n * если не передан параметр `items`.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n@rootNode\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inline: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n private setRootNode!: TSetRootNode;\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n private getRadioGroupContextValue = (): RadioGroupContextType<T> => {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\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 renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width ?? 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n <RadioGroupContext.Provider value={this.getRadioGroupContextValue()}>\n {this.renderChildren()}\n </RadioGroupContext.Provider>\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => isNonNullable(this.props.value);\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | Array<[T, React.ReactNode]>,\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
1
+ {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","isNonNullable","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","rootNode","styles","Prevent","RadioGroupContext","RadioGroupDataTids","root","RadioGroup","props","name","getProps","defaultProps","getRadioGroupContextValue","activeItem","getValue","onSelect","handleSelect","getName","disabled","error","warning","isControlled","value","state","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","getKeyByItem","className","item","theme","itemFirst","itemInline","inline","renderItem","toKey","undefined","ref","element","node","defaultValue","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","setRootNode","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","propTypes","bool","string","oneOfType","number","func","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"qzCAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,SAAP,MAAsB,WAAtB;;AAEA,SAASC,WAAT,EAAsBC,aAAtB,QAA2C,iBAA3C;AACA,SAASC,KAAT,QAAsB,UAAtB;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,SAAT,QAA0B,0BAA1B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,oBAAvC;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;AACA,SAASC,OAAT,QAAwB,WAAxB;AACA,SAASC,iBAAT,QAAyD,qBAAzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,OAAO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B,EAA3B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAaC,UAAb,GADCN,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BE,sBAAYO,KAAZ,EAAuC;AACrC,wCAAMA,KAAN,UADqC,MAJ/BC,IAI+B,GAJxBhB,WAAW,EAIa,OAH/BiB,QAG+B,GAHpBd,iBAAiB,CAACW,UAAU,CAACI,YAAZ,CAGG;;;;;;;AAQ/BC,IAAAA,yBAR+B,GAQH,YAAgC;AAClE,aAAO;AACLC,QAAAA,UAAU,EAAE,MAAKC,QAAL,EADP;AAELC,QAAAA,QAAQ,EAAE,MAAKC,YAFV;AAGLP,QAAAA,IAAI,EAAE,MAAKQ,OAAL,EAHD;AAILC,QAAAA,QAAQ,EAAE,MAAKV,KAAL,CAAWU,QAJhB;AAKLC,QAAAA,KAAK,EAAE,MAAKX,KAAL,CAAWW,KALb;AAMLC,QAAAA,OAAO,EAAE,MAAKZ,KAAL,CAAWY,OANf,EAAP;;AAQD,KAjBsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2E/BN,IAAAA,QA3E+B,GA2EpB,oBAAO,MAAKO,YAAL,KAAsB,MAAKb,KAAL,CAAWc,KAAjC,GAAyC,MAAKC,KAAL,CAAWV,UAA3D,EA3EoB;;AA6E/BI,IAAAA,OA7E+B,GA6ErB,oBAAM,MAAKT,KAAL,CAAWC,IAAX,IAAmB,MAAKA,IAA9B,EA7EqB;;AA+E/BY,IAAAA,YA/E+B,GA+EhB,oBAAM3B,aAAa,CAAC,MAAKc,KAAL,CAAWc,KAAZ,CAAnB,EA/EgB;;AAiF/BN,IAAAA,YAjF+B,GAiFhB,UAACM,KAAD,EAAc;AACnC,UAAI,CAAC,MAAKD,YAAL,EAAL,EAA0B;AACxB,cAAKG,QAAL,CAAc,EAAEX,UAAU,EAAES,KAAd,EAAd;AACD;AACD,UAAI,MAAKd,KAAL,CAAWiB,aAAf,EAA8B;AAC5B,cAAKjB,KAAL,CAAWiB,aAAX,CAAyBH,KAAzB;AACD;AACF,KAxFsC;;;;;;;;AAgG/BI,IAAAA,WAhG+B,GAgGjB,UAACC,SAAD,EAAeC,IAAf,EAAsCC,KAAtC,EAAqE;AACzF,UAAMC,SAAS,GAAG;AAChBC,QAAAA,GAAG,EAAE,MAAKC,YAAL,CAAkBL,SAAlB,CADW;AAEhBM,QAAAA,SAAS,EAAEjC,EAAE;AACVE,QAAAA,MAAM,CAACgC,IAAP,CAAY,MAAKC,KAAjB,CADU,IACgB,IADhB;AAEVjC,QAAAA,MAAM,CAACkC,SAAP,EAFU,IAEWP,KAAK,KAAK,CAFrB;AAGV3B,QAAAA,MAAM,CAACmC,UAAP,EAHU,IAGY,CAAC,CAAC,MAAK7B,KAAL,CAAW8B,MAHzB,OAFG,EAAlB;;;;AASA;AACE,oCAAUR,SAAV;AACE,4BAAC,KAAD,IAAO,KAAK,EAAEH,SAAd,IAA0B,MAAKjB,QAAL,GAAgB6B,UAAhB,CAA8BZ,SAA9B,EAAyCC,IAAzC,CAA1B,CADF,CADF;;;AAKD,KA/GsC;;AAiH/BI,IAAAA,YAjH+B,GAiHhB,UAACL,SAAD,EAAkB;AACvC,UAAI,MAAKnB,KAAL,CAAWgC,KAAf,EAAsB;AACpB,eAAO,MAAKhC,KAAL,CAAWgC,KAAX,CAAiBb,SAAjB,CAAP;AACD;AACD,aAAO,OAAOA,SAAP,KAAqB,QAArB,IAAiC,OAAOA,SAAP,KAAqB,QAAtD,GAAiEA,SAAjE,GAA6Ec,SAApF;AACD,KAtHsC;;AAwH/BC,IAAAA,GAxH+B,GAwHzB,UAACC,OAAD,EAA8B;AAC1C,YAAKC,IAAL,GAAYD,OAAZ;AACD,KA1HsC,CAGrC,MAAKpB,KAAL,GAAa,EACXV,UAAU,EAAE,MAAKL,KAAL,CAAWqC,YADZ,EAAb,CAHqC,aAMtC,CApCH,yCAiDSC,MAjDT,GAiDE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACX,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACY,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CA1DH,QA4DSA,UA5DT,GA4DE,sBAAoB,CAClB,kBAAmE,KAAKvC,KAAxE,CAAQwC,KAAR,eAAQA,KAAR,CAAeC,YAAf,eAAeA,YAAf,CAA6BC,WAA7B,eAA6BA,WAA7B,CAA0CC,YAA1C,eAA0CA,YAA1C,CAAwDC,MAAxD,eAAwDA,MAAxD,CACA,IAAMC,KAAK,GAAG,EACZL,KAAK,EAAEA,KAAF,WAAEA,KAAF,GAAW,MADJ,EAAd,CAGA,IAAMM,QAAQ,GAAG,EACfJ,WAAW,EAAXA,WADe,EAEfC,YAAY,EAAZA,YAFe,EAGfF,YAAY,EAAZA,YAHe,EAAjB,CAMA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKM,WAAjC,IAAkD,KAAK/C,KAAvD,gBACE,oBAAC,SAAD,IAAW,MAAM,EAAE4C,MAAnB,iBACE,uCAAM,YAAU/C,kBAAkB,CAACC,IAAnC,EAAyC,GAAG,EAAE,KAAKoC,GAAnD,EAAwD,KAAK,EAAEW,KAA/D,EAAsE,SAAS,EAAEnD,MAAM,CAACI,IAAP,EAAjF,IAAoGgD,QAApG,gBACE,oBAAC,iBAAD,CAAmB,QAAnB,IAA4B,KAAK,EAAE,KAAK1C,yBAAL,EAAnC,IACG,KAAK4C,cAAL,EADH,CADF,CADF,CADF,CADF,CAWD,CAlFH,CAoFE;AACF;AACA,KAtFA,QAuFSC,KAvFT,GAuFE,iBAAe,CACb,IAAMb,IAAI,GAAG,KAAKA,IAAlB,CACA,IAAI,CAACA,IAAL,EAAW,CACT,OACD,CAED,IAAIc,KAAK,GAAGd,IAAI,CAACe,aAAL,CAAmB,6BAAnB,CAAZ,CANa,CAQb;AACA,QAAI,CAACD,KAAD,IAAUA,KAAK,CAACxC,QAApB,EAA8B,CAC5BwC,KAAK,GAAGd,IAAI,CAACe,aAAL,CAAmB,qCAAnB,CAAR,CACD,CAED,IAAID,KAAJ,EAAW,CACTA,KAAK,CAACD,KAAN,GACD,CACF,CAvGH,QAwHUD,cAxHV,GAwHE,0BAAyB,CACvB,mBAA4B,KAAKhD,KAAjC,CAAQoD,KAAR,gBAAQA,KAAR,CAAeC,QAAf,gBAAeA,QAAf,CACArE,SAAS,CAAE,CAACoE,KAAD,IAAUC,QAAX,IAAyBD,KAAK,IAAI,CAACC,QAApC,EAA+C,mDAA/C,CAAT,CACA,OAAOD,KAAK,GAAGE,QAAQ,CAAI,KAAKpC,WAAT,EAAsBkC,KAAtB,CAAX,GAA0CC,QAAtD,CACD,CA5HH,qBAAmCvE,KAAK,CAACyE,SAAzC,WACgBC,mBADhB,GACsC,YADtC,UAGgBC,SAHhB,GAG4B,EACxBJ,QAAQ,EAAEtE,SAAS,CAACqD,IADI,EAExB1B,QAAQ,EAAE3B,SAAS,CAAC2E,IAFI,EAGxB/C,KAAK,EAAE5B,SAAS,CAAC2E,IAHO,EAIxB5B,MAAM,EAAE/C,SAAS,CAAC2E,IAJM,EAKxBzD,IAAI,EAAElB,SAAS,CAAC4E,MALQ,EAMxB/C,OAAO,EAAE7B,SAAS,CAAC2E,IANK,EAOxBlB,KAAK,EAAEzD,SAAS,CAAC6E,SAAV,CAAoB,CAAC7E,SAAS,CAAC8E,MAAX,EAAmB9E,SAAS,CAAC4E,MAA7B,CAApB,CAPiB,EAQxBf,MAAM,EAAE7D,SAAS,CAAC+E,IARM,EASxBnB,YAAY,EAAE5D,SAAS,CAAC+E,IATA,EAUxBrB,YAAY,EAAE1D,SAAS,CAAC+E,IAVA,EAWxBpB,WAAW,EAAE3D,SAAS,CAAC+E,IAXC,EAH5B,UAiBgB3D,YAjBhB,GAiB+B,EAC3B4B,UAAU,EAAVA,UAD2B,EAjB/B,UAqBgBpC,OArBhB,GAqB0BA,OArB1B,oBA2JA,SAASoC,UAAT,CAAuBgC,MAAvB,EAAkC3C,IAAlC,EAAyD;AACvD,SAAOA,IAAP;AACD;;AAED,SAASkC,QAAT;AACEU,EADF;AAEEZ,KAFF;AAGE;AACA,MAAMa,MAAyB,GAAG,EAAlC;AACA,MAAI5C,KAAK,GAAG,CAAZ;AACA,uDAAoB+B,KAApB,wCAA2B,KAAhBc,KAAgB;AACzB,0BAAsBC,cAAc,CAAID,KAAJ,CAApC,CAAOpD,OAAP,sBAAcM,KAAd;AACA6C,IAAAA,MAAM,CAACG,IAAP,CAAYJ,EAAE,CAAClD,OAAD,EAAQM,KAAR,EAAcC,KAAd,CAAd;AACA,MAAEA,KAAF;AACD;AACD,SAAO4C,MAAP;AACD;;AAED,SAASE,cAAT,CAA2BD,KAA3B,EAAkF;AAChF,MAAI,CAACG,KAAK,CAACC,OAAN,CAAcJ,KAAd,CAAL,EAA2B;AACzB,WAAO,CAACA,KAAD,EAAQA,KAAR,CAAP;AACD;AACD,SAAOA,KAAP;AACD","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\nimport { RadioGroupContext, RadioGroupContextType } from './RadioGroupContext';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтролируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | Array<[T, React.ReactNode]>;\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n\n /**\n * Метод получения уникального ключа по элементу\n * @param item\n */\n toKey?: (item: T) => string | number;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport const RadioGroupDataTids = {\n root: 'RadioGroup__root',\n} as const;\n\n/**\n *\n * `children` может содержать любую разметку с компонентами Radio,\n * если не передан параметр `items`.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n@rootNode\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inline: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n private setRootNode!: TSetRootNode;\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n private getRadioGroupContextValue = (): RadioGroupContextType<T> => {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\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 renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width ?? 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span data-tid={RadioGroupDataTids.root} ref={this.ref} style={style} className={styles.root()} {...handlers}>\n <RadioGroupContext.Provider value={this.getRadioGroupContextValue()}>\n {this.renderChildren()}\n </RadioGroupContext.Provider>\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => isNonNullable(this.props.value);\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: this.getKeyByItem(itemValue),\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private getKeyByItem = (itemValue: T) => {\n if (this.props.toKey) {\n return this.props.toKey(itemValue);\n }\n return typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : undefined;\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | Array<[T, React.ReactNode]>,\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
@@ -28,6 +28,11 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
28
28
  * случайное имя
29
29
  */
30
30
  name?: string;
31
+ /**
32
+ * Метод получения уникального ключа по элементу
33
+ * @param item
34
+ */
35
+ toKey?: (item: T) => string | number;
31
36
  /**
32
37
  * Дизейблит все радиокнопки
33
38
  */
@@ -64,6 +69,9 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
64
69
  export interface RadioGroupState<T> {
65
70
  activeItem?: T;
66
71
  }
72
+ export declare const RadioGroupDataTids: {
73
+ readonly root: "RadioGroup__root";
74
+ };
67
75
  /**
68
76
  *
69
77
  * `children` может содержать любую разметку с компонентами Radio,
@@ -111,6 +119,7 @@ export declare class RadioGroup<T> extends React.Component<RadioGroupProps<T>, R
111
119
  private handleSelect;
112
120
  private renderChildren;
113
121
  private renderRadio;
122
+ private getKeyByItem;
114
123
  private ref;
115
124
  }
116
125
  declare function renderItem<T>(_value: T, data: React.ReactNode): React.ReactNode;
@@ -15,6 +15,10 @@ import { styles, globalClasses } from "../ScrollContainer.styles";
15
15
  import { scrollSizeParametersNames } from "../ScrollContainer.constants";
16
16
  import { getScrollYOffset, convertScrollbarXScrollState, convertScrollbarYScrollState } from "../ScrollContainer.helpers";
17
17
  import { ScrollBar } from "../ScrollBar";
18
+ export var ScrollContainerDataTids = {
19
+ root: 'ScrollContainer__root',
20
+ inner: 'ScrollContainer__inner'
21
+ };
18
22
  export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
19
23
  _inheritsLoose(ScrollContainer, _React$Component);
20
24
 
@@ -47,6 +51,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
47
51
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
48
52
  rootNodeRef: _this.setRootNode
49
53
  }, _this.props), /*#__PURE__*/React.createElement("div", {
54
+ "data-tid": ScrollContainerDataTids.root,
50
55
  className: styles.root(),
51
56
  onMouseMove: _this.handleMouseMove,
52
57
  onMouseLeave: _this.handleMouseLeave
@@ -54,7 +59,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
54
59
  style: innerStyle,
55
60
  ref: _this.refInner,
56
61
  className: cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11()),
57
- "data-tid": "ScrollContainer__inner",
62
+ "data-tid": ScrollContainerDataTids.inner,
58
63
  onScroll: _this.handleNativeScroll
59
64
  }, props.children)));
60
65
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","getDOMRect","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainer","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","root","handleMouseMove","handleMouseLeave","refInner","inner","innerIE11","handleNativeScroll","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.root()} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid=\"ScrollContainer__inner\"\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {HTMLElement} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","getDOMRect","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainerDataTids","root","inner","ScrollContainer","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n}\n\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={ScrollContainerDataTids.root}\n className={styles.root()}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {HTMLElement} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
@@ -32,6 +32,10 @@ export interface ScrollContainerProps extends CommonProps {
32
32
  */
33
33
  disabled?: boolean;
34
34
  }
35
+ export declare const ScrollContainerDataTids: {
36
+ readonly root: "ScrollContainer__root";
37
+ readonly inner: "ScrollContainer__inner";
38
+ };
35
39
  export declare class ScrollContainer extends React.Component<ScrollContainerProps> {
36
40
  static __KONTUR_REACT_UI__: string;
37
41
  static propTypes: {
@@ -81,6 +81,9 @@ var PASS_BUTTON_PROPS = {
81
81
  onMouseLeave: true,
82
82
  onMouseOver: true
83
83
  };
84
+ export var SelectDataTids = {
85
+ root: 'Select__root'
86
+ };
84
87
  export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayout(_class = rootNode(_class = _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
85
88
  _inheritsLoose(Select, _React$Component);
86
89
 
@@ -316,7 +319,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
316
319
  return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
317
320
  _this2.theme = theme;
318
321
  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
319
- value: getSelectTheme(theme, _this2.props)
322
+ value: _this2.theme
320
323
  }, _this2.renderMain());
321
324
  });
322
325
  }
@@ -352,6 +355,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
352
355
  maxWidth: this.props.maxWidth || undefined
353
356
  };
354
357
  var root = /*#__PURE__*/React.createElement("span", {
358
+ "data-tid": SelectDataTids.root,
355
359
  className: cx((_cx2 = {}, _cx2[styles.root()] = true, _cx2[styles.rootMobile(this.theme)] = isMobile, _cx2)),
356
360
  style: style
357
361
  }, button, this.getMenuRenderer());
@@ -420,13 +424,15 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
420
424
  }
421
425
  };
422
426
  var useIsCustom = this.props.use !== 'default';
423
- return /*#__PURE__*/React.createElement(Button, buttonProps, /*#__PURE__*/React.createElement("div", {
427
+ return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
428
+ value: getSelectTheme(this.theme, this.props)
429
+ }, /*#__PURE__*/React.createElement(Button, buttonProps, /*#__PURE__*/React.createElement("div", {
424
430
  className: styles.selectButtonContainer()
425
431
  }, this.props._icon && /*#__PURE__*/React.createElement("div", {
426
432
  className: this.getLeftIconClass(this.props.size)
427
433
  }, this.props._icon), /*#__PURE__*/React.createElement("span", labelProps, params.label), /*#__PURE__*/React.createElement("div", {
428
434
  className: cx(styles.arrowWrap(this.theme), (_cx4 = {}, _cx4[styles.arrowDisabled(this.theme)] = this.props.disabled, _cx4[styles.customUseArrow()] = useIsCustom, _cx4))
429
- }, /*#__PURE__*/React.createElement(ArrowChevronDownIcon, null))));
435
+ }, /*#__PURE__*/React.createElement(ArrowChevronDownIcon, null)))));
430
436
  };
431
437
 
432
438
  _proto.getSelectIconGap = function getSelectIconGap() {