@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,31 +1,68 @@
1
1
  import { LENGTH_DATE, LENGTH_MONTH, LENGTH_YEAR } from "../../../../lib/date/constants";
2
2
  import { InternalDateComponentType } from "../../../../lib/date/types";
3
- export var inputNumber = function inputNumber(type, prev, key, inputMode) {
3
+ export var inputNumber = function inputNumber(type, prev, key, inputMode, maxValue) {
4
4
  var nextInputMode = false;
5
5
  var nextValue;
6
+ var firstDigits = getFirstDigits(type, maxValue);
7
+ var maxLength = getMaxLength(type);
8
+
9
+ if (!inputMode) {
10
+ nextValue = key;
11
+ nextInputMode = Number(key) <= firstDigits;
12
+ } else {
13
+ nextValue = addKey(prev, key, maxLength);
14
+ nextInputMode = nextValue.length < maxLength;
15
+
16
+ if (!isCorrectDate(nextValue, maxValue, maxLength)) {
17
+ nextValue = prev + '';
18
+ nextInputMode = true;
19
+ }
20
+ }
21
+
22
+ return {
23
+ nextValue: nextValue,
24
+ nextInputMode: nextInputMode
25
+ };
26
+ };
27
+
28
+ function addKey(prev, key, length) {
29
+ var value = key;
30
+
31
+ if (prev !== null) {
32
+ value = "" + prev + key;
33
+ }
34
+
35
+ return value.slice(-length);
36
+ }
37
+
38
+ function isCorrectDate(value, maxValue, length) {
39
+ return Number(value) <= maxValue && (Number(value) !== 0 || value.length !== length);
40
+ }
41
+
42
+ function getFirstDigits(type, maxValue) {
6
43
  var first = 10;
7
- var length = LENGTH_YEAR;
8
44
 
9
45
  if (type === InternalDateComponentType.Month) {
10
46
  first = 1;
11
- length = LENGTH_MONTH;
12
47
  }
13
48
 
14
49
  if (type === InternalDateComponentType.Date) {
15
- first = 3;
16
- length = LENGTH_DATE;
50
+ first = Math.floor(maxValue / 10);
17
51
  }
18
52
 
19
- if (!inputMode) {
20
- nextValue = key;
21
- nextInputMode = Number(key) <= first;
22
- } else {
23
- nextValue = ("" + (prev === null ? '' : prev) + key).slice(-length);
24
- nextInputMode = nextValue.length < length;
53
+ return first;
54
+ }
55
+
56
+ function getMaxLength(type) {
57
+ var length = LENGTH_YEAR;
58
+
59
+ if (type === InternalDateComponentType.Month) {
60
+ length = LENGTH_MONTH;
25
61
  }
26
62
 
27
- return {
28
- nextValue: nextValue,
29
- nextInputMode: nextInputMode
30
- };
31
- };
63
+ if (type === InternalDateComponentType.Date) {
64
+ length = LENGTH_DATE;
65
+ }
66
+
67
+ return length;
68
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["inputNumber.tsx"],"names":["LENGTH_DATE","LENGTH_MONTH","LENGTH_YEAR","InternalDateComponentType","inputNumber","type","prev","key","inputMode","nextInputMode","nextValue","first","length","Month","Date","Number","slice"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,YAAtB,EAAoCC,WAApC,QAAuD,6BAAvD;AACA,SAAmCC,yBAAnC,QAAoE,yBAApE;;AAEA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AACzBC,IADyB;AAEzBC,IAFyB;AAGzBC,GAHyB;AAIzBC,SAJyB;AAK2C;AACpE,MAAIC,aAAa,GAAG,KAApB;AACA,MAAIC,SAAJ;AACA,MAAIC,KAAK,GAAG,EAAZ;AACA,MAAIC,MAAc,GAAGV,WAArB;AACA,MAAIG,IAAI,KAAKF,yBAAyB,CAACU,KAAvC,EAA8C;AAC5CF,IAAAA,KAAK,GAAG,CAAR;AACAC,IAAAA,MAAM,GAAGX,YAAT;AACD;AACD,MAAII,IAAI,KAAKF,yBAAyB,CAACW,IAAvC,EAA6C;AAC3CH,IAAAA,KAAK,GAAG,CAAR;AACAC,IAAAA,MAAM,GAAGZ,WAAT;AACD;AACD,MAAI,CAACQ,SAAL,EAAgB;AACdE,IAAAA,SAAS,GAAGH,GAAZ;AACAE,IAAAA,aAAa,GAAGM,MAAM,CAACR,GAAD,CAAN,IAAeI,KAA/B;AACD,GAHD,MAGO;AACLD,IAAAA,SAAS,GAAG,OAAGJ,IAAI,KAAK,IAAT,GAAgB,EAAhB,GAAqBA,IAAxB,IAA+BC,GAA/B,EAAqCS,KAArC,CAA2C,CAACJ,MAA5C,CAAZ;AACAH,IAAAA,aAAa,GAAGC,SAAS,CAACE,MAAV,GAAmBA,MAAnC;AACD;AACD,SAAO,EAAEF,SAAS,EAATA,SAAF,EAAaD,aAAa,EAAbA,aAAb,EAAP;AACD,CA1BM","sourcesContent":["import { LENGTH_DATE, LENGTH_MONTH, LENGTH_YEAR } from '../../../lib/date/constants';\nimport { InternalDateComponentRaw, InternalDateComponentType } from '../../../lib/date/types';\n\nexport const inputNumber = (\n type: InternalDateComponentType | null,\n prev: InternalDateComponentRaw,\n key: string,\n inputMode: boolean,\n): { nextValue: InternalDateComponentRaw; nextInputMode: boolean } => {\n let nextInputMode = false;\n let nextValue: string;\n let first = 10;\n let length: number = LENGTH_YEAR;\n if (type === InternalDateComponentType.Month) {\n first = 1;\n length = LENGTH_MONTH;\n }\n if (type === InternalDateComponentType.Date) {\n first = 3;\n length = LENGTH_DATE;\n }\n if (!inputMode) {\n nextValue = key;\n nextInputMode = Number(key) <= first;\n } else {\n nextValue = `${prev === null ? '' : prev}${key}`.slice(-length);\n nextInputMode = nextValue.length < length;\n }\n return { nextValue, nextInputMode };\n};\n"]}
1
+ {"version":3,"sources":["inputNumber.tsx"],"names":["LENGTH_DATE","LENGTH_MONTH","LENGTH_YEAR","InternalDateComponentType","inputNumber","type","prev","key","inputMode","maxValue","nextInputMode","nextValue","firstDigits","getFirstDigits","maxLength","getMaxLength","Number","addKey","length","isCorrectDate","value","slice","first","Month","Date","Math","floor"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,YAAtB,EAAoCC,WAApC,QAAuD,6BAAvD;AACA,SAAmCC,yBAAnC,QAAoE,yBAApE;;AAEA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AACzBC,IADyB;AAEzBC,IAFyB;AAGzBC,GAHyB;AAIzBC,SAJyB;AAKzBC,QALyB;AAM2C;AACpE,MAAIC,aAAa,GAAG,KAApB;AACA,MAAIC,SAAJ;AACA,MAAMC,WAAW,GAAGC,cAAc,CAACR,IAAD,EAAOI,QAAP,CAAlC;AACA,MAAMK,SAAS,GAAGC,YAAY,CAACV,IAAD,CAA9B;;AAEA,MAAI,CAACG,SAAL,EAAgB;AACdG,IAAAA,SAAS,GAAGJ,GAAZ;AACAG,IAAAA,aAAa,GAAGM,MAAM,CAACT,GAAD,CAAN,IAAeK,WAA/B;AACD,GAHD,MAGO;AACLD,IAAAA,SAAS,GAAGM,MAAM,CAACX,IAAD,EAAOC,GAAP,EAAYO,SAAZ,CAAlB;AACAJ,IAAAA,aAAa,GAAGC,SAAS,CAACO,MAAV,GAAmBJ,SAAnC;AACA,QAAI,CAACK,aAAa,CAACR,SAAD,EAAYF,QAAZ,EAAsBK,SAAtB,CAAlB,EAAoD;AAClDH,MAAAA,SAAS,GAAGL,IAAI,GAAG,EAAnB;AACAI,MAAAA,aAAa,GAAG,IAAhB;AACD;AACF;;AAED,SAAO,EAAEC,SAAS,EAATA,SAAF,EAAaD,aAAa,EAAbA,aAAb,EAAP;AACD,CAzBM;;AA2BP,SAASO,MAAT,CAAgBX,IAAhB,EAAgDC,GAAhD,EAA6DW,MAA7D,EAA6E;AAC3E,MAAIE,KAAK,GAAGb,GAAZ;AACA,MAAID,IAAI,KAAK,IAAb,EAAmB;AACjBc,IAAAA,KAAK,QAAMd,IAAN,GAAaC,GAAlB;AACD;AACD,SAAOa,KAAK,CAACC,KAAN,CAAY,CAACH,MAAb,CAAP;AACD;;AAED,SAASC,aAAT,CAAuBC,KAAvB,EAAsCX,QAAtC,EAAwDS,MAAxD,EAAwE;AACtE,SAAOF,MAAM,CAACI,KAAD,CAAN,IAAiBX,QAAjB,KAA8BO,MAAM,CAACI,KAAD,CAAN,KAAkB,CAAlB,IAAuBA,KAAK,CAACF,MAAN,KAAiBA,MAAtE,CAAP;AACD;;AAED,SAASL,cAAT,CAAwBR,IAAxB,EAAgEI,QAAhE,EAAkF;AAChF,MAAIa,KAAK,GAAG,EAAZ;AACA,MAAIjB,IAAI,KAAKF,yBAAyB,CAACoB,KAAvC,EAA8C;AAC5CD,IAAAA,KAAK,GAAG,CAAR;AACD;AACD,MAAIjB,IAAI,KAAKF,yBAAyB,CAACqB,IAAvC,EAA6C;AAC3CF,IAAAA,KAAK,GAAGG,IAAI,CAACC,KAAL,CAAWjB,QAAQ,GAAG,EAAtB,CAAR;AACD;AACD,SAAOa,KAAP;AACD;;AAED,SAASP,YAAT,CAAsBV,IAAtB,EAA8D;AAC5D,MAAIa,MAAM,GAAGhB,WAAb;AACA,MAAIG,IAAI,KAAKF,yBAAyB,CAACoB,KAAvC,EAA8C;AAC5CL,IAAAA,MAAM,GAAGjB,YAAT;AACD;AACD,MAAII,IAAI,KAAKF,yBAAyB,CAACqB,IAAvC,EAA6C;AAC3CN,IAAAA,MAAM,GAAGlB,WAAT;AACD;AACD,SAAOkB,MAAP;AACD","sourcesContent":["import { LENGTH_DATE, LENGTH_MONTH, LENGTH_YEAR } from '../../../lib/date/constants';\nimport { InternalDateComponentRaw, InternalDateComponentType } from '../../../lib/date/types';\n\nexport const inputNumber = (\n type: InternalDateComponentType | null,\n prev: InternalDateComponentRaw,\n key: string,\n inputMode: boolean,\n maxValue: number,\n): { nextValue: InternalDateComponentRaw; nextInputMode: boolean } => {\n let nextInputMode = false;\n let nextValue;\n const firstDigits = getFirstDigits(type, maxValue);\n const maxLength = getMaxLength(type);\n\n if (!inputMode) {\n nextValue = key;\n nextInputMode = Number(key) <= firstDigits;\n } else {\n nextValue = addKey(prev, key, maxLength);\n nextInputMode = nextValue.length < maxLength;\n if (!isCorrectDate(nextValue, maxValue, maxLength)) {\n nextValue = prev + '';\n nextInputMode = true;\n }\n }\n\n return { nextValue, nextInputMode };\n};\n\nfunction addKey(prev: InternalDateComponentRaw, key: string, length: number) {\n let value = key;\n if (prev !== null) {\n value = `${prev}${key}`;\n }\n return value.slice(-length);\n}\n\nfunction isCorrectDate(value: string, maxValue: number, length: number) {\n return Number(value) <= maxValue && (Number(value) !== 0 || value.length !== length);\n}\n\nfunction getFirstDigits(type: InternalDateComponentType | null, maxValue: number) {\n let first = 10;\n if (type === InternalDateComponentType.Month) {\n first = 1;\n }\n if (type === InternalDateComponentType.Date) {\n first = Math.floor(maxValue / 10);\n }\n return first;\n}\n\nfunction getMaxLength(type: InternalDateComponentType | null) {\n let length = LENGTH_YEAR;\n if (type === InternalDateComponentType.Month) {\n length = LENGTH_MONTH;\n }\n if (type === InternalDateComponentType.Date) {\n length = LENGTH_DATE;\n }\n return length;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { InternalDateComponentRaw, InternalDateComponentType } from '../../../lib/date/types';
2
- export declare const inputNumber: (type: InternalDateComponentType | null, prev: InternalDateComponentRaw, key: string, inputMode: boolean) => {
2
+ export declare const inputNumber: (type: InternalDateComponentType | null, prev: InternalDateComponentRaw, key: string, inputMode: boolean, maxValue: number) => {
3
3
  nextValue: InternalDateComponentRaw;
4
4
  nextInputMode: boolean;
5
5
  };
@@ -29,6 +29,11 @@ var INPUT_PASS_PROPS = {
29
29
  onKeyDown: true
30
30
  };
31
31
  export var MIN_WIDTH = 120;
32
+ export var DatePickerDataTids = {
33
+ root: 'DatePicker__root',
34
+ pickerRoot: 'Picker__root',
35
+ pickerTodayWrapper: 'Picker__todayWrapper'
36
+ };
32
37
  export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
33
38
  _inheritsLoose(DatePicker, _React$PureComponent);
34
39
 
@@ -68,6 +73,7 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
68
73
 
69
74
  if (_this.state.opened) {
70
75
  picker = /*#__PURE__*/React.createElement(DropdownContainer, {
76
+ "data-tid": DatePickerDataTids.root,
71
77
  getParent: _this.getParent,
72
78
  offsetY: 2,
73
79
  align: _this.props.menuAlign
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"iPAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,uBAAT,QAAwC,wCAAxC;AACA,SAASC,YAAT,EAAuBC,YAAvB,QAA2C,0BAA3C;AACA,SAASC,iBAAT,EAA4BC,qBAA5B,EAAmDC,yBAAnD,QAAoF,sBAApF;;;AAGA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,iBAAT,QAAkC,kCAAlC;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,aAAT,QAAmE,8BAAnE;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,WAAT,EAAsBC,QAAtB,QAAoD,oBAApD;AACA,SAASC,aAAT,QAA8B,iBAA9B;;AAEA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,MAAT,QAAuB,qBAAvB;;AAEA,IAAMC,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,IADY;AAEvBC,EAAAA,QAAQ,EAAE,IAFa;AAGvBC,EAAAA,OAAO,EAAE,IAHc;AAIvBC,EAAAA,KAAK,EAAE,IAJgB;AAKvBC,EAAAA,IAAI,EAAE,IALiB;AAMvBC,EAAAA,SAAS,EAAE,IANY,EAAzB;;;AASA,OAAO,IAAMC,SAAS,GAAG,GAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DP,WAAaC,UAAb,GADCZ,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFSa,IAAAA,KApFT,GAoFkC,EAAEC,MAAM,EAAE,KAAV,EAAiBC,4BAA4B,EAAE,KAA/C,EApFlC;;AAsFUC,IAAAA,KAtFV,GAsFoC,IAtFpC;AAuFUC,IAAAA,OAvFV,GAuFoB,KAvFpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJSC,IAAAA,UApJT,GAoJsB,UAACC,KAAD,EAAqE;AACvF,UAAIC,MAAM,GAAG,IAAb;;AAEA,wBAAoC,MAAKD,KAAzC,CAAQE,KAAR,eAAQA,KAAR,CAAeC,OAAf,eAAeA,OAAf,CAAwBC,OAAxB,eAAwBA,OAAxB;;AAEA,UAAMC,YAAY,GAAG,MAAKC,gBAAL,CAAsBJ,KAAtB,CAArB;AACA,UAAMK,IAAI,GAAGF,YAAY,GAAGA,YAAY,CAACG,cAAb,EAAH,GAAmC,IAA5D;;AAEA,UAAMC,aAAa,GAAG,MAAKH,gBAAL,CAAsBH,OAAtB,CAAtB;AACA,UAAMO,gBAAgB,GAAID,aAAa,IAAIA,aAAa,CAACD,cAAd,EAAlB,IAAqDG,SAA9E;;AAEA,UAAMC,aAAa,GAAG,MAAKN,gBAAL,CAAsBF,OAAtB,CAAtB;AACA,UAAMS,gBAAgB,GAAID,aAAa,IAAIA,aAAa,CAACJ,cAAd,EAAlB,IAAqDG,SAA9E;;AAEA,UAAI,MAAKjB,KAAL,CAAWC,MAAf,EAAuB;AACrBM,QAAAA,MAAM;AACJ,4BAAC,iBAAD,IAAmB,SAAS,EAAE,MAAKa,SAAnC,EAA8C,OAAO,EAAE,CAAvD,EAA0D,KAAK,EAAE,MAAKd,KAAL,CAAWe,SAA5E;AACE,4BAAC,MAAD;AACE,UAAA,KAAK,EAAER,IADT;AAEE,UAAA,OAAO,EAAEG,gBAFX;AAGE,UAAA,OAAO,EAAEG,gBAHX;AAIE,UAAA,MAAM,EAAE,MAAKG,UAJf;AAKE,UAAA,QAAQ,EAAE,MAAKC,YALjB;AAME,UAAA,eAAe,EAAE,MAAKjB,KAAL,CAAWkB,eAN9B;AAOE,UAAA,SAAS,EAAE,MAAKC,SAPlB,GADF,CADF;;;;AAaD;;AAED;AACE;AACE,UAAA,SAAS,EAAEnC,MAAM,CAACoC,IAAP,EADb;AAEE,UAAA,KAAK,EAAE,MAAKC,YAAL,EAFT;AAGE,UAAA,YAAY,EAAE,MAAKrB,KAAL,CAAWsB,YAH3B;AAIE,UAAA,YAAY,EAAE,MAAKtB,KAAL,CAAWuB,YAJ3B;AAKE,UAAA,WAAW,EAAE,MAAKvB,KAAL,CAAWwB,WAL1B;;AAOE,4BAAC,SAAD;AACMhD,QAAAA,WAAW,CAACwB,KAAD,EAAQf,gBAAR,CADjB;AAEE,UAAA,GAAG,EAAE,MAAKwC,WAFZ;AAGE,UAAA,KAAK,EAAE,MAAKzB,KAAL,CAAWE,KAAX,IAAoB,EAH7B;AAIE,UAAA,KAAK,EAAC,MAJR;AAKE,UAAA,QAAQ,MALV;AAME,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OANtB;AAOE,UAAA,OAAO,EAAE,MAAKH,KAAL,CAAWI,OAPtB;AAQE,UAAA,MAAM,EAAE,MAAKsB,UARf;AASE,UAAA,OAAO,EAAE,MAAKC,WAThB;AAUE,UAAA,aAAa,EAAE,MAAK3B,KAAL,CAAW4B,aAV5B,IAPF;;AAmBG,cAAKlC,KAAL,CAAWE,4BAAX;AACC,4BAAC,eAAD;AACE,UAAA,aAAa,EAAE,MAAKI,KAAL,CAAW4B,aAD5B;AAEE,UAAA,KAAK,EAAE,MAAK5B,KAAL,CAAWE,KAAX,IAAoB,EAF7B;AAGE,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OAHtB;AAIE,UAAA,OAAO,EAAE,MAAKH,KAAL,CAAWI,OAJtB;AAKE,UAAA,QAAQ,EAAE,MAAKJ,KAAL,CAAWb,QALvB,GApBJ;;;AA4BG,SAAC,MAAKO,KAAL,CAAWE,4BAAZ,IAA4CK,MA5B/C,CADF;;;AAgCD,KAlNH;;AAoNSa,IAAAA,SApNT,GAoNqB,YAAM;AACvB,aAAOlC,WAAW,+BAAlB;AACD,KAtNH;;AAwNUyC,IAAAA,YAxNV,GAwNyB,YAAM;AAC3B,UAAQQ,KAAR,GAAkB,MAAK7B,KAAvB,CAAQ6B,KAAR;AACA,aAAO/C,aAAa,CAAC+C,KAAD,CAAb,GAAuB,EAAEA,KAAK,EAALA,KAAF,EAAvB,GAAmC,EAAEC,QAAQ,EAAEtC,SAAZ,EAA1C;AACD,KA3NH;;AA6NUiC,IAAAA,WA7NV,GA6NwB,UAACM,GAAD,EAA2B;AAC/C,YAAKlC,KAAL,GAAakC,GAAb;AACD,KA/NH;;;;;;;;;;;;;AA4OUJ,IAAAA,WA5OV,GA4OwB,YAAM;AAC1B,UAAI,MAAK7B,OAAT,EAAkB;AAChB;AACD;;AAED,YAAKA,OAAL,GAAe,IAAf;;AAEA,YAAKkC,QAAL,CAAc,EAAErC,MAAM,EAAE,IAAV,EAAd;;AAEA,UAAI,MAAKK,KAAL,CAAWiC,OAAf,EAAwB;AACtB,cAAKjC,KAAL,CAAWiC,OAAX;AACD;AACF,KAxPH;;AA0PUP,IAAAA,UA1PV,GA0PuB,YAAM;AACzB,UAAI,CAAC,MAAK5B,OAAV,EAAmB;AACjB;AACD;;AAED,YAAKA,OAAL,GAAe,KAAf;AACA,YAAKoC,KAAL;;AAEA,UAAI,MAAKlC,KAAL,CAAWmC,MAAf,EAAuB;AACrB,cAAKnC,KAAL,CAAWmC,MAAX;AACD;AACF,KArQH;;AAuQUnB,IAAAA,UAvQV,GAuQuB,UAACoB,SAAD,EAAkC;AACrD,YAAKnB,YAAL,CAAkBmB,SAAlB;AACA,YAAKC,IAAL;AACD,KA1QH;;AA4QUpB,IAAAA,YA5QV,GA4QyB,gBAA8C,KAA3CV,IAA2C,QAA3CA,IAA2C,CAArC+B,KAAqC,QAArCA,KAAqC,CAA9BC,IAA8B,QAA9BA,IAA8B;AACnE,UAAMrC,KAAK,GAAGlC,uBAAuB,CAACwE,oBAAxB,CAA6C,EAAEjC,IAAI,EAAJA,IAAF,EAAQ+B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAd;AACA,UAAI,MAAKvC,KAAL,CAAW4B,aAAf,EAA8B;AAC5B,cAAK5B,KAAL,CAAW4B,aAAX,CAAyB1B,KAAzB;AACD;AACF,KAjRH;;AAmRUiB,IAAAA,SAnRV,GAmRsB,iBAAkF,KAA/EZ,IAA+E,SAA/EA,IAA+E,CAAzE+B,KAAyE,SAAzEA,KAAyE,CAAlEC,IAAkE,SAAlEA,IAAkE,CAA5DE,SAA4D,SAA5DA,SAA4D;AACpG,UAAMC,UAAU,GAAG1E,uBAAuB,CAACwE,oBAAxB,CAA6C,EAAEjC,IAAI,EAAJA,IAAF,EAAQ+B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAnB;AACA,aAAO,MAAKvC,KAAL,CAAWmB,SAAX,CAAqBuB,UAArB,EAAiCD,SAAjC,CAAP;AACD,KAtRH,wDA0FSE,iBA1FT,GA0FE,6BAA2B,CACzB,IAAI,KAAK3C,KAAL,CAAW4C,yBAAX,IAAwClE,QAA5C,EAAsD,CACpD,KAAKsD,QAAL,CAAc,EACZpC,4BAA4B,EAAE,IADlB,EAAd,EAGD,CACD,IAAI,KAAKI,KAAL,CAAWd,SAAf,EAA0B,CACxB,KAAK2D,KAAL,GACD,CACF,CAnGH,QAqGSC,kBArGT,GAqGE,8BAA4B,CAC1B,IAAQ3D,QAAR,GAAqB,KAAKa,KAA1B,CAAQb,QAAR,CACA,IAAQQ,MAAR,GAAmB,KAAKD,KAAxB,CAAQC,MAAR,CACA,IAAIR,QAAQ,IAAIQ,MAAhB,EAAwB,CACtB,KAAKuC,KAAL,GACD,CACF,CA3GH,CA6GE;AACF;AACA,KA/GA,QAgHSG,IAhHT,GAgHE,gBAAc,CACZ,IAAI,KAAKxC,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAWwC,IAAX,GACD,CACD,KAAKX,UAAL,GACD,CArHH,CAuHE;AACF;AACA,KAzHA,QA0HSmB,KA1HT,GA0HE,iBAAe,CACb,IAAI,KAAK7C,KAAL,CAAWb,QAAf,EAAyB,CACvB,OACD,CACD,IAAI,KAAKU,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAWgD,KAAX,GACD,CACD,KAAKlB,WAAL,GACD,CAlIH,CAoIE;AACF;AACA;AACA,KAvIA,QAwISO,KAxIT,GAwIE,iBAAe,CACb,KAAKF,QAAL,CAAc,EAAErC,MAAM,EAAE,KAAV,EAAd,EACD,CA1IH,QA4ISoD,MA5IT,GA4IE,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKhD,KAAvD,GACG,KAAKD,UADR,CADF,CAKD,CAlJH,QAiOUO,gBAjOV,GAiOE,0BAAyBJ,KAAzB,EAA6E,CAC3E,IAAIA,KAAK,KAAKS,SAAV,IAAuBT,KAAK,KAAK,IAArC,EAA2C,CACzC,OAAOS,SAAP,CACD,CACD,IAAMJ,IAAI,GAAG,IAAIxC,YAAJ,CAAiB,EAAEmC,KAAK,EAALA,KAAF,EAAjB,CAAb,CACA,IAAIK,IAAI,CAAC0C,QAAL,CAAc,EAAEC,MAAM,EAAE,CAAC7E,yBAAyB,CAAC8E,OAA3B,EAAoC9E,yBAAyB,CAAC+E,MAA9D,CAAV,EAAd,CAAJ,EAAsG,CACpG,OAAO7C,IAAP,CACD,CACD,OAAOI,SAAP,CACD,CA1OH,qBAAgC7C,KAAK,CAACuF,aAAtC,WACgBC,mBADhB,GACsC,YADtC,UAGgBC,SAHhB,GAG4B,EACxBrE,SAAS,EAAErB,SAAS,CAAC2F,IADG,EAGxBrE,QAAQ,EAAEtB,SAAS,CAAC2F,IAHI,EAKxB;AACJ;AACA,KACItC,eAAe,EAAErD,SAAS,CAAC2F,IARH,EAUxBnE,KAAK,EAAExB,SAAS,CAAC2F,IAVO,EAYxB;AACJ;AACA,KACIpD,OAAO,EAAEvC,SAAS,CAAC4F,MAAV,CAAiBC,UAfF,EAiBxB3C,SAAS,EAAElD,SAAS,CAAC8F,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAjBa,EAmBxB;AACJ;AACA,KACIxD,OAAO,EAAEtC,SAAS,CAAC4F,MAAV,CAAiBC,UAtBF,EAwBxB;AACJ;AACA,KACIxD,KAAK,EAAErC,SAAS,CAAC4F,MA3BO,EA6BxBrE,OAAO,EAAEvB,SAAS,CAAC2F,IA7BK,EA+BxB3B,KAAK,EAAEhE,SAAS,CAAC+F,SAAV,CAAoB,CAAC/F,SAAS,CAACgG,MAAX,EAAmBhG,SAAS,CAAC4F,MAA7B,CAApB,EAA0DC,UA/BzC,EAiCxBvB,MAAM,EAAEtE,SAAS,CAACiG,IAjCM,EAmCxBlC,aAAa,EAAE/D,SAAS,CAACiG,IAAV,CAAeJ,UAnCN,EAqCxBzB,OAAO,EAAEpE,SAAS,CAACiG,IArCK,EAuCxBvE,SAAS,EAAE1B,SAAS,CAACiG,IAvCG,EAyCxBxC,YAAY,EAAEzD,SAAS,CAACiG,IAzCA,EA2CxBvC,YAAY,EAAE1D,SAAS,CAACiG,IA3CA,EA6CxBtC,WAAW,EAAE3D,SAAS,CAACiG,IA7CC,EA+CxB3C,SAAS,EAAEtD,SAAS,CAACiG,IAAV,CAAeJ,UA/CF,EAH5B,UAqDgBK,YArDhB,GAqD+B,EAC3B5D,OAAO,EAAEjC,YADkB,EAE3BkC,OAAO,EAAEnC,YAFkB,EAG3BkD,SAAS,EAAE,mBAAC6C,IAAD,EAAwBvB,SAAxB,UAA+CA,SAA/C,EAHgB,EArD/B,UA2DgBQ,QA3DhB,GA2D2B,UAAC/C,KAAD,EAA0B+D,KAA1B,EAAiF,KAAvDA,KAAuD,cAAvDA,KAAuD,GAAP,EAAO,EACxG,IAAI,CAAC/D,KAAL,EAAY,CACV,OAAO,KAAP,CACD,CAED,aAA2D+D,KAA3D,yBAAQ9D,OAAR,CAAQA,OAAR,+BAAkBjC,YAAlB,0CAAgCkC,OAAhC,CAAgCA,OAAhC,+BAA0CnC,YAA1C,kBACA,IAAMoC,YAAY,GAAG,IAAItC,YAAJ,CAAiB,EACpCmG,KAAK,EAAE/F,iBAAiB,CAACgG,GADW,EAEpCC,SAAS,EAAEhG,qBAAqB,CAACiG,GAFG,EAAjB,EAIlBC,aAJkB,CAIJ,IAAIvG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEC,OAAT,EAAjB,CAJI,EAKlBoE,WALkB,CAKN,IAAIxG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEE,OAAT,EAAjB,CALM,EAMlBoE,UANkB,CAMPtE,KANO,CAArB,CAQA,OAAOG,YAAY,CAAC4C,QAAb,CAAsB,EAC3BC,MAAM,EAAE,CACN7E,yBAAyB,CAAC8E,OADpB,EAEN9E,yBAAyB,CAACoG,MAFpB,EAGNpG,yBAAyB,CAAC+E,MAHpB,EAIN/E,yBAAyB,CAACqG,MAJpB,EAKNrG,yBAAyB,CAACsG,KALpB,CADmB,EAAtB,CAAP,CASD,CAlFH","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
1
+ {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","pickerRoot","pickerTodayWrapper","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={2}\n align={this.props.menuAlign}\n >\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
@@ -54,6 +54,11 @@ export interface DatePickerState {
54
54
  canUseMobileNativeDatePicker: boolean;
55
55
  }
56
56
  declare type DatePickerValue = string;
57
+ export declare const DatePickerDataTids: {
58
+ readonly root: "DatePicker__root";
59
+ readonly pickerRoot: "Picker__root";
60
+ readonly pickerTodayWrapper: "Picker__todayWrapper";
61
+ };
57
62
  export declare class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {
58
63
  static __KONTUR_REACT_UI__: string;
59
64
  static propTypes: {
@@ -11,6 +11,7 @@ import { locale } from "../../../lib/locale/decorators";
11
11
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
12
12
  import { styles } from "../Picker.styles";
13
13
  import { DatePickerLocaleHelper } from "../locale";
14
+ import { DatePickerDataTids } from "../DatePicker";
14
15
 
15
16
  var getTodayCalendarDate = function getTodayCalendarDate() {
16
17
  var d = new Date();
@@ -101,6 +102,7 @@ export var Picker = (_dec = locale('DatePicker', DatePickerLocaleHelper), _dec(_
101
102
 
102
103
  var date = this.state.date;
103
104
  return /*#__PURE__*/React.createElement("div", {
105
+ "data-tid": DatePickerDataTids.pickerRoot,
104
106
  className: styles.root(this.theme),
105
107
  onMouseDown: function onMouseDown(e) {
106
108
  return e.preventDefault();
@@ -128,7 +130,7 @@ export var Picker = (_dec = locale('DatePicker', DatePickerLocaleHelper), _dec(_
128
130
  separator: separator
129
131
  }).setComponents(InternalDateGetter.getTodayComponents());
130
132
  return /*#__PURE__*/React.createElement("button", {
131
- "data-tid": "Picker__todayWrapper",
133
+ "data-tid": DatePickerDataTids.pickerTodayWrapper,
132
134
  className: styles.todayWrapper(this.theme),
133
135
  onClick: this.handleSelectToday(today),
134
136
  tabIndex: -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.tsx"],"names":["React","shallowEqual","InternalDate","InternalDateGetter","Calendar","isGreater","isLess","locale","ThemeContext","styles","DatePickerLocaleHelper","getTodayCalendarDate","d","Date","date","getDate","month","getMonth","year","getFullYear","Picker","props","calendar","scrollToMonth","handleSelectToday","today","onSelect","toNativeFormat","state","getInitialDate","value","minDate","maxDate","componentDidUpdate","prevProps","render","theme","renderMain","root","e","preventDefault","c","onPick","isHoliday","enableTodayLink","renderTodayLink","order","separator","setComponents","getTodayComponents","todayWrapper","toString","withPad","withSeparator","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { Calendar, CalendarDateShape, isGreater, isLess } from '../../internal/Calendar';\nimport { locale } from '../../lib/locale/decorators';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { styles } from './Picker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\ninterface Props {\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n value: Nullable<CalendarDateShape>;\n onPick: (date: CalendarDateShape) => void;\n onSelect?: (date: CalendarDateShape) => void;\n enableTodayLink?: boolean;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\ninterface State {\n date: CalendarDateShape;\n today: CalendarDateShape;\n}\n\nconst getTodayCalendarDate = () => {\n const d = new Date();\n return {\n date: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n };\n};\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class Picker extends React.Component<Props, State> {\n public static __KONTUR_REACT_UI__ = 'Picker';\n\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n constructor(props: Props) {\n super(props);\n const today = getTodayCalendarDate();\n this.state = {\n date: this.getInitialDate(today),\n today,\n };\n }\n\n public componentDidUpdate(prevProps: Props) {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n this.scrollToMonth(value.month, value.year);\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 private renderMain() {\n const { date } = this.state;\n\n return (\n <div className={styles.root(this.theme)} onMouseDown={(e) => e.preventDefault()}>\n <Calendar\n ref={(c) => (this.calendar = c)}\n value={this.props.value}\n initialMonth={date.month}\n initialYear={date.year}\n onSelect={this.props.onPick}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n isHoliday={this.props.isHoliday}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n );\n }\n\n private scrollToMonth = (month: number, year: number) => {\n if (this.calendar) {\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator }).setComponents(InternalDateGetter.getTodayComponents());\n return (\n <button\n data-tid=\"Picker__todayWrapper\"\n className={styles.todayWrapper(this.theme)}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today.toString({ withPad: true, withSeparator: true })}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: InternalDate) => () => {\n if (this.props.onSelect) {\n this.props.onSelect(today.toNativeFormat()!);\n }\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private getInitialDate = (today: CalendarDateShape) => {\n if (this.props.value) {\n return this.props.value;\n }\n\n if (this.props.minDate && isLess(today, this.props.minDate)) {\n return this.props.minDate;\n }\n\n if (this.props.maxDate && isGreater(today, this.props.maxDate)) {\n return this.props.maxDate;\n }\n\n return today;\n };\n}\n"]}
1
+ {"version":3,"sources":["Picker.tsx"],"names":["React","shallowEqual","InternalDate","InternalDateGetter","Calendar","isGreater","isLess","locale","ThemeContext","styles","DatePickerLocaleHelper","DatePickerDataTids","getTodayCalendarDate","d","Date","date","getDate","month","getMonth","year","getFullYear","Picker","props","calendar","scrollToMonth","handleSelectToday","today","onSelect","toNativeFormat","state","getInitialDate","value","minDate","maxDate","componentDidUpdate","prevProps","render","theme","renderMain","pickerRoot","root","e","preventDefault","c","onPick","isHoliday","enableTodayLink","renderTodayLink","order","separator","setComponents","getTodayComponents","pickerTodayWrapper","todayWrapper","toString","withPad","withSeparator","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { Calendar, CalendarDateShape, isGreater, isLess } from '../../internal/Calendar';\nimport { locale } from '../../lib/locale/decorators';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { styles } from './Picker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { DatePickerDataTids } from './DatePicker';\n\ninterface Props {\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n value: Nullable<CalendarDateShape>;\n onPick: (date: CalendarDateShape) => void;\n onSelect?: (date: CalendarDateShape) => void;\n enableTodayLink?: boolean;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\ninterface State {\n date: CalendarDateShape;\n today: CalendarDateShape;\n}\n\nconst getTodayCalendarDate = () => {\n const d = new Date();\n return {\n date: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n };\n};\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class Picker extends React.Component<Props, State> {\n public static __KONTUR_REACT_UI__ = 'Picker';\n\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n constructor(props: Props) {\n super(props);\n const today = getTodayCalendarDate();\n this.state = {\n date: this.getInitialDate(today),\n today,\n };\n }\n\n public componentDidUpdate(prevProps: Props) {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n this.scrollToMonth(value.month, value.year);\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 private renderMain() {\n const { date } = this.state;\n\n return (\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.root(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n value={this.props.value}\n initialMonth={date.month}\n initialYear={date.year}\n onSelect={this.props.onPick}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n isHoliday={this.props.isHoliday}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n );\n }\n\n private scrollToMonth = (month: number, year: number) => {\n if (this.calendar) {\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator }).setComponents(InternalDateGetter.getTodayComponents());\n return (\n <button\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={styles.todayWrapper(this.theme)}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today.toString({ withPad: true, withSeparator: true })}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: InternalDate) => () => {\n if (this.props.onSelect) {\n this.props.onSelect(today.toNativeFormat()!);\n }\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private getInitialDate = (today: CalendarDateShape) => {\n if (this.props.value) {\n return this.props.value;\n }\n\n if (this.props.minDate && isLess(today, this.props.minDate)) {\n return this.props.minDate;\n }\n\n if (this.props.maxDate && isGreater(today, this.props.maxDate)) {\n return this.props.maxDate;\n }\n\n return today;\n };\n}\n"]}
@@ -32,12 +32,15 @@ var PASS_PROPS = {
32
32
  onMouseLeave: true,
33
33
  onMouseOver: true
34
34
  };
35
- export
35
+ export var DropdownDataTids = {
36
+ root: 'Dropdown__root'
37
+ };
36
38
  /**
37
- * Выпадающее меню.
38
- *
39
- */
40
- var Dropdown = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
39
+ * Выпадающее меню.
40
+ *
41
+ */
42
+
43
+ export var Dropdown = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
41
44
  _inheritsLoose(Dropdown, _React$Component);
42
45
 
43
46
  function Dropdown() {
@@ -58,6 +61,7 @@ var Dropdown = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
58
61
  return item;
59
62
  }) || [];
60
63
  return /*#__PURE__*/React.createElement(Select, _extends({
64
+ "data-tid": DropdownDataTids.root,
61
65
  ref: _this._refSelect
62
66
  }, filterProps(props, PASS_PROPS), {
63
67
  value: caption,
@@ -1 +1 @@
1
- {"version":3,"sources":["Dropdown.tsx"],"names":["React","PropTypes","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","rootNode","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","Dropdown","renderMain","caption","icon","props","items","Children","map","children","item","_refSelect","renderValue","element","_select","render","setRootNode","open","close","Component","__KONTUR_REACT_UI__","Header","Separator","propTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonSize, ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface DropdownProps extends CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: ButtonSize;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <Select<React.ReactNode, React.ReactNode>\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
1
+ {"version":3,"sources":["Dropdown.tsx"],"names":["React","PropTypes","filterProps","MenuHeader","MenuItem","MenuSeparator","Select","CommonWrapper","rootNode","PASS_PROPS","_renderButton","error","disabled","disablePortal","menuAlign","menuWidth","maxMenuHeight","use","size","warning","width","onOpen","onClose","onMouseEnter","onMouseLeave","onMouseOver","DropdownDataTids","root","Dropdown","renderMain","caption","icon","props","items","Children","map","children","item","_refSelect","renderValue","element","_select","render","setRootNode","open","close","Component","__KONTUR_REACT_UI__","Header","Separator","propTypes","node","isRequired","bool","number","oneOf","oneOfType","string","any","func","value"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { filterProps } from '../../lib/filterProps';\nimport { MenuHeader } from '../MenuHeader';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { Select } from '../Select';\nimport { Nullable } from '../../typings/utility-types';\nimport { ButtonSize, ButtonUse } from '../Button';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nconst PASS_PROPS = {\n _renderButton: true,\n error: true,\n disabled: true,\n disablePortal: true,\n menuAlign: true,\n menuWidth: true,\n maxMenuHeight: true,\n use: true,\n size: true,\n warning: true,\n width: true,\n onOpen: true,\n onClose: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface DropdownProps extends CommonProps {\n /**\n * Подпись на кнопке.\n */\n caption: React.ReactNode;\n /**\n * Иконка слева от текста кнопки\n */\n icon?: React.ReactElement<any>;\n width?: React.CSSProperties['width'];\n\n /** @ignore */\n _renderButton?: (params: any) => JSX.Element;\n\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n\n /**\n * Визуально отключает Dropdown\n */\n disabled?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n maxMenuHeight?: number;\n menuAlign?: 'left' | 'right';\n menuWidth?: number | string;\n size?: ButtonSize;\n\n /**\n * Смотри Button.\n */\n use?: ButtonUse;\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose?: () => void;\n /**\n * Вызывается при открытии меню.\n */\n onOpen?: () => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\ntype DropdownSelectType = Select<React.ReactNode, React.ReactNode>;\n\nexport const DropdownDataTids = {\n root: 'Dropdown__root',\n} as const;\n\n/**\n * Выпадающее меню.\n *\n */\n@rootNode\nexport class Dropdown extends React.Component<DropdownProps> {\n public static __KONTUR_REACT_UI__ = 'Dropdown';\n\n public static Header = MenuHeader;\n public static MenuItem = MenuItem;\n public static Separator = MenuSeparator;\n\n public static propTypes = {\n /**\n * Подпись на кнопке.\n */\n caption: PropTypes.node.isRequired,\n\n /**\n * Отключает использование портала\n */\n disablePortal: PropTypes.bool,\n\n /**\n * Визуально отключает Dropdown\n */\n disabled: PropTypes.bool,\n\n /**\n * Визуально показать наличие ошибки.\n */\n error: PropTypes.bool,\n\n /**\n * Иконка слева от текста кнопки\n */\n icon: PropTypes.node,\n\n maxMenuHeight: PropTypes.number,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n menuWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n\n /**\n * Смотри Button.\n */\n use: PropTypes.any,\n\n /**\n * Визуально показать наличие предупреждения.\n */\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Вызывается при закрытии меню.\n */\n onClose: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n /**\n * Вызывается при открытии меню.\n */\n onOpen: PropTypes.func,\n };\n\n private _select: Nullable<DropdownSelectType>;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = ({ caption, icon, ...props }: CommonWrapperRestProps<DropdownProps>) => {\n const items = React.Children.map(this.props.children, (item) => item) || [];\n\n return (\n <Select<React.ReactNode, React.ReactNode>\n data-tid={DropdownDataTids.root}\n ref={this._refSelect}\n {...filterProps(props, PASS_PROPS)}\n value={caption}\n items={items}\n _icon={icon}\n renderValue={renderValue}\n />\n );\n };\n\n /**\n * @public\n */\n public open() {\n if (this._select) {\n this._select.open();\n }\n }\n\n /**\n * @public\n */\n public close() {\n if (this._select) {\n this._select.close();\n }\n }\n\n private _refSelect = (element: DropdownSelectType): void => {\n this._select = element;\n };\n}\n\nfunction renderValue(value: any) {\n return value;\n}\n"]}
@@ -53,6 +53,9 @@ export interface DropdownProps extends CommonProps {
53
53
  onMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void;
54
54
  onMouseOver?: (event: React.MouseEvent<HTMLElement>) => void;
55
55
  }
56
+ export declare const DropdownDataTids: {
57
+ readonly root: "Dropdown__root";
58
+ };
56
59
  /**
57
60
  * Выпадающее меню.
58
61
  *
@@ -26,6 +26,12 @@ var stopPropagation = function stopPropagation(e) {
26
26
  return e.stopPropagation();
27
27
  };
28
28
 
29
+ export var FileUploaderDataTids = {
30
+ root: 'FileUploader__root',
31
+ content: 'FileUploader__content',
32
+ link: 'FileUploader__link'
33
+ };
34
+
29
35
  var defaultRenderFile = function defaultRenderFile(file, fileNode) {
30
36
  return fileNode;
31
37
  };
@@ -222,6 +228,7 @@ var _FileUploader = /*#__PURE__*/React.forwardRef(function (props, ref) {
222
228
  var hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;
223
229
  var linkClassNames = cx(jsStyles.link(theme), (_cx4 = {}, _cx4[jsStyles.linkHovered(theme)] = !disabled && hovered, _cx4[jsStyles.linkDisabled(theme)] = disabled, _cx4));
224
230
  return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("div", {
231
+ "data-tid": FileUploaderDataTids.root,
225
232
  className: jsStyles.root(theme),
226
233
  style: useMemoObject({
227
234
  width: width
@@ -240,10 +247,10 @@ var _FileUploader = /*#__PURE__*/React.forwardRef(function (props, ref) {
240
247
  ref: labelRef,
241
248
  className: uploadButtonClassNames
242
249
  }, /*#__PURE__*/React.createElement("div", {
243
- "data-tid": 'FileUploader__content',
250
+ "data-tid": FileUploaderDataTids.content,
244
251
  className: jsStyles.content()
245
252
  }, /*#__PURE__*/React.createElement("span", {
246
- "data-tid": 'FileUploader__link',
253
+ "data-tid": FileUploaderDataTids.link,
247
254
  className: linkClassNames
248
255
  }, hasOneFileForSingle ? locale.choosedFile : locale.chooseFile), "\xA0", /*#__PURE__*/React.createElement("div", {
249
256
  className: jsStyles.afterLinkText()
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploader.tsx"],"names":["React","useCallback","useContext","useImperativeHandle","useRef","useState","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","UploadIcon","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","isBrowser","CommonWrapper","FileUploaderFileValidationResult","jsStyles","stopPropagation","e","defaultRenderFile","file","fileNode","_FileUploader","forwardRef","props","ref","theme","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","renderFile","inputProps","files","setFiles","removeFile","reset","setFileValidationResult","locale","inputRef","isAsync","isSingleMode","upload","tryValidateAndUpload","forEach","validationMessage","id","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","current","window","document","focus","isTabPressed","blur","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","linkClassNames","link","linkHovered","linkDisabled","root","content","choosedFile","chooseFile","afterLinkText","singleFile","orDragHere","fileInput","FileUploader","memo","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { UploadIcon } from '../../internal/icons/16px';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { isBrowser } from '../../lib/client';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\n\nimport { jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ninterface _FileUploaderProps extends CommonProps, React.InputHTMLAttributes<HTMLInputElement> {\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = React.forwardRef<FileUploaderRef, _FileUploaderProps>((props: _FileUploaderProps, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [upload, validateBeforeUpload, isAsync],\n );\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser) {\n windowRef.current = window.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset }), [ref]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(jsStyles.uploadButton(theme), {\n [jsStyles.uploadButtonFocus(theme)]: focusedByTab,\n [jsStyles.disabled(theme)]: disabled,\n [jsStyles.hovered(theme)]: !disabled && hovered,\n [jsStyles.warning(theme)]: !!warning,\n [jsStyles.error(theme)]: !!error,\n [jsStyles.dragOver(theme)]: isDraggable && !disabled,\n });\n\n const uploadButtonWrapperClassNames = cx({\n [jsStyles.windowDragOver(theme)]: isWindowDraggable && !disabled,\n });\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.iconDisabled(theme)]: disabled,\n });\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const linkClassNames = cx(jsStyles.link(theme), {\n [jsStyles.linkHovered(theme)]: !disabled && hovered,\n [jsStyles.linkDisabled(theme)]: disabled,\n });\n\n return (\n <CommonWrapper {...props}>\n <div className={jsStyles.root(theme)} style={useMemoObject({ width })}>\n {!hideFiles && !isSingleMode && !!files.length && <FileUploaderFileList renderFile={renderFile} />}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div data-tid={'FileUploader__content'} className={jsStyles.content()}>\n <span data-tid={'FileUploader__link'} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n &nbsp;\n <div className={jsStyles.afterLinkText()}>\n {hasOneFileForSingle ? (\n <div className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>\n <UploadIcon />\n </div>\n </>\n )}\n </div>\n </div>\n <input\n {...inputProps}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.fileInput()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"]}
1
+ {"version":3,"sources":["FileUploader.tsx"],"names":["React","useCallback","useContext","useImperativeHandle","useRef","useState","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","UploadIcon","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","isBrowser","CommonWrapper","FileUploaderFileValidationResult","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","defaultRenderFile","file","fileNode","_FileUploader","forwardRef","props","ref","theme","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","renderFile","inputProps","files","setFiles","removeFile","reset","setFileValidationResult","locale","inputRef","isAsync","isSingleMode","upload","tryValidateAndUpload","forEach","validationMessage","id","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","current","window","document","focus","isTabPressed","blur","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","linkClassNames","linkHovered","linkDisabled","choosedFile","chooseFile","afterLinkText","singleFile","orDragHere","fileInput","FileUploader","memo","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useImperativeHandle, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { UploadIcon } from '../../internal/icons/16px';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { isBrowser } from '../../lib/client';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\n\nimport { jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ninterface _FileUploaderProps extends CommonProps, React.InputHTMLAttributes<HTMLInputElement> {\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = React.forwardRef<FileUploaderRef, _FileUploaderProps>((props: _FileUploaderProps, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [upload, validateBeforeUpload, isAsync],\n );\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser) {\n windowRef.current = window.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset }), [ref]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(jsStyles.uploadButton(theme), {\n [jsStyles.uploadButtonFocus(theme)]: focusedByTab,\n [jsStyles.disabled(theme)]: disabled,\n [jsStyles.hovered(theme)]: !disabled && hovered,\n [jsStyles.warning(theme)]: !!warning,\n [jsStyles.error(theme)]: !!error,\n [jsStyles.dragOver(theme)]: isDraggable && !disabled,\n });\n\n const uploadButtonWrapperClassNames = cx({\n [jsStyles.windowDragOver(theme)]: isWindowDraggable && !disabled,\n });\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.iconDisabled(theme)]: disabled,\n });\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const linkClassNames = cx(jsStyles.link(theme), {\n [jsStyles.linkHovered(theme)]: !disabled && hovered,\n [jsStyles.linkDisabled(theme)]: disabled,\n });\n\n return (\n <CommonWrapper {...props}>\n <div data-tid={FileUploaderDataTids.root} className={jsStyles.root(theme)} style={useMemoObject({ width })}>\n {!hideFiles && !isSingleMode && !!files.length && <FileUploaderFileList renderFile={renderFile} />}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div data-tid={FileUploaderDataTids.content} className={jsStyles.content()}>\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n &nbsp;\n <div className={jsStyles.afterLinkText()}>\n {hasOneFileForSingle ? (\n <div className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>\n <UploadIcon />\n </div>\n </>\n )}\n </div>\n </div>\n <input\n {...inputProps}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.fileInput()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"]}
@@ -36,6 +36,11 @@ export interface FileUploaderRef {
36
36
  /** Сбрасывает выбранные файлы */
37
37
  reset: () => void;
38
38
  }
39
+ export declare const FileUploaderDataTids: {
40
+ readonly root: "FileUploader__root";
41
+ readonly content: "FileUploader__content";
42
+ readonly link: "FileUploader__link";
43
+ };
39
44
  export interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {
40
45
  }
41
46
  export declare const FileUploader: React.MemoExoticComponent<React.ForwardRefExoticComponent<FileUploaderProps & FileUploaderControlProviderProps & React.RefAttributes<FileUploaderRef>>>;
@@ -15,9 +15,12 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
15
15
  import { FunctionIcon, UndoIcon } from "../../../internal/icons/16px";
16
16
  import { CommonWrapper } from "../../../internal/CommonWrapper";
17
17
  import { rootNode } from "../../../lib/rootNode";
18
- export
18
+ export var FxInputDataTids = {
19
+ root: 'FxInput__root'
20
+ };
19
21
  /** Принимает все свойства `Input`'a */
20
- var FxInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
22
+
23
+ export var FxInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
21
24
  _inheritsLoose(FxInput, _React$Component);
22
25
 
23
26
  function FxInput() {
@@ -56,6 +59,7 @@ var FxInput = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React
56
59
  }
57
60
 
58
61
  return /*#__PURE__*/React.createElement(Group, {
62
+ "data-tid": FxInputDataTids.root,
59
63
  width: _this.props.width
60
64
  }, button, _this.getProps().type === 'currency' ? /*#__PURE__*/React.createElement(CurrencyInput, _extends({}, inputProps, rest, {
61
65
  width: '100%',