@skbkontur/react-ui 4.1.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +3 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -3
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +3 -0
  6. package/cjs/components/Button/Button.js +8 -4
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.styles.d.ts +1 -1
  9. package/cjs/components/Button/Button.styles.js +6 -6
  10. package/cjs/components/Button/Button.styles.js.map +1 -1
  11. package/cjs/components/Center/Center.d.ts +3 -0
  12. package/cjs/components/Center/Center.js +8 -3
  13. package/cjs/components/Center/Center.js.map +1 -1
  14. package/cjs/components/Checkbox/Checkbox.d.ts +8 -0
  15. package/cjs/components/Checkbox/Checkbox.js +37 -3
  16. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -0
  18. package/cjs/components/Checkbox/Checkbox.styles.js +23 -17
  19. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  20. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.js +23 -5
  22. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  23. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  24. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
  25. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  26. package/cjs/components/DateInput/DateInput.js +5 -1
  27. package/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  29. package/cjs/components/DateInput/helpers/InternalDateMediator.js +7 -3
  30. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  31. package/cjs/components/DateInput/helpers/inputNumber.d.ts +1 -1
  32. package/cjs/components/DateInput/helpers/inputNumber.js +45 -12
  33. package/cjs/components/DateInput/helpers/inputNumber.js.map +1 -1
  34. package/cjs/components/DatePicker/DatePicker.d.ts +5 -0
  35. package/cjs/components/DatePicker/DatePicker.js +14 -3
  36. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  37. package/cjs/components/DatePicker/Picker.js +7 -2
  38. package/cjs/components/DatePicker/Picker.js.map +1 -1
  39. package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
  40. package/cjs/components/Dropdown/Dropdown.js +7 -2
  41. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  42. package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
  43. package/cjs/components/FileUploader/FileUploader.js +10 -4
  44. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  45. package/cjs/components/FxInput/FxInput.d.ts +3 -0
  46. package/cjs/components/FxInput/FxInput.js +7 -3
  47. package/cjs/components/FxInput/FxInput.js.map +1 -1
  48. package/cjs/components/Gapped/Gapped.d.ts +4 -0
  49. package/cjs/components/Gapped/Gapped.js +11 -5
  50. package/cjs/components/Gapped/Gapped.js.map +1 -1
  51. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  52. package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
  53. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  54. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +5 -7
  55. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  56. package/cjs/components/Group/Group.d.ts +3 -0
  57. package/cjs/components/Group/Group.js +7 -3
  58. package/cjs/components/Group/Group.js.map +1 -1
  59. package/cjs/components/Input/Input.d.ts +3 -0
  60. package/cjs/components/Input/Input.js +7 -3
  61. package/cjs/components/Input/Input.js.map +1 -1
  62. package/cjs/components/Link/Link.d.ts +4 -1
  63. package/cjs/components/Link/Link.js +8 -4
  64. package/cjs/components/Link/Link.js.map +1 -1
  65. package/cjs/components/Loader/Loader.d.ts +4 -0
  66. package/cjs/components/Loader/Loader.js +8 -3
  67. package/cjs/components/Loader/Loader.js.map +1 -1
  68. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
  69. package/cjs/components/MenuHeader/MenuHeader.js +7 -2
  70. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  71. package/cjs/components/MenuItem/MenuItem.d.ts +5 -1
  72. package/cjs/components/MenuItem/MenuItem.js +11 -5
  73. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  74. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  75. package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
  76. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  77. package/cjs/components/Modal/Modal.d.ts +5 -0
  78. package/cjs/components/Modal/Modal.js +9 -3
  79. package/cjs/components/Modal/Modal.js.map +1 -1
  80. package/cjs/components/Modal/ModalClose.js +3 -2
  81. package/cjs/components/Modal/ModalClose.js.map +1 -1
  82. package/cjs/components/Modal/ModalFooter.d.ts +3 -0
  83. package/cjs/components/Modal/ModalFooter.js +7 -2
  84. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  85. package/cjs/components/Modal/ModalHeader.d.ts +3 -0
  86. package/cjs/components/Modal/ModalHeader.js +8 -2
  87. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  88. package/cjs/components/Paging/Paging.d.ts +8 -1
  89. package/cjs/components/Paging/Paging.js +15 -7
  90. package/cjs/components/Paging/Paging.js.map +1 -1
  91. package/cjs/components/PasswordInput/PasswordInput.d.ts +6 -1
  92. package/cjs/components/PasswordInput/PasswordInput.js +21 -15
  93. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  94. package/cjs/components/PasswordInput/PasswordInputIcon.js +5 -1
  95. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -1
  96. package/cjs/components/Radio/Radio.d.ts +3 -0
  97. package/cjs/components/Radio/Radio.js +7 -3
  98. package/cjs/components/Radio/Radio.js.map +1 -1
  99. package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -0
  100. package/cjs/components/RadioGroup/RadioGroup.js +21 -4
  101. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  102. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  103. package/cjs/components/ScrollContainer/ScrollContainer.js +14 -4
  104. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  105. package/cjs/components/Select/Select.d.ts +3 -0
  106. package/cjs/components/Select/Select.js +14 -6
  107. package/cjs/components/Select/Select.js.map +1 -1
  108. package/cjs/components/SidePage/SidePage.d.ts +4 -0
  109. package/cjs/components/SidePage/SidePage.js +7 -2
  110. package/cjs/components/SidePage/SidePage.js.map +1 -1
  111. package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
  112. package/cjs/components/SidePage/SidePageBody.js +10 -3
  113. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  114. package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
  115. package/cjs/components/SidePage/SidePageContainer.js +7 -2
  116. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  117. package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
  118. package/cjs/components/SidePage/SidePageFooter.js +11 -3
  119. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  120. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
  121. package/cjs/components/SidePage/SidePageHeader.js +9 -4
  122. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  123. package/cjs/components/Spinner/Spinner.d.ts +3 -0
  124. package/cjs/components/Spinner/Spinner.js +7 -3
  125. package/cjs/components/Spinner/Spinner.js.map +1 -1
  126. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  127. package/cjs/components/Sticky/Sticky.js +7 -3
  128. package/cjs/components/Sticky/Sticky.js.map +1 -1
  129. package/cjs/components/Switcher/Switcher.d.ts +3 -0
  130. package/cjs/components/Switcher/Switcher.js +7 -3
  131. package/cjs/components/Switcher/Switcher.js.map +1 -1
  132. package/cjs/components/Tabs/Indicator.js +4 -2
  133. package/cjs/components/Tabs/Indicator.js.map +1 -1
  134. package/cjs/components/Tabs/Tab.d.ts +3 -0
  135. package/cjs/components/Tabs/Tab.js +7 -2
  136. package/cjs/components/Tabs/Tab.js.map +1 -1
  137. package/cjs/components/Tabs/Tabs.d.ts +4 -0
  138. package/cjs/components/Tabs/Tabs.js +12 -3
  139. package/cjs/components/Tabs/Tabs.js.map +1 -1
  140. package/cjs/components/Textarea/Textarea.d.ts +4 -0
  141. package/cjs/components/Textarea/Textarea.js +8 -3
  142. package/cjs/components/Textarea/Textarea.js.map +1 -1
  143. package/cjs/components/Textarea/TextareaCounter.js +10 -9
  144. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  145. package/cjs/components/Toast/Toast.d.ts +6 -0
  146. package/cjs/components/Toast/Toast.js +9 -2
  147. package/cjs/components/Toast/Toast.js.map +1 -1
  148. package/cjs/components/Toast/ToastStatic.js +1 -1
  149. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  150. package/cjs/components/Toast/ToastView.js +5 -4
  151. package/cjs/components/Toast/ToastView.js.map +1 -1
  152. package/cjs/components/Toggle/Toggle.d.ts +3 -0
  153. package/cjs/components/Toggle/Toggle.js +7 -3
  154. package/cjs/components/Toggle/Toggle.js.map +1 -1
  155. package/cjs/components/Token/Token.d.ts +3 -0
  156. package/cjs/components/Token/Token.js +8 -3
  157. package/cjs/components/Token/Token.js.map +1 -1
  158. package/cjs/components/TokenInput/TokenInput.d.ts +14 -0
  159. package/cjs/components/TokenInput/TokenInput.js +23 -3
  160. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
  162. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  163. package/cjs/components/Tooltip/Tooltip.d.ts +3 -0
  164. package/cjs/components/Tooltip/Tooltip.js +7 -2
  165. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  166. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  167. package/cjs/components/TooltipMenu/TooltipMenu.js +7 -2
  168. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  169. package/cjs/internal/Calendar/Calendar.d.ts +6 -0
  170. package/cjs/internal/Calendar/Calendar.js +9 -2
  171. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  172. package/cjs/internal/Calendar/MonthView.js +5 -4
  173. package/cjs/internal/Calendar/MonthView.js.map +1 -1
  174. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +4 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  178. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +23 -5
  179. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  180. package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
  181. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  182. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  183. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -2
  184. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  185. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  186. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  187. package/cjs/internal/DataTids/DataTids.js +46 -0
  188. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  189. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  190. package/cjs/internal/DataTids/DataTids.styles.js +41 -0
  191. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  192. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  193. package/cjs/internal/DataTids/componentsDataTids.js +16 -0
  194. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
  196. package/cjs/internal/DateSelect/DateSelect.js +8 -3
  197. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  198. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  199. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +14 -6
  200. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  201. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  204. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -0
  205. package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
  206. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  207. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
  208. package/cjs/internal/InternalMenu/InternalMenu.js +9 -8
  209. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  210. package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
  211. package/cjs/internal/MaskedInput/MaskedInput.js +11 -5
  212. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  213. package/cjs/internal/Menu/Menu.d.ts +3 -0
  214. package/cjs/internal/Menu/Menu.js +10 -8
  215. package/cjs/internal/Menu/Menu.js.map +1 -1
  216. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  217. package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
  218. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  219. package/cjs/internal/Popup/Popup.d.ts +5 -0
  220. package/cjs/internal/Popup/Popup.js +10 -4
  221. package/cjs/internal/Popup/Popup.js.map +1 -1
  222. package/cjs/internal/Popup/PopupPin.js +2 -1
  223. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  224. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
  225. package/cjs/internal/PopupMenu/PopupMenu.js +9 -4
  226. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  227. package/cjs/internal/icons/16px/index.js +1 -1
  228. package/cjs/internal/icons/16px/index.js.map +1 -1
  229. package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
  230. package/cjs/lib/date/InternalDateGetter.js +4 -1
  231. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  232. package/cjs/lib/date/InternalDateValidator.js +32 -22
  233. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  234. package/cjs/lib/date/types.d.ts +4 -0
  235. package/cjs/lib/date/types.js.map +1 -1
  236. package/cjs/lib/events/MouseDrag.js +5 -1
  237. package/cjs/lib/events/MouseDrag.js.map +1 -1
  238. package/cjs/lib/listenFocusOutside.js +1 -1
  239. package/cjs/lib/listenFocusOutside.js.map +1 -1
  240. package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -6
  241. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  242. package/components/Autocomplete/Autocomplete.d.ts +3 -0
  243. package/components/Button/Button/Button.js +5 -1
  244. package/components/Button/Button/Button.js.map +1 -1
  245. package/components/Button/Button.d.ts +3 -0
  246. package/components/Button/Button.styles/Button.styles.js +6 -6
  247. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  248. package/components/Button/Button.styles.d.ts +1 -1
  249. package/components/Center/Center/Center.js +10 -5
  250. package/components/Center/Center/Center.js.map +1 -1
  251. package/components/Center/Center.d.ts +3 -0
  252. package/components/Checkbox/Checkbox/Checkbox.js +33 -2
  253. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  254. package/components/Checkbox/Checkbox.d.ts +8 -0
  255. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +20 -17
  256. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  257. package/components/Checkbox/Checkbox.styles.d.ts +1 -0
  258. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +27 -12
  259. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  260. package/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  261. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
  262. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  263. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  264. package/components/DateInput/DateInput/DateInput.js +9 -1
  265. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  266. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +9 -3
  267. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  268. package/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  269. package/components/DateInput/helpers/inputNumber/inputNumber.js +53 -16
  270. package/components/DateInput/helpers/inputNumber/inputNumber.js.map +1 -1
  271. package/components/DateInput/helpers/inputNumber.d.ts +1 -1
  272. package/components/DatePicker/DatePicker/DatePicker.js +6 -0
  273. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  274. package/components/DatePicker/DatePicker.d.ts +5 -0
  275. package/components/DatePicker/Picker/Picker.js +3 -1
  276. package/components/DatePicker/Picker/Picker.js.map +1 -1
  277. package/components/Dropdown/Dropdown/Dropdown.js +9 -5
  278. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  279. package/components/Dropdown/Dropdown.d.ts +3 -0
  280. package/components/FileUploader/FileUploader/FileUploader.js +9 -2
  281. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  282. package/components/FileUploader/FileUploader.d.ts +5 -0
  283. package/components/FxInput/FxInput/FxInput.js +6 -2
  284. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  285. package/components/FxInput/FxInput.d.ts +3 -0
  286. package/components/Gapped/Gapped/Gapped.js +14 -6
  287. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  288. package/components/Gapped/Gapped.d.ts +4 -0
  289. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -1
  290. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  291. package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  292. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +1 -2
  293. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  294. package/components/Group/Group/Group.js +4 -0
  295. package/components/Group/Group/Group.js.map +1 -1
  296. package/components/Group/Group.d.ts +3 -0
  297. package/components/Input/Input/Input.js +11 -6
  298. package/components/Input/Input/Input.js.map +1 -1
  299. package/components/Input/Input.d.ts +3 -0
  300. package/components/Link/Link/Link.js +11 -6
  301. package/components/Link/Link/Link.js.map +1 -1
  302. package/components/Link/Link.d.ts +4 -1
  303. package/components/Loader/Loader/Loader.js +10 -6
  304. package/components/Loader/Loader/Loader.js.map +1 -1
  305. package/components/Loader/Loader.d.ts +4 -0
  306. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  307. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  308. package/components/MenuHeader/MenuHeader.d.ts +3 -0
  309. package/components/MenuItem/MenuItem/MenuItem.js +16 -10
  310. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  311. package/components/MenuItem/MenuItem.d.ts +5 -1
  312. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
  313. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  314. package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  315. package/components/Modal/Modal/Modal.js +7 -2
  316. package/components/Modal/Modal/Modal.js.map +1 -1
  317. package/components/Modal/Modal.d.ts +5 -0
  318. package/components/Modal/ModalClose/ModalClose.js +2 -1
  319. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  320. package/components/Modal/ModalFooter/ModalFooter.js +4 -0
  321. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  322. package/components/Modal/ModalFooter.d.ts +3 -0
  323. package/components/Modal/ModalHeader/ModalHeader.js +4 -0
  324. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  325. package/components/Modal/ModalHeader.d.ts +3 -0
  326. package/components/Paging/Paging/Paging.js +12 -5
  327. package/components/Paging/Paging/Paging.js.map +1 -1
  328. package/components/Paging/Paging.d.ts +8 -1
  329. package/components/PasswordInput/PasswordInput/PasswordInput.js +24 -19
  330. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  331. package/components/PasswordInput/PasswordInput.d.ts +6 -1
  332. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +8 -3
  333. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -1
  334. package/components/Radio/Radio/Radio.js +10 -5
  335. package/components/Radio/Radio/Radio.js.map +1 -1
  336. package/components/Radio/Radio.d.ts +3 -0
  337. package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -11
  338. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  339. package/components/RadioGroup/RadioGroup.d.ts +9 -0
  340. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +6 -1
  341. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  342. package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  343. package/components/Select/Select/Select.js +9 -3
  344. package/components/Select/Select/Select.js.map +1 -1
  345. package/components/Select/Select.d.ts +3 -0
  346. package/components/SidePage/SidePage/SidePage.js +6 -2
  347. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  348. package/components/SidePage/SidePage.d.ts +4 -0
  349. package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
  350. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  351. package/components/SidePage/SidePageBody.d.ts +3 -0
  352. package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
  353. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  354. package/components/SidePage/SidePageContainer.d.ts +3 -0
  355. package/components/SidePage/SidePageFooter/SidePageFooter.js +10 -6
  356. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  357. package/components/SidePage/SidePageFooter.d.ts +3 -0
  358. package/components/SidePage/SidePageHeader/SidePageHeader.js +12 -7
  359. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  360. package/components/SidePage/SidePageHeader.d.ts +4 -0
  361. package/components/Spinner/Spinner/Spinner.js +8 -4
  362. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  363. package/components/Spinner/Spinner.d.ts +3 -0
  364. package/components/Sticky/Sticky/Sticky.js +4 -0
  365. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  366. package/components/Sticky/Sticky.d.ts +3 -0
  367. package/components/Switcher/Switcher/Switcher.js +4 -0
  368. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  369. package/components/Switcher/Switcher.d.ts +3 -0
  370. package/components/Tabs/Indicator/Indicator.js +2 -0
  371. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  372. package/components/Tabs/Tab/Tab.js +4 -0
  373. package/components/Tabs/Tab/Tab.js.map +1 -1
  374. package/components/Tabs/Tab.d.ts +3 -0
  375. package/components/Tabs/Tabs/Tabs.js +11 -6
  376. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  377. package/components/Tabs/Tabs.d.ts +4 -0
  378. package/components/Textarea/Textarea/Textarea.js +15 -9
  379. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  380. package/components/Textarea/Textarea.d.ts +4 -0
  381. package/components/Textarea/TextareaCounter/TextareaCounter.js +8 -3
  382. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  383. package/components/Toast/Toast/Toast.js +16 -10
  384. package/components/Toast/Toast/Toast.js.map +1 -1
  385. package/components/Toast/Toast.d.ts +6 -0
  386. package/components/Toast/ToastStatic/ToastStatic.js +2 -2
  387. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  388. package/components/Toast/ToastView/ToastView.js +4 -3
  389. package/components/Toast/ToastView/ToastView.js.map +1 -1
  390. package/components/Toggle/Toggle/Toggle.js +8 -4
  391. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  392. package/components/Toggle/Toggle.d.ts +3 -0
  393. package/components/Token/Token/Token.js +4 -0
  394. package/components/Token/Token/Token.js.map +1 -1
  395. package/components/Token/Token.d.ts +3 -0
  396. package/components/TokenInput/TokenInput/TokenInput.js +11 -2
  397. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  398. package/components/TokenInput/TokenInput.d.ts +14 -0
  399. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
  400. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  401. package/components/Tooltip/Tooltip/Tooltip.js +4 -0
  402. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  403. package/components/Tooltip/Tooltip.d.ts +3 -0
  404. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +16 -12
  405. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  406. package/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  407. package/internal/Calendar/Calendar/Calendar.js +7 -1
  408. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  409. package/internal/Calendar/Calendar.d.ts +6 -0
  410. package/internal/Calendar/MonthView/MonthView.js +4 -3
  411. package/internal/Calendar/MonthView/MonthView.js.map +1 -1
  412. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +4 -5
  413. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  414. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  415. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +12 -5
  416. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  417. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  418. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
  419. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  420. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -0
  421. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  422. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  423. package/internal/DataTids/DATATIDS.md +12 -0
  424. package/internal/DataTids/DataTids/DataTids.js +69 -0
  425. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  426. package/internal/DataTids/DataTids/package.json +6 -0
  427. package/internal/DataTids/DataTids.d.ts +12 -0
  428. package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
  429. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  430. package/internal/DataTids/DataTids.styles/package.json +6 -0
  431. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  432. package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
  433. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  434. package/internal/DataTids/componentsDataTids/package.json +6 -0
  435. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  436. package/internal/DateSelect/DateSelect/DateSelect.js +6 -2
  437. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  438. package/internal/DateSelect/DateSelect.d.ts +4 -0
  439. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +12 -5
  440. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  441. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  442. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
  443. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  444. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  445. package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
  446. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  447. package/internal/InputLikeText/InputLikeText.d.ts +4 -0
  448. package/internal/InternalMenu/InternalMenu/InternalMenu.js +6 -6
  449. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  450. package/internal/InternalMenu/InternalMenu.d.ts +3 -0
  451. package/internal/MaskedInput/MaskedInput/MaskedInput.js +8 -2
  452. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  453. package/internal/MaskedInput/MaskedInput.d.ts +3 -0
  454. package/internal/Menu/Menu/Menu.js +6 -5
  455. package/internal/Menu/Menu/Menu.js.map +1 -1
  456. package/internal/Menu/Menu.d.ts +3 -0
  457. package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
  458. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  459. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  460. package/internal/Popup/Popup/Popup.js +7 -2
  461. package/internal/Popup/Popup/Popup.js.map +1 -1
  462. package/internal/Popup/Popup.d.ts +5 -0
  463. package/internal/Popup/PopupPin/PopupPin.js +2 -0
  464. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  465. package/internal/PopupMenu/PopupMenu/PopupMenu.js +7 -2
  466. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  467. package/internal/PopupMenu/PopupMenu.d.ts +4 -0
  468. package/internal/icons/16px/index/index.js +1 -1
  469. package/internal/icons/16px/index/index.js.map +1 -1
  470. package/lib/date/InternalDateGetter/InternalDateGetter.js +3 -1
  471. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  472. package/lib/date/InternalDateGetter.d.ts +1 -1
  473. package/lib/date/InternalDateValidator/InternalDateValidator.js +55 -41
  474. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  475. package/lib/date/types/types.js.map +1 -1
  476. package/lib/date/types.d.ts +4 -0
  477. package/lib/events/MouseDrag/MouseDrag.js +5 -1
  478. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  479. package/lib/listenFocusOutside/listenFocusOutside.js +1 -1
  480. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  481. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["TokenInputMenu.tsx"],"names":["React","ThemeFactory","Popup","ComboBoxMenu","ThemeContext","TokenInputMenu","menu","getMenuRef","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingY","outlineWidth","controlOutlineWidth","marginY","tokenMarginY","menuRef","node","render","create","popupMargin","renderMain","props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElement","menuWidth","menuAlign","undefined","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup } from '../../internal/Popup';\nimport { ComboBoxMenu, ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { Menu } from '../../internal/Menu';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { TokenInputMenuAlign, TokenInputProps } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n anchorElement: HTMLElement;\n menuWidth: TokenInputProps<string>['menuWidth'];\n menuAlign: TokenInputMenuAlign;\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElement,\n menuWidth,\n menuAlign,\n } = this.props;\n\n return (\n <Popup\n opened={opened!}\n positions={['bottom left', 'top left']}\n anchorElement={anchorElement}\n popupOffset={menuAlign === 'left' ? 0 : 5}\n margin={menuAlign === 'left' ? 1 : undefined}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingY, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginY, 10) || 0;\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"]}
1
+ {"version":3,"sources":["TokenInputMenu.tsx"],"names":["React","ThemeFactory","Popup","ComboBoxMenu","ThemeContext","TokenInputDataTids","TokenInputMenu","menu","getMenuRef","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingY","outlineWidth","controlOutlineWidth","marginY","tokenMarginY","menuRef","node","render","create","popupMargin","renderMain","props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElement","menuWidth","menuAlign","tokenInputMenu","undefined","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup } from '../../internal/Popup';\nimport { ComboBoxMenu, ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { Menu } from '../../internal/Menu';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { TokenInputDataTids, TokenInputMenuAlign, TokenInputProps } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n anchorElement: HTMLElement;\n menuWidth: TokenInputProps<string>['menuWidth'];\n menuAlign: TokenInputMenuAlign;\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElement,\n menuWidth,\n menuAlign,\n } = this.props;\n\n return (\n <Popup\n data-tid={TokenInputDataTids.tokenInputMenu}\n opened={opened!}\n positions={['bottom left', 'top left']}\n anchorElement={anchorElement}\n popupOffset={menuAlign === 'left' ? 0 : 5}\n margin={menuAlign === 'left' ? 1 : undefined}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingY, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginY, 10) || 0;\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"]}
@@ -18,6 +18,9 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
18
18
  import { responsiveLayout } from "../../ResponsiveLayout/decorator";
19
19
  import { rootNode } from "../../../lib/rootNode";
20
20
  import { styles } from "../Tooltip.styles";
21
+ export var TooltipDataTids = {
22
+ root: 'Tooltip__root'
23
+ };
21
24
  var Positions = ['right bottom', 'right middle', 'right top', 'top right', 'top center', 'top left', 'left top', 'left middle', 'left bottom', 'bottom left', 'bottom center', 'bottom right'];
22
25
  export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
23
26
  _inheritsLoose(Tooltip, _React$PureComponent);
@@ -289,6 +292,7 @@ export var Tooltip = rootNode(_class = responsiveLayout(_class = (_temp = _class
289
292
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
290
293
  rootNodeRef: this.setRootNode
291
294
  }, this.props), /*#__PURE__*/React.createElement(Popup, _extends({
295
+ "data-tid": TooltipDataTids.root,
292
296
  anchorElement: anchorElement,
293
297
  hasPin: true,
294
298
  hasShadow: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","responsiveLayout","rootNode","styles","Positions","Tooltip","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","content","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getProps","popupProps","layerProps","active","children","popup","renderPopup","setRootNode","disableAnimations","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","defaultProps","closeOnChildrenMouseLeave"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n closeOnChildrenMouseLeave: false,\n };\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n if (this.props.trigger === 'closed' && this.state.opened) {\n this.close();\n }\n\n const { allowedPositions, pos } = this.props;\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={this.props.disableAnimations}\n positions={this.getPositions()}\n ignoreHover={this.props.trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n if (this.props.trigger === 'manual' || this.props.trigger === 'closed' || this.props.trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const allowedPositions = this.props.allowedPositions;\n const index = allowedPositions.indexOf(this.props.pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && props.useWrapper;\n\n switch (this.props.trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + props.trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.props.trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n\n if (\n (this.props.trigger === 'hover&focus' && this.state.focused) ||\n (this.props.trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (this.props.trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n if (this.props.trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (this.props.trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
1
+ {"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","responsiveLayout","rootNode","styles","TooltipDataTids","root","Positions","Tooltip","state","opened","focused","hoverTimeout","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","content","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","mobileCloseHandler","trigger","close","node","open","setState","handleMouseEnter","event","isHoverAnchor","target","clearHoverTimeout","window","setTimeout","delay","handleMouseLeave","isMobileLayout","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","cross","show","hide","getProps","popupProps","layerProps","active","children","popup","renderPopup","setRootNode","disableAnimations","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray","defaultProps","closeOnChildrenMouseLeave"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: () => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\n@rootNode\n@responsiveLayout\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n private isMobileLayout!: boolean;\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n closeOnChildrenMouseLeave: false,\n };\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: Nullable<number> = null;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n if (this.props.trigger === 'closed' && this.state.opened) {\n this.close();\n }\n\n const { allowedPositions, pos } = this.props;\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger)\n : this.props.closeButton;\n\n if (!hasCross || this.isMobileLayout) {\n return null;\n }\n\n return (\n <div className={styles.cross(this.theme)} onClick={this.handleCloseButtonClick}>\n <CrossIcon />\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<HTMLElement> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${this.props.trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n if (this.isMobileLayout) {\n return popup;\n }\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={this.props.disableAnimations}\n positions={this.getPositions()}\n ignoreHover={this.props.trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n mobileOnCloseRequest={this.mobileCloseHandler}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private mobileCloseHandler = () => {\n if (this.props.trigger === 'manual' || this.props.trigger === 'closed' || this.props.trigger === 'opened') {\n return;\n }\n\n this.close();\n };\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const allowedPositions = this.props.allowedPositions;\n const index = allowedPositions.indexOf(this.props.pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && props.useWrapper;\n\n switch (this.props.trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + props.trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.props.trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n\n this.hoverTimeout = window.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.isMobileLayout) {\n return;\n }\n\n if (\n (this.props.trigger === 'hover&focus' && this.state.focused) ||\n (this.props.trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (this.props.trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = window.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && event.target instanceof Element) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n if (this.props.trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (this.props.trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n\n this.close();\n };\n}\n"]}
@@ -102,6 +102,9 @@ export interface TooltipState {
102
102
  opened: boolean;
103
103
  focused: boolean;
104
104
  }
105
+ export declare const TooltipDataTids: {
106
+ readonly root: "Tooltip__root";
107
+ };
105
108
  export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
106
109
  static __KONTUR_REACT_UI__: string;
107
110
  private isMobileLayout;
@@ -10,19 +10,22 @@ import { PopupMenu } from "../../../internal/PopupMenu";
10
10
  import { isProductionEnv, isTestEnv } from "../../../lib/currentEnvironment";
11
11
  import { CommonWrapper } from "../../../internal/CommonWrapper";
12
12
  import { rootNode } from "../../../lib/rootNode";
13
- export
13
+ export var TooltipMenuDataTids = {
14
+ root: 'TooltipMenu__root'
15
+ };
14
16
  /**
15
- * Меню, раскрывающееся по клику на переданный в `caption` элемент.
16
- *
17
- * Положение меню задаётся с помощью массива `positions` и работает так:
18
- * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
19
- * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
20
- *
21
- * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
22
- *
23
- * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
24
- */
25
- var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
17
+ * Меню, раскрывающееся по клику на переданный в `caption` элемент.
18
+ *
19
+ * Положение меню задаётся с помощью массива `positions` и работает так:
20
+ * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,
21
+ * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.
22
+ *
23
+ * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.
24
+ *
25
+ * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.
26
+ */
27
+
28
+ export var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
26
29
  _inheritsLoose(TooltipMenu, _React$Component);
27
30
 
28
31
  function TooltipMenu(props) {
@@ -61,6 +64,7 @@ var TooltipMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_R
61
64
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
62
65
  rootNodeRef: this.setRootNode
63
66
  }, this.props), /*#__PURE__*/React.createElement(PopupMenu, {
67
+ "data-tid": TooltipMenuDataTids.root,
64
68
  menuMaxHeight: this.props.menuMaxHeight,
65
69
  menuWidth: this.props.menuWidth,
66
70
  caption: this.props.caption,
@@ -1 +1 @@
1
- {"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","TooltipMenu","props","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0C,0BAA1C;;AAEA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,8BAA3C;;;AAGA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,QAAT,QAAuC,oBAAvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,OAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAEA,IAAaC,WAAb,GADCD,QACD,qHAOE,qBAAYE,KAAZ,EAAqC,WACnC,oCAAMA,KAAN,UAEA,IAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACN,eAAvB,EAAwC;AACtC,YAAM,IAAIO,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,GAbH;;AAeSC,EAAAA,MAfT,GAeE,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,8BAAC,YAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEZ,YAAY,CAACa,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEF,KAAK,CAACG,oBADxB;AAEEC,cAAAA,WAAW,EAAEJ,KAAK,CAACK,iBAFrB;AAGEC,cAAAA,YAAY,EAAEN,KAAK,CAACO,kBAHtB,EADK;;AAMLP,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACQ,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,GApCH;;AAsCSA,EAAAA,UAtCT,GAsCE,sBAAoB;AAClB,QAAI,CAAC,KAAKZ,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,0BAAC,aAAD,aAAe,WAAW,EAAE,KAAKY,WAAjC,IAAkD,KAAKb,KAAvD;AACE,0BAAC,SAAD;AACE,QAAA,aAAa,EAAE,KAAKA,KAAL,CAAWc,aAD5B;AAEE,QAAA,SAAS,EAAE,KAAKd,KAAL,CAAWe,SAFxB;AAGE,QAAA,OAAO,EAAE,KAAKf,KAAL,CAAWC,OAHtB;AAIE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWgB,MAJrB;AAKE,QAAA,MAAM,EAAE,KAAKhB,KAAL,CAAWiB,MALrB;AAME,QAAA,SAAS,EAAE,KAAKjB,KAAL,CAAWkB,SANxB;AAOE,QAAA,MAAM,EAAE,KAAKlB,KAAL,CAAWmB,MAPrB;AAQE,QAAA,OAAO,EAAE,KAAKnB,KAAL,CAAWoB,OARtB;AASE,QAAA,WAAW,MATb;AAUE,QAAA,iBAAiB,EAAE,KAAKpB,KAAL,CAAWqB,iBAVhC;;AAYG,WAAKrB,KAAL,CAAWsB,QAZd,CADF,CADF;;;;AAkBD,GA7DH,sBAAiC/B,KAAK,CAACgC,SAAvC,WACgBC,mBADhB,GACsC,aADtC,UAIgBC,YAJhB,GAI+B,EAC3BJ,iBAAiB,EAAEzB,SADQ,EAJ/B","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n}\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n };\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.props.disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["TooltipMenu.tsx"],"names":["React","ThemeFactory","ThemeContext","PopupMenu","isProductionEnv","isTestEnv","CommonWrapper","rootNode","TooltipMenuDataTids","root","TooltipMenu","props","caption","Error","render","theme","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0C,0BAA1C;;AAEA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,8BAA3C;;;AAGA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,QAAT,QAAuC,oBAAvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,OAAO,IAAMC,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAaC,WAAb,GADCH,QACD;;;;;;;AAOE,uBAAYI,KAAZ,EAAqC;AACnC,wCAAMA,KAAN;;AAEA,QAAI,CAACA,KAAK,CAACC,OAAP,IAAkB,CAACR,eAAvB,EAAwC;AACtC,YAAM,IAAIS,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,GAbH;;AAeSC,EAAAA,MAfT,GAeE,kBAAgB;AACd;AACE,0BAAC,YAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,8BAAC,YAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEd,YAAY,CAACe,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEF,KAAK,CAACG,oBADxB;AAEEC,cAAAA,WAAW,EAAEJ,KAAK,CAACK,iBAFrB;AAGEC,cAAAA,YAAY,EAAEN,KAAK,CAACO,kBAHtB,EADK;;AAMLP,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACQ,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,GApCH;;AAsCSA,EAAAA,UAtCT,GAsCE,sBAAoB;AAClB,QAAI,CAAC,KAAKZ,KAAL,CAAWC,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,0BAAC,aAAD,aAAe,WAAW,EAAE,KAAKY,WAAjC,IAAkD,KAAKb,KAAvD;AACE,0BAAC,SAAD;AACE,oBAAUH,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKE,KAAL,CAAWc,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKd,KAAL,CAAWe,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKf,KAAL,CAAWC,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKD,KAAL,CAAWgB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKhB,KAAL,CAAWiB,MANrB;AAOE,QAAA,SAAS,EAAE,KAAKjB,KAAL,CAAWkB,SAPxB;AAQE,QAAA,MAAM,EAAE,KAAKlB,KAAL,CAAWmB,MARrB;AASE,QAAA,OAAO,EAAE,KAAKnB,KAAL,CAAWoB,OATtB;AAUE,QAAA,WAAW,MAVb;AAWE,QAAA,iBAAiB,EAAE,KAAKpB,KAAL,CAAWqB,iBAXhC;;AAaG,WAAKrB,KAAL,CAAWsB,QAbd,CADF,CADF;;;;AAmBD,GA9DH,sBAAiCjC,KAAK,CAACkC,SAAvC,WACgBC,mBADhB,GACsC,aADtC,UAIgBC,YAJhB,GAI+B,EAC3BJ,iBAAiB,EAAE3B,SADQ,EAJ/B","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | {} | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [`MenuHeader`](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [`MenuSeparator`](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n };\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.props.disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
@@ -42,6 +42,9 @@ export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onO
42
42
  */
43
43
  disableAnimations: boolean;
44
44
  }
45
+ export declare const TooltipMenuDataTids: {
46
+ readonly root: "TooltipMenu__root";
47
+ };
45
48
  /**
46
49
  * Меню, раскрывающееся по клику на переданный в `caption` элемент.
47
50
  *
@@ -16,6 +16,12 @@ import * as CalendarScrollEvents from "../CalendarScrollEvents";
16
16
  import { Month } from "../Month";
17
17
  import { styles } from "../Calendar.styles";
18
18
  import { create, isGreater, isLess } from "../CalendarDateShape";
19
+ export var CalendarDataTids = {
20
+ root: 'Calendar',
21
+ month: 'MonthView__month',
22
+ headerMonth: 'MonthView__headerMonth',
23
+ headerYear: 'MonthView__headerYear'
24
+ };
19
25
 
20
26
  var getTodayDate = function getTodayDate() {
21
27
  var date = new Date();
@@ -199,7 +205,7 @@ export var Calendar = /*#__PURE__*/function (_React$Component) {
199
205
  return /*#__PURE__*/React.createElement("div", {
200
206
  ref: _this.refRoot,
201
207
  className: styles.root(_this.theme),
202
- "data-tid": "Calendar"
208
+ "data-tid": CalendarDataTids.root
203
209
  }, /*#__PURE__*/React.createElement("div", {
204
210
  style: wrapperStyle,
205
211
  className: styles.wrapper()
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","themeConfig","CalendarUtils","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","getTodayDate","date","Date","getDate","month","getMonth","year","getFullYear","Calendar","props","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","root","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","Component","__KONTUR_REACT_UI__","defaultProps","holidays"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps = {\n holidays: [],\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth ?? today.month;\n const initialYear = props.initialYear ?? today.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\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 /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.props;\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid=\"Calendar\">\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={this.props.maxDate}\n minDate={this.props.minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","themeConfig","CalendarUtils","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarDataTids","root","month","headerMonth","headerYear","getTodayDate","date","Date","getDate","getMonth","year","getFullYear","Calendar","props","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","refRoot","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","today","initialMonth","initialYear","touchStart","componentWillUnmount","cancel","render","value","onSelect","isHoliday","position","push","Component","__KONTUR_REACT_UI__","defaultProps","holidays"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\n\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\n\nimport { themeConfig } from './config';\nimport * as CalendarUtils from './CalendarUtils';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\n\nexport interface CalendarProps {\n initialMonth?: number;\n initialYear?: number;\n onSelect?: (date: CalendarDateShape) => void;\n value?: Nullable<CalendarDateShape>;\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n touchStart: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar',\n month: 'MonthView__month',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\nconst getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n public static defaultProps = {\n holidays: [],\n minDate: {\n year: MIN_YEAR,\n month: MIN_MONTH,\n date: MIN_DATE,\n },\n maxDate: {\n year: MAX_YEAR,\n month: MAX_MONTH,\n date: MAX_DATE,\n },\n };\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const today = getTodayDate();\n\n const initialMonth = props.initialMonth ?? today.month;\n const initialYear = props.initialYear ?? today.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n touchStart: 0,\n };\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\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 /**\n * Scrolls calendar to given date\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const { minDate, maxDate } = this.props;\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () =>\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n\n const isYearChanges = (state: CalendarState) =>\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2;\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) =>\n MonthViewModel.create(month + index, year),\n );\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) =>\n MonthViewModel.create(month + index - monthsToAppendCount + 2, year),\n );\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n return (\n <div ref={this.refRoot} className={styles.root(this.theme)} data-tid={CalendarDataTids.root}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n </div>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={this.props.maxDate}\n minDate={this.props.minDate}\n today={this.state.today}\n value={this.props.value}\n onDateClick={this.props.onSelect}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.props.isHoliday}\n />\n );\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) =>\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any),\n );\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) =>\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n })),\n onEnd,\n );\n };\n}\n"]}
@@ -21,6 +21,12 @@ export interface CalendarState {
21
21
  scrollTarget: number;
22
22
  touchStart: number;
23
23
  }
24
+ export declare const CalendarDataTids: {
25
+ readonly root: "Calendar";
26
+ readonly month: "MonthView__month";
27
+ readonly headerMonth: "MonthView__headerMonth";
28
+ readonly headerYear: "MonthView__headerYear";
29
+ };
24
30
  export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
25
31
  static __KONTUR_REACT_UI__: string;
26
32
  static defaultProps: {
@@ -6,6 +6,7 @@ import { cx } from "../../../lib/theming/Emotion";
6
6
  import { styles } from "../MonthView.styles";
7
7
  import { themeConfig } from "../config";
8
8
  import * as CDS from "../CalendarDateShape";
9
+ import { CalendarDataTids } from "../Calendar";
9
10
  export function MonthView(props) {
10
11
  var _cx;
11
12
 
@@ -68,7 +69,7 @@ export function MonthView(props) {
68
69
  };
69
70
 
70
71
  return /*#__PURE__*/React.createElement("div", {
71
- "data-tid": "MonthView__month",
72
+ "data-tid": CalendarDataTids.month,
72
73
  className: styles.month(theme),
73
74
  style: {
74
75
  top: top
@@ -85,7 +86,7 @@ export function MonthView(props) {
85
86
  },
86
87
  className: styles.monthTitle(theme)
87
88
  }, /*#__PURE__*/React.createElement("div", {
88
- "data-tid": "MonthView__headerMonth",
89
+ "data-tid": CalendarDataTids.headerMonth,
89
90
  className: styles.headerMonth(theme)
90
91
  }, /*#__PURE__*/React.createElement(DateSelect, {
91
92
  disabled: monthSelectDisabled,
@@ -97,7 +98,7 @@ export function MonthView(props) {
97
98
  minValue: getMinMonth(year),
98
99
  maxValue: getMaxMonth(year)
99
100
  })), isYearVisible && /*#__PURE__*/React.createElement("div", {
100
- "data-tid": "MonthView__headerYear",
101
+ "data-tid": CalendarDataTids.headerYear,
101
102
  className: styles.headerYear(theme),
102
103
  style: {
103
104
  top: yearTop
@@ -1 +1 @@
1
- {"version":3,"sources":["MonthView.tsx"],"names":["React","useContext","DateSelect","ThemeContext","ColorFunctions","cx","styles","themeConfig","CDS","MonthView","props","theme","children","height","isFirstInYear","isLastInYear","maxDate","minDate","month","top","year","onMonthSelect","onYearSelect","monthSelectRef","yearSelectRef","isTopNegative","isHeaderSticky","headerTop","Math","min","MONTH_TITLE_HEIGHT","alpha","borderBottomColor","fade","calendarMonthTitleBorderBottomColor","isYearVisible","yearTop","monthSelectDisabled","yearSelectDisabled","getMinMonth","value","i","isGreaterOrEqual","date","getMaxMonth","max","isLessOrEqual","header","headerSticky","monthTitle","headerMonth","undefined","headerYear"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\n\nimport { DateSelect } from '../DateSelect';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MonthView.styles';\nimport { themeConfig } from './config';\nimport * as CDS from './CalendarDateShape';\n\ninterface MonthViewProps {\n children: React.ReactNode;\n firstDayOffset: number;\n height: number;\n isFirstInYear?: boolean;\n isLastInYear?: boolean;\n maxDate?: CDS.CalendarDateShape;\n minDate?: CDS.CalendarDateShape;\n month: number;\n top: number;\n year: number;\n onMonthSelect: (month: number) => void;\n onYearSelect: (month: number) => void;\n monthSelectRef: (select: DateSelect | null) => void;\n yearSelectRef: (select: DateSelect | null) => void;\n}\n\nexport function MonthView(props: MonthViewProps) {\n const theme = useContext(ThemeContext);\n\n const {\n children,\n height,\n isFirstInYear,\n isLastInYear,\n maxDate,\n minDate,\n month,\n top,\n year,\n onMonthSelect,\n onYearSelect,\n monthSelectRef,\n yearSelectRef,\n } = props;\n\n const isTopNegative = top <= 0;\n const isHeaderSticky = isTopNegative && height >= -top;\n const headerTop = isHeaderSticky ? Math.min(-top, height - themeConfig(theme).MONTH_TITLE_HEIGHT) : 0;\n const alpha = isHeaderSticky ? (height + top - themeConfig(theme).MONTH_TITLE_HEIGHT) / 10 : 1;\n const borderBottomColor = ColorFunctions.fade(theme.calendarMonthTitleBorderBottomColor, alpha);\n const isYearVisible = isFirstInYear || isHeaderSticky;\n const yearTop = isHeaderSticky && !isLastInYear ? -headerTop - top : 0;\n const monthSelectDisabled = top > 40 || headerTop < 0 || headerTop >= height - themeConfig(theme).MONTH_TITLE_HEIGHT;\n const yearSelectDisabled = top > 40 || (isLastInYear && top < -height + themeConfig(theme).MONTH_TITLE_HEIGHT);\n\n const getMinMonth = (value: number) => {\n let min = 0;\n for (let i = 0; i < 12; ++i) {\n if (minDate && CDS.isGreaterOrEqual({ date: 31, month: i, year: value }, minDate)) {\n min = i;\n break;\n }\n }\n return min;\n };\n\n const getMaxMonth = (value: number) => {\n let max = 11;\n for (let i = 11; i >= 0; --i) {\n if (maxDate && CDS.isLessOrEqual({ date: 1, month: i, year: value }, maxDate)) {\n max = i;\n break;\n }\n }\n return max;\n };\n\n return (\n <div data-tid=\"MonthView__month\" className={styles.month(theme)} style={{ top }} key={month + '-' + year}>\n <div\n style={{ top: headerTop }}\n className={cx({\n [styles.header()]: true,\n [styles.headerSticky(theme)]: isHeaderSticky,\n })}\n >\n <div style={{ borderBottomColor }} className={styles.monthTitle(theme)}>\n <div data-tid=\"MonthView__headerMonth\" className={styles.headerMonth(theme)}>\n <DateSelect\n disabled={monthSelectDisabled}\n width={85}\n type=\"month\"\n value={month}\n onValueChange={onMonthSelect}\n ref={!monthSelectDisabled ? monthSelectRef : undefined}\n minValue={getMinMonth(year)}\n maxValue={getMaxMonth(year)}\n />\n </div>\n {isYearVisible && (\n <div data-tid=\"MonthView__headerYear\" className={styles.headerYear(theme)} style={{ top: yearTop }}>\n <DateSelect\n disabled={yearSelectDisabled}\n width={50}\n type=\"year\"\n value={year}\n minValue={minDate ? minDate.year : undefined}\n maxValue={maxDate ? maxDate.year : undefined}\n onValueChange={onYearSelect}\n ref={!yearSelectDisabled ? yearSelectRef : undefined}\n />\n </div>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["MonthView.tsx"],"names":["React","useContext","DateSelect","ThemeContext","ColorFunctions","cx","styles","themeConfig","CDS","CalendarDataTids","MonthView","props","theme","children","height","isFirstInYear","isLastInYear","maxDate","minDate","month","top","year","onMonthSelect","onYearSelect","monthSelectRef","yearSelectRef","isTopNegative","isHeaderSticky","headerTop","Math","min","MONTH_TITLE_HEIGHT","alpha","borderBottomColor","fade","calendarMonthTitleBorderBottomColor","isYearVisible","yearTop","monthSelectDisabled","yearSelectDisabled","getMinMonth","value","i","isGreaterOrEqual","date","getMaxMonth","max","isLessOrEqual","header","headerSticky","monthTitle","headerMonth","undefined","headerYear"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\n\nimport { DateSelect } from '../DateSelect';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MonthView.styles';\nimport { themeConfig } from './config';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDataTids } from './Calendar';\n\ninterface MonthViewProps {\n children: React.ReactNode;\n firstDayOffset: number;\n height: number;\n isFirstInYear?: boolean;\n isLastInYear?: boolean;\n maxDate?: CDS.CalendarDateShape;\n minDate?: CDS.CalendarDateShape;\n month: number;\n top: number;\n year: number;\n onMonthSelect: (month: number) => void;\n onYearSelect: (month: number) => void;\n monthSelectRef: (select: DateSelect | null) => void;\n yearSelectRef: (select: DateSelect | null) => void;\n}\n\nexport function MonthView(props: MonthViewProps) {\n const theme = useContext(ThemeContext);\n\n const {\n children,\n height,\n isFirstInYear,\n isLastInYear,\n maxDate,\n minDate,\n month,\n top,\n year,\n onMonthSelect,\n onYearSelect,\n monthSelectRef,\n yearSelectRef,\n } = props;\n\n const isTopNegative = top <= 0;\n const isHeaderSticky = isTopNegative && height >= -top;\n const headerTop = isHeaderSticky ? Math.min(-top, height - themeConfig(theme).MONTH_TITLE_HEIGHT) : 0;\n const alpha = isHeaderSticky ? (height + top - themeConfig(theme).MONTH_TITLE_HEIGHT) / 10 : 1;\n const borderBottomColor = ColorFunctions.fade(theme.calendarMonthTitleBorderBottomColor, alpha);\n const isYearVisible = isFirstInYear || isHeaderSticky;\n const yearTop = isHeaderSticky && !isLastInYear ? -headerTop - top : 0;\n const monthSelectDisabled = top > 40 || headerTop < 0 || headerTop >= height - themeConfig(theme).MONTH_TITLE_HEIGHT;\n const yearSelectDisabled = top > 40 || (isLastInYear && top < -height + themeConfig(theme).MONTH_TITLE_HEIGHT);\n\n const getMinMonth = (value: number) => {\n let min = 0;\n for (let i = 0; i < 12; ++i) {\n if (minDate && CDS.isGreaterOrEqual({ date: 31, month: i, year: value }, minDate)) {\n min = i;\n break;\n }\n }\n return min;\n };\n\n const getMaxMonth = (value: number) => {\n let max = 11;\n for (let i = 11; i >= 0; --i) {\n if (maxDate && CDS.isLessOrEqual({ date: 1, month: i, year: value }, maxDate)) {\n max = i;\n break;\n }\n }\n return max;\n };\n\n return (\n <div data-tid={CalendarDataTids.month} className={styles.month(theme)} style={{ top }} key={month + '-' + year}>\n <div\n style={{ top: headerTop }}\n className={cx({\n [styles.header()]: true,\n [styles.headerSticky(theme)]: isHeaderSticky,\n })}\n >\n <div style={{ borderBottomColor }} className={styles.monthTitle(theme)}>\n <div data-tid={CalendarDataTids.headerMonth} className={styles.headerMonth(theme)}>\n <DateSelect\n disabled={monthSelectDisabled}\n width={85}\n type=\"month\"\n value={month}\n onValueChange={onMonthSelect}\n ref={!monthSelectDisabled ? monthSelectRef : undefined}\n minValue={getMinMonth(year)}\n maxValue={getMaxMonth(year)}\n />\n </div>\n {isYearVisible && (\n <div data-tid={CalendarDataTids.headerYear} className={styles.headerYear(theme)} style={{ top: yearTop }}>\n <DateSelect\n disabled={yearSelectDisabled}\n width={50}\n type=\"year\"\n value={year}\n minValue={minDate ? minDate.year : undefined}\n maxValue={maxDate ? maxDate.year : undefined}\n onValueChange={onYearSelect}\n ref={!yearSelectDisabled ? yearSelectRef : undefined}\n />\n </div>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
- var _excluded = ["className", "style", "rootNodeRef"],
5
- _excluded2 = ["children"];
4
+ var _excluded = ["className", "style", "children", "rootNodeRef"];
6
5
 
7
6
  var _class;
8
7
 
@@ -57,11 +56,10 @@ export var CommonWrapper = rootNode(_class = /*#__PURE__*/function (_React$Compo
57
56
  _extractCommonProps$ = _extractCommonProps[0],
58
57
  className = _extractCommonProps$.className,
59
58
  style = _extractCommonProps$.style,
59
+ children = _extractCommonProps$.children,
60
60
  rootNodeRef = _extractCommonProps$.rootNodeRef,
61
61
  dataProps = _objectWithoutPropertiesLoose(_extractCommonProps$, _excluded),
62
- _extractCommonProps$2 = _extractCommonProps[1],
63
- children = _extractCommonProps$2.children,
64
- rest = _objectWithoutPropertiesLoose(_extractCommonProps$2, _excluded2);
62
+ rest = _extends({}, _extractCommonProps[1]);
65
63
 
66
64
  this.child = isFunction(children) ? children(rest) : children;
67
65
  return /*#__PURE__*/React.isValidElement(this.child) ? /*#__PURE__*/React.cloneElement(this.child, _extends({
@@ -96,6 +94,7 @@ var isCommonProp = function isCommonProp(name) {
96
94
  case name === 'className':
97
95
  case name === 'style':
98
96
  case name === 'rootNodeRef':
97
+ case name === 'children':
99
98
  case name.indexOf('data-') === 0:
100
99
  // все data-атрибуты
101
100
  return true;