@skbkontur/react-ui 4.0.6 → 4.1.2-fix-zindex

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 (822) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +1 -1
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +3 -0
  4. package/cjs/components/Autocomplete/Autocomplete.js +20 -7
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +4 -5
  7. package/cjs/components/Button/Button.js +8 -12
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Center/Center.d.ts +3 -0
  10. package/cjs/components/Center/Center.js +8 -3
  11. package/cjs/components/Center/Center.js.map +1 -1
  12. package/cjs/components/Checkbox/Checkbox.d.ts +8 -0
  13. package/cjs/components/Checkbox/Checkbox.js +37 -3
  14. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  15. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -0
  16. package/cjs/components/Checkbox/Checkbox.styles.js +27 -24
  17. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  18. package/cjs/components/CurrencyInput/CurrencyHelper.js +18 -12
  19. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  20. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +3 -0
  21. package/cjs/components/CurrencyInput/CurrencyInput.js +23 -10
  22. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  23. package/cjs/components/CurrencyInput/CurrencyInputHelper.js +7 -5
  24. package/cjs/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  25. package/cjs/components/CurrencyInput/CursorHelper.js +19 -16
  26. package/cjs/components/CurrencyInput/CursorHelper.js.map +1 -1
  27. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  28. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -2
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  30. package/cjs/components/DateInput/DateInput.js +5 -1
  31. package/cjs/components/DateInput/DateInput.js.map +1 -1
  32. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  33. package/cjs/components/DateInput/helpers/InternalDateMediator.js +12 -2
  34. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  35. package/cjs/components/DateInput/helpers/inputNumber.d.ts +1 -1
  36. package/cjs/components/DateInput/helpers/inputNumber.js +45 -12
  37. package/cjs/components/DateInput/helpers/inputNumber.js.map +1 -1
  38. package/cjs/components/DatePicker/DatePicker.d.ts +5 -0
  39. package/cjs/components/DatePicker/DatePicker.js +14 -3
  40. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  41. package/cjs/components/DatePicker/Picker.js +7 -2
  42. package/cjs/components/DatePicker/Picker.js.map +1 -1
  43. package/cjs/components/Dropdown/Dropdown.d.ts +3 -0
  44. package/cjs/components/Dropdown/Dropdown.js +7 -2
  45. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  46. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  47. package/cjs/components/DropdownMenu/DropdownMenu.js +2 -16
  48. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  49. package/cjs/components/FileUploader/FileUploader.d.ts +5 -0
  50. package/cjs/components/FileUploader/FileUploader.js +18 -9
  51. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  52. package/cjs/components/FileUploader/FileUploader.styles.d.ts +3 -2
  53. package/cjs/components/FileUploader/FileUploader.styles.js +21 -15
  54. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  55. package/cjs/components/FxInput/FxInput.d.ts +3 -0
  56. package/cjs/components/FxInput/FxInput.js +7 -3
  57. package/cjs/components/FxInput/FxInput.js.map +1 -1
  58. package/cjs/components/Gapped/Gapped.d.ts +4 -0
  59. package/cjs/components/Gapped/Gapped.js +13 -7
  60. package/cjs/components/Gapped/Gapped.js.map +1 -1
  61. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  62. package/cjs/components/GlobalLoader/GlobalLoader.js +9 -7
  63. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  64. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +5 -7
  65. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  66. package/cjs/components/Group/Group.d.ts +3 -0
  67. package/cjs/components/Group/Group.js +80 -33
  68. package/cjs/components/Group/Group.js.map +1 -1
  69. package/cjs/components/Input/Input.d.ts +4 -5
  70. package/cjs/components/Input/Input.js +21 -24
  71. package/cjs/components/Input/Input.js.map +1 -1
  72. package/cjs/components/Kebab/Kebab.d.ts +2 -13
  73. package/cjs/components/Kebab/Kebab.js +5 -29
  74. package/cjs/components/Kebab/Kebab.js.map +1 -1
  75. package/cjs/components/Link/Link.d.ts +3 -0
  76. package/cjs/components/Link/Link.js +7 -3
  77. package/cjs/components/Link/Link.js.map +1 -1
  78. package/cjs/components/Loader/Loader.d.ts +4 -0
  79. package/cjs/components/Loader/Loader.js +8 -3
  80. package/cjs/components/Loader/Loader.js.map +1 -1
  81. package/cjs/components/MenuHeader/MenuHeader.d.ts +3 -0
  82. package/cjs/components/MenuHeader/MenuHeader.js +7 -2
  83. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  84. package/cjs/components/MenuItem/MenuItem.d.ts +4 -0
  85. package/cjs/components/MenuItem/MenuItem.js +10 -4
  86. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  87. package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
  88. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  89. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  90. package/cjs/components/MenuSeparator/MenuSeparator.js +7 -3
  91. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  92. package/cjs/components/Modal/Modal.d.ts +5 -0
  93. package/cjs/components/Modal/Modal.js +10 -3
  94. package/cjs/components/Modal/Modal.js.map +1 -1
  95. package/cjs/components/Modal/Modal.styles.js +10 -6
  96. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  97. package/cjs/components/Modal/ModalClose.js +3 -2
  98. package/cjs/components/Modal/ModalClose.js.map +1 -1
  99. package/cjs/components/Modal/ModalFooter.d.ts +3 -0
  100. package/cjs/components/Modal/ModalFooter.js +8 -3
  101. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  102. package/cjs/components/Modal/ModalHeader.d.ts +3 -0
  103. package/cjs/components/Modal/ModalHeader.js +9 -3
  104. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  105. package/cjs/components/Paging/Paging.d.ts +20 -3
  106. package/cjs/components/Paging/Paging.js +29 -10
  107. package/cjs/components/Paging/Paging.js.map +1 -1
  108. package/cjs/components/Paging/PagingDefaultComponent.d.ts +9 -0
  109. package/cjs/components/Paging/PagingDefaultComponent.js +21 -0
  110. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -0
  111. package/cjs/components/PasswordInput/PasswordInput.d.ts +7 -0
  112. package/cjs/components/PasswordInput/PasswordInput.js +36 -11
  113. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  114. package/cjs/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  115. package/cjs/components/PasswordInput/PasswordInputIcon.js +15 -0
  116. package/cjs/components/PasswordInput/PasswordInputIcon.js.map +1 -0
  117. package/cjs/components/Radio/Radio.d.ts +3 -0
  118. package/cjs/components/Radio/Radio.js +7 -3
  119. package/cjs/components/Radio/Radio.js.map +1 -1
  120. package/cjs/components/Radio/Radio.styles.js +4 -7
  121. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  122. package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -0
  123. package/cjs/components/RadioGroup/RadioGroup.js +22 -5
  124. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  125. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +7 -2
  126. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  127. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +3 -4
  128. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  129. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  130. package/cjs/components/ScrollContainer/ScrollContainer.js +14 -4
  131. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  132. package/cjs/components/Select/Select.d.ts +3 -0
  133. package/cjs/components/Select/Select.js +43 -17
  134. package/cjs/components/Select/Select.js.map +1 -1
  135. package/cjs/components/SidePage/SidePage.d.ts +4 -0
  136. package/cjs/components/SidePage/SidePage.js +9 -3
  137. package/cjs/components/SidePage/SidePage.js.map +1 -1
  138. package/cjs/components/SidePage/SidePageBody.d.ts +3 -0
  139. package/cjs/components/SidePage/SidePageBody.js +10 -3
  140. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  141. package/cjs/components/SidePage/SidePageContainer.d.ts +3 -0
  142. package/cjs/components/SidePage/SidePageContainer.js +7 -2
  143. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  144. package/cjs/components/SidePage/SidePageFooter.d.ts +3 -0
  145. package/cjs/components/SidePage/SidePageFooter.js +11 -3
  146. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  147. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -0
  148. package/cjs/components/SidePage/SidePageHeader.js +9 -4
  149. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  150. package/cjs/components/Spinner/Spinner.d.ts +3 -1
  151. package/cjs/components/Spinner/Spinner.js +8 -8
  152. package/cjs/components/Spinner/Spinner.js.map +1 -1
  153. package/cjs/components/Spinner/SpinnerFallbackAnimation.js +16 -5
  154. package/cjs/components/Spinner/SpinnerFallbackAnimation.js.map +1 -1
  155. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  156. package/cjs/components/Sticky/Sticky.js +7 -3
  157. package/cjs/components/Sticky/Sticky.js.map +1 -1
  158. package/cjs/components/Switcher/Switcher.d.ts +3 -0
  159. package/cjs/components/Switcher/Switcher.js +7 -3
  160. package/cjs/components/Switcher/Switcher.js.map +1 -1
  161. package/cjs/components/Switcher/Switcher.styles.js +2 -2
  162. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  163. package/cjs/components/Tabs/Indicator.js +4 -2
  164. package/cjs/components/Tabs/Indicator.js.map +1 -1
  165. package/cjs/components/Tabs/Tab.d.ts +3 -0
  166. package/cjs/components/Tabs/Tab.js +7 -2
  167. package/cjs/components/Tabs/Tab.js.map +1 -1
  168. package/cjs/components/Tabs/Tabs.d.ts +4 -0
  169. package/cjs/components/Tabs/Tabs.js +12 -3
  170. package/cjs/components/Tabs/Tabs.js.map +1 -1
  171. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  172. package/cjs/components/Textarea/Textarea.js +14 -9
  173. package/cjs/components/Textarea/Textarea.js.map +1 -1
  174. package/cjs/components/Textarea/TextareaCounter.d.ts +1 -2
  175. package/cjs/components/Textarea/TextareaCounter.js +21 -12
  176. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  177. package/cjs/components/Toast/Toast.d.ts +6 -0
  178. package/cjs/components/Toast/Toast.js +9 -2
  179. package/cjs/components/Toast/Toast.js.map +1 -1
  180. package/cjs/components/Toast/ToastStatic.js +1 -1
  181. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  182. package/cjs/components/Toast/ToastView.js +6 -5
  183. package/cjs/components/Toast/ToastView.js.map +1 -1
  184. package/cjs/components/Toast/ToastView.styles.d.ts +1 -1
  185. package/cjs/components/Toast/ToastView.styles.js +3 -2
  186. package/cjs/components/Toast/ToastView.styles.js.map +1 -1
  187. package/cjs/components/Toggle/Toggle.d.ts +4 -1
  188. package/cjs/components/Toggle/Toggle.js +7 -3
  189. package/cjs/components/Toggle/Toggle.js.map +1 -1
  190. package/cjs/components/Toggle/Toggle.styles.js +12 -10
  191. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  192. package/cjs/components/Token/Token.d.ts +3 -0
  193. package/cjs/components/Token/Token.js +20 -3
  194. package/cjs/components/Token/Token.js.map +1 -1
  195. package/cjs/components/Token/Token.styles.js +13 -6
  196. package/cjs/components/Token/Token.styles.js.map +1 -1
  197. package/cjs/components/TokenInput/TokenInput.d.ts +14 -0
  198. package/cjs/components/TokenInput/TokenInput.js +36 -13
  199. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  200. package/cjs/components/TokenInput/TokenInput.styles.js +3 -2
  201. package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
  202. package/cjs/components/TokenInput/TokenInputMenu.js +4 -3
  203. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  204. package/cjs/components/Tooltip/Tooltip.d.ts +3 -0
  205. package/cjs/components/Tooltip/Tooltip.js +12 -4
  206. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  207. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -1
  208. package/cjs/components/TooltipMenu/TooltipMenu.js +9 -2
  209. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  210. package/cjs/hooks/useDrop.js +3 -1
  211. package/cjs/hooks/useDrop.js.map +1 -1
  212. package/cjs/index.d.ts +2 -0
  213. package/cjs/index.js +2 -0
  214. package/cjs/index.js.map +1 -1
  215. package/cjs/internal/Calendar/Calendar.d.ts +6 -0
  216. package/cjs/internal/Calendar/Calendar.js +12 -5
  217. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  218. package/cjs/internal/Calendar/CalendarDateShape.d.ts +1 -1
  219. package/cjs/internal/Calendar/MonthView.js +5 -4
  220. package/cjs/internal/Calendar/MonthView.js.map +1 -1
  221. package/cjs/internal/Calendar/MonthViewModel.js +36 -17
  222. package/cjs/internal/Calendar/MonthViewModel.js.map +1 -1
  223. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  224. package/cjs/internal/CommonWrapper/CommonWrapper.js +7 -5
  225. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  226. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  227. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +28 -5
  228. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  229. package/cjs/internal/CustomComboBox/ComboBoxView.js +4 -2
  230. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  231. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  232. package/cjs/internal/CustomComboBox/CustomComboBox.js +9 -4
  233. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  234. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  235. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +35 -35
  236. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  237. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  238. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  239. package/cjs/internal/DataTids/DataTids.js +46 -0
  240. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  241. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  242. package/cjs/internal/DataTids/DataTids.styles.js +41 -0
  243. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  244. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  245. package/cjs/internal/DataTids/componentsDataTids.js +16 -0
  246. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  247. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -0
  248. package/cjs/internal/DateSelect/DateSelect.js +28 -12
  249. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  250. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +3 -1
  251. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  252. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  253. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +14 -6
  254. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  255. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  256. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +6 -2
  257. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  258. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +14 -10
  259. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  260. package/cjs/internal/InputLikeText/InputLikeText.d.ts +5 -1
  261. package/cjs/internal/InputLikeText/InputLikeText.js +10 -4
  262. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  263. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -0
  264. package/cjs/internal/InternalMenu/InternalMenu.js +10 -12
  265. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  266. package/cjs/internal/InternalMenu/InternalMenu.styles.js +2 -2
  267. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  268. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  269. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js +16 -0
  270. package/cjs/internal/InternalMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  271. package/cjs/internal/MaskedInput/MaskedInput.d.ts +3 -0
  272. package/cjs/internal/MaskedInput/MaskedInput.js +16 -5
  273. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  274. package/cjs/internal/Menu/Menu.d.ts +3 -0
  275. package/cjs/internal/Menu/Menu.js +22 -21
  276. package/cjs/internal/Menu/Menu.js.map +1 -1
  277. package/cjs/internal/Menu/Menu.styles.js +5 -3
  278. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  279. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  280. package/cjs/internal/MobilePopup/MobilePopup.js +10 -3
  281. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  282. package/cjs/internal/Popup/Popup.d.ts +6 -0
  283. package/cjs/internal/Popup/Popup.js +18 -13
  284. package/cjs/internal/Popup/Popup.js.map +1 -1
  285. package/cjs/internal/Popup/PopupPin.js +2 -1
  286. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  287. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -0
  288. package/cjs/internal/PopupMenu/PopupMenu.js +22 -4
  289. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  290. package/cjs/internal/PopupMenu/validatePositions.js +6 -6
  291. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  292. package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  293. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  294. package/cjs/internal/RenderContainer/RenderInnerContainer.js +9 -1
  295. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  296. package/cjs/internal/RenderLayer/RenderLayer.js +4 -1
  297. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  298. package/cjs/internal/ThemePlayground/Playground.js +11 -19
  299. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  300. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  301. package/cjs/internal/ThemePlayground/SizesGroup.js +20 -0
  302. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -0
  303. package/cjs/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  304. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +14 -2
  305. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  306. package/cjs/internal/ThemePlayground/ThemeEditor.js +6 -1
  307. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  308. package/cjs/internal/ThemePlayground/VariableValue.js +18 -6
  309. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  310. package/cjs/internal/ThemePlayground/constants.d.ts +3 -1
  311. package/cjs/internal/ThemePlayground/constants.js +3 -1
  312. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  313. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +4 -7
  314. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  315. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  316. package/cjs/internal/ThemeShowcase/VariablesCollector.js +5 -6
  317. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  318. package/cjs/internal/ZIndex/ZIndex.d.ts +8 -0
  319. package/cjs/internal/ZIndex/ZIndex.js +25 -3
  320. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  321. package/cjs/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  322. package/cjs/internal/ZIndex/ZIndexStorage.js +13 -6
  323. package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
  324. package/cjs/internal/icons/16px/index.d.ts +19 -19
  325. package/cjs/internal/icons/16px/index.js +45 -38
  326. package/cjs/internal/icons/16px/index.js.map +1 -1
  327. package/cjs/internal/icons/20px/svg.js +6 -0
  328. package/cjs/internal/icons/20px/svg.js.map +1 -1
  329. package/cjs/internal/themes/DefaultTheme.d.ts +20 -1
  330. package/cjs/internal/themes/DefaultTheme.js +40 -5
  331. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  332. package/cjs/internal/themes/NotFlat.d.ts +6 -0
  333. package/cjs/internal/themes/NotFlat.js +12 -2
  334. package/cjs/internal/themes/NotFlat.js.map +1 -1
  335. package/cjs/internal/themes/Theme2022.d.ts +66 -0
  336. package/cjs/internal/themes/Theme2022.js +100 -0
  337. package/cjs/internal/themes/Theme2022.js.map +1 -0
  338. package/cjs/internal/themes/Theme2022Dark.d.ts +5 -0
  339. package/cjs/internal/themes/Theme2022Dark.js +9 -0
  340. package/cjs/internal/themes/Theme2022Dark.js.map +1 -0
  341. package/cjs/lib/animation/index.d.ts +1 -1
  342. package/cjs/lib/animation/index.js +3 -3
  343. package/cjs/lib/animation/index.js.map +1 -1
  344. package/cjs/lib/date/InternalDate.js +23 -9
  345. package/cjs/lib/date/InternalDate.js.map +1 -1
  346. package/cjs/lib/date/InternalDateCalculator.js +16 -2
  347. package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
  348. package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
  349. package/cjs/lib/date/InternalDateGetter.js +27 -7
  350. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  351. package/cjs/lib/date/InternalDateTransformer.js +11 -2
  352. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  353. package/cjs/lib/date/InternalDateValidator.js +52 -17
  354. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  355. package/cjs/lib/date/types.d.ts +4 -0
  356. package/cjs/lib/date/types.js.map +1 -1
  357. package/cjs/lib/events/MouseDrag.js +5 -1
  358. package/cjs/lib/events/MouseDrag.js.map +1 -1
  359. package/cjs/lib/events/keyboard/extractCode.js +7 -5
  360. package/cjs/lib/events/keyboard/extractCode.js.map +1 -1
  361. package/cjs/lib/needsPolyfillPlaceholder.d.ts +6 -0
  362. package/cjs/lib/needsPolyfillPlaceholder.js +19 -0
  363. package/cjs/lib/needsPolyfillPlaceholder.js.map +1 -0
  364. package/cjs/lib/rootNode/getRootNode.d.ts +9 -0
  365. package/cjs/lib/rootNode/getRootNode.js +37 -8
  366. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  367. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +9 -1
  368. package/cjs/lib/rootNode/rootNodeDecorator.js +11 -2
  369. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  370. package/cjs/lib/stringUtils.js +3 -1
  371. package/cjs/lib/stringUtils.js.map +1 -1
  372. package/cjs/lib/styles/ColorFactory.js +9 -9
  373. package/cjs/lib/styles/ColorFactory.js.map +1 -1
  374. package/cjs/lib/styles/ColorHelpers.d.ts +1 -0
  375. package/cjs/lib/styles/ColorHelpers.js +33 -10
  376. package/cjs/lib/styles/ColorHelpers.js.map +1 -1
  377. package/cjs/lib/styles/ColorObject.js +3 -2
  378. package/cjs/lib/styles/ColorObject.js.map +1 -1
  379. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  380. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js +9 -0
  381. package/cjs/lib/styles/getLabGrotesqueBaselineCompensation.js.map +1 -0
  382. package/cjs/lib/taskWithDelayAndMinimalDuration.js +3 -1
  383. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  384. package/cjs/lib/theming/Emotion.js +5 -2
  385. package/cjs/lib/theming/Emotion.js.map +1 -1
  386. package/cjs/lib/theming/ThemeFactory.js +5 -1
  387. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  388. package/cjs/lib/theming/ThemeHelpers.js +7 -2
  389. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  390. package/cjs/lib/theming/themes/Theme2022.d.ts +1 -0
  391. package/cjs/lib/theming/themes/Theme2022.js +6 -0
  392. package/cjs/lib/theming/themes/Theme2022.js.map +1 -0
  393. package/cjs/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  394. package/cjs/lib/theming/themes/Theme2022Dark.js +9 -0
  395. package/cjs/lib/theming/themes/Theme2022Dark.js.map +1 -0
  396. package/cjs/lib/utils.d.ts +15 -0
  397. package/cjs/lib/utils.js +45 -9
  398. package/cjs/lib/utils.js.map +1 -1
  399. package/components/Autocomplete/Autocomplete/Autocomplete.js +16 -11
  400. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  401. package/components/Autocomplete/Autocomplete.d.ts +3 -0
  402. package/components/Button/Button/Button.js +8 -10
  403. package/components/Button/Button/Button.js.map +1 -1
  404. package/components/Button/Button.d.ts +4 -5
  405. package/components/Center/Center/Center.js +10 -5
  406. package/components/Center/Center/Center.js.map +1 -1
  407. package/components/Center/Center.d.ts +3 -0
  408. package/components/Checkbox/Checkbox/Checkbox.js +33 -2
  409. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  410. package/components/Checkbox/Checkbox.d.ts +8 -0
  411. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +22 -18
  412. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  413. package/components/Checkbox/Checkbox.styles.d.ts +1 -0
  414. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +12 -11
  415. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  416. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +30 -17
  417. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  418. package/components/CurrencyInput/CurrencyInput.d.ts +3 -0
  419. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js +7 -1
  420. package/components/CurrencyInput/CurrencyInputHelper/CurrencyInputHelper.js.map +1 -1
  421. package/components/CurrencyInput/CursorHelper/CursorHelper.js +18 -11
  422. package/components/CurrencyInput/CursorHelper/CursorHelper.js.map +1 -1
  423. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +6 -1
  424. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  425. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -0
  426. package/components/DateInput/DateInput/DateInput.js +9 -1
  427. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  428. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +16 -10
  429. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  430. package/components/DateInput/helpers/InternalDateMediator.d.ts +2 -2
  431. package/components/DateInput/helpers/inputNumber/inputNumber.js +53 -16
  432. package/components/DateInput/helpers/inputNumber/inputNumber.js.map +1 -1
  433. package/components/DateInput/helpers/inputNumber.d.ts +1 -1
  434. package/components/DatePicker/DatePicker/DatePicker.js +6 -0
  435. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  436. package/components/DatePicker/DatePicker.d.ts +5 -0
  437. package/components/DatePicker/Picker/Picker.js +3 -1
  438. package/components/DatePicker/Picker/Picker.js.map +1 -1
  439. package/components/Dropdown/Dropdown/Dropdown.js +9 -5
  440. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  441. package/components/Dropdown/Dropdown.d.ts +3 -0
  442. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -16
  443. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  444. package/components/DropdownMenu/DropdownMenu.d.ts +1 -4
  445. package/components/FileUploader/FileUploader/FileUploader.js +18 -9
  446. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  447. package/components/FileUploader/FileUploader.d.ts +5 -0
  448. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +15 -12
  449. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  450. package/components/FileUploader/FileUploader.styles.d.ts +3 -2
  451. package/components/FxInput/FxInput/FxInput.js +6 -2
  452. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  453. package/components/FxInput/FxInput.d.ts +3 -0
  454. package/components/Gapped/Gapped/Gapped.js +16 -8
  455. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  456. package/components/Gapped/Gapped.d.ts +4 -0
  457. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +9 -8
  458. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  459. package/components/GlobalLoader/GlobalLoader.d.ts +3 -0
  460. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +1 -2
  461. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  462. package/components/Group/Group/Group.js +66 -30
  463. package/components/Group/Group/Group.js.map +1 -1
  464. package/components/Group/Group.d.ts +3 -0
  465. package/components/Input/Input/Input.js +18 -31
  466. package/components/Input/Input/Input.js.map +1 -1
  467. package/components/Input/Input.d.ts +4 -5
  468. package/components/Kebab/Kebab/Kebab.js +3 -13
  469. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  470. package/components/Kebab/Kebab.d.ts +2 -13
  471. package/components/Link/Link/Link.js +10 -5
  472. package/components/Link/Link/Link.js.map +1 -1
  473. package/components/Link/Link.d.ts +3 -0
  474. package/components/Loader/Loader/Loader.js +10 -6
  475. package/components/Loader/Loader/Loader.js.map +1 -1
  476. package/components/Loader/Loader.d.ts +4 -0
  477. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  478. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  479. package/components/MenuHeader/MenuHeader.d.ts +3 -0
  480. package/components/MenuItem/MenuItem/MenuItem.js +15 -9
  481. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  482. package/components/MenuItem/MenuItem.d.ts +4 -0
  483. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  484. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  485. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +4 -0
  486. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  487. package/components/MenuSeparator/MenuSeparator.d.ts +3 -0
  488. package/components/Modal/Modal/Modal.js +9 -3
  489. package/components/Modal/Modal/Modal.js.map +1 -1
  490. package/components/Modal/Modal.d.ts +5 -0
  491. package/components/Modal/Modal.styles/Modal.styles.js +4 -4
  492. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  493. package/components/Modal/ModalClose/ModalClose.js +2 -1
  494. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  495. package/components/Modal/ModalFooter/ModalFooter.js +5 -1
  496. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  497. package/components/Modal/ModalFooter.d.ts +3 -0
  498. package/components/Modal/ModalHeader/ModalHeader.js +5 -1
  499. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  500. package/components/Modal/ModalHeader.d.ts +3 -0
  501. package/components/Paging/Paging/Paging.js +24 -18
  502. package/components/Paging/Paging/Paging.js.map +1 -1
  503. package/components/Paging/Paging.d.ts +20 -3
  504. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js +19 -0
  505. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -0
  506. package/components/Paging/PagingDefaultComponent/package.json +6 -0
  507. package/components/Paging/PagingDefaultComponent.d.ts +9 -0
  508. package/components/PasswordInput/PasswordInput/PasswordInput.js +39 -14
  509. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  510. package/components/PasswordInput/PasswordInput.d.ts +7 -0
  511. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js +15 -0
  512. package/components/PasswordInput/PasswordInputIcon/PasswordInputIcon.js.map +1 -0
  513. package/components/PasswordInput/PasswordInputIcon/package.json +6 -0
  514. package/components/PasswordInput/PasswordInputIcon.d.ts +3 -0
  515. package/components/Radio/Radio/Radio.js +10 -5
  516. package/components/Radio/Radio/Radio.js.map +1 -1
  517. package/components/Radio/Radio.d.ts +3 -0
  518. package/components/Radio/Radio.styles/Radio.styles.js +2 -1
  519. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  520. package/components/RadioGroup/RadioGroup/RadioGroup.js +25 -13
  521. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  522. package/components/RadioGroup/RadioGroup.d.ts +9 -0
  523. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +5 -0
  524. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  525. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +3 -3
  526. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  527. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +6 -1
  528. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  529. package/components/ScrollContainer/ScrollContainer.d.ts +4 -0
  530. package/components/Select/Select/Select.js +35 -15
  531. package/components/Select/Select/Select.js.map +1 -1
  532. package/components/Select/Select.d.ts +3 -0
  533. package/components/SidePage/SidePage/SidePage.js +8 -3
  534. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  535. package/components/SidePage/SidePage.d.ts +4 -0
  536. package/components/SidePage/SidePageBody/SidePageBody.js +10 -6
  537. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  538. package/components/SidePage/SidePageBody.d.ts +3 -0
  539. package/components/SidePage/SidePageContainer/SidePageContainer.js +10 -6
  540. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  541. package/components/SidePage/SidePageContainer.d.ts +3 -0
  542. package/components/SidePage/SidePageFooter/SidePageFooter.js +10 -6
  543. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  544. package/components/SidePage/SidePageFooter.d.ts +3 -0
  545. package/components/SidePage/SidePageHeader/SidePageHeader.js +12 -7
  546. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  547. package/components/SidePage/SidePageHeader.d.ts +4 -0
  548. package/components/Spinner/Spinner/Spinner.js +14 -6
  549. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  550. package/components/Spinner/Spinner.d.ts +3 -1
  551. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js +18 -4
  552. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js.map +1 -1
  553. package/components/Sticky/Sticky/Sticky.js +4 -0
  554. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  555. package/components/Sticky/Sticky.d.ts +3 -0
  556. package/components/Switcher/Switcher/Switcher.js +4 -0
  557. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  558. package/components/Switcher/Switcher.d.ts +3 -0
  559. package/components/Switcher/Switcher.styles/Switcher.styles.js +1 -1
  560. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  561. package/components/Tabs/Indicator/Indicator.js +2 -0
  562. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  563. package/components/Tabs/Tab/Tab.js +4 -0
  564. package/components/Tabs/Tab/Tab.js.map +1 -1
  565. package/components/Tabs/Tab.d.ts +3 -0
  566. package/components/Tabs/Tabs/Tabs.js +11 -6
  567. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  568. package/components/Tabs/Tabs.d.ts +4 -0
  569. package/components/Textarea/Textarea/Textarea.js +21 -15
  570. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  571. package/components/Textarea/Textarea.d.ts +6 -2
  572. package/components/Textarea/TextareaCounter/TextareaCounter.js +13 -2
  573. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  574. package/components/Textarea/TextareaCounter.d.ts +1 -2
  575. package/components/Toast/Toast/Toast.js +16 -10
  576. package/components/Toast/Toast/Toast.js.map +1 -1
  577. package/components/Toast/Toast.d.ts +6 -0
  578. package/components/Toast/ToastStatic/ToastStatic.js +2 -2
  579. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  580. package/components/Toast/ToastView/ToastView.js +5 -4
  581. package/components/Toast/ToastView/ToastView.js.map +1 -1
  582. package/components/Toast/ToastView.styles/ToastView.styles.js +2 -2
  583. package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
  584. package/components/Toast/ToastView.styles.d.ts +1 -1
  585. package/components/Toggle/Toggle/Toggle.js +8 -4
  586. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  587. package/components/Toggle/Toggle.d.ts +4 -1
  588. package/components/Toggle/Toggle.styles/Toggle.styles.js +3 -4
  589. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  590. package/components/Token/Token/Token.js +16 -1
  591. package/components/Token/Token/Token.js.map +1 -1
  592. package/components/Token/Token.d.ts +3 -0
  593. package/components/Token/Token.styles/Token.styles.js +11 -4
  594. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  595. package/components/TokenInput/TokenInput/TokenInput.js +30 -16
  596. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  597. package/components/TokenInput/TokenInput.d.ts +14 -0
  598. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
  599. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
  600. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -0
  601. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  602. package/components/Tooltip/Tooltip/Tooltip.js +9 -2
  603. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  604. package/components/Tooltip/Tooltip.d.ts +3 -0
  605. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +18 -12
  606. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  607. package/components/TooltipMenu/TooltipMenu.d.ts +4 -1
  608. package/hooks/useDrop/useDrop.js +5 -1
  609. package/hooks/useDrop/useDrop.js.map +1 -1
  610. package/index.d.ts +2 -0
  611. package/index.js +2 -0
  612. package/index.js.map +1 -1
  613. package/internal/Calendar/Calendar/Calendar.js +13 -5
  614. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  615. package/internal/Calendar/Calendar.d.ts +6 -0
  616. package/internal/Calendar/CalendarDateShape.d.ts +1 -1
  617. package/internal/Calendar/MonthView/MonthView.js +4 -3
  618. package/internal/Calendar/MonthView/MonthView.js.map +1 -1
  619. package/internal/Calendar/MonthViewModel/MonthViewModel.js +35 -18
  620. package/internal/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  621. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +7 -8
  622. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  623. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -0
  624. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +34 -19
  625. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  626. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -0
  627. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -0
  628. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  629. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +21 -17
  630. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  631. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -0
  632. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +35 -35
  633. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  634. package/internal/CustomComboBox/CustomComboBoxReducer.d.ts +16 -16
  635. package/internal/DataTids/DATATIDS.md +12 -0
  636. package/internal/DataTids/DataTids/DataTids.js +69 -0
  637. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  638. package/internal/DataTids/DataTids/package.json +6 -0
  639. package/internal/DataTids/DataTids.d.ts +12 -0
  640. package/internal/DataTids/DataTids.styles/DataTids.styles.js +22 -0
  641. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  642. package/internal/DataTids/DataTids.styles/package.json +6 -0
  643. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  644. package/internal/DataTids/componentsDataTids/componentsDataTids.js +14 -0
  645. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  646. package/internal/DataTids/componentsDataTids/package.json +6 -0
  647. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  648. package/internal/DateSelect/DateSelect/DateSelect.js +27 -17
  649. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  650. package/internal/DateSelect/DateSelect.d.ts +4 -0
  651. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +5 -1
  652. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  653. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +12 -5
  654. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  655. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +7 -0
  656. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -1
  657. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  658. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +3 -0
  659. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -0
  660. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  661. package/internal/InputLikeText/InputLikeText/InputLikeText.js +8 -2
  662. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  663. package/internal/InputLikeText/InputLikeText.d.ts +5 -1
  664. package/internal/InternalMenu/InternalMenu/InternalMenu.js +18 -21
  665. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  666. package/internal/InternalMenu/InternalMenu.d.ts +3 -0
  667. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +1 -1
  668. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  669. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js +14 -0
  670. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/addIconPaddingIfPartOfMenu.js.map +1 -0
  671. package/internal/InternalMenu/addIconPaddingIfPartOfMenu/package.json +6 -0
  672. package/internal/InternalMenu/addIconPaddingIfPartOfMenu.d.ts +2 -0
  673. package/internal/MaskedInput/MaskedInput/MaskedInput.js +14 -3
  674. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  675. package/internal/MaskedInput/MaskedInput.d.ts +3 -0
  676. package/internal/Menu/Menu/Menu.js +15 -19
  677. package/internal/Menu/Menu/Menu.js.map +1 -1
  678. package/internal/Menu/Menu.d.ts +3 -0
  679. package/internal/Menu/Menu.styles/Menu.styles.js +1 -1
  680. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  681. package/internal/MobilePopup/MobilePopup/MobilePopup.js +6 -0
  682. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  683. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  684. package/internal/Popup/Popup/Popup.js +15 -9
  685. package/internal/Popup/Popup/Popup.js.map +1 -1
  686. package/internal/Popup/Popup.d.ts +6 -0
  687. package/internal/Popup/PopupPin/PopupPin.js +2 -0
  688. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  689. package/internal/PopupMenu/PopupMenu/PopupMenu.js +15 -2
  690. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  691. package/internal/PopupMenu/PopupMenu.d.ts +8 -0
  692. package/internal/PopupMenu/validatePositions/validatePositions.js +6 -6
  693. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  694. package/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  695. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -2
  696. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  697. package/internal/RenderContainer/RenderInnerContainer.d.ts +9 -1
  698. package/internal/RenderLayer/RenderLayer/RenderLayer.js +5 -1
  699. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  700. package/internal/ThemePlayground/Playground/Playground.js +15 -29
  701. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  702. package/internal/ThemePlayground/SizesGroup/SizesGroup.js +29 -0
  703. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -0
  704. package/internal/ThemePlayground/SizesGroup/package.json +6 -0
  705. package/internal/ThemePlayground/SizesGroup.d.ts +4 -0
  706. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +14 -2
  707. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  708. package/internal/ThemePlayground/ThemeContextPlayground.d.ts +4 -0
  709. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js +5 -1
  710. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  711. package/internal/ThemePlayground/VariableValue/VariableValue.js +16 -5
  712. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  713. package/internal/ThemePlayground/constants/constants.js +2 -0
  714. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  715. package/internal/ThemePlayground/constants.d.ts +3 -1
  716. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +3 -6
  717. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  718. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +4 -6
  719. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  720. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  721. package/internal/ZIndex/ZIndex/ZIndex.js +23 -8
  722. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  723. package/internal/ZIndex/ZIndex.d.ts +8 -0
  724. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +12 -6
  725. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
  726. package/internal/ZIndex/ZIndexStorage.d.ts +2 -1
  727. package/internal/icons/16px/index/index.js +28 -20
  728. package/internal/icons/16px/index/index.js.map +1 -1
  729. package/internal/icons/16px/index.d.ts +19 -19
  730. package/internal/icons/20px/svg/svg.js +5 -0
  731. package/internal/icons/20px/svg/svg.js.map +1 -1
  732. package/internal/themes/DefaultTheme/DefaultTheme.js +48 -4
  733. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  734. package/internal/themes/DefaultTheme.d.ts +20 -1
  735. package/internal/themes/NotFlat/NotFlat.js +15 -0
  736. package/internal/themes/NotFlat/NotFlat.js.map +1 -1
  737. package/internal/themes/NotFlat.d.ts +6 -0
  738. package/internal/themes/Theme2022/Theme2022.js +78 -0
  739. package/internal/themes/Theme2022/Theme2022.js.map +1 -0
  740. package/internal/themes/Theme2022/package.json +6 -0
  741. package/internal/themes/Theme2022.d.ts +66 -0
  742. package/internal/themes/Theme2022Dark/Theme2022Dark.js +17 -0
  743. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  744. package/internal/themes/Theme2022Dark/package.json +6 -0
  745. package/internal/themes/Theme2022Dark.d.ts +5 -0
  746. package/lib/animation/index/index.js +1 -1
  747. package/lib/animation/index/index.js.map +1 -1
  748. package/lib/animation/index.d.ts +1 -1
  749. package/lib/date/InternalDate/InternalDate.js +16 -1
  750. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  751. package/lib/date/InternalDateCalculator/InternalDateCalculator.js +14 -2
  752. package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
  753. package/lib/date/InternalDateGetter/InternalDateGetter.js +23 -7
  754. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  755. package/lib/date/InternalDateGetter.d.ts +1 -1
  756. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +11 -1
  757. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  758. package/lib/date/InternalDateValidator/InternalDateValidator.js +75 -34
  759. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  760. package/lib/date/types/types.js.map +1 -1
  761. package/lib/date/types.d.ts +4 -0
  762. package/lib/events/MouseDrag/MouseDrag.js +5 -1
  763. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  764. package/lib/events/keyboard/extractCode/extractCode.js +5 -5
  765. package/lib/events/keyboard/extractCode/extractCode.js.map +1 -1
  766. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js +21 -0
  767. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js.map +1 -0
  768. package/lib/needsPolyfillPlaceholder/package.json +6 -0
  769. package/lib/needsPolyfillPlaceholder.d.ts +6 -0
  770. package/lib/rootNode/getRootNode/getRootNode.js +36 -8
  771. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  772. package/lib/rootNode/getRootNode.d.ts +9 -0
  773. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +3 -1
  774. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  775. package/lib/rootNode/rootNodeDecorator.d.ts +9 -1
  776. package/lib/stringUtils/stringUtils.js +4 -1
  777. package/lib/stringUtils/stringUtils.js.map +1 -1
  778. package/lib/styles/ColorFactory/ColorFactory.js +9 -9
  779. package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
  780. package/lib/styles/ColorHelpers/ColorHelpers.js +26 -9
  781. package/lib/styles/ColorHelpers/ColorHelpers.js.map +1 -1
  782. package/lib/styles/ColorHelpers.d.ts +1 -0
  783. package/lib/styles/ColorObject/ColorObject.js +2 -2
  784. package/lib/styles/ColorObject/ColorObject.js.map +1 -1
  785. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js +9 -0
  786. package/lib/styles/getLabGrotesqueBaselineCompensation/getLabGrotesqueBaselineCompensation.js.map +1 -0
  787. package/lib/styles/getLabGrotesqueBaselineCompensation/package.json +6 -0
  788. package/lib/styles/getLabGrotesqueBaselineCompensation.d.ts +1 -0
  789. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +4 -1
  790. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  791. package/lib/theming/Emotion/Emotion.js +5 -2
  792. package/lib/theming/Emotion/Emotion.js.map +1 -1
  793. package/lib/theming/ThemeFactory/ThemeFactory.js +5 -2
  794. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  795. package/lib/theming/ThemeHelpers/ThemeHelpers.js +5 -1
  796. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  797. package/lib/theming/themes/Theme2022/Theme2022.js +4 -0
  798. package/lib/theming/themes/Theme2022/Theme2022.js.map +1 -0
  799. package/lib/theming/themes/Theme2022/package.json +6 -0
  800. package/lib/theming/themes/Theme2022.d.ts +1 -0
  801. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js +5 -0
  802. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js.map +1 -0
  803. package/lib/theming/themes/Theme2022Dark/package.json +6 -0
  804. package/lib/theming/themes/Theme2022Dark.d.ts +1 -0
  805. package/lib/utils/utils.js +42 -6
  806. package/lib/utils/utils.js.map +1 -1
  807. package/lib/utils.d.ts +15 -0
  808. package/package.json +5 -6
  809. package/cjs/components/Button/Corners.d.ts +0 -6
  810. package/cjs/components/Button/Corners.js +0 -5
  811. package/cjs/components/Button/Corners.js.map +0 -1
  812. package/cjs/lib/polyfillPlaceholder.d.ts +0 -1
  813. package/cjs/lib/polyfillPlaceholder.js +0 -17
  814. package/cjs/lib/polyfillPlaceholder.js.map +0 -1
  815. package/components/Button/Corners/Corners.js +0 -6
  816. package/components/Button/Corners/Corners.js.map +0 -1
  817. package/components/Button/Corners/package.json +0 -6
  818. package/components/Button/Corners.d.ts +0 -6
  819. package/lib/polyfillPlaceholder/package.json +0 -6
  820. package/lib/polyfillPlaceholder/polyfillPlaceholder.js +0 -12
  821. package/lib/polyfillPlaceholder/polyfillPlaceholder.js.map +0 -1
  822. package/lib/polyfillPlaceholder.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","styles","Loader","props","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","type","caption","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\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 { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
1
+ {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","styles","LoaderDataTids","veil","spinner","Loader","props","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","type","caption","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\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 { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
@@ -33,6 +33,10 @@ export interface LoaderState {
33
33
  isLoaderActive: boolean;
34
34
  spinnerStyle?: object;
35
35
  }
36
+ export declare const LoaderDataTids: {
37
+ readonly veil: "Loader__Veil";
38
+ readonly spinner: "Loader__Spinner";
39
+ };
36
40
  /**
37
41
  * DRAFT - лоадер-контейнер
38
42
  */
@@ -5,6 +5,9 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
5
5
  import { CommonWrapper } from "../../../internal/CommonWrapper";
6
6
  import { cx } from "../../../lib/theming/Emotion";
7
7
  import { styles } from "../MenuHeader.styles";
8
+ export var MenuHeaderDataTids = {
9
+ root: 'MenuHeader__root'
10
+ };
8
11
  /**
9
12
  * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
10
13
  *
@@ -23,6 +26,7 @@ function MenuHeader(_ref) {
23
26
 
24
27
  var theme = useContext(ThemeContext);
25
28
  return /*#__PURE__*/React.createElement(CommonWrapper, rest, /*#__PURE__*/React.createElement("div", {
29
+ "data-tid": MenuHeaderDataTids.root,
26
30
  className: cx((_cx = {}, _cx[styles.root(theme)] = true, _cx[styles.withLeftPadding(theme)] = _enableIconPadding, _cx))
27
31
  }, children));
28
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeader","_enableIconPadding","children","rest","theme","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGT,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,IAAnB;AACE;AACE,MAAA,SAAS,EAAEL,EAAE;AACVC,MAAAA,MAAM,CAACM,IAAP,CAAYD,KAAZ,CADU,IACW,IADX;AAEVL,MAAAA,MAAM,CAACO,eAAP,CAAuBF,KAAvB,CAFU,IAEsBH,kBAFtB,OADf;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACO,mBAAX,GAAiC,YAAjC;AACAP,UAAU,CAACQ,eAAX,GAA6B,IAA7B;;AAEA,SAASR,UAAT;;AAEA,OAAO,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAhB,KAAK,CAACiB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["MenuHeader.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","cx","styles","MenuHeaderDataTids","root","MenuHeader","_enableIconPadding","children","rest","theme","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"uJAAA,OAAOA,KAAP,IAA2BC,UAA3B,QAA6C,OAA7C;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,MAAT,QAAuB,qBAAvB;;;;;;;AAOA,OAAO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B,EAA3B;;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAGX,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBS,IAAnB;AACE;AACE,kBAAUL,kBAAkB,CAACC,IAD/B;AAEE,MAAA,SAAS,EAAEH,EAAE;AACVC,MAAAA,MAAM,CAACE,IAAP,CAAYK,KAAZ,CADU,IACW,IADX;AAEVP,MAAAA,MAAM,CAACQ,eAAP,CAAuBD,KAAvB,CAFU,IAEsBH,kBAFtB,OAFf;;;AAOGC,IAAAA,QAPH,CADF,CADF;;;;AAaD;;AAEDF,UAAU,CAACM,mBAAX,GAAiC,YAAjC;AACAN,UAAU,CAACO,eAAX,GAA6B,IAA7B;;AAEA,SAASP,UAAT;;AAEA,OAAO,IAAMQ,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,aAAAjB,KAAK,CAACkB,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\nexport const MenuHeaderDataTids = {\n root: 'MenuHeader__root',\n} as const;\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={MenuHeaderDataTids.root}\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
@@ -4,6 +4,9 @@ export interface MenuHeaderProps extends CommonProps {
4
4
  _enableIconPadding?: boolean;
5
5
  children: ReactNode;
6
6
  }
7
+ export declare const MenuHeaderDataTids: {
8
+ readonly root: "MenuHeader__root";
9
+ };
7
10
  /**
8
11
  * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
9
12
  *
@@ -13,14 +13,18 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
13
13
  import { cx } from "../../../lib/theming/Emotion";
14
14
  import { rootNode } from "../../../lib/rootNode/rootNodeDecorator";
15
15
  import { styles } from "../MenuItem.styles";
16
- export
16
+ export var MenuItemDataTids = {
17
+ root: 'MenuItem__root',
18
+ comment: 'MenuItem__comment'
19
+ };
17
20
  /**
18
- *
19
- * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
20
- *
21
- * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
22
- */
23
- var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
21
+ *
22
+ * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
23
+ *
24
+ * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
25
+ */
26
+
27
+ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
24
28
  _inheritsLoose(MenuItem, _React$Component);
25
29
 
26
30
  function MenuItem() {
@@ -67,14 +71,16 @@ var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
67
71
 
68
72
  var Component = _this.getComponent();
69
73
 
70
- return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
74
+ return /*#__PURE__*/React.createElement(Component, _extends({
75
+ "data-tid": MenuItemDataTids.root
76
+ }, rest, {
71
77
  state: state,
72
78
  onMouseOver: _this.handleMouseEnterFix,
73
79
  onMouseLeave: _this.handleMouseLeave,
74
80
  className: className,
75
81
  tabIndex: -1
76
82
  }), iconElement, content, _this.props.comment && /*#__PURE__*/React.createElement("div", {
77
- "data-tid": "MenuItem__comment",
83
+ "data-tid": MenuItemDataTids.comment,
78
84
  className: cx((_cx2 = {}, _cx2[styles.comment(_this.theme)] = true, _cx2[styles.commentHover(_this.theme)] = hover, _cx2))
79
85
  }, comment));
80
86
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItem","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","theme","className","root","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\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<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","mouseEntered","renderMain","props","link","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\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<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n data-tid={MenuItemDataTids.root}\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -64,6 +64,10 @@ export interface MenuItemProps extends CommonProps {
64
64
  component?: React.ComponentType<any>;
65
65
  isMobile?: boolean;
66
66
  }
67
+ export declare const MenuItemDataTids: {
68
+ readonly root: "MenuItem__root";
69
+ readonly comment: "MenuItem__comment";
70
+ };
67
71
  /**
68
72
  *
69
73
  * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
@@ -10,7 +10,7 @@ export var styles = memoizeStyle({
10
10
  var legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);
11
11
  var paddingX = legacyPaddingX !== 0 ? parseFloat(t.menuItemPaddingX) + legacyPaddingX + "px" : t.menuItemPaddingX;
12
12
  var paddingY = legacyPaddingY !== 0 ? parseFloat(t.menuItemPaddingY) + legacyPaddingY + "px" : t.menuItemPaddingY;
13
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: block;\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n color: ", ";\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX, t.menuItemTextColor);
13
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: block;\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n color: ", ";\n border-radius: ", ";\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX, t.menuItemTextColor, t.menuItemBorderRadius);
14
14
  },
15
15
  rootMobile: function rootMobile(t) {
16
16
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.fontSizeMobile, t.lineHeightMobile, t.menuItemPaddingMobile);
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","t","legacyPaddingX","parseFloat","menuItemLegacyPaddingX","legacyPaddingY","menuItemLegacyPaddingY","paddingX","menuItemPaddingX","paddingY","menuItemPaddingY","menuItemLineHeight","menuItemFontSize","menuItemTextColor","rootMobile","fontSizeMobile","lineHeightMobile","menuItemPaddingMobile","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift"],"mappings":";AACA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;AACA,SAASC,WAAT,QAA4B,yBAA5B;;AAEA,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;AACjCG,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,cAAc,GAAGC,UAAU,CAACF,CAAC,CAACG,sBAAH,CAAjC;AACA,QAAMC,cAAc,GAAGF,UAAU,CAACF,CAAC,CAACK,sBAAH,CAAjC;;AAEA,QAAMC,QAAQ,GAAGL,cAAc,KAAK,CAAnB,GAA0BC,UAAU,CAACF,CAAC,CAACO,gBAAH,CAAV,GAAiCN,cAA3D,UAAgFD,CAAC,CAACO,gBAAnG;AACA,QAAMC,QAAQ,GAAGJ,cAAc,KAAK,CAAnB,GAA0BF,UAAU,CAACF,CAAC,CAACS,gBAAH,CAAV,GAAiCL,cAA3D,UAAgFJ,CAAC,CAACS,gBAAnG;;AAEA,WAAOd,GAAP;AACIE,IAAAA,WAAW,EADf;;;;AAKiBG,IAAAA,CAAC,CAACU,kBALnB;AAMeV,IAAAA,CAAC,CAACW,gBANjB;AAOaX,IAAAA,CAAC,CAACS,gBAPf,EAOmCH,QAPnC,EAO+CE,QAP/C,EAO2DR,CAAC,CAACO,gBAP7D;;;AAUWP,IAAAA,CAAC,CAACY,iBAVb;;;;;;AAgBD,GAxBgC;;AA0BjCC,EAAAA,UA1BiC,sBA0BtBb,CA1BsB,EA0BZ;AACnB,WAAOL,GAAP;AACeK,IAAAA,CAAC,CAACc,cADjB;AAEiBd,IAAAA,CAAC,CAACe,gBAFnB;AAGaf,IAAAA,CAAC,CAACgB,qBAHf;;AAKD,GAhCgC;;AAkCjCC,EAAAA,KAlCiC,iBAkC3BjB,CAlC2B,EAkCjB;AACd;AACA,WAAOL,GAAP;AACgBK,IAAAA,CAAC,CAACkB,eADlB;AAEWlB,IAAAA,CAAC,CAACmB,kBAFb;;AAID,GAxCgC;AAyCjCC,EAAAA,QAzCiC,oBAyCxBpB,CAzCwB,EAyCd;AACjB,WAAOL,GAAP;AACgBK,IAAAA,CAAC,CAACqB,kBADlB;;AAGD,GA7CgC;AA8CjCC,EAAAA,QA9CiC,oBA8CxBtB,CA9CwB,EA8Cd;AACjB,WAAOL,GAAP;;AAEWK,IAAAA,CAAC,CAACuB,qBAFb;;;AAKD,GApDgC;AAqDjCC,EAAAA,IArDiC,gBAqD5BxB,CArD4B,EAqDlB;AACb,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACyB,iBADb;;AAGD,GAzDgC;AA0DjCC,EAAAA,KA1DiC,mBA0DzB;AACN,WAAO/B,GAAP;;;AAGD,GA9DgC;AA+DjCgC,EAAAA,QA/DiC,oBA+DxB3B,CA/DwB,EA+Dd;AACjB,WAAOL,GAAP;AACkBK,IAAAA,CAAC,CAAC4B,sBADpB;;AAGD,GAnEgC;AAoEjCC,EAAAA,OApEiC,mBAoEzB7B,CApEyB,EAoEf;AAChB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAAC8B,oBADb;;;AAID,GAzEgC;AA0EjCC,EAAAA,YA1EiC,wBA0EpB/B,CA1EoB,EA0EV;AACrB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACgC,yBADb;;;AAID,GA/EgC;AAgFjCC,EAAAA,IAhFiC,gBAgF5BjC,CAhF4B,EAgFlB;AACb,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACkC,iBADb;;;AAIUC,IAAAA,QAAQ,CAACnC,CAAC,CAACO,gBAAH,CAAR,GAA+B4B,QAAQ,CAACnC,CAAC,CAACoC,wBAAH,CAJjD;AAKSpC,IAAAA,CAAC,CAACS,gBALX;AAM0BT,IAAAA,CAAC,CAACqC,uBAN5B;;AAQD,GAzFgC,EAAD,CAA3B","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const legacyPaddingX = parseFloat(t.menuItemLegacyPaddingX);\n const legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);\n\n const paddingX = legacyPaddingX !== 0 ? `${parseFloat(t.menuItemPaddingX) + legacyPaddingX}px` : t.menuItemPaddingX;\n const paddingY = legacyPaddingY !== 0 ? `${parseFloat(t.menuItemPaddingY) + legacyPaddingY}px` : t.menuItemPaddingY;\n\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: block;\n line-height: ${t.menuItemLineHeight};\n font-size: ${t.menuItemFontSize};\n padding: ${t.menuItemPaddingY} ${paddingX} ${paddingY} ${t.menuItemPaddingX};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n\n button& {\n min-width: 100%;\n }\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.fontSizeMobile};\n line-height: ${t.lineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: transparent;\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n link(t: Theme) {\n return css`\n color: ${t.menuItemLinkColor};\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIcon(t: Theme) {\n return css`\n padding-left: ${t.menuItemPaddingForIcon};\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n white-space: normal;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: 0.6;\n `;\n },\n icon(t: Theme) {\n return css`\n width: ${t.menuItemIconWidth};\n display: inline-block;\n position: absolute;\n left: ${parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin)}px;\n top: ${t.menuItemPaddingY};\n transform: translateY(${t.menuItemIconLegacyShift});\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","t","legacyPaddingX","parseFloat","menuItemLegacyPaddingX","legacyPaddingY","menuItemLegacyPaddingY","paddingX","menuItemPaddingX","paddingY","menuItemPaddingY","menuItemLineHeight","menuItemFontSize","menuItemTextColor","menuItemBorderRadius","rootMobile","fontSizeMobile","lineHeightMobile","menuItemPaddingMobile","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift"],"mappings":"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","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const legacyPaddingX = parseFloat(t.menuItemLegacyPaddingX);\n const legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);\n\n const paddingX = legacyPaddingX !== 0 ? `${parseFloat(t.menuItemPaddingX) + legacyPaddingX}px` : t.menuItemPaddingX;\n const paddingY = legacyPaddingY !== 0 ? `${parseFloat(t.menuItemPaddingY) + legacyPaddingY}px` : t.menuItemPaddingY;\n\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: block;\n line-height: ${t.menuItemLineHeight};\n font-size: ${t.menuItemFontSize};\n padding: ${t.menuItemPaddingY} ${paddingX} ${paddingY} ${t.menuItemPaddingX};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n border-radius: ${t.menuItemBorderRadius};\n\n button& {\n min-width: 100%;\n }\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.fontSizeMobile};\n line-height: ${t.lineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: transparent;\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n link(t: Theme) {\n return css`\n color: ${t.menuItemLinkColor};\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIcon(t: Theme) {\n return css`\n padding-left: ${t.menuItemPaddingForIcon};\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n white-space: normal;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: 0.6;\n `;\n },\n icon(t: Theme) {\n return css`\n width: ${t.menuItemIconWidth};\n display: inline-block;\n position: absolute;\n left: ${parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin)}px;\n top: ${t.menuItemPaddingY};\n transform: translateY(${t.menuItemIconLegacyShift});\n `;\n },\n});\n"]}
@@ -2,6 +2,9 @@ import React, { useContext } from 'react';
2
2
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
3
3
  import { CommonWrapper } from "../../../internal/CommonWrapper";
4
4
  import { styles } from "../MenuSeparator.styles";
5
+ export var MenuSeparatorDataTids = {
6
+ root: 'MenuSeparator__root'
7
+ };
5
8
  /**
6
9
  * Добавляет разделительную линию между элементами меню.
7
10
  *
@@ -11,6 +14,7 @@ import { styles } from "../MenuSeparator.styles";
11
14
  function MenuSeparator(props) {
12
15
  var theme = useContext(ThemeContext);
13
16
  return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("div", {
17
+ "data-tid": MenuSeparatorDataTids.root,
14
18
  className: styles.root(theme)
15
19
  }));
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparator","props","theme","root","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGN,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBI,KAAnB;AACE,iCAAK,SAAS,EAAEF,MAAM,CAACI,IAAP,CAAYD,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACI,mBAAd,GAAoC,eAApC;;AAEA,SAASJ,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
1
+ {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparatorDataTids","root","MenuSeparator","props","theme","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;;AAIA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;AAGP;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGR,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBM,KAAnB;AACE,iCAAK,YAAUH,qBAAqB,CAACC,IAArC,EAA2C,SAAS,EAAEF,MAAM,CAACE,IAAP,CAAYG,KAAZ,CAAtD,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACG,mBAAd,GAAoC,eAApC;;AAEA,SAASH,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n\nexport const MenuSeparatorDataTids = {\n root: 'MenuSeparator__root',\n} as const;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div data-tid={MenuSeparatorDataTids.root} className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
@@ -1,5 +1,8 @@
1
1
  import { CommonProps } from '../../internal/CommonWrapper';
2
2
  export declare type MenuSeparatorProps = CommonProps;
3
+ export declare const MenuSeparatorDataTids: {
4
+ readonly root: "MenuSeparator__root";
5
+ };
3
6
  /**
4
7
  * Добавляет разделительную линию между элементами меню.
5
8
  *
@@ -3,6 +3,7 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  import React from 'react';
4
4
  import FocusLock from 'react-focus-lock';
5
5
  import throttle from 'lodash.throttle';
6
+ import { isNonNullable } from "../../../lib/utils";
6
7
  import { isKeyEscape } from "../../../lib/events/keyboard/identifiers";
7
8
  import * as LayoutEvents from "../../../lib/LayoutEvents";
8
9
  import { RenderContainer } from "../../../internal/RenderContainer";
@@ -23,6 +24,11 @@ import { ModalBody } from "../ModalBody";
23
24
  import { ModalClose } from "../ModalClose";
24
25
  import { styles } from "../Modal.styles";
25
26
  var mountedModalsCount = 0;
27
+ export var ModalDataTids = {
28
+ container: 'modal-container',
29
+ content: 'modal-content',
30
+ close: 'modal-close'
31
+ };
26
32
  /**
27
33
  * Модальное окно
28
34
  *
@@ -199,7 +205,7 @@ export var Modal = /*#__PURE__*/function (_React$Component) {
199
205
 
200
206
  window.removeEventListener('keydown', this.handleKeyDown);
201
207
 
202
- if (this.stackSubscription != null) {
208
+ if (isNonNullable(this.stackSubscription)) {
203
209
  this.stackSubscription.remove();
204
210
  }
205
211
 
@@ -269,7 +275,7 @@ export var Modal = /*#__PURE__*/function (_React$Component) {
269
275
  onMouseDown: this.handleContainerMouseDown,
270
276
  onMouseUp: this.handleContainerMouseUp,
271
277
  onClick: this.handleContainerClick,
272
- "data-tid": "modal-container"
278
+ "data-tid": ModalDataTids.container
273
279
  }, /*#__PURE__*/React.createElement(ResponsiveLayout, null, function (_ref) {
274
280
  var _cx, _cx2, _cx3, _cx4, _cx5;
275
281
 
@@ -277,7 +283,7 @@ export var Modal = /*#__PURE__*/function (_React$Component) {
277
283
  return /*#__PURE__*/React.createElement("div", {
278
284
  className: cx((_cx = {}, _cx[styles.centerContainer(_this3.theme)] = true, _cx[styles.mobileCenterContainer()] = isMobile, _cx[styles.alignTop()] = Boolean(_this3.props.alignTop), _cx)),
279
285
  style: isMobile ? undefined : containerStyle,
280
- "data-tid": "modal-content"
286
+ "data-tid": ModalDataTids.content
281
287
  }, /*#__PURE__*/React.createElement("div", {
282
288
  className: cx((_cx2 = {}, _cx2[styles.window(_this3.theme)] = true, _cx2[styles.mobileWindow()] = isMobile, _cx2)),
283
289
  style: isMobile ? undefined : style
@@ -1 +1 @@
1
- {"version":3,"sources":["Modal.tsx"],"names":["React","FocusLock","throttle","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","ResponsiveLayout","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","mountedModalsCount","Modal","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","componentDidMount","add","window","addEventListener","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","modalContextProps","noClose","close","additionalPadding","style","containerStyle","width","root","bg","container","isMobile","centerContainer","mobileCenterContainer","alignTop","Boolean","undefined","mobileWindow","disableFocusLock","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWithoutHeader","children","Component","__KONTUR_REACT_UI__","Header","Body","Footer","defaultProps"],"mappings":"4JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAOC,QAAP,MAAqB,iBAArB;;AAEA,SAASC,WAAT,QAA4B,uCAA5B;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,eAAT,QAAgC,kCAAhC;AACA,SAASC,sBAAT,QAAuC,uCAAvC;AACA,SAASC,UAAT,QAAmD,sBAAnD;AACA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;;AAEA,SAASC,YAAT,QAAgD,gBAAhD;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,MAAT,QAAuB,gBAAvB;;AAEA,IAAIC,kBAAkB,GAAG,CAAzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAaC,KAAb;;;;;;;;;;;;AAYSC,IAAAA,KAZT,GAY6B;AACzBC,MAAAA,aAAa,EAAE,CADU;AAEzBC,MAAAA,aAAa,EAAE,IAFU;AAGzBC,MAAAA,gBAAgB,EAAE,KAHO;AAIzBC,MAAAA,SAAS,EAAE,KAJc;AAKzBC,MAAAA,SAAS,EAAE,KALc;AAMzBC,MAAAA,QAAQ,EAAE,KANe,EAZ7B;;;;AAsBUC,IAAAA,iBAtBV,GAsB6D,IAtB7D;AAuBUC,IAAAA,aAvBV,GAuBiD,IAvBjD;AAwBUC,IAAAA,eAxBV,GAwBgD,IAxBhD;AAyBUC,IAAAA,aAzBV,GAyB8C,IAzB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6KUC,IAAAA,YA7KV,GA6KyB,YAAM;AAC3B,UAAI,MAAKC,KAAL,CAAWC,YAAf,EAA6B;AAC3B;AACD;AACD,UAAI,MAAKD,KAAL,CAAWE,OAAf,EAAwB;AACtB,cAAKF,KAAL,CAAWE,OAAX;AACD;AACF,KApLH;;AAsLUC,IAAAA,YAtLV,GAsLyB,UAACC,MAAD,EAAmC;AACxD,YAAKR,aAAL,GAAqBQ,MAArB;AACD,KAxLH;;AA0LUC,IAAAA,iBA1LV,GA0L8B,UAACC,KAAD,EAAuC;AACjE,YAAKC,QAAL,CAAc,EAAElB,aAAa,EAAEiB,KAAK,CAACE,OAAN,+BAAjB,EAAsClB,aAAa,EAAEjB,UAAU,CAACoC,UAAX,+BAArD,EAAd;AACD,KA5LH;;AA8LUC,IAAAA,wBA9LV,GA8LqC,UAACC,KAAD,EAA6B;AAC9D,YAAKd,eAAL,GAAuBc,KAAK,CAACC,MAA7B;AACD,KAhMH;;AAkMUC,IAAAA,sBAlMV,GAkMmC,UAACF,KAAD,EAA6B;AAC5D,YAAKb,aAAL,GAAqBa,KAAK,CAACC,MAA3B;AACD,KApMH;;AAsMUE,IAAAA,oBAtMV,GAsMiC,UAACH,KAAD,EAA6C;AAC1E,UAAI,CAAC,MAAKX,KAAL,CAAWe,qBAAhB,EAAuC;AACrC,YAAQH,MAAR,GAAkCD,KAAlC,CAAQC,MAAR,CAAgBI,aAAhB,GAAkCL,KAAlC,CAAgBK,aAAhB;AACA,YAAIJ,MAAM,KAAKI,aAAX,IAA4B,MAAKnB,eAAL,KAAyBmB,aAArD,IAAsE,MAAKlB,aAAL,KAAuBkB,aAAjG,EAAgH;AAC9G,gBAAKjB,YAAL;AACD;AACF;AACF,KA7MH;;AA+MUkB,IAAAA,aA/MV,GA+M0B,UAACC,CAAD,EAAsB;AAC5C,UAAI,MAAK9B,KAAL,CAAWC,aAAX,KAA6B,CAAjC,EAAoC;AAClC;AACD;AACD,UAAItB,WAAW,CAACmD,CAAD,CAAf,EAAoB;AAClB/C,QAAAA,eAAe,CAAC+C,CAAD,CAAf;AACA,cAAKnB,YAAL;AACD;AACF,KAvNH;;AAyNUoB,IAAAA,+BAzNV,GAyN4C,YAAM;AAC9C,UAAIC,SAAS,GAAG,KAAhB;;AAEA,UAAI,MAAKxB,aAAT,EAAwB;AACtB,YAAMyB,oBAAoB,GAAG,MAAKzB,aAAL,CAAmB0B,WAAhD;AACA,YAAMC,oBAAoB,GAAG,MAAK3B,aAAL,CAAmB4B,WAAhD;AACAJ,QAAAA,SAAS,GAAGC,oBAAoB,GAAGE,oBAAnC;AACD;AACD,UAAIH,SAAS,IAAI,CAAC,MAAKhC,KAAL,CAAWG,gBAA7B,EAA+C;AAC7C,cAAKgB,QAAL,CAAc,EAAEhB,gBAAgB,EAAE,IAApB,EAAd;AACD,OAFD,MAEO,IAAI,MAAKH,KAAL,CAAWG,gBAAf,EAAiC;AACtC,cAAKgB,QAAL,CAAc,EAAEhB,gBAAgB,EAAE,KAApB,EAAd;AACD;AACF,KAtOH;;AAwOUkC,IAAAA,8BAxOV,GAwO2C3D,QAAQ,CAAC,MAAKqD,+BAAN,EAAuC,GAAvC,CAxOnD;;AA0OUO,IAAAA,YA1OV,GA0OyB,UAACf,KAAD,EAAoB;AACzC3C,MAAAA,YAAY,CAAC2D,IAAb;AACD,KA5OH;;AA8OUC,IAAAA,YA9OV,GA8OyB,UAACpC,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKJ,KAAL,CAAWI,SAAX,KAAyBA,SAAzB,IAAsC,MAAKe,QAAL,CAAc,EAAEf,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,KAhPH;;AAkPUqC,IAAAA,YAlPV,GAkPyB,UAACpC,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKL,KAAL,CAAWK,SAAX,KAAyBA,SAAzB,IAAsC,MAAKc,QAAL,CAAc,EAAEd,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,KApPH;;AAsPUqC,IAAAA,WAtPV,GAsPwB,UAACpC,QAAD,EAAsB,KAArBA,QAAqB,cAArBA,QAAqB,GAAV,KAAU;AAC1C,YAAKN,KAAL,CAAWM,QAAX,KAAwBA,QAAxB,IAAoC,MAAKa,QAAL,CAAc,EAAEb,QAAQ,EAARA,QAAF,EAAd,CAApC;AACD,KAxPH,mDA2BSqC,iBA3BT,GA2BE,6BAA2B,CACzB,KAAKpC,iBAAL,GAAyBtB,UAAU,CAAC2D,GAAX,CAAe,IAAf,EAAqB,KAAK3B,iBAA1B,CAAzB,CAEA,IAAInB,kBAAkB,KAAK,CAA3B,EAA8B,CAC5B+C,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,KAAKT,8BAAvC,EACD,CAEDvC,kBAAkB,GAClB+C,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC,KAAKjB,aAAxC,EACA,KAAKE,+BAAL,GAEA,IAAI,KAAKvB,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBsC,gBAAnB,CAAoC,QAApC,EAA8ClE,YAAY,CAAC2D,IAA3D,EACD,CACF,CAzCH,QA2CSQ,oBA3CT,GA2CE,gCAA8B,CAC5B,IAAI,EAAEjD,kBAAF,KAAyB,CAA7B,EAAgC,CAC9B+C,MAAM,CAACG,mBAAP,CAA2B,QAA3B,EAAqC,KAAKX,8BAA1C,EACAzD,YAAY,CAAC2D,IAAb,GACD,CAEDM,MAAM,CAACG,mBAAP,CAA2B,SAA3B,EAAsC,KAAKnB,aAA3C,EACA,IAAI,KAAKtB,iBAAL,IAA0B,IAA9B,EAAoC,CAClC,KAAKA,iBAAL,CAAuB0C,MAAvB,GACD,CACDhE,UAAU,CAACgE,MAAX,CAAkB,IAAlB,EAEA,IAAI,KAAKzC,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBwC,mBAAnB,CAAuC,QAAvC,EAAiDpE,YAAY,CAAC2D,IAA9D,EACD,CACF,CA1DH,QA4DSW,MA5DT,GA4DE,kBAA6B,mBAC3B,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,CArEH,QAuEUA,UAvEV,GAuEE,sBAAqB,mBACnB,kBAA2C,KAAKpD,KAAhD,CAAQI,SAAR,eAAQA,SAAR,CAAmBC,SAAnB,eAAmBA,SAAnB,CAA8BC,QAA9B,eAA8BA,QAA9B,CAEA,IAAM+C,iBAAoC,GAAG,EAC3CjD,SAAS,EAATA,SAD2C,EAE3CD,gBAAgB,EAAE,KAAKH,KAAL,CAAWG,gBAFc,EAG3CqC,YAAY,EAAE,KAAKA,YAHwB,EAI3CC,YAAY,EAAE,KAAKA,YAJwB,EAK3CC,WAAW,EAAE,KAAKA,WALyB,EAA7C,CAOA,IAAI,CAAC,KAAK9B,KAAL,CAAW0C,OAAhB,EAAyB,CACvBD,iBAAiB,CAACE,KAAlB,GAA0B,EACxB1C,YAAY,EAAE,KAAKD,KAAL,CAAWC,YADD,EAExBF,YAAY,EAAE,KAAKA,YAFK,EAA1B,CAID,CACD,IAAI,CAACN,SAAL,EAAgB,CACdgD,iBAAiB,CAACG,iBAAlB,GAAsC,IAAtC,CACD,CACD,IAAInD,SAAS,IAAIC,QAAjB,EAA2B,CACzB+C,iBAAiB,CAACG,iBAAlB,GAAsC,IAAtC,CACD,CAED,IAAMC,KAAkC,GAAG,EAA3C,CACA,IAAMC,cAA2C,GAAG,EAApD,CAEA,IAAI,KAAK9C,KAAL,CAAW+C,KAAf,EAAsB,CACpBF,KAAK,CAACE,KAAN,GAAc,KAAK/C,KAAL,CAAW+C,KAAzB,CACD,CAFD,MAEO,CACLD,cAAc,CAACC,KAAf,GAAuB,MAAvB,CACD,CAED,oBACE,oBAAC,eAAD,qBACE,oBAAC,aAAD,EAAmB,KAAK/C,KAAxB,eACE,oBAAC,MAAD,IAAQ,QAAQ,EAAE,OAAlB,EAA2B,SAAS,EAAEf,MAAM,CAAC+D,IAAP,EAAtC,iBACE,oBAAC,sBAAD,OADF,EAEG,KAAK5D,KAAL,CAAWE,aAAX,iBAA4B,6BAAK,SAAS,EAAEL,MAAM,CAACgE,EAAP,CAAU,KAAKV,KAAf,CAAhB,GAF/B,eAGE,6BACE,GAAG,EAAE,KAAKpC,YADZ,EAEE,SAAS,EAAElB,MAAM,CAACiE,SAAP,EAFb,EAGE,WAAW,EAAE,KAAKxC,wBAHpB,EAIE,SAAS,EAAE,KAAKG,sBAJlB,EAKE,OAAO,EAAE,KAAKC,oBALhB,EAME,YAAS,iBANX,iBAQE,oBAAC,gBAAD,QACG,gBAAkB,qCAAfqC,QAAe,QAAfA,QAAe,CACjB,oBACE,6BACE,SAAS,EAAEzE,EAAE,gBACVO,MAAM,CAACmE,eAAP,CAAuB,MAAI,CAACb,KAA5B,CADU,IAC2B,IAD3B,MAEVtD,MAAM,CAACoE,qBAAP,EAFU,IAEuBF,QAFvB,MAGVlE,MAAM,CAACqE,QAAP,EAHU,IAGUC,OAAO,CAAC,MAAI,CAACvD,KAAL,CAAWsD,QAAZ,CAHjB,OADf,EAME,KAAK,EAAEH,QAAQ,GAAGK,SAAH,GAAeV,cANhC,EAOE,YAAS,eAPX,iBASE,6BACE,SAAS,EAAEpE,EAAE,kBAAIO,MAAM,CAACgD,MAAP,CAAc,MAAI,CAACM,KAAnB,CAAJ,IAAgC,IAAhC,OAAuCtD,MAAM,CAACwE,YAAP,EAAvC,IAA+DN,QAA/D,QADf,EAEE,KAAK,EAAEA,QAAQ,GAAGK,SAAH,GAAeX,KAFhC,iBAIE,oBAAC,cAAD,IAAgB,QAAQ,EAAE,MAAI,CAACnB,YAA/B,EAA6C,UAAU,EAAEyB,QAAzD,iBACE,oBAAC,SAAD,IACE,QAAQ,EAAE,MAAI,CAACnD,KAAL,CAAW0D,gBADvB,EAEE,SAAS,EAAE,KAFb,EAGE,SAAS,EAAEhF,EAAE,kBAAIO,MAAM,CAAC0E,mBAAP,EAAJ,IAAmCR,QAAnC,SAA+C,sBAA/C,CAHf,IAKG,CAAC3D,SAAD,IAAc,CAAC,MAAI,CAACQ,KAAL,CAAW0C,OAA1B,iBACC,oBAAC,MAAD,IACE,QAAQ,EAAE,YADZ,EAEE,SAAS,EAAEhE,EAAE,kBACVO,MAAM,CAAC2E,YAAP,CAAoB,MAAI,CAACrB,KAAzB,CADU,IACwB,IADxB,OAEVtD,MAAM,CAAC4E,kBAAP,CAA0B,MAAI,CAACtB,KAA/B,CAFU,IAE8BY,QAF9B,QAFf,iBAOE,oBAAC,UAAD,IACE,SAAS,EAAEzE,EAAE,kBACVO,MAAM,CAAC6E,wBAAP,EADU,IAC0BX,QAAQ,IAAI,CAAC,MAAI,CAAC/D,KAAL,CAAWI,SADlD,QADf,EAIE,YAAY,EAAE,MAAI,CAACO,YAJrB,EAKE,YAAY,EAAE,MAAI,CAACC,KAAL,CAAWC,YAL3B,GAPF,CANJ,eAsBE,oBAAC,YAAD,CAAc,QAAd,IAAuB,KAAK,EAAEwC,iBAA9B,IACG,MAAI,CAACzC,KAAL,CAAW+D,QADd,CAtBF,CADF,CAJF,CATF,CADF,CA6CD,CA/CH,CARF,CAHF,CADF,CADF,CADF,CAoED,CA3KH,gBAA2BnG,KAAK,CAACoG,SAAjC,EAAa7E,K,CACG8E,mB,GAAsB,O,CADzB9E,K,CAGG+E,M,GAASpF,W,CAHZK,K,CAIGgF,I,GAAOpF,S,CAJVI,K,CAKGiF,M,GAASvF,W,CALZM,K,CAOGkF,Y,GAAe,EAC3B;AACAX,EAAAA,gBAAgB,EAAElF,MAFS,E","sourcesContent":["import React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport throttle from 'lodash.throttle';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { ModalContext, ModalContextProps } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\n\nlet mountedModalsCount = 0;\n\nexport interface ModalProps extends CommonProps {\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия модалки\n */\n disableClose?: boolean;\n\n /**\n * Выравнивание окна по верху страницы.\n */\n alignTop?: boolean;\n\n /**\n * Не закрывать окно при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Не показывать крестик для закрытия окна.\n */\n noClose?: boolean;\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие окна (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Не использовать фокус-лок внутри модалки.\n * По умолчанию true для IE11.\n */\n disableFocusLock?: boolean;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\n/**\n * Модальное окно\n *\n * Содержит в себе три компоненты: **Modal.Header**,\n * **Modal.Body** и **Modal.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n *\n * Для отключения прилипания шапки и футера\n * в соответствующий компонент нужно передать\n * проп **sticky** со значением **false**\n * (по-умолчанию прилипание включено)\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n };\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n window.addEventListener('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n window.addEventListener('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n window.removeEventListener('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\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 { hasHeader, hasFooter, hasPanel } = this.state;\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n if (!this.props.noClose) {\n modalContextProps.close = {\n disableClose: this.props.disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter) {\n modalContextProps.additionalPadding = true;\n }\n if (hasFooter && hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (this.props.width) {\n style.width = this.props.width;\n } else {\n containerStyle.width = 'auto';\n }\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && <div className={styles.bg(this.theme)} />}\n <div\n ref={this.refContainer}\n className={styles.container()}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid=\"modal-container\"\n >\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n className={cx({\n [styles.centerContainer(this.theme)]: true,\n [styles.mobileCenterContainer()]: isMobile,\n [styles.alignTop()]: Boolean(this.props.alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid=\"modal-content\"\n >\n <div\n className={cx({ [styles.window(this.theme)]: true, [styles.mobileWindow()]: isMobile })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={this.props.disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !this.props.noClose && (\n <ZIndex\n priority={'ModalCross'}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={this.props.disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>\n {this.props.children}\n </ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n );\n }}\n </ResponsiveLayout>\n </div>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = (event: UIEvent) => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
1
+ {"version":3,"sources":["Modal.tsx"],"names":["React","FocusLock","throttle","isNonNullable","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","ResponsiveLayout","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","mountedModalsCount","ModalDataTids","container","content","close","Modal","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","componentDidMount","add","window","addEventListener","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","modalContextProps","noClose","additionalPadding","style","containerStyle","width","root","bg","isMobile","centerContainer","mobileCenterContainer","alignTop","Boolean","undefined","mobileWindow","disableFocusLock","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWithoutHeader","children","Component","__KONTUR_REACT_UI__","Header","Body","Footer","defaultProps"],"mappings":"4JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAOC,QAAP,MAAqB,iBAArB;;AAEA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,WAAT,QAA4B,uCAA5B;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,eAAT,QAAgC,kCAAhC;AACA,SAASC,sBAAT,QAAuC,uCAAvC;AACA,SAASC,UAAT,QAAmD,sBAAnD;AACA,SAASC,cAAT,QAA+B,+BAA/B;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;;AAEA,SAASC,YAAT,QAAgD,gBAAhD;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,WAAT,QAA4B,eAA5B;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,MAAT,QAAuB,gBAAvB;;AAEA,IAAIC,kBAAkB,GAAG,CAAzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,OAAO,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,SAAS,EAAE,iBADgB;AAE3BC,EAAAA,OAAO,EAAE,eAFkB;AAG3BC,EAAAA,KAAK,EAAE,aAHoB,EAAtB;;;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAaC,KAAb;;;;;;;;;;;;AAYSC,IAAAA,KAZT,GAY6B;AACzBC,MAAAA,aAAa,EAAE,CADU;AAEzBC,MAAAA,aAAa,EAAE,IAFU;AAGzBC,MAAAA,gBAAgB,EAAE,KAHO;AAIzBC,MAAAA,SAAS,EAAE,KAJc;AAKzBC,MAAAA,SAAS,EAAE,KALc;AAMzBC,MAAAA,QAAQ,EAAE,KANe,EAZ7B;;;;AAsBUC,IAAAA,iBAtBV,GAsB6D,IAtB7D;AAuBUC,IAAAA,aAvBV,GAuBiD,IAvBjD;AAwBUC,IAAAA,eAxBV,GAwBgD,IAxBhD;AAyBUC,IAAAA,aAzBV,GAyB8C,IAzB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6KUC,IAAAA,YA7KV,GA6KyB,YAAM;AAC3B,UAAI,MAAKC,KAAL,CAAWC,YAAf,EAA6B;AAC3B;AACD;AACD,UAAI,MAAKD,KAAL,CAAWE,OAAf,EAAwB;AACtB,cAAKF,KAAL,CAAWE,OAAX;AACD;AACF,KApLH;;AAsLUC,IAAAA,YAtLV,GAsLyB,UAACC,MAAD,EAAmC;AACxD,YAAKR,aAAL,GAAqBQ,MAArB;AACD,KAxLH;;AA0LUC,IAAAA,iBA1LV,GA0L8B,UAACC,KAAD,EAAuC;AACjE,YAAKC,QAAL,CAAc,EAAElB,aAAa,EAAEiB,KAAK,CAACE,OAAN,+BAAjB,EAAsClB,aAAa,EAAErB,UAAU,CAACwC,UAAX,+BAArD,EAAd;AACD,KA5LH;;AA8LUC,IAAAA,wBA9LV,GA8LqC,UAACC,KAAD,EAA6B;AAC9D,YAAKd,eAAL,GAAuBc,KAAK,CAACC,MAA7B;AACD,KAhMH;;AAkMUC,IAAAA,sBAlMV,GAkMmC,UAACF,KAAD,EAA6B;AAC5D,YAAKb,aAAL,GAAqBa,KAAK,CAACC,MAA3B;AACD,KApMH;;AAsMUE,IAAAA,oBAtMV,GAsMiC,UAACH,KAAD,EAA6C;AAC1E,UAAI,CAAC,MAAKX,KAAL,CAAWe,qBAAhB,EAAuC;AACrC,YAAQH,MAAR,GAAkCD,KAAlC,CAAQC,MAAR,CAAgBI,aAAhB,GAAkCL,KAAlC,CAAgBK,aAAhB;AACA,YAAIJ,MAAM,KAAKI,aAAX,IAA4B,MAAKnB,eAAL,KAAyBmB,aAArD,IAAsE,MAAKlB,aAAL,KAAuBkB,aAAjG,EAAgH;AAC9G,gBAAKjB,YAAL;AACD;AACF;AACF,KA7MH;;AA+MUkB,IAAAA,aA/MV,GA+M0B,UAACC,CAAD,EAAsB;AAC5C,UAAI,MAAK9B,KAAL,CAAWC,aAAX,KAA6B,CAAjC,EAAoC;AAClC;AACD;AACD,UAAI1B,WAAW,CAACuD,CAAD,CAAf,EAAoB;AAClBnD,QAAAA,eAAe,CAACmD,CAAD,CAAf;AACA,cAAKnB,YAAL;AACD;AACF,KAvNH;;AAyNUoB,IAAAA,+BAzNV,GAyN4C,YAAM;AAC9C,UAAIC,SAAS,GAAG,KAAhB;;AAEA,UAAI,MAAKxB,aAAT,EAAwB;AACtB,YAAMyB,oBAAoB,GAAG,MAAKzB,aAAL,CAAmB0B,WAAhD;AACA,YAAMC,oBAAoB,GAAG,MAAK3B,aAAL,CAAmB4B,WAAhD;AACAJ,QAAAA,SAAS,GAAGC,oBAAoB,GAAGE,oBAAnC;AACD;AACD,UAAIH,SAAS,IAAI,CAAC,MAAKhC,KAAL,CAAWG,gBAA7B,EAA+C;AAC7C,cAAKgB,QAAL,CAAc,EAAEhB,gBAAgB,EAAE,IAApB,EAAd;AACD,OAFD,MAEO,IAAI,MAAKH,KAAL,CAAWG,gBAAf,EAAiC;AACtC,cAAKgB,QAAL,CAAc,EAAEhB,gBAAgB,EAAE,KAApB,EAAd;AACD;AACF,KAtOH;;AAwOUkC,IAAAA,8BAxOV,GAwO2ChE,QAAQ,CAAC,MAAK0D,+BAAN,EAAuC,GAAvC,CAxOnD;;AA0OUO,IAAAA,YA1OV,GA0OyB,UAACf,KAAD,EAAoB;AACzC/C,MAAAA,YAAY,CAAC+D,IAAb;AACD,KA5OH;;AA8OUC,IAAAA,YA9OV,GA8OyB,UAACpC,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKJ,KAAL,CAAWI,SAAX,KAAyBA,SAAzB,IAAsC,MAAKe,QAAL,CAAc,EAAEf,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,KAhPH;;AAkPUqC,IAAAA,YAlPV,GAkPyB,UAACpC,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKL,KAAL,CAAWK,SAAX,KAAyBA,SAAzB,IAAsC,MAAKc,QAAL,CAAc,EAAEd,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,KApPH;;AAsPUqC,IAAAA,WAtPV,GAsPwB,UAACpC,QAAD,EAAsB,KAArBA,QAAqB,cAArBA,QAAqB,GAAV,KAAU;AAC1C,YAAKN,KAAL,CAAWM,QAAX,KAAwBA,QAAxB,IAAoC,MAAKa,QAAL,CAAc,EAAEb,QAAQ,EAARA,QAAF,EAAd,CAApC;AACD,KAxPH,mDA2BSqC,iBA3BT,GA2BE,6BAA2B,CACzB,KAAKpC,iBAAL,GAAyB1B,UAAU,CAAC+D,GAAX,CAAe,IAAf,EAAqB,KAAK3B,iBAA1B,CAAzB,CAEA,IAAIvB,kBAAkB,KAAK,CAA3B,EAA8B,CAC5BmD,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,KAAKT,8BAAvC,EACD,CAED3C,kBAAkB,GAClBmD,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC,KAAKjB,aAAxC,EACA,KAAKE,+BAAL,GAEA,IAAI,KAAKvB,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBsC,gBAAnB,CAAoC,QAApC,EAA8CtE,YAAY,CAAC+D,IAA3D,EACD,CACF,CAzCH,QA2CSQ,oBA3CT,GA2CE,gCAA8B,CAC5B,IAAI,EAAErD,kBAAF,KAAyB,CAA7B,EAAgC,CAC9BmD,MAAM,CAACG,mBAAP,CAA2B,QAA3B,EAAqC,KAAKX,8BAA1C,EACA7D,YAAY,CAAC+D,IAAb,GACD,CAEDM,MAAM,CAACG,mBAAP,CAA2B,SAA3B,EAAsC,KAAKnB,aAA3C,EACA,IAAIvD,aAAa,CAAC,KAAKiC,iBAAN,CAAjB,EAA2C,CACzC,KAAKA,iBAAL,CAAuB0C,MAAvB,GACD,CACDpE,UAAU,CAACoE,MAAX,CAAkB,IAAlB,EAEA,IAAI,KAAKzC,aAAT,EAAwB,CACtB,KAAKA,aAAL,CAAmBwC,mBAAnB,CAAuC,QAAvC,EAAiDxE,YAAY,CAAC+D,IAA9D,EACD,CACF,CA1DH,QA4DSW,MA5DT,GA4DE,kBAA6B,mBAC3B,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,CArEH,QAuEUA,UAvEV,GAuEE,sBAAqB,mBACnB,kBAA2C,KAAKpD,KAAhD,CAAQI,SAAR,eAAQA,SAAR,CAAmBC,SAAnB,eAAmBA,SAAnB,CAA8BC,QAA9B,eAA8BA,QAA9B,CAEA,IAAM+C,iBAAoC,GAAG,EAC3CjD,SAAS,EAATA,SAD2C,EAE3CD,gBAAgB,EAAE,KAAKH,KAAL,CAAWG,gBAFc,EAG3CqC,YAAY,EAAE,KAAKA,YAHwB,EAI3CC,YAAY,EAAE,KAAKA,YAJwB,EAK3CC,WAAW,EAAE,KAAKA,WALyB,EAA7C,CAOA,IAAI,CAAC,KAAK9B,KAAL,CAAW0C,OAAhB,EAAyB,CACvBD,iBAAiB,CAACvD,KAAlB,GAA0B,EACxBe,YAAY,EAAE,KAAKD,KAAL,CAAWC,YADD,EAExBF,YAAY,EAAE,KAAKA,YAFK,EAA1B,CAID,CACD,IAAI,CAACN,SAAL,EAAgB,CACdgD,iBAAiB,CAACE,iBAAlB,GAAsC,IAAtC,CACD,CACD,IAAIlD,SAAS,IAAIC,QAAjB,EAA2B,CACzB+C,iBAAiB,CAACE,iBAAlB,GAAsC,IAAtC,CACD,CAED,IAAMC,KAAkC,GAAG,EAA3C,CACA,IAAMC,cAA2C,GAAG,EAApD,CAEA,IAAI,KAAK7C,KAAL,CAAW8C,KAAf,EAAsB,CACpBF,KAAK,CAACE,KAAN,GAAc,KAAK9C,KAAL,CAAW8C,KAAzB,CACD,CAFD,MAEO,CACLD,cAAc,CAACC,KAAf,GAAuB,MAAvB,CACD,CAED,oBACE,oBAAC,eAAD,qBACE,oBAAC,aAAD,EAAmB,KAAK9C,KAAxB,eACE,oBAAC,MAAD,IAAQ,QAAQ,EAAE,OAAlB,EAA2B,SAAS,EAAEnB,MAAM,CAACkE,IAAP,EAAtC,iBACE,oBAAC,sBAAD,OADF,EAEG,KAAK3D,KAAL,CAAWE,aAAX,iBAA4B,6BAAK,SAAS,EAAET,MAAM,CAACmE,EAAP,CAAU,KAAKT,KAAf,CAAhB,GAF/B,eAGE,6BACE,GAAG,EAAE,KAAKpC,YADZ,EAEE,SAAS,EAAEtB,MAAM,CAACG,SAAP,EAFb,EAGE,WAAW,EAAE,KAAK0B,wBAHpB,EAIE,SAAS,EAAE,KAAKG,sBAJlB,EAKE,OAAO,EAAE,KAAKC,oBALhB,EAME,YAAU/B,aAAa,CAACC,SAN1B,iBAQE,oBAAC,gBAAD,QACG,gBAAkB,qCAAfiE,QAAe,QAAfA,QAAe,CACjB,oBACE,6BACE,SAAS,EAAE3E,EAAE,gBACVO,MAAM,CAACqE,eAAP,CAAuB,MAAI,CAACX,KAA5B,CADU,IAC2B,IAD3B,MAEV1D,MAAM,CAACsE,qBAAP,EAFU,IAEuBF,QAFvB,MAGVpE,MAAM,CAACuE,QAAP,EAHU,IAGUC,OAAO,CAAC,MAAI,CAACrD,KAAL,CAAWoD,QAAZ,CAHjB,OADf,EAME,KAAK,EAAEH,QAAQ,GAAGK,SAAH,GAAeT,cANhC,EAOE,YAAU9D,aAAa,CAACE,OAP1B,iBASE,6BACE,SAAS,EAAEX,EAAE,kBAAIO,MAAM,CAACoD,MAAP,CAAc,MAAI,CAACM,KAAnB,CAAJ,IAAgC,IAAhC,OAAuC1D,MAAM,CAAC0E,YAAP,EAAvC,IAA+DN,QAA/D,QADf,EAEE,KAAK,EAAEA,QAAQ,GAAGK,SAAH,GAAeV,KAFhC,iBAIE,oBAAC,cAAD,IAAgB,QAAQ,EAAE,MAAI,CAAClB,YAA/B,EAA6C,UAAU,EAAEuB,QAAzD,iBACE,oBAAC,SAAD,IACE,QAAQ,EAAE,MAAI,CAACjD,KAAL,CAAWwD,gBADvB,EAEE,SAAS,EAAE,KAFb,EAGE,SAAS,EAAElF,EAAE,kBAAIO,MAAM,CAAC4E,mBAAP,EAAJ,IAAmCR,QAAnC,SAA+C,sBAA/C,CAHf,IAKG,CAACzD,SAAD,IAAc,CAAC,MAAI,CAACQ,KAAL,CAAW0C,OAA1B,iBACC,oBAAC,MAAD,IACE,QAAQ,EAAE,YADZ,EAEE,SAAS,EAAEpE,EAAE,kBACVO,MAAM,CAAC6E,YAAP,CAAoB,MAAI,CAACnB,KAAzB,CADU,IACwB,IADxB,OAEV1D,MAAM,CAAC8E,kBAAP,CAA0B,MAAI,CAACpB,KAA/B,CAFU,IAE8BU,QAF9B,QAFf,iBAOE,oBAAC,UAAD,IACE,SAAS,EAAE3E,EAAE,kBACVO,MAAM,CAAC+E,wBAAP,EADU,IAC0BX,QAAQ,IAAI,CAAC,MAAI,CAAC7D,KAAL,CAAWI,SADlD,QADf,EAIE,YAAY,EAAE,MAAI,CAACO,YAJrB,EAKE,YAAY,EAAE,MAAI,CAACC,KAAL,CAAWC,YAL3B,GAPF,CANJ,eAsBE,oBAAC,YAAD,CAAc,QAAd,IAAuB,KAAK,EAAEwC,iBAA9B,IACG,MAAI,CAACzC,KAAL,CAAW6D,QADd,CAtBF,CADF,CAJF,CATF,CADF,CA6CD,CA/CH,CARF,CAHF,CADF,CADF,CADF,CAoED,CA3KH,gBAA2BtG,KAAK,CAACuG,SAAjC,EAAa3E,K,CACG4E,mB,GAAsB,O,CADzB5E,K,CAGG6E,M,GAAStF,W,CAHZS,K,CAIG8E,I,GAAOtF,S,CAJVQ,K,CAKG+E,M,GAASzF,W,CALZU,K,CAOGgF,Y,GAAe,EAC3B;AACAX,EAAAA,gBAAgB,EAAEpF,MAFS,E","sourcesContent":["import React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport throttle from 'lodash.throttle';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { ModalContext, ModalContextProps } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\n\nlet mountedModalsCount = 0;\n\nexport interface ModalProps extends CommonProps {\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия модалки\n */\n disableClose?: boolean;\n\n /**\n * Выравнивание окна по верху страницы.\n */\n alignTop?: boolean;\n\n /**\n * Не закрывать окно при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Не показывать крестик для закрытия окна.\n */\n noClose?: boolean;\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие окна (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Не использовать фокус-лок внутри модалки.\n * По умолчанию true для IE11.\n */\n disableFocusLock?: boolean;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const ModalDataTids = {\n container: 'modal-container',\n content: 'modal-content',\n close: 'modal-close',\n} as const;\n\n/**\n * Модальное окно\n *\n * Содержит в себе три компоненты: **Modal.Header**,\n * **Modal.Body** и **Modal.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n *\n * Для отключения прилипания шапки и футера\n * в соответствующий компонент нужно передать\n * проп **sticky** со значением **false**\n * (по-умолчанию прилипание включено)\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n };\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n window.addEventListener('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n window.addEventListener('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n window.removeEventListener('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n window.removeEventListener('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\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 { hasHeader, hasFooter, hasPanel } = this.state;\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n if (!this.props.noClose) {\n modalContextProps.close = {\n disableClose: this.props.disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter) {\n modalContextProps.additionalPadding = true;\n }\n if (hasFooter && hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (this.props.width) {\n style.width = this.props.width;\n } else {\n containerStyle.width = 'auto';\n }\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && <div className={styles.bg(this.theme)} />}\n <div\n ref={this.refContainer}\n className={styles.container()}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid={ModalDataTids.container}\n >\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n className={cx({\n [styles.centerContainer(this.theme)]: true,\n [styles.mobileCenterContainer()]: isMobile,\n [styles.alignTop()]: Boolean(this.props.alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid={ModalDataTids.content}\n >\n <div\n className={cx({ [styles.window(this.theme)]: true, [styles.mobileWindow()]: isMobile })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={this.props.disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !this.props.noClose && (\n <ZIndex\n priority={'ModalCross'}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={this.props.disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>\n {this.props.children}\n </ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n );\n }}\n </ResponsiveLayout>\n </div>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = (event: UIEvent) => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
@@ -40,6 +40,11 @@ export interface ModalState {
40
40
  hasFooter: boolean;
41
41
  hasPanel: boolean;
42
42
  }
43
+ export declare const ModalDataTids: {
44
+ readonly container: "modal-container";
45
+ readonly content: "modal-content";
46
+ readonly close: "modal-close";
47
+ };
43
48
  /**
44
49
  * Модальное окно
45
50
  *
@@ -15,7 +15,7 @@ export var styles = memoizeStyle({
15
15
  return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n position: relative;\n white-space: nowrap;\n text-align: center;\n height: 100%;\n overflow-y: auto;\n outline: none;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 80%; /* to vertical align modal 40%/60% of screen height */\n }\n "])));
16
16
  },
17
17
  window: function window(t) {
18
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n position: relative;\n white-space: normal;\n margin: auto;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n background: ", ";\n "])), t.modalBg);
18
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n position: relative;\n white-space: normal;\n margin: auto;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n background: ", ";\n border-radius: ", ";\n "])), t.modalBg, t.modalBorderRadius);
19
19
  },
20
20
  mobileWindow: function mobileWindow() {
21
21
  return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 100%;\n overflow: auto;\n "])));
@@ -81,7 +81,7 @@ export var styles = memoizeStyle({
81
81
  return css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteralLoose(["\n padding-right: ", "px;\n "])), 2 * parseInt(t.mobileModalCloseButtonRightPadding) + parseInt(t.mobileModalCloseIconSize));
82
82
  },
83
83
  footer: function footer(t) {
84
- return css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteralLoose(["\n padding: ", " ", " ", " ", ";\n color: ", ";\n "])), t.modalFooterPaddingTop, t.modalPaddingRight, t.modalFooterPaddingBottom, t.modalPaddingLeft, t.modalFooterTextColor);
84
+ return css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteralLoose(["\n padding: ", " ", " ", " ", ";\n color: ", ";\n border-radius: 0 0 ", " ", ";\n "])), t.modalFooterPaddingTop, t.modalPaddingRight, t.modalFooterPaddingBottom, t.modalPaddingLeft, t.modalFooterTextColor, t.modalBorderRadius, t.modalBorderRadius);
85
85
  },
86
86
  mobileFooter: function mobileFooter(t) {
87
87
  return css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteralLoose(["\n padding: ", ";\n "])), t.mobileModalFooterPadding);
@@ -93,13 +93,13 @@ export var styles = memoizeStyle({
93
93
  return css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n padding-top: ", ";\n padding-bottom: ", ";\n background: ", ";\n "])), t.modalFooterPanelPaddingTop, t.modalFooterPanelPaddingBottom, t.modalFooterBg);
94
94
  },
95
95
  fixedHeader: function fixedHeader(t) {
96
- return css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n margin-bottom: 10px;\n padding-bottom: ", ";\n background: ", ";\n\n &:after {\n bottom: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderPaddingBottom, t.modalFixedHeaderBg, t.modalFixedHeaderShadow);
96
+ return css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n margin-bottom: 10px;\n padding-bottom: ", ";\n background: ", ";\n border-bottom: ", ";\n\n &:after {\n bottom: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderPaddingBottom, t.modalFixedHeaderBg, t.modalFixedHeaderBorder, t.modalFixedHeaderShadow);
97
97
  },
98
98
  mobileFixedHeader: function mobileFixedHeader(t) {
99
99
  return css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteralLoose(["\n padding-bottom: ", ";\n "])), t.mobileModalHeaderPadding);
100
100
  },
101
101
  fixedFooter: function fixedFooter(t) {
102
- return css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteralLoose(["\n padding-top: 20px;\n margin-top: 10px;\n background: ", ";\n\n &:before {\n top: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderBg, t.modalFixedFooterShadow);
102
+ return css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteralLoose(["\n padding-top: 20px;\n margin-top: 10px;\n background: ", ";\n border-top: ", ";\n\n &:before {\n top: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderBg, t.modalFixedFooterBorder, t.modalFixedFooterShadow);
103
103
  },
104
104
  fixedPanel: function fixedPanel(t) {
105
105
  return css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteralLoose(["\n &:before {\n box-shadow: ", ";\n }\n "])), t.modalFixedPanelShadow);