@vkontakte/vkui 4.20.0 → 4.22.1

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 (520) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +414 -116
  4. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  5. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  6. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  7. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  8. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  10. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  11. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +2 -3
  12. package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
  13. package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
  14. package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
  15. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  16. package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  17. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  18. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  19. package/.cache/ts/src/components/Link/Link.d.ts +1 -2
  20. package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
  21. package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
  22. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  23. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
  24. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
  25. package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  26. package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
  27. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  28. package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
  29. package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
  30. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
  31. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
  32. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
  33. package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
  34. package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
  35. package/.cache/ts/src/components/View/utils.d.ts +2 -0
  36. package/.cache/ts/src/index.d.ts +4 -0
  37. package/.cache/ts/src/lib/accessibility.d.ts +1 -1
  38. package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
  39. package/.cache/ts/src/types.d.ts +3 -0
  40. package/dist/cjs/components/ActionSheet/ActionSheet.js +7 -9
  41. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  42. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  43. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  44. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  45. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  46. package/dist/cjs/components/Button/Button.js.map +1 -1
  47. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  48. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  50. package/dist/cjs/components/Cell/Cell.js +109 -182
  51. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  52. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  53. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  54. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  55. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  56. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  57. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  58. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  59. package/dist/cjs/components/Cell/useDraggable.js +142 -0
  60. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  61. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  62. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  63. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  64. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  65. package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
  66. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  67. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  68. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  69. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  70. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +2 -3
  71. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  72. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  73. package/dist/cjs/components/FormField/FormField.d.ts +2 -3
  74. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  75. package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
  76. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  77. package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
  78. package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
  79. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  80. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  81. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  82. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  83. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  84. package/dist/cjs/components/Header/Header.js.map +1 -1
  85. package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  86. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  87. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  88. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
  89. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  91. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  92. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  93. package/dist/cjs/components/Link/Link.d.ts +1 -2
  94. package/dist/cjs/components/Link/Link.js.map +1 -1
  95. package/dist/cjs/components/ModalRoot/ModalRoot.js +170 -373
  96. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  97. package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
  98. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  99. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +59 -241
  100. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  101. package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
  102. package/dist/cjs/components/ModalRoot/types.js.map +1 -1
  103. package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
  104. package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
  105. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
  106. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  107. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  108. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  109. package/dist/cjs/components/Removable/Removable.js +75 -66
  110. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  111. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  112. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  113. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
  114. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  115. package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
  116. package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
  117. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  118. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  119. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
  120. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  121. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  122. package/dist/cjs/components/Switch/Switch.d.ts +2 -3
  123. package/dist/cjs/components/Switch/Switch.js +18 -8
  124. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  125. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  126. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  127. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  128. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  129. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
  131. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  132. package/dist/cjs/components/Textarea/Textarea.js +9 -7
  133. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  134. package/dist/cjs/components/Touch/Touch.d.ts +16 -17
  135. package/dist/cjs/components/Touch/Touch.js +21 -7
  136. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  137. package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
  138. package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
  139. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  140. package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
  141. package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
  142. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  143. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
  144. package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
  145. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  146. package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
  147. package/dist/cjs/components/Typography/Text/Text.js +2 -1
  148. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  149. package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
  150. package/dist/cjs/components/Typography/Title/Title.js +9 -4
  151. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  152. package/dist/cjs/components/View/View.js +68 -75
  153. package/dist/cjs/components/View/View.js.map +1 -1
  154. package/dist/cjs/components/View/ViewInfinite.js +78 -85
  155. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  156. package/dist/cjs/components/View/utils.d.ts +2 -0
  157. package/dist/cjs/components/View/utils.js +13 -0
  158. package/dist/cjs/components/View/utils.js.map +1 -0
  159. package/dist/cjs/index.d.ts +4 -0
  160. package/dist/cjs/index.js +16 -0
  161. package/dist/cjs/index.js.map +1 -1
  162. package/dist/cjs/lib/accessibility.d.ts +1 -1
  163. package/dist/cjs/lib/accessibility.js.map +1 -1
  164. package/dist/cjs/lib/prefixClass.js +7 -6
  165. package/dist/cjs/lib/prefixClass.js.map +1 -1
  166. package/dist/cjs/lib/supportEvents.d.ts +3 -1
  167. package/dist/cjs/lib/supportEvents.js +1 -4
  168. package/dist/cjs/lib/supportEvents.js.map +1 -1
  169. package/dist/cjs/types.d.ts +3 -0
  170. package/dist/components/ActionSheet/ActionSheet.js +6 -9
  171. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  172. package/dist/components/Avatar/Avatar.d.ts +2 -0
  173. package/dist/components/Avatar/Avatar.js +4 -2
  174. package/dist/components/Avatar/Avatar.js.map +1 -1
  175. package/dist/components/Banner/Banner.js.map +1 -1
  176. package/dist/components/Button/Button.js.map +1 -1
  177. package/dist/components/CardScroll/CardScroll.js +1 -1
  178. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  179. package/dist/components/Cell/Cell.d.ts +11 -0
  180. package/dist/components/Cell/Cell.js +103 -177
  181. package/dist/components/Cell/Cell.js.map +1 -1
  182. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  183. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  184. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  185. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  186. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  187. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  188. package/dist/components/Cell/useDraggable.d.ts +13 -0
  189. package/dist/components/Cell/useDraggable.js +126 -0
  190. package/dist/components/Cell/useDraggable.js.map +1 -0
  191. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  192. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  193. package/dist/components/Counter/Counter.js.map +1 -1
  194. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +3 -5
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  198. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  199. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  200. package/dist/components/FocusTrap/FocusTrap.d.ts +2 -3
  201. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  202. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  203. package/dist/components/FormField/FormField.d.ts +2 -3
  204. package/dist/components/FormField/FormField.js.map +1 -1
  205. package/dist/components/FormItem/FormItem.d.ts +2 -3
  206. package/dist/components/FormItem/FormItem.js.map +1 -1
  207. package/dist/components/FormLayout/FormLayout.d.ts +2 -4
  208. package/dist/components/FormLayout/FormLayout.js.map +1 -1
  209. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  210. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  211. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  212. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  213. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  214. package/dist/components/Header/Header.js.map +1 -1
  215. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  216. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  217. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  218. package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
  219. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  220. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  221. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  222. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  223. package/dist/components/Link/Link.d.ts +1 -2
  224. package/dist/components/Link/Link.js.map +1 -1
  225. package/dist/components/ModalRoot/ModalRoot.js +167 -376
  226. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  227. package/dist/components/ModalRoot/ModalRootContext.js +0 -3
  228. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  229. package/dist/components/ModalRoot/ModalRootDesktop.js +58 -244
  230. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  231. package/dist/components/ModalRoot/types.d.ts +0 -1
  232. package/dist/components/ModalRoot/types.js.map +1 -1
  233. package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
  234. package/dist/components/ModalRoot/useModalManager.js +189 -0
  235. package/dist/components/ModalRoot/useModalManager.js.map +1 -0
  236. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  237. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  238. package/dist/components/Removable/Removable.d.ts +2 -1
  239. package/dist/components/Removable/Removable.js +73 -64
  240. package/dist/components/Removable/Removable.js.map +1 -1
  241. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  242. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  243. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  244. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  245. package/dist/components/SplitCol/SplitCol.d.ts +3 -3
  246. package/dist/components/SplitCol/SplitCol.js +2 -4
  247. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  248. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  249. package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
  250. package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  251. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  252. package/dist/components/Switch/Switch.d.ts +2 -3
  253. package/dist/components/Switch/Switch.js +15 -8
  254. package/dist/components/Switch/Switch.js.map +1 -1
  255. package/dist/components/Tabbar/Tabbar.js +3 -1
  256. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  257. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  258. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  259. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  260. package/dist/components/Tappable/Tappable.d.ts +2 -3
  261. package/dist/components/Tappable/Tappable.js.map +1 -1
  262. package/dist/components/Textarea/Textarea.js +9 -6
  263. package/dist/components/Textarea/Textarea.js.map +1 -1
  264. package/dist/components/Touch/Touch.d.ts +16 -17
  265. package/dist/components/Touch/Touch.js +21 -7
  266. package/dist/components/Touch/Touch.js.map +1 -1
  267. package/dist/components/Typography/Caption/Caption.d.ts +2 -2
  268. package/dist/components/Typography/Caption/Caption.js +4 -2
  269. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  270. package/dist/components/Typography/Headline/Headline.d.ts +2 -2
  271. package/dist/components/Typography/Headline/Headline.js +2 -1
  272. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  273. package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
  274. package/dist/components/Typography/Subhead/Subhead.js +2 -1
  275. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  276. package/dist/components/Typography/Text/Text.d.ts +2 -3
  277. package/dist/components/Typography/Text/Text.js +2 -1
  278. package/dist/components/Typography/Text/Text.js.map +1 -1
  279. package/dist/components/Typography/Title/Title.d.ts +2 -2
  280. package/dist/components/Typography/Title/Title.js +9 -4
  281. package/dist/components/Typography/Title/Title.js.map +1 -1
  282. package/dist/components/View/View.js +67 -75
  283. package/dist/components/View/View.js.map +1 -1
  284. package/dist/components/View/ViewInfinite.js +79 -87
  285. package/dist/components/View/ViewInfinite.js.map +1 -1
  286. package/dist/components/View/utils.d.ts +2 -0
  287. package/dist/components/View/utils.js +6 -0
  288. package/dist/components/View/utils.js.map +1 -0
  289. package/dist/components.css +1 -1
  290. package/dist/components.css.map +1 -1
  291. package/dist/cssm/components/ActionSheet/ActionSheet.js +6 -9
  292. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  293. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  294. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  295. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  296. package/dist/cssm/components/Button/Button.css +1 -1
  297. package/dist/cssm/components/Button/Button.js.map +1 -1
  298. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  299. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  300. package/dist/cssm/components/Cell/Cell.css +1 -1
  301. package/dist/cssm/components/Cell/Cell.js +103 -177
  302. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  303. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  304. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  305. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  306. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  307. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  308. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  309. package/dist/cssm/components/Cell/useDraggable.js +126 -0
  310. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  311. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  312. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  313. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  314. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
  315. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  316. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  317. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  318. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  319. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  320. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  321. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  322. package/dist/cssm/components/FormField/FormField.css +1 -1
  323. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  324. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  325. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  326. package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
  327. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  328. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  329. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  330. package/dist/cssm/components/Gallery/Gallery.css +1 -1
  331. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  332. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  333. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  334. package/dist/cssm/components/Header/Header.js.map +1 -1
  335. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  336. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
  337. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  338. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  339. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  340. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  341. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  342. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  343. package/dist/cssm/components/Link/Link.js.map +1 -1
  344. package/dist/cssm/components/ModalRoot/ModalRoot.js +167 -376
  345. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
  347. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +58 -244
  349. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  350. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  351. package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
  352. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
  353. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  354. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  355. package/dist/cssm/components/Removable/Removable.css +1 -1
  356. package/dist/cssm/components/Removable/Removable.js +73 -64
  357. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  358. package/dist/cssm/components/Search/Search.css +1 -1
  359. package/dist/cssm/components/Select/Select.css +1 -1
  360. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  361. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  362. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  363. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  364. package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
  365. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  366. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
  367. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  368. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  369. package/dist/cssm/components/Switch/Switch.css +1 -1
  370. package/dist/cssm/components/Switch/Switch.js +15 -8
  371. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  372. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  373. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  374. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  375. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  376. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  377. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  378. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  379. package/dist/cssm/components/Textarea/Textarea.js +9 -6
  380. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  381. package/dist/cssm/components/Touch/Touch.js +21 -7
  382. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  383. package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
  384. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  385. package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
  386. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  387. package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
  388. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  389. package/dist/cssm/components/Typography/Text/Text.js +2 -1
  390. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  391. package/dist/cssm/components/Typography/Title/Title.js +9 -4
  392. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  393. package/dist/cssm/components/View/View.js +67 -75
  394. package/dist/cssm/components/View/View.js.map +1 -1
  395. package/dist/cssm/components/View/ViewInfinite.js +79 -87
  396. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  397. package/dist/cssm/components/View/utils.js +6 -0
  398. package/dist/cssm/components/View/utils.js.map +1 -0
  399. package/dist/cssm/index.js +2 -0
  400. package/dist/cssm/index.js.map +1 -1
  401. package/dist/cssm/lib/accessibility.js.map +1 -1
  402. package/dist/cssm/lib/prefixClass.js +7 -6
  403. package/dist/cssm/lib/prefixClass.js.map +1 -1
  404. package/dist/cssm/lib/supportEvents.js +1 -4
  405. package/dist/cssm/lib/supportEvents.js.map +1 -1
  406. package/dist/cssm/styles/components.css +1 -1
  407. package/dist/cssm/styles/themes.css +1 -1
  408. package/dist/cssm/styles/vkcom_light.css +1 -1
  409. package/dist/index.d.ts +4 -0
  410. package/dist/index.js +2 -0
  411. package/dist/index.js.map +1 -1
  412. package/dist/lib/accessibility.d.ts +1 -1
  413. package/dist/lib/accessibility.js.map +1 -1
  414. package/dist/lib/prefixClass.js +7 -6
  415. package/dist/lib/prefixClass.js.map +1 -1
  416. package/dist/lib/supportEvents.d.ts +3 -1
  417. package/dist/lib/supportEvents.js +1 -4
  418. package/dist/lib/supportEvents.js.map +1 -1
  419. package/dist/types.d.ts +3 -0
  420. package/dist/vkui.css +2 -2
  421. package/dist/vkui.css.map +1 -1
  422. package/package.json +8 -4
  423. package/src/components/ActionSheet/ActionSheet.tsx +4 -5
  424. package/src/components/ActionSheet/Readme.md +18 -14
  425. package/src/components/Alert/Readme.md +15 -11
  426. package/src/components/Avatar/Avatar.tsx +5 -2
  427. package/src/components/Banner/Banner.tsx +4 -5
  428. package/src/components/Button/Button.css +26 -53
  429. package/src/components/Button/Button.tsx +2 -3
  430. package/src/components/Card/Readme.md +6 -6
  431. package/src/components/CardScroll/CardScroll.tsx +4 -1
  432. package/src/components/Cell/Cell.css +21 -58
  433. package/src/components/Cell/Cell.tsx +101 -162
  434. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  435. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  436. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  437. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  438. package/src/components/Cell/Readme.md +89 -51
  439. package/src/components/Cell/useDraggable.tsx +112 -0
  440. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  441. package/src/components/Counter/Counter.tsx +2 -2
  442. package/src/components/CustomSelect/CustomSelect.tsx +3 -4
  443. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  444. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  445. package/src/components/Epic/Readme.md +2 -1
  446. package/src/components/FocusTrap/FocusTrap.tsx +13 -11
  447. package/src/components/FocusVisible/FocusVisible.css +12 -4
  448. package/src/components/FormField/FormField.css +0 -1
  449. package/src/components/FormField/FormField.tsx +2 -2
  450. package/src/components/FormItem/FormItem.css +13 -14
  451. package/src/components/FormItem/FormItem.tsx +2 -3
  452. package/src/components/FormLayout/FormLayout.tsx +2 -4
  453. package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
  454. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  455. package/src/components/Gallery/Gallery.css +2 -3
  456. package/src/components/Gallery/Readme.md +89 -109
  457. package/src/components/GridAvatar/GridAvatar.css +37 -0
  458. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  459. package/src/components/GridAvatar/Readme.md +12 -0
  460. package/src/components/Group/Readme.md +18 -14
  461. package/src/components/Header/Header.tsx +4 -4
  462. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
  463. package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
  464. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
  465. package/src/components/IconButton/IconButton.css +7 -0
  466. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  467. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  468. package/src/components/InitialsAvatar/Readme.md +14 -0
  469. package/src/components/Link/Link.tsx +1 -1
  470. package/src/components/MiniInfoCell/Readme.md +66 -62
  471. package/src/components/ModalDismissButton/Readme.md +13 -10
  472. package/src/components/ModalRoot/ModalRoot.tsx +159 -349
  473. package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
  474. package/src/components/ModalRoot/ModalRootDesktop.tsx +54 -240
  475. package/src/components/ModalRoot/Readme.md +35 -27
  476. package/src/components/ModalRoot/types.ts +0 -1
  477. package/src/components/ModalRoot/useModalManager.tsx +174 -0
  478. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  479. package/src/components/Removable/Removable.css +16 -63
  480. package/src/components/Removable/Removable.tsx +84 -64
  481. package/src/components/ScreenSpinner/Readme.md +13 -9
  482. package/src/components/Search/Search.css +1 -1
  483. package/src/components/Select/Select.css +1 -1
  484. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  485. package/src/components/SimpleCell/SimpleCell.css +10 -18
  486. package/src/components/SimpleCell/SimpleCell.tsx +3 -5
  487. package/src/components/SplitCol/SplitCol.tsx +4 -8
  488. package/src/components/SplitLayout/Readme.md +2 -2
  489. package/src/components/SubnavigationBar/Readme.md +90 -86
  490. package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
  491. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
  492. package/src/components/Switch/Readme.md +6 -6
  493. package/src/components/Switch/Switch.css +46 -15
  494. package/src/components/Switch/Switch.tsx +16 -8
  495. package/src/components/Tabbar/Tabbar.css +15 -4
  496. package/src/components/Tabbar/Tabbar.tsx +3 -1
  497. package/src/components/TabbarItem/Readme.md +72 -0
  498. package/src/components/TabbarItem/TabbarItem.css +65 -14
  499. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
  500. package/src/components/Tappable/Tappable.tsx +2 -3
  501. package/src/components/Textarea/Readme.md +3 -0
  502. package/src/components/Textarea/Textarea.tsx +10 -6
  503. package/src/components/Touch/Touch.tsx +38 -25
  504. package/src/components/Typography/Caption/Caption.tsx +4 -4
  505. package/src/components/Typography/Headline/Headline.tsx +3 -3
  506. package/src/components/Typography/Subhead/Subhead.tsx +3 -3
  507. package/src/components/Typography/Text/Text.tsx +3 -4
  508. package/src/components/Typography/Title/Title.tsx +9 -5
  509. package/src/components/View/Readme.md +42 -56
  510. package/src/components/View/View.tsx +46 -61
  511. package/src/components/View/ViewInfinite.tsx +52 -67
  512. package/src/components/View/utils.ts +8 -0
  513. package/src/index.ts +4 -0
  514. package/src/lib/accessibility.ts +2 -2
  515. package/src/lib/prefixClass.ts +9 -6
  516. package/src/lib/supportEvents.ts +1 -4
  517. package/src/styles/components.css +4 -0
  518. package/src/styles/vkcom_light.css +3 -3
  519. package/src/testing/utils.tsx +34 -1
  520. 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");
@@ -69,6 +65,8 @@ var _warnOnce = require("../../lib/warnOnce");
69
65
 
70
66
  var _FocusTrap = require("../FocusTrap/FocusTrap");
71
67
 
68
+ var _useModalManager = require("./useModalManager");
69
+
72
70
  var _excluded = ["id"];
73
71
  var warn = (0, _warnOnce.warnOnce)('ModalRoot');
74
72
  var IS_DEV = process.env.NODE_ENV === 'development';
@@ -91,9 +89,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
91
89
 
92
90
  (0, _classCallCheck2.default)(this, ModalRootTouchComponent);
93
91
  _this = _super.call(this, props);
94
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "modalsState", void 0);
95
92
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "documentScrolling", void 0);
96
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "activeTransitions", void 0);
97
93
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maskElementRef", void 0);
98
94
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "viewportRef", /*#__PURE__*/React.createRef());
99
95
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maskAnimationFrame", void 0);
@@ -116,25 +112,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
116
112
  return false;
117
113
  });
118
114
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateModalTranslate", function () {
119
- var activeModal = _this.state.activeModal || _this.state.nextModal;
120
-
121
- if (!activeModal) {
122
- return;
123
- }
124
-
125
- var modalState = _this.modalsState[activeModal];
115
+ var modalState = _this.getModalState(_this.props.activeModal);
126
116
 
127
- _this.animateTranslate(modalState, modalState.translateY);
117
+ modalState && _this.animateTranslate(modalState, modalState.translateY);
128
118
  });
129
119
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateModalHeight", function () {
130
- var _this$state = _this.state,
131
- activeModal = _this$state.activeModal,
132
- nextModal = _this$state.nextModal;
133
- var modalId = activeModal || nextModal;
134
- var modalState = modalId ? _this.modalsState[modalId] : undefined;
120
+ var modalState = _this.getModalState(_this.props.activeModal);
135
121
 
136
122
  if (modalState && modalState.type === _types.ModalType.PAGE && modalState.dynamicContentHeight) {
137
- if (_this.state.switching) {
123
+ if (_this.props.enteringModal) {
138
124
  _this.waitTransitionFinish(modalState, function () {
139
125
  requestAnimationFrame(function () {
140
126
  return _this.checkPageContentHeight();
@@ -148,18 +134,16 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
148
134
  }
149
135
  });
150
136
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onTouchMove", function (e) {
151
- if (_this.state.switching) {
137
+ if (_this.props.exitingModal) {
152
138
  return;
153
139
  }
154
140
 
155
- var activeModal = _this.state.activeModal || _this.state.nextModal;
141
+ var modalState = _this.getModalState(_this.props.activeModal);
156
142
 
157
- if (!activeModal) {
143
+ if (!modalState) {
158
144
  return;
159
145
  }
160
146
 
161
- var modalState = _this.modalsState[activeModal];
162
-
163
147
  if (modalState.type === _types.ModalType.PAGE) {
164
148
  return _this.onPageTouchMove(e, modalState);
165
149
  }
@@ -169,13 +153,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
169
153
  }
170
154
  });
171
155
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onTouchEnd", function (e) {
172
- var activeModal = _this.state.activeModal || _this.state.nextModal;
173
-
174
- if (!activeModal) {
175
- return;
176
- }
177
-
178
- var modalState = _this.modalsState[activeModal];
156
+ var modalState = _this.getModalState(_this.props.activeModal);
179
157
 
180
158
  if (modalState.type === _types.ModalType.PAGE) {
181
159
  return _this.onPageTouchEnd(e, modalState);
@@ -186,14 +164,14 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
186
164
  }
187
165
  });
188
166
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onScroll", function (e) {
189
- var activeModal = _this.state.activeModal;
167
+ var activeModal = _this.props.activeModal;
190
168
  var target = e.target;
191
169
 
192
170
  if (!activeModal) {
193
171
  return;
194
172
  }
195
173
 
196
- var modalState = _this.modalsState[activeModal];
174
+ var modalState = _this.getModalState(activeModal);
197
175
 
198
176
  if (modalState.type === _types.ModalType.PAGE && modalState.contentElement.contains(target)) {
199
177
  modalState.contentScrolled = true;
@@ -205,82 +183,21 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
205
183
  }, 250);
206
184
  }
207
185
  });
208
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "prevNextSwitchEndHandler", function () {
209
- _this.activeTransitions = Math.max(0, _this.activeTransitions - 1);
210
-
211
- if (_this.activeTransitions > 0) {
212
- return;
213
- }
214
-
215
- var activeModal = _this.state.nextModal;
216
- var newState = {
217
- prevModal: null,
218
- nextModal: null,
219
- visibleModals: [activeModal],
220
- activeModal: activeModal,
221
- animated: false,
222
- switching: false
223
- };
224
-
225
- if (!activeModal) {
226
- newState.history = [];
227
-
228
- if (_this.restoreFocusTo) {
229
- _this.restoreFocusTo.focus();
230
- }
231
- }
232
-
233
- _this.setState(newState);
234
- });
235
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "triggerActiveModalClose", function () {
236
- var activeModalState = _this.modalsState[_this.state.activeModal];
237
-
238
- if (activeModalState) {
239
- _this.doCloseModal(activeModalState);
240
- }
241
- });
242
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "doCloseModal", function (modalState) {
243
- // Сбрасываем состояния, которые могут помешать закрытию модального окна
244
- _this.setState({
245
- touchDown: false,
246
- switching: false
247
- });
248
-
249
- if ((0, _utils.isFunction)(modalState.onClose)) {
250
- modalState.onClose();
251
- } else if ((0, _utils.isFunction)(_this.props.onClose)) {
252
- _this.props.onClose(modalState.id);
253
- } else if (IS_DEV) {
254
- warn('onClose is undefined');
255
- }
256
- });
257
- var _activeModal = props.activeModal;
258
186
  _this.state = {
259
- activeModal: null,
260
- prevModal: null,
261
- nextModal: _activeModal,
262
- visibleModals: _activeModal ? [_activeModal] : [],
263
- animated: !!_activeModal,
264
- switching: false,
265
- history: _activeModal ? [_activeModal] : [],
266
- isBack: false,
267
- inited: false,
268
187
  touchDown: false,
269
188
  dragging: false
270
189
  };
271
- _this.activeTransitions = 0;
272
190
  _this.maskElementRef = /*#__PURE__*/React.createRef();
273
-
274
- _this.initModalsState();
275
-
276
191
  _this.modalRootContext = {
277
192
  updateModalHeight: _this.updateModalHeight,
278
193
  registerModal: function registerModal(_ref) {
279
194
  var id = _ref.id,
280
195
  data = (0, _objectWithoutProperties2.default)(_ref, _excluded);
281
- 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();
282
200
  },
283
- onClose: _this.triggerActiveModalClose,
284
201
  isInsideModal: true
285
202
  };
286
203
  _this.frameIds = {};
@@ -302,99 +219,64 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
302
219
  get: function get() {
303
220
  return this.props.window;
304
221
  }
222
+ }, {
223
+ key: "getModalState",
224
+ value: function getModalState(id) {
225
+ return this.props.getModalState(id);
226
+ }
305
227
  }, {
306
228
  key: "getModals",
307
229
  value: function getModals() {
308
230
  return React.Children.toArray(this.props.children);
309
231
  }
310
- }, {
311
- key: "initModalsState",
312
- value: function initModalsState() {
313
- this.modalsState = this.getModals().reduce(function (acc, Modal) {
314
- var modalProps = Modal.props;
315
- var state = {
316
- id: (0, _getNavId.getNavId)(modalProps, warn),
317
- onClose: Modal.props.onClose,
318
- dynamicContentHeight: !!modalProps.dynamicContentHeight
319
- }; // ModalPage props
320
-
321
- if (typeof modalProps.settlingHeight === 'number') {
322
- state.settlingHeight = modalProps.settlingHeight;
323
- }
324
-
325
- acc[state.id] = state;
326
- return acc;
327
- }, {});
328
- }
329
232
  }, {
330
233
  key: "componentDidMount",
331
234
  value: function componentDidMount() {
332
- this.initActiveModal();
235
+ // Отслеживаем изменение размеров viewport (Необходимо для iOS)
236
+ if (this.props.platform === _platform.IOS) {
237
+ this.window.addEventListener('resize', this.updateModalTranslate, false);
238
+ }
333
239
  }
334
240
  }, {
335
241
  key: "componentWillUnmount",
336
242
  value: function componentWillUnmount() {
337
243
  this.toggleDocumentScrolling(true);
338
-
339
- if (this.props.platform === _platform.IOS) {
340
- this.window.removeEventListener('resize', this.updateModalTranslate, false);
341
- }
244
+ this.window.removeEventListener('resize', this.updateModalTranslate, false);
342
245
  }
343
246
  }, {
344
247
  key: "componentDidUpdate",
345
- value: function componentDidUpdate(prevProps, prevState) {
248
+ value: function componentDidUpdate(prevProps) {
346
249
  var _this2 = this;
347
250
 
348
- if (this.props.activeModal !== prevProps.activeModal && !this.state.switching) {
349
- var nextModal = this.props.activeModal;
350
- 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
351
255
 
352
- if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {
353
- return warn("[componentDidUpdate] nextModal ".concat(nextModal, " not found"));
354
- }
355
256
 
356
- var history = (0, _toConsumableArray2.default)(this.state.history);
357
- 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;
358
262
 
359
- if (nextModal === null) {
360
- history = [];
361
- } else if (history.includes(nextModal)) {
362
- history = history.splice(0, history.indexOf(nextModal) + 1);
363
- isBack = true;
364
- } else {
365
- history.push(nextModal);
366
- }
367
-
368
- return this.setState({
369
- activeModal: null,
370
- nextModal: nextModal,
371
- prevModal: prevModal,
372
- visibleModals: [nextModal, prevModal],
373
- history: history,
374
- isBack: isBack,
375
- animated: true,
376
- inited: false,
377
- switching: false
378
- }, function () {
379
- if (nextModal === null) {
380
- _this2.closeActiveModal();
381
- } else {
382
- _this2.initActiveModal();
383
- }
263
+ _this2.props.onEnter(enteringModal);
384
264
  });
385
- }
265
+ enteringState.innerElement.style.transitionDelay = this.props.delayEnter ? "".concat(this.timeout, "ms") : null;
266
+ this.animateTranslate(enteringState, enteringState.translateY);
267
+ } // focus restoration
386
268
 
387
- if (this.state.switching && !prevState.switching) {
388
- requestAnimationFrame(function () {
389
- return _this2.switchPrevNext();
390
- });
269
+
270
+ if (this.props.activeModal && !prevProps.activeModal) {
271
+ this.restoreFocusTo = this.document.activeElement;
391
272
  }
392
273
 
393
- if (!this.state.activeModal && !this.state.prevModal && !this.state.nextModal) {
394
- this.toggleDocumentScrolling(true);
395
- } else {
396
- this.toggleDocumentScrolling(false);
274
+ if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {
275
+ this.restoreFocusTo.focus();
276
+ this.restoreFocusTo = null;
397
277
  }
278
+
279
+ this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);
398
280
  }
399
281
  /* Отключает скролл документа */
400
282
 
@@ -421,112 +303,14 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
421
303
  });
422
304
  }
423
305
  }
424
- }, {
425
- key: "initActiveModal",
426
- value:
427
- /**
428
- * Инициализирует модалку перед анимацией открытия
429
- */
430
- function initActiveModal() {
431
- var activeModal = this.state.activeModal || this.state.nextModal;
432
-
433
- if (!activeModal) {
434
- return;
435
- }
436
-
437
- var modalState = this.modalsState[activeModal]; // Отслеживаем изменение размеров viewport (Необходимо для iOS)
438
-
439
- if (this.props.platform === _platform.IOS) {
440
- this.window.addEventListener('resize', this.updateModalTranslate, false);
441
- }
442
-
443
- switch (modalState.type) {
444
- case _types.ModalType.PAGE:
445
- modalState.settlingHeight = modalState.settlingHeight || _constants.MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;
446
- this.initPageModal(modalState);
447
- break;
448
-
449
- case _types.ModalType.CARD:
450
- this.initCardModal(modalState);
451
- break;
452
-
453
- default:
454
- if (IS_DEV) {
455
- warn('[initActiveModal] modalState.type is unknown');
456
- }
457
-
458
- }
459
-
460
- this.setState({
461
- inited: true,
462
- switching: true
463
- });
464
- }
465
- }, {
466
- key: "initPageModal",
467
- value: function initPageModal(modalState) {
468
- var contentElement = modalState.contentElement;
469
- var contentHeight = contentElement.firstElementChild.offsetHeight;
470
- var prevTranslateY = modalState.translateY;
471
- modalState.expandable = contentHeight > contentElement.clientHeight || modalState.settlingHeight === 100;
472
- var collapsed = false;
473
- var expanded = false;
474
- var translateYFrom;
475
- var translateY;
476
- var expandedRange;
477
- var collapsedRange;
478
- var hiddenRange;
479
-
480
- if (modalState.expandable) {
481
- translateYFrom = 100 - modalState.settlingHeight;
482
- var shiftHalf = translateYFrom / 2;
483
- var visiblePart = 100 - translateYFrom;
484
- expandedRange = [0, shiftHalf];
485
- collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];
486
- hiddenRange = [translateYFrom + visiblePart / 4, 100];
487
- collapsed = translateYFrom > 0;
488
- expanded = translateYFrom <= 0;
489
- translateY = translateYFrom;
490
- } else {
491
- var headerHeight = modalState.headerElement.offsetHeight;
492
- var height = contentHeight + headerHeight;
493
- translateYFrom = 100 - height / modalState.innerElement.parentElement.offsetHeight * 100;
494
- translateY = translateYFrom;
495
- expandedRange = [translateY, translateY + 25];
496
- collapsedRange = [translateY + 25, translateY + 25];
497
- hiddenRange = [translateY + 25, translateY + 100];
498
- } // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран
499
-
500
-
501
- if (modalState.expandable && translateY > prevTranslateY || modalState.settlingHeight === 100) {
502
- translateY = 0;
503
- }
504
-
505
- modalState.expandedRange = expandedRange;
506
- modalState.collapsedRange = collapsedRange;
507
- modalState.hiddenRange = hiddenRange;
508
- modalState.translateY = translateY;
509
- modalState.translateYFrom = translateYFrom;
510
- modalState.collapsed = collapsed;
511
- modalState.expanded = expanded;
512
- }
513
- }, {
514
- key: "initCardModal",
515
- value: function initCardModal(modalState) {
516
- modalState.translateY = 0;
517
- }
518
306
  }, {
519
307
  key: "checkPageContentHeight",
520
308
  value: function checkPageContentHeight() {
521
- var _this$state2 = this.state,
522
- activeModal = _this$state2.activeModal,
523
- nextModal = _this$state2.nextModal;
524
- var modalId = activeModal || nextModal;
525
- var modalState = this.modalsState[modalId];
309
+ var modalState = this.getModalState(this.props.activeModal);
526
310
 
527
311
  if ((modalState === null || modalState === void 0 ? void 0 : modalState.type) === _types.ModalType.PAGE && modalState !== null && modalState !== void 0 && modalState.modalElement) {
528
312
  var prevModalState = (0, _objectSpread2.default)({}, modalState);
529
- this.initPageModal(modalState);
313
+ initPageModal(modalState);
530
314
  var currentModalState = (0, _objectSpread2.default)({}, modalState);
531
315
  var needAnimate = false;
532
316
 
@@ -544,28 +328,34 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
544
328
  }
545
329
  }
546
330
  }, {
547
- key: "closeActiveModal",
548
- value: function closeActiveModal() {
331
+ key: "closeModal",
332
+ value: function closeModal(id) {
333
+ var _this3 = this;
334
+
549
335
  // Сбрасываем состояния, которые могут помешать закрытию модального окна
550
336
  this.setState({
551
- touchDown: false,
552
- switching: false
337
+ touchDown: false
553
338
  });
339
+ var prevModalState = this.getModalState(id);
554
340
 
555
- if (this.props.platform === _platform.IOS) {
556
- this.window.removeEventListener('resize', this.updateModalTranslate, false);
341
+ if (!prevModalState) {
342
+ id && warn("[closeActiveModal] Modal ".concat(id, " does not exist - not closing"));
343
+ return;
557
344
  }
558
345
 
559
- 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);
560
354
 
561
- if (!prevModal) {
562
- return warn("[closeActiveModal] prevModal is ".concat(prevModal));
355
+ if (!nextModalState) {
356
+ // NOTE: was only for clean exit
357
+ this.setMaskOpacity(prevModalState, 0);
563
358
  }
564
-
565
- var prevModalState = this.modalsState[prevModal];
566
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
567
- this.animateTranslate(prevModalState, 100);
568
- this.setMaskOpacity(prevModalState, 0);
569
359
  }
570
360
  }, {
571
361
  key: "onPageTouchMove",
@@ -651,7 +441,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
651
441
  }, {
652
442
  key: "onPageTouchEnd",
653
443
  value: function onPageTouchEnd(event, modalState) {
654
- var _this3 = this;
444
+ var _this4 = this;
655
445
 
656
446
  var startY = event.startY,
657
447
  shiftY = event.shiftY;
@@ -694,15 +484,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
694
484
  modalState.hidden = translateY === 100;
695
485
 
696
486
  if (modalState.hidden) {
697
- this.doCloseModal(modalState);
487
+ this.props.closeActiveModal();
698
488
  }
699
489
 
700
490
  setStateCallback = function setStateCallback() {
701
491
  if (!modalState.hidden) {
702
- _this3.animateTranslate(modalState, modalState.translateY);
492
+ _this4.animateTranslate(modalState, modalState.translateY);
703
493
  }
704
494
 
705
- _this3.setMaskOpacity(modalState);
495
+ _this4.setMaskOpacity(modalState);
706
496
  };
707
497
  }
708
498
 
@@ -714,7 +504,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
714
504
  }, {
715
505
  key: "onCardTouchEnd",
716
506
  value: function onCardTouchEnd(_ref2, modalState) {
717
- var _this4 = this;
507
+ var _this5 = this;
718
508
 
719
509
  var duration = _ref2.duration;
720
510
  var setStateCallback;
@@ -734,15 +524,15 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
734
524
  modalState.hidden = translateY === 100;
735
525
 
736
526
  if (modalState.hidden) {
737
- this.doCloseModal(modalState);
527
+ this.props.closeActiveModal();
738
528
  }
739
529
 
740
530
  setStateCallback = function setStateCallback() {
741
531
  if (!modalState.hidden) {
742
- _this4.animateTranslate(modalState, modalState.translateY);
532
+ _this5.animateTranslate(modalState, modalState.translateY);
743
533
  }
744
534
 
745
- _this4.setMaskOpacity(modalState);
535
+ _this5.setMaskOpacity(modalState);
746
536
  };
747
537
  }
748
538
 
@@ -765,76 +555,20 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
765
555
  setTimeout(eventHandler, this.timeout);
766
556
  }
767
557
  }
768
- }, {
769
- key: "switchPrevNext",
770
- value: function switchPrevNext() {
771
- var _this5 = this;
772
-
773
- var _this$state3 = this.state,
774
- prevModal = _this$state3.prevModal,
775
- nextModal = _this$state3.nextModal;
776
- var prevModalState = this.modalsState[prevModal];
777
- var nextModalState = this.modalsState[nextModal];
778
-
779
- if (IS_DEV && !prevModalState && !nextModalState) {
780
- return warn("[switchPrevNext] prevModal is ".concat(prevModal, ", nextModal is ").concat(nextModal));
781
- }
782
-
783
- var prevIsPage = !!prevModalState && prevModalState.type === _types.ModalType.PAGE;
784
- var prevIsCard = !!prevModalState && prevModalState.type === _types.ModalType.CARD;
785
- var nextIsPage = !!nextModalState && nextModalState.type === _types.ModalType.PAGE;
786
- var nextIsCard = !!nextModalState && nextModalState.type === _types.ModalType.CARD; // Ждём полного скрытия предыдущей модалки
787
-
788
- if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {
789
- this.waitTransitionFinish(prevModalState, function () {
790
- _this5.activeTransitions += 1;
791
-
792
- _this5.waitTransitionFinish(nextModalState, _this5.prevNextSwitchEndHandler);
793
-
794
- _this5.animateTranslate(nextModalState, nextModalState.translateY);
795
- });
796
- return this.animateTranslate(prevModalState, 100);
797
- }
798
-
799
- if (prevModalState && nextIsPage) {
800
- this.activeTransitions += 1;
801
- this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
802
-
803
- if (prevIsPage && prevModalState.translateY <= nextModalState.translateYFrom && !this.state.isBack) {
804
- this.animateTranslate(prevModalState, nextModalState.translateYFrom + 10);
805
- } else {
806
- this.animateTranslate(prevModalState, 100);
807
- }
808
- }
809
-
810
- if (!prevModal && this.document.activeElement) {
811
- this.restoreFocusTo = this.document.activeElement;
812
- }
813
-
814
- this.activeTransitions += 1;
815
- this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);
816
- this.animateTranslate(nextModalState, nextModalState.translateY);
817
- }
818
- }, {
819
- key: "animateTranslate",
820
- value:
821
558
  /**
822
559
  * Анимирует сдвиг модалки
823
560
  *
824
561
  * @param {ModalsStateEntry} modalState
825
562
  * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта
826
563
  */
827
- function animateTranslate(modalState, percent) {
564
+
565
+ }, {
566
+ key: "animateTranslate",
567
+ value: function animateTranslate(modalState, percent) {
828
568
  var frameId = "animateTranslateFrame".concat(modalState.id);
829
569
  cancelAnimationFrame(this.frameIds[frameId]);
830
570
  this.frameIds[frameId] = requestAnimationFrame(function () {
831
571
  (0, _styles.setTransformStyle)(modalState.innerElement, "translate3d(0, ".concat(percent, "%, 0)"));
832
-
833
- if (modalState.type === _types.ModalType.PAGE && modalState.footerElement) {
834
- var footerHeight = modalState.footerElement.offsetHeight;
835
- var factor = modalState.innerElement.offsetHeight * (percent / 100);
836
- (0, _styles.setTransformStyle)(modalState.footerElement, "translateY(calc(".concat(footerHeight, "px * -").concat(factor / footerHeight, "))"));
837
- }
838
572
  });
839
573
  }
840
574
  /* Устанавливает прозрачность для полупрозрачной подложки */
@@ -846,7 +580,7 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
846
580
 
847
581
  var forceOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
848
582
 
849
- if (forceOpacity === null && this.state.history[0] !== modalState.id) {
583
+ if (forceOpacity === null && this.props.history[0] !== modalState.id) {
850
584
  return;
851
585
  }
852
586
 
@@ -860,26 +594,20 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
860
594
  }
861
595
  });
862
596
  }
863
- /**
864
- * Закрывает текущую модалку
865
- */
866
-
867
597
  }, {
868
598
  key: "render",
869
599
  value: function render() {
870
600
  var _this7 = this;
871
601
 
872
- var _this$state4 = this.state,
873
- prevModal = _this$state4.prevModal,
874
- activeModal = _this$state4.activeModal,
875
- nextModal = _this$state4.nextModal,
876
- visibleModals = _this$state4.visibleModals,
877
- animated = _this$state4.animated,
878
- touchDown = _this$state4.touchDown,
879
- dragging = _this$state4.dragging,
880
- switching = _this$state4.switching;
881
-
882
- 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) {
883
611
  return null;
884
612
  }
885
613
 
@@ -891,14 +619,14 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
891
619
  vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('ModalRoot', this.props.platform), {
892
620
  'ModalRoot--vkapps': this.props.configProvider.webviewType === _ConfigProviderContext.WebviewType.VKAPPS,
893
621
  'ModalRoot--touched': touchDown,
894
- 'ModalRoot--switching': switching
622
+ 'ModalRoot--switching': !!(enteringModal || exitingModal)
895
623
  }),
896
624
  onMove: this.onTouchMove,
897
625
  onEnd: this.onTouchEnd,
898
626
  onScroll: this.onScroll
899
627
  }, (0, _jsxRuntime.createScopedElement)("div", {
900
628
  vkuiClass: "ModalRoot__mask",
901
- onClick: this.triggerActiveModalClose,
629
+ onClick: this.props.closeActiveModal,
902
630
  ref: this.maskElementRef
903
631
  }), (0, _jsxRuntime.createScopedElement)("div", {
904
632
  vkuiClass: "ModalRoot__viewport",
@@ -906,24 +634,24 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
906
634
  }, this.getModals().map(function (Modal) {
907
635
  var modalId = (0, _getNavId.getNavId)(Modal.props, warn);
908
636
 
909
- if (!visibleModals.includes(modalId)) {
637
+ if (modalId !== activeModal && modalId !== exitingModal) {
910
638
  return null;
911
639
  }
912
640
 
913
- var modalState = (0, _objectSpread2.default)({}, _this7.modalsState[modalId]);
641
+ var modalState = (0, _objectSpread2.default)({}, _this7.getModalState(modalId));
914
642
  var isPage = modalState.type === _types.ModalType.PAGE;
915
643
  var key = "modal-".concat(modalId);
916
644
  return (0, _jsxRuntime.createScopedElement)(_FocusTrap.FocusTrap, {
917
645
  key: key,
918
646
  getRootRef: function getRootRef(e) {
919
- return _this7.modalsState[modalId].modalElement = e;
647
+ return _this7.getModalState(modalId).modalElement = e;
920
648
  },
921
- onClose: _this7.triggerActiveModalClose,
649
+ onClose: _this7.props.closeActiveModal,
922
650
  timeout: _this7.timeout,
923
651
  vkuiClass: (0, _classNames.classNames)('ModalRoot__modal', {
924
652
  'ModalRoot__modal--active': modalId === activeModal,
925
- 'ModalRoot__modal--prev': modalId === prevModal,
926
- 'ModalRoot__modal--next': modalId === nextModal,
653
+ 'ModalRoot__modal--prev': modalId === exitingModal,
654
+ 'ModalRoot__modal--next': exitingModal && modalId === activeModal || modalId === enteringModal,
927
655
  'ModalRoot__modal--dragging': dragging,
928
656
  'ModalRoot__modal--expandable': isPage && modalState.expandable,
929
657
  'ModalRoot__modal--expanded': isPage && modalState.expanded,
@@ -937,6 +665,75 @@ var ModalRootTouchComponent = /*#__PURE__*/function (_React$Component) {
937
665
  return ModalRootTouchComponent;
938
666
  }(React.Component);
939
667
 
940
- 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
+
941
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
+ }
942
739
  //# sourceMappingURL=ModalRoot.js.map