@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,5 +1,4 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
4
  import _createClass from "@babel/runtime/helpers/createClass";
@@ -16,7 +15,6 @@ import { getClassName } from "../../helpers/getClassName";
16
15
  import { classNames } from "../../lib/classNames";
17
16
  import { setTransformStyle } from "../../lib/styles";
18
17
  import { rubber } from "../../lib/touch";
19
- import { isFunction } from "../../lib/utils";
20
18
  import { ANDROID, IOS, VKCOM } from "../../lib/platform";
21
19
  import { transitionEvent } from "../../lib/supportEvents";
22
20
  import { withPlatform } from "../../hoc/withPlatform";
@@ -28,6 +26,8 @@ import { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from "./constants";
28
26
  import { withDOM } from "../../lib/dom";
29
27
  import { getNavId } from "../../lib/getNavId";
30
28
  import { warnOnce } from "../../lib/warnOnce";
29
+ import { FocusTrap } from "../FocusTrap/FocusTrap";
30
+ import { withModalManager } from "./useModalManager";
31
31
  var warn = warnOnce('ModalRoot');
32
32
  var IS_DEV = process.env.NODE_ENV === 'development';
33
33
 
@@ -51,12 +51,8 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
51
51
 
52
52
  _this = _super.call(this, props);
53
53
 
54
- _defineProperty(_assertThisInitialized(_this), "modalsState", void 0);
55
-
56
54
  _defineProperty(_assertThisInitialized(_this), "documentScrolling", void 0);
57
55
 
58
- _defineProperty(_assertThisInitialized(_this), "activeTransitions", void 0);
59
-
60
56
  _defineProperty(_assertThisInitialized(_this), "maskElementRef", void 0);
61
57
 
62
58
  _defineProperty(_assertThisInitialized(_this), "viewportRef", /*#__PURE__*/React.createRef());
@@ -67,6 +63,8 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
67
63
 
68
64
  _defineProperty(_assertThisInitialized(_this), "frameIds", void 0);
69
65
 
66
+ _defineProperty(_assertThisInitialized(_this), "restoreFocusTo", void 0);
67
+
70
68
  _defineProperty(_assertThisInitialized(_this), "preventTouch", function (event) {
71
69
  if (!event) {
72
70
  return false;
@@ -84,26 +82,16 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
84
82
  });
85
83
 
86
84
  _defineProperty(_assertThisInitialized(_this), "updateModalTranslate", function () {
87
- var activeModal = _this.state.activeModal || _this.state.nextModal;
88
-
89
- if (!activeModal) {
90
- return;
91
- }
92
-
93
- var modalState = _this.modalsState[activeModal];
85
+ var modalState = _this.getModalState(_this.props.activeModal);
94
86
 
95
- _this.animateTranslate(modalState, modalState.translateY);
87
+ modalState && _this.animateTranslate(modalState, modalState.translateY);
96
88
  });
97
89
 
98
90
  _defineProperty(_assertThisInitialized(_this), "updateModalHeight", function () {
99
- var _this$state = _this.state,
100
- activeModal = _this$state.activeModal,
101
- nextModal = _this$state.nextModal;
102
- var modalId = activeModal || nextModal;
103
- var modalState = modalId ? _this.modalsState[modalId] : undefined;
91
+ var modalState = _this.getModalState(_this.props.activeModal);
104
92
 
105
93
  if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {
106
- if (_this.state.switching) {
94
+ if (_this.props.enteringModal) {
107
95
  _this.waitTransitionFinish(modalState, function () {
108
96
  requestAnimationFrame(function () {
109
97
  return _this.checkPageContentHeight();
@@ -118,18 +106,16 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
118
106
  });
119
107
 
120
108
  _defineProperty(_assertThisInitialized(_this), "onTouchMove", function (e) {
121
- if (_this.state.switching) {
109
+ if (_this.props.exitingModal) {
122
110
  return;
123
111
  }
124
112
 
125
- var activeModal = _this.state.activeModal || _this.state.nextModal;
113
+ var modalState = _this.getModalState(_this.props.activeModal);
126
114
 
127
- if (!activeModal) {
115
+ if (!modalState) {
128
116
  return;
129
117
  }
130
118
 
131
- var modalState = _this.modalsState[activeModal];
132
-
133
119
  if (modalState.type === ModalType.PAGE) {
134
120
  return _this.onPageTouchMove(e, modalState);
135
121
  }
@@ -140,13 +126,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
140
126
  });
141
127
 
142
128
  _defineProperty(_assertThisInitialized(_this), "onTouchEnd", function (e) {
143
- var activeModal = _this.state.activeModal || _this.state.nextModal;
144
-
145
- if (!activeModal) {
146
- return;
147
- }
148
-
149
- var modalState = _this.modalsState[activeModal];
129
+ var modalState = _this.getModalState(_this.props.activeModal);
150
130
 
151
131
  if (modalState.type === ModalType.PAGE) {
152
132
  return _this.onPageTouchEnd(e, modalState);
@@ -158,14 +138,14 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
158
138
  });
159
139
 
160
140
  _defineProperty(_assertThisInitialized(_this), "onScroll", function (e) {
161
- var activeModal = _this.state.activeModal;
141
+ var activeModal = _this.props.activeModal;
162
142
  var target = e.target;
163
143
 
164
144
  if (!activeModal) {
165
145
  return;
166
146
  }
167
147
 
168
- var modalState = _this.modalsState[activeModal];
148
+ var modalState = _this.getModalState(activeModal);
169
149
 
170
150
  if (modalState.type === ModalType.PAGE && modalState.contentElement.contains(target)) {
171
151
  modalState.contentScrolled = true;
@@ -178,82 +158,22 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
178
158
  }
179
159
  });
180
160
 
181
- _defineProperty(_assertThisInitialized(_this), "prevNextSwitchEndHandler", function () {
182
- _this.activeTransitions = Math.max(0, _this.activeTransitions - 1);
183
-
184
- if (_this.activeTransitions > 0) {
185
- return;
186
- }
187
-
188
- var activeModal = _this.state.nextModal;
189
- var newState = {
190
- prevModal: null,
191
- nextModal: null,
192
- visibleModals: [activeModal],
193
- activeModal: activeModal,
194
- animated: false,
195
- switching: false
196
- };
197
-
198
- if (!activeModal) {
199
- newState.history = [];
200
- }
201
-
202
- _this.setState(newState);
203
- });
204
-
205
- _defineProperty(_assertThisInitialized(_this), "triggerActiveModalClose", function () {
206
- var activeModalState = _this.modalsState[_this.state.activeModal];
207
-
208
- if (activeModalState) {
209
- _this.doCloseModal(activeModalState);
210
- }
211
- });
212
-
213
- _defineProperty(_assertThisInitialized(_this), "doCloseModal", function (modalState) {
214
- // Сбрасываем состояния, которые могут помешать закрытию модального окна
215
- _this.setState({
216
- touchDown: false,
217
- switching: false
218
- });
219
-
220
- if (isFunction(modalState.onClose)) {
221
- modalState.onClose();
222
- } else if (isFunction(_this.props.onClose)) {
223
- _this.props.onClose(modalState.id);
224
- } else if (IS_DEV) {
225
- warn('onClose is undefined');
226
- }
227
- });
228
-
229
- var _activeModal = props.activeModal;
230
161
  _this.state = {
231
- activeModal: null,
232
- prevModal: null,
233
- nextModal: _activeModal,
234
- visibleModals: _activeModal ? [_activeModal] : [],
235
- animated: !!_activeModal,
236
- switching: false,
237
- history: _activeModal ? [_activeModal] : [],
238
- isBack: false,
239
- inited: false,
240
162
  touchDown: false,
241
163
  dragging: false
242
164
  };
243
- _this.activeTransitions = 0;
244
165
  _this.maskElementRef = /*#__PURE__*/React.createRef();
245
-
246
- _this.initModalsState();
247
-
248
166
  _this.modalRootContext = {
249
167
  updateModalHeight: _this.updateModalHeight,
250
168
  registerModal: function registerModal(_ref) {
251
169
  var id = _ref.id,
252
170
  data = _objectWithoutProperties(_ref, _excluded);
253
171
 
254
- return Object.assign(_this.modalsState[id], data);
172
+ return Object.assign(_this.getModalState(id), data);
173
+ },
174
+ onClose: function onClose() {
175
+ return _this.props.closeActiveModal();
255
176
  },
256
- onClose: _this.triggerActiveModalClose,
257
177
  isInsideModal: true
258
178
  };
259
179
  _this.frameIds = {};
@@ -261,6 +181,11 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
261
181
  }
262
182
 
263
183
  _createClass(ModalRootTouchComponent, [{
184
+ key: "timeout",
185
+ get: function get() {
186
+ return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;
187
+ }
188
+ }, {
264
189
  key: "document",
265
190
  get: function get() {
266
191
  return this.props.document;
@@ -270,100 +195,64 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
270
195
  get: function get() {
271
196
  return this.props.window;
272
197
  }
198
+ }, {
199
+ key: "getModalState",
200
+ value: function getModalState(id) {
201
+ return this.props.getModalState(id);
202
+ }
273
203
  }, {
274
204
  key: "getModals",
275
205
  value: function getModals() {
276
206
  return React.Children.toArray(this.props.children);
277
207
  }
278
- }, {
279
- key: "initModalsState",
280
- value: function initModalsState() {
281
- this.modalsState = this.getModals().reduce(function (acc, Modal) {
282
- var modalProps = Modal.props;
283
- var state = {
284
- id: getNavId(modalProps, warn),
285
- onClose: Modal.props.onClose,
286
- dynamicContentHeight: !!modalProps.dynamicContentHeight
287
- }; // ModalPage props
288
-
289
- if (typeof modalProps.settlingHeight === 'number') {
290
- state.settlingHeight = modalProps.settlingHeight;
291
- }
292
-
293
- acc[state.id] = state;
294
- return acc;
295
- }, {});
296
- }
297
208
  }, {
298
209
  key: "componentDidMount",
299
210
  value: function componentDidMount() {
300
- this.initActiveModal();
211
+ // Отслеживаем изменение размеров viewport (Необходимо для iOS)
212
+ if (this.props.platform === IOS) {
213
+ this.window.addEventListener('resize', this.updateModalTranslate, false);
214
+ }
301
215
  }
302
216
  }, {
303
217
  key: "componentWillUnmount",
304
218
  value: function componentWillUnmount() {
305
219
  this.toggleDocumentScrolling(true);
306
-
307
- if (this.props.platform === IOS) {
308
- this.window.removeEventListener('resize', this.updateModalTranslate, false);
309
- }
220
+ this.window.removeEventListener('resize', this.updateModalTranslate, false);
310
221
  }
311
222
  }, {
312
223
  key: "componentDidUpdate",
313
- value: function componentDidUpdate(prevProps, prevState) {
224
+ value: function componentDidUpdate(prevProps) {
314
225
  var _this2 = this;
315
226
 
316
- if (this.props.activeModal !== prevProps.activeModal && !this.state.switching) {
317
- var nextModal = this.props.activeModal;
318
- var prevModal = prevProps.activeModal;
227
+ // transition phase 2: animate exiting modal
228
+ if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {
229
+ this.closeModal(this.props.exitingModal);
230
+ } // transition phase 3: animate entering modal
319
231
 
320
- if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {
321
- return warn("[componentDidUpdate] nextModal ".concat(nextModal, " not found"));
322
- }
323
232
 
324
- var history = _toConsumableArray(this.state.history);
233
+ if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {
234
+ var enteringModal = this.props.enteringModal;
235
+ var enteringState = this.getModalState(enteringModal);
236
+ this.waitTransitionFinish(enteringState, function () {
237
+ enteringState.innerElement.style.transitionDelay = null;
325
238
 
326
- var isBack = false;
239
+ _this2.props.onEnter(enteringModal);
240
+ });
241
+ enteringState.innerElement.style.transitionDelay = this.props.delayEnter ? "".concat(this.timeout, "ms") : null;
242
+ this.animateTranslate(enteringState, enteringState.translateY);
243
+ } // focus restoration
327
244
 
328
- if (nextModal === null) {
329
- history = [];
330
- } else if (history.includes(nextModal)) {
331
- history = history.splice(0, history.indexOf(nextModal) + 1);
332
- isBack = true;
333
- } else {
334
- history.push(nextModal);
335
- }
336
245
 
337
- return this.setState({
338
- activeModal: null,
339
- nextModal: nextModal,
340
- prevModal: prevModal,
341
- visibleModals: [nextModal, prevModal],
342
- history: history,
343
- isBack: isBack,
344
- animated: true,
345
- inited: false,
346
- switching: false
347
- }, function () {
348
- if (nextModal === null) {
349
- _this2.closeActiveModal();
350
- } else {
351
- _this2.initActiveModal();
352
- }
353
- });
246
+ if (this.props.activeModal && !prevProps.activeModal) {
247
+ this.restoreFocusTo = this.document.activeElement;
354
248
  }
355
249
 
356
- if (this.state.switching && !prevState.switching) {
357
- requestAnimationFrame(function () {
358
- return _this2.switchPrevNext();
359
- });
250
+ if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {
251
+ this.restoreFocusTo.focus();
252
+ this.restoreFocusTo = null;
360
253
  }
361
254
 
362
- if (!this.state.activeModal && !this.state.prevModal && !this.state.nextModal) {
363
- this.toggleDocumentScrolling(true);
364
- } else {
365
- this.toggleDocumentScrolling(false);
366
- }
255
+ this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);
367
256
  }
368
257
  /* Отключает скролл документа */
369
258
 
@@ -390,113 +279,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
390
279
  });
391
280
  }
392
281
  }
393
- }, {
394
- key: "initActiveModal",
395
- value:
396
- /**
397
- * Инициализирует модалку перед анимацией открытия
398
- */
399
- function initActiveModal() {
400
- var activeModal = this.state.activeModal || this.state.nextModal;
401
-
402
- if (!activeModal) {
403
- return;
404
- }
405
-
406
- var modalState = this.modalsState[activeModal]; // Отслеживаем изменение размеров viewport (Необходимо для iOS)
407
-
408
- if (this.props.platform === IOS) {
409
- this.window.addEventListener('resize', this.updateModalTranslate, false);
410
- }
411
-
412
- switch (modalState.type) {
413
- case ModalType.PAGE:
414
- modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;
415
- this.initPageModal(modalState);
416
- break;
417
-
418
- case ModalType.CARD:
419
- this.initCardModal(modalState);
420
- break;
421
-
422
- default:
423
- if (IS_DEV) {
424
- warn('[initActiveModal] modalState.type is unknown');
425
- }
426
-
427
- }
428
-
429
- this.setState({
430
- inited: true,
431
- switching: true
432
- });
433
- }
434
- }, {
435
- key: "initPageModal",
436
- value: function initPageModal(modalState) {
437
- var contentElement = modalState.contentElement;
438
- var contentHeight = contentElement.firstElementChild.offsetHeight;
439
- var prevTranslateY = modalState.translateY;
440
- modalState.expandable = contentHeight > contentElement.clientHeight || modalState.settlingHeight === 100;
441
- var collapsed = false;
442
- var expanded = false;
443
- var translateYFrom;
444
- var translateY;
445
- var expandedRange;
446
- var collapsedRange;
447
- var hiddenRange;
448
-
449
- if (modalState.expandable) {
450
- translateYFrom = 100 - modalState.settlingHeight;
451
- var shiftHalf = translateYFrom / 2;
452
- var visiblePart = 100 - translateYFrom;
453
- expandedRange = [0, shiftHalf];
454
- collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];
455
- hiddenRange = [translateYFrom + visiblePart / 4, 100];
456
- collapsed = translateYFrom > 0;
457
- expanded = translateYFrom <= 0;
458
- translateY = translateYFrom;
459
- } else {
460
- var headerHeight = modalState.headerElement.offsetHeight;
461
- var height = contentHeight + headerHeight;
462
- translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;
463
- translateY = translateYFrom;
464
- expandedRange = [translateY, translateY + 25];
465
- collapsedRange = [translateY + 25, translateY + 25];
466
- hiddenRange = [translateY + 25, translateY + 100];
467
- } // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран
468
-
469
-
470
- if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {
471
- translateY = 0;
472
- }
473
-
474
- modalState.expandedRange = expandedRange;
475
- modalState.collapsedRange = collapsedRange;
476
- modalState.hiddenRange = hiddenRange;
477
- modalState.translateY = translateY;
478
- modalState.translateYFrom = translateYFrom;
479
- modalState.collapsed = collapsed;
480
- modalState.expanded = expanded;
481
- }
482
- }, {
483
- key: "initCardModal",
484
- value: function initCardModal(modalState) {
485
- modalState.translateY = 0;
486
- }
487
282
  }, {
488
283
  key: "checkPageContentHeight",
489
284
  value: function checkPageContentHeight() {
490
- var _this$state2 = this.state,
491
- activeModal = _this$state2.activeModal,
492
- nextModal = _this$state2.nextModal;
493
- var modalId = activeModal || nextModal;
494
- var modalState = this.modalsState[modalId];
285
+ var modalState = this.getModalState(this.props.activeModal);
495
286
 
496
287
  if ((modalState === null || modalState === void 0 ? void 0 : modalState.type) === ModalType.PAGE && modalState !== null && modalState !== void 0 && modalState.modalElement) {
497
288
  var prevModalState = _objectSpread({}, modalState);
498
289
 
499
- this.initPageModal(modalState);
290
+ initPageModal(modalState);
500
291
 
501
292
  var currentModalState = _objectSpread({}, modalState);
502
293
 
@@ -516,28 +307,34 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
516
307
  }
517
308
  }
518
309
  }, {
519
- key: "closeActiveModal",
520
- value: function closeActiveModal() {
310
+ key: "closeModal",
311
+ value: function closeModal(id) {
312
+ var _this3 = this;
313
+
521
314
  // Сбрасываем состояния, которые могут помешать закрытию модального окна
522
315
  this.setState({
523
- touchDown: false,
524
- switching: false
316
+ touchDown: false
525
317
  });
318
+ var prevModalState = this.getModalState(id);
526
319
 
527
- if (this.props.platform === IOS) {
528
- this.window.removeEventListener('resize', this.updateModalTranslate, false);
320
+ if (!prevModalState) {
321
+ id && warn("[closeActiveModal] Modal ".concat(id, " does not exist - not closing"));
322
+ return;
529
323
  }
530
324
 
531
- var prevModal = this.state.prevModal;
325
+ var nextModalState = this.getModalState(this.props.activeModal);
326
+ var nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;
327
+ var prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;
328
+ this.waitTransitionFinish(prevModalState, function () {
329
+ return _this3.props.onExit(id);
330
+ });
331
+ var exitTranslate = prevIsPage && nextIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.props.isBack ? nextModalState.translateYFrom + 10 : 100;
332
+ this.animateTranslate(prevModalState, exitTranslate);
532
333
 
533
- if (!prevModal) {
534
- return warn("[closeActiveModal] prevModal is ".concat(prevModal));
334
+ if (!nextModalState) {
335
+ // NOTE: was only for clean exit
336
+ this.setMaskOpacity(prevModalState, 0);
535
337
  }
536
-
537
- var prevModalState = this.modalsState[prevModal];
538
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
539
- this.animateTranslate(prevModalState, 100);
540
- this.setMaskOpacity(prevModalState, 0);
541
338
  }
542
339
  }, {
543
340
  key: "onPageTouchMove",
@@ -623,7 +420,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
623
420
  }, {
624
421
  key: "onPageTouchEnd",
625
422
  value: function onPageTouchEnd(event, modalState) {
626
- var _this3 = this;
423
+ var _this4 = this;
627
424
 
628
425
  var startY = event.startY,
629
426
  shiftY = event.shiftY;
@@ -666,15 +463,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
666
463
  modalState.hidden = translateY === 100;
667
464
 
668
465
  if (modalState.hidden) {
669
- this.doCloseModal(modalState);
466
+ this.props.closeActiveModal();
670
467
  }
671
468
 
672
469
  setStateCallback = function setStateCallback() {
673
470
  if (!modalState.hidden) {
674
- _this3.animateTranslate(modalState, modalState.translateY);
471
+ _this4.animateTranslate(modalState, modalState.translateY);
675
472
  }
676
473
 
677
- _this3.setMaskOpacity(modalState);
474
+ _this4.setMaskOpacity(modalState);
678
475
  };
679
476
  }
680
477
 
@@ -686,7 +483,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
686
483
  }, {
687
484
  key: "onCardTouchEnd",
688
485
  value: function onCardTouchEnd(_ref2, modalState) {
689
- var _this4 = this;
486
+ var _this5 = this;
690
487
 
691
488
  var duration = _ref2.duration;
692
489
  var setStateCallback;
@@ -706,15 +503,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
706
503
  modalState.hidden = translateY === 100;
707
504
 
708
505
  if (modalState.hidden) {
709
- this.doCloseModal(modalState);
506
+ this.props.closeActiveModal();
710
507
  }
711
508
 
712
509
  setStateCallback = function setStateCallback() {
713
510
  if (!modalState.hidden) {
714
- _this4.animateTranslate(modalState, modalState.translateY);
511
+ _this5.animateTranslate(modalState, modalState.translateY);
715
512
  }
716
513
 
717
- _this4.setMaskOpacity(modalState);
514
+ _this5.setMaskOpacity(modalState);
718
515
  };
719
516
  }
720
517
 
@@ -734,75 +531,23 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
734
531
 
735
532
  modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);
736
533
  } else {
737
- setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);
534
+ setTimeout(eventHandler, this.timeout);
738
535
  }
739
536
  }
740
- }, {
741
- key: "switchPrevNext",
742
- value: function switchPrevNext() {
743
- var _this5 = this;
744
-
745
- var _this$state3 = this.state,
746
- prevModal = _this$state3.prevModal,
747
- nextModal = _this$state3.nextModal;
748
- var prevModalState = this.modalsState[prevModal];
749
- var nextModalState = this.modalsState[nextModal];
750
-
751
- if (IS_DEV && !prevModalState && !nextModalState) {
752
- return warn("[switchPrevNext] prevModal is ".concat(prevModal, ", nextModal is ").concat(nextModal));
753
- }
754
-
755
- var prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;
756
- var prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;
757
- var nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;
758
- var nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD; // Ждём полного скрытия предыдущей модалки
759
-
760
- if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {
761
- this.waitTransitionFinish(prevModalState, function () {
762
- _this5.activeTransitions += 1;
763
-
764
- _this5.waitTransitionFinish(nextModalState, _this5.prevNextSwitchEndHandler);
765
-
766
- _this5.animateTranslate(nextModalState, nextModalState.translateY);
767
- });
768
- return this.animateTranslate(prevModalState, 100);
769
- }
770
-
771
- if (prevModalState && nextIsPage) {
772
- this.activeTransitions += 1;
773
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
774
-
775
- if (prevIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.state.isBack) {
776
- this.animateTranslate(prevModalState, nextModalState.translateYFrom + 10);
777
- } else {
778
- this.animateTranslate(prevModalState, 100);
779
- }
780
- }
781
-
782
- this.activeTransitions += 1;
783
- this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);
784
- this.animateTranslate(nextModalState, nextModalState.translateY);
785
- }
786
- }, {
787
- key: "animateTranslate",
788
- value:
789
537
  /**
790
538
  * Анимирует сдвиг модалки
791
539
  *
792
540
  * @param {ModalsStateEntry} modalState
793
541
  * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта
794
542
  */
795
- function animateTranslate(modalState, percent) {
543
+
544
+ }, {
545
+ key: "animateTranslate",
546
+ value: function animateTranslate(modalState, percent) {
796
547
  var frameId = "animateTranslateFrame".concat(modalState.id);
797
548
  cancelAnimationFrame(this.frameIds[frameId]);
798
549
  this.frameIds[frameId] = requestAnimationFrame(function () {
799
550
  setTransformStyle(modalState.innerElement, "translate3d(0, ".concat(percent, "%, 0)"));
800
-
801
- if (modalState.type === ModalType.PAGE && modalState.footerElement) {
802
- var footerHeight = modalState.footerElement.offsetHeight;
803
- var factor = modalState.innerElement.offsetHeight * (percent / 100);
804
- setTransformStyle(modalState.footerElement, "translateY(calc(".concat(footerHeight, "px * -").concat(factor / footerHeight, "))"));
805
- }
806
551
  });
807
552
  }
808
553
  /* Устанавливает прозрачность для полупрозрачной подложки */
@@ -814,7 +559,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
814
559
 
815
560
  var forceOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
816
561
 
817
- if (forceOpacity === null && this.state.history[0] !== modalState.id) {
562
+ if (forceOpacity === null && this.props.history[0] !== modalState.id) {
818
563
  return;
819
564
  }
820
565
 
@@ -828,26 +573,20 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
828
573
  }
829
574
  });
830
575
  }
831
- /**
832
- * Закрывает текущую модалку
833
- */
834
-
835
576
  }, {
836
577
  key: "render",
837
578
  value: function render() {
838
579
  var _this7 = this;
839
580
 
840
- var _this$state4 = this.state,
841
- prevModal = _this$state4.prevModal,
842
- activeModal = _this$state4.activeModal,
843
- nextModal = _this$state4.nextModal,
844
- visibleModals = _this$state4.visibleModals,
845
- animated = _this$state4.animated,
846
- touchDown = _this$state4.touchDown,
847
- dragging = _this$state4.dragging,
848
- switching = _this$state4.switching;
849
-
850
- if (!activeModal && !prevModal && !nextModal && !animated) {
581
+ var _this$props = this.props,
582
+ activeModal = _this$props.activeModal,
583
+ exitingModal = _this$props.exitingModal,
584
+ enteringModal = _this$props.enteringModal;
585
+ var _this$state = this.state,
586
+ touchDown = _this$state.touchDown,
587
+ dragging = _this$state.dragging;
588
+
589
+ if (!activeModal && !exitingModal) {
851
590
  return null;
852
591
  }
853
592
 
@@ -859,14 +598,14 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
859
598
  vkuiClass: classNames(getClassName('ModalRoot', this.props.platform), {
860
599
  'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,
861
600
  'ModalRoot--touched': touchDown,
862
- 'ModalRoot--switching': switching
601
+ 'ModalRoot--switching': !!(enteringModal || exitingModal)
863
602
  }),
864
603
  onMove: this.onTouchMove,
865
604
  onEnd: this.onTouchEnd,
866
605
  onScroll: this.onScroll
867
606
  }, createScopedElement("div", {
868
607
  vkuiClass: "ModalRoot__mask",
869
- onClick: this.triggerActiveModalClose,
608
+ onClick: this.props.closeActiveModal,
870
609
  ref: this.maskElementRef
871
610
  }), createScopedElement("div", {
872
611
  vkuiClass: "ModalRoot__viewport",
@@ -874,28 +613,31 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
874
613
  }, this.getModals().map(function (Modal) {
875
614
  var modalId = getNavId(Modal.props, warn);
876
615
 
877
- if (!visibleModals.includes(modalId)) {
616
+ if (modalId !== activeModal && modalId !== exitingModal) {
878
617
  return null;
879
618
  }
880
619
 
881
- var modalState = _objectSpread({}, _this7.modalsState[modalId]);
620
+ var modalState = _objectSpread({}, _this7.getModalState(modalId));
882
621
 
883
622
  var isPage = modalState.type === ModalType.PAGE;
884
623
  var key = "modal-".concat(modalId);
885
- return createScopedElement("div", {
624
+ return createScopedElement(FocusTrap, {
886
625
  key: key,
887
- ref: function ref(e) {
888
- return _this7.modalsState[modalId].modalElement = e;
626
+ getRootRef: function getRootRef(e) {
627
+ return _this7.getModalState(modalId).modalElement = e;
889
628
  },
629
+ onClose: _this7.props.closeActiveModal,
630
+ timeout: _this7.timeout,
890
631
  vkuiClass: classNames('ModalRoot__modal', {
891
632
  'ModalRoot__modal--active': modalId === activeModal,
892
- 'ModalRoot__modal--prev': modalId === prevModal,
893
- 'ModalRoot__modal--next': modalId === nextModal,
633
+ 'ModalRoot__modal--prev': modalId === exitingModal,
634
+ 'ModalRoot__modal--next': exitingModal && modalId === activeModal || modalId === enteringModal,
894
635
  'ModalRoot__modal--dragging': dragging,
895
636
  'ModalRoot__modal--expandable': isPage && modalState.expandable,
896
637
  'ModalRoot__modal--expanded': isPage && modalState.expanded,
897
638
  'ModalRoot__modal--collapsed': isPage && modalState.collapsed
898
- })
639
+ }),
640
+ restoreFocus: false
899
641
  }, Modal);
900
642
  })))));
901
643
  }
@@ -904,5 +646,73 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
904
646
  return ModalRootTouchComponent;
905
647
  }(React.Component);
906
648
 
907
- export var ModalRootTouch = withContext(withPlatform(withDOM(ModalRootTouchComponent)), ConfigProviderContext, 'configProvider');
649
+ export var ModalRootTouch = withContext(withPlatform(withDOM(withModalManager(initModal)(ModalRootTouchComponent))), ConfigProviderContext, 'configProvider');
650
+ /**
651
+ * Инициализирует модалку перед анимацией открытия
652
+ */
653
+
654
+ function initModal(modalState) {
655
+ switch (modalState.type) {
656
+ case ModalType.PAGE:
657
+ modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;
658
+ return initPageModal(modalState);
659
+
660
+ case ModalType.CARD:
661
+ return initCardModal(modalState);
662
+
663
+ default:
664
+ IS_DEV && warn('[initActiveModal] modalState.type is unknown');
665
+ }
666
+ }
667
+
668
+ function initPageModal(modalState) {
669
+ var contentElement = modalState.contentElement;
670
+ var contentHeight = contentElement.firstElementChild.offsetHeight;
671
+ var prevTranslateY = modalState.translateY;
672
+ modalState.expandable = contentHeight > contentElement.clientHeight || modalState.settlingHeight === 100;
673
+ var collapsed = false;
674
+ var expanded = false;
675
+ var translateYFrom;
676
+ var translateY;
677
+ var expandedRange;
678
+ var collapsedRange;
679
+ var hiddenRange;
680
+
681
+ if (modalState.expandable) {
682
+ translateYFrom = 100 - modalState.settlingHeight;
683
+ var shiftHalf = translateYFrom / 2;
684
+ var visiblePart = 100 - translateYFrom;
685
+ expandedRange = [0, shiftHalf];
686
+ collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];
687
+ hiddenRange = [translateYFrom + visiblePart / 4, 100];
688
+ collapsed = translateYFrom > 0;
689
+ expanded = translateYFrom <= 0;
690
+ translateY = translateYFrom;
691
+ } else {
692
+ var headerHeight = modalState.headerElement.offsetHeight;
693
+ var height = contentHeight + headerHeight;
694
+ translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;
695
+ translateY = translateYFrom;
696
+ expandedRange = [translateY, translateY + 25];
697
+ collapsedRange = [translateY + 25, translateY + 25];
698
+ hiddenRange = [translateY + 25, translateY + 100];
699
+ } // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран
700
+
701
+
702
+ if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {
703
+ translateY = 0;
704
+ }
705
+
706
+ modalState.expandedRange = expandedRange;
707
+ modalState.collapsedRange = collapsedRange;
708
+ modalState.hiddenRange = hiddenRange;
709
+ modalState.translateY = translateY;
710
+ modalState.translateYFrom = translateYFrom;
711
+ modalState.collapsed = collapsed;
712
+ modalState.expanded = expanded;
713
+ }
714
+
715
+ function initCardModal(modalState) {
716
+ modalState.translateY = 0;
717
+ }
908
718
  //# sourceMappingURL=ModalRoot.js.map