@skbkontur/react-ui 4.2.1 → 4.3.1

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 (417) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
  3. package/cjs/components/Autocomplete/Autocomplete.js +10 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +4 -5
  6. package/cjs/components/Button/Button.js +8 -3
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.mixins.js +1 -1
  9. package/cjs/components/Button/Button.mixins.js.map +1 -1
  10. package/cjs/components/Button/Button.styles.js +18 -18
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Center/Center.d.ts +4 -3
  13. package/cjs/components/Center/Center.js +9 -3
  14. package/cjs/components/Center/Center.js.map +1 -1
  15. package/cjs/components/Checkbox/Checkbox.md +48 -0
  16. package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
  17. package/cjs/components/ComboBox/ComboBox.js +12 -2
  18. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  19. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  20. package/cjs/components/CurrencyInput/CurrencyInput.js +19 -6
  21. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  22. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
  23. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js +14 -2
  24. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
  25. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  26. package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
  27. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  28. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  29. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  30. package/cjs/components/DateInput/DateInput.d.ts +8 -11
  31. package/cjs/components/DateInput/DateInput.js +11 -3
  32. package/cjs/components/DateInput/DateInput.js.map +1 -1
  33. package/cjs/components/DatePicker/DatePicker.d.ts +7 -9
  34. package/cjs/components/DatePicker/DatePicker.js +12 -6
  35. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  36. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  37. package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
  38. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  39. package/cjs/components/FileUploader/FileUploader.md +8 -1
  40. package/cjs/components/FxInput/FxInput.d.ts +6 -6
  41. package/cjs/components/FxInput/FxInput.js +13 -10
  42. package/cjs/components/FxInput/FxInput.js.map +1 -1
  43. package/cjs/components/Gapped/Gapped.d.ts +7 -8
  44. package/cjs/components/Gapped/Gapped.js +12 -6
  45. package/cjs/components/Gapped/Gapped.js.map +1 -1
  46. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  47. package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
  48. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  49. package/cjs/components/Hint/Hint.d.ts +8 -12
  50. package/cjs/components/Hint/Hint.js +15 -5
  51. package/cjs/components/Hint/Hint.js.map +1 -1
  52. package/cjs/components/Hint/Hint.md +14 -0
  53. package/cjs/components/Input/Input.d.ts +4 -3
  54. package/cjs/components/Input/Input.js +7 -4
  55. package/cjs/components/Input/Input.js.map +1 -1
  56. package/cjs/components/Kebab/Kebab.d.ts +7 -11
  57. package/cjs/components/Kebab/Kebab.js +14 -5
  58. package/cjs/components/Kebab/Kebab.js.map +1 -1
  59. package/cjs/components/Link/Link.d.ts +4 -4
  60. package/cjs/components/Link/Link.js +11 -4
  61. package/cjs/components/Link/Link.js.map +1 -1
  62. package/cjs/components/Loader/Loader.d.ts +7 -4
  63. package/cjs/components/Loader/Loader.js +14 -4
  64. package/cjs/components/Loader/Loader.js.map +1 -1
  65. package/cjs/components/Modal/Modal.d.ts +4 -3
  66. package/cjs/components/Modal/Modal.js +8 -3
  67. package/cjs/components/Modal/Modal.js.map +1 -1
  68. package/cjs/components/Modal/ModalFooter.js +1 -1
  69. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  70. package/cjs/components/Modal/ModalHeader.js +1 -1
  71. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  72. package/cjs/components/Paging/Paging.d.ts +6 -9
  73. package/cjs/components/Paging/Paging.js +15 -5
  74. package/cjs/components/Paging/Paging.js.map +1 -1
  75. package/cjs/components/Paging/PagingDefaultComponent.d.ts +1 -1
  76. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
  77. package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
  78. package/cjs/components/PasswordInput/PasswordInput.js +8 -3
  79. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  80. package/cjs/components/Radio/Radio.d.ts +4 -3
  81. package/cjs/components/Radio/Radio.js +8 -3
  82. package/cjs/components/Radio/Radio.js.map +1 -1
  83. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
  84. package/cjs/components/RadioGroup/RadioGroup.js +4 -2
  85. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  86. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +7 -8
  87. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +4 -4
  88. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
  89. package/cjs/components/ScrollContainer/ScrollContainer.js +12 -6
  90. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  91. package/cjs/components/Select/Select.d.ts +3 -12
  92. package/cjs/components/Select/Select.js +6 -1
  93. package/cjs/components/Select/Select.js.map +1 -1
  94. package/cjs/components/Select/Select.styles.js +4 -4
  95. package/cjs/components/Select/Select.styles.js.map +1 -1
  96. package/cjs/components/SidePage/SidePage.d.ts +5 -6
  97. package/cjs/components/SidePage/SidePage.js +8 -1
  98. package/cjs/components/SidePage/SidePage.js.map +1 -1
  99. package/cjs/components/Spinner/Spinner.d.ts +4 -2
  100. package/cjs/components/Spinner/Spinner.js +9 -3
  101. package/cjs/components/Spinner/Spinner.js.map +1 -1
  102. package/cjs/components/Sticky/Sticky.d.ts +5 -4
  103. package/cjs/components/Sticky/Sticky.js +9 -2
  104. package/cjs/components/Sticky/Sticky.js.map +1 -1
  105. package/cjs/components/Tabs/Tab.d.ts +4 -4
  106. package/cjs/components/Tabs/Tab.js +11 -13
  107. package/cjs/components/Tabs/Tab.js.map +1 -1
  108. package/cjs/components/Tabs/Tabs.d.ts +4 -4
  109. package/cjs/components/Tabs/Tabs.js +12 -3
  110. package/cjs/components/Tabs/Tabs.js.map +1 -1
  111. package/cjs/components/Textarea/Textarea.d.ts +8 -10
  112. package/cjs/components/Textarea/Textarea.js +10 -6
  113. package/cjs/components/Textarea/Textarea.js.map +1 -1
  114. package/cjs/components/Toast/Toast.js.map +1 -1
  115. package/cjs/components/Toggle/Toggle.d.ts +5 -6
  116. package/cjs/components/Toggle/Toggle.js +10 -4
  117. package/cjs/components/Toggle/Toggle.js.map +1 -1
  118. package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
  119. package/cjs/components/TokenInput/TokenInput.js +75 -57
  120. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  121. package/cjs/components/Tooltip/Tooltip.d.ts +13 -19
  122. package/cjs/components/Tooltip/Tooltip.js +27 -24
  123. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  124. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  125. package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
  126. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  127. package/cjs/internal/BGRuler.d.ts +13 -15
  128. package/cjs/internal/BGRuler.js +16 -8
  129. package/cjs/internal/BGRuler.js.map +1 -1
  130. package/cjs/internal/Calendar/Calendar.d.ts +4 -13
  131. package/cjs/internal/Calendar/Calendar.js +10 -5
  132. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  133. package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
  134. package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
  135. package/cjs/internal/Calendar/Month.js +16 -11
  136. package/cjs/internal/Calendar/Month.js.map +1 -1
  137. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  138. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  139. package/cjs/internal/ComponentCombinator.d.ts +6 -8
  140. package/cjs/internal/ComponentCombinator.js +6 -2
  141. package/cjs/internal/ComponentCombinator.js.map +1 -1
  142. package/cjs/internal/ComponentTable.d.ts +5 -6
  143. package/cjs/internal/ComponentTable.js +11 -2
  144. package/cjs/internal/ComponentTable.js.map +1 -1
  145. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  146. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +7 -1
  147. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  148. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  149. package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
  150. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  151. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
  152. package/cjs/internal/DateSelect/DateSelect.js +15 -9
  153. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  154. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  155. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
  156. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  157. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  158. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  159. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
  160. package/cjs/internal/InputLikeText/InputLikeText.js +7 -2
  161. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  162. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
  163. package/cjs/internal/InternalMenu/InternalMenu.js +36 -14
  164. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  165. package/cjs/internal/InternalMenu/InternalMenu.styles.js +2 -1
  166. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  167. package/cjs/internal/MaskedInput/MaskedInput.d.ts +5 -2
  168. package/cjs/internal/MaskedInput/MaskedInput.js +17 -6
  169. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  170. package/cjs/internal/Menu/Menu.d.ts +4 -7
  171. package/cjs/internal/Menu/Menu.js +14 -4
  172. package/cjs/internal/Menu/Menu.js.map +1 -1
  173. package/cjs/internal/Popup/Popup.d.ts +11 -17
  174. package/cjs/internal/Popup/Popup.js +38 -19
  175. package/cjs/internal/Popup/Popup.js.map +1 -1
  176. package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
  177. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  178. package/cjs/internal/Popup/PopupPin.d.ts +1 -1
  179. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  180. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
  181. package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
  182. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  183. package/cjs/internal/RenderLayer/RenderLayer.d.ts +6 -4
  184. package/cjs/internal/RenderLayer/RenderLayer.js +15 -4
  185. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  186. package/cjs/internal/ThemePlayground/VariableValue.d.ts +5 -4
  187. package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
  188. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  189. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
  190. package/cjs/internal/ZIndex/ZIndex.js +10 -3
  191. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  192. package/cjs/internal/themes/DefaultTheme.js +1 -1
  193. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  194. package/cjs/lib/InstanceWithAnchorElement.d.ts +1 -1
  195. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -1
  196. package/cjs/lib/SSRSafe.d.ts +2 -1
  197. package/cjs/lib/SSRSafe.js +9 -1
  198. package/cjs/lib/SSRSafe.js.map +1 -1
  199. package/cjs/lib/createPropsGetter.d.ts +2 -1
  200. package/cjs/lib/createPropsGetter.js +2 -0
  201. package/cjs/lib/createPropsGetter.js.map +1 -1
  202. package/cjs/lib/listenFocusOutside.d.ts +1 -1
  203. package/cjs/lib/listenFocusOutside.js.map +1 -1
  204. package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
  205. package/cjs/lib/rootNode/getRootNode.js +7 -7
  206. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  207. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +7 -7
  208. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  209. package/cjs/typings/event-types.d.ts +2 -2
  210. package/components/Autocomplete/Autocomplete/Autocomplete.js +22 -12
  211. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  212. package/components/Autocomplete/Autocomplete.d.ts +9 -17
  213. package/components/Button/Button/Button.js +11 -5
  214. package/components/Button/Button/Button.js.map +1 -1
  215. package/components/Button/Button.d.ts +4 -5
  216. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  217. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  218. package/components/Button/Button.styles/Button.styles.js +18 -18
  219. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  220. package/components/Center/Center/Center.js +7 -5
  221. package/components/Center/Center/Center.js.map +1 -1
  222. package/components/Center/Center.d.ts +4 -3
  223. package/components/Checkbox/Checkbox.md +48 -0
  224. package/components/ComboBox/ComboBox/ComboBox.js +3 -1
  225. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  226. package/components/ComboBox/ComboBox.d.ts +8 -13
  227. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +28 -18
  228. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  229. package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  230. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js +4 -2
  231. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map +1 -1
  232. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +2 -0
  233. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
  234. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  235. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  236. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +1 -0
  237. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  238. package/components/DateInput/DateInput/DateInput.js +17 -4
  239. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  240. package/components/DateInput/DateInput.d.ts +8 -11
  241. package/components/DatePicker/DatePicker/DatePicker.js +12 -9
  242. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  243. package/components/DatePicker/DatePicker.d.ts +7 -9
  244. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
  245. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  246. package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  247. package/components/FileUploader/FileUploader.md +8 -1
  248. package/components/FxInput/FxInput/FxInput.js +11 -9
  249. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  250. package/components/FxInput/FxInput.d.ts +6 -6
  251. package/components/Gapped/Gapped/Gapped.js +17 -8
  252. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  253. package/components/Gapped/Gapped.d.ts +7 -8
  254. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
  255. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  256. package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  257. package/components/Hint/Hint/Hint.js +30 -18
  258. package/components/Hint/Hint/Hint.js.map +1 -1
  259. package/components/Hint/Hint.d.ts +8 -12
  260. package/components/Hint/Hint.md +14 -0
  261. package/components/Input/Input/Input.js +9 -7
  262. package/components/Input/Input/Input.js.map +1 -1
  263. package/components/Input/Input.d.ts +4 -3
  264. package/components/Kebab/Kebab/Kebab.js +19 -8
  265. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  266. package/components/Kebab/Kebab.d.ts +7 -11
  267. package/components/Link/Link/Link.js +9 -6
  268. package/components/Link/Link/Link.js.map +1 -1
  269. package/components/Link/Link.d.ts +4 -4
  270. package/components/Loader/Loader/Loader.js +22 -17
  271. package/components/Loader/Loader/Loader.js.map +1 -1
  272. package/components/Loader/Loader.d.ts +7 -4
  273. package/components/Modal/Modal/Modal.js +3 -1
  274. package/components/Modal/Modal/Modal.js.map +1 -1
  275. package/components/Modal/Modal.d.ts +4 -3
  276. package/components/Modal/ModalFooter/ModalFooter.js +2 -2
  277. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  278. package/components/Modal/ModalHeader/ModalHeader.js +2 -2
  279. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  280. package/components/Paging/Paging/Paging.js +24 -14
  281. package/components/Paging/Paging/Paging.js.map +1 -1
  282. package/components/Paging/Paging.d.ts +6 -9
  283. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
  284. package/components/Paging/PagingDefaultComponent.d.ts +1 -1
  285. package/components/PasswordInput/PasswordInput/PasswordInput.js +7 -5
  286. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  287. package/components/PasswordInput/PasswordInput.d.ts +4 -3
  288. package/components/Radio/Radio/Radio.js +7 -5
  289. package/components/Radio/Radio/Radio.js.map +1 -1
  290. package/components/Radio/Radio.d.ts +4 -3
  291. package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
  292. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  293. package/components/RadioGroup/RadioGroup.d.ts +2 -4
  294. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +11 -7
  295. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  296. package/components/ScrollContainer/ScrollContainer.d.ts +7 -8
  297. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +4 -4
  298. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -1
  299. package/components/Select/Select/Select.js +4 -3
  300. package/components/Select/Select/Select.js.map +1 -1
  301. package/components/Select/Select.d.ts +3 -12
  302. package/components/Select/Select.styles/Select.styles.js +4 -4
  303. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  304. package/components/SidePage/SidePage/SidePage.js +14 -9
  305. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  306. package/components/SidePage/SidePage.d.ts +5 -6
  307. package/components/Spinner/Spinner/Spinner.js +7 -5
  308. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  309. package/components/Spinner/Spinner.d.ts +4 -2
  310. package/components/Sticky/Sticky/Sticky.js +7 -4
  311. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  312. package/components/Sticky/Sticky.d.ts +5 -4
  313. package/components/Tabs/Tab/Tab.js +15 -7
  314. package/components/Tabs/Tab/Tab.js.map +1 -1
  315. package/components/Tabs/Tab.d.ts +4 -4
  316. package/components/Tabs/Tabs/Tabs.js +10 -8
  317. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  318. package/components/Tabs/Tabs.d.ts +4 -4
  319. package/components/Textarea/Textarea/Textarea.js +19 -14
  320. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  321. package/components/Textarea/Textarea.d.ts +8 -10
  322. package/components/Toast/Toast/Toast.js.map +1 -1
  323. package/components/Toggle/Toggle/Toggle.js +12 -7
  324. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  325. package/components/Toggle/Toggle.d.ts +5 -6
  326. package/components/TokenInput/TokenInput/TokenInput.js +107 -77
  327. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  328. package/components/TokenInput/TokenInput.d.ts +19 -16
  329. package/components/Tooltip/Tooltip/Tooltip.js +60 -47
  330. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  331. package/components/Tooltip/Tooltip.d.ts +13 -19
  332. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
  333. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  334. package/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  335. package/internal/BGRuler/BGRuler.js +11 -6
  336. package/internal/BGRuler/BGRuler.js.map +1 -1
  337. package/internal/BGRuler.d.ts +13 -15
  338. package/internal/Calendar/Calendar/Calendar.js +11 -5
  339. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  340. package/internal/Calendar/Calendar.d.ts +4 -13
  341. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  342. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  343. package/internal/Calendar/Month/Month.js +20 -11
  344. package/internal/Calendar/Month/Month.js.map +1 -1
  345. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  346. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  347. package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
  348. package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
  349. package/internal/ComponentCombinator.d.ts +6 -8
  350. package/internal/ComponentTable/ComponentTable.js +16 -4
  351. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  352. package/internal/ComponentTable.d.ts +5 -6
  353. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
  354. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  355. package/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  356. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
  357. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  358. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  359. package/internal/DateSelect/DateSelect/DateSelect.js +14 -11
  360. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  361. package/internal/DateSelect/DateSelect.d.ts +4 -6
  362. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
  363. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  364. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  365. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  366. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  367. package/internal/InputLikeText/InputLikeText/InputLikeText.js +4 -2
  368. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  369. package/internal/InputLikeText/InputLikeText.d.ts +4 -3
  370. package/internal/InternalMenu/InternalMenu/InternalMenu.js +37 -16
  371. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  372. package/internal/InternalMenu/InternalMenu.d.ts +3 -9
  373. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +1 -1
  374. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  375. package/internal/MaskedInput/MaskedInput/MaskedInput.js +12 -6
  376. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  377. package/internal/MaskedInput/MaskedInput.d.ts +5 -2
  378. package/internal/Menu/Menu/Menu.js +16 -4
  379. package/internal/Menu/Menu/Menu.js.map +1 -1
  380. package/internal/Menu/Menu.d.ts +4 -7
  381. package/internal/Popup/Popup/Popup.js +52 -35
  382. package/internal/Popup/Popup/Popup.js.map +1 -1
  383. package/internal/Popup/Popup.d.ts +11 -17
  384. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  385. package/internal/Popup/PopupHelper.d.ts +1 -1
  386. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  387. package/internal/Popup/PopupPin.d.ts +1 -1
  388. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
  389. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  390. package/internal/PopupMenu/PopupMenu.d.ts +8 -11
  391. package/internal/RenderLayer/RenderLayer/RenderLayer.js +18 -11
  392. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  393. package/internal/RenderLayer/RenderLayer.d.ts +6 -4
  394. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
  395. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  396. package/internal/ThemePlayground/VariableValue.d.ts +5 -4
  397. package/internal/ZIndex/ZIndex/ZIndex.js +15 -13
  398. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  399. package/internal/ZIndex/ZIndex.d.ts +7 -11
  400. package/internal/themes/DefaultTheme/DefaultTheme.js +6 -6
  401. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  402. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -1
  403. package/lib/InstanceWithAnchorElement.d.ts +1 -1
  404. package/lib/SSRSafe/SSRSafe.js +7 -0
  405. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  406. package/lib/SSRSafe.d.ts +2 -1
  407. package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
  408. package/lib/createPropsGetter.d.ts +2 -1
  409. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  410. package/lib/listenFocusOutside.d.ts +1 -1
  411. package/lib/rootNode/getRootNode/getRootNode.js +8 -8
  412. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  413. package/lib/rootNode/getRootNode.d.ts +3 -3
  414. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  415. package/lib/rootNode/rootNodeDecorator.d.ts +7 -7
  416. package/package.json +2 -2
  417. package/typings/event-types.d.ts +2 -2
@@ -1,4 +1,4 @@
1
- "use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
1
+ "use strict";exports.__esModule = true;exports.globalThat = void 0;exports.isElement = isElement;exports.isHTMLElement = isHTMLElement;exports.isNode = isNode;exports.safePropTypesInstanceOf = safePropTypesInstanceOf;var PropTypes = _interopRequireWildcard(require("prop-types"));
2
2
 
3
3
  var _client = require("./client");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
4
4
 
@@ -12,6 +12,14 @@ getExpectedClass)
12
12
  return PropTypes.any;
13
13
  }
14
14
 
15
+ function isElement(el) {
16
+ if (_client.isBrowser) {
17
+ return el instanceof Element;
18
+ }
19
+
20
+ return false;
21
+ }
22
+
15
23
  function isHTMLElement(el) {
16
24
  if (_client.isBrowser) {
17
25
  return el instanceof HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","isHTMLElement","el","HTMLElement","isNode","node","Node","globalThat","globalThis","global","window","Function"],"mappings":"2LAAA;;AAEA,kC;;AAEO,SAASA,uBAAT;AACLC,gBADK;AAEqB;AAC1B,MAAIC,iBAAJ,EAAe;AACb,WAAOC,SAAS,CAACC,UAAV,CAAqBH,gBAAgB,EAArC,CAAP;AACD;;AAED,SAAOE,SAAS,CAACE,GAAjB;AACD;;AAEM,SAASC,aAAT,CAAuBC,EAAvB,EAAmD;AACxD,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYC,WAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,MAAT,CAAgBC,IAAhB,EAA6C;AAClD,MAAIR,iBAAJ,EAAe;AACb,WAAOQ,IAAI,YAAYC,IAAvB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,IAAMC,UAA6B;AACvC,OAAOC,UAAP,KAAsB,QAAtB,IAAkCA,UAAnC;AACC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAD/B;AAEC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAF/B;AAGAC,QAAQ,CAAC,aAAD,CAAR,EAJK,C","sourcesContent":["import * as PropTypes from 'prop-types';\n\nimport { isBrowser } from './client';\n\nexport function safePropTypesInstanceOf<T>(\n getExpectedClass: () => new (...args: any[]) => T,\n): PropTypes.Requireable<T> {\n if (isBrowser) {\n return PropTypes.instanceOf(getExpectedClass());\n }\n\n return PropTypes.any;\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (isBrowser) {\n return el instanceof HTMLElement;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n\nexport const globalThat: typeof globalThis =\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n (typeof window === 'object' && window) ||\n Function('return this')();\n"]}
1
+ {"version":3,"sources":["SSRSafe.ts"],"names":["safePropTypesInstanceOf","getExpectedClass","isBrowser","PropTypes","instanceOf","any","isElement","el","Element","isHTMLElement","HTMLElement","isNode","node","Node","globalThat","globalThis","global","window","Function"],"mappings":"yNAAA;;AAEA,kC;;AAEO,SAASA,uBAAT;AACLC,gBADK;AAEqB;AAC1B,MAAIC,iBAAJ,EAAe;AACb,WAAOC,SAAS,CAACC,UAAV,CAAqBH,gBAAgB,EAArC,CAAP;AACD;;AAED,SAAOE,SAAS,CAACE,GAAjB;AACD;;AAEM,SAASC,SAAT,CAAmBC,EAAnB,EAA+C;AACpD,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYC,OAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,aAAT,CAAuBF,EAAvB,EAAuD;AAC5D,MAAIL,iBAAJ,EAAe;AACb,WAAOK,EAAE,YAAYG,WAArB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,SAASC,MAAT,CAAgBC,IAAhB,EAA6C;AAClD,MAAIV,iBAAJ,EAAe;AACb,WAAOU,IAAI,YAAYC,IAAvB;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,IAAMC,UAA6B;AACvC,OAAOC,UAAP,KAAsB,QAAtB,IAAkCA,UAAnC;AACC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAD/B;AAEC,OAAOC,MAAP,KAAkB,QAAlB,IAA8BA,MAF/B;AAGAC,QAAQ,CAAC,aAAD,CAAR,EAJK,C","sourcesContent":["import * as PropTypes from 'prop-types';\n\nimport { isBrowser } from './client';\n\nexport function safePropTypesInstanceOf<T>(\n getExpectedClass: () => new (...args: any[]) => T,\n): PropTypes.Requireable<T> {\n if (isBrowser) {\n return PropTypes.instanceOf(getExpectedClass());\n }\n\n return PropTypes.any;\n}\n\nexport function isElement(el: unknown): el is Element {\n if (isBrowser) {\n return el instanceof Element;\n }\n\n return false;\n}\n\nexport function isHTMLElement(el: unknown): el is HTMLElement {\n if (isBrowser) {\n return el instanceof HTMLElement;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\n}\n\nexport const globalThat: typeof globalThis =\n (typeof globalThis === 'object' && globalThis) ||\n (typeof global === 'object' && global) ||\n (typeof window === 'object' && window) ||\n Function('return this')();\n"]}
@@ -1,2 +1,3 @@
1
1
  import React from 'react';
2
- export declare function createPropsGetter<DP extends {}>(defaultProps: DP): <P, T extends React.Component<P, {}, any>>(this: T) => DP & P;
2
+ export declare type DefaultizedProps<P, DP> = P & DP;
3
+ export declare function createPropsGetter<DP extends {}>(defaultProps: DP): <P, T extends React.Component<P, {}, any>>(this: T) => DefaultizedProps<T["props"], DP>;
@@ -1,5 +1,7 @@
1
1
  "use strict";exports.__esModule = true;exports.createPropsGetter = createPropsGetter;
2
2
 
3
+
4
+
3
5
  function createPropsGetter(defaultProps) {
4
6
  return function () {
5
7
  return this.props;
@@ -1 +1 @@
1
- {"version":3,"sources":["createPropsGetter.ts"],"names":["createPropsGetter","defaultProps","props"],"mappings":";;AAEO,SAASA,iBAAT,CAA0CC,YAA1C,EAA4D;AACjE,SAAO,YAA4D;AACjE,WAAO,KAAKC,KAAZ;AACD,GAFD;AAGD","sourcesContent":["import React from 'react';\n\nexport function createPropsGetter<DP extends {}>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T): DP & P {\n return this.props as any;\n };\n}\n"]}
1
+ {"version":3,"sources":["createPropsGetter.ts"],"names":["createPropsGetter","defaultProps","props"],"mappings":";;;;AAIO,SAASA,iBAAT,CAA0CC,YAA1C,EAA4D;AACjE,SAAO,YAAoD;AACzD,WAAO,KAAKC,KAAZ;AACD,GAFD;AAGD","sourcesContent":["import React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\nexport function createPropsGetter<DP extends {}>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T) {\n return this.props as DefaultizedProps<T['props'], DP>;\n };\n}\n"]}
@@ -3,6 +3,6 @@ export declare function containsTargetOrRenderContainer(target: Element): (eleme
3
3
  * Searches RenderContainer placed in "rootNode" for "node"
4
4
  */
5
5
  export declare function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null;
6
- export declare function listen(elements: HTMLElement[] | (() => HTMLElement[]), callback: (event: Event) => void): {
6
+ export declare function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void): {
7
7
  remove(): void;
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\n\nimport { isBrowser, isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: HTMLElement[] | (() => HTMLElement[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n document.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (isBrowser) {\n if (document.readyState === 'complete') {\n addHandleEvent();\n } else {\n window.addEventListener('load', addHandleEvent);\n }\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: HTMLElement = (event.target || event.srcElement) as HTMLElement;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === document.body ||\n currentNode === document.documentElement ||\n !(currentNode instanceof Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = document.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: HTMLElement[] | (() => HTMLElement[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["listenFocusOutside.ts"],"names":["handlers","addHandleEvent","document","body","addEventListener","isFirefox","handleNativeFocus","leading","trailing","capture","isBrowser","readyState","window","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","ReactDOM","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"gRAAA;AACA;;AAEA;;;;;;;AAOA,IAAMA,QAAoC,GAAG,EAA7C;;AAEA,SAASC,cAAT,GAA0B;AACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,QAAQ,CAACC,IAAT,CAAcC,gBAAd;AACEC,sBAAY,OAAZ,GAAuB,SADzB;AAEEA,sBAAY,qBAASC,iBAAT,EAA4B,CAA5B,EAA+B,EAAEC,OAAO,EAAE,IAAX,EAAiBC,QAAQ,EAAE,KAA3B,EAA/B,CAAZ,GAAiFF,iBAFnF;AAGE,IAAEG,OAAO,EAAE,IAAX,EAHF;;AAKD;;AAED,IAAIC,iBAAJ,EAAe;AACb,MAAIR,QAAQ,CAACS,UAAT,KAAwB,UAA5B,EAAwC;AACtCV,IAAAA,cAAc;AACf,GAFD,MAEO;AACLW,IAAAA,MAAM,CAACR,gBAAP,CAAwB,MAAxB,EAAgCH,cAAhC;AACD;AACF;;AAED,SAASK,iBAAT,CAA2BO,KAA3B,EAA2C;AACzC;AACA,MAAMC,MAAe,GAAID,KAAK,CAACC,MAAN,IAAgBD,KAAK,CAACE,UAA/C;;AAEAf,EAAAA,QAAQ,CAACgB,OAAT,CAAiB,UAACC,OAAD,EAAa;AAC5B,QAAIC,QAAQ,GAAGD,OAAO,CAACC,QAAvB;AACA,QAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClCA,MAAAA,QAAQ,GAAGA,QAAQ,EAAnB;AACD;;AAED,QAAIA,QAAQ,CAACC,IAAT,CAAcC,+BAA+B,CAACN,MAAD,CAA7C,CAAJ,EAA4D;AAC1D;AACD;AACDO,sBAASC,uBAAT,CAAiC,oBAAML,OAAO,CAACM,QAAR,CAAiBV,KAAjB,CAAN,EAAjC;AACD,GAVD;AAWD;;AAEM,SAASO,+BAAT,CAAyCN,MAAzC,EAA0D;AAC/D,SAAO,UAACU,OAAD,EAAsB;AAC3B,QAAI,CAACA,OAAL,EAAc;AACZ,aAAO,KAAP;AACD;AACD,QAAIA,OAAO,CAACC,QAAR,CAAiBX,MAAjB,CAAJ,EAA8B;AAC5B,aAAO,IAAP;AACD;AACD,QAAMY,SAAS,GAAGC,mBAAmB,CAACb,MAAD,EAASU,OAAT,CAArC;AACA,WAAO,CAAC,CAACE,SAAF,IAAeF,OAAO,CAACC,QAAR,CAAiBC,SAAjB,CAAtB;AACD,GATD;AAUD;;AAED;AACA;AACA;AACO,SAASC,mBAAT,CAA6BC,IAA7B,EAA4CC,QAA5C,EAA+DH,SAA/D,EAAoG;AACzG,MAAMI,WAAW,GAAGF,IAAI,CAACG,UAAzB;AACA;AACE,GAACD,WAAD;AACAF,EAAAA,IAAI,KAAKC,QADT;AAEAC,EAAAA,WAAW,KAAKD,QAFhB;AAGAC,EAAAA,WAAW,KAAK5B,QAAQ,CAACC,IAHzB;AAIA2B,EAAAA,WAAW,KAAK5B,QAAQ,CAAC8B,eAJzB;AAKA,IAAEF,WAAW,YAAYG,OAAzB,CANF;AAOE;AACA,WAAOP,SAAS,GAAGA,SAAH,GAAe,IAA/B;AACD;;AAED,MAAMQ,cAAc,GAAGJ,WAAW,CAACK,YAAZ,CAAyB,4BAAzB,CAAvB;AACA,MAAID,cAAJ,EAAoB;AAClB,QAAME,QAAQ,GAAGlC,QAAQ,CAACmC,aAAT,mCAAsDH,cAAtD,SAAjB;;AAEA,QAAI,CAACE,QAAL,EAAe;AACb,YAAME,KAAK,kDAAX;AACD;;AAED,WAAOX,mBAAmB,CAACS,QAAD,EAAWP,QAAX,EAAqBO,QAArB,CAA1B;AACD;;AAED,SAAOT,mBAAmB,CAACG,WAAD,EAAcD,QAAd,EAAwBH,SAAxB,CAA1B;AACD;;AAEM,SAASa,MAAT,CAAgBrB,QAAhB,EAAyDK,QAAzD,EAA2F;AAChG,MAAMN,OAAO,GAAG;AACdC,IAAAA,QAAQ,EAARA,QADc;AAEdK,IAAAA,QAAQ,EAARA,QAFc,EAAhB;;AAIAvB,EAAAA,QAAQ,CAACwC,IAAT,CAAcvB,OAAd;;AAEA,SAAO;AACLwB,IAAAA,MADK,oBACI;AACP,UAAMC,KAAK,GAAG1C,QAAQ,CAAC2C,OAAT,CAAiB1B,OAAjB,CAAd;AACA,UAAIyB,KAAK,GAAG,CAAC,CAAb,EAAgB;AACd1C,QAAAA,QAAQ,CAAC4C,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB;AACD;AACF,KANI,EAAP;;AAQD","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\n\nimport { isBrowser, isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n document.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (isBrowser) {\n if (document.readyState === 'complete') {\n addHandleEvent();\n } else {\n window.addEventListener('load', addHandleEvent);\n }\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === document.body ||\n currentNode === document.documentElement ||\n !(currentNode instanceof Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = document.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { Nullable } from '../../typings/utility-types';
3
3
  /**
4
- * Extracts component's root HTMLElement out of it's instance
4
+ * Extracts component's root `Element` out of it's instance
5
5
  * following the "StrictMode support convention" (@see README.md#strictmode, #2518).
6
6
  *
7
7
  * Replaces findDOMNode but falls back to it if "convention" is not respected.
8
8
  *
9
9
  * @param instance Component's instance provided by React.Ref or `this` inside class-components.
10
- * @returns Component's root HTMLElement or null
10
+ * @returns Component's root `Element` or null
11
11
  */
12
- export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<HTMLElement>;
12
+ export declare const getRootNode: (instance: Nullable<React.ReactInstance>) => Nullable<Element>;
@@ -9,13 +9,13 @@ var _client = require("../client");
9
9
  var _rootNodeDecorator = require("./rootNodeDecorator"); /* eslint-disable react/no-find-dom-node */
10
10
 
11
11
  /**
12
- * Extracts component's root HTMLElement out of it's instance
12
+ * Extracts component's root `Element` out of it's instance
13
13
  * following the "StrictMode support convention" (@see README.md#strictmode, #2518).
14
14
  *
15
15
  * Replaces findDOMNode but falls back to it if "convention" is not respected.
16
16
  *
17
17
  * @param instance Component's instance provided by React.Ref or `this` inside class-components.
18
- * @returns Component's root HTMLElement or null
18
+ * @returns Component's root `Element` or null
19
19
  */
20
20
 
21
21
  var getRootNode = function getRootNode(instance) {
@@ -25,8 +25,8 @@ var getRootNode = function getRootNode(instance) {
25
25
  return null;
26
26
  }
27
27
 
28
- if ((0, _SSRSafe.isHTMLElement)(instance)) {
29
- // instance can be a HTMLElement already if comming
28
+ if ((0, _SSRSafe.isElement)(instance)) {
29
+ // instance can be a `Element` already if comming
30
30
  // from Refs of intrinsic elements (<div />, <button />, etc.)
31
31
  return instance;
32
32
  }
@@ -36,7 +36,7 @@ var getRootNode = function getRootNode(instance) {
36
36
  if ((0, _rootNodeDecorator.isInstanceWithRootNode)(instance)) {
37
37
  // it happened to be that native Node interface also has
38
38
  // the "getRootNode" method, but we can ignore it here
39
- // because we'd already checked the instance on being an HTMLElement
39
+ // because we'd already checked the instance on being an `Element`
40
40
  // which is a subclass of Node, so, just fixing types here
41
41
  if (!(0, _SSRSafe.isNode)(instance)) {
42
42
  rootNode = instance.getRootNode();
@@ -44,7 +44,7 @@ var getRootNode = function getRootNode(instance) {
44
44
  }
45
45
 
46
46
  if (rootNode !== undefined) {
47
- // at this point, it is rather HTMLElement (what we are looking for)
47
+ // at this point, it is rather `Element` (what we are looking for)
48
48
  // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it
49
49
  return rootNode;
50
50
  }
@@ -55,5 +55,5 @@ var getRootNode = function getRootNode(instance) {
55
55
  rootNode = (0, _reactDom.findDOMNode)(instance);
56
56
 
57
57
  // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it
58
- return (0, _SSRSafe.isHTMLElement)(rootNode) ? rootNode : null;
58
+ return (0, _SSRSafe.isElement)(rootNode) ? rootNode : null;
59
59
  };exports.getRootNode = getRootNode;
@@ -1 +1 @@
1
- {"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAoE;AAC7F,MAAI,CAACC,iBAAD,IAAc,CAACD,QAAnB,EAA6B;AAC3B;AACA;AACA,WAAO,IAAP;AACD;;AAED,MAAI,4BAAcA,QAAd,CAAJ,EAA6B;AAC3B;AACA;AACA,WAAOA,QAAP;AACD;;AAED,MAAIE,QAAJ;;AAEA,MAAI,+CAAuBF,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA;AACA,QAAI,CAAC,qBAAOA,QAAP,CAAL,EAAuB;AACrBE,MAAAA,QAAQ,GAAGF,QAAQ,CAACD,WAAT,EAAX;AACD;AACF;;AAED,MAAIG,QAAQ,KAAKC,SAAjB,EAA4B;AAC1B;AACA;AACA,WAAOD,QAAP;AACD;;AAED;AACA;AACA;AACAA,EAAAA,QAAQ,GAAG,2BAAYF,QAAZ,CAAX;;AAEA;AACA,SAAO,4BAAcE,QAAd,IAA0BA,QAA1B,GAAqC,IAA5C;AACD,CAtCM,C","sourcesContent":["/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isHTMLElement, isNode } from '../SSRSafe';\nimport { canUseDOM } from '../client';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root HTMLElement out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root HTMLElement or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<HTMLElement> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isHTMLElement(instance)) {\n // instance can be a HTMLElement already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an HTMLElement\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather HTMLElement (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isHTMLElement(rootNode) ? rootNode : null;\n};\n"]}
1
+ {"version":3,"sources":["getRootNode.ts"],"names":["getRootNode","instance","canUseDOM","rootNode","undefined"],"mappings":";AACA;;;;AAIA;AACA;;AAEA,wD,CARA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAgE;AACzF,MAAI,CAACC,iBAAD,IAAc,CAACD,QAAnB,EAA6B;AAC3B;AACA;AACA,WAAO,IAAP;AACD;;AAED,MAAI,wBAAUA,QAAV,CAAJ,EAAyB;AACvB;AACA;AACA,WAAOA,QAAP;AACD;;AAED,MAAIE,QAAJ;;AAEA,MAAI,+CAAuBF,QAAvB,CAAJ,EAAsC;AACpC;AACA;AACA;AACA;AACA,QAAI,CAAC,qBAAOA,QAAP,CAAL,EAAuB;AACrBE,MAAAA,QAAQ,GAAGF,QAAQ,CAACD,WAAT,EAAX;AACD;AACF;;AAED,MAAIG,QAAQ,KAAKC,SAAjB,EAA4B;AAC1B;AACA;AACA,WAAOD,QAAP;AACD;;AAED;AACA;AACA;AACAA,EAAAA,QAAQ,GAAG,2BAAYF,QAAZ,CAAX;;AAEA;AACA,SAAO,wBAAUE,QAAV,IAAsBA,QAAtB,GAAiC,IAAxC;AACD,CAtCM,C","sourcesContent":["/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isElement, isNode } from '../SSRSafe';\nimport { canUseDOM } from '../client';\n\nimport { isInstanceWithRootNode } from './rootNodeDecorator';\n\n/**\n * Extracts component's root `Element` out of it's instance\n * following the \"StrictMode support convention\" (@see README.md#strictmode, #2518).\n *\n * Replaces findDOMNode but falls back to it if \"convention\" is not respected.\n *\n * @param instance Component's instance provided by React.Ref or `this` inside class-components.\n * @returns Component's root `Element` or null\n */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convinient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be a `Element` already if comming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an `Element`\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // at this point, it is rather `Element` (what we are looking for)\n // or null (which is also OK, e.g. Popup/Tooltip/Hint before opening), so, just return it\n return rootNode;\n }\n\n // node is undefined, which means that the instance's root node getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected (by the component itself or its children),\n // so, we have to fall back to the deprecated findDOMNode, which always works but breaks StrictMode\n rootNode = findDOMNode(instance);\n\n // the findDOMNode can also return Text, but we are only intrested in HTMLElements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n"]}
@@ -6,22 +6,22 @@ export declare type TRootNodeSubscription = {
6
6
  remove: () => void;
7
7
  };
8
8
  export interface InstanceWithRootNode {
9
- getRootNode: () => Nullable<HTMLElement>;
10
- addRootNodeChangeListener?: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;
9
+ getRootNode: () => Nullable<Element>;
10
+ addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
11
11
  }
12
12
  interface ComponentWithDefaultRootNode {
13
- defaultRootNode?: HTMLElement | null;
13
+ defaultRootNode?: Element | null;
14
14
  }
15
15
  interface DecoratableClassComponent extends ComponentWithDefaultRootNode {
16
16
  new (...args: any[]): React.Component;
17
17
  }
18
18
  export declare function rootNode<T extends DecoratableClassComponent>(Component: T): {
19
19
  new (...args: any[]): {
20
- rootNode: Nullable<HTMLElement>;
20
+ rootNode: Nullable<Element>;
21
21
  rootNodeEmitter: EventEmitter<string | symbol, any>;
22
22
  setRootNode: (instance: Nullable<React.ReactInstance>) => void;
23
- getRootNode: () => Nullable<HTMLElement>;
24
- addRootNodeChangeListener: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;
23
+ getRootNode: () => Nullable<Element>;
24
+ addRootNodeChangeListener: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
25
25
  context: any;
26
26
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
27
27
  forceUpdate(callback?: (() => void) | undefined): void;
@@ -46,7 +46,7 @@ export declare function rootNode<T extends DecoratableClassComponent>(Component:
46
46
  componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
47
47
  UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
48
48
  };
49
- defaultRootNode?: HTMLElement | null | undefined;
49
+ defaultRootNode?: Element | null | undefined;
50
50
  } & T;
51
51
  export declare const isInstanceWithRootNode: (instance: unknown) => instance is InstanceWithRootNode;
52
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFMC,SAAS,CAACC,eAEhB,OAD5BC,eAC4B,GADV,IAAIC,qBAAJ,EACU;;;AAI5BC,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAMN,SAAQ,GAAG,8BAAYM,QAAZ,CAAjB;AACA,YAAIN,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBI,IAArB,CAA0B,QAA1B,EAAoCP,SAApC;AACD;AACF,OAVkC;;AAY5BQ,MAAAA,WAZ4B,GAYd,YAA6B;AAChD,eAAO,MAAKR,QAAZ;AACD,OAdkC;;AAgB5BS,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAA4E;AAC7G,cAAKP,eAAL,CAAqBQ,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKT,eAAL,CAAqBU,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBT,SAAjB,CAAd;;;AA6BA,MAAMa,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgChB,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACc,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBlB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEmB,KAAK,EAAElB,SAAS,CAACmB,IAAnB,EAAxC;AACD;;AAED,SAAOpB,QAAP;AACD;;AAEM,IAAMqB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACf,QAAD,EAAyD;AAC7F,SAAOgB,OAAO,CAAChB,QAAD,CAAP,IAAqBS,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCnB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM,C","sourcesContent":["/* eslint-disable react/display-name */\nimport React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<HTMLElement>;\n addRootNodeChangeListener?: (callback: (node: Nullable<HTMLElement>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: HTMLElement | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<HTMLElement> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<HTMLElement> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<HTMLElement>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
1
+ {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["rootNode","Component","defaultRootNode","rootNodeEmitter","EventEmitter","setRootNode","instance","emit","getRootNode","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";;AAEA;;;;AAIA,4C,CANA;;;;;;;;;;;;;;;;;;;;;AA2BO,SAASA,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFEC,SAAS,CAACC,eAEZ,OAD5BC,eAC4B,GADV,IAAIC,qBAAJ,EACU;;;AAI5BC,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAMN,SAAQ,GAAG,8BAAYM,QAAZ,CAAjB;AACA,YAAIN,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBI,IAArB,CAA0B,QAA1B,EAAoCP,SAApC;AACD;AACF,OAVkC;;AAY5BQ,MAAAA,WAZ4B,GAYd,YAAyB;AAC5C,eAAO,MAAKR,QAAZ;AACD,OAdkC;;AAgB5BS,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAAwE;AACzG,cAAKP,eAAL,CAAqBQ,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKT,eAAL,CAAqBU,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBT,SAAjB,CAAd;;;AA6BA,MAAMa,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgChB,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACc,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBlB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEmB,KAAK,EAAElB,SAAS,CAACmB,IAAnB,EAAxC;AACD;;AAED,SAAOpB,QAAP;AACD;;AAEM,IAAMqB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACf,QAAD,EAAyD;AAC7F,SAAOgB,OAAO,CAAChB,QAAD,CAAP,IAAqBS,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCnB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM,C","sourcesContent":["/* eslint-disable react/display-name */\nimport React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<Element>;\n addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: Element | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<Element> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<Element> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<Element>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
 
3
- export type MouseEventType<T extends HTMLElement = HTMLElement> = React.MouseEvent<T> | MouseEvent;
4
- export type FocusEventType<T extends HTMLElement = HTMLElement> = React.FocusEvent<T> | FocusEvent;
3
+ export type MouseEventType<T extends Element = Element> = React.MouseEvent<T> | MouseEvent;
4
+ export type FocusEventType<T extends Element = Element> = React.FocusEvent<T> | FocusEvent;
@@ -43,13 +43,13 @@ function renderItem(item) {
43
43
  export var AutocompleteDataTids = {
44
44
  root: 'Autocomplete__root'
45
45
  };
46
+ export
46
47
  /**
47
- * Стандартный инпут с подсказками.
48
- *
49
- * Все свойства передаются во внутренний *Input*.
50
- */
51
-
52
- export var Autocomplete = responsiveLayout(_class = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
48
+ * Стандартный инпут с подсказками.
49
+ *
50
+ * Все свойства передаются во внутренний *Input*.
51
+ */
52
+ var Autocomplete = responsiveLayout(_class = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
53
53
  _inheritsLoose(Autocomplete, _React$Component);
54
54
 
55
55
  function Autocomplete() {
@@ -326,12 +326,22 @@ export var Autocomplete = responsiveLayout(_class = rootNode(_class = (_temp = _
326
326
 
327
327
  _proto.renderMenu = function renderMenu() {
328
328
  var items = this.state.items;
329
+
330
+ var _this$getProps = this.getProps(),
331
+ menuMaxHeight = _this$getProps.menuMaxHeight,
332
+ hasShadow = _this$getProps.hasShadow,
333
+ menuWidth = _this$getProps.menuWidth,
334
+ width = _this$getProps.width,
335
+ preventWindowScroll = _this$getProps.preventWindowScroll,
336
+ menuAlign = _this$getProps.menuAlign,
337
+ disablePortal = _this$getProps.disablePortal;
338
+
329
339
  var menuProps = {
330
340
  ref: this.refMenu,
331
- maxHeight: this.props.menuMaxHeight,
332
- hasShadow: this.props.hasShadow,
333
- width: this.props.menuWidth || this.props.width && getDOMRect(this.rootSpan).width,
334
- preventWindowScroll: this.props.preventWindowScroll
341
+ maxHeight: menuMaxHeight,
342
+ hasShadow: hasShadow,
343
+ width: menuWidth || width && getDOMRect(this.rootSpan).width,
344
+ preventWindowScroll: preventWindowScroll
335
345
  };
336
346
 
337
347
  if (!items || items.length === 0) {
@@ -341,8 +351,8 @@ export var Autocomplete = responsiveLayout(_class = rootNode(_class = (_temp = _
341
351
  return /*#__PURE__*/React.createElement(DropdownContainer, {
342
352
  offsetY: 1,
343
353
  getParent: this.getAnchor,
344
- align: this.props.menuAlign,
345
- disablePortal: this.props.disablePortal
354
+ align: menuAlign,
355
+ disablePortal: disablePortal
346
356
  }, /*#__PURE__*/React.createElement(Menu, menuProps, this.getItems()));
347
357
  };
348
358
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Autocomplete.tsx"],"names":["React","PropTypes","ThemeContext","isKeyArrowDown","isKeyArrowUp","isKeyEnter","isKeyEscape","Input","DropdownContainer","Menu","MenuItem","RenderLayer","createPropsGetter","fixClickFocusIE","CommonWrapper","MobilePopup","responsiveLayout","getRootNode","rootNode","getDOMRect","styles","match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","root","Autocomplete","state","selected","focused","isMobileOpened","opened","input","requestId","getProps","defaultProps","renderMain","props","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","theme","inputWidth","mobileMenuHeaderText","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","refRootSpan","renderMobileMenu","renderMenu","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","handleCloseMobile","refMobilePopup","refMenu","mobilePopup","close","length","getItems","map","i","handleMenuItemClick","fireChange","setState","e","key","event","blur","preventDefault","menu","up","down","enter","getAnchor","el","span","rootSpan","focus","componentDidUpdate","prevProps","updateItems","render","setRootNode","menuProps","maxHeight","menuWidth","handleItemClick","index","button","choose","trim","promise","expectingId","then","Component","__KONTUR_REACT_UI__","propTypes","func","oneOfType","array","size"],"mappings":"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","sourcesContent":["import React, { KeyboardEvent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { Input, InputProps } from '../Input';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Autocomplete.styles';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Функция отрисовки элемента меню */\n renderItem: (item: string) => React.ReactNode;\n /** Промис, резолвящий элементы меню */\n source?: string[] | ((patter: string) => Promise<string[]>);\n /** Отключает использование портала */\n disablePortal: boolean;\n /** Отрисовка тени у выпадающего меню */\n hasShadow: boolean;\n /** Выравнивание выпадающего меню */\n menuAlign: 'left' | 'right';\n /** Максимальная высота меню */\n menuMaxHeight: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Отключить скролл окна, когда меню открыто */\n preventWindowScroll: boolean;\n /** Вызывается при изменении `value` */\n onValueChange: (value: string) => void;\n /** onBlur */\n onBlur?: () => void;\n /** Размер инпута */\n size: InputProps['size'];\n /** value */\n value: string;\n /**\n * Текст заголовка выпадающего меню в мобильной версии\n */\n mobileMenuHeaderText?: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n} as const;\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\n@responsiveLayout\n@rootNode\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n\n public static propTypes = {\n /**\n * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент\n * — *item*.\n */\n renderItem: PropTypes.func,\n\n /**\n * Если передан массив, то совпадения ищутся по этому массиву.\n *\n * Если передается функция, то она должна возвращать thenable, который\n * резолвится уже отфильтрованным массивом. Возвращенный thenable может\n * иметь метод cancel, который будет вызван при отмене поиска (пользователь\n * изменил строку поиска, автокомплит потерял фокус).\n * ```\n * function(pattern) {\n * return service.findAll(pattern);\n * }\n * ```\n */\n source: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n };\n\n public static defaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n menuAlign: 'left',\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={styles.root(this.theme)}\n style={{ width }}\n ref={this.refRootSpan}\n >\n <Input {...inputProps} />\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: this.props.menuMaxHeight,\n hasShadow: this.props.hasShadow,\n width: this.props.menuWidth || (this.props.width && getDOMRect(this.rootSpan).width),\n preventWindowScroll: this.props.preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer\n offsetY={1}\n getParent={this.getAnchor}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </DropdownContainer>\n );\n }\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: 'Начните вводить',\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n headerChildComponent={<Input {...inputProps} />}\n caption={this.props.mobileMenuHeaderText}\n useFullHeight\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n this.blur();\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
1
+ {"version":3,"sources":["Autocomplete.tsx"],"names":["React","PropTypes","ThemeContext","isKeyArrowDown","isKeyArrowUp","isKeyEnter","isKeyEscape","Input","DropdownContainer","Menu","MenuItem","RenderLayer","createPropsGetter","fixClickFocusIE","CommonWrapper","MobilePopup","responsiveLayout","getRootNode","rootNode","getDOMRect","styles","match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","root","Autocomplete","state","selected","focused","isMobileOpened","opened","input","requestId","getProps","defaultProps","renderMain","props","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","theme","inputWidth","mobileMenuHeaderText","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","refRootSpan","renderMobileMenu","renderMenu","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","handleCloseMobile","refMobilePopup","refMenu","mobilePopup","close","length","getItems","map","i","handleMenuItemClick","fireChange","setState","e","key","event","blur","preventDefault","menu","up","down","enter","getAnchor","el","span","rootSpan","focus","componentDidUpdate","prevProps","updateItems","render","setRootNode","menuWidth","menuProps","maxHeight","handleItemClick","index","button","choose","trim","promise","expectingId","then","Component","__KONTUR_REACT_UI__","propTypes","func","oneOfType","array","size"],"mappings":"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","sourcesContent":["import React, { KeyboardEvent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { Input, InputProps } from '../Input';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Autocomplete.styles';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Функция отрисовки элемента меню */\n renderItem?: (item: string) => React.ReactNode;\n /** Промис, резолвящий элементы меню */\n source?: string[] | ((patter: string) => Promise<string[]>);\n /** Отключает использование портала */\n disablePortal?: boolean;\n /** Отрисовка тени у выпадающего меню */\n hasShadow?: boolean;\n /** Выравнивание выпадающего меню */\n menuAlign?: 'left' | 'right';\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Отключить скролл окна, когда меню открыто */\n preventWindowScroll?: boolean;\n /** Вызывается при изменении `value` */\n onValueChange: (value: string) => void;\n /** onBlur */\n onBlur?: () => void;\n /** Размер инпута */\n size?: InputProps['size'];\n /** value */\n value: string;\n /**\n * Текст заголовка выпадающего меню в мобильной версии\n */\n mobileMenuHeaderText?: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n AutocompleteProps,\n 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'menuAlign' | 'preventWindowScroll'\n >\n>;\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\n@responsiveLayout\n@rootNode\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n\n public static propTypes = {\n /**\n * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент\n * — *item*.\n */\n renderItem: PropTypes.func,\n\n /**\n * Если передан массив, то совпадения ищутся по этому массиву.\n *\n * Если передается функция, то она должна возвращать thenable, который\n * резолвится уже отфильтрованным массивом. Возвращенный thenable может\n * иметь метод cancel, который будет вызван при отмене поиска (пользователь\n * изменил строку поиска, автокомплит потерял фокус).\n * ```\n * function(pattern) {\n * return service.findAll(pattern);\n * }\n * ```\n */\n source: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n };\n\n public static defaultProps: DefaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n menuAlign: 'left',\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private theme!: Theme;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={styles.root(this.theme)}\n style={{ width }}\n ref={this.refRootSpan}\n >\n <Input {...inputProps} />\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, menuAlign, disablePortal } =\n this.getProps();\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow,\n width: menuWidth || (width && getDOMRect(this.rootSpan).width),\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer offsetY={1} getParent={this.getAnchor} align={menuAlign} disablePortal={disablePortal}>\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </DropdownContainer>\n );\n }\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: 'Начните вводить',\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n headerChildComponent={<Input {...inputProps} />}\n caption={this.props.mobileMenuHeaderText}\n useFullHeight\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n this.blur();\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
@@ -3,30 +3,29 @@ import PropTypes from 'prop-types';
3
3
  import { InputProps } from '../Input';
4
4
  import { Nullable, Override } from '../../typings/utility-types';
5
5
  import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
6
- declare function renderItem(item: any): any;
7
6
  export interface AutocompleteProps extends CommonProps, Override<InputProps, {
8
7
  /** Функция отрисовки элемента меню */
9
- renderItem: (item: string) => React.ReactNode;
8
+ renderItem?: (item: string) => React.ReactNode;
10
9
  /** Промис, резолвящий элементы меню */
11
10
  source?: string[] | ((patter: string) => Promise<string[]>);
12
11
  /** Отключает использование портала */
13
- disablePortal: boolean;
12
+ disablePortal?: boolean;
14
13
  /** Отрисовка тени у выпадающего меню */
15
- hasShadow: boolean;
14
+ hasShadow?: boolean;
16
15
  /** Выравнивание выпадающего меню */
17
- menuAlign: 'left' | 'right';
16
+ menuAlign?: 'left' | 'right';
18
17
  /** Максимальная высота меню */
19
- menuMaxHeight: number | string;
18
+ menuMaxHeight?: number | string;
20
19
  /** Ширина меню */
21
20
  menuWidth?: number | string;
22
21
  /** Отключить скролл окна, когда меню открыто */
23
- preventWindowScroll: boolean;
22
+ preventWindowScroll?: boolean;
24
23
  /** Вызывается при изменении `value` */
25
24
  onValueChange: (value: string) => void;
26
25
  /** onBlur */
27
26
  onBlur?: () => void;
28
27
  /** Размер инпута */
29
- size: InputProps['size'];
28
+ size?: InputProps['size'];
30
29
  /** value */
31
30
  value: string;
32
31
  /**
@@ -44,6 +43,7 @@ export interface AutocompleteState {
44
43
  export declare const AutocompleteDataTids: {
45
44
  readonly root: "Autocomplete__root";
46
45
  };
46
+ declare type DefaultProps = Required<Pick<AutocompleteProps, 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'menuAlign' | 'preventWindowScroll'>>;
47
47
  /**
48
48
  * Стандартный инпут с подсказками.
49
49
  *
@@ -72,15 +72,7 @@ export declare class Autocomplete extends React.Component<AutocompleteProps, Aut
72
72
  */
73
73
  source: PropTypes.Requireable<any[] | ((...args: any[]) => any)>;
74
74
  };
75
- static defaultProps: {
76
- renderItem: typeof renderItem;
77
- size: string;
78
- disablePortal: boolean;
79
- hasShadow: boolean;
80
- menuMaxHeight: number;
81
- menuAlign: string;
82
- preventWindowScroll: boolean;
83
- };
75
+ static defaultProps: DefaultProps;
84
76
  state: AutocompleteState;
85
77
  private theme;
86
78
  private isMobileLayout;
@@ -12,6 +12,7 @@ import { Spinner } from "../../Spinner";
12
12
  import { CommonWrapper } from "../../../internal/CommonWrapper";
13
13
  import { cx } from "../../../lib/theming/Emotion";
14
14
  import { rootNode } from "../../../lib/rootNode";
15
+ import { createPropsGetter } from "../../../lib/createPropsGetter";
15
16
  import { styles, activeStyles, globalClasses } from "../Button.styles";
16
17
  export var ButtonDataTids = {
17
18
  root: 'Button__root'
@@ -27,6 +28,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
27
28
  }
28
29
 
29
30
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
31
+ _this.getProps = createPropsGetter(Button.defaultProps);
30
32
  _this.state = {
31
33
  focusedByTab: false
32
34
  };
@@ -139,7 +141,11 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
139
141
  onClick = _this$props.onClick,
140
142
  width = _this$props.width,
141
143
  children = _this$props.children;
142
- var use = this.props.use || Button.defaultProps.use;
144
+
145
+ var _this$getProps = this.getProps(),
146
+ use = _this$getProps.use,
147
+ type = _this$getProps.type;
148
+
143
149
  var sizeClass = this.getSizeClassName();
144
150
  var isFocused = this.state.focusedByTab || visuallyFocused;
145
151
  var isLink = use === 'link';
@@ -147,7 +153,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
147
153
  // By default the type attribute is 'submit'. IE8 will fire a click event
148
154
  // on this button if somewhere on the page user presses Enter while some
149
155
  // input is focused. So we set type to 'button' by default.
150
- type: this.props.type,
156
+ type: type,
151
157
  className: cx((_cx = {}, _cx[styles.root(this.theme)] = true, _cx[styles[use](this.theme)] = true, _cx[activeStyles[use](this.theme)] = active, _cx[sizeClass] = true, _cx[styles.focus(this.theme)] = isFocused, _cx[styles.checked(this.theme)] = checked, _cx[styles.checkedFocused(this.theme)] = checked && isFocused, _cx[styles.disabled(this.theme)] = disabled || loading, _cx[styles.checkedDisabled(this.theme)] = checked && disabled, _cx[styles.borderless()] = borderless && !disabled && !loading && !checked && !isFocused && !active, _cx[styles.narrow()] = narrow, _cx[styles.noPadding()] = _noPadding, _cx[styles.noRightPadding()] = _noRightPadding, _cx)),
152
158
  style: _extends({
153
159
  textAlign: align
@@ -252,7 +258,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
252
258
  _proto.getSizeClassName = function getSizeClassName() {
253
259
  var _cx9, _cx10, _cx11;
254
260
 
255
- switch (this.props.size) {
261
+ switch (this.getProps().size) {
256
262
  case 'large':
257
263
  return cx(styles.sizeLarge(this.theme), (_cx9 = {}, _cx9[styles.sizeLargeIE11(this.theme)] = isIE11 || isEdge, _cx9));
258
264
 
@@ -266,7 +272,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
266
272
  };
267
273
 
268
274
  _proto.getSizeIconClassName = function getSizeIconClassName() {
269
- switch (this.props.size) {
275
+ switch (this.getProps().size) {
270
276
  case 'large':
271
277
  return styles.iconLarge(this.theme);
272
278
 
@@ -280,7 +286,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
280
286
  };
281
287
 
282
288
  _proto.getSizeWrapClassName = function getSizeWrapClassName() {
283
- switch (this.props.size) {
289
+ switch (this.getProps().size) {
284
290
  case 'large':
285
291
  return styles.wrapLarge(this.theme);
286
292