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