@ionic/core 8.8.14-dev.11784216165.1ecbf364 → 8.8.14-dev.11784222473.142aed23

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 (360) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-back-button.js +1 -1
  5. package/components/ion-button.js +1 -1
  6. package/components/ion-card.js +1 -1
  7. package/components/ion-chip.js +1 -1
  8. package/components/ion-datetime-button.js +1 -1
  9. package/components/ion-datetime.js +1 -1
  10. package/components/ion-fab-button.js +1 -1
  11. package/components/ion-img.js +1 -1
  12. package/components/ion-infinite-scroll-content.js +1 -1
  13. package/components/ion-input-password-toggle.js +1 -1
  14. package/components/ion-input.js +1 -1
  15. package/components/ion-item-option.js +1 -1
  16. package/components/ion-item.js +1 -1
  17. package/components/ion-loading.js +1 -1
  18. package/components/ion-menu-button.js +1 -1
  19. package/components/ion-menu.js +1 -1
  20. package/components/ion-modal.js +1 -1
  21. package/components/ion-nav.js +1 -1
  22. package/components/ion-picker-legacy-column.d.ts +11 -0
  23. package/components/ion-picker-legacy-column.js +4 -0
  24. package/components/ion-picker-legacy.d.ts +11 -0
  25. package/components/ion-picker-legacy.js +4 -0
  26. package/components/ion-popover.js +1 -1
  27. package/components/ion-progress-bar.js +1 -1
  28. package/components/ion-radio.js +1 -1
  29. package/components/ion-range.js +1 -1
  30. package/components/ion-refresher-content.js +1 -1
  31. package/components/ion-refresher.js +1 -1
  32. package/components/ion-reorder-group.js +1 -1
  33. package/components/ion-reorder.js +1 -1
  34. package/components/ion-ripple-effect.js +1 -1
  35. package/components/ion-router-link.js +1 -1
  36. package/components/ion-router-outlet.js +1 -1
  37. package/components/ion-router.js +1 -1
  38. package/components/ion-row.js +1 -1
  39. package/components/ion-searchbar.js +1 -1
  40. package/components/ion-segment-button.js +1 -1
  41. package/components/ion-segment-content.js +1 -1
  42. package/components/ion-segment-view.js +1 -1
  43. package/components/ion-segment.js +1 -1
  44. package/components/ion-select-modal.js +1 -1
  45. package/components/ion-select-option.js +1 -1
  46. package/components/ion-select-popover.js +1 -1
  47. package/components/ion-select.js +1 -1
  48. package/components/ion-skeleton-text.js +1 -1
  49. package/components/ion-spinner.js +1 -1
  50. package/components/ion-split-pane.js +1 -1
  51. package/components/ion-tab-bar.js +1 -1
  52. package/components/ion-tab-button.js +1 -1
  53. package/components/ion-tab.js +1 -1
  54. package/components/ion-tabs.js +1 -1
  55. package/components/ion-text.js +1 -1
  56. package/components/ion-textarea.js +1 -1
  57. package/components/ion-thumbnail.js +1 -1
  58. package/components/ion-title.js +1 -1
  59. package/components/ion-toast.js +1 -1
  60. package/components/ion-toggle.js +1 -1
  61. package/components/ion-toolbar.js +1 -1
  62. package/components/p-3hGiN2uq.js +4 -0
  63. package/components/{p-DpV-p5Xs.js → p-5bE_Wz4Y.js} +1 -1
  64. package/components/{p-r0aq7dpt.js → p-B60hm8Qv.js} +1 -1
  65. package/components/{p-Buf_7zcy.js → p-BHrrc-3d.js} +1 -1
  66. package/components/p-BIPPbW0M.js +4 -0
  67. package/components/{p-XJWMAP8m.js → p-BLmJ0zRm.js} +1 -1
  68. package/components/{p-DhkITZ-y.js → p-BSEgsdFI.js} +1 -1
  69. package/components/p-BUYFy35a.js +4 -0
  70. package/components/p-BWEZufiK.js +4 -0
  71. package/components/p-BqpciLfi.js +4 -0
  72. package/components/p-BsQPAqo9.js +4 -0
  73. package/components/p-CU5rbWAW.js +4 -0
  74. package/components/{p-Dz74mwlk.js → p-Cfx4M1Bn.js} +1 -1
  75. package/components/p-k_E4tX5Z.js +4 -0
  76. package/components/p-nyXeHk23.js +4 -0
  77. package/components/{p-wk2QqrAo.js → p-rCa2eL0j.js} +1 -1
  78. package/dist/cjs/config-xninhj0J.js +201 -0
  79. package/dist/cjs/index.cjs.js +6 -6
  80. package/dist/cjs/ion-action-sheet.cjs.entry.js +7 -27
  81. package/dist/cjs/ion-alert.cjs.entry.js +25 -64
  82. package/dist/cjs/ion-app_8.cjs.entry.js +9 -23
  83. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  84. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  85. package/dist/cjs/{ion-datetime.cjs.entry.js → ion-datetime_3.cjs.entry.js} +639 -1
  86. package/dist/cjs/ion-img.cjs.entry.js +1 -3
  87. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -3
  88. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  89. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-loading.cjs.entry.js +5 -10
  91. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  92. package/dist/cjs/ion-modal.cjs.entry.js +18 -23
  93. package/dist/cjs/ion-nav_2.cjs.entry.js +115 -2
  94. package/dist/cjs/ion-popover.cjs.entry.js +5 -9
  95. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  96. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  97. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  98. package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -6
  99. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  101. package/dist/cjs/ion-route_4.cjs.entry.js +4 -18
  102. package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
  103. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  104. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  105. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  106. package/dist/cjs/ion-select-modal.cjs.entry.js +30 -84
  107. package/dist/cjs/ion-select_3.cjs.entry.js +49 -407
  108. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  109. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  110. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  111. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  112. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  113. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-toast.cjs.entry.js +5 -6
  115. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  116. package/dist/cjs/ionic.cjs.js +1 -1
  117. package/dist/cjs/loader.cjs.js +1 -1
  118. package/dist/cjs/{overlays-DSmSrd_4.js → overlays-DdtIYQUH.js} +31 -27
  119. package/dist/collection/collection-manifest.json +10 -6
  120. package/dist/collection/components/action-sheet/action-sheet.ios.css +2 -229
  121. package/dist/collection/components/action-sheet/action-sheet.js +5 -24
  122. package/dist/collection/components/action-sheet/action-sheet.md.css +2 -175
  123. package/dist/collection/components/alert/alert.ios.css +10 -280
  124. package/dist/collection/components/alert/alert.js +21 -59
  125. package/dist/collection/components/alert/alert.md.css +20 -269
  126. package/dist/collection/components/img/img.js +1 -6
  127. package/dist/collection/components/input/input.js +8 -8
  128. package/dist/collection/components/loading/loading.js +3 -7
  129. package/dist/collection/components/modal/modal.ios.css +8 -0
  130. package/dist/collection/components/modal/modal.js +18 -23
  131. package/dist/collection/components/modal/modal.md.css +8 -0
  132. package/dist/collection/components/nav/nav.js +219 -4
  133. package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
  134. package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
  135. package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
  136. package/dist/collection/components/picker-legacy/picker.ios.css +300 -0
  137. package/dist/collection/components/picker-legacy/picker.js +890 -0
  138. package/dist/collection/components/picker-legacy/picker.md.css +287 -0
  139. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +231 -0
  140. package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
  141. package/dist/collection/components/picker-legacy-column/picker-column.md.css +222 -0
  142. package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
  143. package/dist/collection/components/popover/popover.ios.css +0 -15
  144. package/dist/collection/components/popover/popover.js +3 -7
  145. package/dist/collection/components/popover/popover.md.css +0 -15
  146. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  147. package/dist/collection/components/radio/radio.js +4 -4
  148. package/dist/collection/components/range/range.js +3 -3
  149. package/dist/collection/components/refresher/refresher.js +1 -1
  150. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  151. package/dist/collection/components/reorder/reorder.js +1 -1
  152. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  153. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  154. package/dist/collection/components/route/route.js +1 -1
  155. package/dist/collection/components/router/utils/dom.js +3 -22
  156. package/dist/collection/components/router-link/router-link.js +2 -2
  157. package/dist/collection/components/router-outlet/router-outlet.js +5 -38
  158. package/dist/collection/components/row/row.js +1 -1
  159. package/dist/collection/components/searchbar/searchbar.js +9 -9
  160. package/dist/collection/components/segment/segment.js +2 -2
  161. package/dist/collection/components/segment-button/segment-button.js +2 -2
  162. package/dist/collection/components/segment-content/segment-content.js +1 -1
  163. package/dist/collection/components/segment-view/segment-view.js +2 -2
  164. package/dist/collection/components/select/select.ios.css +0 -33
  165. package/dist/collection/components/select/select.js +16 -323
  166. package/dist/collection/components/select/select.md.css +0 -33
  167. package/dist/collection/components/select-modal/select-modal.ios.css +0 -219
  168. package/dist/collection/components/select-modal/select-modal.js +26 -79
  169. package/dist/collection/components/select-modal/select-modal.md.css +0 -165
  170. package/dist/collection/components/select-option/select-option.js +3 -67
  171. package/dist/collection/components/select-popover/select-popover.ios.css +0 -219
  172. package/dist/collection/components/select-popover/select-popover.js +26 -78
  173. package/dist/collection/components/select-popover/select-popover.md.css +0 -165
  174. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  175. package/dist/collection/components/spinner/spinner.js +1 -1
  176. package/dist/collection/components/split-pane/split-pane.js +2 -2
  177. package/dist/collection/components/tab/tab.js +2 -2
  178. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  179. package/dist/collection/components/tab-button/tab-button.js +2 -2
  180. package/dist/collection/components/tabs/tabs.js +1 -1
  181. package/dist/collection/components/text/text.js +2 -2
  182. package/dist/collection/components/textarea/textarea.js +2 -2
  183. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  184. package/dist/collection/components/title/title.js +2 -2
  185. package/dist/collection/components/toast/toast.js +2 -2
  186. package/dist/collection/components/toggle/toggle.js +3 -3
  187. package/dist/collection/components/toolbar/toolbar.js +2 -2
  188. package/dist/collection/index.js +1 -1
  189. package/dist/collection/utils/overlays.js +30 -26
  190. package/dist/collection/utils/sanitization/index.js +18 -274
  191. package/dist/docs.json +1189 -497
  192. package/dist/esm/config-DQCONYYp.js +195 -0
  193. package/dist/esm/{index-AlrZKoWR.js → index-DV3sJJW8.js} +1 -1
  194. package/dist/esm/index.js +2 -3
  195. package/dist/esm/ion-accordion_2.entry.js +1 -1
  196. package/dist/esm/ion-action-sheet.entry.js +7 -27
  197. package/dist/esm/ion-alert.entry.js +24 -63
  198. package/dist/esm/ion-app_8.entry.js +9 -23
  199. package/dist/esm/ion-avatar_3.entry.js +1 -1
  200. package/dist/esm/ion-back-button.entry.js +1 -1
  201. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  202. package/dist/esm/ion-col_3.entry.js +1 -1
  203. package/dist/esm/{ion-datetime.entry.js → ion-datetime_3.entry.js} +641 -5
  204. package/dist/esm/ion-fab_3.entry.js +1 -1
  205. package/dist/esm/ion-img.entry.js +2 -4
  206. package/dist/esm/ion-infinite-scroll_2.entry.js +1 -2
  207. package/dist/esm/ion-input-password-toggle.entry.js +1 -1
  208. package/dist/esm/ion-input.entry.js +5 -5
  209. package/dist/esm/ion-item_8.entry.js +3 -3
  210. package/dist/esm/ion-loading.entry.js +4 -9
  211. package/dist/esm/ion-menu_3.entry.js +2 -2
  212. package/dist/esm/ion-modal.entry.js +18 -23
  213. package/dist/esm/ion-nav_2.entry.js +116 -3
  214. package/dist/esm/ion-popover.entry.js +5 -9
  215. package/dist/esm/ion-progress-bar.entry.js +1 -1
  216. package/dist/esm/ion-radio_2.entry.js +3 -3
  217. package/dist/esm/ion-range.entry.js +3 -3
  218. package/dist/esm/ion-refresher_2.entry.js +4 -5
  219. package/dist/esm/ion-reorder_2.entry.js +3 -3
  220. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  221. package/dist/esm/ion-route_4.entry.js +4 -18
  222. package/dist/esm/ion-searchbar.entry.js +6 -6
  223. package/dist/esm/ion-segment-content.entry.js +1 -1
  224. package/dist/esm/ion-segment-view.entry.js +2 -2
  225. package/dist/esm/ion-segment_2.entry.js +4 -4
  226. package/dist/esm/ion-select-modal.entry.js +30 -84
  227. package/dist/esm/ion-select_3.entry.js +52 -410
  228. package/dist/esm/ion-spinner.entry.js +1 -1
  229. package/dist/esm/ion-split-pane.entry.js +2 -2
  230. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  231. package/dist/esm/ion-tab_2.entry.js +3 -3
  232. package/dist/esm/ion-text.entry.js +2 -2
  233. package/dist/esm/ion-textarea.entry.js +2 -2
  234. package/dist/esm/ion-toast.entry.js +4 -5
  235. package/dist/esm/ion-toggle.entry.js +4 -4
  236. package/dist/esm/ionic.js +1 -1
  237. package/dist/esm/loader.js +1 -1
  238. package/dist/esm/{overlays-DLNOHWNc.js → overlays-Dg0q2_tJ.js} +32 -28
  239. package/dist/html.html-data.json +80 -52
  240. package/dist/ionic/index.esm.js +1 -1
  241. package/dist/ionic/ionic.esm.js +1 -1
  242. package/dist/ionic/p-01f81ea5.entry.js +4 -0
  243. package/dist/ionic/p-0cc11f99.entry.js +4 -0
  244. package/dist/ionic/p-0dc33652.entry.js +4 -0
  245. package/dist/ionic/{p-fe4aa1db.entry.js → p-0fa9c382.entry.js} +1 -1
  246. package/dist/ionic/p-20b1a044.entry.js +4 -0
  247. package/dist/ionic/p-21eb76d5.entry.js +4 -0
  248. package/dist/ionic/p-27d30585.entry.js +4 -0
  249. package/dist/ionic/p-2a05aa64.entry.js +4 -0
  250. package/dist/ionic/p-2bb2cb18.entry.js +4 -0
  251. package/dist/ionic/{p-80b44b3c.entry.js → p-3353c229.entry.js} +1 -1
  252. package/dist/ionic/{p-c93553d2.entry.js → p-34586ead.entry.js} +1 -1
  253. package/dist/ionic/{p-a7628bc7.entry.js → p-37e720da.entry.js} +1 -1
  254. package/dist/ionic/{p-9177f4ac.entry.js → p-390ca786.entry.js} +1 -1
  255. package/dist/ionic/{p-259d0d98.entry.js → p-3a126bca.entry.js} +1 -1
  256. package/dist/ionic/{p-4502a274.entry.js → p-3a7d1e91.entry.js} +1 -1
  257. package/dist/ionic/{p-627fabd9.entry.js → p-3ae5f277.entry.js} +1 -1
  258. package/dist/ionic/{p-a5213260.entry.js → p-4858af1f.entry.js} +1 -1
  259. package/dist/ionic/p-485fda23.entry.js +4 -0
  260. package/dist/ionic/p-4baa5b82.entry.js +4 -0
  261. package/dist/ionic/p-5018dfc8.entry.js +4 -0
  262. package/dist/ionic/p-50e1194a.entry.js +4 -0
  263. package/dist/ionic/{p-76e92a84.entry.js → p-5d1da0a2.entry.js} +1 -1
  264. package/dist/ionic/p-5eb8e86d.entry.js +4 -0
  265. package/dist/ionic/p-65ebdf1b.entry.js +4 -0
  266. package/dist/ionic/p-6ebdbebe.entry.js +4 -0
  267. package/dist/ionic/{p-d2c7f046.entry.js → p-75dc25ba.entry.js} +1 -1
  268. package/dist/ionic/{p-b9ac1fe0.entry.js → p-84d5ce05.entry.js} +1 -1
  269. package/dist/ionic/{p-51cd1643.entry.js → p-874b4bd8.entry.js} +1 -1
  270. package/dist/ionic/{p-ef93ca92.entry.js → p-8eb8ee76.entry.js} +1 -1
  271. package/dist/ionic/p-8fce95d5.entry.js +4 -0
  272. package/dist/ionic/{p-db1b6738.entry.js → p-9a65ac7f.entry.js} +1 -1
  273. package/dist/ionic/{p-7a37b3ce.entry.js → p-9f1103ce.entry.js} +1 -1
  274. package/dist/ionic/p-9f9db3a2.entry.js +4 -0
  275. package/dist/ionic/p-D-3ycHmd.js +4 -0
  276. package/dist/ionic/{p-AlrZKoWR.js → p-DV3sJJW8.js} +1 -1
  277. package/dist/ionic/p-DzWaWHGc.js +4 -0
  278. package/dist/ionic/p-a21add2f.entry.js +4 -0
  279. package/dist/ionic/{p-d8387b99.entry.js → p-c4d8641b.entry.js} +1 -1
  280. package/dist/ionic/p-ca2ab74d.entry.js +4 -0
  281. package/dist/ionic/{p-629e4703.entry.js → p-e0be05c5.entry.js} +1 -1
  282. package/dist/ionic/p-ec090e0a.entry.js +4 -0
  283. package/dist/ionic/{p-b1599fca.entry.js → p-ef4c3bee.entry.js} +1 -1
  284. package/dist/ionic/p-f386f6ae.entry.js +4 -0
  285. package/dist/ionic/{p-341032b3.entry.js → p-fabcce6c.entry.js} +1 -1
  286. package/dist/types/components/img/img.d.ts +0 -2
  287. package/dist/types/components/input/input.d.ts +1 -1
  288. package/dist/types/components/modal/modal.d.ts +4 -11
  289. package/dist/types/components/nav/nav-interface.d.ts +1 -0
  290. package/dist/types/components/nav/nav.d.ts +22 -2
  291. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
  292. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
  293. package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
  294. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  295. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  296. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
  297. package/dist/types/components/route/route.d.ts +1 -1
  298. package/dist/types/components/router-outlet/router-outlet.d.ts +0 -7
  299. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  300. package/dist/types/components/select/select-interface.d.ts +0 -31
  301. package/dist/types/components/select/select.d.ts +0 -18
  302. package/dist/types/components/select-option/select-option.d.ts +1 -42
  303. package/dist/types/components.d.ts +303 -74
  304. package/dist/types/index.d.ts +1 -1
  305. package/dist/types/interface.d.ts +1 -0
  306. package/dist/types/utils/config.d.ts +8 -0
  307. package/dist/types/utils/overlays.d.ts +9 -11
  308. package/dist/types/utils/sanitization/index.d.ts +2 -58
  309. package/hydrate/index.js +1268 -1400
  310. package/hydrate/index.mjs +1268 -1400
  311. package/package.json +5 -37
  312. package/components/p-279dFMvg.js +0 -4
  313. package/components/p-BSQPZ79H.js +0 -4
  314. package/components/p-BwKpO3Is.js +0 -4
  315. package/components/p-C-Rx1zny.js +0 -4
  316. package/components/p-CHzfYZbv.js +0 -4
  317. package/components/p-D4h1H_hh.js +0 -4
  318. package/components/p-LMGfIvTf.js +0 -4
  319. package/components/p-_lHSumhG.js +0 -4
  320. package/components/p-j9Da6cYO.js +0 -4
  321. package/components/p-jOtMJMv8.js +0 -4
  322. package/components/p-uTR_dEqg.js +0 -4
  323. package/dist/cjs/config-DWdFbSNK.js +0 -35
  324. package/dist/cjs/index-Cueg3U4w.js +0 -429
  325. package/dist/cjs/overlay-control-label-D2sdL2O8.js +0 -50
  326. package/dist/cjs/select-option-render-DTF50t5r.js +0 -124
  327. package/dist/collection/utils/overlay-control-label.js +0 -45
  328. package/dist/collection/utils/select-option-render.js +0 -119
  329. package/dist/esm/config-BwKpO3Is.js +0 -31
  330. package/dist/esm/index-DQSkZyOJ.js +0 -424
  331. package/dist/esm/overlay-control-label-BSQPZ79H.js +0 -47
  332. package/dist/esm/select-option-render-B8nWZRnd.js +0 -122
  333. package/dist/ionic/p-038eb991.entry.js +0 -4
  334. package/dist/ionic/p-4621c387.entry.js +0 -4
  335. package/dist/ionic/p-4ace7762.entry.js +0 -4
  336. package/dist/ionic/p-4bb3eb60.entry.js +0 -4
  337. package/dist/ionic/p-4e9ec5c5.entry.js +0 -4
  338. package/dist/ionic/p-5c3ec490.entry.js +0 -4
  339. package/dist/ionic/p-5d1ac2c7.entry.js +0 -4
  340. package/dist/ionic/p-700795f6.entry.js +0 -4
  341. package/dist/ionic/p-79a36078.entry.js +0 -4
  342. package/dist/ionic/p-913b218a.entry.js +0 -4
  343. package/dist/ionic/p-BDtODLZ4.js +0 -4
  344. package/dist/ionic/p-BSQPZ79H.js +0 -4
  345. package/dist/ionic/p-BwKpO3Is.js +0 -4
  346. package/dist/ionic/p-Cg5-OQYy.js +0 -4
  347. package/dist/ionic/p-DCOvXkOm.js +0 -4
  348. package/dist/ionic/p-a18dcb3c.entry.js +0 -4
  349. package/dist/ionic/p-a9a33367.entry.js +0 -4
  350. package/dist/ionic/p-ad728198.entry.js +0 -4
  351. package/dist/ionic/p-bfc8c629.entry.js +0 -4
  352. package/dist/ionic/p-c08e666a.entry.js +0 -4
  353. package/dist/ionic/p-c474f471.entry.js +0 -4
  354. package/dist/ionic/p-ce7992c4.entry.js +0 -4
  355. package/dist/ionic/p-ed797c72.entry.js +0 -4
  356. package/dist/ionic/p-f09f9642.entry.js +0 -4
  357. package/dist/ionic/p-f1c06f82.entry.js +0 -4
  358. package/dist/ionic/p-f718fccb.entry.js +0 -4
  359. package/dist/types/utils/overlay-control-label.d.ts +0 -32
  360. package/dist/types/utils/select-option-render.d.ts +0 -53
@@ -8,7 +8,7 @@ import { raf, inheritAttributes, hasLazyBuild, getElementRoot } from "../../util
8
8
  import { createLockController } from "../../utils/lock-controller";
9
9
  import { printIonWarning } from "../../utils/logging/index";
10
10
  import { Style as StatusBarStyle, StatusBar } from "../../utils/native/status-bar";
11
- import { BACKDROP, cleanupRootFocusTrapAccessibility, createTriggerController, dismiss, eventMethod, FOCUS_TRAP_DISABLE_CLASS, GESTURE, prepareOverlay, present, setOverlayId, } from "../../utils/overlays";
11
+ import { GESTURE, BACKDROP, dismiss, eventMethod, prepareOverlay, present, createTriggerController, setOverlayId, FOCUS_TRAP_DISABLE_CLASS, } from "../../utils/overlays";
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { config } from "../../global/config";
@@ -77,20 +77,13 @@ export class Modal {
77
77
  /**
78
78
  * The interaction behavior for the sheet modal when the handle is pressed.
79
79
  *
80
- * Handle behavior is unavailable when the `handle` property is set to
81
- * `false` or when the `breakpoints` property is not set (using a
82
- * fullscreen or card modal).
80
+ * Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed.
81
+ * Set to `"cycle"` to let the modal cycle between available breakpoints when pressed.
83
82
  *
84
- * Set to `"cycle"` to make the handle focusable and let the sheet modal
85
- * cycle between available breakpoints when pressed. This keeps the sheet
86
- * operable with assistive technology.
87
- *
88
- * Set to `"none"` to make the handle purely decorative when pressed and
89
- * removed from the tab order.
90
- *
91
- * Defaults to `"cycle"`.
83
+ * Handle behavior is unavailable when the `handle` property is set to `false` or
84
+ * when the `breakpoints` property is not set (using a fullscreen or card modal).
92
85
  */
93
- this.handleBehavior = 'cycle';
86
+ this.handleBehavior = 'none';
94
87
  /**
95
88
  * If `true`, the modal will be dismissed when the backdrop is clicked.
96
89
  */
@@ -282,10 +275,6 @@ export class Modal {
282
275
  // Also called in dismiss() — intentional dual cleanup covers both
283
276
  // dismiss-then-remove and direct DOM removal without dismiss.
284
277
  this.cleanupSafeAreaOverrides();
285
- // Clean up aria-hidden if removed without dismiss() being called
286
- if (this.presented) {
287
- cleanupRootFocusTrapAccessibility();
288
- }
289
278
  }
290
279
  componentWillLoad() {
291
280
  var _a;
@@ -1173,20 +1162,26 @@ export class Modal {
1173
1162
  const isCardModal = presentingElement !== undefined && mode === 'ios';
1174
1163
  const isHandleCycle = handleBehavior === 'cycle';
1175
1164
  const isSheetModalWithHandle = isSheetModal && showHandle;
1176
- return (h(Host, Object.assign({ key: '528f9e354f470e22563938e7531e3f23a97e4200', "no-router": true,
1165
+ return (h(Host, Object.assign({ key: 'ab93657f4a5b4c97168d292b398d975e4b5b4af4', "no-router": true,
1177
1166
  // Allow the modal to be navigable when the handle is focusable
1178
1167
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
1179
1168
  zIndex: `${20000 + this.overlayIndex}`,
1180
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '53983c96bc6b30df89986c8d9c978a8e6f78fe80', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '34288a7343b7c47fed00d3abc73957f45f06d2fd', class: "modal-shadow" }), h("div", Object.assign({ key: 'f9b37f547bd5c61037bbad1a71bfed80ba8c630b',
1169
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '5ba6315c7c8c64fa04c62f85fd493da5275b2cbd', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'a76c48d41c67f86c18a7481e980e6925e614f85d', class: "modal-shadow" }), h("div", Object.assign({ key: 'dccf3c774355429bc0ea7461d9b1ef941ea91902',
1181
1170
  /*
1182
1171
  role and aria-modal must be used on the
1183
1172
  same element. They must also be set inside the
1184
1173
  shadow DOM otherwise ion-button will not be highlighted
1185
1174
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
1175
+
1176
+ tabIndex={-1} is required so present() can move focus to this
1177
+ element (which carries the dialog role) instead of the role-less
1178
+ host. role="dialog" alone does not make an element focusable, so
1179
+ without the tabindex focus() would be a no-op and screen readers
1180
+ may not properly announce the dialog and its content when it opens.
1186
1181
  */
1187
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'b8741594108d3ea681ff41ff8f2241a4119578b1', class: "modal-handle",
1182
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ba4ebd6364faba46ac8532d1c83cb655ae873a14', class: "modal-handle",
1188
1183
  // Prevents the handle from receiving keyboard focus when it does not cycle
1189
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'bcc7960fae3fed09076c704d08c3afc46caa0738', onSlotchange: this.onSlotChange }))));
1184
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '11d5921a8ebbcd0017d4f28a33d68049253f63f0', onSlotchange: this.onSlotChange }))));
1190
1185
  }
1191
1186
  static get is() { return "ion-modal"; }
1192
1187
  static get encapsulation() { return "shadow"; }
@@ -1458,13 +1453,13 @@ export class Modal {
1458
1453
  "optional": true,
1459
1454
  "docs": {
1460
1455
  "tags": [],
1461
- "text": "The interaction behavior for the sheet modal when the handle is pressed.\n\nHandle behavior is unavailable when the `handle` property is set to\n`false` or when the `breakpoints` property is not set (using a\nfullscreen or card modal).\n\nSet to `\"cycle\"` to make the handle focusable and let the sheet modal\ncycle between available breakpoints when pressed. This keeps the sheet\noperable with assistive technology.\n\nSet to `\"none\"` to make the handle purely decorative when pressed and\nremoved from the tab order.\n\nDefaults to `\"cycle\"`."
1456
+ "text": "The interaction behavior for the sheet modal when the handle is pressed.\n\nDefaults to `\"none\"`, which means the modal will not change size or position when the handle is pressed.\nSet to `\"cycle\"` to let the modal cycle between available breakpoints when pressed.\n\nHandle behavior is unavailable when the `handle` property is set to `false` or\nwhen the `breakpoints` property is not set (using a fullscreen or card modal)."
1462
1457
  },
1463
1458
  "getter": false,
1464
1459
  "setter": false,
1465
1460
  "reflect": false,
1466
1461
  "attribute": "handle-behavior",
1467
- "defaultValue": "'cycle'"
1462
+ "defaultValue": "'none'"
1468
1463
  },
1469
1464
  "component": {
1470
1465
  "type": "string",
@@ -126,6 +126,14 @@ ion-backdrop {
126
126
  z-index: 10;
127
127
  }
128
128
 
129
+ /**
130
+ * The wrapper receives programmatic focus for screen readers but should not
131
+ * show a visible focus ring, which is meant only for keyboard navigation.
132
+ */
133
+ .modal-wrapper {
134
+ outline: none;
135
+ }
136
+
129
137
  .modal-shadow {
130
138
  position: absolute;
131
139
  background: transparent;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { h } from "@stencil/core";
4
+ import { Build, h } from "@stencil/core";
5
5
  import { getTimeGivenProgression } from "../../utils/animation/cubic-bezier";
6
6
  import { assert } from "../../utils/helpers";
7
7
  import { printIonWarning } from "../../utils/logging/index";
@@ -9,11 +9,12 @@ import { lifecycle, setPageHidden, transition } from "../../utils/transition/ind
9
9
  import { config } from "../../global/config";
10
10
  import { getIonMode } from "../../global/ionic-global";
11
11
  import { LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_LEAVE, LIFECYCLE_WILL_UNLOAD } from "./constants";
12
- import { VIEW_STATE_ATTACHED, VIEW_STATE_DESTROYED, VIEW_STATE_NEW, convertToViews } from "./view-controller";
12
+ import { VIEW_STATE_ATTACHED, VIEW_STATE_DESTROYED, VIEW_STATE_NEW, convertToViews, matches } from "./view-controller";
13
13
  export class Nav {
14
14
  constructor() {
15
15
  this.transInstr = [];
16
16
  this.gestureOrAnimationInProgress = false;
17
+ this.useRouter = false;
17
18
  this.isTransitioning = false;
18
19
  this.destroyed = false;
19
20
  this.views = [];
@@ -29,6 +30,7 @@ export class Nav {
29
30
  }
30
31
  }
31
32
  rootChanged() {
33
+ const isDev = Build.isDev;
32
34
  if (this.root === undefined) {
33
35
  return;
34
36
  }
@@ -39,9 +41,17 @@ export class Nav {
39
41
  */
40
42
  return;
41
43
  }
42
- this.setRoot(this.root, this.rootParams);
44
+ if (!this.useRouter) {
45
+ if (this.root !== undefined) {
46
+ this.setRoot(this.root, this.rootParams);
47
+ }
48
+ }
49
+ else if (isDev) {
50
+ printIonWarning('[ion-nav] - A root attribute is not supported when using ion-router.', this.el);
51
+ }
43
52
  }
44
53
  componentWillLoad() {
54
+ this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;
45
55
  if (this.swipeGesture === undefined) {
46
56
  const mode = getIonMode(this);
47
57
  this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');
@@ -206,6 +216,78 @@ export class Nav {
206
216
  opts,
207
217
  }, done);
208
218
  }
219
+ /**
220
+ * Called by the router to update the view.
221
+ *
222
+ * @param id The component tag.
223
+ * @param params The component params.
224
+ * @param direction A direction hint.
225
+ * @param animation an AnimationBuilder.
226
+ *
227
+ * @return the status.
228
+ * @internal
229
+ */
230
+ setRouteId(id, params, direction, animation) {
231
+ const active = this.getActiveSync();
232
+ if (matches(active, id, params)) {
233
+ return Promise.resolve({
234
+ changed: false,
235
+ element: active.element,
236
+ });
237
+ }
238
+ let resolve;
239
+ const promise = new Promise((r) => (resolve = r));
240
+ let finish;
241
+ const commonOpts = {
242
+ updateURL: false,
243
+ viewIsReady: (enteringEl) => {
244
+ let mark;
245
+ const p = new Promise((r) => (mark = r));
246
+ resolve({
247
+ changed: true,
248
+ element: enteringEl,
249
+ markVisible: async () => {
250
+ mark();
251
+ await finish;
252
+ },
253
+ });
254
+ return p;
255
+ },
256
+ };
257
+ if (direction === 'root') {
258
+ finish = this.setRoot(id, params, commonOpts);
259
+ }
260
+ else {
261
+ // Look for a view matching the target in the view stack.
262
+ const viewController = this.views.find((v) => matches(v, id, params));
263
+ if (viewController) {
264
+ finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));
265
+ }
266
+ else if (direction === 'forward') {
267
+ finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), { animationBuilder: animation }));
268
+ }
269
+ else if (direction === 'back') {
270
+ finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true, animationBuilder: animation }));
271
+ }
272
+ }
273
+ return promise;
274
+ }
275
+ /**
276
+ * Called by <ion-router> to retrieve the current component.
277
+ *
278
+ * @internal
279
+ */
280
+ async getRouteId() {
281
+ const active = this.getActiveSync();
282
+ if (active) {
283
+ return {
284
+ id: active.element.tagName,
285
+ params: active.params,
286
+ element: active.element,
287
+ };
288
+ }
289
+ return undefined;
290
+ }
209
291
  /**
210
292
  * Get the active view.
211
293
  */
@@ -271,6 +353,25 @@ export class Nav {
271
353
  ti.reject = reject;
272
354
  });
273
355
  ti.done = done;
356
+ /**
357
+ * If using router, check to see if navigation hooks
358
+ * will allow us to perform this transition. This
359
+ * is required in order for hooks to work with
360
+ * the ion-back-button or swipe to go back.
361
+ */
362
+ if (ti.opts && ti.opts.updateURL !== false && this.useRouter) {
363
+ const router = document.querySelector('ion-router');
364
+ if (router) {
365
+ const canTransition = await router.canTransition();
366
+ if (canTransition === false) {
367
+ return false;
368
+ }
369
+ if (typeof canTransition === 'string') {
370
+ router.push(canTransition, ti.opts.direction || 'back');
371
+ return false;
372
+ }
373
+ }
374
+ }
274
375
  // Normalize empty
275
376
  if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {
276
377
  ti.insertViews = undefined;
@@ -291,6 +392,13 @@ export class Nav {
291
392
  ti.done(result.hasCompleted, result.requiresTransition, result.enteringView, result.leavingView, result.direction);
292
393
  }
293
394
  ti.resolve(result.hasCompleted);
395
+ if (ti.opts.updateURL !== false && this.useRouter) {
396
+ const router = document.querySelector('ion-router');
397
+ if (router) {
398
+ const direction = result.direction === 'back' ? 'back' : 'forward';
399
+ router.navChanged(direction);
400
+ }
401
+ }
294
402
  }
295
403
  failed(rejectReason, ti) {
296
404
  if (this.destroyed) {
@@ -720,7 +828,7 @@ export class Nav {
720
828
  }
721
829
  }
722
830
  render() {
723
- return h("slot", { key: 'bb4a201a3a8079548f5474ff42293b28fc7599fb' });
831
+ return h("slot", { key: 'a549286b51b1bb23c9ef51f71148452228d0ab14' });
724
832
  }
725
833
  static get is() { return "ion-nav"; }
726
834
  static get encapsulation() { return "shadow"; }
@@ -1493,6 +1601,113 @@ export class Nav {
1493
1601
  }]
1494
1602
  }
1495
1603
  },
1604
+ "setRouteId": {
1605
+ "complexType": {
1606
+ "signature": "(id: string, params: ComponentProps | undefined, direction: RouterDirection, animation?: AnimationBuilder) => Promise<RouteWrite>",
1607
+ "parameters": [{
1608
+ "name": "id",
1609
+ "type": "string",
1610
+ "docs": "The component tag."
1611
+ }, {
1612
+ "name": "params",
1613
+ "type": "ComponentProps | undefined",
1614
+ "docs": "The component params."
1615
+ }, {
1616
+ "name": "direction",
1617
+ "type": "\"root\" | \"back\" | \"forward\"",
1618
+ "docs": "A direction hint."
1619
+ }, {
1620
+ "name": "animation",
1621
+ "type": "AnimationBuilder | undefined",
1622
+ "docs": "an AnimationBuilder."
1623
+ }],
1624
+ "references": {
1625
+ "Promise": {
1626
+ "location": "global",
1627
+ "id": "global::Promise"
1628
+ },
1629
+ "RouteWrite": {
1630
+ "location": "import",
1631
+ "path": "../router/utils/interface",
1632
+ "id": "src/components/router/utils/interface.ts::RouteWrite",
1633
+ "referenceLocation": "RouteWrite"
1634
+ },
1635
+ "ComponentProps": {
1636
+ "location": "import",
1637
+ "path": "../../interface",
1638
+ "id": "src/interface.d.ts::ComponentProps",
1639
+ "referenceLocation": "ComponentProps"
1640
+ },
1641
+ "RouterDirection": {
1642
+ "location": "import",
1643
+ "path": "../router/utils/interface",
1644
+ "id": "src/components/router/utils/interface.ts::RouterDirection",
1645
+ "referenceLocation": "RouterDirection"
1646
+ },
1647
+ "AnimationBuilder": {
1648
+ "location": "import",
1649
+ "path": "../../interface",
1650
+ "id": "src/interface.d.ts::AnimationBuilder",
1651
+ "referenceLocation": "AnimationBuilder"
1652
+ },
1653
+ "NavOptions": {
1654
+ "location": "import",
1655
+ "path": "./nav-interface",
1656
+ "id": "src/components/nav/nav-interface.ts::NavOptions",
1657
+ "referenceLocation": "NavOptions"
1658
+ }
1659
+ },
1660
+ "return": "Promise<RouteWrite>"
1661
+ },
1662
+ "docs": {
1663
+ "text": "Called by the router to update the view.",
1664
+ "tags": [{
1665
+ "name": "param",
1666
+ "text": "id The component tag."
1667
+ }, {
1668
+ "name": "param",
1669
+ "text": "params The component params."
1670
+ }, {
1671
+ "name": "param",
1672
+ "text": "direction A direction hint."
1673
+ }, {
1674
+ "name": "param",
1675
+ "text": "animation an AnimationBuilder."
1676
+ }, {
1677
+ "name": "return",
1678
+ "text": "the status."
1679
+ }, {
1680
+ "name": "internal",
1681
+ "text": undefined
1682
+ }]
1683
+ }
1684
+ },
1685
+ "getRouteId": {
1686
+ "complexType": {
1687
+ "signature": "() => Promise<RouteID | undefined>",
1688
+ "parameters": [],
1689
+ "references": {
1690
+ "Promise": {
1691
+ "location": "global",
1692
+ "id": "global::Promise"
1693
+ },
1694
+ "RouteID": {
1695
+ "location": "import",
1696
+ "path": "../router/utils/interface",
1697
+ "id": "src/components/router/utils/interface.ts::RouteID",
1698
+ "referenceLocation": "RouteID"
1699
+ }
1700
+ },
1701
+ "return": "Promise<RouteID | undefined>"
1702
+ },
1703
+ "docs": {
1704
+ "text": "Called by <ion-router> to retrieve the current component.",
1705
+ "tags": [{
1706
+ "name": "internal",
1707
+ "text": undefined
1708
+ }]
1709
+ }
1710
+ },
1496
1711
  "getActive": {
1497
1712
  "complexType": {
1498
1713
  "signature": "() => Promise<ViewController | undefined>",
@@ -0,0 +1,27 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ /**
6
+ * iOS Picker Enter Animation
7
+ */
8
+ export const iosEnterAnimation = (baseEl) => {
9
+ const baseAnimation = createAnimation();
10
+ const backdropAnimation = createAnimation();
11
+ const wrapperAnimation = createAnimation();
12
+ backdropAnimation
13
+ .addElement(baseEl.querySelector('ion-backdrop'))
14
+ .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
15
+ .beforeStyles({
16
+ 'pointer-events': 'none',
17
+ })
18
+ .afterClearStyles(['pointer-events']);
19
+ wrapperAnimation
20
+ .addElement(baseEl.querySelector('.picker-wrapper'))
21
+ .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
22
+ return baseAnimation
23
+ .addElement(baseEl)
24
+ .easing('cubic-bezier(.36,.66,.04,1)')
25
+ .duration(400)
26
+ .addAnimation([backdropAnimation, wrapperAnimation]);
27
+ };
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { createAnimation } from "../../../utils/animation/animation";
5
+ /**
6
+ * iOS Picker Leave Animation
7
+ */
8
+ export const iosLeaveAnimation = (baseEl) => {
9
+ const baseAnimation = createAnimation();
10
+ const backdropAnimation = createAnimation();
11
+ const wrapperAnimation = createAnimation();
12
+ backdropAnimation
13
+ .addElement(baseEl.querySelector('ion-backdrop'))
14
+ .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
15
+ wrapperAnimation
16
+ .addElement(baseEl.querySelector('.picker-wrapper'))
17
+ .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
18
+ return baseAnimation
19
+ .addElement(baseEl)
20
+ .easing('cubic-bezier(.36,.66,.04,1)')
21
+ .duration(400)
22
+ .addAnimation([backdropAnimation, wrapperAnimation]);
23
+ };