@vkontakte/vkui 4.19.0 → 4.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +493 -125
  4. package/.cache/ts/src/components/ActionSheet/types.d.ts +2 -2
  5. package/.cache/ts/src/components/Alert/Alert.d.ts +1 -0
  6. package/.cache/ts/src/components/AppRoot/AppRootContext.d.ts +1 -0
  7. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  8. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  9. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  10. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  11. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  12. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  13. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  14. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +8 -0
  15. package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
  16. package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
  17. package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
  18. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  19. package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  20. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  21. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  22. package/.cache/ts/src/components/Link/Link.d.ts +1 -2
  23. package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
  24. package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
  25. package/.cache/ts/src/components/PullToRefresh/PullToRefresh.d.ts +0 -1
  26. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  27. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
  28. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
  29. package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  30. package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
  31. package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
  32. package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
  33. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
  34. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
  35. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
  36. package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
  37. package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
  38. package/.cache/ts/src/components/View/utils.d.ts +2 -0
  39. package/.cache/ts/src/index.d.ts +4 -0
  40. package/.cache/ts/src/lib/accessibility.d.ts +4 -2
  41. package/.cache/ts/src/lib/is.d.ts +1 -0
  42. package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
  43. package/.cache/ts/src/testing/utils.d.ts +2 -0
  44. package/.cache/ts/src/types.d.ts +3 -0
  45. package/dist/cjs/components/ActionSheet/ActionSheet.js +13 -12
  46. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  47. package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js +3 -1
  48. package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  49. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +10 -5
  50. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  51. package/dist/cjs/components/ActionSheet/types.d.ts +2 -2
  52. package/dist/cjs/components/Alert/Alert.d.ts +1 -0
  53. package/dist/cjs/components/Alert/Alert.js +12 -3
  54. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  55. package/dist/cjs/components/AppRoot/AppRoot.js +2 -1
  56. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  57. package/dist/cjs/components/AppRoot/AppRootContext.d.ts +1 -0
  58. package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
  59. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  60. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  61. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  62. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  63. package/dist/cjs/components/Button/Button.js.map +1 -1
  64. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  65. package/dist/cjs/components/Cell/Cell.js +109 -182
  66. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  67. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  68. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  69. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  70. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  71. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  72. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  73. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  74. package/dist/cjs/components/Cell/useDraggable.js +140 -0
  75. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  76. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  77. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  78. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  79. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  80. package/dist/cjs/components/CustomSelect/CustomSelect.js +6 -4
  81. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  82. package/dist/cjs/components/DatePicker/DatePicker.js +6 -4
  83. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  84. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  85. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  86. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  87. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +8 -0
  88. package/dist/cjs/components/FocusTrap/FocusTrap.js +165 -0
  89. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -0
  90. package/dist/cjs/components/FormField/FormField.d.ts +2 -3
  91. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  92. package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
  93. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  94. package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
  95. package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
  96. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  97. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  98. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  99. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  100. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  101. package/dist/cjs/components/Header/Header.js.map +1 -1
  102. package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  103. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  104. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  105. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
  106. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  107. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  108. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  109. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  110. package/dist/cjs/components/Link/Link.d.ts +1 -2
  111. package/dist/cjs/components/Link/Link.js.map +1 -1
  112. package/dist/cjs/components/ModalRoot/ModalRoot.js +184 -368
  113. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  114. package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
  115. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  116. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +74 -244
  117. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  118. package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
  119. package/dist/cjs/components/ModalRoot/types.js.map +1 -1
  120. package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
  121. package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
  122. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
  123. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  124. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  125. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts +0 -1
  126. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +34 -25
  127. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  128. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  129. package/dist/cjs/components/Removable/Removable.js +75 -66
  130. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  131. package/dist/cjs/components/Root/Root.js +1 -0
  132. package/dist/cjs/components/Root/Root.js.map +1 -1
  133. package/dist/cjs/components/Search/Search.js +1 -1
  134. package/dist/cjs/components/Search/Search.js.map +1 -1
  135. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  136. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  137. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
  138. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  139. package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
  140. package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
  141. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  142. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  143. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
  144. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  145. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  146. package/dist/cjs/components/Switch/Switch.d.ts +2 -3
  147. package/dist/cjs/components/Switch/Switch.js +18 -8
  148. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  149. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
  150. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  151. package/dist/cjs/components/Textarea/Textarea.js +9 -7
  152. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  153. package/dist/cjs/components/Touch/Touch.d.ts +16 -17
  154. package/dist/cjs/components/Touch/Touch.js +34 -14
  155. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  156. package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
  157. package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
  158. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  159. package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
  160. package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
  161. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  162. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
  163. package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
  164. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  165. package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
  166. package/dist/cjs/components/Typography/Text/Text.js +2 -1
  167. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  168. package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
  169. package/dist/cjs/components/Typography/Title/Title.js +9 -4
  170. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  171. package/dist/cjs/components/View/View.js +68 -75
  172. package/dist/cjs/components/View/View.js.map +1 -1
  173. package/dist/cjs/components/View/ViewInfinite.js +78 -85
  174. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  175. package/dist/cjs/components/View/utils.d.ts +2 -0
  176. package/dist/cjs/components/View/utils.js +13 -0
  177. package/dist/cjs/components/View/utils.js.map +1 -0
  178. package/dist/cjs/index.d.ts +4 -0
  179. package/dist/cjs/index.js +16 -0
  180. package/dist/cjs/index.js.map +1 -1
  181. package/dist/cjs/lib/accessibility.d.ts +4 -2
  182. package/dist/cjs/lib/accessibility.js +8 -1
  183. package/dist/cjs/lib/accessibility.js.map +1 -1
  184. package/dist/cjs/lib/is.d.ts +1 -0
  185. package/dist/cjs/lib/is.js +13 -0
  186. package/dist/cjs/lib/is.js.map +1 -0
  187. package/dist/cjs/lib/prefixClass.js +7 -6
  188. package/dist/cjs/lib/prefixClass.js.map +1 -1
  189. package/dist/cjs/lib/supportEvents.d.ts +3 -1
  190. package/dist/cjs/lib/supportEvents.js +1 -4
  191. package/dist/cjs/lib/supportEvents.js.map +1 -1
  192. package/dist/cjs/types.d.ts +3 -0
  193. package/dist/components/ActionSheet/ActionSheet.js +12 -12
  194. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  195. package/dist/components/ActionSheet/ActionSheetDropdown.js +2 -1
  196. package/dist/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  197. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +9 -5
  198. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  199. package/dist/components/ActionSheet/types.d.ts +2 -2
  200. package/dist/components/Alert/Alert.d.ts +1 -0
  201. package/dist/components/Alert/Alert.js +11 -3
  202. package/dist/components/Alert/Alert.js.map +1 -1
  203. package/dist/components/AppRoot/AppRoot.js +2 -1
  204. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  205. package/dist/components/AppRoot/AppRootContext.d.ts +1 -0
  206. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  207. package/dist/components/Avatar/Avatar.d.ts +2 -0
  208. package/dist/components/Avatar/Avatar.js +4 -2
  209. package/dist/components/Avatar/Avatar.js.map +1 -1
  210. package/dist/components/Banner/Banner.js.map +1 -1
  211. package/dist/components/Button/Button.js.map +1 -1
  212. package/dist/components/Cell/Cell.d.ts +11 -0
  213. package/dist/components/Cell/Cell.js +103 -177
  214. package/dist/components/Cell/Cell.js.map +1 -1
  215. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  216. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  217. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  218. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  219. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  220. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  221. package/dist/components/Cell/useDraggable.d.ts +13 -0
  222. package/dist/components/Cell/useDraggable.js +125 -0
  223. package/dist/components/Cell/useDraggable.js.map +1 -0
  224. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  225. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  226. package/dist/components/Counter/Counter.js.map +1 -1
  227. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  228. package/dist/components/CustomSelect/CustomSelect.js +6 -6
  229. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  230. package/dist/components/DatePicker/DatePicker.js +6 -4
  231. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  232. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  233. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  234. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  235. package/dist/components/FocusTrap/FocusTrap.d.ts +8 -0
  236. package/dist/components/FocusTrap/FocusTrap.js +138 -0
  237. package/dist/components/FocusTrap/FocusTrap.js.map +1 -0
  238. package/dist/components/FormField/FormField.d.ts +2 -3
  239. package/dist/components/FormField/FormField.js.map +1 -1
  240. package/dist/components/FormItem/FormItem.d.ts +2 -3
  241. package/dist/components/FormItem/FormItem.js.map +1 -1
  242. package/dist/components/FormLayout/FormLayout.d.ts +2 -4
  243. package/dist/components/FormLayout/FormLayout.js.map +1 -1
  244. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  245. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  246. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  247. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  248. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  249. package/dist/components/Header/Header.js.map +1 -1
  250. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  251. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  252. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  253. package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
  254. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  255. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  256. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  257. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  258. package/dist/components/Link/Link.d.ts +1 -2
  259. package/dist/components/Link/Link.js.map +1 -1
  260. package/dist/components/ModalRoot/ModalRoot.js +181 -371
  261. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  262. package/dist/components/ModalRoot/ModalRootContext.js +0 -3
  263. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  264. package/dist/components/ModalRoot/ModalRootDesktop.js +72 -248
  265. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  266. package/dist/components/ModalRoot/types.d.ts +0 -1
  267. package/dist/components/ModalRoot/types.js.map +1 -1
  268. package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
  269. package/dist/components/ModalRoot/useModalManager.js +189 -0
  270. package/dist/components/ModalRoot/useModalManager.js.map +1 -0
  271. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  272. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  273. package/dist/components/PullToRefresh/PullToRefresh.d.ts +0 -1
  274. package/dist/components/PullToRefresh/PullToRefresh.js +35 -25
  275. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  276. package/dist/components/Removable/Removable.d.ts +2 -1
  277. package/dist/components/Removable/Removable.js +73 -64
  278. package/dist/components/Removable/Removable.js.map +1 -1
  279. package/dist/components/Root/Root.js +1 -0
  280. package/dist/components/Root/Root.js.map +1 -1
  281. package/dist/components/Search/Search.js +1 -1
  282. package/dist/components/Search/Search.js.map +1 -1
  283. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  284. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  285. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  286. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  287. package/dist/components/SplitCol/SplitCol.d.ts +3 -3
  288. package/dist/components/SplitCol/SplitCol.js +2 -4
  289. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  290. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  291. package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
  292. package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  293. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  294. package/dist/components/Switch/Switch.d.ts +2 -3
  295. package/dist/components/Switch/Switch.js +15 -8
  296. package/dist/components/Switch/Switch.js.map +1 -1
  297. package/dist/components/Tappable/Tappable.d.ts +2 -3
  298. package/dist/components/Tappable/Tappable.js.map +1 -1
  299. package/dist/components/Textarea/Textarea.js +9 -6
  300. package/dist/components/Textarea/Textarea.js.map +1 -1
  301. package/dist/components/Touch/Touch.d.ts +16 -17
  302. package/dist/components/Touch/Touch.js +34 -14
  303. package/dist/components/Touch/Touch.js.map +1 -1
  304. package/dist/components/Typography/Caption/Caption.d.ts +2 -2
  305. package/dist/components/Typography/Caption/Caption.js +4 -2
  306. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  307. package/dist/components/Typography/Headline/Headline.d.ts +2 -2
  308. package/dist/components/Typography/Headline/Headline.js +2 -1
  309. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  310. package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
  311. package/dist/components/Typography/Subhead/Subhead.js +2 -1
  312. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  313. package/dist/components/Typography/Text/Text.d.ts +2 -3
  314. package/dist/components/Typography/Text/Text.js +2 -1
  315. package/dist/components/Typography/Text/Text.js.map +1 -1
  316. package/dist/components/Typography/Title/Title.d.ts +2 -2
  317. package/dist/components/Typography/Title/Title.js +9 -4
  318. package/dist/components/Typography/Title/Title.js.map +1 -1
  319. package/dist/components/View/View.js +67 -75
  320. package/dist/components/View/View.js.map +1 -1
  321. package/dist/components/View/ViewInfinite.js +79 -87
  322. package/dist/components/View/ViewInfinite.js.map +1 -1
  323. package/dist/components/View/utils.d.ts +2 -0
  324. package/dist/components/View/utils.js +6 -0
  325. package/dist/components/View/utils.js.map +1 -0
  326. package/dist/components.css +1 -1
  327. package/dist/components.css.map +1 -1
  328. package/dist/cssm/components/ActionSheet/ActionSheet.js +12 -12
  329. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  330. package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js +2 -1
  331. package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  332. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +9 -5
  333. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  334. package/dist/cssm/components/Alert/Alert.js +11 -3
  335. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  336. package/dist/cssm/components/AppRoot/AppRoot.js +2 -1
  337. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  338. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  339. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  340. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  341. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  342. package/dist/cssm/components/Button/Button.css +1 -1
  343. package/dist/cssm/components/Button/Button.js.map +1 -1
  344. package/dist/cssm/components/Cell/Cell.css +1 -1
  345. package/dist/cssm/components/Cell/Cell.js +103 -177
  346. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  347. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  348. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  349. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  350. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  351. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  352. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  353. package/dist/cssm/components/Cell/useDraggable.js +125 -0
  354. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  355. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  356. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  357. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  358. package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -6
  359. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  360. package/dist/cssm/components/DatePicker/DatePicker.js +6 -4
  361. package/dist/cssm/components/DatePicker/DatePicker.js.map +1 -1
  362. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  363. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  364. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  365. package/dist/cssm/components/FocusTrap/FocusTrap.js +138 -0
  366. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -0
  367. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  368. package/dist/cssm/components/FormField/FormField.css +1 -1
  369. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  370. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  371. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  372. package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
  373. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  374. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  375. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  376. package/dist/cssm/components/Gallery/Gallery.css +1 -1
  377. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  378. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  379. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  380. package/dist/cssm/components/Header/Header.js.map +1 -1
  381. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  382. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
  383. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  384. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  385. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  386. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  387. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  388. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  389. package/dist/cssm/components/Link/Link.js.map +1 -1
  390. package/dist/cssm/components/ModalRoot/ModalRoot.js +181 -371
  391. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  392. package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
  393. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  394. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +72 -248
  395. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  396. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  397. package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
  398. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
  399. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  400. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  401. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +35 -25
  402. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  403. package/dist/cssm/components/Removable/Removable.css +1 -1
  404. package/dist/cssm/components/Removable/Removable.js +73 -64
  405. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  406. package/dist/cssm/components/Root/Root.css +1 -1
  407. package/dist/cssm/components/Root/Root.js +1 -0
  408. package/dist/cssm/components/Root/Root.js.map +1 -1
  409. package/dist/cssm/components/Search/Search.css +1 -1
  410. package/dist/cssm/components/Search/Search.js +1 -1
  411. package/dist/cssm/components/Search/Search.js.map +1 -1
  412. package/dist/cssm/components/Select/Select.css +1 -1
  413. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  414. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  415. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  416. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  417. package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
  418. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  419. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
  420. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  421. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  422. package/dist/cssm/components/Switch/Switch.css +1 -1
  423. package/dist/cssm/components/Switch/Switch.js +15 -8
  424. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  425. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  426. package/dist/cssm/components/Textarea/Textarea.js +9 -6
  427. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  428. package/dist/cssm/components/Touch/Touch.js +34 -14
  429. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  430. package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
  431. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  432. package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
  433. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  434. package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
  435. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  436. package/dist/cssm/components/Typography/Text/Text.js +2 -1
  437. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  438. package/dist/cssm/components/Typography/Title/Title.js +9 -4
  439. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  440. package/dist/cssm/components/View/View.js +67 -75
  441. package/dist/cssm/components/View/View.js.map +1 -1
  442. package/dist/cssm/components/View/ViewInfinite.js +79 -87
  443. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  444. package/dist/cssm/components/View/utils.js +6 -0
  445. package/dist/cssm/components/View/utils.js.map +1 -0
  446. package/dist/cssm/index.js +2 -0
  447. package/dist/cssm/index.js.map +1 -1
  448. package/dist/cssm/lib/accessibility.js +6 -0
  449. package/dist/cssm/lib/accessibility.js.map +1 -1
  450. package/dist/cssm/lib/is.js +6 -0
  451. package/dist/cssm/lib/is.js.map +1 -0
  452. package/dist/cssm/lib/prefixClass.js +7 -6
  453. package/dist/cssm/lib/prefixClass.js.map +1 -1
  454. package/dist/cssm/lib/supportEvents.js +1 -4
  455. package/dist/cssm/lib/supportEvents.js.map +1 -1
  456. package/dist/cssm/styles/components.css +1 -1
  457. package/dist/cssm/styles/themes.css +1 -1
  458. package/dist/cssm/styles/vkcom_light.css +1 -1
  459. package/dist/index.d.ts +4 -0
  460. package/dist/index.js +2 -0
  461. package/dist/index.js.map +1 -1
  462. package/dist/lib/accessibility.d.ts +4 -2
  463. package/dist/lib/accessibility.js +6 -0
  464. package/dist/lib/accessibility.js.map +1 -1
  465. package/dist/lib/is.d.ts +1 -0
  466. package/dist/lib/is.js +6 -0
  467. package/dist/lib/is.js.map +1 -0
  468. package/dist/lib/prefixClass.js +7 -6
  469. package/dist/lib/prefixClass.js.map +1 -1
  470. package/dist/lib/supportEvents.d.ts +3 -1
  471. package/dist/lib/supportEvents.js +1 -4
  472. package/dist/lib/supportEvents.js.map +1 -1
  473. package/dist/types.d.ts +3 -0
  474. package/dist/vkui.css +2 -2
  475. package/dist/vkui.css.map +1 -1
  476. package/package.json +8 -4
  477. package/src/components/ActionSheet/ActionSheet.tsx +9 -7
  478. package/src/components/ActionSheet/ActionSheetDropdown.tsx +3 -2
  479. package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +9 -5
  480. package/src/components/ActionSheet/Readme.md +18 -14
  481. package/src/components/ActionSheet/types.ts +2 -2
  482. package/src/components/Alert/Alert.tsx +11 -4
  483. package/src/components/Alert/Readme.md +15 -11
  484. package/src/components/AppRoot/AppRoot.tsx +1 -0
  485. package/src/components/AppRoot/AppRootContext.ts +1 -0
  486. package/src/components/Avatar/Avatar.tsx +5 -2
  487. package/src/components/Banner/Banner.tsx +4 -5
  488. package/src/components/Button/Button.css +26 -53
  489. package/src/components/Button/Button.tsx +2 -3
  490. package/src/components/Card/Readme.md +6 -6
  491. package/src/components/Cell/Cell.css +21 -58
  492. package/src/components/Cell/Cell.tsx +101 -162
  493. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  494. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  495. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  496. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  497. package/src/components/Cell/Readme.md +89 -51
  498. package/src/components/Cell/useDraggable.tsx +112 -0
  499. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  500. package/src/components/Counter/Counter.tsx +2 -2
  501. package/src/components/CustomSelect/CustomSelect.tsx +6 -5
  502. package/src/components/DatePicker/DatePicker.tsx +5 -5
  503. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  504. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  505. package/src/components/Epic/Readme.md +1 -1
  506. package/src/components/FocusTrap/FocusTrap.tsx +125 -0
  507. package/src/components/FocusVisible/FocusVisible.css +12 -4
  508. package/src/components/FormField/FormField.css +0 -1
  509. package/src/components/FormField/FormField.tsx +2 -2
  510. package/src/components/FormItem/FormItem.css +13 -14
  511. package/src/components/FormItem/FormItem.tsx +2 -3
  512. package/src/components/FormLayout/FormLayout.tsx +2 -4
  513. package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
  514. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  515. package/src/components/Gallery/Gallery.css +2 -3
  516. package/src/components/Gallery/Readme.md +89 -109
  517. package/src/components/GridAvatar/GridAvatar.css +37 -0
  518. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  519. package/src/components/GridAvatar/Readme.md +12 -0
  520. package/src/components/Group/Readme.md +18 -14
  521. package/src/components/Header/Header.tsx +4 -4
  522. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
  523. package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
  524. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
  525. package/src/components/IconButton/IconButton.css +7 -0
  526. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  527. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  528. package/src/components/InitialsAvatar/Readme.md +14 -0
  529. package/src/components/Link/Link.tsx +1 -1
  530. package/src/components/MiniInfoCell/Readme.md +66 -62
  531. package/src/components/ModalDismissButton/Readme.md +13 -10
  532. package/src/components/ModalRoot/ModalRoot.tsx +170 -344
  533. package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
  534. package/src/components/ModalRoot/ModalRootDesktop.tsx +62 -243
  535. package/src/components/ModalRoot/Readme.md +35 -27
  536. package/src/components/ModalRoot/types.ts +0 -1
  537. package/src/components/ModalRoot/useModalManager.tsx +174 -0
  538. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  539. package/src/components/PullToRefresh/PullToRefresh.tsx +30 -25
  540. package/src/components/Removable/Removable.css +16 -63
  541. package/src/components/Removable/Removable.tsx +84 -64
  542. package/src/components/Root/Root.css +5 -0
  543. package/src/components/Root/Root.tsx +4 -1
  544. package/src/components/ScreenSpinner/Readme.md +13 -9
  545. package/src/components/Search/Search.css +1 -1
  546. package/src/components/Search/Search.tsx +3 -3
  547. package/src/components/Select/Select.css +1 -1
  548. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  549. package/src/components/SimpleCell/SimpleCell.css +10 -18
  550. package/src/components/SimpleCell/SimpleCell.tsx +3 -5
  551. package/src/components/SplitCol/SplitCol.tsx +4 -8
  552. package/src/components/SplitLayout/Readme.md +2 -2
  553. package/src/components/SubnavigationBar/Readme.md +90 -86
  554. package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
  555. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
  556. package/src/components/Switch/Readme.md +6 -6
  557. package/src/components/Switch/Switch.css +46 -15
  558. package/src/components/Switch/Switch.tsx +16 -8
  559. package/src/components/Tappable/Tappable.tsx +2 -3
  560. package/src/components/Textarea/Readme.md +3 -0
  561. package/src/components/Textarea/Textarea.tsx +10 -6
  562. package/src/components/Touch/Touch.tsx +51 -31
  563. package/src/components/Typography/Caption/Caption.tsx +4 -4
  564. package/src/components/Typography/Headline/Headline.tsx +3 -3
  565. package/src/components/Typography/Subhead/Subhead.tsx +3 -3
  566. package/src/components/Typography/Text/Text.tsx +3 -4
  567. package/src/components/Typography/Title/Title.tsx +9 -5
  568. package/src/components/View/Readme.md +42 -56
  569. package/src/components/View/View.tsx +46 -61
  570. package/src/components/View/ViewInfinite.tsx +52 -67
  571. package/src/components/View/utils.ts +8 -0
  572. package/src/index.ts +4 -0
  573. package/src/lib/accessibility.ts +22 -2
  574. package/src/lib/is.ts +10 -0
  575. package/src/lib/prefixClass.ts +9 -6
  576. package/src/lib/supportEvents.ts +1 -4
  577. package/src/styles/components.css +4 -0
  578. package/src/styles/vkcom_light.css +3 -3
  579. package/src/testing/utils.tsx +41 -0
  580. package/src/types.ts +4 -0
@@ -1,4 +1,3 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
1
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
3
  import _createClass from "@babel/runtime/helpers/createClass";
@@ -10,21 +9,20 @@ var _excluded = ["id"];
10
9
  import { createScopedElement } from "../../lib/jsxRuntime";
11
10
  import * as React from 'react';
12
11
  import { classNames } from "../../lib/classNames";
13
- import { isFunction } from "../../lib/utils";
14
12
  import { transitionEvent } from "../../lib/supportEvents";
15
13
  import { withPlatform } from "../../hoc/withPlatform";
16
14
  import { withContext } from "../../hoc/withContext";
17
15
  import ModalRootContext from "./ModalRootContext";
18
16
  import { ConfigProviderContext, WebviewType } from "../ConfigProvider/ConfigProviderContext";
19
- import { ModalType } from "./types";
20
17
  import { ANDROID, VKCOM } from "../../lib/platform";
21
18
  import { getClassName } from "../../helpers/getClassName";
22
19
  import { withDOM } from "../../lib/dom";
23
20
  import { getNavId } from "../../lib/getNavId";
24
21
  import { warnOnce } from "../../lib/warnOnce";
22
+ import { FocusTrap } from "../FocusTrap/FocusTrap";
23
+ import { withModalManager } from "./useModalManager";
25
24
  import "./ModalRoot.css";
26
25
  var warn = warnOnce('ModalRoot');
27
- var IS_DEV = process.env.NODE_ENV === 'development';
28
26
 
29
27
  var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
30
28
  _inherits(ModalRootDesktopComponent, _React$Component);
@@ -38,85 +36,15 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
38
36
 
39
37
  _this = _super.call(this, props);
40
38
 
41
- _defineProperty(_assertThisInitialized(_this), "modalsState", void 0);
42
-
43
39
  _defineProperty(_assertThisInitialized(_this), "maskElementRef", void 0);
44
40
 
45
41
  _defineProperty(_assertThisInitialized(_this), "maskAnimationFrame", void 0);
46
42
 
47
43
  _defineProperty(_assertThisInitialized(_this), "modalRootContext", void 0);
48
44
 
49
- _defineProperty(_assertThisInitialized(_this), "activeTransitions", void 0);
50
-
51
- _defineProperty(_assertThisInitialized(_this), "handleKeyDownEsc", function (e) {
52
- if (e.key === 'Escape') {
53
- _this.triggerActiveModalClose();
54
- }
55
- });
56
-
57
- _defineProperty(_assertThisInitialized(_this), "componentWillUnmount", function () {
58
- _this.props.document.removeEventListener('keydown', _this.handleKeyDownEsc);
59
- });
60
-
61
- _defineProperty(_assertThisInitialized(_this), "prevNextSwitchEndHandler", function () {
62
- _this.activeTransitions = Math.max(0, _this.activeTransitions - 1);
63
-
64
- if (_this.activeTransitions > 0) {
65
- return;
66
- }
67
-
68
- var activeModal = _this.state.nextModal;
69
- var newState = {
70
- prevModal: null,
71
- nextModal: null,
72
- visibleModals: [activeModal],
73
- activeModal: activeModal,
74
- animated: false,
75
- switching: false
76
- };
77
-
78
- if (!activeModal) {
79
- newState.history = [];
80
- }
45
+ _defineProperty(_assertThisInitialized(_this), "restoreFocusTo", void 0);
81
46
 
82
- _this.setState(newState);
83
- });
84
-
85
- _defineProperty(_assertThisInitialized(_this), "triggerActiveModalClose", function () {
86
- var activeModalState = _this.modalsState[_this.state.activeModal];
87
-
88
- if (activeModalState) {
89
- _this.doCloseModal(activeModalState);
90
- }
91
- });
92
-
93
- _defineProperty(_assertThisInitialized(_this), "doCloseModal", function (modalState) {
94
- if (isFunction(modalState.onClose)) {
95
- modalState.onClose();
96
- } else if (isFunction(_this.props.onClose)) {
97
- _this.props.onClose(modalState.id);
98
- } else if (IS_DEV) {
99
- warn('onClose is undefined');
100
- }
101
- });
102
-
103
- var _activeModal = props.activeModal;
104
- _this.state = {
105
- activeModal: null,
106
- prevModal: null,
107
- nextModal: _activeModal,
108
- visibleModals: _activeModal ? [_activeModal] : [],
109
- animated: !!_activeModal,
110
- switching: false,
111
- history: _activeModal ? [_activeModal] : [],
112
- isBack: false,
113
- inited: false
114
- };
115
47
  _this.maskElementRef = /*#__PURE__*/React.createRef();
116
- _this.activeTransitions = 0;
117
-
118
- _this.initModalsState();
119
-
120
48
  _this.modalRootContext = {
121
49
  updateModalHeight: function updateModalHeight() {
122
50
  return undefined;
@@ -125,143 +53,85 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
125
53
  var id = _ref.id,
126
54
  data = _objectWithoutProperties(_ref, _excluded);
127
55
 
128
- return Object.assign(_this.modalsState[id], data);
56
+ return Object.assign(_this.getModalState(id), data);
57
+ },
58
+ onClose: function onClose() {
59
+ return _this.props.closeActiveModal();
129
60
  },
130
- onClose: _this.triggerActiveModalClose,
131
61
  isInsideModal: true
132
62
  };
133
63
  return _this;
134
64
  }
135
65
 
136
66
  _createClass(ModalRootDesktopComponent, [{
137
- key: "modals",
67
+ key: "timeout",
138
68
  get: function get() {
139
- return React.Children.toArray(this.props.children);
69
+ return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;
140
70
  }
141
71
  }, {
142
- key: "initModalsState",
143
- value: function initModalsState() {
144
- this.modalsState = this.modals.reduce(function (acc, Modal) {
145
- var modalProps = Modal.props;
146
- var state = {
147
- id: getNavId(Modal.props, warn),
148
- onClose: Modal.props.onClose,
149
- dynamicContentHeight: !!modalProps.dynamicContentHeight
150
- }; // ModalPage props
151
-
152
- if (typeof modalProps.settlingHeight === 'number') {
153
- state.settlingHeight = modalProps.settlingHeight;
154
- }
155
-
156
- acc[state.id] = state;
157
- return acc;
158
- }, {});
72
+ key: "modals",
73
+ get: function get() {
74
+ return React.Children.toArray(this.props.children);
159
75
  }
160
76
  }, {
161
- key: "componentDidMount",
162
- value: function componentDidMount() {
163
- this.initActiveModal();
164
- this.props.document.addEventListener('keydown', this.handleKeyDownEsc);
77
+ key: "getModalState",
78
+ value: function getModalState(id) {
79
+ return this.props.getModalState(id);
165
80
  }
166
81
  }, {
167
82
  key: "componentDidUpdate",
168
- value: function componentDidUpdate(prevProps, prevState) {
83
+ value: function componentDidUpdate(prevProps) {
169
84
  var _this2 = this;
170
85
 
171
- if (this.props.activeModal !== prevProps.activeModal) {
172
- var nextModal = this.props.activeModal;
173
- var prevModal = prevProps.activeModal;
174
-
175
- if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {
176
- return warn("[ModalRoot.componentDidUpdate] nextModal ".concat(nextModal, " not found"));
177
- }
178
-
179
- var history = _toConsumableArray(this.state.history);
86
+ // transition phase 2: animate exiting modal
87
+ if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {
88
+ this.closeModal(this.props.exitingModal);
89
+ } // transition phase 3: animate entering modal
180
90
 
181
- var isBack = false;
182
91
 
183
- if (nextModal === null) {
184
- history = [];
185
- } else if (history.includes(nextModal)) {
186
- history = history.splice(0, history.indexOf(nextModal) + 1);
187
- isBack = true;
188
- } else {
189
- history.push(nextModal);
190
- }
92
+ if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {
93
+ var enteringModal = this.props.enteringModal;
94
+ var enteringState = this.getModalState(enteringModal);
95
+ requestAnimationFrame(function () {
96
+ if (_this2.props.enteringModal === enteringModal) {
97
+ _this2.waitTransitionFinish(enteringState, function () {
98
+ return _this2.props.onEnter(enteringModal);
99
+ });
191
100
 
192
- return this.setState({
193
- activeModal: null,
194
- nextModal: nextModal,
195
- prevModal: prevModal,
196
- visibleModals: [nextModal, prevModal],
197
- history: history,
198
- isBack: isBack,
199
- animated: true,
200
- inited: false,
201
- switching: false
202
- }, function () {
203
- if (nextModal === null) {
204
- _this2.closeActiveModal();
205
- } else {
206
- _this2.initActiveModal();
101
+ _this2.animateModalOpacity(enteringState, true);
207
102
  }
208
103
  });
104
+ } // focus restoration
105
+
106
+
107
+ if (this.props.activeModal && !prevProps.activeModal) {
108
+ this.restoreFocusTo = this.props.document.activeElement;
209
109
  }
210
110
 
211
- if (this.state.switching && !prevState.switching) {
212
- requestAnimationFrame(function () {
213
- return _this2.switchPrevNext();
214
- });
111
+ if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {
112
+ this.restoreFocusTo.focus();
113
+ this.restoreFocusTo = null;
215
114
  }
216
115
  }
217
- /**
218
- * Инициализирует модалку перед анимацией открытия
219
- */
220
-
221
116
  }, {
222
- key: "initActiveModal",
223
- value: function initActiveModal() {
224
- var activeModal = this.state.activeModal || this.state.nextModal;
225
-
226
- if (!activeModal) {
227
- return;
228
- }
229
-
230
- var modalState = this.modalsState[activeModal];
231
-
232
- switch (modalState.type) {
233
- case ModalType.PAGE:
234
- modalState.settlingHeight = modalState.settlingHeight || 75;
235
- break;
117
+ key: "closeModal",
118
+ value: function closeModal(id) {
119
+ var _this3 = this;
236
120
 
237
- case ModalType.CARD:
238
- break;
239
-
240
- default:
241
- if (IS_DEV) {
242
- warn('[initActiveModal] modalState.type is unknown');
243
- }
121
+ var prevModalState = this.getModalState(id);
244
122
 
123
+ if (!prevModalState) {
124
+ return;
245
125
  }
246
126
 
247
- this.setState({
248
- inited: true,
249
- switching: true
127
+ this.waitTransitionFinish(prevModalState, function () {
128
+ return _this3.props.onExit(id);
250
129
  });
251
- }
252
- }, {
253
- key: "closeActiveModal",
254
- value: function closeActiveModal() {
255
- var prevModal = this.state.prevModal;
130
+ this.animateModalOpacity(prevModalState, false);
256
131
 
257
- if (IS_DEV && !prevModal) {
258
- return warn("[closeActiveModal] prevModal is ".concat(prevModal));
132
+ if (!this.props.activeModal) {
133
+ this.setMaskOpacity(prevModalState, 0);
259
134
  }
260
-
261
- var prevModalState = this.modalsState[prevModal];
262
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
263
- this.animateModalOpacity(prevModalState, false);
264
- this.setMaskOpacity(prevModalState, 0);
265
135
  }
266
136
  }, {
267
137
  key: "waitTransitionFinish",
@@ -274,60 +144,15 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
274
144
 
275
145
  modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);
276
146
  } else {
277
- setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);
147
+ setTimeout(eventHandler, this.timeout);
278
148
  }
279
149
  }
280
- }, {
281
- key: "switchPrevNext",
282
- value: function switchPrevNext() {
283
- var _this3 = this;
284
-
285
- var _this$state = this.state,
286
- prevModal = _this$state.prevModal,
287
- nextModal = _this$state.nextModal;
288
- var prevModalState = this.modalsState[prevModal];
289
- var nextModalState = this.modalsState[nextModal];
290
-
291
- if (IS_DEV && !prevModalState && !nextModalState) {
292
- return warn("[switchPrevNext] prevModal is ".concat(prevModal, ", nextModal is ").concat(nextModal));
293
- }
294
-
295
- var prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;
296
- var nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;
297
- var nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD; // Ждём полного скрытия предыдущей модалки
298
-
299
- if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {
300
- this.activeTransitions += 1;
301
- this.waitTransitionFinish(prevModalState, function () {
302
- _this3.waitTransitionFinish(nextModalState, _this3.prevNextSwitchEndHandler);
303
-
304
- _this3.animateModalOpacity(nextModalState, true);
305
- });
306
- requestAnimationFrame(function () {
307
- _this3.animateModalOpacity(prevModalState, false);
308
- });
309
- return;
310
- }
311
-
312
- if (prevModalState && nextIsPage) {
313
- this.activeTransitions += 1;
314
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
315
- requestAnimationFrame(function () {
316
- _this3.animateModalOpacity(prevModalState, false);
317
- });
318
- }
150
+ /* Анимирует сдивг модалки */
319
151
 
320
- this.activeTransitions += 1;
321
- this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);
322
- requestAnimationFrame(function () {
323
- _this3.animateModalOpacity(nextModalState, true);
324
- });
325
- }
326
152
  }, {
327
153
  key: "animateModalOpacity",
328
- value:
329
- /* Анимирует сдивг модалки */
330
- function animateModalOpacity(modalState, display) {
154
+ value: function animateModalOpacity(modalState, display) {
155
+ modalState.innerElement.style.transitionDelay = display && this.props.delayEnter ? "".concat(this.timeout, "ms") : null;
331
156
  modalState.innerElement.style.opacity = display ? '1' : '0';
332
157
  }
333
158
  /* Устанавливает прозрачность для полупрозрачной подложки */
@@ -339,7 +164,7 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
339
164
 
340
165
  var forceOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
341
166
 
342
- if (forceOpacity === null && this.state.history[0] !== modalState.id) {
167
+ if (forceOpacity === null && this.props.history[0] !== modalState.id) {
343
168
  return;
344
169
  }
345
170
 
@@ -353,21 +178,17 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
353
178
  }
354
179
  });
355
180
  }
356
- /**
357
- * Закрывает текущую модалку
358
- */
359
-
360
181
  }, {
361
182
  key: "render",
362
183
  value: function render() {
363
- var _this$state2 = this.state,
364
- prevModal = _this$state2.prevModal,
365
- activeModal = _this$state2.activeModal,
366
- nextModal = _this$state2.nextModal,
367
- visibleModals = _this$state2.visibleModals,
368
- animated = _this$state2.animated;
369
-
370
- if (!activeModal && !prevModal && !nextModal && !animated) {
184
+ var _this5 = this;
185
+
186
+ var _this$props = this.props,
187
+ exitingModal = _this$props.exitingModal,
188
+ activeModal = _this$props.activeModal,
189
+ enteringModal = _this$props.enteringModal;
190
+
191
+ if (!activeModal && !exitingModal) {
371
192
  return null;
372
193
  }
373
194
 
@@ -379,24 +200,27 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
379
200
  }, 'ModalRoot--desktop')
380
201
  }, createScopedElement("div", {
381
202
  vkuiClass: "ModalRoot__mask",
382
- onClick: this.triggerActiveModalClose,
383
- ref: this.maskElementRef
203
+ ref: this.maskElementRef,
204
+ onClick: this.props.closeActiveModal
384
205
  }), createScopedElement("div", {
385
206
  vkuiClass: "ModalRoot__viewport"
386
207
  }, this.modals.map(function (Modal) {
387
208
  var modalId = getNavId(Modal.props, warn);
388
209
 
389
- if (!visibleModals.includes(modalId)) {
210
+ if (modalId !== activeModal && modalId !== exitingModal) {
390
211
  return null;
391
212
  }
392
213
 
393
214
  var key = "modal-".concat(modalId);
394
- return createScopedElement("div", {
215
+ return createScopedElement(FocusTrap, {
216
+ restoreFocus: false,
217
+ onClose: _this5.props.closeActiveModal,
218
+ timeout: _this5.timeout,
395
219
  key: key,
396
220
  vkuiClass: classNames('ModalRoot__modal', {
397
- 'ModalRoot__modal--active': modalId === activeModal,
398
- 'ModalRoot__modal--prev': modalId === prevModal,
399
- 'ModalRoot__modal--next': modalId === nextModal
221
+ 'ModalRoot__modal--active': !exitingModal && !enteringModal && modalId === activeModal,
222
+ 'ModalRoot__modal--prev': modalId === exitingModal,
223
+ 'ModalRoot__modal--next': exitingModal && modalId === activeModal
400
224
  })
401
225
  }, Modal);
402
226
  }))));
@@ -406,5 +230,5 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
406
230
  return ModalRootDesktopComponent;
407
231
  }(React.Component);
408
232
 
409
- export var ModalRootDesktop = withContext(withPlatform(withDOM(ModalRootDesktopComponent)), ConfigProviderContext, 'configProvider');
233
+ export var ModalRootDesktop = withContext(withPlatform(withDOM(withModalManager()(ModalRootDesktopComponent))), ConfigProviderContext, 'configProvider');
410
234
  //# sourceMappingURL=ModalRootDesktop.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":["React","classNames","isFunction","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","ANDROID","VKCOM","getClassName","withDOM","getNavId","warnOnce","warn","IS_DEV","process","env","NODE_ENV","ModalRootDesktopComponent","props","e","key","triggerActiveModalClose","document","removeEventListener","handleKeyDownEsc","activeTransitions","Math","max","activeModal","state","nextModal","newState","prevModal","visibleModals","animated","switching","history","setState","activeModalState","modalsState","doCloseModal","modalState","onClose","id","isBack","inited","maskElementRef","createRef","initModalsState","modalRootContext","updateModalHeight","undefined","registerModal","data","Object","assign","isInsideModal","Children","toArray","children","modals","reduce","acc","Modal","modalProps","dynamicContentHeight","settlingHeight","initActiveModal","addEventListener","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","requestAnimationFrame","switchPrevNext","type","PAGE","CARD","prevModalState","waitTransitionFinish","prevNextSwitchEndHandler","animateModalOpacity","setMaskOpacity","eventHandler","supported","onceHandler","innerElement","name","setTimeout","platform","nextModalState","prevIsCard","nextIsPage","nextIsCard","display","style","opacity","forceOpacity","cancelAnimationFrame","maskAnimationFrame","current","translateY","translateYCurrent","min","toString","configProvider","webviewType","VKAPPS","map","modalId","Component","ModalRootDesktop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { isFunction } from '../../lib/utils';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType } from './types';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n}\n\ninterface ModalRootState {\n activeModal?: string;\n prevModal?: string;\n nextModal?: string;\n visibleModals?: string[];\n animated?: boolean;\n switching?: boolean;\n history?: string[];\n isBack?: boolean;\n inited?: boolean;\n}\n\nclass ModalRootDesktopComponent extends React.Component<ModalRootProps & DOMProps, ModalRootState> {\n constructor(props: ModalRootProps) {\n super(props);\n\n const activeModal = props.activeModal;\n\n this.state = {\n activeModal: null,\n prevModal: null,\n nextModal: activeModal,\n visibleModals: activeModal ? [activeModal] : [],\n animated: !!activeModal,\n switching: false,\n history: activeModal ? [activeModal] : [],\n isBack: false,\n inited: false,\n };\n\n this.maskElementRef = React.createRef();\n this.activeTransitions = 0;\n\n this.initModalsState();\n\n this.modalRootContext = {\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(this.modalsState[id], data),\n onClose: this.triggerActiveModalClose,\n isInsideModal: true,\n };\n }\n\n private modalsState: { [id: string]: ModalsStateEntry };\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n\n activeTransitions: number;\n\n get modals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n initModalsState() {\n this.modalsState = this.modals.reduce<{ [id: string]: ModalsStateEntry }>((acc, Modal) => {\n const modalProps = Modal.props;\n const state: ModalsStateEntry = {\n id: getNavId(Modal.props, warn),\n onClose: Modal.props.onClose,\n dynamicContentHeight: !!modalProps.dynamicContentHeight,\n };\n\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n acc[state.id] = state;\n return acc;\n }, {});\n }\n\n handleKeyDownEsc = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n this.triggerActiveModalClose();\n }\n };\n\n componentDidMount() {\n this.initActiveModal();\n this.props.document.addEventListener('keydown', this.handleKeyDownEsc);\n }\n\n componentWillUnmount = () => {\n this.props.document.removeEventListener('keydown', this.handleKeyDownEsc);\n };\n\n componentDidUpdate(prevProps: ModalRootProps, prevState: ModalRootState) {\n if (this.props.activeModal !== prevProps.activeModal) {\n const nextModal = this.props.activeModal;\n const prevModal = prevProps.activeModal;\n\n if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {\n return warn(`[ModalRoot.componentDidUpdate] nextModal ${nextModal} not found`);\n }\n\n let history = [...this.state.history];\n let isBack = false;\n\n if (nextModal === null) {\n history = [];\n } else if (history.includes(nextModal)) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n isBack = true;\n } else {\n history.push(nextModal);\n }\n\n return this.setState({\n activeModal: null,\n nextModal,\n prevModal,\n visibleModals: [nextModal, prevModal],\n history,\n isBack,\n animated: true,\n inited: false,\n switching: false,\n }, () => {\n if (nextModal === null) {\n this.closeActiveModal();\n } else {\n this.initActiveModal();\n }\n });\n }\n\n if (this.state.switching && !prevState.switching) {\n requestAnimationFrame(() => this.switchPrevNext());\n }\n }\n\n /**\n * Инициализирует модалку перед анимацией открытия\n */\n initActiveModal() {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || 75;\n break;\n\n case ModalType.CARD:\n break;\n\n default:\n if (IS_DEV) {\n warn('[initActiveModal] modalState.type is unknown');\n }\n }\n\n this.setState({ inited: true, switching: true });\n }\n\n closeActiveModal() {\n const { prevModal } = this.state;\n if (IS_DEV && !prevModal) {\n return warn(`[closeActiveModal] prevModal is ${prevModal}`);\n }\n\n const prevModalState = this.modalsState[prevModal];\n\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n this.animateModalOpacity(prevModalState, false);\n this.setMaskOpacity(prevModalState, 0);\n }\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);\n }\n }\n\n switchPrevNext() {\n const { prevModal, nextModal } = this.state;\n\n const prevModalState = this.modalsState[prevModal];\n const nextModalState = this.modalsState[nextModal];\n\n if (IS_DEV && !prevModalState && !nextModalState) {\n return warn(`[switchPrevNext] prevModal is ${prevModal}, nextModal is ${nextModal}`);\n }\n\n const prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;\n\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n const nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD;\n\n // Ждём полного скрытия предыдущей модалки\n if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, () => {\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateModalOpacity(nextModalState, true);\n });\n\n requestAnimationFrame(() => {\n this.animateModalOpacity(prevModalState, false);\n });\n\n return;\n }\n\n if (prevModalState && nextIsPage) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n requestAnimationFrame(() => {\n this.animateModalOpacity(prevModalState, false);\n });\n }\n\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n requestAnimationFrame(() => {\n this.animateModalOpacity(nextModalState, true);\n });\n }\n\n prevNextSwitchEndHandler = () => {\n this.activeTransitions = Math.max(0, this.activeTransitions - 1);\n if (this.activeTransitions > 0) {\n return;\n }\n\n const activeModal = this.state.nextModal;\n\n const newState: ModalRootState = {\n prevModal: null,\n nextModal: null,\n visibleModals: [activeModal],\n activeModal: activeModal,\n animated: false,\n switching: false,\n };\n\n if (!activeModal) {\n newState.history = [];\n }\n\n this.setState(newState);\n };\n\n /* Анимирует сдивг модалки */\n animateModalOpacity(modalState: ModalsStateEntry, display: boolean) {\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.state.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n /**\n * Закрывает текущую модалку\n */\n triggerActiveModalClose = () => {\n const activeModalState = this.modalsState[this.state.activeModal];\n if (activeModalState) {\n this.doCloseModal(activeModalState);\n }\n };\n\n private readonly doCloseModal = (modalState: ModalsStateEntry) => {\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(this.props.onClose)) {\n this.props.onClose(modalState.id);\n } else if (IS_DEV) {\n warn('onClose is undefined');\n }\n };\n\n render() {\n const { prevModal, activeModal, nextModal, visibleModals, animated } = this.state;\n\n if (!activeModal && !prevModal && !nextModal && !animated) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={this.modalRootContext}>\n <div\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n }, 'ModalRoot--desktop')}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.triggerActiveModalClose}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\">\n {this.modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (!visibleModals.includes(modalId)) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <div\n key={key}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === prevModal,\n 'ModalRoot__modal--next': modalId === nextModal,\n })}\n >{Modal}</div>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootDesktop = withContext(withPlatform(withDOM<ModalRootProps>(ModalRootDesktopComponent)), ConfigProviderContext, 'configProvider');\n"],"file":"ModalRootDesktop.js"}
1
+ {"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":["React","classNames","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ANDROID","VKCOM","getClassName","withDOM","getNavId","warnOnce","FocusTrap","withModalManager","warn","ModalRootDesktopComponent","props","maskElementRef","createRef","modalRootContext","updateModalHeight","undefined","registerModal","id","data","Object","assign","getModalState","onClose","closeActiveModal","isInsideModal","platform","Children","toArray","children","prevProps","exitingModal","closeModal","enteringModal","enteringState","requestAnimationFrame","waitTransitionFinish","onEnter","animateModalOpacity","activeModal","restoreFocusTo","document","activeElement","focus","prevModalState","onExit","setMaskOpacity","modalState","eventHandler","supported","onceHandler","innerElement","removeEventListener","name","addEventListener","setTimeout","timeout","display","style","transitionDelay","delayEnter","opacity","forceOpacity","history","cancelAnimationFrame","maskAnimationFrame","current","translateY","translateYCurrent","Math","max","min","toString","configProvider","webviewType","VKAPPS","modals","map","Modal","modalId","key","Component","ModalRootDesktop"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry } from './types';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n}\n\nclass ModalRootDesktopComponent extends React.Component<ModalRootProps & DOMProps & ModalTransitionProps> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id), data),\n onClose: () => this.props.closeActiveModal(),\n isInsideModal: true,\n };\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private restoreFocusTo: HTMLElement;\n\n private get timeout() {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n private get modals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n getModalState(id: string) {\n return this.props.getModalState(id);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n requestAnimationFrame(() => {\n if (this.props.enteringModal === enteringModal) {\n this.waitTransitionFinish(enteringState, () => this.props.onEnter(enteringModal));\n this.animateModalOpacity(enteringState, true);\n }\n });\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.props.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n }\n\n closeModal(id: string) {\n const prevModalState = this.getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n this.waitTransitionFinish(prevModalState, () => this.props.onExit(id));\n this.animateModalOpacity(prevModalState, false);\n if (!this.props.activeModal) {\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /* Анимирует сдивг модалки */\n animateModalOpacity(modalState: ModalsStateEntry, display: boolean) {\n modalState.innerElement.style.transitionDelay = display && this.props.delayEnter ? `${this.timeout}ms` : null;\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.props.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n render() {\n const { exitingModal, activeModal, enteringModal } = this.props;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={this.modalRootContext}>\n <div\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n }, 'ModalRoot--desktop')}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n ref={this.maskElementRef}\n onClick={this.props.closeActiveModal}\n />\n <div vkuiClass=\"ModalRoot__viewport\">\n {this.modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n restoreFocus={false}\n onClose={this.props.closeActiveModal}\n timeout={this.timeout}\n key={key}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': !exitingModal && !enteringModal && modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === exitingModal,\n 'ModalRoot__modal--next': exitingModal && modalId === activeModal,\n })}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootDesktop = withContext(\n withPlatform(\n withDOM<ModalRootProps>(\n withModalManager()(ModalRootDesktopComponent),\n ),\n ),\n ConfigProviderContext, 'configProvider');\n"],"file":"ModalRootDesktop.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"names":["ModalType"],"mappings":"AAAA,WAAYA,SAAZ;;WAAYA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,KAAAA,S","sourcesContent":["export enum ModalType {\n PAGE = 'page',\n CARD = 'card',\n}\n\nexport type TranslateRange = [number, number];\n\nexport type ModalsState = { [index: string]: ModalsStateEntry };\n\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n footerElement?: HTMLElement | null;\n}\n\nexport interface ModalsStateEntry extends ModalElements {\n id: string;\n onClose?: () => any;\n type?: ModalType;\n\n settlingHeight?: number;\n dynamicContentHeight?: boolean;\n expandable?: boolean;\n\n /**\n * Процент текущего сдвига модалки\n */\n translateY?: number;\n /**\n * Процент сдвига модалки в изначальном состоянии\n */\n translateYFrom?: number;\n /**\n * Процент сдвига модалки во время взаимодействия с ней (потянуть, чтобы открыть или закрыть)\n */\n translateYCurrent?: number;\n\n touchStartContentScrollTop?: number;\n touchMovePositive?: boolean | null;\n touchShiftYPercent?: number;\n\n expanded?: boolean;\n collapsed?: boolean;\n hidden?: boolean;\n\n contentScrolled?: boolean;\n contentScrollStopTimeout?: ReturnType<typeof setTimeout>;\n\n expandedRange?: TranslateRange;\n collapsedRange?: TranslateRange;\n hiddenRange?: TranslateRange;\n}\n"],"file":"types.js"}
1
+ {"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"names":["ModalType"],"mappings":"AAAA,WAAYA,SAAZ;;WAAYA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,KAAAA,S","sourcesContent":["export enum ModalType {\n PAGE = 'page',\n CARD = 'card',\n}\n\nexport type TranslateRange = [number, number];\n\nexport type ModalsState = { [index: string]: ModalsStateEntry };\n\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n}\n\nexport interface ModalsStateEntry extends ModalElements {\n id: string;\n onClose?: () => any;\n type?: ModalType;\n\n settlingHeight?: number;\n dynamicContentHeight?: boolean;\n expandable?: boolean;\n\n /**\n * Процент текущего сдвига модалки\n */\n translateY?: number;\n /**\n * Процент сдвига модалки в изначальном состоянии\n */\n translateYFrom?: number;\n /**\n * Процент сдвига модалки во время взаимодействия с ней (потянуть, чтобы открыть или закрыть)\n */\n translateYCurrent?: number;\n\n touchStartContentScrollTop?: number;\n touchMovePositive?: boolean | null;\n touchShiftYPercent?: number;\n\n expanded?: boolean;\n collapsed?: boolean;\n hidden?: boolean;\n\n contentScrolled?: boolean;\n contentScrollStopTimeout?: ReturnType<typeof setTimeout>;\n\n expandedRange?: TranslateRange;\n collapsedRange?: TranslateRange;\n hiddenRange?: TranslateRange;\n}\n"],"file":"types.js"}