@skbkontur/react-ui 4.0.4 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +0 -1
  3. package/cjs/components/Autocomplete/Autocomplete.js +2 -9
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.styles.js +1 -1
  6. package/cjs/components/Button/Button.styles.js.map +1 -1
  7. package/cjs/components/DateInput/DateInput.styles.js +2 -2
  8. package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
  9. package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
  10. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  11. package/cjs/components/FileUploader/FileUploader.js +5 -4
  12. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  13. package/cjs/components/FileUploader/FileUploader.styles.d.ts +3 -2
  14. package/cjs/components/FileUploader/FileUploader.styles.js +21 -15
  15. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  16. package/cjs/components/Hint/Hint.d.ts +5 -1
  17. package/cjs/components/Hint/Hint.js +9 -1
  18. package/cjs/components/Hint/Hint.js.map +1 -1
  19. package/cjs/components/Input/Input.d.ts +1 -5
  20. package/cjs/components/Input/Input.js +14 -21
  21. package/cjs/components/Input/Input.js.map +1 -1
  22. package/cjs/components/Loader/Loader.js +7 -7
  23. package/cjs/components/Loader/Loader.js.map +1 -1
  24. package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
  25. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  26. package/cjs/components/Modal/Modal.js.map +1 -1
  27. package/cjs/components/Modal/Modal.styles.js +10 -6
  28. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  29. package/cjs/components/Modal/ModalFooter.js +0 -1
  30. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  31. package/cjs/components/Modal/ModalHeader.js +0 -1
  32. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  33. package/cjs/components/Paging/Paging.d.ts +12 -2
  34. package/cjs/components/Paging/Paging.js +14 -3
  35. package/cjs/components/Paging/Paging.js.map +1 -1
  36. package/cjs/components/Paging/PagingDefaultComponent.d.ts +9 -0
  37. package/cjs/components/Paging/PagingDefaultComponent.js +21 -0
  38. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -0
  39. package/cjs/components/PasswordInput/PasswordInput.d.ts +2 -0
  40. package/cjs/components/PasswordInput/PasswordInput.js +22 -4
  41. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  42. package/cjs/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  43. package/cjs/components/PasswordInput/PasswordInputIcon.js +11 -0
  44. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -0
  45. package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -1
  46. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  47. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +7 -2
  48. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  49. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.d.ts +1 -1
  50. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  51. package/cjs/components/ScrollContainer/ScrollContainer.js +3 -2
  52. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  53. package/cjs/components/Select/Select.d.ts +7 -5
  54. package/cjs/components/Select/Select.js +12 -2
  55. package/cjs/components/Select/Select.js.map +1 -1
  56. package/cjs/components/SidePage/SidePage.d.ts +0 -1
  57. package/cjs/components/SidePage/SidePage.js +1 -15
  58. package/cjs/components/SidePage/SidePage.js.map +1 -1
  59. package/cjs/components/SidePage/SidePageFooter.js +4 -3
  60. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  61. package/cjs/components/SidePage/SidePageHeader.js +3 -2
  62. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  63. package/cjs/components/Sticky/Sticky.js +4 -3
  64. package/cjs/components/Sticky/Sticky.js.map +1 -1
  65. package/cjs/components/Switcher/Switcher.d.ts +2 -1
  66. package/cjs/components/Switcher/Switcher.js +1 -0
  67. package/cjs/components/Switcher/Switcher.js.map +1 -1
  68. package/cjs/components/Switcher/Switcher.styles.js +2 -2
  69. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  70. package/cjs/components/Tabs/Indicator.js +2 -1
  71. package/cjs/components/Tabs/Indicator.js.map +1 -1
  72. package/cjs/components/Tabs/Tabs.d.ts +3 -1
  73. package/cjs/components/Tabs/Tabs.js +8 -4
  74. package/cjs/components/Tabs/Tabs.js.map +1 -1
  75. package/cjs/components/Textarea/Textarea.d.ts +2 -2
  76. package/cjs/components/Textarea/Textarea.js +6 -6
  77. package/cjs/components/Textarea/Textarea.js.map +1 -1
  78. package/cjs/components/Textarea/TextareaCounter.js +10 -2
  79. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  80. package/cjs/components/Toast/ToastView.js +1 -1
  81. package/cjs/components/Toast/ToastView.js.map +1 -1
  82. package/cjs/components/Toast/ToastView.styles.d.ts +1 -1
  83. package/cjs/components/Toast/ToastView.styles.js +3 -2
  84. package/cjs/components/Toast/ToastView.styles.js.map +1 -1
  85. package/cjs/components/Toggle/Toggle.styles.js +12 -10
  86. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  87. package/cjs/components/TokenInput/TextWidthHelper.js +2 -1
  88. package/cjs/components/TokenInput/TextWidthHelper.js.map +1 -1
  89. package/cjs/components/TokenInput/TokenInput.styles.js +3 -2
  90. package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
  91. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  92. package/cjs/components/Tooltip/Tooltip.d.ts +4 -2
  93. package/cjs/components/Tooltip/Tooltip.js +10 -7
  94. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  95. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  96. package/cjs/index.d.ts +2 -0
  97. package/cjs/index.js +2 -0
  98. package/cjs/index.js.map +1 -1
  99. package/cjs/internal/BGRuler.js +3 -1
  100. package/cjs/internal/BGRuler.js.map +1 -1
  101. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  102. package/cjs/internal/CommonWrapper/CommonWrapper.js +15 -1
  103. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  104. package/cjs/internal/ComponentTable.d.ts +4 -2
  105. package/cjs/internal/ComponentTable.js +1 -0
  106. package/cjs/internal/ComponentTable.js.map +1 -1
  107. package/cjs/internal/DateSelect/DateSelect.js +2 -1
  108. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  109. package/cjs/internal/DropdownContainer/DropdownContainer.js +5 -10
  110. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  111. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +3 -2
  112. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  113. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +14 -10
  114. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  115. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -1
  116. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  117. package/cjs/internal/InternalMenu/InternalMenu.js +3 -2
  118. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  119. package/cjs/internal/InternalMenu/InternalMenu.styles.js +2 -2
  120. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  121. package/cjs/internal/Menu/Menu.styles.js +5 -3
  122. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  123. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  124. package/cjs/internal/Popup/Popup.d.ts +1 -2
  125. package/cjs/internal/Popup/Popup.js +16 -13
  126. package/cjs/internal/Popup/Popup.js.map +1 -1
  127. package/cjs/internal/Popup/PopupHelper.js +4 -2
  128. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  129. package/cjs/internal/RenderContainer/RenderContainer.js +9 -0
  130. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  131. package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +2 -0
  132. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  133. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -1
  134. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  135. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +3 -1
  136. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  137. package/cjs/internal/ThemePlayground/CheckboxPlayground.js +1 -0
  138. package/cjs/internal/ThemePlayground/CheckboxPlayground.js.map +1 -1
  139. package/cjs/internal/ThemePlayground/Playground.js +11 -19
  140. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  141. package/cjs/internal/ThemePlayground/RadioPlayground.js.map +1 -1
  142. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  143. package/cjs/internal/ThemePlayground/SizesGroup.js +20 -0
  144. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -0
  145. package/cjs/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  146. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +14 -2
  147. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  148. package/cjs/internal/ThemePlayground/ThemeEditor.js +2 -0
  149. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  150. package/cjs/internal/ThemePlayground/constants.d.ts +3 -1
  151. package/cjs/internal/ThemePlayground/constants.js +3 -1
  152. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  153. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  154. package/cjs/internal/icons/16px/index.js +8 -0
  155. package/cjs/internal/icons/16px/index.js.map +1 -1
  156. package/cjs/internal/icons/20px/svg.js +6 -0
  157. package/cjs/internal/icons/20px/svg.js.map +1 -1
  158. package/cjs/internal/themes/DefaultTheme.d.ts +21 -1
  159. package/cjs/internal/themes/DefaultTheme.js +43 -5
  160. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  161. package/cjs/internal/themes/NotFlat.d.ts +6 -0
  162. package/cjs/internal/themes/NotFlat.js +12 -2
  163. package/cjs/internal/themes/NotFlat.js.map +1 -1
  164. package/cjs/internal/themes/Theme2022.d.ts +66 -0
  165. package/cjs/internal/themes/Theme2022.js +100 -0
  166. package/cjs/internal/themes/Theme2022.js.map +1 -0
  167. package/cjs/internal/themes/Theme2022Dark.d.ts +5 -0
  168. package/cjs/internal/themes/Theme2022Dark.js +9 -0
  169. package/cjs/internal/themes/Theme2022Dark.js.map +1 -0
  170. package/cjs/lib/ConditionalHandler.d.ts +3 -2
  171. package/cjs/lib/ConditionalHandler.js +5 -3
  172. package/cjs/lib/ConditionalHandler.js.map +1 -1
  173. package/cjs/lib/InstanceWithAnchorElement.d.ts +5 -0
  174. package/cjs/lib/InstanceWithAnchorElement.js +9 -0
  175. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -0
  176. package/cjs/lib/ModalStack.d.ts +1 -1
  177. package/cjs/lib/ModalStack.js.map +1 -1
  178. package/cjs/lib/SSRSafe.d.ts +1 -0
  179. package/cjs/lib/SSRSafe.js +9 -1
  180. package/cjs/lib/SSRSafe.js.map +1 -1
  181. package/cjs/lib/dom/getDOMRect.d.ts +5 -2
  182. package/cjs/lib/dom/getDOMRect.js +30 -18
  183. package/cjs/lib/dom/getDOMRect.js.map +1 -1
  184. package/cjs/lib/events/keyboard/KeyboardMapKeys.d.ts +2 -1
  185. package/cjs/lib/events/keyboard/KeyboardMapKeys.js +1 -0
  186. package/cjs/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  187. package/cjs/lib/events/keyboard/extractCode.js.map +1 -1
  188. package/cjs/lib/needsPolyfillPlaceholder.d.ts +6 -0
  189. package/cjs/lib/needsPolyfillPlaceholder.js +19 -0
  190. package/cjs/lib/needsPolyfillPlaceholder.js.map +1 -0
  191. package/cjs/lib/rootNode/getRootNode.js +14 -10
  192. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  193. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +11 -0
  194. package/cjs/lib/rootNode/rootNodeDecorator.js +34 -5
  195. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  196. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  197. package/cjs/lib/theming/themes/Theme2022.d.ts +1 -0
  198. package/cjs/lib/theming/themes/Theme2022.js +6 -0
  199. package/cjs/lib/theming/themes/Theme2022.js.map +1 -0
  200. package/cjs/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  201. package/cjs/lib/theming/themes/Theme2022Dark.js +9 -0
  202. package/cjs/lib/theming/themes/Theme2022Dark.js.map +1 -0
  203. package/components/Autocomplete/Autocomplete/Autocomplete.js +2 -9
  204. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  205. package/components/Autocomplete/Autocomplete.d.ts +0 -1
  206. package/components/Button/Button.styles/Button.styles.js +1 -1
  207. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  208. package/components/DateInput/DateInput.styles/DateInput.styles.js +2 -2
  209. package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
  210. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  211. package/components/DatePicker/DatePicker.d.ts +1 -1
  212. package/components/FileUploader/FileUploader/FileUploader.js +5 -6
  213. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  214. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +15 -12
  215. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  216. package/components/FileUploader/FileUploader.styles.d.ts +3 -2
  217. package/components/Hint/Hint/Hint.js +9 -1
  218. package/components/Hint/Hint/Hint.js.map +1 -1
  219. package/components/Hint/Hint.d.ts +5 -1
  220. package/components/Input/Input/Input.js +7 -25
  221. package/components/Input/Input/Input.js.map +1 -1
  222. package/components/Input/Input.d.ts +1 -5
  223. package/components/Loader/Loader/Loader.js +11 -12
  224. package/components/Loader/Loader/Loader.js.map +1 -1
  225. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  226. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  227. package/components/Modal/Modal/Modal.js.map +1 -1
  228. package/components/Modal/Modal.styles/Modal.styles.js +4 -4
  229. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  230. package/components/Modal/ModalFooter/ModalFooter.js +1 -1
  231. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  232. package/components/Modal/ModalHeader/ModalHeader.js +1 -1
  233. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  234. package/components/Paging/Paging/Paging.js +7 -9
  235. package/components/Paging/Paging/Paging.js.map +1 -1
  236. package/components/Paging/Paging.d.ts +12 -2
  237. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js +19 -0
  238. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -0
  239. package/components/Paging/PagingDefaultComponent/package.json +6 -0
  240. package/components/Paging/PagingDefaultComponent.d.ts +9 -0
  241. package/components/PasswordInput/PasswordInput/PasswordInput.js +24 -5
  242. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  243. package/components/PasswordInput/PasswordInput.d.ts +2 -0
  244. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +10 -0
  245. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -0
  246. package/components/PasswordInput/PasswordInputIcon/package.json +6 -0
  247. package/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  248. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  249. package/components/RadioGroup/RadioGroup.d.ts +1 -1
  250. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +5 -0
  251. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  252. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  253. package/components/ResponsiveLayout/ResponsiveLayoutEvents.d.ts +1 -1
  254. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +3 -2
  255. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  256. package/components/Select/Select/Select.js +12 -6
  257. package/components/Select/Select/Select.js.map +1 -1
  258. package/components/Select/Select.d.ts +7 -5
  259. package/components/SidePage/SidePage/SidePage.js +0 -19
  260. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  261. package/components/SidePage/SidePage.d.ts +0 -1
  262. package/components/SidePage/SidePageFooter/SidePageFooter.js +4 -4
  263. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  264. package/components/SidePage/SidePageHeader/SidePageHeader.js +3 -3
  265. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  266. package/components/Sticky/Sticky/Sticky.js +9 -8
  267. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  268. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  269. package/components/Switcher/Switcher.d.ts +2 -1
  270. package/components/Switcher/Switcher.styles/Switcher.styles.js +1 -1
  271. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  272. package/components/Tabs/Indicator/Indicator.js +2 -1
  273. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  274. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  275. package/components/Tabs/Tabs.d.ts +3 -1
  276. package/components/Textarea/Textarea/Textarea.js +6 -6
  277. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  278. package/components/Textarea/Textarea.d.ts +2 -2
  279. package/components/Textarea/TextareaCounter/TextareaCounter.js +9 -1
  280. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  281. package/components/Toast/ToastView/ToastView.js +1 -1
  282. package/components/Toast/ToastView/ToastView.js.map +1 -1
  283. package/components/Toast/ToastView.styles/ToastView.styles.js +2 -2
  284. package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
  285. package/components/Toast/ToastView.styles.d.ts +1 -1
  286. package/components/Toggle/Toggle.styles/Toggle.styles.js +3 -4
  287. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  288. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js +3 -2
  289. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js.map +1 -1
  290. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
  291. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
  292. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  293. package/components/Tooltip/Tooltip/Tooltip.js +11 -8
  294. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  295. package/components/Tooltip/Tooltip.d.ts +4 -2
  296. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  297. package/index.d.ts +2 -0
  298. package/index.js +2 -0
  299. package/index.js.map +1 -1
  300. package/internal/BGRuler/BGRuler.js +2 -1
  301. package/internal/BGRuler/BGRuler.js.map +1 -1
  302. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +17 -3
  303. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  304. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  305. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  306. package/internal/ComponentTable.d.ts +4 -2
  307. package/internal/DateSelect/DateSelect/DateSelect.js +2 -1
  308. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  309. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +5 -12
  310. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  311. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +3 -2
  312. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  313. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -0
  314. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  315. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  316. package/internal/InputLikeText/InputLikeText.d.ts +1 -1
  317. package/internal/InternalMenu/InternalMenu/InternalMenu.js +2 -1
  318. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  319. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +1 -1
  320. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  321. package/internal/Menu/Menu.styles/Menu.styles.js +1 -1
  322. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  323. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  324. package/internal/Popup/Popup/Popup.js +21 -20
  325. package/internal/Popup/Popup/Popup.js.map +1 -1
  326. package/internal/Popup/Popup.d.ts +1 -2
  327. package/internal/Popup/PopupHelper/PopupHelper.js +3 -1
  328. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  329. package/internal/RenderContainer/RenderContainer/RenderContainer.js +9 -0
  330. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  331. package/internal/RenderContainer/RenderContainerTypes.d.ts +2 -0
  332. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +8 -2
  333. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  334. package/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  335. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +3 -4
  336. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -1
  337. package/internal/ThemePlayground/CheckboxPlayground/CheckboxPlayground.js.map +1 -1
  338. package/internal/ThemePlayground/Playground/Playground.js +15 -29
  339. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  340. package/internal/ThemePlayground/RadioPlayground/RadioPlayground.js.map +1 -1
  341. package/internal/ThemePlayground/SizesGroup/SizesGroup.js +29 -0
  342. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -0
  343. package/internal/ThemePlayground/SizesGroup/package.json +6 -0
  344. package/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  345. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +14 -2
  346. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  347. package/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  348. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  349. package/internal/ThemePlayground/constants/constants.js +2 -0
  350. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  351. package/internal/ThemePlayground/constants.d.ts +3 -1
  352. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  353. package/internal/icons/16px/index/index.js +7 -0
  354. package/internal/icons/16px/index/index.js.map +1 -1
  355. package/internal/icons/20px/svg/svg.js +5 -0
  356. package/internal/icons/20px/svg/svg.js.map +1 -1
  357. package/internal/themes/DefaultTheme/DefaultTheme.js +53 -4
  358. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  359. package/internal/themes/DefaultTheme.d.ts +21 -1
  360. package/internal/themes/NotFlat/NotFlat.js +15 -0
  361. package/internal/themes/NotFlat/NotFlat.js.map +1 -1
  362. package/internal/themes/NotFlat.d.ts +6 -0
  363. package/internal/themes/Theme2022/Theme2022.js +78 -0
  364. package/internal/themes/Theme2022/Theme2022.js.map +1 -0
  365. package/internal/themes/Theme2022/package.json +6 -0
  366. package/internal/themes/Theme2022.d.ts +66 -0
  367. package/internal/themes/Theme2022Dark/Theme2022Dark.js +17 -0
  368. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  369. package/internal/themes/Theme2022Dark/package.json +6 -0
  370. package/internal/themes/Theme2022Dark.d.ts +5 -0
  371. package/lib/ConditionalHandler/ConditionalHandler.js.map +1 -1
  372. package/lib/ConditionalHandler.d.ts +3 -2
  373. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js +3 -0
  374. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -0
  375. package/lib/InstanceWithAnchorElement/package.json +6 -0
  376. package/lib/InstanceWithAnchorElement.d.ts +5 -0
  377. package/lib/ModalStack/ModalStack.js.map +1 -1
  378. package/lib/ModalStack.d.ts +1 -1
  379. package/lib/SSRSafe/SSRSafe.js +7 -0
  380. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  381. package/lib/SSRSafe.d.ts +1 -0
  382. package/lib/dom/getDOMRect/getDOMRect.js +32 -15
  383. package/lib/dom/getDOMRect/getDOMRect.js.map +1 -1
  384. package/lib/dom/getDOMRect.d.ts +5 -2
  385. package/lib/events/keyboard/KeyboardMapKeys/KeyboardMapKeys.js.map +1 -1
  386. package/lib/events/keyboard/KeyboardMapKeys.d.ts +2 -1
  387. package/lib/events/keyboard/extractCode/extractCode.js.map +1 -1
  388. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js +21 -0
  389. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js.map +1 -0
  390. package/lib/needsPolyfillPlaceholder/package.json +6 -0
  391. package/lib/needsPolyfillPlaceholder.d.ts +6 -0
  392. package/lib/rootNode/getRootNode/getRootNode.js +11 -10
  393. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  394. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +26 -2
  395. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  396. package/lib/rootNode/rootNodeDecorator.d.ts +11 -0
  397. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  398. package/lib/theming/themes/Theme2022/Theme2022.js +4 -0
  399. package/lib/theming/themes/Theme2022/Theme2022.js.map +1 -0
  400. package/lib/theming/themes/Theme2022/package.json +6 -0
  401. package/lib/theming/themes/Theme2022.d.ts +1 -0
  402. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js +5 -0
  403. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  404. package/lib/theming/themes/Theme2022Dark/package.json +6 -0
  405. package/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  406. package/package.json +4 -2
  407. package/cjs/lib/polyfillPlaceholder.d.ts +0 -1
  408. package/cjs/lib/polyfillPlaceholder.js +0 -17
  409. package/cjs/lib/polyfillPlaceholder.js.map +0 -1
  410. package/lib/polyfillPlaceholder/package.json +0 -6
  411. package/lib/polyfillPlaceholder/polyfillPlaceholder.js +0 -12
  412. package/lib/polyfillPlaceholder/polyfillPlaceholder.js.map +0 -1
  413. package/lib/polyfillPlaceholder.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","styles","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","getBoundingClientRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"gIAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAASC,eAAT,QAAgC,oBAAhC;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,MAAT,QAAuB,kBAAvB;;AAEA,SAASC,MAAT,QAAuB,4BAAvB;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,WAAaC,iBAAb;;;;;;;;;;;;;;;AAeE,6BAAYC,KAAZ,EAA2C;AACzC,4CAAMA,KAAN,UADyC,MALnCC,QAKmC,GALxBN,iBAAiB,CAACI,iBAAiB,CAACG,YAAnB,CAKO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDnCC,IAAAA,SAnDmC,GAmDvB,UAACC,OAAD,EAAuC;AACzD,YAAKC,GAAL,GAAWD,OAAX;AACD,KArD0C;;AAuDnCE,IAAAA,SAvDmC,GAuDvB,UAACC,IAAD,EAA8C;AAChE,aAAOA,IAAI,YAAYC,OAAvB;AACD,KAzD0C;;AA2DpCC,IAAAA,QA3DoC,GA2DzB,YAAM;AACtB,UAAMC,MAAM,GAAG,MAAKV,KAAL,CAAWW,SAAX,EAAf;AACA,UAAMN,GAAG,GAAG,MAAKA,GAAjB;;AAEA,UAAIK,MAAM,IAAI,MAAKJ,SAAL,CAAeI,MAAf,CAAV,IAAoCL,GAAxC,EAA6C;AAC3C,YAAMO,UAAU,GAAGF,MAAM,CAACG,qBAAP,EAAnB;AACA,wBAAyCC,QAAzC,CAAQC,IAAR,aAAQA,IAAR,CAA+BC,KAA/B,aAAcC,eAAd;;AAEA,YAAI,CAACD,KAAL,EAAY;AACV,gBAAME,KAAK,CAAC,6CAAD,CAAX;AACD;;AAED,YAAMC,OAAO,GAAGC,MAAM,CAACC,WAAP,IAAsBL,KAAK,CAACM,UAA5B,IAA0C,CAA1D;AACA,YAAMC,OAAO,GAAGH,MAAM,CAACI,WAAP,IAAsBR,KAAK,CAACS,SAA5B,IAAyC,CAAzD;;AAEA,YAAIC,IAAI,GAAG,IAAX;AACA,YAAIC,KAAK,GAAG,IAAZ;;AAEA,YAAI,MAAK3B,KAAL,CAAW4B,KAAX,KAAqB,OAAzB,EAAkC;AAChC,cAAMC,QAAQ,GAAGb,KAAK,CAACc,WAAN,IAAqB,CAAtC;AACAH,UAAAA,KAAK,GAAGE,QAAQ,IAAIjB,UAAU,CAACe,KAAX,GAAmBR,OAAvB,CAAR,GAA0C,MAAKlB,QAAL,GAAgB8B,OAAlE;AACD,SAHD,MAGO;AACLL,UAAAA,IAAI,GAAGd,UAAU,CAACc,IAAX,GAAkBP,OAAlB,GAA4B,MAAKlB,QAAL,GAAgB8B,OAAnD;AACD;;AAED,kCAAwB,MAAK/B,KAA7B,CAAQgC,OAAR,CAAQA,OAAR,oCAAkB,CAAlB;AACA,YAAIC,MAAM,GAAG,IAAb;AACA,YAAIC,GAAkB,GAAGtB,UAAU,CAACqB,MAAX,GAAoBV,OAApB,GAA8BS,OAAvD;;AAEA,YAAMG,gBAAgB,GAAGnB,KAAK,CAACoB,YAAN,GAAqBxB,UAAU,CAACqB,MAAzD;AACA,YAAMI,cAAc,GAAG,MAAKC,SAAL,EAAvB;;AAEA,YAAIH,gBAAgB,GAAGE,cAAnB,IAAqCzB,UAAU,CAACsB,GAAX,GAAiBG,cAA1D,EAA0E;AACxE,cAAMD,YAAY,GAAG,MAAKG,KAAL,CAAWC,qBAAX,GAAmCxB,KAAK,CAACoB,YAAzC,GAAwDrB,IAAI,CAAC0B,YAAlF;;AAEAP,UAAAA,GAAG,GAAG,IAAN;AACAD,UAAAA,MAAM,GAAGG,YAAY,GAAGJ,OAAf,GAAyBT,OAAzB,GAAmCX,UAAU,CAACsB,GAAvD;AACD;;AAED,YAAMzB,QAAQ,GAAG;AACfyB,UAAAA,GAAG,EAAHA,GADe;AAEfR,UAAAA,IAAI,EAAJA,IAFe;AAGfC,UAAAA,KAAK,EAALA,KAHe;AAIfM,UAAAA,MAAM,EAANA,MAJe,EAAjB;;;AAOA,cAAKS,QAAL,CAAc;AACZC,UAAAA,QAAQ,EAAE,MAAKC,WAAL,EADE;AAEZnC,UAAAA,QAAQ,EAAE,MAAKT,KAAL,CAAW6C,aAAX,GAA2B,MAAKC,yBAAL,CAA+BrC,QAA/B,CAA3B,GAAsEA,QAFpE,EAAd;;AAID;AACF,KA9G0C;;AAgHnC6B,IAAAA,SAhHmC,GAgHvB,YAAM;AACxB,UAAI,CAAC,MAAKhC,SAAL,CAAe,MAAKD,GAApB,CAAL,EAA+B;AAC7B,eAAO,CAAP;AACD;AACD,UAAM0C,KAAK,GAAG,MAAK1C,GAAL,CAAS2C,QAAT,CAAkBC,IAAlB,CAAuB,CAAvB,CAAd;AACA,UAAI,CAACF,KAAL,EAAY;AACV,eAAO,CAAP;AACD;AACD,aAAOA,KAAK,CAAClC,qBAAN,GAA8BqC,MAArC;AACD,KAzH0C;;AA2HnCN,IAAAA,WA3HmC,GA2HrB,YAAM;AAC1B,UAAMlC,MAAM,GAAG,MAAKV,KAAL,CAAWW,SAAX,EAAf;AACA,UAAI,CAACD,MAAD,IAAW,CAAC,MAAKJ,SAAL,CAAeI,MAAf,CAAhB,EAAwC;AACtC,eAAO,CAAP;AACD;AACD,aAAOA,MAAM,CAACG,qBAAP,GAA+BsC,KAAtC;AACD,KAjI0C;;AAmInCL,IAAAA,yBAnImC,GAmIP,UAACrC,QAAD,EAAoE;AACtG,UAAMC,MAAM,GAAG,MAAKV,KAAL,CAAWW,SAAX,EAAf;AACA,wBAAqC,MAAKX,KAA1C,mCAAQ+B,OAAR,CAAQA,OAAR,oCAAkB,CAAlB,0DAAqBC,OAArB,CAAqBA,OAArB,qCAA+B,CAA/B;AACA,UAAQE,GAAR,GAAqCzB,QAArC,CAAQyB,GAAR,CAAaD,MAAb,GAAqCxB,QAArC,CAAawB,MAAb,CAAqBP,IAArB,GAAqCjB,QAArC,CAAqBiB,IAArB,CAA2BC,KAA3B,GAAqClB,QAArC,CAA2BkB,KAA3B;AACA,UAAIjB,MAAM,IAAI,MAAKJ,SAAL,CAAeI,MAAf,CAAd,EAAsC;AACpC,YAAM0C,YAAY,GAAG1C,MAAM,CAACG,qBAAP,GAA+BqC,MAApD;AACA,eAAO;AACLhB,UAAAA,GAAG,EAAEA,GAAG,KAAK,IAAR,GAAekB,YAAY,GAAGpB,OAA9B,GAAwC,IADxC;AAELC,UAAAA,MAAM,EAAEA,MAAM,KAAK,IAAX,GAAkBmB,YAAY,GAAGpB,OAAjC,GAA2C,IAF9C;AAGLN,UAAAA,IAAI,EAAEA,IAAI,KAAK,IAAT,GAAgBK,OAAhB,GAA0B,IAH3B;AAILJ,UAAAA,KAAK,EAAEA,KAAK,KAAK,IAAV,GAAiBI,OAAjB,GAA2B,IAJ7B,EAAP;;AAMD;AACD,aAAO;AACLG,QAAAA,GAAG,EAAEF,OADA;AAELC,QAAAA,MAAM,EAAE,IAFH;AAGLP,QAAAA,IAAI,EAAEK,OAHD;AAILJ,QAAAA,KAAK,EAAE,IAJF,EAAP;;AAMD,KAtJ0C,CAGzC,MAAKY,KAAL,GAAa,EAAE9B,QAAQ,EAAE,IAAZ,EAAkBkC,QAAQ,EAAE,CAA5B,EAA+BH,qBAAqB,EAAEa,wBAAwB,EAA9E,EAAb,CAHyC,aAI1C,CAnBH,gDAqBSC,iBArBT,GAqBE,6BAA2B,CACzB,KAAK7C,QAAL,GACA,KAAK8C,SAAL,GAAiB/D,YAAY,CAACgE,WAAb,CAAyB,KAAK/C,QAA9B,CAAjB,CACD,CAxBH,QA0BSgD,oBA1BT,GA0BE,gCAA8B,CAC5B,IAAI,KAAKF,SAAT,EAAoB,CAClB,KAAKA,SAAL,CAAeG,MAAf,GACD,CACF,CA9BH,QAgCSC,MAhCT,GAgCE,kBAAgB,SACd,IAAIC,KAA0B,GAAG,EAC/BnD,QAAQ,EAAE,UADqB,EAE/ByB,GAAG,EAAE,GAF0B,EAAjC,CAIA,IAAI,KAAKK,KAAL,CAAW9B,QAAf,EAAyB,CACvB,2BAAqC,KAAK8B,KAAL,CAAW9B,QAAhD,CAAQyB,GAAR,wBAAQA,GAAR,CAAaD,MAAb,wBAAaA,MAAb,CAAqBP,IAArB,wBAAqBA,IAArB,CAA2BC,KAA3B,wBAA2BA,KAA3B,CACAiC,KAAK,gBACAA,KADA,IAEH1B,GAAG,EAAEA,GAAG,KAAK,IAAR,GAAeA,GAAf,GAAqB2B,SAFvB,EAGH5B,MAAM,EAAEA,MAAM,KAAK,IAAX,GAAkBA,MAAlB,GAA2B4B,SAHhC,EAIHnC,IAAI,EAAEA,IAAI,KAAK,IAAT,GAAgBA,IAAhB,GAAuBmC,SAJ1B,EAKHlC,KAAK,EAAEA,KAAK,KAAK,IAAV,GAAiBA,KAAjB,GAAyBkC,SAL7B,EAMHlB,QAAQ,EAAE,KAAKJ,KAAL,CAAWI,QANlB,EAOHmB,QAAQ,EAAE,KAAK9D,KAAL,CAAW+D,aAAX,GAA2B,KAAKxB,KAAL,CAAWI,QAAtC,GAAiDkB,SAPxD,GAAL,CASD,CAED,IAAMG,OAAO,gBACX,oBAAC,MAAD,IACE,QAAQ,EAAE,mBADZ,EAEE,UAAU,EAAE,KAAK7D,SAFnB,EAGE,KAAK,EAAEyD,KAHT,EAIE,SAAS,EAAEhE,EAAE,gBACVE,MAAM,CAACmE,UAAP,EADU,IACY,KAAKjE,KAAL,CAAW4B,KAAX,KAAqB,OAArB,IAAgC,CAAC/B,MAD7C,OAJf,IAQG,KAAKG,KAAL,CAAWgD,QARd,CADF,CAaA,OAAO,KAAKhD,KAAL,CAAW6C,aAAX,GAA2BmB,OAA3B,gBAAqC,oBAAC,eAAD,QAAkBA,OAAlB,CAA5C,CACD,CAhEH,4BAAuCzE,KAAK,CAAC2E,aAA7C,EAAanE,iB,CACGoE,mB,GAAsB,mB,CADzBpE,iB,CAGGG,Y,GAAe,EAC3B0B,KAAK,EAAE,MADoB,EAE3BiB,aAAa,EAAE,KAFY,EAG3Bd,OAAO,EAAE,CAHkB,EAI3BC,OAAO,EAAE,CAAC,CAJiB,E;;;AAqK/B,IAAMqB,wBAAwB,GAAG,SAA3BA,wBAA2B,GAAM;AACrC,mBAAkCvC,QAAlC,CAAQC,IAAR,cAAQA,IAAR,CAAcE,eAAd,cAAcA,eAAd;AACA,MAAMmD,YAAY,GAAGC,gBAAgB,CAACpD,eAAD,CAAhB,CAAkCR,QAAvD;AACA,MAAM6D,YAAY,GAAGD,gBAAgB,CAACtD,IAAD,CAAhB,CAAuBN,QAA5C;;AAEA,MAAM8D,oBAAoB,GAAGxD,IAAI,CAAC0B,YAAL,GAAoB1B,IAAI,CAACqB,YAAtD;AACA,MAAMoC,aAAa,GAAGJ,YAAY,KAAK,QAAjB,IAA6BE,YAAY,KAAK,QAApE;AACA,SAAOC,oBAAoB,IAAIC,aAA/B;AACD,CARD","sourcesContent":["import React from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\n\nimport { styles } from './DropdownContainer.styles';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps {\n align?: 'left' | 'right';\n getParent: () => Nullable<HTMLElement>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.props.align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = target.getBoundingClientRect();\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.props.align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const { offsetY = 0 } = this.props;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n\n top = null;\n bottom = clientHeight + offsetY - scrollY - targetRect.top;\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.props.disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n if (!child) {\n return 0;\n }\n return child.getBoundingClientRect().height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n if (!target || !this.isElement(target)) {\n return 0;\n }\n return target.getBoundingClientRect().width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const { offsetX = 0, offsetY = 0 } = this.props;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = target.getBoundingClientRect().height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
1
+ {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","isElement","node","Element","position","target","getParent","targetRect","document","body","docEl","documentElement","Error","scrollX","window","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './DropdownContainer.styles';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps {\n align?: 'left' | 'right';\n getParent: () => Nullable<HTMLElement>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.props.align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n private isElement = (node: Nullable<Element>): node is Element => {\n return node instanceof Element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && this.isElement(target) && dom) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = window.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = window.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.props.align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const { offsetY = 0 } = this.props;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n\n top = null;\n bottom = clientHeight + offsetY - scrollY - targetRect.top;\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.props.disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!this.isElement(this.dom)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const { offsetX = 0, offsetY = 0 } = this.props;\n const { top, bottom, left, right } = position;\n if (target && this.isElement(target)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n const { body, documentElement } = document;\n const htmlPosition = getComputedStyle(documentElement).position;\n const bodyPosition = getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
@@ -12,6 +12,7 @@ import { keyListener } from "../../../../lib/events/keyListener";
12
12
  import { isKeyEnter } from "../../../../lib/events/keyboard/identifiers";
13
13
  import { Hint } from "../../../../components/Hint";
14
14
  import { Tooltip } from "../../../../components/Tooltip";
15
+ import { getDOMRect } from "../../../../lib/dom/getDOMRect";
15
16
  import { jsStyles } from "../FileUploaderFile.styles";
16
17
 
17
18
  var getTruncatedName = function getTruncatedName(fileNameWidth, fileNameElementWidth, name) {
@@ -65,10 +66,10 @@ export var FileUploaderFile = function FileUploaderFile(props) {
65
66
  }, [size]); // важно запустить после рендера, чтобы успели проставиться рефы
66
67
 
67
68
  useEffect(function () {
68
- var _textHelperRef$curren, _fileNameElementRef$c;
69
+ var _textHelperRef$curren;
69
70
 
70
71
  var fileNameWidth = ((_textHelperRef$curren = textHelperRef.current) == null ? void 0 : _textHelperRef$curren.getTextWidth()) || 0;
71
- var fileNameElementWidth = ((_fileNameElementRef$c = fileNameElementRef.current) == null ? void 0 : _fileNameElementRef$c.getBoundingClientRect().width) || 0;
72
+ var fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;
72
73
  var truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);
73
74
  setTruncatedFileName(truncatedName);
74
75
  }, [name]);
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","FileUploaderFileStatus","formatBytes","TextWidthHelper","truncate","Spinner","FileUploaderControlContext","cx","ThemeContext","DeleteIcon","ErrorIcon","OkIcon","keyListener","isKeyEnter","Hint","Tooltip","jsStyles","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFile","props","file","showSize","error","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","removeFile","theme","formattedSize","current","getTextWidth","getBoundingClientRect","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","icon","deleteIcon","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","isTruncated","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize, error } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = fileNameElementRef.current?.getBoundingClientRect().width || 0;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n if (isInvalid) {\n return <ErrorIcon />;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n return deleteIcon;\n }\n }, [hovered, status, isInvalid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid=\"FileUploader__file\"\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid=\"FileUploader__fileTooltip\" pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid=\"FileUploader__fileName\" ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid=\"FileUploader__fileSize\" className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid=\"FileUploader__fileIcon\"\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
1
+ {"version":3,"sources":["FileUploaderFile.tsx"],"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","FileUploaderFileStatus","formatBytes","TextWidthHelper","truncate","Spinner","FileUploaderControlContext","cx","ThemeContext","DeleteIcon","ErrorIcon","OkIcon","keyListener","isKeyEnter","Hint","Tooltip","getDOMRect","jsStyles","getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFile","props","file","showSize","error","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","removeFile","theme","formattedSize","current","getTextWidth","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","isInvalid","icon","deleteIcon","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","isTruncated","root","displayName"],"mappings":"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","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\nimport { Hint } from '../../../components/Hint';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { getDOMRect } from '../../../lib/dom/getDOMRect';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n /** Состояние ошибки контрола файла */\n error?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize, error } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = getDOMRect(fileNameElementRef.current).width;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const isInvalid = error || !isValid;\n\n const icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n if (isInvalid) {\n return <ErrorIcon />;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n return deleteIcon;\n }\n }, [hovered, status, isInvalid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.error(theme)]: isInvalid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n const isTruncated = truncatedFileName !== name;\n\n return (\n <div\n data-tid=\"FileUploader__file\"\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid=\"FileUploader__fileTooltip\" pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={isTruncated ? name : null}>\n <span data-tid=\"FileUploader__fileName\" ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n </Hint>\n {!!showSize && formattedSize && (\n <span data-tid=\"FileUploader__fileSize\" className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid=\"FileUploader__fileIcon\"\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  var _excluded = ["onRemove", "onValueChange", "onAttach"];
4
+ /* eslint-disable react/display-name */
5
+
4
6
  import React from 'react';
5
7
  import { FileUploaderControlProvider } from "../FileUploaderControlProvider";
6
8
  export var withFileUploaderControlProvider = function withFileUploaderControlProvider(Component) {
@@ -1 +1 @@
1
- {"version":3,"sources":["withFileUploaderControlProvider.tsx"],"names":["React","FileUploaderControlProvider","withFileUploaderControlProvider","Component","memo","forwardRef","props","ref","onRemove","onValueChange","onAttach","rest"],"mappings":"wNAAA,OAAOA,KAAP,MAAqC,OAArC;;AAEA,SAASC,2BAAT,QAA8E,+BAA9E;;AAEA,OAAO,IAAMC,+BAA+B,GAAG,SAAlCA,+BAAkC;AAC7CC,SAD6C;;;;AAK7CH,IAAAA,KAAK,CAACI,IAAN;AACEJ,IAAAA,KAAK,CAACK,UAAN;AACE,cAACC,KAAD,EAAmDC,GAAnD,EAA2D;AACzD,UAAQC,QAAR,GAAuDF,KAAvD,CAAQE,QAAR,CAAkBC,aAAlB,GAAuDH,KAAvD,CAAkBG,aAAlB,CAAiCC,QAAjC,GAAuDJ,KAAvD,CAAiCI,QAAjC,CAA8CC,IAA9C,iCAAuDL,KAAvD;AACA;AACE,4BAAC,2BAAD,EAAiCA,KAAjC;AACE,4BAAC,SAAD,aAAW,GAAG,EAAEC,GAAhB,IAAyBI,IAAzB,EADF,CADF;;;AAKD,KARH,CADF,CAL6C,GAAxC","sourcesContent":["import React, { ComponentType } from 'react';\n\nimport { FileUploaderControlProvider, FileUploaderControlProviderProps } from './FileUploaderControlProvider';\n\nexport const withFileUploaderControlProvider = <TProps extends object, TRef extends object>(\n Component: ComponentType<\n Pick<TProps & FileUploaderControlProviderProps, Exclude<keyof TProps, keyof FileUploaderControlProviderProps>>\n >,\n) =>\n React.memo(\n React.forwardRef<TRef, TProps & FileUploaderControlProviderProps>(\n (props: TProps & FileUploaderControlProviderProps, ref) => {\n const { onRemove, onValueChange, onAttach, ...rest } = props;\n return (\n <FileUploaderControlProvider {...props}>\n <Component ref={ref} {...rest} />\n </FileUploaderControlProvider>\n );\n },\n ),\n );\n"]}
1
+ {"version":3,"sources":["withFileUploaderControlProvider.tsx"],"names":["React","FileUploaderControlProvider","withFileUploaderControlProvider","Component","memo","forwardRef","props","ref","onRemove","onValueChange","onAttach","rest"],"mappings":"yNAAA;AACA,OAAOA,KAAP,MAAqC,OAArC;;AAEA,SAASC,2BAAT,QAA8E,+BAA9E;;AAEA,OAAO,IAAMC,+BAA+B,GAAG,SAAlCA,+BAAkC;AAC7CC,SAD6C;;;AAI1C;AACH,sBAAOH,KAAK,CAACI,IAAN;AACLJ,EAAAA,KAAK,CAACK,UAAN;AACE,YAACC,KAAD,EAAmDC,GAAnD,EAA2D;AACzD,QAAQC,QAAR,GAAuDF,KAAvD,CAAQE,QAAR,CAAkBC,aAAlB,GAAuDH,KAAvD,CAAkBG,aAAlB,CAAiCC,QAAjC,GAAuDJ,KAAvD,CAAiCI,QAAjC,CAA8CC,IAA9C,iCAAuDL,KAAvD;AACA;AACE,0BAAC,2BAAD,EAAiCA,KAAjC;AACE,0BAAC,SAAD,aAAW,GAAG,EAAEC,GAAhB,IAAyBI,IAAzB,EADF,CADF;;;AAKD,GARH,CADK,CAAP;;;AAYD,CAjBM","sourcesContent":["/* eslint-disable react/display-name */\nimport React, { ComponentType } from 'react';\n\nimport { FileUploaderControlProvider, FileUploaderControlProviderProps } from './FileUploaderControlProvider';\n\nexport const withFileUploaderControlProvider = <TProps extends object, TRef extends object>(\n Component: ComponentType<\n Pick<TProps & FileUploaderControlProviderProps, Exclude<keyof TProps, keyof FileUploaderControlProviderProps>>\n >,\n) => {\n return React.memo(\n React.forwardRef<TRef, TProps & FileUploaderControlProviderProps>(\n (props: TProps & FileUploaderControlProviderProps, ref) => {\n const { onRemove, onValueChange, onAttach, ...rest } = props;\n return (\n <FileUploaderControlProvider {...props}>\n <Component ref={ref} {...rest} />\n </FileUploaderControlProvider>\n );\n },\n ),\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["InputLikeText.tsx"],"names":["React","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","HiddenInput","InputLikeText","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectInnerNode","start","end","document","body","setTimeout","focusTimeout","clearInterval","window","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","rest","leftSide","renderLeftSide","rightSide","renderRightSide","className","root","theme","getSizeClassName","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","input","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","Function","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","setState","onFocus","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { Nullable } from '../../typings/utility-types';\nimport { removeAllSelections, selectNodeContents } from '../../components/DateInput/helpers/SelectionHelpers';\nimport { InputProps, InputIconType, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { styles } from './InputLikeText.styles';\nimport { HiddenInput } from './HiddenInput';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'polyfillPlaceholder'>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n\n public static defaultProps = { size: 'small' };\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: Nullable<number>;\n private blinkTimeout: Nullable<number>;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && findRenderContainer(node, document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n setTimeout(() => selectNodeContents(node, start, end), 0);\n if (this.focusTimeout) {\n clearInterval(this.focusTimeout);\n }\n this.focusTimeout = window.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\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\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = this.renderLeftSide();\n const rightSide = this.renderRightSide();\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n return (\n <span\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <input type=\"hidden\" value={value} />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid=\"InputLikeText__input\"\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </span>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && e.target instanceof Node && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = (e: React.MouseEvent<HTMLElement>) => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n document.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n document.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11) {\n selectNodeContents(document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\n }\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.props.size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["InputLikeText.tsx"],"names":["React","isNonNullable","isKeyTab","isShortcutPaste","MouseDrag","isEdge","isIE11","isMobile","removeAllSelections","selectNodeContents","styles","jsInputStyles","ThemeContext","CommonWrapper","cx","findRenderContainer","rootNode","HiddenInput","InputLikeText","state","blinking","focused","node","hiddenInput","lastSelectedInnerNode","frozen","frozenBlur","dragging","selectInnerNode","start","end","document","body","setTimeout","focusTimeout","clearInterval","window","focus","renderMain","props","innerRef","tabIndex","placeholder","align","borderless","width","size","error","warning","onValueChange","disabled","prefix","suffix","leftIcon","rightIcon","value","onMouseDragStart","onMouseDragEnd","takeContentWidth","rest","leftSide","renderLeftSide","rightSide","renderRightSide","className","root","theme","getSizeClassName","blink","focusFallback","warningFallback","errorFallback","hideBlinkingCursor","wrapperClass","wrapper","userSelectContain","textAlign","undefined","handleFocus","handleBlur","handleKeyDown","handleMouseDown","input","absolute","inputFocus","inputDisabled","children","renderPlaceholder","hiddenInputRef","renderLeftIcon","renderIcon","getIconClassname","renderRightIcon","icon","iconNode","Function","useDefaultColor","iconDisabled","renderPrefix","prefixDisabled","renderSuffix","suffixDisabled","sideContainer","rightContainer","hasValue","placeholderDisabled","placeholderFocus","handleDocumentMouseDown","e","target","Node","contains","defrost","handleDocumentKeyDown","onKeyDown","handleMouseDragStart","documentElement","classList","add","userSelectNone","handleMouseDragEnd","remove","setAttribute","setState","onFocus","removeAttribute","stopPropagation","onBlur","el","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","blur","blinkTimeout","getNode","componentDidMount","listen","addEventListener","componentWillUnmount","clearTimeout","stop","removeEventListener","render","setRootNode","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"ggBAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,QAAT,EAAmBC,eAAnB,QAA0C,uCAA1C;AACA,SAASC,SAAT,QAAiD,4BAAjD;AACA,SAASC,MAAT,EAAiBC,MAAjB,EAAyBC,QAAzB,QAAyC,kBAAzC;;AAEA,SAASC,mBAAT,EAA8BC,kBAA9B,QAAwD,qDAAxD;;AAEA,SAASC,MAAM,IAAIC,aAAnB,QAAwC,qCAAxC;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAAmE,kBAAnE;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,mBAAT,QAAoC,8BAApC;AACA,SAAuBC,QAAvB,QAAuC,oBAAvC;;AAEA,SAASN,MAAT,QAAuB,wBAAvB;AACA,SAASO,WAAT,QAA4B,eAA5B;;;;;;;;;;;;;;;AAeA,WAAaC,aAAb,GADCF,QACD;;;;;AAKSG,IAAAA,KALT,GAKiB,EAAEC,QAAQ,EAAE,KAAZ,EAAmBC,OAAO,EAAE,KAA5B,EALjB;;;AAQUC,IAAAA,IARV,GAQqC,IARrC;AASUC,IAAAA,WATV,GASiD,IATjD;AAUUC,IAAAA,qBAVV,GAUwE,IAVxE;AAWUC,IAAAA,MAXV,GAWmB,KAXnB;AAYUC,IAAAA,UAZV,GAYuB,KAZvB;AAaUC,IAAAA,QAbV,GAaqB,KAbrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDSC,IAAAA,eApDT,GAoD2B,UAACN,IAAD,EAA2BO,KAA3B,EAAsCC,GAAtC,EAAkD,KAAvBD,KAAuB,cAAvBA,KAAuB,GAAf,CAAe,MAAZC,GAAY,cAAZA,GAAY,GAAN,CAAM;AACzE,UAAI,MAAKH,QAAL,IAAiB,CAACL,IAAtB,EAA4B;AAC1B;AACD;AACD,UAAIhB,MAAM,IAAIS,mBAAmB,CAACO,IAAD,EAAOS,QAAQ,CAACC,IAAhB,CAAjC,EAAwD;AACtD;AACA;AACD;AACD,YAAKP,MAAL,GAAc,IAAd;AACA,YAAKC,UAAL,GAAkB,IAAlB;;AAEA,YAAKF,qBAAL,GAA6B,CAACF,IAAD,EAAOO,KAAP,EAAcC,GAAd,CAA7B;AACAG,MAAAA,UAAU,CAAC,oBAAMxB,kBAAkB,CAACa,IAAD,EAAOO,KAAP,EAAcC,GAAd,CAAxB,EAAD,EAA6C,CAA7C,CAAV;AACA,UAAI,MAAKI,YAAT,EAAuB;AACrBC,QAAAA,aAAa,CAAC,MAAKD,YAAN,CAAb;AACD;AACD,YAAKA,YAAL,GAAoBE,MAAM,CAACH,UAAP,CAAkB,oBAAM,CAAC3B,MAAM,IAAID,MAAX,KAAsB,MAAKiB,IAA3B,IAAmC,MAAKA,IAAL,CAAUe,KAAV,EAAzC,EAAlB,EAA8E,CAA9E,CAApB;AACD,KArEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuGUC,IAAAA,UAvGV,GAuGuB,UAACC,KAAD,EAAuD;AAC1E;AACEC,MAAAA,QADF;;;;;;;;;;;;;;;;;;;;AAqBID,MAAAA,KArBJ,CACEC,QADF,CAEEC,QAFF,GAqBIF,KArBJ,CAEEE,QAFF,CAGEC,WAHF,GAqBIH,KArBJ,CAGEG,WAHF,CAIEC,KAJF,GAqBIJ,KArBJ,CAIEI,KAJF,CAKEC,UALF,GAqBIL,KArBJ,CAKEK,UALF,CAMEC,KANF,GAqBIN,KArBJ,CAMEM,KANF,CAOEC,IAPF,GAqBIP,KArBJ,CAOEO,IAPF,CAQEC,KARF,GAqBIR,KArBJ,CAQEQ,KARF,CASEC,OATF,GAqBIT,KArBJ,CASES,OATF,CAUEC,aAVF,GAqBIV,KArBJ,CAUEU,aAVF,CAWEC,QAXF,GAqBIX,KArBJ,CAWEW,QAXF,CAYEC,MAZF,GAqBIZ,KArBJ,CAYEY,MAZF,CAaEC,MAbF,GAqBIb,KArBJ,CAaEa,MAbF,CAcEC,QAdF,GAqBId,KArBJ,CAcEc,QAdF,CAeEC,SAfF,GAqBIf,KArBJ,CAeEe,SAfF,CAgBEC,KAhBF,GAqBIhB,KArBJ,CAgBEgB,KAhBF,CAiBEC,gBAjBF,GAqBIjB,KArBJ,CAiBEiB,gBAjBF,CAkBEC,cAlBF,GAqBIlB,KArBJ,CAkBEkB,cAlBF,CAmBEC,gBAnBF,GAqBInB,KArBJ,CAmBEmB,gBAnBF,CAoBKC,IApBL,iCAqBIpB,KArBJ;;AAuBA,wBAA8B,MAAKpB,KAAnC,CAAQE,OAAR,eAAQA,OAAR,CAAiBD,QAAjB,eAAiBA,QAAjB;;AAEA,UAAMwC,QAAQ,GAAG,MAAKC,cAAL,EAAjB;AACA,UAAMC,SAAS,GAAG,MAAKC,eAAL,EAAlB;;AAEA,UAAMC,SAAS,GAAGlD,EAAE,CAACJ,MAAM,CAACuD,IAAP,EAAD,EAAgBtD,aAAa,CAACsD,IAAd,CAAmB,MAAKC,KAAxB,CAAhB,EAAgD,MAAKC,gBAAL,EAAhD;AACjBxD,MAAAA,aAAa,CAACuC,QAAd,CAAuB,MAAKgB,KAA5B,CADiB,IACoB,CAAC,CAAChB,QADtB;AAEjBvC,MAAAA,aAAa,CAACiC,UAAd,EAFiB,IAEY,CAAC,CAACA,UAFd;AAGjBjC,MAAAA,aAAa,CAAC0B,KAAd,CAAoB,MAAK6B,KAAzB,CAHiB,IAGiB7C,OAHjB;AAIjBV,MAAAA,aAAa,CAACyD,KAAd,CAAoB,MAAKF,KAAzB,CAJiB,IAIiB9C,QAJjB;AAKjBT,MAAAA,aAAa,CAACqC,OAAd,CAAsB,MAAKkB,KAA3B,CALiB,IAKmB,CAAC,CAAClB,OALrB;AAMjBrC,MAAAA,aAAa,CAACoC,KAAd,CAAoB,MAAKmB,KAAzB,CANiB,IAMiB,CAAC,CAACnB,KANnB;AAOjBpC,MAAAA,aAAa,CAAC0D,aAAd,CAA4B,MAAKH,KAAjC,CAPiB,IAOyB7C,OAAO,KAAKf,MAAM,IAAID,MAAf,CAPhC;AAQjBM,MAAAA,aAAa,CAAC2D,eAAd,CAA8B,MAAKJ,KAAnC,CARiB,IAQ2B,CAAC,CAAClB,OAAF,KAAc1C,MAAM,IAAID,MAAxB,CAR3B;AASjBM,MAAAA,aAAa,CAAC4D,aAAd,CAA4B,MAAKL,KAAjC,CATiB,IASyB,CAAC,CAACnB,KAAF,KAAYzC,MAAM,IAAID,MAAtB,CATzB;AAUjBM,MAAAA,aAAa,CAAC6D,kBAAd,EAViB,IAUoBjE,QAVpB,OAApB;;;AAaA,UAAMkE,YAAY,GAAG3D,EAAE,CAACH,aAAa,CAAC+D,OAAd,EAAD;AACpBhE,MAAAA,MAAM,CAACiE,iBAAP,EADoB,IACStD,OADT,QAAvB;;;AAIA;AACE;AACMsC,QAAAA,IADN;AAEE,UAAA,SAAS,EAAEK,SAFb;AAGE,UAAA,KAAK,EAAE,EAAEnB,KAAK,EAALA,KAAF,EAAS+B,SAAS,EAAEjC,KAApB,EAHT;AAIE,UAAA,QAAQ,EAAEO,QAAQ,GAAG2B,SAAH,GAAe,CAJnC;AAKE,UAAA,OAAO,EAAE,MAAKC,WALhB;AAME,UAAA,MAAM,EAAE,MAAKC,UANf;AAOE,UAAA,GAAG,EAAE,MAAKvC,QAPZ;AAQE,UAAA,SAAS,EAAE,MAAKwC,aARlB;AASE,UAAA,WAAW,EAAE,MAAKC,eATpB;;AAWE,uCAAO,IAAI,EAAC,QAAZ,EAAqB,KAAK,EAAE1B,KAA5B,GAXF;AAYGK,QAAAA,QAZH;AAaE,sCAAM,SAAS,EAAEa,YAAjB;AACE;AACE,sBAAS,sBADX;AAEE,UAAA,SAAS,EAAE3D,EAAE,CAACH,aAAa,CAACuE,KAAd,CAAoB,MAAKhB,KAAzB,CAAD;AACVxD,UAAAA,MAAM,CAACyE,QAAP,EADU,IACU,CAACzB,gBADX;AAEV/C,UAAAA,aAAa,CAACyE,UAAd,CAAyB,MAAKlB,KAA9B,CAFU,IAE6B7C,OAF7B;AAGVV,UAAAA,aAAa,CAAC0E,aAAd,CAA4B,MAAKnB,KAAjC,CAHU,IAGgChB,QAHhC,QAFf;;;AAQG,cAAKX,KAAL,CAAW+C,QARd,CADF;;AAWG,cAAKC,iBAAL,EAXH,CAbF;;AA0BGzB,QAAAA,SA1BH;AA2BGxD,QAAAA,MAAM,IAAIe,OAAV,iBAAqB,oBAAC,WAAD,IAAa,OAAO,EAAE,MAAKmE,cAA3B,GA3BxB,CADF;;;AA+BD,KApLH;;;;;;;;;;;;;;AAkMUC,IAAAA,cAlMV,GAkM2B,YAAM;AAC7B,aAAO,MAAKC,UAAL,CAAgB,MAAKnD,KAAL,CAAWc,QAA3B,EAAqC,MAAKsC,gBAAL,EAArC,CAAP;AACD,KApMH;;AAsMUC,IAAAA,eAtMV,GAsM4B,YAAM;AAC9B,aAAO,MAAKF,UAAL,CAAgB,MAAKnD,KAAL,CAAWe,SAA3B,EAAsC,MAAKqC,gBAAL,CAAsB,IAAtB,CAAtC,CAAP;AACD,KAxMH;;AA0MUD,IAAAA,UA1MV,GA0MuB,UAACG,IAAD,EAAsB7B,SAAtB,EAAgE;AACnF,UAAI,CAAC6B,IAAL,EAAW;AACT,eAAO,IAAP;AACD;;AAED,UAAQ3C,QAAR,GAAqB,MAAKX,KAA1B,CAAQW,QAAR;AACA,UAAM4C,QAAQ,GAAGD,IAAI,YAAYE,QAAhB,GAA2BF,IAAI,EAA/B,GAAoCA,IAArD;;AAEA;AACE;AACE,UAAA,SAAS,EAAE/E,EAAE,CAACH,aAAa,CAACkF,IAAd,EAAD,EAAuB7B,SAAvB,EAAkCrD,aAAa,CAACqF,eAAd,CAA8B,MAAK9B,KAAnC,CAAlC;AACVvD,UAAAA,aAAa,CAACsF,YAAd,EADU,IACqB/C,QADrB,QADf;;;AAKG4C,QAAAA,QALH,CADF;;;AASD,KA3NH;;AA6NUI,IAAAA,YA7NV,GA6NyB,YAA0B;AAC/C,wBAA6B,MAAK3D,KAAlC,CAAQY,MAAR,eAAQA,MAAR,CAAgBD,QAAhB,eAAgBA,QAAhB;;AAEA,UAAI,CAACC,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAErC,EAAE,CAACH,aAAa,CAACwC,MAAd,CAAqB,MAAKe,KAA1B,CAAD,mBAAsCvD,aAAa,CAACwF,cAAd,CAA6B,MAAKjC,KAAlC,CAAtC,IAAiFhB,QAAjF,QAAnB;AACGC,QAAAA,MADH,CADF;;;AAKD,KAzOH;;AA2OUiD,IAAAA,YA3OV,GA2OyB,YAA0B;AAC/C,yBAA6B,MAAK7D,KAAlC,CAAQa,MAAR,gBAAQA,MAAR,CAAgBF,QAAhB,gBAAgBA,QAAhB;;AAEA,UAAI,CAACE,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAEtC,EAAE,CAACH,aAAa,CAACyC,MAAd,CAAqB,MAAKc,KAA1B,CAAD,mBAAsCvD,aAAa,CAAC0F,cAAd,CAA6B,MAAKnC,KAAlC,CAAtC,IAAiFhB,QAAjF,QAAnB;AACGE,QAAAA,MADH,CADF;;;AAKD,KAvPH;;AAyPUS,IAAAA,cAzPV,GAyP2B,YAA0B;AACjD,UAAMR,QAAQ,GAAG,MAAKoC,cAAL,EAAjB;AACA,UAAMtC,MAAM,GAAG,MAAK+C,YAAL,EAAf;;AAEA,UAAI,CAAC7C,QAAD,IAAa,CAACF,MAAlB,EAA0B;AACxB,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAExC,aAAa,CAAC2F,aAAd,EAAjB;AACGjD,QAAAA,QADH;AAEGF,QAAAA,MAFH,CADF;;;AAMD,KAvQH;;AAyQUY,IAAAA,eAzQV,GAyQ4B,YAA0B;AAClD,UAAMT,SAAS,GAAG,MAAKsC,eAAL,EAAlB;AACA,UAAMxC,MAAM,GAAG,MAAKgD,YAAL,EAAf;;AAEA,UAAI,CAAC9C,SAAD,IAAc,CAACF,MAAnB,EAA2B;AACzB,eAAO,IAAP;AACD;;AAED;AACE,sCAAM,SAAS,EAAEtC,EAAE,CAACH,aAAa,CAAC2F,aAAd,EAAD,EAAgC3F,aAAa,CAAC4F,cAAd,EAAhC,CAAnB;AACGjD,QAAAA,SADH;AAEGF,QAAAA,MAFH,CADF;;;AAMD,KAvRH;;AAyRUmC,IAAAA,iBAzRV,GAyR8B,YAA0B;AACpD,yBAA4C,MAAKhD,KAAjD,CAAQ+C,QAAR,gBAAQA,QAAR,CAAkB5C,WAAlB,gBAAkBA,WAAlB,CAA+BQ,QAA/B,gBAA+BA,QAA/B;AACA,UAAQ7B,OAAR,GAAoB,MAAKF,KAAzB,CAAQE,OAAR;AACA,UAAMmF,QAAQ,GAAGvG,aAAa,CAACqF,QAAD,CAAb,IAA2BA,QAAQ,KAAK,EAAzD;;AAEA,UAAI,CAACkB,QAAD,IAAa9D,WAAjB,EAA8B;AAC5B;AACE;AACE,YAAA,SAAS,EAAE5B,EAAE,CAACH,aAAa,CAAC+B,WAAd,CAA0B,MAAKwB,KAA/B,CAAD;AACVvD,YAAAA,aAAa,CAAC8F,mBAAd,CAAkC,MAAKvC,KAAvC,CADU,IACsChB,QADtC;AAEVvC,YAAAA,aAAa,CAAC+F,gBAAd,CAA+B,MAAKxC,KAApC,CAFU,IAEmC7C,OAFnC,QADf;;;AAMGqB,UAAAA,WANH,CADF;;;AAUD;AACD,aAAO,IAAP;AACD,KA3SH;;AA6SUiE,IAAAA,uBA7SV,GA6SoC,UAACC,CAAD,EAAmB;AACnD,UAAI,MAAKzF,KAAL,CAAWE,OAAX,IAAsB,MAAKC,IAA3B,IAAmCsF,CAAC,CAACC,MAAF,YAAoBC,IAAvD,IAA+D,CAAC,MAAKxF,IAAL,CAAUyF,QAAV,CAAmBH,CAAC,CAACC,MAArB,CAApE,EAAkG;AAChG,cAAKG,OAAL;AACD;AACF,KAjTH;;AAmTUC,IAAAA,qBAnTV,GAmTkC,UAACL,CAAD,EAAsB;AACpD,UAAI,MAAKzF,KAAL,CAAWE,OAAX,IAAsBnB,QAAQ,CAAC0G,CAAD,CAAlC,EAAuC;AACrC,cAAKI,OAAL;AACD;AACF,KAvTH;;AAyTU/B,IAAAA,eAzTV,GAyT4B,UAAC2B,CAAD,EAAsC;AAC9D,YAAKnF,MAAL,GAAc,IAAd;AACD,KA3TH;;AA6TUuD,IAAAA,aA7TV,GA6T0B,UAAC4B,CAAD,EAAyC;AAC/D,UAAI,MAAKrE,KAAL,CAAWW,QAAf,EAAyB;AACvB;AACD;;AAED,UAAI5C,MAAM,IAAIH,eAAe,CAACyG,CAAD,CAAzB,IAAgC,MAAKrF,WAAzC,EAAsD;AACpD,cAAKE,MAAL,GAAc,IAAd;AACAQ,QAAAA,UAAU,CAAC,YAAM;AACf,cAAI,MAAKT,qBAAT,EAAgC;AAC9B,6BAAKI,eAAL,eAAwB,MAAKJ,qBAA7B;AACD;AACD,cAAI,MAAKF,IAAT,EAAe;AACb,kBAAKA,IAAL,CAAUe,KAAV;AACD;AACF,SAPS,EAOP,CAPO,CAAV;;AASA,cAAKd,WAAL,CAAiBc,KAAjB;AACD;;AAED,UAAI,MAAKE,KAAL,CAAW2E,SAAf,EAA0B;AACxB,cAAK3E,KAAL,CAAW2E,SAAX,CAAqBN,CAArB;AACD;AACF,KAnVH;;AAqVUO,IAAAA,oBArVV,GAqVwD,UAACP,CAAD,EAAO;AAC3D,YAAKjF,QAAL,GAAgB,IAAhB;AACAI,MAAAA,QAAQ,CAACqF,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC5G,MAAM,CAAC6G,cAAP,EAAvC;;AAEA,UAAI,MAAKhF,KAAL,CAAWiB,gBAAf,EAAiC;AAC/B,cAAKjB,KAAL,CAAWiB,gBAAX,CAA4BoD,CAA5B;AACD;AACF,KA5VH;;AA8VUY,IAAAA,kBA9VV,GA8VsD,UAACZ,CAAD,EAAO;AACzD;AACA3E,MAAAA,UAAU,CAAC,YAAM;AACf,cAAKN,QAAL,GAAgB,KAAhB;;AAEA,YAAI,MAAKY,KAAL,CAAWkB,cAAf,EAA+B;AAC7B,gBAAKlB,KAAL,CAAWkB,cAAX,CAA0BmD,CAA1B;AACD;AACF,OANS,EAMP,CANO,CAAV;;AAQA7E,MAAAA,QAAQ,CAACqF,eAAT,CAAyBC,SAAzB,CAAmCI,MAAnC,CAA0C/G,MAAM,CAAC6G,cAAP,EAA1C;AACD,KAzWH;;AA2WUzC,IAAAA,WA3WV,GA2WwB,UAAC8B,CAAD,EAAsC;AAC1D,UAAIrG,QAAJ,EAAc;AACZqG,QAAAA,CAAC,CAACC,MAAF,CAASa,YAAT,CAAsB,iBAAtB,EAAyC,MAAzC;AACD;;AAED,UAAI,MAAKnF,KAAL,CAAWW,QAAf,EAAyB;AACvB,YAAI5C,MAAJ,EAAY;AACVG,UAAAA,kBAAkB,CAACsB,QAAQ,CAACC,IAAV,EAAgB,CAAhB,EAAmB,CAAnB,CAAlB;AACD;AACD;AACD;;AAED,UAAI,CAAC1B,MAAM,IAAID,MAAX,KAAsB,MAAKoB,MAA/B,EAAuC;AACrC,cAAKA,MAAL,GAAc,KAAd;AACA,YAAI,MAAKN,KAAL,CAAWE,OAAf,EAAwB;AACtB;AACD;AACF;;AAED,YAAKsG,QAAL,CAAc,EAAEtG,OAAO,EAAE,IAAX,EAAd;;AAEA,UAAI,MAAKkB,KAAL,CAAWqF,OAAf,EAAwB;AACtB,cAAKrF,KAAL,CAAWqF,OAAX,CAAmBhB,CAAnB;AACD;AACF,KAnYH;;AAqYU7B,IAAAA,UArYV,GAqYuB,UAAC6B,CAAD,EAAsC;AACzD,UAAIrG,QAAJ,EAAc;AACZqG,QAAAA,CAAC,CAACC,MAAF,CAASgB,eAAT,CAAyB,iBAAzB;AACD;;AAED,UAAI,MAAKtF,KAAL,CAAWW,QAAf,EAAyB;AACvB0D,QAAAA,CAAC,CAACkB,eAAF;AACA;AACD;;AAED,UAAI,CAACxH,MAAM,IAAID,MAAX,KAAsB,MAAKqB,UAA/B,EAA2C;AACzC,cAAKA,UAAL,GAAkB,KAAlB;AACA;AACD;AACD,UAAI,CAACpB,MAAM,IAAID,MAAX,KAAsB,MAAKoB,MAA/B,EAAuC;AACrC;AACD;;AAEDjB,MAAAA,mBAAmB;;AAEnB,YAAKmH,QAAL,CAAc,EAAEtG,OAAO,EAAE,KAAX,EAAd;;AAEA,UAAI,MAAKkB,KAAL,CAAWwF,MAAf,EAAuB;AACrB,cAAKxF,KAAL,CAAWwF,MAAX,CAAkBnB,CAAlB;AACD;AACF,KA9ZH;;AAgaUpB,IAAAA,cAhaV,GAga2B,UAACwC,EAAD,EAAiC;AACxD,YAAKzG,WAAL,GAAmByG,EAAnB;AACD,KAlaH;;AAoaUxF,IAAAA,QApaV,GAoaqB,UAACwF,EAAD,EAA4B;AAC7C,UAAI,MAAKzF,KAAL,CAAWC,QAAf,EAAyB;AACvB,cAAKD,KAAL,CAAWC,QAAX,CAAoBwF,EAApB;AACD;AACD,YAAK1G,IAAL,GAAY0G,EAAZ;AACD,KAzaH;;AA2aUhB,IAAAA,OA3aV,GA2aoB,YAAY;AAC5B,YAAKvF,MAAL,GAAc,KAAd;AACA,YAAKC,UAAL,GAAkB,KAAlB;AACD,KA9aH;;AAgbUyC,IAAAA,gBAhbV,GAgb6B,YAAM;AAC/B,cAAQ,MAAK5B,KAAL,CAAWO,IAAnB;AACE,aAAK,OAAL;AACE,iBAAOhC,EAAE;AACNH,UAAAA,aAAa,CAACsH,SAAd,CAAwB,MAAK/D,KAA7B,CADM,IACgC,IADhC;AAENvD,UAAAA,aAAa,CAACuH,iBAAd,CAAgC,MAAKhE,KAArC,CAFM,IAEwC5D,MAAM,IAAID,MAFlD,QAAT;;AAIF,aAAK,QAAL;AACE,iBAAOS,EAAE;AACNH,UAAAA,aAAa,CAACwH,UAAd,CAAyB,MAAKjE,KAA9B,CADM,IACiC,IADjC;AAENvD,UAAAA,aAAa,CAACyH,kBAAd,CAAiC,MAAKlE,KAAtC,CAFM,IAEyC5D,MAAM,IAAID,MAFnD,QAAT;;AAIF,aAAK,OAAL;AACA;AACE,iBAAOS,EAAE;AACNH,UAAAA,aAAa,CAAC0H,SAAd,CAAwB,MAAKnE,KAA7B,CADM,IACgC,IADhC;AAENvD,UAAAA,aAAa,CAAC2H,iBAAd,CAAgC,MAAKpE,KAArC,CAFM,IAEwC5D,MAAM,IAAID,MAFlD,SAAT,CAbJ;;;AAkBD,KAncH,qDAkBE;AACF;AACA,KApBA,OAqBSgC,KArBT,GAqBE,iBAAe,CACb,IAAI,KAAKf,IAAT,EAAe,CACb,KAAKA,IAAL,CAAUe,KAAV,GACD,CACF,CAzBH,CA2BE;AACF;AACA,KA7BA,QA8BSkG,IA9BT,GA8BE,gBAAc,CACZ,IAAI,KAAKjH,IAAT,EAAe,CACb,KAAKA,IAAL,CAAUiH,IAAV,GACD,CACF,CAlCH,CAoCE;AACF;AACA,KAtCA,QAuCSnE,KAvCT,GAuCE,iBAAe,mBACb,IAAI,KAAK7B,KAAL,CAAWW,QAAf,EAAyB,CACvB,OACD,CACD,KAAKyE,QAAL,CAAc,EAAEvG,QAAQ,EAAE,IAAZ,EAAd,EAAkC,YAAM,CACtC,MAAI,CAACoH,YAAL,GAAoBpG,MAAM,CAACH,UAAP,CAAkB,oBAAM,MAAI,CAAC0F,QAAL,CAAc,EAAEvG,QAAQ,EAAE,KAAZ,EAAd,CAAN,EAAlB,EAA4D,GAA5D,CAApB,CACD,CAFD,EAGD,CA9CH,QAgDSqH,OAhDT,GAgDE,mBAAqC,CACnC,OAAO,KAAKnH,IAAZ,CACD,CAlDH,QAuESoH,iBAvET,GAuEE,6BAA2B,CACzB,IAAI,KAAKpH,IAAT,EAAe,CACblB,SAAS,CAACuI,MAAV,CAAiB,KAAKrH,IAAtB,EAA4BkC,gBAA5B,CAA6C,KAAK2D,oBAAlD,EAAwE1D,cAAxE,CAAuF,KAAK+D,kBAA5F,EACD,CACDzF,QAAQ,CAAC6G,gBAAT,CAA0B,WAA1B,EAAuC,KAAKjC,uBAA5C,EACA5E,QAAQ,CAAC6G,gBAAT,CAA0B,SAA1B,EAAqC,KAAK3B,qBAA1C,EACD,CA7EH,QA+ES4B,oBA/ET,GA+EE,gCAA8B,CAC5B,IAAI,KAAKL,YAAT,EAAuB,CACrBM,YAAY,CAAC,KAAKN,YAAN,CAAZ,CACD,CACDpI,SAAS,CAAC2I,IAAV,CAAe,KAAKzH,IAApB,EACAS,QAAQ,CAACiH,mBAAT,CAA6B,WAA7B,EAA0C,KAAKrC,uBAA/C,EACA5E,QAAQ,CAACiH,mBAAT,CAA6B,SAA7B,EAAwC,KAAK/B,qBAA7C,EACD,CAtFH,QAwFSgC,MAxFT,GAwFE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAAC/E,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,MAAI,CAACgF,WAAjC,IAAkD,MAAI,CAAC3G,KAAvD,GACG,MAAI,CAACD,UADR,CADF,CAKD,CARH,CADF,CAYD,CArGH,QAsLUqD,gBAtLV,GAsLE,0BAAyBwD,KAAzB,EAAwC,KAAfA,KAAe,cAAfA,KAAe,GAAP,KAAO,EACtC,QAAQ,KAAK5G,KAAL,CAAWO,IAAnB,GACE,KAAK,OAAL,CACE,OAAOqG,KAAK,GAAGxI,aAAa,CAACyI,cAAd,CAA6B,KAAKlF,KAAlC,CAAH,GAA8CvD,aAAa,CAAC0I,aAAd,CAA4B,KAAKnF,KAAjC,CAA1D,CACF,KAAK,QAAL,CACE,OAAOiF,KAAK,GAAGxI,aAAa,CAAC2I,eAAd,CAA8B,KAAKpF,KAAnC,CAAH,GAA+CvD,aAAa,CAAC4I,cAAd,CAA6B,KAAKrF,KAAlC,CAA3D,CACF,KAAK,OAAL,CACA,QACE,OAAOiF,KAAK,GAAGxI,aAAa,CAAC6I,cAAd,CAA6B,KAAKtF,KAAlC,CAAH,GAA8CvD,aAAa,CAAC8I,aAAd,CAA4B,KAAKvF,KAAjC,CAA1D,CAPJ,CASD,CAhMH,wBAAmClE,KAAK,CAAC0J,SAAzC,WACgBC,mBADhB,GACsC,eADtC,UAGgBC,YAHhB,GAG+B,EAAE9G,IAAI,EAAE,OAAR,EAH/B","sourcesContent":["import React from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyTab, isShortcutPaste } from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag, MouseDragEventHandler } from '../../lib/events/MouseDrag';\nimport { isEdge, isIE11, isMobile } from '../../lib/client';\nimport { Nullable } from '../../typings/utility-types';\nimport { removeAllSelections, selectNodeContents } from '../../components/DateInput/helpers/SelectionHelpers';\nimport { InputProps, InputIconType, InputState } from '../../components/Input';\nimport { styles as jsInputStyles } from '../../components/Input/Input.styles';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { findRenderContainer } from '../../lib/listenFocusOutside';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { styles } from './InputLikeText.styles';\nimport { HiddenInput } from './HiddenInput';\n\nexport interface InputLikeTextProps extends CommonProps, InputProps {\n children?: React.ReactNode;\n innerRef?: (el: HTMLElement | null) => void;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n onMouseDragStart?: MouseDragEventHandler;\n onMouseDragEnd?: MouseDragEventHandler;\n takeContentWidth?: boolean;\n}\n\nexport type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;\n\n@rootNode\nexport class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {\n public static __KONTUR_REACT_UI__ = 'InputLikeText';\n\n public static defaultProps = { size: 'small' };\n\n public state = { blinking: false, focused: false };\n\n private theme!: Theme;\n private node: HTMLElement | null = null;\n private hiddenInput: HTMLInputElement | null = null;\n private lastSelectedInnerNode: [HTMLElement, number, number] | null = null;\n private frozen = false;\n private frozenBlur = false;\n private dragging = false;\n private focusTimeout: Nullable<number>;\n private blinkTimeout: Nullable<number>;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.node) {\n this.node.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.node) {\n this.node.blur();\n }\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.props.disabled) {\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(() => this.setState({ blinking: false }), 150);\n });\n }\n\n public getNode(): HTMLElement | null {\n return this.node;\n }\n\n public selectInnerNode = (node: HTMLElement | null, start = 0, end = 1) => {\n if (this.dragging || !node) {\n return;\n }\n if (isIE11 && findRenderContainer(node, document.body)) {\n // Code below causes Popup to close after triggering the focus event on the body in IE11\n return;\n }\n this.frozen = true;\n this.frozenBlur = true;\n\n this.lastSelectedInnerNode = [node, start, end];\n setTimeout(() => selectNodeContents(node, start, end), 0);\n if (this.focusTimeout) {\n clearInterval(this.focusTimeout);\n }\n this.focusTimeout = window.setTimeout(() => (isIE11 || isEdge) && this.node && this.node.focus(), 0);\n };\n\n public componentDidMount() {\n if (this.node) {\n MouseDrag.listen(this.node).onMouseDragStart(this.handleMouseDragStart).onMouseDragEnd(this.handleMouseDragEnd);\n }\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n MouseDrag.stop(this.node);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\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\n private renderMain = (props: CommonWrapperRestProps<InputLikeTextProps>) => {\n const {\n innerRef,\n tabIndex,\n placeholder,\n align,\n borderless,\n width,\n size,\n error,\n warning,\n onValueChange,\n disabled,\n prefix,\n suffix,\n leftIcon,\n rightIcon,\n value,\n onMouseDragStart,\n onMouseDragEnd,\n takeContentWidth,\n ...rest\n } = props;\n\n const { focused, blinking } = this.state;\n\n const leftSide = this.renderLeftSide();\n const rightSide = this.renderRightSide();\n\n const className = cx(styles.root(), jsInputStyles.root(this.theme), this.getSizeClassName(), {\n [jsInputStyles.disabled(this.theme)]: !!disabled,\n [jsInputStyles.borderless()]: !!borderless,\n [jsInputStyles.focus(this.theme)]: focused,\n [jsInputStyles.blink(this.theme)]: blinking,\n [jsInputStyles.warning(this.theme)]: !!warning,\n [jsInputStyles.error(this.theme)]: !!error,\n [jsInputStyles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [jsInputStyles.warningFallback(this.theme)]: !!warning && (isIE11 || isEdge),\n [jsInputStyles.errorFallback(this.theme)]: !!error && (isIE11 || isEdge),\n [jsInputStyles.hideBlinkingCursor()]: isMobile,\n });\n\n const wrapperClass = cx(jsInputStyles.wrapper(), {\n [styles.userSelectContain()]: focused,\n });\n\n return (\n <span\n {...rest}\n className={className}\n style={{ width, textAlign: align }}\n tabIndex={disabled ? undefined : 0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n ref={this.innerRef}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <input type=\"hidden\" value={value} />\n {leftSide}\n <span className={wrapperClass}>\n <span\n data-tid=\"InputLikeText__input\"\n className={cx(jsInputStyles.input(this.theme), {\n [styles.absolute()]: !takeContentWidth,\n [jsInputStyles.inputFocus(this.theme)]: focused,\n [jsInputStyles.inputDisabled(this.theme)]: disabled,\n })}\n >\n {this.props.children}\n </span>\n {this.renderPlaceholder()}\n </span>\n {rightSide}\n {isIE11 && focused && <HiddenInput nodeRef={this.hiddenInputRef} />}\n </span>\n );\n };\n\n private getIconClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? jsInputStyles.rightIconLarge(this.theme) : jsInputStyles.leftIconLarge(this.theme);\n case 'medium':\n return right ? jsInputStyles.rightIconMedium(this.theme) : jsInputStyles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? jsInputStyles.rightIconSmall(this.theme) : jsInputStyles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon = () => {\n return this.renderIcon(this.props.leftIcon, this.getIconClassname());\n };\n\n private renderRightIcon = () => {\n return this.renderIcon(this.props.rightIcon, this.getIconClassname(true));\n };\n\n private renderIcon = (icon: InputIconType, className: string): JSX.Element | null => {\n if (!icon) {\n return null;\n }\n\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(jsInputStyles.icon(), className, jsInputStyles.useDefaultColor(this.theme), {\n [jsInputStyles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n };\n\n private renderPrefix = (): JSX.Element | null => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.prefix(this.theme), { [jsInputStyles.prefixDisabled(this.theme)]: disabled })}>\n {prefix}\n </span>\n );\n };\n\n private renderSuffix = (): JSX.Element | null => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.suffix(this.theme), { [jsInputStyles.suffixDisabled(this.theme)]: disabled })}>\n {suffix}\n </span>\n );\n };\n\n private renderLeftSide = (): JSX.Element | null => {\n const leftIcon = this.renderLeftIcon();\n const prefix = this.renderPrefix();\n\n if (!leftIcon && !prefix) {\n return null;\n }\n\n return (\n <span className={jsInputStyles.sideContainer()}>\n {leftIcon}\n {prefix}\n </span>\n );\n };\n\n private renderRightSide = (): JSX.Element | null => {\n const rightIcon = this.renderRightIcon();\n const suffix = this.renderSuffix();\n\n if (!rightIcon && !suffix) {\n return null;\n }\n\n return (\n <span className={cx(jsInputStyles.sideContainer(), jsInputStyles.rightContainer())}>\n {rightIcon}\n {suffix}\n </span>\n );\n };\n\n private renderPlaceholder = (): JSX.Element | null => {\n const { children, placeholder, disabled } = this.props;\n const { focused } = this.state;\n const hasValue = isNonNullable(children) && children !== '';\n\n if (!hasValue && placeholder) {\n return (\n <span\n className={cx(jsInputStyles.placeholder(this.theme), {\n [jsInputStyles.placeholderDisabled(this.theme)]: disabled,\n [jsInputStyles.placeholderFocus(this.theme)]: focused,\n })}\n >\n {placeholder}\n </span>\n );\n }\n return null;\n };\n\n private handleDocumentMouseDown = (e: MouseEvent) => {\n if (this.state.focused && this.node && e.target instanceof Node && !this.node.contains(e.target)) {\n this.defrost();\n }\n };\n\n private handleDocumentKeyDown = (e: KeyboardEvent) => {\n if (this.state.focused && isKeyTab(e)) {\n this.defrost();\n }\n };\n\n private handleMouseDown = (e: React.MouseEvent<HTMLElement>) => {\n this.frozen = true;\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (isIE11 && isShortcutPaste(e) && this.hiddenInput) {\n this.frozen = true;\n setTimeout(() => {\n if (this.lastSelectedInnerNode) {\n this.selectInnerNode(...this.lastSelectedInnerNode);\n }\n if (this.node) {\n this.node.focus();\n }\n }, 0);\n\n this.hiddenInput.focus();\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e as React.KeyboardEvent<HTMLInputElement>);\n }\n };\n\n private handleMouseDragStart: MouseDragEventHandler = (e) => {\n this.dragging = true;\n document.documentElement.classList.add(styles.userSelectNone());\n\n if (this.props.onMouseDragStart) {\n this.props.onMouseDragStart(e);\n }\n };\n\n private handleMouseDragEnd: MouseDragEventHandler = (e) => {\n // Дожидаемся onMouseUp\n setTimeout(() => {\n this.dragging = false;\n\n if (this.props.onMouseDragEnd) {\n this.props.onMouseDragEnd(e);\n }\n }, 0);\n\n document.documentElement.classList.remove(styles.userSelectNone());\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.setAttribute('contenteditable', 'true');\n }\n\n if (this.props.disabled) {\n if (isIE11) {\n selectNodeContents(document.body, 0, 0);\n }\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozen) {\n this.frozen = false;\n if (this.state.focused) {\n return;\n }\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n if (isMobile) {\n e.target.removeAttribute('contenteditable');\n }\n\n if (this.props.disabled) {\n e.stopPropagation();\n return;\n }\n\n if ((isIE11 || isEdge) && this.frozenBlur) {\n this.frozenBlur = false;\n return;\n }\n if ((isIE11 || isEdge) && this.frozen) {\n return;\n }\n\n removeAllSelections();\n\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(e);\n }\n };\n\n private hiddenInputRef = (el: HTMLInputElement | null) => {\n this.hiddenInput = el;\n };\n\n private innerRef = (el: HTMLElement | null) => {\n if (this.props.innerRef) {\n this.props.innerRef(el);\n }\n this.node = el;\n };\n\n private defrost = (): void => {\n this.frozen = false;\n this.frozenBlur = false;\n };\n\n private getSizeClassName = () => {\n switch (this.props.size) {\n case 'large':\n return cx({\n [jsInputStyles.sizeLarge(this.theme)]: true,\n [jsInputStyles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [jsInputStyles.sizeMedium(this.theme)]: true,\n [jsInputStyles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [jsInputStyles.sizeSmall(this.theme)]: true,\n [jsInputStyles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n };\n}\n"]}
@@ -11,7 +11,7 @@ export interface InputLikeTextProps extends CommonProps, InputProps {
11
11
  onMouseDragEnd?: MouseDragEventHandler;
12
12
  takeContentWidth?: boolean;
13
13
  }
14
- export declare type InputLikeTextState = Omit<InputState, 'polyfillPlaceholder'>;
14
+ export declare type InputLikeTextState = Omit<InputState, 'needsPolyfillPlaceholder'>;
15
15
  export declare class InputLikeText extends React.Component<InputLikeTextProps, InputLikeTextState> {
16
16
  static __KONTUR_REACT_UI__: string;
17
17
  static defaultProps: {
@@ -12,6 +12,7 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
12
12
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
13
13
  import { cx } from "../../../lib/theming/Emotion";
14
14
  import { getRootNode, rootNode } from "../../../lib/rootNode";
15
+ import { getDOMRect } from "../../../lib/dom/getDOMRect";
15
16
  import { styles } from "../InternalMenu.styles";
16
17
  import { isActiveElement } from "../isActiveElement";
17
18
  export var InternalMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
@@ -86,7 +87,7 @@ export var InternalMenu = rootNode(_class = (_temp = _class2 = /*#__PURE__*/func
86
87
  }
87
88
  }
88
89
 
89
- var calculatedMaxHeight = typeof parsedMaxHeight === 'number' ? parsedMaxHeight + (_this.header && _this.header.getBoundingClientRect().height || 0) + (_this.footer && _this.footer.getBoundingClientRect().height || 0) : maxHeight;
90
+ var calculatedMaxHeight = typeof parsedMaxHeight === 'number' ? parsedMaxHeight + (_this.header && getDOMRect(_this.header).height || 0) + (_this.footer && getDOMRect(_this.footer).height || 0) : maxHeight;
90
91
 
91
92
  _this.setState({
92
93
  maxHeight: calculatedMaxHeight || 'none'
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.tsx"],"names":["React","isKeyArrowDown","isKeyArrowUp","isKeyEnter","ScrollContainer","isMenuItem","isMenuHeader","createPropsGetter","ThemeContext","cx","getRootNode","rootNode","styles","isActiveElement","InternalMenu","state","highlightedIndex","maxHeight","props","scrollState","getProps","defaultProps","renderHeader","el","header","fixedHeader","renderFooter","footer","fixedFooter","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","getBoundingClientRect","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","theme","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","root","shadow","hasShadow","width","setRootNode","preventWindowScroll","map","child","type","cloneElement","_enableIconPadding","highlight","ref","originalRef","menuItem","refHighlighted","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","cyclicSelection","length","filter","isExist","PureComponent","__KONTUR_REACT_UI__","value","undefined","ret","forEach","push"],"mappings":"uLAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,cAAT,EAAyBC,YAAzB,EAAuCC,UAAvC,QAAyD,uCAAzD;AACA,SAASC,eAAT,QAA4D,kCAA5D;AACA,SAASC,UAAT,QAAoD,2BAApD;AACA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,WAAT,EAAsBC,QAAtB,QAAoD,oBAApD;;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,eAAT,QAAgC,mBAAhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,WAAaC,YAAb,GADCH,QACD;;;;;;;;;;;;AAYSI,IAAAA,KAZT,GAY4B;AACxBC,MAAAA,gBAAgB,EAAE,CAAC,CADK;AAExBC,MAAAA,SAAS,EAAE,MAAKC,KAAL,CAAWD,SAAX,IAAwB,MAFX;AAGxBE,MAAAA,WAAW,EAAE,KAHW,EAZ5B;;;;;;;;;AAwBUC,IAAAA,QAxBV,GAwBqBb,iBAAiB,CAACO,YAAY,CAACO,YAAd,CAxBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0IUC,IAAAA,YA1IV,GA0IyB,YAAM;AAC3B;AACE;AACE,UAAA,GAAG,EAAE,aAACC,EAAD,UAAS,MAAKC,MAAL,GAAcD,EAAvB,EADP;AAEE,UAAA,SAAS,EAAEd,EAAE;AACVG,UAAAA,MAAM,CAACY,MAAP,EADU,IACQ,IADR;AAEVZ,UAAAA,MAAM,CAACa,WAAP,EAFU,IAEa,MAAKV,KAAL,CAAWI,WAAX,KAA2B,KAFxC,OAFf;;;AAOG,cAAKD,KAAL,CAAWM,MAPd,CADF;;;AAWD,KAtJH;;AAwJUE,IAAAA,YAxJV,GAwJyB,YAAM;AAC3B;AACE;AACE,UAAA,GAAG,EAAE,aAACH,EAAD,UAAS,MAAKI,MAAL,GAAcJ,EAAvB,EADP;AAEE,UAAA,SAAS,EAAEd,EAAE;AACVG,UAAAA,MAAM,CAACe,MAAP,EADU,IACQ,IADR;AAEVf,UAAAA,MAAM,CAACgB,WAAP,EAFU,IAEa,MAAKb,KAAL,CAAWI,WAAX,KAA2B,QAFxC,QAFf;;;AAOG,cAAKD,KAAL,CAAWS,MAPd,CADF;;;AAWD,KApKH;;AAsKUE,IAAAA,kBAtKV,GAsK+B,YAAY;AACvC,sBAAAnB,WAAW,+BAAX,kCAAmBoB,KAAnB;AACD,KAxKH;;AA0KUC,IAAAA,0BA1KV,GA0KuC,UAACC,SAAD,EAAmC;AACtE,wBAAgD,MAAKd,KAArD,CAAQD,SAAR,eAAQA,SAAR,CAAmBO,MAAnB,eAAmBA,MAAnB,CAA2BG,MAA3B,eAA2BA,MAA3B,CAAmCM,QAAnC,eAAmCA,QAAnC;AACA,UAAMC,aAAa,GAAGF,SAAS,CAACf,SAAhC;AACA,UAAMkB,UAAU,GAAGH,SAAS,CAACR,MAA7B;AACA,UAAMY,UAAU,GAAGJ,SAAS,CAACL,MAA7B;AACA,UAAMU,iBAAiB,GAAGrC,KAAK,CAACsC,QAAN,CAAeC,KAAf,CAAqBP,SAAS,CAACC,QAA/B,CAA1B;;AAEA;AACEhB,QAAAA,SAAS,KAAKiB,aAAd;AACAP,QAAAA,MAAM,KAAKS,UADX;AAEAZ,QAAAA,MAAM,KAAKW,UAFX;AAGAnC,QAAAA,KAAK,CAACsC,QAAN,CAAeC,KAAf,CAAqBN,QAArB,MAAmCI,iBAJrC;;AAMD,KAvLH;;AAyLUG,IAAAA,kBAzLV,GAyL+B,YAAM;AACjC,UAAQvB,SAAR,GAAsB,MAAKC,KAA3B,CAAQD,SAAR;AACA,UAAIwB,eAAe,GAAGxB,SAAtB;AACA,UAAMN,QAAQ,GAAGD,WAAW,+BAA5B;;AAEA,UAAI,OAAOO,SAAP,KAAqB,QAArB,IAAiC,OAAOyB,MAAP,KAAkB,WAAnD,IAAkE/B,QAAtE,EAAgF;AAC9E,YAAMgC,oBAAoB,GAAGD,MAAM,CAACE,gBAAP,CAAwBjC,QAAxB,EAAkCM,SAA/D;;AAEA,YAAI0B,oBAAJ,EAA0B;AACxBF,UAAAA,eAAe,GAAGI,UAAU,CAACF,oBAAD,CAA5B;AACD;AACF;;AAED,UAAMG,mBAAmB;AACvB,aAAOL,eAAP,KAA2B,QAA3B;AACIA,MAAAA,eAAe;AACb,YAAKjB,MAAL,IAAe,MAAKA,MAAL,CAAYuB,qBAAZ,GAAoCC,MAApD,IAA+D,CADjD,CAAf;AAEE,YAAKrB,MAAL,IAAe,MAAKA,MAAL,CAAYoB,qBAAZ,GAAoCC,MAApD,IAA+D,CAFhE,CADJ;AAII/B,MAAAA,SALN;;AAOA,YAAKgC,QAAL,CAAc;AACZhC,QAAAA,SAAS,EAAE6B,mBAAmB,IAAI,MADtB,EAAd;;AAGD,KAhNH;;AAkNUI,IAAAA,mBAlNV,GAkNgC,YAAM;AAClC,WAAK,IAAIC,CAAC,GAAG,MAAK/B,QAAL,GAAgBgC,wBAA7B,EAAuDD,CAAC,GAAG,CAAC,CAA5D,EAA+DA,CAAC,EAAhE,EAAoE;AAClE,cAAKE,QAAL;AACD;AACF,KAtNH;;AAwNUC,IAAAA,kBAxNV,GAwN+B,UAACC,eAAD,EAAgD;AAC3E,YAAKA,eAAL,GAAuBA,eAAvB;AACD,KA1NH;;;;;;;;;;;;;;;;;;;;AA8OUC,IAAAA,gBA9OV,GA8O6B,YAAM;AAC/B,UAAI,MAAKD,eAAL,IAAwB,MAAKE,WAAjC,EAA8C;AAC5C,cAAKF,eAAL,CAAqBG,QAArB,CAA8BhD,WAAW,CAAC,MAAK+C,WAAN,CAAzC;AACD;AACF,KAlPH;;;;;;;;;;;;;;;;;;;;;;;;AA0QUE,IAAAA,aA1QV,GA0Q0B,UAACC,KAAD,EAAyB;AAC/C,YAAKX,QAAL,CAAc,EAAEjC,gBAAgB,EAAE4C,KAApB,EAAd;AACA,uBAAAlD,WAAW,+BAAX,mCAAmBoB,KAAnB;AACD,KA7QH;;AA+QU+B,IAAAA,WA/QV,GA+QwB,YAAM;AAC1B,YAAKZ,QAAL,CAAc,EAAEjC,gBAAgB,EAAE,CAAC,CAArB,EAAd;AACD,KAjRH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+SU8C,IAAAA,MA/SV,GA+SmB,YAAM;AACrB,YAAKC,IAAL,CAAU,CAAC,CAAX;AACD,KAjTH;;AAmTUV,IAAAA,QAnTV,GAmTqB,YAAM;AACvB,YAAKU,IAAL,CAAU,CAAV;AACD,KArTH;;;;;;;AA4TUC,IAAAA,aA5TV,GA4T0B,UAACC,CAAD,EAAkD;AACxE,UAAI,OAAO,MAAK/C,KAAL,CAAWgD,SAAlB,KAAgC,UAApC,EAAgD;AAC9C,cAAKhD,KAAL,CAAWgD,SAAX,CAAqBD,CAArB;AACD;;AAED,UAAIA,CAAC,CAACE,gBAAN,EAAwB;AACtB;AACD;;AAED,UAAIjE,YAAY,CAAC+D,CAAD,CAAhB,EAAqB;AACnBA,QAAAA,CAAC,CAACG,cAAF;AACA,cAAKN,MAAL;AACD,OAHD,MAGO,IAAI7D,cAAc,CAACgE,CAAD,CAAlB,EAAuB;AAC5BA,QAAAA,CAAC,CAACG,cAAF;AACA,cAAKf,QAAL;AACD,OAHM,MAGA,IAAIlD,UAAU,CAAC8D,CAAD,CAAd,EAAmB;AACxB,YAAI,MAAKR,WAAL,IAAoB,MAAKA,WAAL,CAAiBvC,KAAjB,CAAuBmD,OAA/C,EAAwD;AACtD,gBAAKZ,WAAL,CAAiBvC,KAAjB,CAAuBmD,OAAvB,CAA+BJ,CAA/B;AACD;AACF;AACF,KAhVH;;AAkVUK,IAAAA,uBAlVV,GAkVoC,UAACnD,WAAD,EAA6C;AAC7E,UAAI,MAAKJ,KAAL,CAAWI,WAAX,KAA2BA,WAA/B,EAA4C;AAC1C,cAAK8B,QAAL,CAAc,EAAE9B,WAAW,EAAXA,WAAF,EAAd;AACD;AACF,KAtVH,0DA0BSoD,iBA1BT,GA0BE,6BAA2B,CACzB,KAAKrB,mBAAL,GACA,KAAKV,kBAAL,GACD,CA7BH,QA+BSgC,kBA/BT,GA+BE,4BAA0BxC,SAA1B,EAAgD,CAC9C,IAAI,KAAKD,0BAAL,CAAgCC,SAAhC,CAAJ,EAAgD,CAC9C,KAAKQ,kBAAL,GACD,CAED,IAAIR,SAAS,CAACf,SAAV,KAAwB,KAAKC,KAAL,CAAWD,SAAvC,EAAkD,CAChD,KAAKgC,QAAL,CAAc,EACZhC,SAAS,EAAE,KAAKC,KAAL,CAAWD,SAAX,IAAwB,MADvB,EAAd,EAGD,CACF,CAzCH,QA2CSa,KA3CT,GA2CE,iBAAe,CACb,KAAKD,kBAAL,GACD,CA7CH,QA+CS4C,MA/CT,GA+CE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CAxDH,QA0DUA,UA1DV,GA0DE,sBAAqB,wBACnB,IAAMC,iBAAiB,GAAG5E,KAAK,CAACsC,QAAN,CAAeuC,OAAf,CAAuB,KAAK3D,KAAL,CAAWe,QAAlC,EAA4C6C,IAA5C,CACxB,UAACC,CAAD,UAAO,aAAA/E,KAAK,CAACgF,cAAN,CAAqBD,CAArB,KAA2BA,CAAC,CAAC7D,KAAF,CAAQ+D,IAA1C,EADwB,CAA1B,CAIA,IAAI,KAAKC,OAAL,EAAJ,EAAoB,CAClB,OAAO,IAAP,CACD,CAED,oBACE,6BACE,SAAS,EAAEzE,EAAE,kBACVG,MAAM,CAACuE,IAAP,CAAY,KAAKT,KAAjB,CADU,IACgB,IADhB,OAEV9D,MAAM,CAACwE,MAAP,CAAc,KAAKV,KAAnB,CAFU,IAEkB,KAAKxD,KAAL,CAAWmE,SAF7B,QADf,EAKE,KAAK,EAAE,EACLC,KAAK,EAAE,KAAKpE,KAAL,CAAWoE,KADb,EAELrE,SAAS,EAAE,KAAKF,KAAL,CAAWE,SAFjB,EALT,EASE,SAAS,EAAE,KAAK+C,aATlB,EAUE,GAAG,EAAE,KAAKuB,WAVZ,EAWE,QAAQ,EAAE,CAXZ,IAaG,KAAKrE,KAAL,CAAWM,MAAX,GAAoB,KAAKF,YAAL,EAApB,GAA0C,IAb7C,eAcE,oBAAC,eAAD,IACE,GAAG,EAAE,KAAKgC,kBADZ,EAEE,SAAS,EAAE,KAAKpC,KAAL,CAAWD,SAFxB,EAGE,mBAAmB,EAAE,KAAKC,KAAL,CAAWsE,mBAHlC,EAIE,mBAAmB,EAAE,KAAKlB,uBAJ5B,IAMGtE,KAAK,CAACsC,QAAN,CAAemD,GAAf,CAAmB,KAAKvE,KAAL,CAAWe,QAA9B,EAAwC,UAACyD,KAAD,EAAQ9B,KAAR,EAAkB,CACzD,IAAI,OAAO8B,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAA9C,IAA0DA,KAAK,IAAI,IAAvE,EAA6E,CAC3E,OAAOA,KAAP,CACD,CACD,IAAI,cAAA1F,KAAK,CAACgF,cAAN,CAAqBU,KAArB,KAA+B,OAAOA,KAAK,CAACC,IAAb,KAAsB,QAAzD,EAAmE,CACjE,OAAOD,KAAP,CACD,CAED,IAAId,iBAAiB,KAAKvE,UAAU,CAACqF,KAAD,CAAV,IAAqBpF,YAAY,CAACoF,KAAD,CAAtC,CAArB,EAAqE,CACnEA,KAAK,gBAAG1F,KAAK,CAAC4F,YAAN,CAAmBF,KAAnB,EAA0B,EAChCG,kBAAkB,EAAE,IADY,EAA1B,CAAR,CAGD,CAED,IAAIhF,eAAe,CAAC6E,KAAD,CAAnB,EAA4B,CAC1B,IAAMI,SAAS,GAAG,MAAI,CAAC/E,KAAL,CAAWC,gBAAX,KAAgC4C,KAAlD,CAEA,IAAImC,GAAG,GAAGL,KAAK,CAACK,GAAhB,CACA,IAAMC,WAAW,GAAGD,GAApB,CACA,IAAID,SAAJ,EAAe,CACbC,GAAG,GAAG,aAACE,QAAD,UAAc,MAAI,CAACC,cAAL,CAAoBF,WAApB,EAAiCC,QAAjC,CAAd,EAAN,CACD,CAED,oBAAOjG,KAAK,CAAC4F,YAAN,CAA4CF,KAA5C,EAAmD,EACxDK,GAAG,EAAHA,GADwD,EAExDhF,KAAK,EAAE+E,SAAS,GAAG,OAAH,GAAaJ,KAAK,CAACxE,KAAN,CAAYH,KAFe,EAGxDsD,OAAO,EAAE,MAAI,CAAC8B,MAAL,CAAYC,IAAZ,CAAiB,MAAjB,EAAuBxC,KAAvB,EAA8B,KAA9B,CAH+C,EAIxDyC,YAAY,EAAE,sBAACC,KAAD,EAAW,CACvB,MAAI,CAAC3C,aAAL,CAAmBC,KAAnB,EACA,IAAIvD,UAAU,CAACqF,KAAD,CAAV,IAAqBA,KAAK,CAACxE,KAAN,CAAYmF,YAArC,EAAmD,CACjDX,KAAK,CAACxE,KAAN,CAAYmF,YAAZ,CAAyBC,KAAzB,EACD,CACF,CATuD,EAUxDC,YAAY,EAAE,sBAACD,KAAD,EAAW,CACvB,MAAI,CAACzC,WAAL,GACA,IAAIxD,UAAU,CAACqF,KAAD,CAAV,IAAqBA,KAAK,CAACxE,KAAN,CAAYqF,YAArC,EAAmD,CACjDb,KAAK,CAACxE,KAAN,CAAYqF,YAAZ,CAAyBD,KAAzB,EACD,CACF,CAfuD,EAAnD,CAAP,CAiBD,CAED,OAAOZ,KAAP,CACD,CA3CA,CANH,CAdF,EAiEG,KAAKxE,KAAL,CAAWS,MAAX,GAAoB,KAAKD,YAAL,EAApB,GAA0C,IAjE7C,CADF,CAqED,CAxIH,QA4NUwE,cA5NV,GA4NE,wBACEF,WADF,EAEEC,QAFF,EAGE,CACA,KAAKxC,WAAL,GAAmBwC,QAAnB,CAEA,IAAI,CAACD,WAAD,IAAgB,OAAOA,WAAP,KAAuB,QAA3C,EAAqD,CACnD,OACD,CAED,IAAI,OAAOA,WAAP,KAAuB,UAA3B,EAAuC,CACrCA,WAAW,CAACC,QAAD,CAAX,CACD,CAFD,MAEO,IAAI,OAAOD,WAAP,KAAuB,QAA3B,EAAqC,CAC1C;AACAA,MAAAA,WAAW,CAACQ,OAAZ,GAAsBP,QAAtB,CACD,CACF,CA5OH,QAoPUE,MApPV,GAoPE,gBAAevC,KAAf,EAA8B6C,gBAA9B,EAAyDH,KAAzD,EAA4G,CAC1G,IAAMI,IAAI,GAAGC,eAAe,CAAC,KAAKzF,KAAL,CAAWe,QAAZ,CAAf,CAAqC2B,KAArC,CAAb,CAEA,IAAI/C,eAAe,CAAC6F,IAAD,CAAnB,EAA2B,CACzB,IAAID,gBAAgB,IAAIC,IAAI,CAACxF,KAAL,CAAW0F,IAAnC,EAAyC,CACvC,IAAIF,IAAI,CAACxF,KAAL,CAAW2F,MAAf,EAAuB,CACrBnE,MAAM,CAACoE,IAAP,CAAYJ,IAAI,CAACxF,KAAL,CAAW0F,IAAvB,EAA6BF,IAAI,CAACxF,KAAL,CAAW2F,MAAxC,EACD,CAFD,MAEO,CACLE,QAAQ,CAACH,IAAT,GAAgBF,IAAI,CAACxF,KAAL,CAAW0F,IAA3B,CACD,CACF,CACD,IAAIF,IAAI,CAACxF,KAAL,CAAWmD,OAAf,EAAwB,CACtBqC,IAAI,CAACxF,KAAL,CAAWmD,OAAX,CAAmBiC,KAAnB,EACD,CACD,IAAI,KAAKpF,KAAL,CAAW8F,WAAf,EAA4B,CAC1B,KAAK9F,KAAL,CAAW8F,WAAX,CAAuBV,KAAvB,EACD,CACD,OAAO,IAAP,CACD,CACD,OAAO,KAAP,CACD,CAxQH,QAmRUvC,IAnRV,GAmRE,cAAakD,IAAb,EAA2B,CACzB,KAAKhE,QAAL,CAAc,UAAClC,KAAD,EAAQG,KAAR,EAAkB,CAC9B,IAAMe,QAAQ,GAAG0E,eAAe,CAACzF,KAAK,CAACe,QAAP,CAAhC,CACA,IAAI,CAACA,QAAQ,CAAC6C,IAAT,CAAcjE,eAAd,CAAL,EAAqC,CACnC,OAAO,IAAP,CACD,CACD,IAAI+C,KAAK,GAAG7C,KAAK,CAACC,gBAAlB,CACA,GAAG,CACD4C,KAAK,IAAIqD,IAAT,CACA,IAAI,CAAC/F,KAAK,CAACgG,eAAP,KAA2BtD,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG3B,QAAQ,CAACkF,MAAzD,CAAJ,EAAsE,CACpE,OAAO,IAAP,CACD,CAED,IAAIvD,KAAK,GAAG,CAAZ,EAAe,CACbA,KAAK,GAAG3B,QAAQ,CAACkF,MAAT,GAAkB,CAA1B,CACD,CAFD,MAEO,IAAIvD,KAAK,GAAG3B,QAAQ,CAACkF,MAArB,EAA6B,CAClCvD,KAAK,GAAG,CAAR,CACD,CAED,IAAM8B,KAAK,GAAGzD,QAAQ,CAAC2B,KAAD,CAAtB,CACA,IAAI/C,eAAe,CAAC6E,KAAD,CAAnB,EAA4B,CAC1B,OAAO,EAAE1E,gBAAgB,EAAE4C,KAApB,EAAP,CACD,CACF,CAhBD,QAgBSA,KAAK,KAAK7C,KAAK,CAACC,gBAhBzB,EAiBA,OAAO,IAAP,CACD,CAxBD,EAwBG,KAAKwC,gBAxBR,EAyBD,CA7SH,QAuTU0B,OAvTV,GAuTE,mBAAkB,CAChB,IAAQjD,QAAR,GAAqB,KAAKf,KAA1B,CAAQe,QAAR,CACA,OAAO,CAACA,QAAD,IAAa,CAAC0E,eAAe,CAAC1E,QAAD,CAAf,CAA0BmF,MAA1B,CAAiCC,OAAjC,EAA0CF,MAA/D,CACD,CA1TH,uBAAkCnH,KAAK,CAACsH,aAAxC,WACgBC,mBADhB,GACsC,cADtC,UAGgBlG,YAHhB,GAG+B,EAC3BiE,KAAK,EAAE,MADoB,EAE3BrE,SAAS,EAAE,GAFgB,EAG3BoE,SAAS,EAAE,IAHgB,EAI3BG,mBAAmB,EAAE,IAJM,EAK3B0B,eAAe,EAAE,IALU,EAM3B9D,wBAAwB,EAAE,CAAC,CANA,EAH/B;;AAyVA,SAASiE,OAAT,CAAiBG,KAAjB,EAA2C;AACzC,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKC,SAAnC;AACD;;AAED,SAASd,eAAT,CAAyB1E,QAAzB,EAAuE;AACrE,MAAMyF,GAAsB,GAAG,EAA/B;AACA;AACA1H,EAAAA,KAAK,CAACsC,QAAN,CAAeqF,OAAf,CAAuB1F,QAAvB,EAAiC,UAACyD,KAAD,EAAW;AAC1CgC,IAAAA,GAAG,CAACE,IAAJ,CAASlC,KAAT;AACD,GAFD;AAGA,SAAOgC,GAAP;AACD","sourcesContent":["import React from 'react';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { isMenuHeader } from '../../components/MenuHeader';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.props.maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.props.maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={{\n width: this.props.width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || child == null) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n if (enableIconPadding && (isMenuItem(child) || isMenuHeader(child))) {\n child = React.cloneElement(child, {\n _enableIconPadding: true,\n });\n }\n\n if (isActiveElement(child)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = child.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(child, {\n ref,\n state: highlight ? 'hover' : child.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(child) && child.props.onMouseEnter) {\n child.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(child) && child.props.onMouseLeave) {\n child.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return child;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n ref={(el) => (this.header = el)}\n className={cx({\n [styles.header()]: true,\n [styles.fixedHeader()]: this.state.scrollState !== 'top',\n })}\n >\n {this.props.header}\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n ref={(el) => (this.footer = el)}\n className={cx({\n [styles.footer()]: true,\n [styles.fixedFooter()]: this.state.scrollState !== 'bottom',\n })}\n >\n {this.props.footer}\n </div>\n );\n };\n\n private focusOnRootElement = (): void => {\n getRootNode(this)?.focus();\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { maxHeight, header, footer, children } = this.props;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const { maxHeight } = this.props;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && this.header.getBoundingClientRect().height) || 0) +\n ((this.footer && this.footer.getBoundingClientRect().height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-ignore see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n getRootNode(this)?.focus();\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!props.cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isExist).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction isExist(value: any): value is any {\n return value !== null && value !== undefined;\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
1
+ {"version":3,"sources":["InternalMenu.tsx"],"names":["React","isKeyArrowDown","isKeyArrowUp","isKeyEnter","ScrollContainer","isMenuItem","isMenuHeader","createPropsGetter","ThemeContext","cx","getRootNode","rootNode","getDOMRect","styles","isActiveElement","InternalMenu","state","highlightedIndex","maxHeight","props","scrollState","getProps","defaultProps","renderHeader","el","header","fixedHeader","renderFooter","footer","fixedFooter","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","theme","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","root","shadow","hasShadow","width","setRootNode","preventWindowScroll","map","child","type","cloneElement","_enableIconPadding","highlight","ref","originalRef","menuItem","refHighlighted","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","cyclicSelection","length","filter","isExist","PureComponent","__KONTUR_REACT_UI__","value","undefined","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { isMenuHeader } from '../../components/MenuHeader';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.props.maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.props.maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n\n return (\n <div\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: this.props.hasShadow,\n })}\n style={{\n width: this.props.width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={this.props.maxHeight}\n preventWindowScroll={this.props.preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || child == null) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n if (enableIconPadding && (isMenuItem(child) || isMenuHeader(child))) {\n child = React.cloneElement(child, {\n _enableIconPadding: true,\n });\n }\n\n if (isActiveElement(child)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = child.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(child, {\n ref,\n state: highlight ? 'hover' : child.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(child) && child.props.onMouseEnter) {\n child.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(child) && child.props.onMouseLeave) {\n child.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return child;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n ref={(el) => (this.header = el)}\n className={cx({\n [styles.header()]: true,\n [styles.fixedHeader()]: this.state.scrollState !== 'top',\n })}\n >\n {this.props.header}\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n ref={(el) => (this.footer = el)}\n className={cx({\n [styles.footer()]: true,\n [styles.fixedFooter()]: this.state.scrollState !== 'bottom',\n })}\n >\n {this.props.footer}\n </div>\n );\n };\n\n private focusOnRootElement = (): void => {\n getRootNode(this)?.focus();\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { maxHeight, header, footer, children } = this.props;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const { maxHeight } = this.props;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-ignore see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n this.scrollContainer.scrollTo(getRootNode(this.highlighted));\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n getRootNode(this)?.focus();\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!props.cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isExist).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction isExist(value: any): value is any {\n return value !== null && value !== undefined;\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
@@ -5,7 +5,7 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  export var styles = memoizeStyle({
7
7
  root: function root(t) {
8
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n overflow: auto;\n padding: 5px 0;\n outline: none;\n background: ", ";\n "])), t.bgSecondary);
8
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n overflow: auto;\n padding: 5px ", ";\n outline: none;\n background: ", ";\n "])), t.menuPaddingX, t.bgSecondary);
9
9
  },
10
10
  shadow: function shadow(t) {
11
11
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n border: ", ";\n box-shadow: ", ";\n "])), t.menuBorder, t.menuShadow);
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.styles.ts"],"names":["css","memoizeStyle","styles","root","t","bgSecondary","shadow","menuBorder","menuShadow","header","footer","fixedHeader","fixedFooter"],"mappings":"8MAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;;;;AAIgBI,IAAAA,CAAC,CAACC,WAJlB;;AAMD,GARgC;;AAUjCC,EAAAA,MAViC,kBAU1BF,CAV0B,EAUhB;AACf,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACG,UADd;AAEgBH,IAAAA,CAAC,CAACI,UAFlB;;AAID,GAfgC;;AAiBjCC,EAAAA,MAjBiC,oBAiBxB;AACP,WAAOT,GAAP;;;;;;;;;;AAUD,GA5BgC;;AA8BjCU,EAAAA,MA9BiC,oBA8BxB;AACP,WAAOV,GAAP;;;;;;;;;;AAUD,GAzCgC;;AA2CjCW,EAAAA,WA3CiC,yBA2CnB;AACZ,WAAOX,GAAP;;;AAGD,GA/CgC;;AAiDjCY,EAAAA,WAjDiC,yBAiDnB;AACZ,WAAOZ,GAAP;;;AAGD,GArDgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n overflow: auto;\n padding: 5px 0;\n outline: none;\n background: ${t.bgSecondary};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n\n header() {\n return css`\n top: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n footer() {\n return css`\n bottom: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n fixedHeader() {\n return css`\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n\n fixedFooter() {\n return css`\n box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["InternalMenu.styles.ts"],"names":["css","memoizeStyle","styles","root","t","menuPaddingX","bgSecondary","shadow","menuBorder","menuShadow","header","footer","fixedHeader","fixedFooter"],"mappings":"8MAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;;AAEiBI,IAAAA,CAAC,CAACC,YAFnB;;AAIgBD,IAAAA,CAAC,CAACE,WAJlB;;AAMD,GARgC;;AAUjCC,EAAAA,MAViC,kBAU1BH,CAV0B,EAUhB;AACf,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACI,UADd;AAEgBJ,IAAAA,CAAC,CAACK,UAFlB;;AAID,GAfgC;;AAiBjCC,EAAAA,MAjBiC,oBAiBxB;AACP,WAAOV,GAAP;;;;;;;;;;AAUD,GA5BgC;;AA8BjCW,EAAAA,MA9BiC,oBA8BxB;AACP,WAAOX,GAAP;;;;;;;;;;AAUD,GAzCgC;;AA2CjCY,EAAAA,WA3CiC,yBA2CnB;AACZ,WAAOZ,GAAP;;;AAGD,GA/CgC;;AAiDjCa,EAAAA,WAjDiC,yBAiDnB;AACZ,WAAOb,GAAP;;;AAGD,GArDgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n overflow: auto;\n padding: 5px ${t.menuPaddingX};\n outline: none;\n background: ${t.bgSecondary};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n\n header() {\n return css`\n top: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n footer() {\n return css`\n bottom: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n fixedHeader() {\n return css`\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n\n fixedFooter() {\n return css`\n box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n});\n"]}
@@ -5,7 +5,7 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  export var styles = memoizeStyle({
7
7
  root: function root(t) {
8
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n background: ", ";\n box-sizing: content-box;\n overflow: auto;\n padding: 0 0;\n "])), t.menuBgDefault);
8
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n background: ", ";\n border-radius: ", ";\n box-sizing: content-box;\n overflow: auto;\n padding: 0 ", ";\n border-radius: ", ";\n "])), t.menuBgDefault, t.menuBorderRadius, t.menuPaddingX, t.menuBorderRadius);
9
9
  },
10
10
  alignRight: function alignRight() {
11
11
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n flex: 1 1 100%;\n "])));
@@ -1 +1 @@
1
- {"version":3,"sources":["Menu.styles.ts"],"names":["css","memoizeStyle","styles","root","t","menuBgDefault","alignRight","alignRightIE11","alignRightIE11FixAutoWidth","scrollContainer","menuPaddingY","shadow","menuBorder","menuShadow"],"mappings":"8MAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;AACgBI,IAAAA,CAAC,CAACC,aADlB;;;;;AAMD,GARgC;;AAUjCC,EAAAA,UAViC,wBAUpB;AACX,WAAON,GAAP;;;AAGD,GAdgC;;AAgBjCO,EAAAA,cAhBiC,4BAgBhB;AACf,WAAOP,GAAP;;;;AAID,GArBgC;;AAuBjCQ,EAAAA,0BAvBiC,wCAuBJ;AAC3B,WAAOR,GAAP;;;;AAID,GA5BgC;;AA8BjCS,EAAAA,eA9BiC,2BA8BjBL,CA9BiB,EA8BP;AACxB,WAAOJ,GAAP;AACaI,IAAAA,CAAC,CAACM,YADf;;AAGD,GAlCgC;;AAoCjCC,EAAAA,MApCiC,kBAoC1BP,CApC0B,EAoChB;AACf,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACQ,UADd;AAEgBR,IAAAA,CAAC,CAACS,UAFlB;;AAID,GAzCgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n background: ${t.menuBgDefault};\n box-sizing: content-box;\n overflow: auto;\n padding: 0 0;\n `;\n },\n\n alignRight() {\n return css`\n flex: 1 1 100%;\n `;\n },\n\n alignRightIE11() {\n return css`\n float: right;\n width: 100%;\n `;\n },\n\n alignRightIE11FixAutoWidth() {\n return css`\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n `;\n },\n\n scrollContainer(t: Theme) {\n return css`\n padding: ${t.menuPaddingY} 0;\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Menu.styles.ts"],"names":["css","memoizeStyle","styles","root","t","menuBgDefault","menuBorderRadius","menuPaddingX","alignRight","alignRightIE11","alignRightIE11FixAutoWidth","scrollContainer","menuPaddingY","shadow","menuBorder","menuShadow"],"mappings":"8MAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;AACgBI,IAAAA,CAAC,CAACC,aADlB;AAEmBD,IAAAA,CAAC,CAACE,gBAFrB;;;AAKeF,IAAAA,CAAC,CAACG,YALjB;AAMmBH,IAAAA,CAAC,CAACE,gBANrB;;AAQD,GAVgC;;AAYjCE,EAAAA,UAZiC,wBAYpB;AACX,WAAOR,GAAP;;;AAGD,GAhBgC;;AAkBjCS,EAAAA,cAlBiC,4BAkBhB;AACf,WAAOT,GAAP;;;;AAID,GAvBgC;;AAyBjCU,EAAAA,0BAzBiC,wCAyBJ;AAC3B,WAAOV,GAAP;;;;AAID,GA9BgC;;AAgCjCW,EAAAA,eAhCiC,2BAgCjBP,CAhCiB,EAgCP;AACxB,WAAOJ,GAAP;AACaI,IAAAA,CAAC,CAACQ,YADf;;AAGD,GApCgC;;AAsCjCC,EAAAA,MAtCiC,kBAsC1BT,CAtC0B,EAsChB;AACf,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACU,UADd;AAEgBV,IAAAA,CAAC,CAACW,UAFlB;;AAID,GA3CgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n background: ${t.menuBgDefault};\n border-radius: ${t.menuBorderRadius};\n box-sizing: content-box;\n overflow: auto;\n padding: 0 ${t.menuPaddingX};\n border-radius: ${t.menuBorderRadius};\n `;\n },\n\n alignRight() {\n return css`\n flex: 1 1 100%;\n `;\n },\n\n alignRightIE11() {\n return css`\n float: right;\n width: 100%;\n `;\n },\n\n alignRightIE11FixAutoWidth() {\n return css`\n box-sizing: border-box !important; // override root styles\n overflow: hidden !important; // override root styles\n `;\n },\n\n scrollContainer(t: Theme) {\n return css`\n padding: ${t.menuPaddingY} 0;\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["MobilePopup.tsx"],"names":["React","Transition","ThemeContext","RenderContainer","HideBodyVerticalScroll","ZIndex","cx","jsStyles","MobilePopupHeader","MobilePopup","state","isScrolled","close","props","onCloseRequest","refContent","contentDiv","handleScrollMenu","e","scrollTop","setState","render","theme","renderMain","content","opened","onClose","appear","exit","container","containerOpened","root","rootFullHeight","useFullHeight","undefined","caption","headerChildComponent","stopPropagation","children","bg","bgShowed","withoutRenderContainer","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\n\ninterface MobilePopupProps {\n /**\n * Хэндлер, вызываемый при закрытии меню\n */\n onClose?: () => void;\n caption?: string;\n /**\n * Компонент, закрепленный сверху меню (под холдером)\n */\n headerChildComponent?: React.ReactNode;\n useFullHeight?: boolean;\n withoutRenderContainer?: boolean;\n /**\n * Хэндлер, вызываемый при клике по вуали или заголовку\n */\n onCloseRequest?: () => void;\n opened: boolean;\n}\n\ninterface MobilePopupState {\n isScrolled: boolean;\n}\n\nexport class MobilePopup extends React.Component<MobilePopupProps, MobilePopupState> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n\n private contentDiv: Nullable<HTMLDivElement>;\n private theme!: Theme;\n\n public state: MobilePopupState = {\n isScrolled: false,\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n appear={true}\n timeout={{ appear: 0, exit: 250 }}\n >\n {(state) => (\n <>\n <div\n className={cx({\n [jsStyles.container(this.theme)]: true,\n [jsStyles.containerOpened()]: state === 'entered',\n })}\n >\n <div\n className={cx({\n [jsStyles.root(this.theme)]: true,\n [jsStyles.rootFullHeight(this.theme)]: this.props.useFullHeight,\n })}\n onClick={this.props.useFullHeight ? undefined : this.close}\n >\n <MobilePopupHeader\n caption={this.props.caption}\n onClose={this.close}\n withShadow={this.state.isScrolled}\n >\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div\n onClick={(e) => e.stopPropagation()}\n className={jsStyles.content(this.theme)}\n onScroll={this.handleScrollMenu}\n ref={this.refContent}\n >\n {this.props.children}\n </div>\n </div>\n </div>\n <div\n onClick={this.close}\n className={cx({\n [jsStyles.bg()]: true,\n [jsStyles.bgShowed()]: state === 'entered',\n })}\n />\n <HideBodyVerticalScroll />\n </>\n )}\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n private refContent = (contentDiv: HTMLDivElement) => {\n this.contentDiv = contentDiv;\n };\n\n private handleScrollMenu = (e: React.UIEvent<HTMLDivElement>) => {\n if (this.contentDiv) {\n const isScrolled = this.contentDiv.scrollTop > 0;\n\n if (isScrolled !== this.state.isScrolled) {\n this.setState({ isScrolled });\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["MobilePopup.tsx"],"names":["React","Transition","ThemeContext","RenderContainer","HideBodyVerticalScroll","ZIndex","cx","jsStyles","MobilePopupHeader","MobilePopup","state","isScrolled","close","props","onCloseRequest","refContent","contentDiv","handleScrollMenu","e","scrollTop","setState","render","theme","renderMain","content","opened","onClose","appear","exit","container","containerOpened","root","rootFullHeight","useFullHeight","undefined","caption","headerChildComponent","stopPropagation","children","bg","bgShowed","withoutRenderContainer","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transition } from 'react-transition-group';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Nullable } from '../../typings/utility-types';\nimport { RenderContainer } from '../RenderContainer';\nimport { HideBodyVerticalScroll } from '../HideBodyVerticalScroll';\nimport { ZIndex } from '../ZIndex';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { jsStyles } from './MobilePopup.styles';\nimport { MobilePopupHeader } from './MobilePopupHeader';\n\ninterface MobilePopupProps {\n /**\n * Хэндлер, вызываемый при закрытии меню\n */\n onClose?: () => void;\n caption?: string;\n /**\n * Компонент, закрепленный сверху меню (под холдером)\n */\n headerChildComponent?: React.ReactNode;\n useFullHeight?: boolean;\n withoutRenderContainer?: boolean;\n /**\n * Хэндлер, вызываемый при клике по вуали или заголовку\n */\n onCloseRequest?: () => void;\n opened: boolean;\n}\n\ninterface MobilePopupState {\n isScrolled: boolean;\n}\n\nexport class MobilePopup extends React.Component<MobilePopupProps, MobilePopupState> {\n public static __KONTUR_REACT_UI__ = 'MobileMenuHeader';\n\n private contentDiv: Nullable<HTMLDivElement>;\n private theme!: Theme;\n\n public state: MobilePopupState = {\n isScrolled: false,\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const content = (\n <ZIndex priority={'MobilePopup'}>\n <Transition\n in={this.props.opened}\n onExited={this.props.onClose}\n mountOnEnter\n unmountOnExit\n appear\n timeout={{ appear: 0, exit: 250 }}\n >\n {(state) => (\n <>\n <div\n className={cx({\n [jsStyles.container(this.theme)]: true,\n [jsStyles.containerOpened()]: state === 'entered',\n })}\n >\n <div\n className={cx({\n [jsStyles.root(this.theme)]: true,\n [jsStyles.rootFullHeight(this.theme)]: this.props.useFullHeight,\n })}\n onClick={this.props.useFullHeight ? undefined : this.close}\n >\n <MobilePopupHeader\n caption={this.props.caption}\n onClose={this.close}\n withShadow={this.state.isScrolled}\n >\n {this.props.headerChildComponent}\n </MobilePopupHeader>\n <div\n onClick={(e) => e.stopPropagation()}\n className={jsStyles.content(this.theme)}\n onScroll={this.handleScrollMenu}\n ref={this.refContent}\n >\n {this.props.children}\n </div>\n </div>\n </div>\n <div\n onClick={this.close}\n className={cx({\n [jsStyles.bg()]: true,\n [jsStyles.bgShowed()]: state === 'entered',\n })}\n />\n <HideBodyVerticalScroll />\n </>\n )}\n </Transition>\n </ZIndex>\n );\n\n if (this.props.withoutRenderContainer) {\n return content;\n }\n\n return <RenderContainer>{content}</RenderContainer>;\n }\n\n public close = () => {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest();\n }\n };\n\n private refContent = (contentDiv: HTMLDivElement) => {\n this.contentDiv = contentDiv;\n };\n\n private handleScrollMenu = (e: React.UIEvent<HTMLDivElement>) => {\n if (this.contentDiv) {\n const isScrolled = this.contentDiv.scrollTop > 0;\n\n if (isScrolled !== this.state.isScrolled) {\n this.setState({ isScrolled });\n }\n }\n };\n}\n"]}