@skbkontur/react-ui 3.12.2 → 3.12.3-popup-fix

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 (811) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +113 -113
  3. package/cjs/components/Autocomplete/index.d.ts +1 -1
  4. package/cjs/components/Button/Button.d.ts +161 -161
  5. package/cjs/components/Button/Button.mixins.d.ts +6 -6
  6. package/cjs/components/Button/Button.styles.d.ts +68 -68
  7. package/cjs/components/Button/Corners.d.ts +6 -6
  8. package/cjs/components/Button/index.d.ts +1 -1
  9. package/cjs/components/Center/Center.d.ts +25 -25
  10. package/cjs/components/Center/Center.styles.d.ts +7 -7
  11. package/cjs/components/Center/index.d.ts +1 -1
  12. package/cjs/components/Checkbox/Checkbox.d.ts +96 -96
  13. package/cjs/components/Checkbox/Checkbox.styles.d.ts +22 -22
  14. package/cjs/components/Checkbox/index.d.ts +1 -1
  15. package/cjs/components/ComboBox/ComboBox.d.ts +184 -184
  16. package/cjs/components/ComboBox/index.d.ts +1 -1
  17. package/cjs/components/CurrencyInput/CurrencyHelper.d.ts +35 -35
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +106 -106
  19. package/cjs/components/CurrencyInput/CurrencyInputHelper.d.ts +20 -20
  20. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +18 -18
  21. package/cjs/components/CurrencyInput/CursorHelper.d.ts +10 -10
  22. package/cjs/components/CurrencyInput/SelectionHelper.d.ts +11 -11
  23. package/cjs/components/CurrencyInput/constants.d.ts +2 -2
  24. package/cjs/components/CurrencyInput/index.d.ts +1 -1
  25. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +24 -24
  26. package/cjs/components/CurrencyLabel/index.d.ts +1 -1
  27. package/cjs/components/DateInput/DateFragmentsView.d.ts +20 -20
  28. package/cjs/components/DateInput/DateFragmentsView.styles.d.ts +7 -7
  29. package/cjs/components/DateInput/DateInput.d.ts +107 -107
  30. package/cjs/components/DateInput/DateInput.styles.d.ts +10 -10
  31. package/cjs/components/DateInput/ViewDateInputValidateChecks.d.ts +10 -10
  32. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.d.ts +21 -21
  33. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +26 -26
  34. package/cjs/components/DateInput/helpers/SelectionHelpers.d.ts +2 -2
  35. package/cjs/components/DateInput/helpers/inputNumber.d.ts +5 -5
  36. package/cjs/components/DateInput/index.d.ts +1 -1
  37. package/cjs/components/DatePicker/DatePicker.d.ts +131 -131
  38. package/cjs/components/DatePicker/DatePicker.styles.d.ts +3 -3
  39. package/cjs/components/DatePicker/DatePickerHelpers.d.ts +2 -2
  40. package/cjs/components/DatePicker/Picker.d.ts +33 -33
  41. package/cjs/components/DatePicker/Picker.styles.d.ts +5 -5
  42. package/cjs/components/DatePicker/index.d.ts +1 -1
  43. package/cjs/components/DatePicker/locale/index.d.ts +4 -4
  44. package/cjs/components/DatePicker/locale/locales/en.d.ts +2 -2
  45. package/cjs/components/DatePicker/locale/locales/ru.d.ts +2 -2
  46. package/cjs/components/DatePicker/locale/types.d.ts +5 -5
  47. package/cjs/components/Dropdown/Dropdown.d.ts +124 -124
  48. package/cjs/components/Dropdown/index.d.ts +1 -1
  49. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +65 -65
  50. package/cjs/components/DropdownMenu/index.d.ts +1 -1
  51. package/cjs/components/FxInput/FxInput.d.ts +50 -50
  52. package/cjs/components/FxInput/index.d.ts +1 -1
  53. package/cjs/components/Gapped/Gapped.d.ts +58 -58
  54. package/cjs/components/Gapped/index.d.ts +1 -1
  55. package/cjs/components/Group/Group.d.ts +14 -14
  56. package/cjs/components/Group/Group.styles.d.ts +8 -8
  57. package/cjs/components/Group/index.d.ts +1 -1
  58. package/cjs/components/Hint/Hint.d.ts +85 -81
  59. package/cjs/components/Hint/Hint.js +9 -1
  60. package/cjs/components/Hint/Hint.js.map +1 -1
  61. package/cjs/components/Hint/Hint.styles.d.ts +5 -5
  62. package/cjs/components/Hint/index.d.ts +1 -1
  63. package/cjs/components/Input/Input.d.ts +157 -157
  64. package/cjs/components/Input/Input.styles.d.ts +42 -42
  65. package/cjs/components/Input/index.d.ts +1 -1
  66. package/cjs/components/Kebab/Kebab.d.ts +71 -71
  67. package/cjs/components/Kebab/Kebab.styles.d.ts +12 -12
  68. package/cjs/components/Kebab/index.d.ts +1 -1
  69. package/cjs/components/Link/Link.d.ts +72 -72
  70. package/cjs/components/Link/Link.mixins.d.ts +3 -3
  71. package/cjs/components/Link/Link.styles.d.ts +15 -15
  72. package/cjs/components/Link/index.d.ts +1 -1
  73. package/cjs/components/Loader/Loader.d.ts +100 -100
  74. package/cjs/components/Loader/Loader.styles.d.ts +8 -8
  75. package/cjs/components/Loader/index.d.ts +1 -1
  76. package/cjs/components/MenuHeader/MenuHeader.d.ts +20 -20
  77. package/cjs/components/MenuHeader/MenuHeader.styles.d.ts +5 -5
  78. package/cjs/components/MenuHeader/index.d.ts +1 -1
  79. package/cjs/components/MenuItem/MenuItem.d.ts +94 -94
  80. package/cjs/components/MenuItem/MenuItem.styles.d.ts +13 -13
  81. package/cjs/components/MenuItem/index.d.ts +1 -1
  82. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +12 -12
  83. package/cjs/components/MenuSeparator/MenuSeparator.styles.d.ts +4 -4
  84. package/cjs/components/MenuSeparator/index.d.ts +1 -1
  85. package/cjs/components/Modal/Modal.d.ts +87 -87
  86. package/cjs/components/Modal/Modal.styles.d.ts +26 -26
  87. package/cjs/components/Modal/ModalBody.d.ts +21 -21
  88. package/cjs/components/Modal/ModalClose.d.ts +2 -2
  89. package/cjs/components/Modal/ModalContext.d.ts +15 -15
  90. package/cjs/components/Modal/ModalFooter.d.ts +21 -21
  91. package/cjs/components/Modal/ModalHeader.d.ts +17 -17
  92. package/cjs/components/Modal/index.d.ts +4 -4
  93. package/cjs/components/Paging/NavigationHelper.d.ts +7 -7
  94. package/cjs/components/Paging/Paging.d.ts +90 -90
  95. package/cjs/components/Paging/Paging.styles.d.ts +16 -16
  96. package/cjs/components/Paging/PagingHelper.d.ts +2 -2
  97. package/cjs/components/Paging/index.d.ts +1 -1
  98. package/cjs/components/Paging/locale/index.d.ts +4 -4
  99. package/cjs/components/Paging/locale/locales/en.d.ts +2 -2
  100. package/cjs/components/Paging/locale/locales/ru.d.ts +2 -2
  101. package/cjs/components/Paging/locale/types.d.ts +3 -3
  102. package/cjs/components/PasswordInput/PasswordInput.d.ts +49 -49
  103. package/cjs/components/PasswordInput/PasswordInput.styles.d.ts +10 -10
  104. package/cjs/components/PasswordInput/index.d.ts +1 -1
  105. package/cjs/components/Radio/Radio.d.ts +77 -77
  106. package/cjs/components/Radio/Radio.styles.d.ts +19 -19
  107. package/cjs/components/Radio/index.d.ts +1 -1
  108. package/cjs/components/RadioGroup/Prevent.d.ts +8 -8
  109. package/cjs/components/RadioGroup/RadioGroup.d.ts +117 -117
  110. package/cjs/components/RadioGroup/RadioGroup.styles.d.ts +7 -7
  111. package/cjs/components/RadioGroup/RadioGroupContext.d.ts +10 -10
  112. package/cjs/components/RadioGroup/index.d.ts +1 -1
  113. package/cjs/components/ScrollContainer/ScrollBar.d.ts +37 -37
  114. package/cjs/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -23
  115. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +84 -84
  116. package/cjs/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -10
  117. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +17 -17
  118. package/cjs/components/ScrollContainer/index.d.ts +1 -1
  119. package/cjs/components/Select/Item.d.ts +7 -7
  120. package/cjs/components/Select/Select.d.ts +179 -179
  121. package/cjs/components/Select/Select.styles.d.ts +17 -17
  122. package/cjs/components/Select/index.d.ts +1 -1
  123. package/cjs/components/Select/locale/index.d.ts +4 -4
  124. package/cjs/components/Select/locale/locales/en.d.ts +2 -2
  125. package/cjs/components/Select/locale/locales/ru.d.ts +2 -2
  126. package/cjs/components/Select/locale/types.d.ts +4 -4
  127. package/cjs/components/Select/selectTheme.d.ts +3 -3
  128. package/cjs/components/SidePage/SidePage.d.ts +109 -109
  129. package/cjs/components/SidePage/SidePage.styles.d.ts +37 -37
  130. package/cjs/components/SidePage/SidePageBody.d.ts +19 -19
  131. package/cjs/components/SidePage/SidePageContainer.d.ts +15 -15
  132. package/cjs/components/SidePage/SidePageContext.d.ts +17 -17
  133. package/cjs/components/SidePage/SidePageFooter.d.ts +36 -36
  134. package/cjs/components/SidePage/SidePageHeader.d.ts +44 -44
  135. package/cjs/components/SidePage/index.d.ts +5 -5
  136. package/cjs/components/Spinner/Spinner.d.ts +56 -56
  137. package/cjs/components/Spinner/Spinner.styles.d.ts +12 -12
  138. package/cjs/components/Spinner/SpinnerFallbackAnimation.d.ts +25 -25
  139. package/cjs/components/Spinner/index.d.ts +1 -1
  140. package/cjs/components/Spinner/locale/index.d.ts +4 -4
  141. package/cjs/components/Spinner/locale/locales/en.d.ts +2 -2
  142. package/cjs/components/Spinner/locale/locales/ru.d.ts +2 -2
  143. package/cjs/components/Spinner/locale/types.d.ts +4 -4
  144. package/cjs/components/Sticky/Sticky.d.ts +59 -59
  145. package/cjs/components/Sticky/Sticky.styles.d.ts +7 -7
  146. package/cjs/components/Sticky/index.d.ts +1 -1
  147. package/cjs/components/Switcher/Switcher.d.ts +56 -56
  148. package/cjs/components/Switcher/Switcher.styles.d.ts +10 -10
  149. package/cjs/components/Switcher/index.d.ts +1 -1
  150. package/cjs/components/Switcher/switcherTheme.d.ts +2 -2
  151. package/cjs/components/Tabs/Indicator.d.ts +28 -28
  152. package/cjs/components/Tabs/Indicator.styles.d.ts +8 -8
  153. package/cjs/components/Tabs/Tab.d.ts +121 -121
  154. package/cjs/components/Tabs/Tab.styles.d.ts +27 -27
  155. package/cjs/components/Tabs/Tabs.d.ts +62 -62
  156. package/cjs/components/Tabs/Tabs.styles.d.ts +5 -5
  157. package/cjs/components/Tabs/TabsContext.d.ts +14 -14
  158. package/cjs/components/Tabs/index.d.ts +2 -2
  159. package/cjs/components/Textarea/Textarea.d.ts +185 -185
  160. package/cjs/components/Textarea/Textarea.styles.d.ts +15 -15
  161. package/cjs/components/Textarea/TextareaCounter.d.ts +13 -13
  162. package/cjs/components/Textarea/TextareaHelpers.d.ts +11 -11
  163. package/cjs/components/Textarea/index.d.ts +1 -1
  164. package/cjs/components/Toast/Toast.d.ts +58 -58
  165. package/cjs/components/Toast/Toast.styles.d.ts +6 -6
  166. package/cjs/components/Toast/ToastStatic.d.ts +8 -8
  167. package/cjs/components/Toast/ToastView.d.ts +38 -38
  168. package/cjs/components/Toast/ToastView.styles.d.ts +8 -8
  169. package/cjs/components/Toast/index.d.ts +1 -1
  170. package/cjs/components/Toggle/Toggle.d.ts +107 -107
  171. package/cjs/components/Toggle/Toggle.styles.d.ts +30 -30
  172. package/cjs/components/Toggle/index.d.ts +1 -1
  173. package/cjs/components/Token/Token.d.ts +36 -36
  174. package/cjs/components/Token/Token.styles.d.ts +29 -29
  175. package/cjs/components/Token/index.d.ts +1 -1
  176. package/cjs/components/TokenInput/TextWidthHelper.d.ts +18 -18
  177. package/cjs/components/TokenInput/TokenInput.d.ts +194 -194
  178. package/cjs/components/TokenInput/TokenInput.styles.d.ts +15 -15
  179. package/cjs/components/TokenInput/TokenInputMenu.d.ts +18 -18
  180. package/cjs/components/TokenInput/TokenInputReducer.d.ts +25 -25
  181. package/cjs/components/TokenInput/index.d.ts +1 -1
  182. package/cjs/components/TokenInput/locale/index.d.ts +4 -4
  183. package/cjs/components/TokenInput/locale/locales/en.d.ts +2 -2
  184. package/cjs/components/TokenInput/locale/locales/ru.d.ts +2 -2
  185. package/cjs/components/TokenInput/locale/types.d.ts +4 -4
  186. package/cjs/components/Tooltip/Tooltip.d.ts +162 -160
  187. package/cjs/components/Tooltip/Tooltip.js +10 -7
  188. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  189. package/cjs/components/Tooltip/Tooltip.styles.d.ts +5 -5
  190. package/cjs/components/Tooltip/index.d.ts +1 -1
  191. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +65 -65
  192. package/cjs/components/TooltipMenu/index.d.ts +1 -1
  193. package/cjs/index.d.ts +49 -49
  194. package/cjs/internal/BGRuler.d.ts +30 -30
  195. package/cjs/internal/Calendar/Calendar.d.ts +66 -66
  196. package/cjs/internal/Calendar/Calendar.styles.d.ts +5 -5
  197. package/cjs/internal/Calendar/CalendarDateShape.d.ts +14 -14
  198. package/cjs/internal/Calendar/CalendarScrollEvents.d.ts +4 -4
  199. package/cjs/internal/Calendar/CalendarUtils.d.ts +19 -19
  200. package/cjs/internal/Calendar/DayCellView.d.ts +13 -13
  201. package/cjs/internal/Calendar/DayCellView.styles.d.ts +7 -7
  202. package/cjs/internal/Calendar/DayCellViewModel.d.ts +8 -8
  203. package/cjs/internal/Calendar/Month.d.ts +33 -33
  204. package/cjs/internal/Calendar/MonthView.d.ts +21 -21
  205. package/cjs/internal/Calendar/MonthView.styles.d.ts +9 -9
  206. package/cjs/internal/Calendar/MonthViewModel.d.ts +14 -14
  207. package/cjs/internal/Calendar/config.d.ts +9 -9
  208. package/cjs/internal/Calendar/index.d.ts +2 -2
  209. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +32 -31
  210. package/cjs/internal/CommonWrapper/CommonWrapper.js +17 -3
  211. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  212. package/cjs/internal/CommonWrapper/index.d.ts +1 -1
  213. package/cjs/internal/ComponentCombinator.d.ts +25 -25
  214. package/cjs/internal/ComponentTable.d.ts +21 -21
  215. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +31 -31
  216. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +90 -90
  217. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +136 -136
  218. package/cjs/internal/CustomComboBox/CustomComboBox.styles.d.ts +5 -5
  219. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +71 -71
  220. package/cjs/internal/CustomComboBox/CustomComboBoxTypes.d.ts +6 -6
  221. package/cjs/internal/CustomComboBox/index.d.ts +2 -2
  222. package/cjs/internal/CustomComboBox/locale/index.d.ts +4 -4
  223. package/cjs/internal/CustomComboBox/locale/locales/en.d.ts +2 -2
  224. package/cjs/internal/CustomComboBox/locale/locales/ru.d.ts +2 -2
  225. package/cjs/internal/CustomComboBox/locale/types.d.ts +5 -5
  226. package/cjs/internal/DateSelect/DateSelect.d.ts +93 -93
  227. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +19 -19
  228. package/cjs/internal/DateSelect/index.d.ts +1 -1
  229. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +44 -44
  230. package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -3
  231. package/cjs/internal/DropdownContainer/index.d.ts +1 -1
  232. package/cjs/internal/FocusTrap/FocusTrap.d.ts +17 -17
  233. package/cjs/internal/FocusTrap/index.d.ts +1 -1
  234. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +14 -14
  235. package/cjs/internal/HideBodyVerticalScroll/index.d.ts +1 -1
  236. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +8 -8
  237. package/cjs/internal/IgnoreLayerClick/index.d.ts +1 -1
  238. package/cjs/internal/InputLikeText/HiddenInput.d.ts +13 -13
  239. package/cjs/internal/InputLikeText/InputLikeText.d.ts +73 -73
  240. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +7 -7
  241. package/cjs/internal/InputLikeText/index.d.ts +1 -1
  242. package/cjs/internal/InternalMenu/InternalMenu.d.ts +63 -63
  243. package/cjs/internal/InternalMenu/InternalMenu.styles.d.ts +9 -9
  244. package/cjs/internal/InternalMenu/index.d.ts +1 -1
  245. package/cjs/internal/InternalMenu/isActiveElement.d.ts +3 -3
  246. package/cjs/internal/MaskCharLowLine/MaskCharLowLine.d.ts +9 -9
  247. package/cjs/internal/MaskCharLowLine/MaskCharLowLine.styles.d.ts +3 -3
  248. package/cjs/internal/MaskCharLowLine/index.d.ts +1 -1
  249. package/cjs/internal/MaskedInput/MaskedInput.d.ts +40 -40
  250. package/cjs/internal/MaskedInput/MaskedInput.styles.d.ts +6 -6
  251. package/cjs/internal/MaskedInput/index.d.ts +1 -1
  252. package/cjs/internal/Menu/Menu.d.ts +65 -65
  253. package/cjs/internal/Menu/Menu.styles.d.ts +9 -9
  254. package/cjs/internal/Menu/index.d.ts +1 -1
  255. package/cjs/internal/Menu/isActiveElement.d.ts +3 -3
  256. package/cjs/internal/NativeDateInput/NativeDateInput.d.ts +23 -23
  257. package/cjs/internal/NativeDateInput/NativeDateInput.styles.d.ts +3 -3
  258. package/cjs/internal/NativeDateInput/index.d.ts +1 -1
  259. package/cjs/internal/NativeDateInput/utils.d.ts +7 -7
  260. package/cjs/internal/PerformanceMetrics/PerformanceMetrics.d.ts +7 -7
  261. package/cjs/internal/Popup/Popup.d.ts +161 -162
  262. package/cjs/internal/Popup/Popup.js +14 -13
  263. package/cjs/internal/Popup/Popup.js.map +1 -1
  264. package/cjs/internal/Popup/Popup.styles.d.ts +16 -16
  265. package/cjs/internal/Popup/PopupHelper.d.ts +26 -26
  266. package/cjs/internal/Popup/PopupPin.d.ts +56 -56
  267. package/cjs/internal/Popup/PopupPin.styles.d.ts +3 -3
  268. package/cjs/internal/Popup/index.d.ts +1 -1
  269. package/cjs/internal/Popup/types.d.ts +1 -1
  270. package/cjs/internal/PopupMenu/PopupMenu.d.ts +85 -85
  271. package/cjs/internal/PopupMenu/PopupMenu.styles.d.ts +4 -4
  272. package/cjs/internal/PopupMenu/index.d.ts +1 -1
  273. package/cjs/internal/PopupMenu/validatePositions.d.ts +2 -2
  274. package/cjs/internal/RenderContainer/RenderContainer.d.ts +16 -16
  275. package/cjs/internal/RenderContainer/RenderContainer.js +9 -0
  276. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  277. package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +12 -11
  278. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +13 -13
  279. package/cjs/internal/RenderContainer/index.d.ts +1 -1
  280. package/cjs/internal/RenderLayer/RenderLayer.d.ts +29 -29
  281. package/cjs/internal/RenderLayer/index.d.ts +1 -1
  282. package/cjs/internal/ResizeDetector/ResizeDetector.d.ts +12 -12
  283. package/cjs/internal/ResizeDetector/ResizeDetector.styles.d.ts +5 -5
  284. package/cjs/internal/ResizeDetector/index.d.ts +1 -1
  285. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.d.ts +13 -13
  286. package/cjs/internal/ThemePlayground/CheckboxPlayground.d.ts +1 -1
  287. package/cjs/internal/ThemePlayground/ComponentsGroup.d.ts +10 -10
  288. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.d.ts +11 -11
  289. package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +10 -10
  290. package/cjs/internal/ThemePlayground/HintPlayground.d.ts +6 -6
  291. package/cjs/internal/ThemePlayground/PagingPlayground.d.ts +10 -10
  292. package/cjs/internal/ThemePlayground/Playground.d.ts +31 -31
  293. package/cjs/internal/ThemePlayground/Playground.styles.d.ts +23 -23
  294. package/cjs/internal/ThemePlayground/RadioPlayground.d.ts +1 -1
  295. package/cjs/internal/ThemePlayground/SelectPlayground.d.ts +12 -12
  296. package/cjs/internal/ThemePlayground/ShowcaseGroup.d.ts +5 -5
  297. package/cjs/internal/ThemePlayground/SwitcherPlayground.d.ts +15 -15
  298. package/cjs/internal/ThemePlayground/ThemeContextPlayground.d.ts +51 -51
  299. package/cjs/internal/ThemePlayground/ThemeEditor.d.ts +39 -39
  300. package/cjs/internal/ThemePlayground/TogglePlayground.d.ts +9 -9
  301. package/cjs/internal/ThemePlayground/TokenInputPlayground.d.ts +7 -7
  302. package/cjs/internal/ThemePlayground/VariableValue.d.ts +45 -45
  303. package/cjs/internal/ThemePlayground/constants.d.ts +18 -18
  304. package/cjs/internal/ThemePlayground/darkTheme.d.ts +255 -255
  305. package/cjs/internal/ThemePlayground/helpers.d.ts +2 -2
  306. package/cjs/internal/ThemeShowcase/ThemeShowcase.d.ts +22 -22
  307. package/cjs/internal/ThemeShowcase/ThemeShowcase.styles.d.ts +24 -24
  308. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +22 -22
  309. package/cjs/internal/ZIndex/ZIndex.d.ts +36 -36
  310. package/cjs/internal/ZIndex/ZIndexStorage.d.ts +18 -18
  311. package/cjs/internal/ZIndex/index.d.ts +1 -1
  312. package/cjs/internal/icons/16px/icon.styles.d.ts +4 -4
  313. package/cjs/internal/icons/16px/index.d.ts +22 -22
  314. package/cjs/internal/icons/20px/Icon.d.ts +30 -30
  315. package/cjs/internal/icons/20px/icon.styles.d.ts +4 -4
  316. package/cjs/internal/icons/20px/index.d.ts +2 -2
  317. package/cjs/internal/icons/20px/svg.d.ts +14 -14
  318. package/cjs/internal/icons/CloudIcon.d.ts +1 -1
  319. package/cjs/internal/icons/CrossIcon.d.ts +1 -1
  320. package/cjs/internal/icons/SpinnerIcon.d.ts +26 -26
  321. package/cjs/internal/icons/SpinnerIcon.styles.d.ts +4 -4
  322. package/cjs/internal/themes/DefaultTheme.d.ts +766 -766
  323. package/cjs/internal/themes/FlatTheme.d.ts +132 -132
  324. package/cjs/internal/themes/Theme8px.d.ts +271 -271
  325. package/cjs/lib/ConditionalHandler.d.ts +11 -11
  326. package/cjs/lib/InstanceWithAnchorElement.d.ts +5 -0
  327. package/cjs/lib/InstanceWithAnchorElement.js +9 -0
  328. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -0
  329. package/cjs/lib/LayoutEvents.d.ts +4 -4
  330. package/cjs/lib/ModalStack.d.ts +14 -14
  331. package/cjs/lib/SSRSafe.d.ts +4 -4
  332. package/cjs/lib/Supports.d.ts +1 -1
  333. package/cjs/lib/Upgrades.d.ts +6 -6
  334. package/cjs/lib/animation/index.d.ts +6 -6
  335. package/cjs/lib/animation/presets.d.ts +18 -18
  336. package/cjs/lib/animation/stepper.d.ts +1 -1
  337. package/cjs/lib/callChildRef/callChildRef.d.ts +3 -3
  338. package/cjs/lib/client.d.ts +16 -16
  339. package/cjs/lib/createPropsGetter.d.ts +2 -2
  340. package/cjs/lib/currentEnvironment.d.ts +3 -3
  341. package/cjs/lib/date/InternalDate.d.ts +58 -58
  342. package/cjs/lib/date/InternalDateCalculator.d.ts +6 -6
  343. package/cjs/lib/date/InternalDateGetter.d.ts +15 -15
  344. package/cjs/lib/date/InternalDateSetter.d.ts +6 -6
  345. package/cjs/lib/date/InternalDateTransformer.d.ts +12 -12
  346. package/cjs/lib/date/InternalDateValidator.d.ts +12 -12
  347. package/cjs/lib/date/constants.d.ts +28 -28
  348. package/cjs/lib/date/localeSets.d.ts +5 -5
  349. package/cjs/lib/date/types.d.ts +90 -90
  350. package/cjs/lib/dom/getScrollWidth.d.ts +1 -1
  351. package/cjs/lib/dom/tabbableHelpers.d.ts +16 -16
  352. package/cjs/lib/events/MouseDrag.d.ts +58 -58
  353. package/cjs/lib/events/fixClickFocusIE.d.ts +1 -1
  354. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -2
  355. package/cjs/lib/events/keyListener.d.ts +7 -7
  356. package/cjs/lib/events/keyboard/KeyboardEventCodes.d.ts +30 -30
  357. package/cjs/lib/events/keyboard/KeyboardMapKeys.d.ts +6 -6
  358. package/cjs/lib/events/keyboard/extractCode.d.ts +3 -3
  359. package/cjs/lib/events/keyboard/identifiers.d.ts +48 -48
  360. package/cjs/lib/events/stopPropagation.d.ts +1 -1
  361. package/cjs/lib/events/tabListener.d.ts +1 -1
  362. package/cjs/lib/extractKeyboardAction.d.ts +13 -13
  363. package/cjs/lib/filterProps.d.ts +12 -12
  364. package/cjs/lib/forwardRefAndName.d.ts +5 -5
  365. package/cjs/lib/getDisplayName.d.ts +3 -3
  366. package/cjs/lib/listenFocusOutside.d.ts +8 -8
  367. package/cjs/lib/locale/LocaleContext.d.ts +7 -7
  368. package/cjs/lib/locale/LocaleHelper.d.ts +9 -9
  369. package/cjs/lib/locale/constants.d.ts +2 -2
  370. package/cjs/lib/locale/decorators.d.ts +36 -36
  371. package/cjs/lib/locale/index.d.ts +3 -3
  372. package/cjs/lib/locale/types.d.ts +19 -19
  373. package/cjs/lib/memo.d.ts +1 -1
  374. package/cjs/lib/net/fetch.d.ts +13 -13
  375. package/cjs/lib/polyfillPlaceholder.d.ts +1 -1
  376. package/cjs/lib/reactGetTextContent.d.ts +2 -2
  377. package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
  378. package/cjs/lib/rootNode/getRootNode.js +5 -4
  379. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  380. package/cjs/lib/rootNode/index.d.ts +2 -2
  381. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +47 -33
  382. package/cjs/lib/rootNode/rootNodeDecorator.js +39 -4
  383. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  384. package/cjs/lib/styles/ColorFactory.d.ts +11 -11
  385. package/cjs/lib/styles/ColorFunctions.d.ts +11 -11
  386. package/cjs/lib/styles/ColorHelpers.d.ts +20 -20
  387. package/cjs/lib/styles/ColorKeywords.d.ts +150 -150
  388. package/cjs/lib/styles/ColorObject.d.ts +52 -52
  389. package/cjs/lib/styles/DimensionFunctions.d.ts +1 -1
  390. package/cjs/lib/styles/HoldSelectionColor.d.ts +1 -1
  391. package/cjs/lib/styles/Mixins.d.ts +2 -2
  392. package/cjs/lib/taskWithDelayAndMinimalDuration.d.ts +21 -21
  393. package/cjs/lib/theming/AnimationKeyframes.d.ts +9 -9
  394. package/cjs/lib/theming/Emotion.d.ts +15 -15
  395. package/cjs/lib/theming/Theme.d.ts +3 -3
  396. package/cjs/lib/theming/ThemeContext.d.ts +2 -2
  397. package/cjs/lib/theming/ThemeFactory.d.ts +8 -8
  398. package/cjs/lib/theming/ThemeHelpers.d.ts +11 -11
  399. package/cjs/lib/theming/themes/DefaultTheme.d.ts +1 -1
  400. package/cjs/lib/theming/themes/DefaultThemeOld.d.ts +1 -1
  401. package/cjs/lib/theming/themes/FlatTheme.d.ts +1 -1
  402. package/cjs/lib/theming/themes/FlatThemeOld.d.ts +1 -1
  403. package/cjs/lib/theming/useTheme.d.ts +1 -1
  404. package/cjs/lib/utils.d.ts +63 -63
  405. package/cjs/lib/withClassWrapper.d.ts +71 -71
  406. package/components/Autocomplete/Autocomplete.d.ts +113 -113
  407. package/components/Autocomplete/index.d.ts +1 -1
  408. package/components/Button/Button.d.ts +161 -161
  409. package/components/Button/Button.mixins.d.ts +6 -6
  410. package/components/Button/Button.styles.d.ts +68 -68
  411. package/components/Button/Corners.d.ts +6 -6
  412. package/components/Button/index.d.ts +1 -1
  413. package/components/Center/Center.d.ts +25 -25
  414. package/components/Center/Center.styles.d.ts +7 -7
  415. package/components/Center/index.d.ts +1 -1
  416. package/components/Checkbox/Checkbox.d.ts +96 -96
  417. package/components/Checkbox/Checkbox.styles.d.ts +22 -22
  418. package/components/Checkbox/index.d.ts +1 -1
  419. package/components/ComboBox/ComboBox.d.ts +184 -184
  420. package/components/ComboBox/index.d.ts +1 -1
  421. package/components/CurrencyInput/CurrencyHelper.d.ts +35 -35
  422. package/components/CurrencyInput/CurrencyInput.d.ts +106 -106
  423. package/components/CurrencyInput/CurrencyInputHelper.d.ts +20 -20
  424. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +18 -18
  425. package/components/CurrencyInput/CursorHelper.d.ts +10 -10
  426. package/components/CurrencyInput/SelectionHelper.d.ts +11 -11
  427. package/components/CurrencyInput/constants.d.ts +2 -2
  428. package/components/CurrencyInput/index.d.ts +1 -1
  429. package/components/CurrencyLabel/CurrencyLabel.d.ts +24 -24
  430. package/components/CurrencyLabel/index.d.ts +1 -1
  431. package/components/DateInput/DateFragmentsView.d.ts +20 -20
  432. package/components/DateInput/DateFragmentsView.styles.d.ts +7 -7
  433. package/components/DateInput/DateInput.d.ts +107 -107
  434. package/components/DateInput/DateInput.styles.d.ts +10 -10
  435. package/components/DateInput/ViewDateInputValidateChecks.d.ts +10 -10
  436. package/components/DateInput/helpers/DateInputKeyboardActions.d.ts +21 -21
  437. package/components/DateInput/helpers/InternalDateMediator.d.ts +26 -26
  438. package/components/DateInput/helpers/SelectionHelpers.d.ts +2 -2
  439. package/components/DateInput/helpers/inputNumber.d.ts +5 -5
  440. package/components/DateInput/index.d.ts +1 -1
  441. package/components/DatePicker/DatePicker.d.ts +131 -131
  442. package/components/DatePicker/DatePicker.styles.d.ts +3 -3
  443. package/components/DatePicker/DatePickerHelpers.d.ts +2 -2
  444. package/components/DatePicker/Picker.d.ts +33 -33
  445. package/components/DatePicker/Picker.styles.d.ts +5 -5
  446. package/components/DatePicker/index.d.ts +1 -1
  447. package/components/DatePicker/locale/index.d.ts +4 -4
  448. package/components/DatePicker/locale/locales/en.d.ts +2 -2
  449. package/components/DatePicker/locale/locales/ru.d.ts +2 -2
  450. package/components/DatePicker/locale/types.d.ts +5 -5
  451. package/components/Dropdown/Dropdown.d.ts +124 -124
  452. package/components/Dropdown/index.d.ts +1 -1
  453. package/components/DropdownMenu/DropdownMenu.d.ts +65 -65
  454. package/components/DropdownMenu/index.d.ts +1 -1
  455. package/components/FxInput/FxInput.d.ts +50 -50
  456. package/components/FxInput/index.d.ts +1 -1
  457. package/components/Gapped/Gapped.d.ts +58 -58
  458. package/components/Gapped/index.d.ts +1 -1
  459. package/components/Group/Group.d.ts +14 -14
  460. package/components/Group/Group.styles.d.ts +8 -8
  461. package/components/Group/index.d.ts +1 -1
  462. package/components/Hint/Hint/Hint.js +9 -1
  463. package/components/Hint/Hint/Hint.js.map +1 -1
  464. package/components/Hint/Hint.d.ts +85 -81
  465. package/components/Hint/Hint.styles.d.ts +5 -5
  466. package/components/Hint/index.d.ts +1 -1
  467. package/components/Input/Input.d.ts +157 -157
  468. package/components/Input/Input.styles.d.ts +42 -42
  469. package/components/Input/index.d.ts +1 -1
  470. package/components/Kebab/Kebab.d.ts +71 -71
  471. package/components/Kebab/Kebab.styles.d.ts +12 -12
  472. package/components/Kebab/index.d.ts +1 -1
  473. package/components/Link/Link.d.ts +72 -72
  474. package/components/Link/Link.mixins.d.ts +3 -3
  475. package/components/Link/Link.styles.d.ts +15 -15
  476. package/components/Link/index.d.ts +1 -1
  477. package/components/Loader/Loader.d.ts +100 -100
  478. package/components/Loader/Loader.styles.d.ts +8 -8
  479. package/components/Loader/index.d.ts +1 -1
  480. package/components/MenuHeader/MenuHeader.d.ts +20 -20
  481. package/components/MenuHeader/MenuHeader.styles.d.ts +5 -5
  482. package/components/MenuHeader/index.d.ts +1 -1
  483. package/components/MenuItem/MenuItem.d.ts +94 -94
  484. package/components/MenuItem/MenuItem.styles.d.ts +13 -13
  485. package/components/MenuItem/index.d.ts +1 -1
  486. package/components/MenuSeparator/MenuSeparator.d.ts +12 -12
  487. package/components/MenuSeparator/MenuSeparator.styles.d.ts +4 -4
  488. package/components/MenuSeparator/index.d.ts +1 -1
  489. package/components/Modal/Modal.d.ts +87 -87
  490. package/components/Modal/Modal.styles.d.ts +26 -26
  491. package/components/Modal/ModalBody.d.ts +21 -21
  492. package/components/Modal/ModalClose.d.ts +2 -2
  493. package/components/Modal/ModalContext.d.ts +15 -15
  494. package/components/Modal/ModalFooter.d.ts +21 -21
  495. package/components/Modal/ModalHeader.d.ts +17 -17
  496. package/components/Modal/index.d.ts +4 -4
  497. package/components/Paging/NavigationHelper.d.ts +7 -7
  498. package/components/Paging/Paging.d.ts +90 -90
  499. package/components/Paging/Paging.styles.d.ts +16 -16
  500. package/components/Paging/PagingHelper.d.ts +2 -2
  501. package/components/Paging/index.d.ts +1 -1
  502. package/components/Paging/locale/index.d.ts +4 -4
  503. package/components/Paging/locale/locales/en.d.ts +2 -2
  504. package/components/Paging/locale/locales/ru.d.ts +2 -2
  505. package/components/Paging/locale/types.d.ts +3 -3
  506. package/components/PasswordInput/PasswordInput.d.ts +49 -49
  507. package/components/PasswordInput/PasswordInput.styles.d.ts +10 -10
  508. package/components/PasswordInput/index.d.ts +1 -1
  509. package/components/Radio/Radio.d.ts +77 -77
  510. package/components/Radio/Radio.styles.d.ts +19 -19
  511. package/components/Radio/index.d.ts +1 -1
  512. package/components/RadioGroup/Prevent.d.ts +8 -8
  513. package/components/RadioGroup/RadioGroup.d.ts +117 -117
  514. package/components/RadioGroup/RadioGroup.styles.d.ts +7 -7
  515. package/components/RadioGroup/RadioGroupContext.d.ts +10 -10
  516. package/components/RadioGroup/index.d.ts +1 -1
  517. package/components/ScrollContainer/ScrollBar.d.ts +37 -37
  518. package/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -23
  519. package/components/ScrollContainer/ScrollContainer.d.ts +84 -84
  520. package/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -10
  521. package/components/ScrollContainer/ScrollContainer.styles.d.ts +17 -17
  522. package/components/ScrollContainer/index.d.ts +1 -1
  523. package/components/Select/Item.d.ts +7 -7
  524. package/components/Select/Select.d.ts +179 -179
  525. package/components/Select/Select.styles.d.ts +17 -17
  526. package/components/Select/index.d.ts +1 -1
  527. package/components/Select/locale/index.d.ts +4 -4
  528. package/components/Select/locale/locales/en.d.ts +2 -2
  529. package/components/Select/locale/locales/ru.d.ts +2 -2
  530. package/components/Select/locale/types.d.ts +4 -4
  531. package/components/Select/selectTheme.d.ts +3 -3
  532. package/components/SidePage/SidePage.d.ts +109 -109
  533. package/components/SidePage/SidePage.styles.d.ts +37 -37
  534. package/components/SidePage/SidePageBody.d.ts +19 -19
  535. package/components/SidePage/SidePageContainer.d.ts +15 -15
  536. package/components/SidePage/SidePageContext.d.ts +17 -17
  537. package/components/SidePage/SidePageFooter.d.ts +36 -36
  538. package/components/SidePage/SidePageHeader.d.ts +44 -44
  539. package/components/SidePage/index.d.ts +5 -5
  540. package/components/Spinner/Spinner.d.ts +56 -56
  541. package/components/Spinner/Spinner.styles.d.ts +12 -12
  542. package/components/Spinner/SpinnerFallbackAnimation.d.ts +25 -25
  543. package/components/Spinner/index.d.ts +1 -1
  544. package/components/Spinner/locale/index.d.ts +4 -4
  545. package/components/Spinner/locale/locales/en.d.ts +2 -2
  546. package/components/Spinner/locale/locales/ru.d.ts +2 -2
  547. package/components/Spinner/locale/types.d.ts +4 -4
  548. package/components/Sticky/Sticky.d.ts +59 -59
  549. package/components/Sticky/Sticky.styles.d.ts +7 -7
  550. package/components/Sticky/index.d.ts +1 -1
  551. package/components/Switcher/Switcher.d.ts +56 -56
  552. package/components/Switcher/Switcher.styles.d.ts +10 -10
  553. package/components/Switcher/index.d.ts +1 -1
  554. package/components/Switcher/switcherTheme.d.ts +2 -2
  555. package/components/Tabs/Indicator.d.ts +28 -28
  556. package/components/Tabs/Indicator.styles.d.ts +8 -8
  557. package/components/Tabs/Tab.d.ts +121 -121
  558. package/components/Tabs/Tab.styles.d.ts +27 -27
  559. package/components/Tabs/Tabs.d.ts +62 -62
  560. package/components/Tabs/Tabs.styles.d.ts +5 -5
  561. package/components/Tabs/TabsContext.d.ts +14 -14
  562. package/components/Tabs/index.d.ts +2 -2
  563. package/components/Textarea/Textarea.d.ts +185 -185
  564. package/components/Textarea/Textarea.styles.d.ts +15 -15
  565. package/components/Textarea/TextareaCounter.d.ts +13 -13
  566. package/components/Textarea/TextareaHelpers.d.ts +11 -11
  567. package/components/Textarea/index.d.ts +1 -1
  568. package/components/Toast/Toast.d.ts +58 -58
  569. package/components/Toast/Toast.styles.d.ts +6 -6
  570. package/components/Toast/ToastStatic.d.ts +8 -8
  571. package/components/Toast/ToastView.d.ts +38 -38
  572. package/components/Toast/ToastView.styles.d.ts +8 -8
  573. package/components/Toast/index.d.ts +1 -1
  574. package/components/Toggle/Toggle.d.ts +107 -107
  575. package/components/Toggle/Toggle.styles.d.ts +30 -30
  576. package/components/Toggle/index.d.ts +1 -1
  577. package/components/Token/Token.d.ts +36 -36
  578. package/components/Token/Token.styles.d.ts +29 -29
  579. package/components/Token/index.d.ts +1 -1
  580. package/components/TokenInput/TextWidthHelper.d.ts +18 -18
  581. package/components/TokenInput/TokenInput.d.ts +194 -194
  582. package/components/TokenInput/TokenInput.styles.d.ts +15 -15
  583. package/components/TokenInput/TokenInputMenu.d.ts +18 -18
  584. package/components/TokenInput/TokenInputReducer.d.ts +25 -25
  585. package/components/TokenInput/index.d.ts +1 -1
  586. package/components/TokenInput/locale/index.d.ts +4 -4
  587. package/components/TokenInput/locale/locales/en.d.ts +2 -2
  588. package/components/TokenInput/locale/locales/ru.d.ts +2 -2
  589. package/components/TokenInput/locale/types.d.ts +4 -4
  590. package/components/Tooltip/Tooltip/Tooltip.js +11 -8
  591. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  592. package/components/Tooltip/Tooltip.d.ts +162 -160
  593. package/components/Tooltip/Tooltip.styles.d.ts +5 -5
  594. package/components/Tooltip/index.d.ts +1 -1
  595. package/components/TooltipMenu/TooltipMenu.d.ts +65 -65
  596. package/components/TooltipMenu/index.d.ts +1 -1
  597. package/index.d.ts +49 -49
  598. package/internal/BGRuler.d.ts +30 -30
  599. package/internal/Calendar/Calendar.d.ts +66 -66
  600. package/internal/Calendar/Calendar.styles.d.ts +5 -5
  601. package/internal/Calendar/CalendarDateShape.d.ts +14 -14
  602. package/internal/Calendar/CalendarScrollEvents.d.ts +4 -4
  603. package/internal/Calendar/CalendarUtils.d.ts +19 -19
  604. package/internal/Calendar/DayCellView.d.ts +13 -13
  605. package/internal/Calendar/DayCellView.styles.d.ts +7 -7
  606. package/internal/Calendar/DayCellViewModel.d.ts +8 -8
  607. package/internal/Calendar/Month.d.ts +33 -33
  608. package/internal/Calendar/MonthView.d.ts +21 -21
  609. package/internal/Calendar/MonthView.styles.d.ts +9 -9
  610. package/internal/Calendar/MonthViewModel.d.ts +14 -14
  611. package/internal/Calendar/config.d.ts +9 -9
  612. package/internal/Calendar/index.d.ts +2 -2
  613. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +19 -4
  614. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  615. package/internal/CommonWrapper/CommonWrapper.d.ts +32 -31
  616. package/internal/CommonWrapper/index.d.ts +1 -1
  617. package/internal/ComponentCombinator.d.ts +25 -25
  618. package/internal/ComponentTable.d.ts +21 -21
  619. package/internal/CustomComboBox/ComboBoxMenu.d.ts +31 -31
  620. package/internal/CustomComboBox/ComboBoxView.d.ts +90 -90
  621. package/internal/CustomComboBox/CustomComboBox.d.ts +136 -136
  622. package/internal/CustomComboBox/CustomComboBox.styles.d.ts +5 -5
  623. package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +71 -71
  624. package/internal/CustomComboBox/CustomComboBoxTypes.d.ts +6 -6
  625. package/internal/CustomComboBox/index.d.ts +2 -2
  626. package/internal/CustomComboBox/locale/index.d.ts +4 -4
  627. package/internal/CustomComboBox/locale/locales/en.d.ts +2 -2
  628. package/internal/CustomComboBox/locale/locales/ru.d.ts +2 -2
  629. package/internal/CustomComboBox/locale/types.d.ts +5 -5
  630. package/internal/DateSelect/DateSelect.d.ts +93 -93
  631. package/internal/DateSelect/DateSelect.styles.d.ts +19 -19
  632. package/internal/DateSelect/index.d.ts +1 -1
  633. package/internal/DropdownContainer/DropdownContainer.d.ts +44 -44
  634. package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -3
  635. package/internal/DropdownContainer/index.d.ts +1 -1
  636. package/internal/FocusTrap/FocusTrap.d.ts +17 -17
  637. package/internal/FocusTrap/index.d.ts +1 -1
  638. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +14 -14
  639. package/internal/HideBodyVerticalScroll/index.d.ts +1 -1
  640. package/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +8 -8
  641. package/internal/IgnoreLayerClick/index.d.ts +1 -1
  642. package/internal/InputLikeText/HiddenInput.d.ts +13 -13
  643. package/internal/InputLikeText/InputLikeText.d.ts +73 -73
  644. package/internal/InputLikeText/InputLikeText.styles.d.ts +7 -7
  645. package/internal/InputLikeText/index.d.ts +1 -1
  646. package/internal/InternalMenu/InternalMenu.d.ts +63 -63
  647. package/internal/InternalMenu/InternalMenu.styles.d.ts +9 -9
  648. package/internal/InternalMenu/index.d.ts +1 -1
  649. package/internal/InternalMenu/isActiveElement.d.ts +3 -3
  650. package/internal/MaskCharLowLine/MaskCharLowLine.d.ts +9 -9
  651. package/internal/MaskCharLowLine/MaskCharLowLine.styles.d.ts +3 -3
  652. package/internal/MaskCharLowLine/index.d.ts +1 -1
  653. package/internal/MaskedInput/MaskedInput.d.ts +40 -40
  654. package/internal/MaskedInput/MaskedInput.styles.d.ts +6 -6
  655. package/internal/MaskedInput/index.d.ts +1 -1
  656. package/internal/Menu/Menu.d.ts +65 -65
  657. package/internal/Menu/Menu.styles.d.ts +9 -9
  658. package/internal/Menu/index.d.ts +1 -1
  659. package/internal/Menu/isActiveElement.d.ts +3 -3
  660. package/internal/NativeDateInput/NativeDateInput.d.ts +23 -23
  661. package/internal/NativeDateInput/NativeDateInput.styles.d.ts +3 -3
  662. package/internal/NativeDateInput/index.d.ts +1 -1
  663. package/internal/NativeDateInput/utils.d.ts +7 -7
  664. package/internal/PerformanceMetrics/PerformanceMetrics.d.ts +7 -7
  665. package/internal/Popup/Popup/Popup.js +17 -18
  666. package/internal/Popup/Popup/Popup.js.map +1 -1
  667. package/internal/Popup/Popup.d.ts +161 -162
  668. package/internal/Popup/Popup.styles.d.ts +16 -16
  669. package/internal/Popup/PopupHelper.d.ts +26 -26
  670. package/internal/Popup/PopupPin.d.ts +56 -56
  671. package/internal/Popup/PopupPin.styles.d.ts +3 -3
  672. package/internal/Popup/index.d.ts +1 -1
  673. package/internal/Popup/types.d.ts +1 -1
  674. package/internal/PopupMenu/PopupMenu.d.ts +85 -85
  675. package/internal/PopupMenu/PopupMenu.styles.d.ts +4 -4
  676. package/internal/PopupMenu/index.d.ts +1 -1
  677. package/internal/PopupMenu/validatePositions.d.ts +2 -2
  678. package/internal/RenderContainer/RenderContainer/RenderContainer.js +9 -0
  679. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  680. package/internal/RenderContainer/RenderContainer.d.ts +16 -16
  681. package/internal/RenderContainer/RenderContainerTypes.d.ts +12 -11
  682. package/internal/RenderContainer/RenderInnerContainer.d.ts +13 -13
  683. package/internal/RenderContainer/index.d.ts +1 -1
  684. package/internal/RenderLayer/RenderLayer.d.ts +29 -29
  685. package/internal/RenderLayer/index.d.ts +1 -1
  686. package/internal/ResizeDetector/ResizeDetector.d.ts +12 -12
  687. package/internal/ResizeDetector/ResizeDetector.styles.d.ts +5 -5
  688. package/internal/ResizeDetector/index.d.ts +1 -1
  689. package/internal/ThemePlayground/AnotherInputsPlayground.d.ts +13 -13
  690. package/internal/ThemePlayground/CheckboxPlayground.d.ts +1 -1
  691. package/internal/ThemePlayground/ComponentsGroup.d.ts +10 -10
  692. package/internal/ThemePlayground/CurrencyInputPlayground.d.ts +11 -11
  693. package/internal/ThemePlayground/FxInputPlayground.d.ts +10 -10
  694. package/internal/ThemePlayground/HintPlayground.d.ts +6 -6
  695. package/internal/ThemePlayground/PagingPlayground.d.ts +10 -10
  696. package/internal/ThemePlayground/Playground.d.ts +31 -31
  697. package/internal/ThemePlayground/Playground.styles.d.ts +23 -23
  698. package/internal/ThemePlayground/RadioPlayground.d.ts +1 -1
  699. package/internal/ThemePlayground/SelectPlayground.d.ts +12 -12
  700. package/internal/ThemePlayground/ShowcaseGroup.d.ts +5 -5
  701. package/internal/ThemePlayground/SwitcherPlayground.d.ts +15 -15
  702. package/internal/ThemePlayground/ThemeContextPlayground.d.ts +51 -51
  703. package/internal/ThemePlayground/ThemeEditor.d.ts +39 -39
  704. package/internal/ThemePlayground/TogglePlayground.d.ts +9 -9
  705. package/internal/ThemePlayground/TokenInputPlayground.d.ts +7 -7
  706. package/internal/ThemePlayground/VariableValue.d.ts +45 -45
  707. package/internal/ThemePlayground/constants.d.ts +18 -18
  708. package/internal/ThemePlayground/darkTheme.d.ts +255 -255
  709. package/internal/ThemePlayground/helpers.d.ts +2 -2
  710. package/internal/ThemeShowcase/ThemeShowcase.d.ts +22 -22
  711. package/internal/ThemeShowcase/ThemeShowcase.styles.d.ts +24 -24
  712. package/internal/ThemeShowcase/VariablesCollector.d.ts +22 -22
  713. package/internal/ZIndex/ZIndex.d.ts +36 -36
  714. package/internal/ZIndex/ZIndexStorage.d.ts +18 -18
  715. package/internal/ZIndex/index.d.ts +1 -1
  716. package/internal/icons/16px/icon.styles.d.ts +4 -4
  717. package/internal/icons/16px/index.d.ts +22 -22
  718. package/internal/icons/20px/Icon.d.ts +30 -30
  719. package/internal/icons/20px/icon.styles.d.ts +4 -4
  720. package/internal/icons/20px/index.d.ts +2 -2
  721. package/internal/icons/20px/svg.d.ts +14 -14
  722. package/internal/icons/CloudIcon.d.ts +1 -1
  723. package/internal/icons/CrossIcon.d.ts +1 -1
  724. package/internal/icons/SpinnerIcon.d.ts +26 -26
  725. package/internal/icons/SpinnerIcon.styles.d.ts +4 -4
  726. package/internal/themes/DefaultTheme.d.ts +766 -766
  727. package/internal/themes/FlatTheme.d.ts +132 -132
  728. package/internal/themes/Theme8px.d.ts +271 -271
  729. package/lib/ConditionalHandler.d.ts +11 -11
  730. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js +3 -0
  731. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -0
  732. package/lib/InstanceWithAnchorElement/package.json +6 -0
  733. package/lib/InstanceWithAnchorElement.d.ts +5 -0
  734. package/lib/LayoutEvents.d.ts +4 -4
  735. package/lib/ModalStack.d.ts +14 -14
  736. package/lib/SSRSafe.d.ts +4 -4
  737. package/lib/Supports.d.ts +1 -1
  738. package/lib/Upgrades.d.ts +6 -6
  739. package/lib/animation/index.d.ts +6 -6
  740. package/lib/animation/presets.d.ts +18 -18
  741. package/lib/animation/stepper.d.ts +1 -1
  742. package/lib/callChildRef/callChildRef.d.ts +3 -3
  743. package/lib/client.d.ts +16 -16
  744. package/lib/createPropsGetter.d.ts +2 -2
  745. package/lib/currentEnvironment.d.ts +3 -3
  746. package/lib/date/InternalDate.d.ts +58 -58
  747. package/lib/date/InternalDateCalculator.d.ts +6 -6
  748. package/lib/date/InternalDateGetter.d.ts +15 -15
  749. package/lib/date/InternalDateSetter.d.ts +6 -6
  750. package/lib/date/InternalDateTransformer.d.ts +12 -12
  751. package/lib/date/InternalDateValidator.d.ts +12 -12
  752. package/lib/date/constants.d.ts +28 -28
  753. package/lib/date/localeSets.d.ts +5 -5
  754. package/lib/date/types.d.ts +90 -90
  755. package/lib/dom/getScrollWidth.d.ts +1 -1
  756. package/lib/dom/tabbableHelpers.d.ts +16 -16
  757. package/lib/events/MouseDrag.d.ts +58 -58
  758. package/lib/events/fixClickFocusIE.d.ts +1 -1
  759. package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -2
  760. package/lib/events/keyListener.d.ts +7 -7
  761. package/lib/events/keyboard/KeyboardEventCodes.d.ts +30 -30
  762. package/lib/events/keyboard/KeyboardMapKeys.d.ts +6 -6
  763. package/lib/events/keyboard/extractCode.d.ts +3 -3
  764. package/lib/events/keyboard/identifiers.d.ts +48 -48
  765. package/lib/events/stopPropagation.d.ts +1 -1
  766. package/lib/events/tabListener.d.ts +1 -1
  767. package/lib/extractKeyboardAction.d.ts +13 -13
  768. package/lib/filterProps.d.ts +12 -12
  769. package/lib/forwardRefAndName.d.ts +5 -5
  770. package/lib/getDisplayName.d.ts +3 -3
  771. package/lib/listenFocusOutside.d.ts +8 -8
  772. package/lib/locale/LocaleContext.d.ts +7 -7
  773. package/lib/locale/LocaleHelper.d.ts +9 -9
  774. package/lib/locale/constants.d.ts +2 -2
  775. package/lib/locale/decorators.d.ts +36 -36
  776. package/lib/locale/index.d.ts +3 -3
  777. package/lib/locale/types.d.ts +19 -19
  778. package/lib/memo.d.ts +1 -1
  779. package/lib/net/fetch.d.ts +13 -13
  780. package/lib/polyfillPlaceholder.d.ts +1 -1
  781. package/lib/reactGetTextContent.d.ts +2 -2
  782. package/lib/rootNode/getRootNode/getRootNode.js +3 -4
  783. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  784. package/lib/rootNode/getRootNode.d.ts +3 -3
  785. package/lib/rootNode/index.d.ts +2 -2
  786. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +24 -3
  787. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  788. package/lib/rootNode/rootNodeDecorator.d.ts +47 -33
  789. package/lib/styles/ColorFactory.d.ts +11 -11
  790. package/lib/styles/ColorFunctions.d.ts +11 -11
  791. package/lib/styles/ColorHelpers.d.ts +20 -20
  792. package/lib/styles/ColorKeywords.d.ts +150 -150
  793. package/lib/styles/ColorObject.d.ts +52 -52
  794. package/lib/styles/DimensionFunctions.d.ts +1 -1
  795. package/lib/styles/HoldSelectionColor.d.ts +1 -1
  796. package/lib/styles/Mixins.d.ts +2 -2
  797. package/lib/taskWithDelayAndMinimalDuration.d.ts +21 -21
  798. package/lib/theming/AnimationKeyframes.d.ts +9 -9
  799. package/lib/theming/Emotion.d.ts +15 -15
  800. package/lib/theming/Theme.d.ts +3 -3
  801. package/lib/theming/ThemeContext.d.ts +2 -2
  802. package/lib/theming/ThemeFactory.d.ts +8 -8
  803. package/lib/theming/ThemeHelpers.d.ts +11 -11
  804. package/lib/theming/themes/DefaultTheme.d.ts +1 -1
  805. package/lib/theming/themes/DefaultThemeOld.d.ts +1 -1
  806. package/lib/theming/themes/FlatTheme.d.ts +1 -1
  807. package/lib/theming/themes/FlatThemeOld.d.ts +1 -1
  808. package/lib/theming/useTheme.d.ts +1 -1
  809. package/lib/utils.d.ts +63 -63
  810. package/lib/withClassWrapper.d.ts +71 -71
  811. package/package.json +2 -5
@@ -1,162 +1,161 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Nullable } from '../../typings/utility-types';
4
- import { FocusEventType, MouseEventType } from '../../typings/event-types';
5
- import { CommonProps } from '../CommonWrapper';
6
- export declare const PopupPositions: readonly ["top left", "top center", "top right", "right top", "right middle", "right bottom", "bottom right", "bottom center", "bottom left", "left bottom", "left middle", "left top"];
7
- export declare const DefaultPosition: "top left";
8
- export declare type PopupPositionsType = typeof PopupPositions[number];
9
- export interface PopupHandlerProps {
10
- onMouseEnter?: (event: MouseEventType) => void;
11
- onMouseLeave?: (event: MouseEventType) => void;
12
- onClick?: (event: MouseEventType) => void;
13
- onFocus?: (event: FocusEventType) => void;
14
- onBlur?: (event: FocusEventType) => void;
15
- onOpen?: () => void;
16
- onClose?: () => void;
17
- }
18
- export interface PopupProps extends CommonProps, PopupHandlerProps {
19
- anchorElement: React.ReactNode | HTMLElement;
20
- backgroundColor?: React.CSSProperties['backgroundColor'];
21
- borderColor?: React.CSSProperties['borderColor'];
22
- children: React.ReactNode | (() => React.ReactNode);
23
- hasPin: boolean;
24
- hasShadow: boolean;
25
- disableAnimations: boolean;
26
- margin?: number;
27
- maxWidth?: number | string;
28
- opened: boolean;
29
- pinOffset?: number;
30
- pinSize?: number;
31
- popupOffset: number;
32
- positions: Readonly<PopupPositionsType[]>;
33
- /**
34
- * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
35
- *
36
- * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
37
- */
38
- useWrapper: boolean;
39
- ignoreHover: boolean;
40
- width: React.CSSProperties['width'];
41
- /**
42
- * При очередном рендере пытаться сохранить первоначальную позицию попапа
43
- * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).
44
- *
45
- * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.
46
- * @see https://github.com/skbkontur/retail-ui/pull/1195
47
- */
48
- tryPreserveFirstRenderedPosition?: boolean;
49
- }
50
- interface PopupLocation {
51
- coordinates: {
52
- left: number;
53
- top: number;
54
- };
55
- position: PopupPositionsType;
56
- }
57
- export interface PopupState {
58
- location: Nullable<PopupLocation>;
59
- }
60
- export declare class Popup extends React.Component<PopupProps, PopupState> {
61
- static __KONTUR_REACT_UI__: string;
62
- static propTypes: {
63
- /**
64
- * Ссылка (ref) на элемент или React компонент, для которого рисуется попап
65
- */
66
- anchorElement: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
67
- /**
68
- * Фон попапа и пина
69
- */
70
- backgroundColor: PropTypes.Requireable<string>;
71
- children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
72
- /**
73
- * Показывать ли пин
74
- */
75
- hasPin: PropTypes.Requireable<boolean>;
76
- /**
77
- * Применять ли box-shadow на попапе. При false отключает границу на пине
78
- */
79
- hasShadow: PropTypes.Requireable<boolean>;
80
- /**
81
- * Отступ попапа от элемента
82
- */
83
- margin: PropTypes.Requireable<number>;
84
- /**
85
- * Показан или скрыт попап
86
- */
87
- opened: PropTypes.Requireable<boolean>;
88
- /**
89
- * Смещение пина от края попапа. Край задаётся в пропе position вторым словом
90
- */
91
- pinOffset: PropTypes.Requireable<number>;
92
- /**
93
- * Сторона пина без учёта границы.
94
- * Пин представляет собой равносторонний треугольник, высота от попапа
95
- * до "носика" пина будет соответствовать формуле (size* √3)/2
96
- */
97
- pinSize: PropTypes.Requireable<number>;
98
- /**
99
- * смещение попапа относительно родительского элемента
100
- */
101
- popupOffset: PropTypes.Requireable<number>;
102
- /**
103
- * С какой стороны показывать попап и край попапа,
104
- * на котором будет отображаться пин
105
- */
106
- positions: PropTypes.Requireable<any[]>;
107
- /**
108
- * Игнорировать ли события hover/click
109
- */
110
- ignoreHover: PropTypes.Requireable<boolean>;
111
- };
112
- static defaultProps: {
113
- popupOffset: number;
114
- hasPin: boolean;
115
- hasShadow: boolean;
116
- disableAnimations: boolean;
117
- useWrapper: boolean;
118
- ignoreHover: boolean;
119
- width: string;
120
- };
121
- state: PopupState;
122
- private theme;
123
- private layoutEventsToken;
124
- private locationUpdateId;
125
- private lastPopupElement;
126
- private anchorElement;
127
- private setRootNode;
128
- private refForTransition;
129
- componentDidMount(): void;
130
- static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState): PopupState;
131
- componentDidUpdate(prevProps: PopupProps, prevState: PopupState): void;
132
- componentWillUnmount(): void;
133
- render(): JSX.Element;
134
- private renderMain;
135
- private renderContainerRef;
136
- private updateAnchorElement;
137
- private addEventListeners;
138
- private removeEventListeners;
139
- private handleMouseEnter;
140
- private handleMouseLeave;
141
- private handleClick;
142
- private handleFocus;
143
- private handleBlur;
144
- private calculateWidth;
145
- private renderContent;
146
- private resetLocation;
147
- private renderChildren;
148
- private refPopupElement;
149
- private renderPin;
150
- private handleLayoutEvent;
151
- private delayUpdateLocation;
152
- private cancelDelayedUpdateLocation;
153
- private updateLocation;
154
- private locationEquals;
155
- private getLocation;
156
- private getPinnedPopupOffset;
157
- private getCoordinates;
158
- private getPinOffset;
159
- private getHorizontalPosition;
160
- private getVerticalPosition;
161
- }
162
- export {};
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Nullable } from '../../typings/utility-types';
4
+ import { FocusEventType, MouseEventType } from '../../typings/event-types';
5
+ import { CommonProps } from '../CommonWrapper';
6
+ export declare const PopupPositions: readonly ["top left", "top center", "top right", "right top", "right middle", "right bottom", "bottom right", "bottom center", "bottom left", "left bottom", "left middle", "left top"];
7
+ export declare const DefaultPosition: "top left";
8
+ export declare type PopupPositionsType = typeof PopupPositions[number];
9
+ export interface PopupHandlerProps {
10
+ onMouseEnter?: (event: MouseEventType) => void;
11
+ onMouseLeave?: (event: MouseEventType) => void;
12
+ onClick?: (event: MouseEventType) => void;
13
+ onFocus?: (event: FocusEventType) => void;
14
+ onBlur?: (event: FocusEventType) => void;
15
+ onOpen?: () => void;
16
+ onClose?: () => void;
17
+ }
18
+ export interface PopupProps extends CommonProps, PopupHandlerProps {
19
+ anchorElement: React.ReactNode | HTMLElement;
20
+ backgroundColor?: React.CSSProperties['backgroundColor'];
21
+ borderColor?: React.CSSProperties['borderColor'];
22
+ children: React.ReactNode | (() => React.ReactNode);
23
+ hasPin: boolean;
24
+ hasShadow: boolean;
25
+ disableAnimations: boolean;
26
+ margin?: number;
27
+ maxWidth?: number | string;
28
+ opened: boolean;
29
+ pinOffset?: number;
30
+ pinSize?: number;
31
+ popupOffset: number;
32
+ positions: Readonly<PopupPositionsType[]>;
33
+ /**
34
+ * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
35
+ *
36
+ * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
37
+ */
38
+ useWrapper: boolean;
39
+ ignoreHover: boolean;
40
+ width: React.CSSProperties['width'];
41
+ /**
42
+ * При очередном рендере пытаться сохранить первоначальную позицию попапа
43
+ * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).
44
+ *
45
+ * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.
46
+ * @see https://github.com/skbkontur/retail-ui/pull/1195
47
+ */
48
+ tryPreserveFirstRenderedPosition?: boolean;
49
+ }
50
+ interface PopupLocation {
51
+ coordinates: {
52
+ left: number;
53
+ top: number;
54
+ };
55
+ position: PopupPositionsType;
56
+ }
57
+ export interface PopupState {
58
+ location: Nullable<PopupLocation>;
59
+ }
60
+ export declare class Popup extends React.Component<PopupProps, PopupState> {
61
+ static __KONTUR_REACT_UI__: string;
62
+ static propTypes: {
63
+ /**
64
+ * Ссылка (ref) на элемент или React компонент, для которого рисуется попап
65
+ */
66
+ anchorElement: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
67
+ /**
68
+ * Фон попапа и пина
69
+ */
70
+ backgroundColor: PropTypes.Requireable<string>;
71
+ children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
72
+ /**
73
+ * Показывать ли пин
74
+ */
75
+ hasPin: PropTypes.Requireable<boolean>;
76
+ /**
77
+ * Применять ли box-shadow на попапе. При false отключает границу на пине
78
+ */
79
+ hasShadow: PropTypes.Requireable<boolean>;
80
+ /**
81
+ * Отступ попапа от элемента
82
+ */
83
+ margin: PropTypes.Requireable<number>;
84
+ /**
85
+ * Показан или скрыт попап
86
+ */
87
+ opened: PropTypes.Requireable<boolean>;
88
+ /**
89
+ * Смещение пина от края попапа. Край задаётся в пропе position вторым словом
90
+ */
91
+ pinOffset: PropTypes.Requireable<number>;
92
+ /**
93
+ * Сторона пина без учёта границы.
94
+ * Пин представляет собой равносторонний треугольник, высота от попапа
95
+ * до "носика" пина будет соответствовать формуле (size* √3)/2
96
+ */
97
+ pinSize: PropTypes.Requireable<number>;
98
+ /**
99
+ * смещение попапа относительно родительского элемента
100
+ */
101
+ popupOffset: PropTypes.Requireable<number>;
102
+ /**
103
+ * С какой стороны показывать попап и край попапа,
104
+ * на котором будет отображаться пин
105
+ */
106
+ positions: PropTypes.Requireable<any[]>;
107
+ /**
108
+ * Игнорировать ли события hover/click
109
+ */
110
+ ignoreHover: PropTypes.Requireable<boolean>;
111
+ };
112
+ static defaultProps: {
113
+ popupOffset: number;
114
+ hasPin: boolean;
115
+ hasShadow: boolean;
116
+ disableAnimations: boolean;
117
+ useWrapper: boolean;
118
+ ignoreHover: boolean;
119
+ width: string;
120
+ };
121
+ state: PopupState;
122
+ private theme;
123
+ private layoutEventsToken;
124
+ private locationUpdateId;
125
+ private lastPopupElement;
126
+ private setRootNode;
127
+ private refForTransition;
128
+ anchorElement: Nullable<HTMLElement>;
129
+ componentDidMount(): void;
130
+ static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState): PopupState;
131
+ componentDidUpdate(prevProps: PopupProps, prevState: PopupState): void;
132
+ componentWillUnmount(): void;
133
+ render(): JSX.Element;
134
+ private renderMain;
135
+ private updateAnchorElement;
136
+ private addEventListeners;
137
+ private removeEventListeners;
138
+ private handleMouseEnter;
139
+ private handleMouseLeave;
140
+ private handleClick;
141
+ private handleFocus;
142
+ private handleBlur;
143
+ private calculateWidth;
144
+ private renderContent;
145
+ private resetLocation;
146
+ private renderChildren;
147
+ private refPopupElement;
148
+ private renderPin;
149
+ private handleLayoutEvent;
150
+ private delayUpdateLocation;
151
+ private cancelDelayedUpdateLocation;
152
+ private updateLocation;
153
+ private locationEquals;
154
+ private getLocation;
155
+ private getPinnedPopupOffset;
156
+ private getCoordinates;
157
+ private getPinOffset;
158
+ private getHorizontalPosition;
159
+ private getVerticalPosition;
160
+ }
161
+ export {};
@@ -19,6 +19,7 @@ var _CommonWrapper = require("../CommonWrapper");
19
19
  var _Emotion = require("../../lib/theming/Emotion");
20
20
  var _rootNode = require("../../lib/rootNode");
21
21
  var _callChildRef = require("../../lib/callChildRef/callChildRef");
22
+ var _InstanceWithAnchorElement = require("../../lib/InstanceWithAnchorElement");
22
23
 
23
24
  var _PopupPin = require("./PopupPin");
24
25
  var _PopupHelper = require("./PopupHelper");
@@ -189,10 +190,10 @@ Popup = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
189
190
  layoutEventsToken = void 0;_this.
190
191
  locationUpdateId = null;_this.
191
192
  lastPopupElement = void 0;_this.
192
- anchorElement = null;_this.
193
193
  setRootNode = void 0;_this.
194
194
  refForTransition = /*#__PURE__*/_react.default.createRef();_this.
195
195
 
196
+ anchorElement = null;_this.
196
197
 
197
198
 
198
199
 
@@ -290,21 +291,21 @@ Popup = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
290
291
 
291
292
 
292
293
 
293
- renderContainerRef = function (childInstance) {
294
- _this.updateAnchorElement(childInstance);
295
- };_this.
296
-
297
-
298
-
299
-
300
-
301
-
302
294
 
303
295
 
304
296
 
305
297
 
306
298
 
299
+ updateAnchorElement = function (instance) {
300
+ var childDomNode = (0, _InstanceWithAnchorElement.isInstanceWithAnchorElement)(instance) ? instance.getAnchorElement() : (0, _rootNode.getRootNode)(instance);
301
+ var anchorElement = _this.anchorElement;
307
302
 
303
+ if (childDomNode !== anchorElement) {
304
+ _this.removeEventListeners(anchorElement);
305
+ _this.anchorElement = childDomNode;
306
+ _this.addEventListeners(childDomNode);
307
+ }
308
+ };_this.
308
309
 
309
310
 
310
311
 
@@ -496,12 +497,12 @@ Popup = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
496
497
  }
497
498
  };return _this;}var _proto = Popup.prototype;_proto.componentDidMount = function componentDidMount() {this.updateLocation();this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);};Popup.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {/**
498
499
  * Delaying updateLocation to ensure it happens after props update
499
- */if (props.opened) {if (!state.location) {return { location: DUMMY_LOCATION };}} else if (state.location) {return { location: DUMMY_LOCATION };}return state;};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var hadNoLocation = prevState.location === DUMMY_LOCATION;var hasLocation = this.state.location !== DUMMY_LOCATION;var wasClosed = prevProps.opened && !this.props.opened;if (hadNoLocation && hasLocation && this.props.onOpen) {this.props.onOpen();}if (wasClosed && !hasLocation && this.props.onClose) {this.props.onClose();}if (this.props.opened) {this.delayUpdateLocation();}};_proto.componentWillUnmount = function componentWillUnmount() {this.cancelDelayedUpdateLocation();this.removeEventListeners(this.anchorElement);if (this.layoutEventsToken) {this.layoutEventsToken.remove();this.layoutEventsToken = null;}if (this.state.location && this.props.onClose) {this.props.onClose();}};_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 location = this.state.location;var _this$props = this.props,anchorElement = _this$props.anchorElement,useWrapper = _this$props.useWrapper;var anchor = null;if ((0, _SSRSafe.isHTMLElement)(anchorElement)) {this.updateAnchorElement(anchorElement);} else if ( /*#__PURE__*/_react.default.isValidElement(anchorElement)) {anchor = useWrapper ? /*#__PURE__*/_react.default.createElement("span", null, anchorElement) : anchorElement;} else {anchor = /*#__PURE__*/_react.default.createElement("span", null, anchorElement);}var anchorWithRef = anchor && /*#__PURE__*/_react.default.isValidElement(anchor) && (0, _utils.isRefableElement)(anchor) ? /*#__PURE__*/_react.default.cloneElement(anchor, { ref: function ref(instance) {var _anchor;_this3.updateAnchorElement(instance);var originalRef = (_anchor = anchor) == null ? void 0 : _anchor.ref;originalRef && (0, _callChildRef.callChildRef)(originalRef, instance);} }) : null; // we need to get anchor's DOM node
500
+ */if (props.opened) {if (!state.location) {return { location: DUMMY_LOCATION };}} else if (state.location) {return { location: DUMMY_LOCATION };}return state;};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var hadNoLocation = prevState.location === DUMMY_LOCATION;var hasLocation = this.state.location !== DUMMY_LOCATION;var wasClosed = prevProps.opened && !this.props.opened;if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {this.props.onOpen();}if (wasClosed && !hasLocation && this.props.onClose) {this.props.onClose();}if (this.props.opened) {this.delayUpdateLocation();}};_proto.componentWillUnmount = function componentWillUnmount() {this.cancelDelayedUpdateLocation();this.removeEventListeners(this.anchorElement);if (this.layoutEventsToken) {this.layoutEventsToken.remove();this.layoutEventsToken = null;}if (this.state.location && this.props.onClose) {this.props.onClose();}};_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 location = this.state.location;var _this$props = this.props,anchorElement = _this$props.anchorElement,useWrapper = _this$props.useWrapper;var anchor = null;if ((0, _SSRSafe.isHTMLElement)(anchorElement)) {this.updateAnchorElement(anchorElement);} else if ( /*#__PURE__*/_react.default.isValidElement(anchorElement)) {anchor = useWrapper ? /*#__PURE__*/_react.default.createElement("span", null, anchorElement) : anchorElement;} else {anchor = /*#__PURE__*/_react.default.createElement("span", null, anchorElement);}var anchorWithRef = anchor && /*#__PURE__*/_react.default.isValidElement(anchor) && (0, _utils.isRefableElement)(anchor) ? /*#__PURE__*/_react.default.cloneElement(anchor, { ref: function ref(instance) {var _anchor;_this3.updateAnchorElement(instance);var originalRef = (_anchor = anchor) == null ? void 0 : _anchor.ref;originalRef && (0, _callChildRef.callChildRef)(originalRef, instance);} }) : null; // we need to get anchor's DOM node
500
501
  // so we either set our own ref on it via cloning
501
502
  // or relay on findDOMNode (inside getRootNode)
502
- // which should be called with RenderContainer's ref
503
+ // which should be called within updateAnchorElement
503
504
  // in the case when the anchor is not refable
504
- var canGetAnchorNode = !!anchorWithRef || (0, _SSRSafe.isHTMLElement)(anchorElement);return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, { anchor: anchorWithRef || anchor, ref: canGetAnchorNode ? null : this.renderContainerRef }, location && this.renderContent(location));};_proto.updateAnchorElement = function updateAnchorElement(childInstance) {var childDomNode = (0, _rootNode.getRootNode)(childInstance);var anchorElement = this.anchorElement;if (childDomNode !== anchorElement) {this.removeEventListeners(anchorElement);this.anchorElement = childDomNode;this.addEventListeners(childDomNode);this.setRootNode(childDomNode);}};_proto.addEventListeners = function addEventListeners(element) {if (element && (0, _SSRSafe.isHTMLElement)(element)) {element.addEventListener('mouseenter', this.handleMouseEnter);element.addEventListener('mouseleave', this.handleMouseLeave);element.addEventListener('click', this.handleClick);element.addEventListener('focusin', this.handleFocus);element.addEventListener('focusout', this.handleBlur);}};_proto.removeEventListeners = function removeEventListeners(element) {if (element && (0, _SSRSafe.isHTMLElement)(element)) {element.removeEventListener('mouseenter', this.handleMouseEnter);element.removeEventListener('mouseleave', this.handleMouseLeave);element.removeEventListener('click', this.handleClick);element.removeEventListener('focusin', this.handleFocus);element.removeEventListener('focusout', this.handleBlur);}};_proto.renderContent = function renderContent(location) {var _this4 = this;var _this$props2 = this.props,backgroundColor = _this$props2.backgroundColor,disableAnimations = _this$props2.disableAnimations,maxWidth = _this$props2.maxWidth,hasShadow = _this$props2.hasShadow,ignoreHover = _this$props2.ignoreHover,opened = _this$props2.opened,width = _this$props2.width;var children = this.renderChildren();var _PopupHelper$getPosit = _PopupHelper.PopupHelper.getPositionObject(location.position),direction = _PopupHelper$getPosit.direction;var rootStyle = (0, _extends3.default)({}, location.coordinates, { maxWidth: maxWidth });var shouldFallbackShadow = _client.isIE11 || _client.isEdge || _client.isSafari;return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { timeout: TRANSITION_TIMEOUT, appear: !disableAnimations, in: Boolean(opened && children), mountOnEnter: true, unmountOnExit: true, enter: !disableAnimations, exit: !disableAnimations, onExited: this.resetLocation, nodeRef: this.refForTransition }, function (state) {var _extends2, _ref;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this4.props, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: _this4.refPopupElement, priority: 'Popup', className: (0, _Emotion.cx)((0, _extends3.default)((_extends2 = {}, _extends2[_Popup.styles.popup(_this4.theme)] = true, _extends2[_Popup.styles.shadow(_this4.theme)] = hasShadow && !shouldFallbackShadow, _extends2[_Popup.styles.shadowFallback(_this4.theme)] = hasShadow && shouldFallbackShadow, _extends2[_Popup.styles.popupIgnoreHover()] = ignoreHover, _extends2), disableAnimations ? {} : (_ref = {}, _ref[_Popup.styles["transition-enter-" + direction](_this4.theme)] = true, _ref[_Popup.styles.transitionEnter()] = state === 'entering', _ref[_Popup.styles.transitionEnterActive()] = state === 'entered', _ref[_Popup.styles.transitionExit()] = state === 'exiting', _ref))), style: rootStyle, onMouseEnter: _this4.handleMouseEnter, onMouseLeave: _this4.handleMouseLeave }, /*#__PURE__*/_react.default.createElement("div", { className: _Popup.styles.content(_this4.theme), "data-tid": 'PopupContent', ref: _this4.refForTransition }, /*#__PURE__*/_react.default.createElement("div", { className: _Popup.styles.contentInner(_this4.theme), style: { backgroundColor: backgroundColor, width: _this4.calculateWidth(width) }, "data-tid": 'PopupContentInner' }, children)), _this4.renderPin(location.position)));});};_proto.renderChildren = function renderChildren() {return (0, _utils.isFunction)(this.props.children) ? this.props.children() : this.props.children;};_proto.renderPin = function renderPin(positionName) {/**
505
+ var canGetAnchorNode = !!anchorWithRef || (0, _SSRSafe.isHTMLElement)(anchorElement);return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, { anchor: anchorWithRef || anchor, containerRef: this.setRootNode, ref: canGetAnchorNode ? null : this.updateAnchorElement }, location && this.renderContent(location));};_proto.addEventListeners = function addEventListeners(element) {if (element && (0, _SSRSafe.isHTMLElement)(element)) {element.addEventListener('mouseenter', this.handleMouseEnter);element.addEventListener('mouseleave', this.handleMouseLeave);element.addEventListener('click', this.handleClick);element.addEventListener('focusin', this.handleFocus);element.addEventListener('focusout', this.handleBlur);}};_proto.removeEventListeners = function removeEventListeners(element) {if (element && (0, _SSRSafe.isHTMLElement)(element)) {element.removeEventListener('mouseenter', this.handleMouseEnter);element.removeEventListener('mouseleave', this.handleMouseLeave);element.removeEventListener('click', this.handleClick);element.removeEventListener('focusin', this.handleFocus);element.removeEventListener('focusout', this.handleBlur);}};_proto.renderContent = function renderContent(location) {var _this4 = this;var _this$props2 = this.props,backgroundColor = _this$props2.backgroundColor,disableAnimations = _this$props2.disableAnimations,maxWidth = _this$props2.maxWidth,hasShadow = _this$props2.hasShadow,ignoreHover = _this$props2.ignoreHover,opened = _this$props2.opened,width = _this$props2.width;var children = this.renderChildren();var _PopupHelper$getPosit = _PopupHelper.PopupHelper.getPositionObject(location.position),direction = _PopupHelper$getPosit.direction;var rootStyle = (0, _extends3.default)({}, location.coordinates, { maxWidth: maxWidth });var shouldFallbackShadow = _client.isIE11 || _client.isEdge || _client.isSafari;return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, { timeout: TRANSITION_TIMEOUT, appear: !disableAnimations, in: Boolean(opened && children), mountOnEnter: true, unmountOnExit: true, enter: !disableAnimations, exit: !disableAnimations, onExited: this.resetLocation, nodeRef: this.refForTransition }, function (state) {var _extends2, _ref;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this4.props, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: _this4.refPopupElement, priority: 'Popup', className: (0, _Emotion.cx)((0, _extends3.default)((_extends2 = {}, _extends2[_Popup.styles.popup(_this4.theme)] = true, _extends2[_Popup.styles.shadow(_this4.theme)] = hasShadow && !shouldFallbackShadow, _extends2[_Popup.styles.shadowFallback(_this4.theme)] = hasShadow && shouldFallbackShadow, _extends2[_Popup.styles.popupIgnoreHover()] = ignoreHover, _extends2), disableAnimations ? {} : (_ref = {}, _ref[_Popup.styles["transition-enter-" + direction](_this4.theme)] = true, _ref[_Popup.styles.transitionEnter()] = state === 'entering', _ref[_Popup.styles.transitionEnterActive()] = state === 'entered', _ref[_Popup.styles.transitionExit()] = state === 'exiting', _ref))), style: rootStyle, onMouseEnter: _this4.handleMouseEnter, onMouseLeave: _this4.handleMouseLeave }, /*#__PURE__*/_react.default.createElement("div", { className: _Popup.styles.content(_this4.theme), "data-tid": 'PopupContent', ref: _this4.refForTransition }, /*#__PURE__*/_react.default.createElement("div", { className: _Popup.styles.contentInner(_this4.theme), style: { backgroundColor: backgroundColor, width: _this4.calculateWidth(width) }, "data-tid": 'PopupContentInner' }, children)), _this4.renderPin(location.position)));});};_proto.renderChildren = function renderChildren() {return (0, _utils.isFunction)(this.props.children) ? this.props.children() : this.props.children;};_proto.renderPin = function renderPin(positionName) {/**
505
506
  * Box-shadow does not appear under the pin. Borders are used instead.
506
507
  * In non-ie browsers drop-shadow filter is used. It is applying
507
508
  * shadow to the pin too.
@@ -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","rootNode","state","location","props","opened","theme","layoutEventsToken","locationUpdateId","lastPopupElement","anchorElement","setRootNode","refForTransition","React","createRef","renderContainerRef","childInstance","updateAnchorElement","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","offsetWidth","parseFloat","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","handleLayoutEvent","updateLocation","popupElement","getLocation","locationEquals","componentDidMount","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","onOpen","onClose","delayUpdateLocation","componentWillUnmount","removeEventListeners","remove","render","renderMain","useWrapper","anchor","isValidElement","anchorWithRef","cloneElement","ref","instance","originalRef","canGetAnchorNode","renderContent","childDomNode","addEventListeners","addEventListener","removeEventListener","backgroundColor","disableAnimations","maxWidth","hasShadow","ignoreHover","children","renderChildren","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","styles","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","content","contentInner","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"],"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, 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 { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\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}\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@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 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 anchorElement: Nullable<HTMLElement> = null;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\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 (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 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 with RenderContainer's ref\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.renderContainerRef}>\n {location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private renderContainerRef = (childInstance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(childInstance);\n };\n\n private updateAnchorElement(childInstance: Nullable<React.ReactInstance>) {\n const childDomNode = getRootNode(childInstance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n this.setRootNode(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 renderContent(location: PopupLocation) {\n const { backgroundColor, disableAnimations, maxWidth, hasShadow, ignoreHover, opened, width } = 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}>\n <ZIndex\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 <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 {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 (x == null || y == null) {\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","Popup","rootNode","state","location","props","opened","theme","layoutEventsToken","locationUpdateId","lastPopupElement","setRootNode","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","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","handleLayoutEvent","updateLocation","popupElement","getLocation","locationEquals","componentDidMount","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","useWrapper","anchor","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","renderContent","addEventListener","removeEventListener","backgroundColor","disableAnimations","maxWidth","hasShadow","ignoreHover","children","renderChildren","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","styles","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","content","contentInner","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"],"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, 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 { 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}\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@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 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 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.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 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\n anchor={anchorWithRef || anchor}\n containerRef={this.setRootNode}\n ref={canGetAnchorNode ? null : this.updateAnchorElement}\n >\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 renderContent(location: PopupLocation) {\n const { backgroundColor, disableAnimations, maxWidth, hasShadow, ignoreHover, opened, width } = 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}>\n <ZIndex\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 <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 {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 (x == null || y == null) {\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"]}