@skbkontur/react-ui 4.1.2 → 4.2.2

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 (449) hide show
  1. package/CHANGELOG.md +44 -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 +3 -0
  15. package/cjs/components/Checkbox/Checkbox.js +8 -2
  16. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.md +48 -0
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  19. package/cjs/components/CurrencyInput/CurrencyInput.js +23 -5
  20. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  21. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  22. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
  23. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  24. package/cjs/components/DatePicker/DatePicker.d.ts +5 -0
  25. package/cjs/components/DatePicker/DatePicker.js +14 -3
  26. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  27. package/cjs/components/DatePicker/Picker.js +7 -2
  28. package/cjs/components/DatePicker/Picker.js.map +1 -1
  29. package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
  30. package/cjs/components/Dropdown/Dropdown.js +7 -2
  31. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  32. package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
  33. package/cjs/components/FileUploader/FileUploader.js +10 -4
  34. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  35. package/cjs/components/FxInput/FxInput.d.ts +3 -0
  36. package/cjs/components/FxInput/FxInput.js +7 -3
  37. package/cjs/components/FxInput/FxInput.js.map +1 -1
  38. package/cjs/components/Gapped/Gapped.d.ts +4 -0
  39. package/cjs/components/Gapped/Gapped.js +9 -4
  40. package/cjs/components/Gapped/Gapped.js.map +1 -1
  41. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  42. package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
  43. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  44. package/cjs/components/Group/Group.d.ts +3 -0
  45. package/cjs/components/Group/Group.js +7 -3
  46. package/cjs/components/Group/Group.js.map +1 -1
  47. package/cjs/components/Input/Input.d.ts +3 -0
  48. package/cjs/components/Input/Input.js +7 -3
  49. package/cjs/components/Input/Input.js.map +1 -1
  50. package/cjs/components/Link/Link.d.ts +4 -1
  51. package/cjs/components/Link/Link.js +8 -4
  52. package/cjs/components/Link/Link.js.map +1 -1
  53. package/cjs/components/Loader/Loader.d.ts +4 -0
  54. package/cjs/components/Loader/Loader.js +8 -3
  55. package/cjs/components/Loader/Loader.js.map +1 -1
  56. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
  57. package/cjs/components/MenuHeader/MenuHeader.js +7 -2
  58. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  59. package/cjs/components/MenuItem/MenuItem.d.ts +5 -1
  60. package/cjs/components/MenuItem/MenuItem.js +11 -5
  61. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  62. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  63. package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
  64. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  65. package/cjs/components/Modal/Modal.d.ts +5 -0
  66. package/cjs/components/Modal/Modal.js +9 -3
  67. package/cjs/components/Modal/Modal.js.map +1 -1
  68. package/cjs/components/Modal/ModalClose.js +3 -2
  69. package/cjs/components/Modal/ModalClose.js.map +1 -1
  70. package/cjs/components/Modal/ModalFooter.d.ts +3 -0
  71. package/cjs/components/Modal/ModalFooter.js +8 -3
  72. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  73. package/cjs/components/Modal/ModalHeader.d.ts +3 -0
  74. package/cjs/components/Modal/ModalHeader.js +9 -3
  75. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  76. package/cjs/components/Paging/Paging.d.ts +8 -1
  77. package/cjs/components/Paging/Paging.js +15 -7
  78. package/cjs/components/Paging/Paging.js.map +1 -1
  79. package/cjs/components/PasswordInput/PasswordInput.d.ts +5 -0
  80. package/cjs/components/PasswordInput/PasswordInput.js +13 -5
  81. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  82. package/cjs/components/Radio/Radio.d.ts +3 -0
  83. package/cjs/components/Radio/Radio.js +7 -3
  84. package/cjs/components/Radio/Radio.js.map +1 -1
  85. package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -0
  86. package/cjs/components/RadioGroup/RadioGroup.js +21 -4
  87. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  88. package/cjs/components/ResponsiveLayout/useResponsiveLayout.js +1 -1
  89. package/cjs/components/ResponsiveLayout/useResponsiveLayout.js.map +1 -1
  90. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  91. package/cjs/components/ScrollContainer/ScrollContainer.js +14 -4
  92. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  93. package/cjs/components/Select/Select.d.ts +3 -0
  94. package/cjs/components/Select/Select.js +11 -3
  95. package/cjs/components/Select/Select.js.map +1 -1
  96. package/cjs/components/SidePage/SidePage.d.ts +4 -0
  97. package/cjs/components/SidePage/SidePage.js +7 -2
  98. package/cjs/components/SidePage/SidePage.js.map +1 -1
  99. package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
  100. package/cjs/components/SidePage/SidePageBody.js +10 -3
  101. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  102. package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
  103. package/cjs/components/SidePage/SidePageContainer.js +7 -2
  104. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  105. package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
  106. package/cjs/components/SidePage/SidePageFooter.js +11 -3
  107. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  108. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
  109. package/cjs/components/SidePage/SidePageHeader.js +9 -4
  110. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  111. package/cjs/components/Spinner/Spinner.d.ts +3 -0
  112. package/cjs/components/Spinner/Spinner.js +7 -3
  113. package/cjs/components/Spinner/Spinner.js.map +1 -1
  114. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  115. package/cjs/components/Sticky/Sticky.js +7 -3
  116. package/cjs/components/Sticky/Sticky.js.map +1 -1
  117. package/cjs/components/Switcher/Switcher.d.ts +3 -0
  118. package/cjs/components/Switcher/Switcher.js +7 -3
  119. package/cjs/components/Switcher/Switcher.js.map +1 -1
  120. package/cjs/components/Tabs/Indicator.js +4 -2
  121. package/cjs/components/Tabs/Indicator.js.map +1 -1
  122. package/cjs/components/Tabs/Tab.d.ts +3 -0
  123. package/cjs/components/Tabs/Tab.js +7 -2
  124. package/cjs/components/Tabs/Tab.js.map +1 -1
  125. package/cjs/components/Tabs/Tabs.d.ts +4 -0
  126. package/cjs/components/Tabs/Tabs.js +12 -3
  127. package/cjs/components/Tabs/Tabs.js.map +1 -1
  128. package/cjs/components/Textarea/Textarea.d.ts +4 -0
  129. package/cjs/components/Textarea/Textarea.js +8 -3
  130. package/cjs/components/Textarea/Textarea.js.map +1 -1
  131. package/cjs/components/Textarea/TextareaCounter.js +10 -9
  132. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  133. package/cjs/components/Toast/Toast.d.ts +6 -0
  134. package/cjs/components/Toast/Toast.js +9 -2
  135. package/cjs/components/Toast/Toast.js.map +1 -1
  136. package/cjs/components/Toast/ToastStatic.js +1 -1
  137. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  138. package/cjs/components/Toast/ToastView.js +5 -4
  139. package/cjs/components/Toast/ToastView.js.map +1 -1
  140. package/cjs/components/Toggle/Toggle.d.ts +3 -0
  141. package/cjs/components/Toggle/Toggle.js +7 -3
  142. package/cjs/components/Toggle/Toggle.js.map +1 -1
  143. package/cjs/components/Token/Token.d.ts +3 -0
  144. package/cjs/components/Token/Token.js +8 -3
  145. package/cjs/components/Token/Token.js.map +1 -1
  146. package/cjs/components/TokenInput/TokenInput.d.ts +4 -0
  147. package/cjs/components/TokenInput/TokenInput.js +7 -2
  148. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  149. package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
  150. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  151. package/cjs/components/Tooltip/Tooltip.d.ts +4 -0
  152. package/cjs/components/Tooltip/Tooltip.js +9 -3
  153. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  154. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  155. package/cjs/components/TooltipMenu/TooltipMenu.js +7 -2
  156. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  157. package/cjs/internal/Calendar/Calendar.d.ts +6 -0
  158. package/cjs/internal/Calendar/Calendar.js +9 -2
  159. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  160. package/cjs/internal/Calendar/MonthView.js +5 -4
  161. package/cjs/internal/Calendar/MonthView.js.map +1 -1
  162. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  163. package/cjs/internal/CommonWrapper/CommonWrapper.js +4 -2
  164. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  165. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  166. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +23 -5
  167. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  168. package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
  169. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  170. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  171. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -2
  172. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  173. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  174. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  175. package/cjs/internal/DataTids/DataTids.js +46 -0
  176. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  177. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  178. package/cjs/internal/DataTids/DataTids.styles.js +41 -0
  179. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  180. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  181. package/cjs/internal/DataTids/componentsDataTids.js +16 -0
  182. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  183. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
  184. package/cjs/internal/DateSelect/DateSelect.js +8 -3
  185. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  186. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  187. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +14 -6
  188. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  189. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  190. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
  191. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  192. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -0
  193. package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
  194. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  195. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
  196. package/cjs/internal/InternalMenu/InternalMenu.js +8 -3
  197. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  198. package/cjs/internal/InternalMenu/InternalMenu.styles.js +2 -1
  199. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  200. package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
  201. package/cjs/internal/MaskedInput/MaskedInput.js +7 -3
  202. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  203. package/cjs/internal/Menu/Menu.d.ts +3 -0
  204. package/cjs/internal/Menu/Menu.js +8 -3
  205. package/cjs/internal/Menu/Menu.js.map +1 -1
  206. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  207. package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
  208. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  209. package/cjs/internal/Popup/Popup.d.ts +5 -0
  210. package/cjs/internal/Popup/Popup.js +10 -4
  211. package/cjs/internal/Popup/Popup.js.map +1 -1
  212. package/cjs/internal/Popup/PopupPin.js +2 -1
  213. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  214. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -0
  215. package/cjs/internal/PopupMenu/PopupMenu.js +9 -4
  216. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  217. package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -0
  218. package/cjs/internal/RenderLayer/RenderLayer.js +8 -3
  219. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  220. package/cjs/internal/icons/16px/index.js +1 -1
  221. package/cjs/internal/icons/16px/index.js.map +1 -1
  222. package/cjs/lib/listenFocusOutside.js +1 -1
  223. package/cjs/lib/listenFocusOutside.js.map +1 -1
  224. package/components/Autocomplete/Autocomplete/Autocomplete.js +10 -6
  225. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  226. package/components/Autocomplete/Autocomplete.d.ts +3 -0
  227. package/components/Button/Button/Button.js +5 -1
  228. package/components/Button/Button/Button.js.map +1 -1
  229. package/components/Button/Button.d.ts +3 -0
  230. package/components/Button/Button.styles/Button.styles.js +6 -6
  231. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  232. package/components/Button/Button.styles.d.ts +1 -1
  233. package/components/Center/Center/Center.js +10 -5
  234. package/components/Center/Center/Center.js.map +1 -1
  235. package/components/Center/Center.d.ts +3 -0
  236. package/components/Checkbox/Checkbox/Checkbox.js +4 -0
  237. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  238. package/components/Checkbox/Checkbox.d.ts +3 -0
  239. package/components/Checkbox/Checkbox.md +48 -0
  240. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +27 -12
  241. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  242. package/components/CurrencyInput/CurrencyInput.d.ts +4 -1
  243. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
  244. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  245. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  246. package/components/DatePicker/DatePicker/DatePicker.js +6 -0
  247. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  248. package/components/DatePicker/DatePicker.d.ts +5 -0
  249. package/components/DatePicker/Picker/Picker.js +3 -1
  250. package/components/DatePicker/Picker/Picker.js.map +1 -1
  251. package/components/Dropdown/Dropdown/Dropdown.js +9 -5
  252. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  253. package/components/Dropdown/Dropdown.d.ts +3 -0
  254. package/components/FileUploader/FileUploader/FileUploader.js +9 -2
  255. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  256. package/components/FileUploader/FileUploader.d.ts +5 -0
  257. package/components/FxInput/FxInput/FxInput.js +6 -2
  258. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  259. package/components/FxInput/FxInput.d.ts +3 -0
  260. package/components/Gapped/Gapped/Gapped.js +12 -5
  261. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  262. package/components/Gapped/Gapped.d.ts +4 -0
  263. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +4 -1
  264. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  265. package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  266. package/components/Group/Group/Group.js +4 -0
  267. package/components/Group/Group/Group.js.map +1 -1
  268. package/components/Group/Group.d.ts +3 -0
  269. package/components/Input/Input/Input.js +11 -6
  270. package/components/Input/Input/Input.js.map +1 -1
  271. package/components/Input/Input.d.ts +3 -0
  272. package/components/Link/Link/Link.js +11 -6
  273. package/components/Link/Link/Link.js.map +1 -1
  274. package/components/Link/Link.d.ts +4 -1
  275. package/components/Loader/Loader/Loader.js +10 -6
  276. package/components/Loader/Loader/Loader.js.map +1 -1
  277. package/components/Loader/Loader.d.ts +4 -0
  278. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  279. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  280. package/components/MenuHeader/MenuHeader.d.ts +3 -0
  281. package/components/MenuItem/MenuItem/MenuItem.js +16 -10
  282. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  283. package/components/MenuItem/MenuItem.d.ts +5 -1
  284. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
  285. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  286. package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  287. package/components/Modal/Modal/Modal.js +7 -2
  288. package/components/Modal/Modal/Modal.js.map +1 -1
  289. package/components/Modal/Modal.d.ts +5 -0
  290. package/components/Modal/ModalClose/ModalClose.js +2 -1
  291. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  292. package/components/Modal/ModalFooter/ModalFooter.js +6 -2
  293. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  294. package/components/Modal/ModalFooter.d.ts +3 -0
  295. package/components/Modal/ModalHeader/ModalHeader.js +6 -2
  296. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  297. package/components/Modal/ModalHeader.d.ts +3 -0
  298. package/components/Paging/Paging/Paging.js +12 -5
  299. package/components/Paging/Paging/Paging.js.map +1 -1
  300. package/components/Paging/Paging.d.ts +8 -1
  301. package/components/PasswordInput/PasswordInput/PasswordInput.js +12 -6
  302. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  303. package/components/PasswordInput/PasswordInput.d.ts +5 -0
  304. package/components/Radio/Radio/Radio.js +10 -5
  305. package/components/Radio/Radio/Radio.js.map +1 -1
  306. package/components/Radio/Radio.d.ts +3 -0
  307. package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -11
  308. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  309. package/components/RadioGroup/RadioGroup.d.ts +9 -0
  310. package/components/ResponsiveLayout/useResponsiveLayout/useResponsiveLayout.js +1 -1
  311. package/components/ResponsiveLayout/useResponsiveLayout/useResponsiveLayout.js.map +1 -1
  312. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +6 -1
  313. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  314. package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  315. package/components/Select/Select/Select.js +4 -0
  316. package/components/Select/Select/Select.js.map +1 -1
  317. package/components/Select/Select.d.ts +3 -0
  318. package/components/SidePage/SidePage/SidePage.js +6 -2
  319. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  320. package/components/SidePage/SidePage.d.ts +4 -0
  321. package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
  322. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  323. package/components/SidePage/SidePageBody.d.ts +3 -0
  324. package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
  325. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  326. package/components/SidePage/SidePageContainer.d.ts +3 -0
  327. package/components/SidePage/SidePageFooter/SidePageFooter.js +10 -6
  328. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  329. package/components/SidePage/SidePageFooter.d.ts +3 -0
  330. package/components/SidePage/SidePageHeader/SidePageHeader.js +12 -7
  331. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  332. package/components/SidePage/SidePageHeader.d.ts +4 -0
  333. package/components/Spinner/Spinner/Spinner.js +8 -4
  334. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  335. package/components/Spinner/Spinner.d.ts +3 -0
  336. package/components/Sticky/Sticky/Sticky.js +4 -0
  337. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  338. package/components/Sticky/Sticky.d.ts +3 -0
  339. package/components/Switcher/Switcher/Switcher.js +4 -0
  340. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  341. package/components/Switcher/Switcher.d.ts +3 -0
  342. package/components/Tabs/Indicator/Indicator.js +2 -0
  343. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  344. package/components/Tabs/Tab/Tab.js +4 -0
  345. package/components/Tabs/Tab/Tab.js.map +1 -1
  346. package/components/Tabs/Tab.d.ts +3 -0
  347. package/components/Tabs/Tabs/Tabs.js +11 -6
  348. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  349. package/components/Tabs/Tabs.d.ts +4 -0
  350. package/components/Textarea/Textarea/Textarea.js +15 -9
  351. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  352. package/components/Textarea/Textarea.d.ts +4 -0
  353. package/components/Textarea/TextareaCounter/TextareaCounter.js +8 -3
  354. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  355. package/components/Toast/Toast/Toast.js +16 -10
  356. package/components/Toast/Toast/Toast.js.map +1 -1
  357. package/components/Toast/Toast.d.ts +6 -0
  358. package/components/Toast/ToastStatic/ToastStatic.js +2 -2
  359. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  360. package/components/Toast/ToastView/ToastView.js +4 -3
  361. package/components/Toast/ToastView/ToastView.js.map +1 -1
  362. package/components/Toggle/Toggle/Toggle.js +8 -4
  363. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  364. package/components/Toggle/Toggle.d.ts +3 -0
  365. package/components/Token/Token/Token.js +4 -0
  366. package/components/Token/Token/Token.js.map +1 -1
  367. package/components/Token/Token.d.ts +3 -0
  368. package/components/TokenInput/TokenInput/TokenInput.js +5 -0
  369. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  370. package/components/TokenInput/TokenInput.d.ts +4 -0
  371. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
  372. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  373. package/components/Tooltip/Tooltip/Tooltip.js +7 -1
  374. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  375. package/components/Tooltip/Tooltip.d.ts +4 -0
  376. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +16 -12
  377. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  378. package/components/TooltipMenu/TooltipMenu.d.ts +3 -0
  379. package/internal/Calendar/Calendar/Calendar.js +7 -1
  380. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  381. package/internal/Calendar/Calendar.d.ts +6 -0
  382. package/internal/Calendar/MonthView/MonthView.js +4 -3
  383. package/internal/Calendar/MonthView/MonthView.js.map +1 -1
  384. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +4 -5
  385. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  386. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  387. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +12 -5
  388. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  389. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  390. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
  391. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  392. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -0
  393. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  394. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  395. package/internal/DataTids/DATATIDS.md +12 -0
  396. package/internal/DataTids/DataTids/DataTids.js +69 -0
  397. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  398. package/internal/DataTids/DataTids/package.json +6 -0
  399. package/internal/DataTids/DataTids.d.ts +12 -0
  400. package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
  401. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  402. package/internal/DataTids/DataTids.styles/package.json +6 -0
  403. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  404. package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
  405. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  406. package/internal/DataTids/componentsDataTids/package.json +6 -0
  407. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  408. package/internal/DateSelect/DateSelect/DateSelect.js +6 -2
  409. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  410. package/internal/DateSelect/DateSelect.d.ts +4 -0
  411. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +12 -5
  412. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  413. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  414. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
  415. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  416. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  417. package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
  418. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  419. package/internal/InputLikeText/InputLikeText.d.ts +4 -0
  420. package/internal/InternalMenu/InternalMenu/InternalMenu.js +4 -0
  421. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  422. package/internal/InternalMenu/InternalMenu.d.ts +3 -0
  423. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +1 -1
  424. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  425. package/internal/MaskedInput/MaskedInput/MaskedInput.js +4 -0
  426. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  427. package/internal/MaskedInput/MaskedInput.d.ts +3 -0
  428. package/internal/Menu/Menu/Menu.js +4 -0
  429. package/internal/Menu/Menu/Menu.js.map +1 -1
  430. package/internal/Menu/Menu.d.ts +3 -0
  431. package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
  432. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  433. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  434. package/internal/Popup/Popup/Popup.js +7 -2
  435. package/internal/Popup/Popup/Popup.js.map +1 -1
  436. package/internal/Popup/Popup.d.ts +5 -0
  437. package/internal/Popup/PopupPin/PopupPin.js +2 -0
  438. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  439. package/internal/PopupMenu/PopupMenu/PopupMenu.js +7 -2
  440. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  441. package/internal/PopupMenu/PopupMenu.d.ts +4 -0
  442. package/internal/RenderLayer/RenderLayer/RenderLayer.js +10 -7
  443. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  444. package/internal/RenderLayer/RenderLayer.d.ts +1 -0
  445. package/internal/icons/16px/index/index.js +1 -1
  446. package/internal/icons/16px/index/index.js.map +1 -1
  447. package/lib/listenFocusOutside/listenFocusOutside.js +1 -1
  448. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  449. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.tsx"],"names":["Menu","rootNode","state","highlightedIndex","unmounted","getChildList","enableIconPadding","React","Children","toArray","props","children","some","x","isValidElement","icon","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","getAlignRightClass","styles","root","shadow","hasShadow","getStyle","setRootNode","maxHeight","preventWindowScroll","disableScrollContainer","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","defaultProps","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\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 * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n >\n <div className={styles.scrollContainer(this.theme)}>{this.getChildList()}</div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"sources":["Menu.tsx"],"names":["MenuDataTids","root","Menu","rootNode","state","highlightedIndex","unmounted","getChildList","enableIconPadding","React","Children","toArray","props","children","some","x","isValidElement","icon","map","child","index","modifiedChild","highlight","ref","refHighlighted","bind","cloneElement","onClick","select","onMouseEnter","onMouseLeave","unhighlight","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","scrollToTop","scrollToBottom","setState","componentWillUnmount","render","theme","renderMain","up","move","down","enter","event","reset","hasHighlightedItem","highlightItem","isEmpty","getAlignRightClass","styles","shadow","hasShadow","getStyle","setRootNode","maxHeight","preventWindowScroll","disableScrollContainer","originalRef","menuItem","shouldHandleHref","item","childrenToArray","href","target","window","open","location","onItemClick","step","activeElements","filter","isActiveElement","length","indexOf","isNonNullable","Component","__KONTUR_REACT_UI__","defaultProps","align","width","ret","forEach","push","maxWidth","minWidth","alignRight","isIE11","alignRightIE11","alignRightIE11FixAutoWidth"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { ScrollContainer } from '../../components/ScrollContainer';\nimport { MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { addIconPaddingIfPartOfMenu } from '../InternalMenu/addIconPaddingIfPartOfMenu';\nimport { isIE11 } from '../../lib/client';\n\nimport { styles } from './Menu.styles';\nimport { isActiveElement } from './isActiveElement';\n\nexport interface MenuProps {\n children: React.ReactNode;\n hasShadow?: boolean;\n maxHeight?: number | string;\n onItemClick?: () => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n /**\n * Отключение кастомного скролла контейнера\n */\n disableScrollContainer?: boolean;\n align?: 'left' | 'right';\n}\n\nexport interface MenuState {\n highlightedIndex: number;\n}\n\nexport const MenuDataTids = {\n root: 'Menu__root',\n} as const;\n\n@rootNode\nexport class Menu extends React.Component<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'Menu';\n\n public static defaultProps = {\n align: 'left',\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n };\n\n public state = {\n highlightedIndex: -1,\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private unmounted = false;\n private setRootNode!: TSetRootNode;\n\n public componentWillUnmount() {\n this.unmounted = true;\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 * @public\n */\n public up() {\n this.move(-1);\n }\n\n /**\n * @public\n */\n public down() {\n this.move(1);\n }\n\n /**\n * @public\n */\n public enter(event: React.SyntheticEvent<HTMLElement>) {\n return this.select(this.state.highlightedIndex, true, event);\n }\n\n /**\n * @public\n */\n public reset() {\n this.setState({ highlightedIndex: -1 });\n }\n\n /**\n * @public\n */\n public hasHighlightedItem() {\n return this.state.highlightedIndex !== -1;\n }\n\n public highlightItem(index: number) {\n this.highlight(index);\n }\n\n private renderMain() {\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n data-tid={MenuDataTids.root}\n className={cx(getAlignRightClass(this.props), {\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={getStyle(this.props)}\n ref={this.setRootNode}\n >\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n disabled={this.props.disableScrollContainer}\n >\n <div className={styles.scrollContainer(this.theme)}>{this.getChildList()}</div>\n </ScrollContainer>\n </div>\n );\n }\n\n private getChildList = () => {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n return React.Children.map(this.props.children, (child, index) => {\n if (!child) {\n return child;\n }\n\n if (typeof child === 'string' || typeof child === 'number') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n if (highlight && typeof modifiedChild.ref !== 'string') {\n ref = this.refHighlighted.bind(this, modifiedChild.ref);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: this.highlight.bind(this, index),\n onMouseLeave: this.unhighlight,\n });\n }\n\n return modifiedChild;\n });\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: ((menuItem: MenuItem | null) => any) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private scrollToTop = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToTop();\n }\n };\n\n private scrollToBottom = () => {\n if (this.scrollContainer) {\n this.scrollContainer.scrollToBottom();\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick();\n }\n return true;\n }\n return false;\n }\n\n private highlight = (index: number) => {\n this.setState({ highlightedIndex: index });\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n if (this.unmounted) {\n // NOTE workaround, because `ComboBox` call `process.nextTick` in reducer\n return;\n }\n\n const children = childrenToArray(this.props.children);\n const activeElements = children.filter(isActiveElement);\n if (!activeElements.length) {\n return;\n }\n let index = this.state.highlightedIndex;\n do {\n index += step;\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n this.setState({ highlightedIndex: index }, () => {\n switch (activeElements.indexOf(child)) {\n case 0:\n this.scrollToTop();\n break;\n case activeElements.length - 1:\n this.scrollToBottom();\n break;\n default:\n this.scrollToSelected();\n }\n });\n return;\n }\n } while (index !== this.state.highlightedIndex);\n }\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n\nconst getStyle = (props: MenuProps): CSSProperties => {\n if (props.align === 'right') {\n return {\n maxWidth: props.width,\n minWidth: props.width,\n maxHeight: props.maxHeight,\n };\n }\n\n return {\n width: props.width,\n maxHeight: props.maxHeight,\n };\n};\n\nconst getAlignRightClass = (props: MenuProps) => {\n if (props.align === 'right') {\n return cx({\n [styles.alignRight()]: !isIE11,\n [styles.alignRightIE11()]: isIE11,\n [styles.alignRightIE11FixAutoWidth()]: isIE11 && props.width === 'auto',\n });\n }\n\n return null;\n};\n"]}
@@ -20,6 +20,10 @@ interface MobilePopupProps {
20
20
  interface MobilePopupState {
21
21
  isScrolled: boolean;
22
22
  }
23
+ export declare const MobilePopupDataTids: {
24
+ readonly root: "MobilePopup__root";
25
+ readonly container: "MobilePopup__container";
26
+ };
23
27
  export declare class MobilePopup extends React.Component<MobilePopupProps, MobilePopupState> {
24
28
  static __KONTUR_REACT_UI__: string;
25
29
  private contentDiv;
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MobilePopup = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.MobilePopupDataTids = exports.MobilePopup = void 0;var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _reactTransitionGroup = require("react-transition-group");
3
3
 
4
4
 
@@ -10,7 +10,7 @@ var _ZIndex = require("../ZIndex");
10
10
  var _Emotion = require("../../lib/theming/Emotion");
11
11
 
12
12
  var _MobilePopup = require("./MobilePopup.styles");
13
- var _MobilePopupHeader = require("./MobilePopupHeader");var
13
+ var _MobilePopupHeader = require("./MobilePopupHeader");
14
14
 
15
15
 
16
16
 
@@ -33,6 +33,11 @@ var _MobilePopupHeader = require("./MobilePopupHeader");var
33
33
 
34
34
 
35
35
 
36
+
37
+
38
+ var MobilePopupDataTids = {
39
+ root: 'MobilePopup__root',
40
+ container: 'MobilePopup__container' };exports.MobilePopupDataTids = MobilePopupDataTids;var
36
41
 
37
42
 
38
43
  MobilePopup = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(MobilePopup, _React$Component);function MobilePopup() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
@@ -117,6 +122,8 @@ MobilePopup = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.defa
117
122
 
118
123
 
119
124
 
125
+
126
+
120
127
 
121
128
 
122
129
 
@@ -138,4 +145,4 @@ MobilePopup = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.defa
138
145
  _this.setState({ isScrolled: isScrolled });
139
146
  }
140
147
  }
141
- };return _this;}var _proto = MobilePopup.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var content = /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'MobilePopup' }, /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { in: this.props.opened, onExited: this.props.onClose, mountOnEnter: true, unmountOnExit: true, appear: true, timeout: { appear: 0, exit: 250 } }, function (state) {var _cx, _cx2, _cx3;return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx = {}, _cx[_MobilePopup.jsStyles.container(_this3.theme)] = true, _cx[_MobilePopup.jsStyles.containerOpened()] = state === 'entered', _cx)) }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_MobilePopup.jsStyles.root(_this3.theme)] = true, _cx2[_MobilePopup.jsStyles.rootFullHeight(_this3.theme)] = _this3.props.useFullHeight, _cx2)), onClick: _this3.props.useFullHeight ? undefined : _this3.close }, /*#__PURE__*/_react.default.createElement(_MobilePopupHeader.MobilePopupHeader, { caption: _this3.props.caption, onClose: _this3.close, withShadow: _this3.state.isScrolled }, _this3.props.headerChildComponent), /*#__PURE__*/_react.default.createElement("div", { onClick: function onClick(e) {return e.stopPropagation();}, className: _MobilePopup.jsStyles.content(_this3.theme), onScroll: _this3.handleScrollMenu, ref: _this3.refContent }, _this3.props.children))), /*#__PURE__*/_react.default.createElement("div", { onClick: _this3.close, className: (0, _Emotion.cx)((_cx3 = {}, _cx3[_MobilePopup.jsStyles.bg()] = true, _cx3[_MobilePopup.jsStyles.bgShowed()] = state === 'entered', _cx3)) }), /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, null));}));if (this.props.withoutRenderContainer) {return content;}return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, null, content);};return MobilePopup;}(_react.default.Component);exports.MobilePopup = MobilePopup;MobilePopup.__KONTUR_REACT_UI__ = 'MobileMenuHeader';
148
+ };return _this;}var _proto = MobilePopup.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var content = /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'MobilePopup' }, /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { in: this.props.opened, onExited: this.props.onClose, mountOnEnter: true, unmountOnExit: true, appear: true, timeout: { appear: 0, exit: 250 } }, function (state) {var _cx, _cx2, _cx3;return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { "data-tid": MobilePopupDataTids.container, className: (0, _Emotion.cx)((_cx = {}, _cx[_MobilePopup.jsStyles.container(_this3.theme)] = true, _cx[_MobilePopup.jsStyles.containerOpened()] = state === 'entered', _cx)) }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": MobilePopupDataTids.root, className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_MobilePopup.jsStyles.root(_this3.theme)] = true, _cx2[_MobilePopup.jsStyles.rootFullHeight(_this3.theme)] = _this3.props.useFullHeight, _cx2)), onClick: _this3.props.useFullHeight ? undefined : _this3.close }, /*#__PURE__*/_react.default.createElement(_MobilePopupHeader.MobilePopupHeader, { caption: _this3.props.caption, onClose: _this3.close, withShadow: _this3.state.isScrolled }, _this3.props.headerChildComponent), /*#__PURE__*/_react.default.createElement("div", { onClick: function onClick(e) {return e.stopPropagation();}, className: _MobilePopup.jsStyles.content(_this3.theme), onScroll: _this3.handleScrollMenu, ref: _this3.refContent }, _this3.props.children))), /*#__PURE__*/_react.default.createElement("div", { onClick: _this3.close, className: (0, _Emotion.cx)((_cx3 = {}, _cx3[_MobilePopup.jsStyles.bg()] = true, _cx3[_MobilePopup.jsStyles.bgShowed()] = state === 'entered', _cx3)) }), /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, null));}));if (this.props.withoutRenderContainer) {return content;}return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, null, content);};return MobilePopup;}(_react.default.Component);exports.MobilePopup = MobilePopup;MobilePopup.__KONTUR_REACT_UI__ = 'MobileMenuHeader';
@@ -1 +1 @@
1
- {"version":3,"sources":["MobilePopup.tsx"],"names":["MobilePopup","state","isScrolled","close","props","onCloseRequest","refContent","contentDiv","handleScrollMenu","e","scrollTop","setState","render","theme","renderMain","content","opened","onClose","appear","exit","jsStyles","container","containerOpened","root","rootFullHeight","useFullHeight","undefined","caption","headerChildComponent","stopPropagation","children","bg","bgShowed","withoutRenderContainer","React","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\n\ninterface MobilePopupProps {\n /**\n * Хэндлер, вызываемый при закрытии меню\n */\n onClose?: () => void;\n caption?: string;\n /**\n * Компонент, закрепленный сверху меню (под холдером)\n */\n headerChildComponent?: React.ReactNode;\n useFullHeight?: boolean;\n withoutRenderContainer?: boolean;\n /**\n * Хэндлер, вызываемый при клике по вуали или заголовку\n */\n onCloseRequest?: () => void;\n opened: boolean;\n}\n\ninterface MobilePopupState {\n isScrolled: boolean;\n}\n\nexport class MobilePopup extends React.Component<MobilePopupProps, MobilePopupState> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n\n private contentDiv: Nullable<HTMLDivElement>;\n private theme!: Theme;\n\n public state: MobilePopupState = {\n isScrolled: false,\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n appear\n timeout={{ appear: 0, exit: 250 }}\n >\n {(state) => (\n <>\n <div\n className={cx({\n [jsStyles.container(this.theme)]: true,\n [jsStyles.containerOpened()]: state === 'entered',\n })}\n >\n <div\n className={cx({\n [jsStyles.root(this.theme)]: true,\n [jsStyles.rootFullHeight(this.theme)]: this.props.useFullHeight,\n })}\n onClick={this.props.useFullHeight ? undefined : this.close}\n >\n <MobilePopupHeader\n caption={this.props.caption}\n onClose={this.close}\n withShadow={this.state.isScrolled}\n >\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div\n onClick={(e) => e.stopPropagation()}\n className={jsStyles.content(this.theme)}\n onScroll={this.handleScrollMenu}\n ref={this.refContent}\n >\n {this.props.children}\n </div>\n </div>\n </div>\n <div\n onClick={this.close}\n className={cx({\n [jsStyles.bg()]: true,\n [jsStyles.bgShowed()]: state === 'entered',\n })}\n />\n <HideBodyVerticalScroll />\n </>\n )}\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n private refContent = (contentDiv: HTMLDivElement) => {\n this.contentDiv = contentDiv;\n };\n\n private handleScrollMenu = (e: React.UIEvent<HTMLDivElement>) => {\n if (this.contentDiv) {\n const isScrolled = this.contentDiv.scrollTop > 0;\n\n if (isScrolled !== this.state.isScrolled) {\n this.setState({ isScrolled });\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["MobilePopup.tsx"],"names":["MobilePopupDataTids","root","container","MobilePopup","state","isScrolled","close","props","onCloseRequest","refContent","contentDiv","handleScrollMenu","e","scrollTop","setState","render","theme","renderMain","content","opened","onClose","appear","exit","jsStyles","containerOpened","rootFullHeight","useFullHeight","undefined","caption","headerChildComponent","stopPropagation","children","bg","bgShowed","withoutRenderContainer","React","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\n\ninterface MobilePopupProps {\n /**\n * Хэндлер, вызываемый при закрытии меню\n */\n onClose?: () => void;\n caption?: string;\n /**\n * Компонент, закрепленный сверху меню (под холдером)\n */\n headerChildComponent?: React.ReactNode;\n useFullHeight?: boolean;\n withoutRenderContainer?: boolean;\n /**\n * Хэндлер, вызываемый при клике по вуали или заголовку\n */\n onCloseRequest?: () => void;\n opened: boolean;\n}\n\ninterface MobilePopupState {\n isScrolled: boolean;\n}\n\nexport const MobilePopupDataTids = {\n root: 'MobilePopup__root',\n container: 'MobilePopup__container',\n} as const;\n\nexport class MobilePopup extends React.Component<MobilePopupProps, MobilePopupState> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n\n private contentDiv: Nullable<HTMLDivElement>;\n private theme!: Theme;\n\n public state: MobilePopupState = {\n isScrolled: false,\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n appear\n timeout={{ appear: 0, exit: 250 }}\n >\n {(state) => (\n <>\n <div\n data-tid={MobilePopupDataTids.container}\n className={cx({\n [jsStyles.container(this.theme)]: true,\n [jsStyles.containerOpened()]: state === 'entered',\n })}\n >\n <div\n data-tid={MobilePopupDataTids.root}\n className={cx({\n [jsStyles.root(this.theme)]: true,\n [jsStyles.rootFullHeight(this.theme)]: this.props.useFullHeight,\n })}\n onClick={this.props.useFullHeight ? undefined : this.close}\n >\n <MobilePopupHeader\n caption={this.props.caption}\n onClose={this.close}\n withShadow={this.state.isScrolled}\n >\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div\n onClick={(e) => e.stopPropagation()}\n className={jsStyles.content(this.theme)}\n onScroll={this.handleScrollMenu}\n ref={this.refContent}\n >\n {this.props.children}\n </div>\n </div>\n </div>\n <div\n onClick={this.close}\n className={cx({\n [jsStyles.bg()]: true,\n [jsStyles.bgShowed()]: state === 'entered',\n })}\n />\n <HideBodyVerticalScroll />\n </>\n )}\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n private refContent = (contentDiv: HTMLDivElement) => {\n this.contentDiv = contentDiv;\n };\n\n private handleScrollMenu = (e: React.UIEvent<HTMLDivElement>) => {\n if (this.contentDiv) {\n const isScrolled = this.contentDiv.scrollTop > 0;\n\n if (isScrolled !== this.state.isScrolled) {\n this.setState({ isScrolled });\n }\n }\n };\n}\n"]}
@@ -59,6 +59,11 @@ interface PopupLocation {
59
59
  export interface PopupState {
60
60
  location: Nullable<PopupLocation>;
61
61
  }
62
+ export declare const PopupDataTids: {
63
+ readonly content: "PopupContent";
64
+ readonly contentInner: "PopupContentInner";
65
+ readonly popupPin: "PopupPin__root";
66
+ };
62
67
  export declare class Popup extends React.Component<PopupProps, PopupState> {
63
68
  static __KONTUR_REACT_UI__: string;
64
69
  static propTypes: {
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.PopupPositions = exports.Popup = exports.DefaultPosition = void 0;var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.PopupPositions = exports.PopupDataTids = exports.Popup = exports.DefaultPosition = void 0;var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
3
  var _reactTransitionGroup = require("react-transition-group");
4
4
  var _raf = _interopRequireDefault(require("raf"));
@@ -52,7 +52,7 @@ var DUMMY_LOCATION = {
52
52
  position: DefaultPosition,
53
53
  coordinates: {
54
54
  top: -9999,
55
- left: -9999 } };var
55
+ left: -9999 } };
56
56
 
57
57
 
58
58
 
@@ -111,6 +111,12 @@ var DUMMY_LOCATION = {
111
111
 
112
112
 
113
113
 
114
+
115
+
116
+ var PopupDataTids = {
117
+ content: 'PopupContent',
118
+ contentInner: 'PopupContentInner',
119
+ popupPin: 'PopupPin__root' };exports.PopupDataTids = PopupDataTids;var
114
120
 
115
121
 
116
122
 
@@ -390,11 +396,11 @@ Popup = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)(_class
390
396
  var _this$props = _this.props,backgroundColor = _this$props.backgroundColor,width = _this$props.width;
391
397
 
392
398
  return /*#__PURE__*/(
393
- _react.default.createElement("div", { className: _Popup.styles.content(_this.theme), "data-tid": 'PopupContent', ref: _this.refForTransition }, /*#__PURE__*/
399
+ _react.default.createElement("div", { className: _Popup.styles.content(_this.theme), "data-tid": PopupDataTids.content, ref: _this.refForTransition }, /*#__PURE__*/
394
400
  _react.default.createElement("div", {
395
401
  className: _Popup.styles.contentInner(_this.theme),
396
402
  style: { backgroundColor: backgroundColor, width: _this.calculateWidth(width) },
397
- "data-tid": 'PopupContentInner' },
403
+ "data-tid": PopupDataTids.contentInner },
398
404
 
399
405
  children)));
400
406
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Popup.tsx"],"names":["POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","DefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","Popup","responsiveLayout","rootNode","state","location","props","opened","locationUpdateId","refForTransition","React","createRef","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","offsetWidth","parseFloat","content","children","backgroundColor","styles","theme","contentInner","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","lastPopupElement","handleLayoutEvent","updateLocation","popupElement","getLocation","locationEquals","componentDidMount","layoutEventsToken","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","renderMobile","renderChildren","mobileOnCloseRequest","useWrapper","anchor","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","disableAnimations","maxWidth","hasShadow","ignoreHover","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","setRootNode","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","raf","cancel","x","y","Math","abs","positions","tryPreserveFirstRenderedPosition","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","defaultProps","isTestEnv","defaultRootNode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport raf from 'raf';\nimport warning from 'warning';\n\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isHTMLElement, safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\n\nconst DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps extends CommonProps, PopupHandlerProps {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin: boolean;\n hasShadow: boolean;\n disableAnimations: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset: number;\n positions: Readonly<PopupPositionsType[]>;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n ignoreHover: boolean;\n width: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(() => HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupElement: Nullable<HTMLElement>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n\n public anchorElement: Nullable<HTMLElement> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n this.removeEventListeners(this.anchorElement);\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement, useWrapper } = this.props;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isHTMLElement(anchorElement)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isHTMLElement(anchorElement);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<HTMLElement>) {\n if (element && isHTMLElement(element)) {\n element.addEventListener('mouseenter', this.handleMouseEnter);\n element.addEventListener('mouseleave', this.handleMouseLeave);\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n }\n }\n\n private removeEventListeners(element: Nullable<HTMLElement>) {\n if (element && isHTMLElement(element)) {\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n return this.anchorElement ? (this.anchorElement.offsetWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor, width } = this.props;\n\n return (\n <div className={styles.content(this.theme)} data-tid={'PopupContent'} ref={this.refForTransition}>\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={'PopupContentInner'}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { disableAnimations, maxWidth, hasShadow, ignoreHover, opened } = this.props;\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n data-tid={'Popup__root'}\n wrapperRef={this.refPopupElement}\n priority={'Popup'}\n className={cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {!this.isMobileLayout && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupElement = (element: Nullable<HTMLElement>) => {\n this.lastPopupElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, hasShadow, backgroundColor, borderColor } = this.props;\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n this.props.hasPin && (\n <PopupPin\n popupElement={this.lastPopupElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = raf(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n raf.cancel(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupElement = this.lastPopupElement;\n\n if (!popupElement) {\n return;\n }\n\n const location = this.getLocation(popupElement, this.state.location);\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private getLocation(popupElement: HTMLElement, location?: Nullable<PopupLocation>) {\n const { positions, tryPreserveFirstRenderedPosition } = this.props;\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isHTMLElement(anchorElement),\n 'Anchor element is not defined or not instance of HTMLElement',\n );\n\n if (!(anchorElement && isHTMLElement(anchorElement))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.props.hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.props.popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["Popup.tsx"],"names":["POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","DefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","PopupDataTids","content","contentInner","popupPin","Popup","responsiveLayout","rootNode","state","location","props","opened","locationUpdateId","refForTransition","React","createRef","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","offsetWidth","parseFloat","children","backgroundColor","styles","theme","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","lastPopupElement","handleLayoutEvent","updateLocation","popupElement","getLocation","locationEquals","componentDidMount","layoutEventsToken","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","renderMobile","renderChildren","mobileOnCloseRequest","useWrapper","anchor","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","disableAnimations","maxWidth","hasShadow","ignoreHover","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","setRootNode","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","raf","cancel","x","y","Math","abs","positions","tryPreserveFirstRenderedPosition","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","defaultProps","isTestEnv","defaultRootNode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport raf from 'raf';\nimport warning from 'warning';\n\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isHTMLElement, safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\n\nconst DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps extends CommonProps, PopupHandlerProps {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin: boolean;\n hasShadow: boolean;\n disableAnimations: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset: number;\n positions: Readonly<PopupPositionsType[]>;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper: boolean;\n ignoreHover: boolean;\n width: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\nexport const PopupDataTids = {\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n} as const;\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(() => HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupElement: Nullable<HTMLElement>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n\n public anchorElement: Nullable<HTMLElement> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n this.removeEventListeners(this.anchorElement);\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement, useWrapper } = this.props;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isHTMLElement(anchorElement)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isHTMLElement(anchorElement);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<HTMLElement>) {\n if (element && isHTMLElement(element)) {\n element.addEventListener('mouseenter', this.handleMouseEnter);\n element.addEventListener('mouseleave', this.handleMouseLeave);\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n }\n }\n\n private removeEventListeners(element: Nullable<HTMLElement>) {\n if (element && isHTMLElement(element)) {\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n return this.anchorElement ? (this.anchorElement.offsetWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor, width } = this.props;\n\n return (\n <div className={styles.content(this.theme)} data-tid={PopupDataTids.content} ref={this.refForTransition}>\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { disableAnimations, maxWidth, hasShadow, ignoreHover, opened } = this.props;\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n data-tid={'Popup__root'}\n wrapperRef={this.refPopupElement}\n priority={'Popup'}\n className={cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {!this.isMobileLayout && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupElement = (element: Nullable<HTMLElement>) => {\n this.lastPopupElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, hasShadow, backgroundColor, borderColor } = this.props;\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n this.props.hasPin && (\n <PopupPin\n popupElement={this.lastPopupElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = raf(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n raf.cancel(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupElement = this.lastPopupElement;\n\n if (!popupElement) {\n return;\n }\n\n const location = this.getLocation(popupElement, this.state.location);\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private getLocation(popupElement: HTMLElement, location?: Nullable<PopupLocation>) {\n const { positions, tryPreserveFirstRenderedPosition } = this.props;\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isHTMLElement(anchorElement),\n 'Anchor element is not defined or not instance of HTMLElement',\n );\n\n if (!(anchorElement && isHTMLElement(anchorElement))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.props.hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.props.popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
@@ -5,6 +5,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
5
5
 
6
6
  var _PopupHelper = require("./PopupHelper");
7
7
  var _PopupPin = require("./PopupPin.styles");
8
+ var _Popup = require("./Popup");
8
9
 
9
10
  var borderStyles = {
10
11
  position: 'absolute',
@@ -95,7 +96,7 @@ PopupPin = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
95
96
  var styleWrapper = this.getWrapperStyle(options.outerLeft, options.outerTop, options.outerSize);
96
97
 
97
98
  return /*#__PURE__*/(
98
- _react.default.createElement("div", { className: _PopupPin.styles.wrapper(), style: styleWrapper }, /*#__PURE__*/
99
+ _react.default.createElement("div", { "data-tid": _Popup.PopupDataTids.popupPin, className: _PopupPin.styles.wrapper(), style: styleWrapper }, /*#__PURE__*/
99
100
  _react.default.createElement("div", { style: styleOuter }, /*#__PURE__*/
100
101
  _react.default.createElement("div", { style: styleInner }))));
101
102
 
@@ -1 +1 @@
1
- {"version":3,"sources":["PopupPin.tsx"],"names":["borderStyles","position","borderStyle","borderTopColor","borderBottomColor","borderLeftColor","borderRightColor","PopupPin","render","props","popupElement","options","getPinOptions","PopupHelper","getElementAbsoluteRect","getPositionObject","popupPosition","size","offset","borderWidth","styleOuter","getOuterStyle","activeBorder","outerSize","borderColor","styleInner","getInnerStyle","backgroundColor","styleWrapper","getWrapperStyle","outerLeft","outerTop","styles","wrapper","getPopupOppositeDirection","popupDirection","direction","TypeError","left","top","width","height","borderWitdth","popupRect","pinSize","pinOffset","bordersDelta","getPinLeftCoordinate","align","innerTop","innerLeft","getPinTopCoordinate","Error","pinHeight","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","string","number","any"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './PopupPin.styles';\n\nconst borderStyles = {\n position: 'absolute',\n borderStyle: 'solid',\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n};\n\ninterface Props {\n backgroundColor: string;\n borderColor: string;\n borderWidth: number;\n offset: number;\n popupElement: Nullable<HTMLElement>;\n popupPosition: string;\n size: number;\n}\n\nexport class PopupPin extends React.Component<Props> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n\n public static propTypes = {\n /**\n * Цвет фон пина\n */\n backgroundColor: PropTypes.string,\n\n /**\n * Цвет границы пина\n */\n borderColor: PropTypes.string,\n\n /**\n * Ширина границы пина\n */\n borderWidth: PropTypes.number,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n offset: PropTypes.number,\n\n /**\n * Ссылка на попап\n */\n popupElement: PropTypes.any,\n\n /**\n * Позиция поапа, по которой будет вычеслено положение пина\n */\n popupPosition: PropTypes.string,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: PropTypes.number,\n };\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n const options = this.getPinOptions(\n PopupHelper.getElementAbsoluteRect(this.props.popupElement),\n PopupHelper.getPositionObject(this.props.popupPosition),\n this.props.size,\n this.props.offset,\n this.props.borderWidth,\n );\n\n const styleOuter: React.CSSProperties = this.getOuterStyle(\n options.activeBorder,\n options.outerSize,\n this.props.borderColor,\n );\n\n const styleInner: React.CSSProperties = this.getInnerStyle(\n options.activeBorder,\n this.props.size,\n this.props.backgroundColor,\n );\n\n const styleWrapper = this.getWrapperStyle(options.outerLeft, options.outerTop, options.outerSize);\n\n return (\n <div className={styles.wrapper()} style={styleWrapper}>\n <div style={styleOuter}>\n <div style={styleInner} />\n </div>\n </div>\n );\n }\n\n private getPopupOppositeDirection(): 'bottom' | 'top' | 'left' | 'right' {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n throw new TypeError('Unknown direction ' + popupDirection);\n }\n }\n\n private getWrapperStyle(left: number, top: number, borderWidth: number) {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -borderWidth + 'px',\n left: left + 'px',\n width: borderWidth * 2 + 'px',\n height: borderWidth + 'px',\n };\n case 'left':\n case 'right':\n return {\n [direction]: -borderWidth + 'px',\n top: top + 'px',\n height: borderWidth * 2 + 'px',\n width: borderWidth + 'px',\n };\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getOuterStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n left: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n top: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getInnerStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n left: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n top: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getPinOptions(\n popupRect: Rect,\n popupPosition: PositionObject,\n pinSize: number,\n pinOffset: number,\n borderWidth: number,\n ) {\n const bordersDelta = 2 * borderWidth;\n const outerSize = pinSize + bordersDelta;\n\n switch (popupPosition.direction) {\n case 'top':\n return {\n outerTop: popupRect.height,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Top',\n outerSize,\n };\n case 'bottom':\n return {\n outerTop: -2 * outerSize,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize + 2 * bordersDelta,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Bottom',\n outerSize,\n };\n case 'left':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: popupRect.width,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize,\n activeBorder: 'Left',\n outerSize,\n };\n case 'right':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: -2 * outerSize,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize + 2 * bordersDelta,\n activeBorder: 'Right',\n outerSize,\n };\n default:\n throw new Error('Direction must be one of top, right, bottom, left');\n }\n }\n\n private getPinTopCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'top':\n return pinOffset;\n case 'middle':\n return popupRect.height / 2 - pinHeight;\n case 'bottom':\n return popupRect.height - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getPinLeftCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'left':\n return pinOffset;\n case 'center':\n return popupRect.width / 2 - pinHeight;\n case 'right':\n return popupRect.width - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["PopupPin.tsx"],"names":["borderStyles","position","borderStyle","borderTopColor","borderBottomColor","borderLeftColor","borderRightColor","PopupPin","render","props","popupElement","options","getPinOptions","PopupHelper","getElementAbsoluteRect","getPositionObject","popupPosition","size","offset","borderWidth","styleOuter","getOuterStyle","activeBorder","outerSize","borderColor","styleInner","getInnerStyle","backgroundColor","styleWrapper","getWrapperStyle","outerLeft","outerTop","PopupDataTids","popupPin","styles","wrapper","getPopupOppositeDirection","popupDirection","direction","TypeError","left","top","width","height","borderWitdth","popupRect","pinSize","pinOffset","bordersDelta","getPinLeftCoordinate","align","innerTop","innerLeft","getPinTopCoordinate","Error","pinHeight","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","string","number","any"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './PopupPin.styles';\nimport { PopupDataTids } from './Popup';\n\nconst borderStyles = {\n position: 'absolute',\n borderStyle: 'solid',\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n};\n\ninterface Props {\n backgroundColor: string;\n borderColor: string;\n borderWidth: number;\n offset: number;\n popupElement: Nullable<HTMLElement>;\n popupPosition: string;\n size: number;\n}\n\nexport class PopupPin extends React.Component<Props> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n\n public static propTypes = {\n /**\n * Цвет фон пина\n */\n backgroundColor: PropTypes.string,\n\n /**\n * Цвет границы пина\n */\n borderColor: PropTypes.string,\n\n /**\n * Ширина границы пина\n */\n borderWidth: PropTypes.number,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n offset: PropTypes.number,\n\n /**\n * Ссылка на попап\n */\n popupElement: PropTypes.any,\n\n /**\n * Позиция поапа, по которой будет вычеслено положение пина\n */\n popupPosition: PropTypes.string,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: PropTypes.number,\n };\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n const options = this.getPinOptions(\n PopupHelper.getElementAbsoluteRect(this.props.popupElement),\n PopupHelper.getPositionObject(this.props.popupPosition),\n this.props.size,\n this.props.offset,\n this.props.borderWidth,\n );\n\n const styleOuter: React.CSSProperties = this.getOuterStyle(\n options.activeBorder,\n options.outerSize,\n this.props.borderColor,\n );\n\n const styleInner: React.CSSProperties = this.getInnerStyle(\n options.activeBorder,\n this.props.size,\n this.props.backgroundColor,\n );\n\n const styleWrapper = this.getWrapperStyle(options.outerLeft, options.outerTop, options.outerSize);\n\n return (\n <div data-tid={PopupDataTids.popupPin} className={styles.wrapper()} style={styleWrapper}>\n <div style={styleOuter}>\n <div style={styleInner} />\n </div>\n </div>\n );\n }\n\n private getPopupOppositeDirection(): 'bottom' | 'top' | 'left' | 'right' {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n throw new TypeError('Unknown direction ' + popupDirection);\n }\n }\n\n private getWrapperStyle(left: number, top: number, borderWidth: number) {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -borderWidth + 'px',\n left: left + 'px',\n width: borderWidth * 2 + 'px',\n height: borderWidth + 'px',\n };\n case 'left':\n case 'right':\n return {\n [direction]: -borderWidth + 'px',\n top: top + 'px',\n height: borderWidth * 2 + 'px',\n width: borderWidth + 'px',\n };\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getOuterStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n left: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n top: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getInnerStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n left: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n top: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getPinOptions(\n popupRect: Rect,\n popupPosition: PositionObject,\n pinSize: number,\n pinOffset: number,\n borderWidth: number,\n ) {\n const bordersDelta = 2 * borderWidth;\n const outerSize = pinSize + bordersDelta;\n\n switch (popupPosition.direction) {\n case 'top':\n return {\n outerTop: popupRect.height,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Top',\n outerSize,\n };\n case 'bottom':\n return {\n outerTop: -2 * outerSize,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize + 2 * bordersDelta,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Bottom',\n outerSize,\n };\n case 'left':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: popupRect.width,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize,\n activeBorder: 'Left',\n outerSize,\n };\n case 'right':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: -2 * outerSize,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize + 2 * bordersDelta,\n activeBorder: 'Right',\n outerSize,\n };\n default:\n throw new Error('Direction must be one of top, right, bottom, left');\n }\n }\n\n private getPinTopCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'top':\n return pinOffset;\n case 'middle':\n return popupRect.height / 2 - pinHeight;\n case 'bottom':\n return popupRect.height - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getPinLeftCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'left':\n return pinOffset;\n case 'center':\n return popupRect.width / 2 - pinHeight;\n case 'right':\n return popupRect.width - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
@@ -47,6 +47,10 @@ export declare const PopupMenuType: {
47
47
  Dropdown: string;
48
48
  Tooltip: string;
49
49
  };
50
+ export declare const PopupMenuDataTids: {
51
+ readonly root: "PopupMenu__root";
52
+ readonly caption: "PopupMenu__caption";
53
+ };
50
54
  export declare class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {
51
55
  static __KONTUR_REACT_UI__: string;
52
56
  private isMobileLayout;