@ionic/core 8.8.19-dev.11786610762.137bbb21 → 8.8.19-dev.11786730389.1a1927bf

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 (1232) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-fab-button.js +1 -1
  27. package/components/ion-fab-list.js +1 -1
  28. package/components/ion-fab.js +1 -1
  29. package/components/ion-footer.js +1 -1
  30. package/components/ion-grid.js +1 -1
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +1 -1
  34. package/components/ion-infinite-scroll-content.js +1 -1
  35. package/components/ion-infinite-scroll.js +1 -1
  36. package/components/ion-input-otp.js +1 -1
  37. package/components/ion-input-password-toggle.js +1 -1
  38. package/components/ion-input.js +1 -1
  39. package/components/ion-item-divider.js +1 -1
  40. package/components/ion-item-group.js +1 -1
  41. package/components/ion-item-option.js +1 -1
  42. package/components/ion-item-options.js +1 -1
  43. package/components/ion-item-sliding.js +1 -1
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +1 -1
  49. package/components/ion-menu-button.js +1 -1
  50. package/components/ion-menu-toggle.js +1 -1
  51. package/components/ion-menu.js +1 -1
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +1 -1
  55. package/components/ion-note.js +1 -1
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker.js +1 -1
  59. package/components/ion-popover.js +1 -1
  60. package/components/ion-progress-bar.js +1 -1
  61. package/components/ion-radio-group.js +1 -1
  62. package/components/ion-radio.js +1 -1
  63. package/components/ion-range.js +1 -1
  64. package/components/ion-refresher-content.js +1 -1
  65. package/components/ion-refresher.js +1 -1
  66. package/components/ion-reorder-group.js +1 -1
  67. package/components/ion-reorder.js +1 -1
  68. package/components/ion-ripple-effect.js +1 -1
  69. package/components/ion-route-redirect.js +1 -1
  70. package/components/ion-route.js +1 -1
  71. package/components/ion-router-link.js +1 -1
  72. package/components/ion-router-outlet.js +1 -1
  73. package/components/ion-router.js +1 -1
  74. package/components/ion-row.js +1 -1
  75. package/components/ion-searchbar.js +1 -1
  76. package/components/ion-segment-button.js +1 -1
  77. package/components/ion-segment-content.js +1 -1
  78. package/components/ion-segment-view.js +1 -1
  79. package/components/ion-segment.js +1 -1
  80. package/components/ion-select-modal.js +1 -1
  81. package/components/ion-select-option.js +1 -1
  82. package/components/ion-select-popover.js +1 -1
  83. package/components/ion-select.js +1 -1
  84. package/components/ion-skeleton-text.js +1 -1
  85. package/components/ion-spinner.js +1 -1
  86. package/components/ion-split-pane.js +1 -1
  87. package/components/ion-tab-bar.js +1 -1
  88. package/components/ion-tab-button.js +1 -1
  89. package/components/ion-tab.js +1 -1
  90. package/components/ion-tabs.js +1 -1
  91. package/components/ion-text.js +1 -1
  92. package/components/ion-textarea.js +1 -1
  93. package/components/ion-thumbnail.js +1 -1
  94. package/components/ion-title.js +1 -1
  95. package/components/ion-toast.js +1 -1
  96. package/components/ion-toggle.js +1 -1
  97. package/components/ion-toolbar.js +1 -1
  98. package/components/p-0Pyit076.js +4 -0
  99. package/components/{p-CpHPq11n.js → p-30_sZS2V.js} +1 -1
  100. package/components/p-83oP9gzn.js +4 -0
  101. package/components/p-8FN7p701.js +4 -0
  102. package/components/p-B-FxiyeI.js +4 -0
  103. package/components/p-B6dUPQXq.js +4 -0
  104. package/components/p-BMPN55of.js +4 -0
  105. package/components/p-BMS4t-kJ.js +4 -0
  106. package/components/p-BO4sUqUv.js +4 -0
  107. package/components/p-BSQPZ79H.js +4 -0
  108. package/components/p-Bc4wROfM.js +4 -0
  109. package/components/p-BhamHSw3.js +4 -0
  110. package/components/p-BmVRXR1y.js +4 -0
  111. package/components/p-BpG8kBfD.js +4 -0
  112. package/components/p-BqPNzJf6.js +4 -0
  113. package/components/p-BsVxQGUT.js +4 -0
  114. package/components/p-BxUIQcD9.js +4 -0
  115. package/components/p-C1O9GEug.js +4 -0
  116. package/components/p-C5KYjZWD.js +4 -0
  117. package/components/p-C9BGR5fy.js +4 -0
  118. package/components/p-CD4fmpem.js +4 -0
  119. package/components/p-CEW4RXZO.js +4 -0
  120. package/components/p-CIGNaXM1.js +4 -0
  121. package/components/p-CKhiNOEg.js +4 -0
  122. package/components/p-CO2zzh3W.js +4 -0
  123. package/components/p-CVnwvOBD.js +4 -0
  124. package/components/p-CbhUdtjf.js +4 -0
  125. package/components/p-CejmQs3h.js +4 -0
  126. package/components/p-CfnGxjv-.js +4 -0
  127. package/components/p-ClFYbgND.js +4 -0
  128. package/components/p-CmKf4pgI.js +4 -0
  129. package/components/p-Cs5f-uOS.js +4 -0
  130. package/components/p-D7-vHX0A.js +4 -0
  131. package/components/{p-CA4M5WkT.js → p-DIgGHN7D.js} +1 -1
  132. package/components/p-DJztqcrH.js +4 -0
  133. package/components/p-DRfgH82D.js +4 -0
  134. package/components/p-DTY4otpr.js +4 -0
  135. package/components/p-DV85C0e0.js +4 -0
  136. package/components/p-DVKS-ovH.js +4 -0
  137. package/components/p-DWCzVL3Y.js +4 -0
  138. package/components/p-D_XD0pVT.js +4 -0
  139. package/components/p-Dd8ajo9a.js +4 -0
  140. package/components/p-DdnhY_oj.js +4 -0
  141. package/components/p-Dm7h4Nyv.js +4 -0
  142. package/components/{p-B2SvA6NE.js → p-DwpKZ6rl.js} +1 -1
  143. package/components/p-DyePCNGr.js +4 -0
  144. package/components/p-G0TxqHfe.js +4 -0
  145. package/components/{p-Ch8jco3x.js → p-J-p0EtHR.js} +1 -1
  146. package/components/p-LXu5-6Ti.js +4 -0
  147. package/components/p-LpMHEu3v.js +4 -0
  148. package/components/p-MCJ7HjWe.js +4 -0
  149. package/components/p-Obm7si-x.js +4 -0
  150. package/components/p-TXPDHL13.js +4 -0
  151. package/components/p-UuPYCOZE.js +4 -0
  152. package/components/p-WeeS7GvC.js +4 -0
  153. package/components/p-ZjP4CjeZ.js +4 -0
  154. package/components/{p-CzlL9T_X.js → p-_0JhwClE.js} +1 -1
  155. package/components/p-_IKFD3ID.js +4 -0
  156. package/components/p-byZM6qHV.js +4 -0
  157. package/components/p-hh7qIC-X.js +4 -0
  158. package/components/p-idq4JFo2.js +4 -0
  159. package/components/{p-BZwQa9ey.js → p-ryyf_ItD.js} +1 -1
  160. package/components/p-tYCT3JGl.js +4 -0
  161. package/components/p-wzAhIh03.js +4 -0
  162. package/components/p-xOjr4bwc.js +4 -0
  163. package/components/{p-Dovs7FIs.js → p-yuj4Nkm_.js} +1 -1
  164. package/css/core.css +1 -1
  165. package/css/core.css.map +1 -1
  166. package/css/display.css +1 -1
  167. package/css/display.css.map +1 -1
  168. package/css/flex-utils.css +1 -1
  169. package/css/flex-utils.css.map +1 -1
  170. package/css/float-elements.css.map +1 -1
  171. package/css/global.bundle.css.map +1 -1
  172. package/css/ionic-swiper.css +1 -1
  173. package/css/ionic-swiper.css.map +1 -1
  174. package/css/ionic.bundle.css +1 -1
  175. package/css/ionic.bundle.css.map +1 -1
  176. package/css/normalize.css.map +1 -1
  177. package/css/padding.css.map +1 -1
  178. package/css/palettes/dark.always.css.map +1 -1
  179. package/css/palettes/dark.class.css.map +1 -1
  180. package/css/palettes/dark.system.css.map +1 -1
  181. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  182. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  183. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  184. package/css/palettes/high-contrast.always.css.map +1 -1
  185. package/css/palettes/high-contrast.class.css.map +1 -1
  186. package/css/palettes/high-contrast.system.css.map +1 -1
  187. package/css/structure.css.map +1 -1
  188. package/css/text-alignment.css.map +1 -1
  189. package/css/text-transformation.css.map +1 -1
  190. package/css/typography.css.map +1 -1
  191. package/css/utils.bundle.css +1 -1
  192. package/css/utils.bundle.css.map +1 -1
  193. package/dist/cjs/{animation-qlGmEn5Y.js → animation-C0mOHzej.js} +6 -6
  194. package/dist/cjs/{app-globals-CtK-3pCu.js → app-globals-BREG4twP.js} +1 -1
  195. package/dist/cjs/{button-active-CugpWmFI.js → button-active-BKj1rdFx.js} +3 -3
  196. package/dist/cjs/{capacitor-BixsAzyb.js → capacitor-DmA66EwP.js} +3 -3
  197. package/dist/cjs/{config-DWdFbSNK.js → config-CjUbvdPW.js} +5 -4
  198. package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
  199. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  200. package/dist/cjs/{format-COAsdjOc.js → format-pp0Du3K-.js} +40 -30
  201. package/dist/cjs/{framework-delegate-CJT_QJQI.js → framework-delegate-NTLQ5YzV.js} +6 -10
  202. package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
  203. package/dist/cjs/{haptic-BFgF-QCg.js → haptic-Ch-X4gRx.js} +3 -4
  204. package/dist/cjs/hardware-back-button-fqpYh-kd.js +121 -0
  205. package/dist/cjs/{helpers-Fh1iXsX9.js → helpers-CaLhEmTE.js} +6 -73
  206. package/dist/cjs/{index-YYUVCfP-.js → index-B7zJsYWS.js} +3 -3
  207. package/dist/cjs/{index-CNicxECl.js → index-BlshL9ib.js} +8 -9
  208. package/dist/cjs/{index-D94mERjz.js → index-Ck9advCT.js} +5 -5
  209. package/dist/cjs/{index-CM8iGvyx.js → index-D2X6b92x.js} +15 -16
  210. package/dist/cjs/{index-DRFkZu3V.js → index-D48vawBq.js} +2 -2
  211. package/dist/cjs/index-DkNv4J_i.js +10 -0
  212. package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
  213. package/dist/cjs/{index-C1knGA9x.js → index-uvry__L4.js} +33 -65
  214. package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
  215. package/dist/cjs/index.cjs.js +17 -17
  216. package/dist/cjs/{input-shims-C8NCYfWv.js → input-shims-DvHAFqiP.js} +19 -22
  217. package/dist/cjs/{input.utils-CYZZsbdf.js → input.utils-CP4fzrqk.js} +6 -7
  218. package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
  219. package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
  220. package/dist/cjs/ion-alert.cjs.entry.js +250 -125
  221. package/dist/cjs/ion-app_8.cjs.entry.js +461 -608
  222. package/dist/cjs/ion-avatar_3.cjs.entry.js +19 -125
  223. package/dist/cjs/ion-back-button.cjs.entry.js +64 -49
  224. package/dist/cjs/ion-backdrop.cjs.entry.js +23 -22
  225. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +211 -169
  226. package/dist/cjs/ion-button_2.cjs.entry.js +152 -117
  227. package/dist/cjs/ion-card_5.cjs.entry.js +109 -79
  228. package/dist/cjs/ion-checkbox.cjs.entry.js +163 -129
  229. package/dist/cjs/ion-chip.cjs.entry.js +21 -56
  230. package/dist/cjs/ion-col_3.cjs.entry.js +186 -61
  231. package/dist/cjs/ion-datetime-button.cjs.entry.js +255 -247
  232. package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
  233. package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
  234. package/dist/cjs/ion-img.cjs.entry.js +34 -16
  235. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
  236. package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
  237. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
  238. package/dist/cjs/ion-input.cjs.entry.js +330 -276
  239. package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
  240. package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
  241. package/dist/cjs/ion-loading.cjs.entry.js +151 -68
  242. package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
  243. package/dist/cjs/ion-modal.cjs.entry.js +570 -500
  244. package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
  245. package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
  246. package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
  247. package/dist/cjs/ion-picker.cjs.entry.js +405 -400
  248. package/dist/cjs/ion-popover.cjs.entry.js +323 -211
  249. package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
  250. package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
  251. package/dist/cjs/ion-range.cjs.entry.js +307 -249
  252. package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
  253. package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
  254. package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
  255. package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
  256. package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
  257. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  258. package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
  259. package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
  260. package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
  261. package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
  262. package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
  263. package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
  264. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
  265. package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
  266. package/dist/cjs/ion-text.cjs.entry.js +13 -7
  267. package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
  268. package/dist/cjs/ion-toast.cjs.entry.js +264 -169
  269. package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
  270. package/dist/cjs/ionic-global-k6hOWWpn.js +156 -0
  271. package/dist/cjs/ionic.cjs.js +4 -4
  272. package/dist/cjs/{ios.transition-BgDCUY4Y.js → ios.transition-KvuRAe2W.js} +14 -20
  273. package/dist/cjs/{item-multiple-inputs-DKn76MYO.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
  274. package/dist/cjs/{keyboard-nne7rvBK.js → keyboard-Cix5TVkD.js} +4 -5
  275. package/dist/cjs/{keyboard-BbZXOwZg.js → keyboard-cHxZlTyz.js} +3 -3
  276. package/dist/cjs/keyboard-controller-PtZoN2GS.js +167 -0
  277. package/dist/cjs/loader.cjs.js +4 -4
  278. package/dist/cjs/{md.transition-Debf4tYr.js → md.transition-Bjl5Ozph.js} +8 -10
  279. package/dist/cjs/{notch-controller-CFlPw7ER.js → notch-controller-BEUpEgb5.js} +4 -4
  280. package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
  281. package/dist/cjs/{overlays-DYBUkNQu.js → overlays-IlP4H2Gn.js} +60 -336
  282. package/dist/cjs/{select-option-render-BqJEK1N1.js → select-option-render-pULCGldr.js} +3 -4
  283. package/dist/cjs/{status-tap-hwqc0yb_.js → status-tap-BR_ujYHg.js} +3 -4
  284. package/dist/cjs/{swipe-back-DqQx5QCp.js → swipe-back-DzQKEl5g.js} +5 -6
  285. package/dist/cjs/{theme-IlOsGAz7.js → theme-Bw0rpaNN.js} +7 -26
  286. package/dist/cjs/validity-BpS37YFM.js +19 -0
  287. package/dist/collection/collection-manifest.json +1 -13
  288. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  289. package/dist/collection/components/accordion/accordion.js +327 -338
  290. package/dist/collection/components/accordion/accordion.md.css +59 -67
  291. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  292. package/dist/collection/components/accordion-group/accordion-group.js +56 -69
  293. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  294. package/dist/collection/components/action-sheet/action-sheet.ios.css +54 -184
  295. package/dist/collection/components/action-sheet/action-sheet.js +166 -76
  296. package/dist/collection/components/action-sheet/action-sheet.md.css +55 -179
  297. package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
  298. package/dist/collection/components/alert/alert.ios.css +54 -247
  299. package/dist/collection/components/alert/alert.js +236 -113
  300. package/dist/collection/components/alert/alert.md.css +56 -243
  301. package/dist/collection/components/app/app.js +86 -15
  302. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  303. package/dist/collection/components/avatar/avatar.js +4 -120
  304. package/dist/collection/components/avatar/avatar.md.css +0 -51
  305. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  306. package/dist/collection/components/back-button/back-button.js +61 -46
  307. package/dist/collection/components/back-button/back-button.md.css +48 -60
  308. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  309. package/dist/collection/components/backdrop/backdrop.js +22 -26
  310. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  311. package/dist/collection/components/badge/badge.ios.css +12 -137
  312. package/dist/collection/components/badge/badge.js +15 -145
  313. package/dist/collection/components/badge/badge.md.css +12 -122
  314. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  315. package/dist/collection/components/breadcrumb/breadcrumb.js +101 -72
  316. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  317. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  318. package/dist/collection/components/breadcrumbs/breadcrumbs.js +112 -99
  319. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  320. package/dist/collection/components/button/button.ios.css +46 -154
  321. package/dist/collection/components/button/button.js +157 -122
  322. package/dist/collection/components/button/button.md.css +50 -150
  323. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  324. package/dist/collection/components/buttons/buttons.js +21 -29
  325. package/dist/collection/components/buttons/buttons.md.css +3 -55
  326. package/dist/collection/components/card/card.ios.css +14 -65
  327. package/dist/collection/components/card/card.js +63 -61
  328. package/dist/collection/components/card/card.md.css +14 -65
  329. package/dist/collection/components/card-content/card-content.ios.css +35 -20
  330. package/dist/collection/components/card-content/card-content.js +10 -12
  331. package/dist/collection/components/card-content/card-content.md.css +35 -20
  332. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  333. package/dist/collection/components/card-header/card-header.js +21 -20
  334. package/dist/collection/components/card-header/card-header.md.css +15 -27
  335. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  336. package/dist/collection/components/card-subtitle/card-subtitle.js +14 -11
  337. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  338. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  339. package/dist/collection/components/card-title/card-title.js +14 -11
  340. package/dist/collection/components/card-title/card-title.md.css +0 -73
  341. package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
  342. package/dist/collection/components/checkbox/checkbox.js +160 -165
  343. package/dist/collection/components/checkbox/checkbox.md.css +118 -243
  344. package/dist/collection/components/chip/chip.ios.css +14 -67
  345. package/dist/collection/components/chip/chip.js +20 -116
  346. package/dist/collection/components/chip/chip.md.css +14 -67
  347. package/dist/collection/components/col/col.css +4 -192
  348. package/dist/collection/components/col/col.js +186 -212
  349. package/dist/collection/components/content/content.css +2 -47
  350. package/dist/collection/components/content/content.js +102 -78
  351. package/dist/collection/components/datetime/datetime.ios.css +148 -304
  352. package/dist/collection/components/datetime/datetime.js +1068 -910
  353. package/dist/collection/components/datetime/datetime.md.css +138 -294
  354. package/dist/collection/components/datetime/utils/data.js +18 -19
  355. package/dist/collection/components/datetime/utils/format.js +21 -11
  356. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  357. package/dist/collection/components/datetime/utils/parse.js +10 -10
  358. package/dist/collection/components/datetime/utils/state.js +8 -2
  359. package/dist/collection/components/datetime/utils/validate.js +4 -5
  360. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
  361. package/dist/collection/components/datetime-button/datetime-button.js +253 -246
  362. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
  363. package/dist/collection/components/fab/fab.css +1 -25
  364. package/dist/collection/components/fab/fab.js +25 -22
  365. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  366. package/dist/collection/components/fab-button/fab-button.js +117 -83
  367. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  368. package/dist/collection/components/fab-list/fab-list.css +0 -12
  369. package/dist/collection/components/fab-list/fab-list.js +15 -20
  370. package/dist/collection/components/footer/footer.ios.css +6 -33
  371. package/dist/collection/components/footer/footer.js +65 -151
  372. package/dist/collection/components/footer/footer.md.css +0 -40
  373. package/dist/collection/components/grid/grid.css +0 -12
  374. package/dist/collection/components/grid/grid.js +9 -15
  375. package/dist/collection/components/header/header.ios.css +133 -178
  376. package/dist/collection/components/header/header.js +70 -202
  377. package/dist/collection/components/header/header.md.css +9 -199
  378. package/dist/collection/components/header/header.utils.js +13 -6
  379. package/dist/collection/components/img/img.js +34 -16
  380. package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
  381. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  382. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
  383. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  384. package/dist/collection/components/input/input.ios.css +135 -223
  385. package/dist/collection/components/input/input.js +339 -307
  386. package/dist/collection/components/input/input.md.css +207 -193
  387. package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
  388. package/dist/collection/components/input-otp/input-otp.js +432 -437
  389. package/dist/collection/components/input-otp/input-otp.md.css +60 -105
  390. package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
  391. package/dist/collection/components/item/item.ios.css +80 -120
  392. package/dist/collection/components/item/item.js +113 -102
  393. package/dist/collection/components/item/item.md.css +79 -131
  394. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  395. package/dist/collection/components/item-divider/item-divider.js +23 -21
  396. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  397. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  398. package/dist/collection/components/item-group/item-group.js +7 -13
  399. package/dist/collection/components/item-group/item-group.md.css +0 -12
  400. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  401. package/dist/collection/components/item-option/item-option.js +56 -92
  402. package/dist/collection/components/item-option/item-option.md.css +29 -136
  403. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  404. package/dist/collection/components/item-options/item-options.js +17 -20
  405. package/dist/collection/components/item-options/item-options.md.css +34 -77
  406. package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
  407. package/dist/collection/components/item-sliding/item-sliding.js +61 -441
  408. package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
  409. package/dist/collection/components/label/label.ios.css +0 -18
  410. package/dist/collection/components/label/label.js +32 -15
  411. package/dist/collection/components/label/label.md.css +0 -18
  412. package/dist/collection/components/list/list.ios.css +14 -54
  413. package/dist/collection/components/list/list.js +19 -55
  414. package/dist/collection/components/list/list.md.css +16 -56
  415. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  416. package/dist/collection/components/list-header/list-header.js +18 -11
  417. package/dist/collection/components/list-header/list-header.md.css +38 -82
  418. package/dist/collection/components/loading/loading.ios.css +1 -13
  419. package/dist/collection/components/loading/loading.js +143 -62
  420. package/dist/collection/components/loading/loading.md.css +1 -13
  421. package/dist/collection/components/menu/menu.ios.css +3 -15
  422. package/dist/collection/components/menu/menu.js +108 -71
  423. package/dist/collection/components/menu/menu.md.css +3 -15
  424. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  425. package/dist/collection/components/menu-button/menu-button.js +38 -45
  426. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  427. package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
  428. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  429. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  430. package/dist/collection/components/modal/animations/sheet.js +2 -8
  431. package/dist/collection/components/modal/gestures/sheet.js +32 -86
  432. package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
  433. package/dist/collection/components/modal/modal.ios.css +70 -178
  434. package/dist/collection/components/modal/modal.js +404 -272
  435. package/dist/collection/components/modal/modal.md.css +70 -178
  436. package/dist/collection/components/modal/safe-area-utils.js +6 -7
  437. package/dist/collection/components/modal/test/fixtures.js +3 -0
  438. package/dist/collection/components/nav/nav.css +1 -7
  439. package/dist/collection/components/nav/nav.js +72 -256
  440. package/dist/collection/components/nav/view-controller.js +7 -1
  441. package/dist/collection/components/nav-link/nav-link.js +21 -14
  442. package/dist/collection/components/note/note.ios.css +0 -12
  443. package/dist/collection/components/note/note.js +14 -11
  444. package/dist/collection/components/note/note.md.css +0 -12
  445. package/dist/collection/components/picker/picker.ios.css +3 -15
  446. package/dist/collection/components/picker/picker.js +403 -398
  447. package/dist/collection/components/picker/picker.md.css +3 -15
  448. package/dist/collection/components/picker-column/picker-column.css +5 -9
  449. package/dist/collection/components/picker-column/picker-column.js +418 -409
  450. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  451. package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
  452. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
  453. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  454. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  455. package/dist/collection/components/popover/popover.ios.css +2 -15
  456. package/dist/collection/components/popover/popover.js +313 -199
  457. package/dist/collection/components/popover/popover.md.css +2 -15
  458. package/dist/collection/components/popover/test/fixture.js +1 -0
  459. package/dist/collection/components/popover/utils.js +4 -6
  460. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  461. package/dist/collection/components/progress-bar/progress-bar.js +33 -65
  462. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  463. package/dist/collection/components/radio/radio.ios.css +102 -207
  464. package/dist/collection/components/radio/radio.js +108 -77
  465. package/dist/collection/components/radio/radio.md.css +102 -207
  466. package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
  467. package/dist/collection/components/radio-group/radio-group.js +107 -113
  468. package/dist/collection/components/radio-group/radio-group.md.css +19 -43
  469. package/dist/collection/components/radio-group/test/fixtures.js +2 -0
  470. package/dist/collection/components/range/range.ios.css +85 -128
  471. package/dist/collection/components/range/range.js +303 -245
  472. package/dist/collection/components/range/range.md.css +85 -128
  473. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  474. package/dist/collection/components/refresher/refresher.js +117 -88
  475. package/dist/collection/components/refresher/refresher.md.css +2 -15
  476. package/dist/collection/components/refresher-content/refresher-content.js +47 -31
  477. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  478. package/dist/collection/components/reorder/reorder.js +7 -33
  479. package/dist/collection/components/reorder/reorder.md.css +0 -6
  480. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  481. package/dist/collection/components/reorder-group/reorder-group.js +47 -22
  482. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  483. package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
  484. package/dist/collection/components/route/route.js +39 -14
  485. package/dist/collection/components/route-redirect/route-redirect.js +31 -0
  486. package/dist/collection/components/router/router.js +37 -37
  487. package/dist/collection/components/router/utils/dom.js +25 -7
  488. package/dist/collection/components/router/utils/matching.js +7 -9
  489. package/dist/collection/components/router/utils/parser.js +1 -1
  490. package/dist/collection/components/router/utils/path.js +0 -1
  491. package/dist/collection/components/router-link/router-link.css +2 -8
  492. package/dist/collection/components/router-link/router-link.js +40 -19
  493. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  494. package/dist/collection/components/router-outlet/router-outlet.js +83 -25
  495. package/dist/collection/components/row/row.css +0 -16
  496. package/dist/collection/components/row/row.js +2 -9
  497. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  498. package/dist/collection/components/searchbar/searchbar.js +321 -380
  499. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  500. package/dist/collection/components/segment/segment.ios.css +2 -45
  501. package/dist/collection/components/segment/segment.js +126 -94
  502. package/dist/collection/components/segment/segment.md.css +2 -45
  503. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  504. package/dist/collection/components/segment-button/segment-button.js +49 -46
  505. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  506. package/dist/collection/components/segment-content/segment-content.js +1 -1
  507. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  508. package/dist/collection/components/segment-view/segment-view.js +28 -27
  509. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  510. package/dist/collection/components/select/select.ios.css +177 -316
  511. package/dist/collection/components/select/select.js +401 -399
  512. package/dist/collection/components/select/select.md.css +179 -332
  513. package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
  514. package/dist/collection/components/select-modal/select-modal.js +37 -79
  515. package/dist/collection/components/select-modal/select-modal.md.css +43 -273
  516. package/dist/collection/components/select-modal/test/fixtures.js +8 -1
  517. package/dist/collection/components/select-option/select-option.js +48 -15
  518. package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
  519. package/dist/collection/components/select-popover/select-popover.js +44 -37
  520. package/dist/collection/components/select-popover/select-popover.md.css +47 -228
  521. package/dist/collection/components/select-popover/test/fixtures.js +8 -1
  522. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  523. package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
  524. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
  525. package/dist/collection/components/spinner/spinner.js +26 -55
  526. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  527. package/dist/collection/components/split-pane/split-pane.js +33 -28
  528. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  529. package/dist/collection/components/tab/tab.js +17 -10
  530. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
  531. package/dist/collection/components/tab-bar/tab-bar.js +44 -190
  532. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
  533. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  534. package/dist/collection/components/tab-button/tab-button.js +68 -74
  535. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  536. package/dist/collection/components/tabs/tabs.css +1 -7
  537. package/dist/collection/components/tabs/tabs.js +33 -23
  538. package/dist/collection/components/text/text.css +0 -6
  539. package/dist/collection/components/text/text.js +12 -7
  540. package/dist/collection/components/textarea/textarea.ios.css +158 -298
  541. package/dist/collection/components/textarea/textarea.js +275 -295
  542. package/dist/collection/components/textarea/textarea.md.css +159 -312
  543. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  544. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  545. package/dist/collection/components/title/title.ios.css +4 -32
  546. package/dist/collection/components/title/title.js +23 -13
  547. package/dist/collection/components/title/title.md.css +4 -39
  548. package/dist/collection/components/toast/animations/utils.js +1 -1
  549. package/dist/collection/components/toast/toast.ios.css +45 -84
  550. package/dist/collection/components/toast/toast.js +232 -178
  551. package/dist/collection/components/toast/toast.md.css +45 -84
  552. package/dist/collection/components/toggle/toggle.ios.css +127 -247
  553. package/dist/collection/components/toggle/toggle.js +175 -177
  554. package/dist/collection/components/toggle/toggle.md.css +127 -245
  555. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  556. package/dist/collection/components/toolbar/toolbar.js +25 -222
  557. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  558. package/dist/collection/global/config.js +4 -6
  559. package/dist/collection/global/ionic-global.js +20 -242
  560. package/dist/collection/index.js +1 -1
  561. package/dist/collection/utils/animation/animation.js +3 -3
  562. package/dist/collection/utils/config.js +5 -4
  563. package/dist/collection/utils/focus-controller/index.js +1 -1
  564. package/dist/collection/utils/focus-trap.js +5 -16
  565. package/dist/collection/utils/focus-visible.js +0 -22
  566. package/dist/collection/utils/forms/index.js +0 -1
  567. package/dist/collection/utils/forms/validity.js +0 -31
  568. package/dist/collection/utils/framework-delegate.js +5 -9
  569. package/dist/collection/utils/gesture/gesture-controller.js +15 -8
  570. package/dist/collection/utils/gesture/index.js +10 -2
  571. package/dist/collection/utils/gesture/listener.js +1 -1
  572. package/dist/collection/utils/hardware-back-button.js +3 -18
  573. package/dist/collection/utils/helpers.js +5 -72
  574. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  575. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  576. package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
  577. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  578. package/dist/collection/utils/logging/index.js +23 -4
  579. package/dist/collection/utils/media.js +0 -1
  580. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  581. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  582. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  583. package/dist/collection/utils/menu-controller/index.js +1 -2
  584. package/dist/collection/utils/native/haptic.js +2 -3
  585. package/dist/collection/utils/native/keyboard.js +2 -2
  586. package/dist/collection/utils/native/status-bar.js +1 -1
  587. package/dist/collection/utils/overlay-control-label.js +11 -13
  588. package/dist/collection/utils/overlays.js +45 -312
  589. package/dist/collection/utils/platform.js +4 -5
  590. package/dist/collection/utils/rtl/dir.js +1 -1
  591. package/dist/collection/utils/sanitization/index.js +2 -2
  592. package/dist/collection/utils/select-option-render.js +1 -2
  593. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  594. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  595. package/dist/collection/utils/test/playwright/drag-element.js +11 -35
  596. package/dist/collection/utils/test/playwright/generator.js +25 -51
  597. package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
  598. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -15
  599. package/dist/collection/utils/test/playwright/page/utils/set-content.js +4 -27
  600. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  601. package/dist/collection/utils/test/press-keys.js +10 -17
  602. package/dist/collection/utils/theme.js +7 -26
  603. package/dist/collection/utils/transition/ios.transition.js +9 -14
  604. package/dist/collection/utils/transition/md.transition.js +3 -4
  605. package/dist/docs.json +503 -10023
  606. package/dist/esm/{animation-ChfHU0RG.js → animation-CGFdmGk9.js} +5 -5
  607. package/dist/esm/{app-globals-D1OOQlqq.js → app-globals-CYmMeGdU.js} +1 -1
  608. package/dist/esm/{button-active-CPYK0dNo.js → button-active--80YqSHA.js} +3 -3
  609. package/dist/esm/{capacitor-DG_4yVXz.js → capacitor-CFERIeaU.js} +1 -1
  610. package/dist/esm/{config-BwKpO3Is.js → config-DWCzVL3Y.js} +5 -4
  611. package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
  612. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  613. package/dist/esm/{format-2WlZcMvG.js → format-Dcwga61t.js} +41 -31
  614. package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate--ajhSeKH.js} +6 -10
  615. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
  616. package/dist/esm/{haptic-BWlRCqa-.js → haptic-Cq4UAeka.js} +3 -4
  617. package/dist/esm/hardware-back-button-gLJHMX_F.js +115 -0
  618. package/dist/esm/{helpers-DfF5_wJc.js → helpers-DexiPLIC.js} +7 -73
  619. package/dist/esm/{index-BSDDOljg.js → index-8s8kZKJ7.js} +5 -5
  620. package/dist/esm/{index-DNY2GOUg.js → index-BCgUwrV0.js} +3 -4
  621. package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
  622. package/dist/esm/{index-Mq5pCWmZ.js → index-CKM1DdGm.js} +3 -3
  623. package/dist/esm/{index-C0EQceqV.js → index-ChhhtsGZ.js} +34 -66
  624. package/dist/esm/{index-7eS8XtuU.js → index-CumkqGQF.js} +12 -13
  625. package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
  626. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  627. package/dist/esm/{index-taYRjZGp.js → index-_Za5VB9w.js} +2 -2
  628. package/dist/esm/index.js +17 -16
  629. package/dist/esm/{input-shims-tZfqB5a5.js → input-shims-BB0AKb_k.js} +11 -14
  630. package/dist/esm/{input.utils-fs4B7WL5.js → input.utils-J6HWocLA.js} +4 -5
  631. package/dist/esm/ion-accordion_2.entry.js +378 -382
  632. package/dist/esm/ion-action-sheet.entry.js +178 -86
  633. package/dist/esm/ion-alert.entry.js +250 -125
  634. package/dist/esm/ion-app_8.entry.js +460 -607
  635. package/dist/esm/ion-avatar_3.entry.js +19 -125
  636. package/dist/esm/ion-back-button.entry.js +64 -49
  637. package/dist/esm/ion-backdrop.entry.js +23 -22
  638. package/dist/esm/ion-breadcrumb_2.entry.js +211 -169
  639. package/dist/esm/ion-button_2.entry.js +152 -117
  640. package/dist/esm/ion-card_5.entry.js +109 -79
  641. package/dist/esm/ion-checkbox.entry.js +163 -129
  642. package/dist/esm/ion-chip.entry.js +21 -56
  643. package/dist/esm/ion-col_3.entry.js +186 -61
  644. package/dist/esm/ion-datetime-button.entry.js +255 -247
  645. package/dist/esm/ion-datetime.entry.js +2768 -0
  646. package/dist/esm/ion-fab_3.entry.js +154 -112
  647. package/dist/esm/ion-img.entry.js +34 -16
  648. package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
  649. package/dist/esm/ion-input-otp.entry.js +435 -437
  650. package/dist/esm/ion-input-password-toggle.entry.js +40 -64
  651. package/dist/esm/ion-input.entry.js +330 -276
  652. package/dist/esm/ion-item-option_3.entry.js +136 -511
  653. package/dist/esm/ion-item_8.entry.js +217 -189
  654. package/dist/esm/ion-loading.entry.js +151 -68
  655. package/dist/esm/ion-menu_3.entry.js +181 -137
  656. package/dist/esm/ion-modal.entry.js +528 -458
  657. package/dist/esm/ion-nav_2.entry.js +103 -163
  658. package/dist/esm/ion-picker-column-option.entry.js +39 -39
  659. package/dist/esm/ion-picker-column.entry.js +421 -409
  660. package/dist/esm/ion-picker.entry.js +405 -400
  661. package/dist/esm/ion-popover.entry.js +323 -211
  662. package/dist/esm/ion-progress-bar.entry.js +35 -47
  663. package/dist/esm/ion-radio_2.entry.js +216 -161
  664. package/dist/esm/ion-range.entry.js +307 -249
  665. package/dist/esm/ion-refresher_2.entry.js +174 -121
  666. package/dist/esm/ion-reorder_2.entry.js +59 -53
  667. package/dist/esm/ion-ripple-effect.entry.js +18 -26
  668. package/dist/esm/ion-route_4.entry.js +178 -75
  669. package/dist/esm/ion-searchbar.entry.js +308 -331
  670. package/dist/esm/ion-segment-content.entry.js +2 -2
  671. package/dist/esm/ion-segment-view.entry.js +28 -27
  672. package/dist/esm/ion-segment_2.entry.js +177 -141
  673. package/dist/esm/ion-select-modal.entry.js +49 -69
  674. package/dist/esm/ion-select_3.entry.js +482 -386
  675. package/dist/esm/ion-spinner.entry.js +28 -36
  676. package/dist/esm/ion-split-pane.entry.js +34 -25
  677. package/dist/esm/ion-tab-bar_2.entry.js +115 -178
  678. package/dist/esm/ion-tab_2.entry.js +54 -29
  679. package/dist/esm/ion-text.entry.js +13 -7
  680. package/dist/esm/ion-textarea.entry.js +274 -269
  681. package/dist/esm/ion-toast.entry.js +243 -148
  682. package/dist/esm/ion-toggle.entry.js +184 -187
  683. package/dist/esm/ionic-global-BVB7BrLT.js +151 -0
  684. package/dist/esm/ionic.js +5 -5
  685. package/dist/esm/{ios.transition-C3r-0w96.js → ios.transition-BdhybwLl.js} +14 -20
  686. package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
  687. package/dist/esm/{keyboard-BzbtCDwZ.js → keyboard-Cj8mLJeq.js} +4 -5
  688. package/dist/esm/{keyboard-DYGmALa7.js → keyboard-DAF8GNJ9.js} +3 -3
  689. package/dist/esm/keyboard-controller-DEwoa1ev.js +165 -0
  690. package/dist/esm/loader.js +5 -5
  691. package/dist/esm/{md.transition-CPHOF5T9.js → md.transition-B5lqKGCs.js} +8 -10
  692. package/dist/esm/{notch-controller-CsbpmbOz.js → notch-controller-CrUGyHYz.js} +2 -2
  693. package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
  694. package/dist/esm/{overlays-C1NQMs9y.js → overlays-CjWwtvf1.js} +57 -333
  695. package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-C4m76VGH.js} +3 -4
  696. package/dist/esm/{status-tap-BueE8Coq.js → status-tap-DpLhkDWs.js} +3 -4
  697. package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-cz4-lyG3.js} +5 -6
  698. package/dist/esm/theme-byZM6qHV.js +48 -0
  699. package/dist/esm/validity-DJztqcrH.js +17 -0
  700. package/dist/html.html-data.json +146 -2713
  701. package/dist/ionic/index.esm.js +1 -1
  702. package/dist/ionic/ionic.esm.js +1 -1
  703. package/dist/ionic/p-0266b7e1.entry.js +4 -0
  704. package/dist/ionic/p-08443c08.entry.js +4 -0
  705. package/dist/ionic/p-08f1ed1c.entry.js +4 -0
  706. package/dist/ionic/p-09b47b7d.entry.js +4 -0
  707. package/dist/ionic/p-0FNc80PN.js +4 -0
  708. package/dist/ionic/p-12589d59.entry.js +4 -0
  709. package/dist/ionic/p-1d2e53e8.entry.js +4 -0
  710. package/dist/ionic/p-1edf0573.entry.js +4 -0
  711. package/dist/ionic/p-214e000a.entry.js +4 -0
  712. package/dist/ionic/p-21a7fb2a.entry.js +4 -0
  713. package/dist/ionic/p-2ce59395.entry.js +4 -0
  714. package/dist/ionic/p-33829e94.entry.js +4 -0
  715. package/dist/ionic/p-374b10cb.entry.js +4 -0
  716. package/dist/ionic/p-3835a020.entry.js +4 -0
  717. package/dist/ionic/p-3c5fdd27.entry.js +4 -0
  718. package/dist/ionic/p-40424a88.entry.js +4 -0
  719. package/dist/ionic/p-48b6835f.entry.js +4 -0
  720. package/dist/ionic/p-4eOQC00Z.js +4 -0
  721. package/dist/ionic/p-5394e1d4.entry.js +4 -0
  722. package/dist/ionic/p-53bac1c9.entry.js +4 -0
  723. package/dist/ionic/p-5506caeb.entry.js +4 -0
  724. package/dist/ionic/p-5993a77f.entry.js +4 -0
  725. package/dist/ionic/p-6277efba.entry.js +4 -0
  726. package/dist/ionic/p-62e71297.entry.js +4 -0
  727. package/dist/ionic/p-6b286c5c.entry.js +4 -0
  728. package/dist/ionic/p-7116e558.entry.js +4 -0
  729. package/dist/ionic/p-74f30659.entry.js +4 -0
  730. package/dist/ionic/p-7bb3e957.entry.js +4 -0
  731. package/dist/ionic/p-82525fb0.entry.js +4 -0
  732. package/dist/ionic/p-865fa114.entry.js +4 -0
  733. package/dist/ionic/p-8a21bdbd.entry.js +4 -0
  734. package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
  735. package/dist/ionic/p-8f3a1995.entry.js +4 -0
  736. package/dist/ionic/p-91c6faf1.entry.js +4 -0
  737. package/dist/ionic/p-9b865fe6.entry.js +4 -0
  738. package/dist/ionic/p-9nmHvEvw.js +4 -0
  739. package/dist/ionic/p-B-FxiyeI.js +4 -0
  740. package/dist/ionic/p-BB0LlG4y.js +4 -0
  741. package/dist/ionic/p-BMPN55of.js +4 -0
  742. package/dist/ionic/p-BQ8oNV0v.js +4 -0
  743. package/dist/ionic/p-BSQPZ79H.js +4 -0
  744. package/dist/ionic/p-BhamHSw3.js +4 -0
  745. package/dist/ionic/p-BjvtSsVI.js +4 -0
  746. package/dist/ionic/p-BkfAWuv6.js +4 -0
  747. package/dist/ionic/p-BmVRXR1y.js +4 -0
  748. package/dist/ionic/p-BnMQxWON.js +4 -0
  749. package/dist/ionic/p-BvabGprD.js +4 -0
  750. package/{components/p-Va26YR7l.js → dist/ionic/p-BwIp10KV.js} +1 -1
  751. package/dist/ionic/p-C-94tAim.js +4 -0
  752. package/dist/ionic/p-C6eME8Ey.js +4 -0
  753. package/dist/ionic/p-CIGNaXM1.js +4 -0
  754. package/dist/ionic/p-CKUuSnDR.js +4 -0
  755. package/dist/ionic/p-CMRtMbJc.js +4 -0
  756. package/dist/ionic/p-CPcPmkGv.js +4 -0
  757. package/dist/ionic/p-CQ_4TirR.js +4 -0
  758. package/dist/ionic/p-CaRuIadB.js +4 -0
  759. package/dist/ionic/p-Cdjxf_yg.js +4 -0
  760. package/dist/ionic/p-ChhhtsGZ.js +5 -0
  761. package/dist/ionic/p-CmKf4pgI.js +4 -0
  762. package/dist/ionic/p-D5t_-oMk.js +4 -0
  763. package/dist/ionic/p-D94b61er.js +4 -0
  764. package/dist/ionic/p-DCI3rXQo.js +4 -0
  765. package/dist/ionic/p-DDhtUaaA.js +4 -0
  766. package/dist/ionic/p-DJztqcrH.js +4 -0
  767. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  768. package/dist/ionic/p-Dn0mqQ_R.js +4 -0
  769. package/dist/ionic/p-I3In7hMC.js +4 -0
  770. package/dist/ionic/p-T71k3C35.js +4 -0
  771. package/dist/ionic/p-TXPDHL13.js +4 -0
  772. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  773. package/dist/ionic/p-a641d428.entry.js +4 -0
  774. package/dist/ionic/p-ac6ef997.entry.js +4 -0
  775. package/dist/ionic/p-acf0a6af.entry.js +4 -0
  776. package/dist/ionic/p-ad98e3ff.entry.js +4 -0
  777. package/dist/ionic/p-af5166f5.entry.js +4 -0
  778. package/dist/ionic/p-b24dc0a1.entry.js +4 -0
  779. package/dist/ionic/p-ba8a598f.entry.js +4 -0
  780. package/dist/ionic/p-bf7c1f05.entry.js +4 -0
  781. package/dist/ionic/p-byZM6qHV.js +4 -0
  782. package/dist/ionic/p-c3f65965.entry.js +4 -0
  783. package/dist/ionic/p-c8fbe544.entry.js +4 -0
  784. package/dist/ionic/p-cb12f6c3.entry.js +4 -0
  785. package/dist/ionic/p-cec87704.entry.js +4 -0
  786. package/dist/ionic/p-dbfd2d52.entry.js +4 -0
  787. package/dist/ionic/p-e1e5b507.entry.js +4 -0
  788. package/dist/ionic/p-ede019ef.entry.js +4 -0
  789. package/dist/ionic/p-efef6788.entry.js +4 -0
  790. package/dist/ionic/p-f046aa37.entry.js +4 -0
  791. package/dist/ionic/p-f402f5a4.entry.js +4 -0
  792. package/dist/ionic/p-f622796d.entry.js +4 -0
  793. package/dist/ionic/{p-CnIzWLAn.js → p-kJA95YWg.js} +1 -1
  794. package/dist/types/components/accordion/accordion.d.ts +3 -6
  795. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  796. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  797. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  798. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  799. package/dist/types/components/alert/alert.d.ts +2 -3
  800. package/dist/types/components/app/app.d.ts +5 -4
  801. package/dist/types/components/avatar/avatar.d.ts +0 -32
  802. package/dist/types/components/back-button/back-button.d.ts +1 -2
  803. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  804. package/dist/types/components/badge/badge.d.ts +1 -34
  805. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  806. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  807. package/dist/types/components/button/button.d.ts +8 -23
  808. package/dist/types/components/buttons/buttons.d.ts +1 -5
  809. package/dist/types/components/card/card.d.ts +1 -8
  810. package/dist/types/components/card-content/card-content.d.ts +1 -2
  811. package/dist/types/components/card-header/card-header.d.ts +2 -3
  812. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  813. package/dist/types/components/card-title/card-title.d.ts +1 -2
  814. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  815. package/dist/types/components/chip/chip.d.ts +1 -26
  816. package/dist/types/components/col/col.d.ts +5 -52
  817. package/dist/types/components/content/content.d.ts +0 -3
  818. package/dist/types/components/datetime/datetime.d.ts +1 -26
  819. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  820. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  821. package/dist/types/components/fab/fab.d.ts +0 -4
  822. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  823. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  824. package/dist/types/components/footer/footer.d.ts +3 -20
  825. package/dist/types/components/grid/grid.d.ts +0 -4
  826. package/dist/types/components/header/header.d.ts +3 -26
  827. package/dist/types/components/header/header.utils.d.ts +5 -4
  828. package/dist/types/components/img/img.d.ts +1 -2
  829. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  830. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  831. package/dist/types/components/input/input.d.ts +6 -35
  832. package/dist/types/components/input-otp/input-otp.d.ts +0 -37
  833. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  834. package/dist/types/components/item/item.d.ts +4 -11
  835. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  836. package/dist/types/components/item-group/item-group.d.ts +0 -4
  837. package/dist/types/components/item-option/item-option.d.ts +1 -18
  838. package/dist/types/components/item-options/item-options.d.ts +0 -4
  839. package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
  840. package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
  841. package/dist/types/components/label/label.d.ts +1 -2
  842. package/dist/types/components/list/list.d.ts +1 -15
  843. package/dist/types/components/list-header/list-header.d.ts +1 -2
  844. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  845. package/dist/types/components/loading/loading.d.ts +2 -3
  846. package/dist/types/components/menu/menu.d.ts +0 -3
  847. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  848. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  849. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  850. package/dist/types/components/modal/modal-interface.d.ts +16 -4
  851. package/dist/types/components/modal/modal.d.ts +12 -15
  852. package/dist/types/components/nav/nav-interface.d.ts +1 -10
  853. package/dist/types/components/nav/nav.d.ts +3 -27
  854. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  855. package/dist/types/components/note/note.d.ts +1 -2
  856. package/dist/types/components/picker/picker.d.ts +1 -2
  857. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  858. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  859. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  860. package/dist/types/components/popover/popover.d.ts +5 -6
  861. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  862. package/dist/types/components/radio/radio.d.ts +1 -2
  863. package/dist/types/components/radio-group/radio-group.d.ts +0 -12
  864. package/dist/types/components/range/range.d.ts +1 -2
  865. package/dist/types/components/refresher/refresher.d.ts +1 -2
  866. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  867. package/dist/types/components/reorder/reorder.d.ts +0 -9
  868. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  869. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  870. package/dist/types/components/route/route.d.ts +1 -5
  871. package/dist/types/components/router/router.d.ts +0 -4
  872. package/dist/types/components/router-link/router-link.d.ts +0 -4
  873. package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
  874. package/dist/types/components/row/row.d.ts +0 -4
  875. package/dist/types/components/searchbar/searchbar.d.ts +11 -57
  876. package/dist/types/components/segment/segment.d.ts +1 -2
  877. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  878. package/dist/types/components/select/select.d.ts +14 -49
  879. package/dist/types/components/select-modal/select-modal.d.ts +0 -8
  880. package/dist/types/components/select-option/select-option.d.ts +4 -7
  881. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  882. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  883. package/dist/types/components/spinner/spinner.d.ts +0 -15
  884. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  885. package/dist/types/components/tab/tab.d.ts +0 -4
  886. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
  887. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
  888. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  889. package/dist/types/components/tabs/tabs.d.ts +0 -3
  890. package/dist/types/components/text/text.d.ts +1 -2
  891. package/dist/types/components/textarea/textarea.d.ts +4 -53
  892. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  893. package/dist/types/components/title/title.d.ts +0 -4
  894. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  895. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  896. package/dist/types/components/toast/toast.d.ts +2 -19
  897. package/dist/types/components/toggle/toggle.d.ts +1 -15
  898. package/dist/types/components/toolbar/toolbar.d.ts +3 -43
  899. package/dist/types/components.d.ts +263 -2171
  900. package/dist/types/global/ionic-global.d.ts +2 -28
  901. package/dist/types/index.d.ts +1 -1
  902. package/dist/types/interface.d.ts +0 -4
  903. package/dist/types/utils/config.d.ts +3 -114
  904. package/dist/types/utils/focus-trap.d.ts +1 -1
  905. package/dist/types/utils/focus-visible.d.ts +0 -13
  906. package/dist/types/utils/forms/index.d.ts +0 -1
  907. package/dist/types/utils/forms/validity.d.ts +0 -7
  908. package/dist/types/utils/helpers.d.ts +0 -22
  909. package/dist/types/utils/logging/index.d.ts +2 -1
  910. package/dist/types/utils/overlay-control-label.d.ts +9 -11
  911. package/dist/types/utils/overlays-interface.d.ts +1 -31
  912. package/dist/types/utils/overlays.d.ts +12 -10
  913. package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
  914. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  915. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  916. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  917. package/dist/types/utils/theme.d.ts +0 -9
  918. package/hydrate/index.js +10310 -12033
  919. package/hydrate/index.mjs +10310 -12033
  920. package/package.json +56 -17
  921. package/components/ion-divider.d.ts +0 -11
  922. package/components/ion-divider.js +0 -4
  923. package/components/ion-gallery-item.d.ts +0 -11
  924. package/components/ion-gallery-item.js +0 -4
  925. package/components/ion-gallery.d.ts +0 -11
  926. package/components/ion-gallery.js +0 -4
  927. package/components/ion-picker-legacy-column.d.ts +0 -11
  928. package/components/ion-picker-legacy-column.js +0 -4
  929. package/components/ion-picker-legacy.d.ts +0 -11
  930. package/components/ion-picker-legacy.js +0 -4
  931. package/components/p-6hUZIMBp.js +0 -4
  932. package/components/p-9mfpAwJh.js +0 -4
  933. package/components/p-B2aAAEfp.js +0 -4
  934. package/components/p-B2lpqDWK.js +0 -4
  935. package/components/p-BDoEcs72.js +0 -4
  936. package/components/p-BDqjX7Z_.js +0 -4
  937. package/components/p-BE21dB_a.js +0 -4
  938. package/components/p-BFpXpzD-.js +0 -4
  939. package/components/p-BTEOs1at.js +0 -4
  940. package/components/p-BUNIyvqe.js +0 -4
  941. package/components/p-BYSs-jZz.js +0 -4
  942. package/components/p-BYoGvMgh.js +0 -4
  943. package/components/p-BYrCPOBM.js +0 -4
  944. package/components/p-BbVhJs-a.js +0 -4
  945. package/components/p-BhRXIcSN.js +0 -4
  946. package/components/p-BjW8SOqw.js +0 -4
  947. package/components/p-BsiHrVPa.js +0 -4
  948. package/components/p-BwKpO3Is.js +0 -4
  949. package/components/p-Bz8jnuiy.js +0 -4
  950. package/components/p-C-Ea1l5K.js +0 -4
  951. package/components/p-C3X10Pc6.js +0 -4
  952. package/components/p-C53feagD.js +0 -4
  953. package/components/p-CH6jbAEI.js +0 -4
  954. package/components/p-CJE5t2qs.js +0 -4
  955. package/components/p-CODBQrPj.js +0 -4
  956. package/components/p-CUbb1HkU.js +0 -4
  957. package/components/p-CVYFPBs-.js +0 -4
  958. package/components/p-CVoLDZ7z.js +0 -4
  959. package/components/p-CZrORZXS.js +0 -4
  960. package/components/p-Cc3oC60a.js +0 -4
  961. package/components/p-Cl0B-RWe.js +0 -4
  962. package/components/p-CmoUesXp.js +0 -4
  963. package/components/p-CyNW8ypn.js +0 -4
  964. package/components/p-CzxyxYID.js +0 -4
  965. package/components/p-D0Iqw6OZ.js +0 -4
  966. package/components/p-D0LT3Z3i.js +0 -4
  967. package/components/p-D1t981Ih.js +0 -4
  968. package/components/p-D6tqrIYY.js +0 -4
  969. package/components/p-D9C5yWpF.js +0 -4
  970. package/components/p-DCRXgAoM.js +0 -4
  971. package/components/p-DL5wyRub.js +0 -4
  972. package/components/p-DQlXUUDh.js +0 -4
  973. package/components/p-DRWN7QM2.js +0 -4
  974. package/components/p-DaJxRxSQ.js +0 -4
  975. package/components/p-DbmfFkd1.js +0 -4
  976. package/components/p-Dhi5xtNS.js +0 -4
  977. package/components/p-DnwLgh9U.js +0 -4
  978. package/components/p-DoZB3DcY.js +0 -4
  979. package/components/p-DrrpZB81.js +0 -4
  980. package/components/p-DrzWRqnG.js +0 -4
  981. package/components/p-DylrHLJF.js +0 -4
  982. package/components/p-Dypq4kXE.js +0 -4
  983. package/components/p-DzeMJvWL.js +0 -4
  984. package/components/p-Dzk4Tr0X.js +0 -4
  985. package/components/p-Rkm2AOZ2.js +0 -4
  986. package/components/p-UYngqo1f.js +0 -4
  987. package/components/p-asUhrzOB.js +0 -4
  988. package/components/p-fIOYmaqA.js +0 -4
  989. package/components/p-jlwpz7Ms.js +0 -4
  990. package/components/p-kInyVu79.js +0 -4
  991. package/components/p-miSYSxcc.js +0 -4
  992. package/components/p-paDbTUL9.js +0 -4
  993. package/components/p-vXpMhGrs.js +0 -4
  994. package/components/p-znZTPd7u.js +0 -4
  995. package/css/ionic/bundle.ionic.css +0 -1
  996. package/css/ionic/bundle.ionic.css.map +0 -1
  997. package/css/ionic/core.ionic.css +0 -1
  998. package/css/ionic/core.ionic.css.map +0 -1
  999. package/css/ionic/global.bundle.ionic.css +0 -1
  1000. package/css/ionic/global.bundle.ionic.css.map +0 -1
  1001. package/css/ionic/ionic-swiper.ionic.css +0 -1
  1002. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  1003. package/css/ionic/link.ionic.css +0 -1
  1004. package/css/ionic/link.ionic.css.map +0 -1
  1005. package/css/ionic/structure.ionic.css +0 -1
  1006. package/css/ionic/structure.ionic.css.map +0 -1
  1007. package/css/ionic/typography.ionic.css +0 -1
  1008. package/css/ionic/typography.ionic.css.map +0 -1
  1009. package/css/ionic/utils.bundle.ionic.css +0 -1
  1010. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  1011. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  1012. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  1013. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  1014. package/dist/cjs/clear-button-press-controller-2hAy_qdm.js +0 -45
  1015. package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3242
  1016. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  1017. package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
  1018. package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
  1019. package/dist/cjs/ionic-global-DvEcO0tQ.js +0 -519
  1020. package/dist/cjs/list-a-7GSA6K.js +0 -8
  1021. package/dist/cjs/scroll-hide-controller-DAf_DwKc.js +0 -345
  1022. package/dist/cjs/validity-QmuwEptc.js +0 -51
  1023. package/dist/cjs/x-BTF99yFH.js +0 -8
  1024. package/dist/collection/components/accordion/accordion.ionic.css +0 -201
  1025. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  1026. package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
  1027. package/dist/collection/components/alert/alert.ionic.css +0 -787
  1028. package/dist/collection/components/avatar/avatar.ionic.css +0 -385
  1029. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  1030. package/dist/collection/components/badge/badge.ionic.css +0 -272
  1031. package/dist/collection/components/button/button.ionic.css +0 -644
  1032. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  1033. package/dist/collection/components/card/card.ionic.css +0 -144
  1034. package/dist/collection/components/card-content/card-content.ionic.css +0 -89
  1035. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  1036. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  1037. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
  1038. package/dist/collection/components/chip/chip.ionic.css +0 -217
  1039. package/dist/collection/components/datetime/datetime.ionic.css +0 -703
  1040. package/dist/collection/components/divider/divider.ionic.css +0 -148
  1041. package/dist/collection/components/divider/divider.ios.css +0 -87
  1042. package/dist/collection/components/divider/divider.js +0 -94
  1043. package/dist/collection/components/divider/divider.md.css +0 -87
  1044. package/dist/collection/components/footer/footer-interface.js +0 -1
  1045. package/dist/collection/components/gallery/gallery-constants.js +0 -12
  1046. package/dist/collection/components/gallery/gallery-interface.js +0 -1
  1047. package/dist/collection/components/gallery/gallery.css +0 -15
  1048. package/dist/collection/components/gallery/gallery.js +0 -679
  1049. package/dist/collection/components/gallery/test/utils.js +0 -100
  1050. package/dist/collection/components/gallery-item/gallery-item.css +0 -49
  1051. package/dist/collection/components/gallery-item/gallery-item.js +0 -99
  1052. package/dist/collection/components/header/header-interface.js +0 -1
  1053. package/dist/collection/components/header/header.ionic.css +0 -250
  1054. package/dist/collection/components/input/input.ionic.css +0 -891
  1055. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
  1056. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  1057. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  1058. package/dist/collection/components/item/item.ionic.css +0 -496
  1059. package/dist/collection/components/item-option/item-option.ionic.css +0 -277
  1060. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  1061. package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
  1062. package/dist/collection/components/list/list.ionic.css +0 -212
  1063. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  1064. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  1065. package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
  1066. package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
  1067. package/dist/collection/components/modal/modal.ionic.css +0 -255
  1068. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  1069. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  1070. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  1071. package/dist/collection/components/picker-legacy/picker.ios.css +0 -312
  1072. package/dist/collection/components/picker-legacy/picker.js +0 -891
  1073. package/dist/collection/components/picker-legacy/picker.md.css +0 -299
  1074. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -243
  1075. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  1076. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -234
  1077. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  1078. package/dist/collection/components/popover/popover.ionic.css +0 -290
  1079. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  1080. package/dist/collection/components/radio/radio.ionic.css +0 -422
  1081. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  1082. package/dist/collection/components/range/range.ionic.css +0 -567
  1083. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  1084. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
  1085. package/dist/collection/components/segment/segment.ionic.css +0 -115
  1086. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
  1087. package/dist/collection/components/select/select.ionic.css +0 -809
  1088. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
  1089. package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
  1090. package/dist/collection/components/spinner/spinner.native.css +0 -199
  1091. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
  1092. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
  1093. package/dist/collection/components/textarea/textarea.ionic.css +0 -898
  1094. package/dist/collection/components/title/title.ionic.css +0 -127
  1095. package/dist/collection/components/toast/toast.ionic.css +0 -394
  1096. package/dist/collection/components/toggle/toggle.ionic.css +0 -512
  1097. package/dist/collection/components/toolbar/test/image.svg +0 -1
  1098. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
  1099. package/dist/collection/utils/css-value-validation.js +0 -39
  1100. package/dist/collection/utils/forms/clear-button-press-controller.js +0 -40
  1101. package/dist/collection/utils/scroll-hide-controller.js +0 -178
  1102. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  1103. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  1104. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  1105. package/dist/esm/clear-button-press-controller-C79TPm5p.js +0 -43
  1106. package/dist/esm/ion-datetime_3.entry.js +0 -3238
  1107. package/dist/esm/ion-divider.entry.js +0 -49
  1108. package/dist/esm/ion-gallery-item.entry.js +0 -57
  1109. package/dist/esm/ion-gallery.entry.js +0 -605
  1110. package/dist/esm/ionic-global-CEwbmRLz.js +0 -508
  1111. package/dist/esm/list-Dhi5xtNS.js +0 -6
  1112. package/dist/esm/scroll-hide-controller-CfbtPBWv.js +0 -342
  1113. package/dist/esm/theme-DaJxRxSQ.js +0 -67
  1114. package/dist/esm/validity-BjW8SOqw.js +0 -48
  1115. package/dist/esm/x-BDqjX7Z_.js +0 -6
  1116. package/dist/ionic/p--sroV-k-.js +0 -4
  1117. package/dist/ionic/p-00731d20.entry.js +0 -4
  1118. package/dist/ionic/p-03c20a50.entry.js +0 -4
  1119. package/dist/ionic/p-03ec6673.entry.js +0 -4
  1120. package/dist/ionic/p-0405ec57.entry.js +0 -4
  1121. package/dist/ionic/p-04f16322.entry.js +0 -4
  1122. package/dist/ionic/p-09123f89.entry.js +0 -4
  1123. package/dist/ionic/p-15028853.entry.js +0 -4
  1124. package/dist/ionic/p-16c5db90.entry.js +0 -4
  1125. package/dist/ionic/p-1d1dfb68.entry.js +0 -4
  1126. package/dist/ionic/p-231572a0.entry.js +0 -4
  1127. package/dist/ionic/p-2740db6e.entry.js +0 -4
  1128. package/dist/ionic/p-2a6d4601.entry.js +0 -4
  1129. package/dist/ionic/p-2d8fe33c.entry.js +0 -4
  1130. package/dist/ionic/p-2dbc50d9.entry.js +0 -4
  1131. package/dist/ionic/p-32d3095c.entry.js +0 -4
  1132. package/dist/ionic/p-356cd619.entry.js +0 -4
  1133. package/dist/ionic/p-391bdb60.entry.js +0 -4
  1134. package/dist/ionic/p-3b2ab5b4.entry.js +0 -4
  1135. package/dist/ionic/p-4e3e750a.entry.js +0 -4
  1136. package/dist/ionic/p-4fee0df6.entry.js +0 -4
  1137. package/dist/ionic/p-547d010c.entry.js +0 -4
  1138. package/dist/ionic/p-54895118.entry.js +0 -4
  1139. package/dist/ionic/p-6163d04d.entry.js +0 -4
  1140. package/dist/ionic/p-679c1448.entry.js +0 -4
  1141. package/dist/ionic/p-6de524e5.entry.js +0 -4
  1142. package/dist/ionic/p-764d7ea2.entry.js +0 -4
  1143. package/dist/ionic/p-7k7Q1A38.js +0 -4
  1144. package/dist/ionic/p-81BMEE8Q.js +0 -4
  1145. package/dist/ionic/p-8d6d7acb.entry.js +0 -4
  1146. package/dist/ionic/p-96732fe2.entry.js +0 -4
  1147. package/dist/ionic/p-96c4c1b9.entry.js +0 -4
  1148. package/dist/ionic/p-9745f518.entry.js +0 -4
  1149. package/dist/ionic/p-9a40af3c.entry.js +0 -4
  1150. package/dist/ionic/p-9e725104.entry.js +0 -4
  1151. package/dist/ionic/p-B4Kq2YNk.js +0 -4
  1152. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  1153. package/dist/ionic/p-BTEOs1at.js +0 -4
  1154. package/dist/ionic/p-BYSs-jZz.js +0 -4
  1155. package/dist/ionic/p-BbWo-T8F.js +0 -4
  1156. package/dist/ionic/p-BjW8SOqw.js +0 -4
  1157. package/dist/ionic/p-Bvz8PHo5.js +0 -4
  1158. package/dist/ionic/p-BwKpO3Is.js +0 -4
  1159. package/dist/ionic/p-C0EQceqV.js +0 -5
  1160. package/dist/ionic/p-C1_a9uRb.js +0 -4
  1161. package/dist/ionic/p-C53feagD.js +0 -4
  1162. package/dist/ionic/p-C6WD6qSF.js +0 -4
  1163. package/dist/ionic/p-C7urd_wE.js +0 -4
  1164. package/dist/ionic/p-CCgRIJJv.js +0 -4
  1165. package/dist/ionic/p-CEkwLb3L.js +0 -4
  1166. package/dist/ionic/p-CGFf6My7.js +0 -4
  1167. package/dist/ionic/p-CLUwRxij.js +0 -4
  1168. package/dist/ionic/p-CODBQrPj.js +0 -4
  1169. package/dist/ionic/p-CP_sVwEm.js +0 -4
  1170. package/dist/ionic/p-CSMWpRc0.js +0 -4
  1171. package/dist/ionic/p-CYYo93al.js +0 -4
  1172. package/dist/ionic/p-Cipl19Qe.js +0 -4
  1173. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  1174. package/dist/ionic/p-Cvvva6Z7.js +0 -4
  1175. package/dist/ionic/p-D1t981Ih.js +0 -4
  1176. package/dist/ionic/p-DINFwXlp.js +0 -4
  1177. package/dist/ionic/p-DIvCXVmD.js +0 -4
  1178. package/dist/ionic/p-DTsDGZPd.js +0 -4
  1179. package/dist/ionic/p-DaJxRxSQ.js +0 -4
  1180. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  1181. package/dist/ionic/p-DtQgCTtW.js +0 -4
  1182. package/dist/ionic/p-DuRx6DeQ.js +0 -4
  1183. package/dist/ionic/p-YGLqXqFd.js +0 -4
  1184. package/dist/ionic/p-YIsE5bNG.js +0 -4
  1185. package/dist/ionic/p-a61c2ace.entry.js +0 -4
  1186. package/dist/ionic/p-abb516e3.entry.js +0 -4
  1187. package/dist/ionic/p-b54edee6.entry.js +0 -4
  1188. package/dist/ionic/p-c076ac5c.entry.js +0 -4
  1189. package/dist/ionic/p-c4ff25cb.entry.js +0 -4
  1190. package/dist/ionic/p-c7279756.entry.js +0 -4
  1191. package/dist/ionic/p-c7ebed50.entry.js +0 -4
  1192. package/dist/ionic/p-cd0037e4.entry.js +0 -4
  1193. package/dist/ionic/p-d261938d.entry.js +0 -4
  1194. package/dist/ionic/p-d33dfc12.entry.js +0 -4
  1195. package/dist/ionic/p-d7764330.entry.js +0 -4
  1196. package/dist/ionic/p-defb23a2.entry.js +0 -4
  1197. package/dist/ionic/p-df642ef5.entry.js +0 -4
  1198. package/dist/ionic/p-e2a35249.entry.js +0 -4
  1199. package/dist/ionic/p-e2b952ef.entry.js +0 -4
  1200. package/dist/ionic/p-e77cfd1e.entry.js +0 -4
  1201. package/dist/ionic/p-ecb9d3d3.entry.js +0 -4
  1202. package/dist/ionic/p-efd13adf.entry.js +0 -4
  1203. package/dist/ionic/p-f0904c1d.entry.js +0 -4
  1204. package/dist/ionic/p-f33689f7.entry.js +0 -4
  1205. package/dist/ionic/p-f693efe9.entry.js +0 -4
  1206. package/dist/ionic/p-f788396b.entry.js +0 -4
  1207. package/dist/ionic/p-fIOYmaqA.js +0 -4
  1208. package/dist/ionic/p-fa16fad8.entry.js +0 -4
  1209. package/dist/ionic/p-lMb_45ax.js +0 -4
  1210. package/dist/ionic/p-oadJNPuo.js +0 -4
  1211. package/dist/ionic/p-vXpMhGrs.js +0 -4
  1212. package/dist/ionic/p-wNjWCZVO.js +0 -4
  1213. package/dist/types/components/divider/divider.d.ts +0 -20
  1214. package/dist/types/components/footer/footer-interface.d.ts +0 -1
  1215. package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
  1216. package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
  1217. package/dist/types/components/gallery/gallery.d.ts +0 -218
  1218. package/dist/types/components/gallery/test/utils.d.ts +0 -3
  1219. package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
  1220. package/dist/types/components/header/header-interface.d.ts +0 -1
  1221. package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
  1222. package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
  1223. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  1224. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  1225. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  1226. package/dist/types/components/picker-legacy/picker.d.ts +0 -159
  1227. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  1228. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  1229. package/dist/types/utils/css-value-validation.d.ts +0 -21
  1230. package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
  1231. package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
  1232. /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
@@ -3,23 +3,24 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index$2 = require('./index-C1knGA9x.js');
7
- var index = require('./index-DRFkZu3V.js');
8
- var frameworkDelegate = require('./framework-delegate-CJT_QJQI.js');
9
- var helpers = require('./helpers-Fh1iXsX9.js');
6
+ var index$3 = require('./index-uvry__L4.js');
7
+ var index$1 = require('./index-D48vawBq.js');
8
+ var frameworkDelegate = require('./framework-delegate-NTLQ5YzV.js');
9
+ var helpers = require('./helpers-CaLhEmTE.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
- var capacitor = require('./capacitor-BixsAzyb.js');
12
- var overlays = require('./overlays-DYBUkNQu.js');
13
- var theme = require('./theme-IlOsGAz7.js');
14
- var index$3 = require('./index-D94mERjz.js');
15
- var ionicGlobal = require('./ionic-global-DvEcO0tQ.js');
16
- var keyboard = require('./keyboard-nne7rvBK.js');
17
- var animation = require('./animation-qlGmEn5Y.js');
11
+ var capacitor = require('./capacitor-DmA66EwP.js');
12
+ var overlays = require('./overlays-IlP4H2Gn.js');
13
+ var theme = require('./theme-Bw0rpaNN.js');
14
+ var index$4 = require('./index-Ck9advCT.js');
15
+ var ionicGlobal = require('./ionic-global-k6hOWWpn.js');
16
+ var keyboard = require('./keyboard-Cix5TVkD.js');
17
+ var animation = require('./animation-C0mOHzej.js');
18
18
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
19
- var index$1 = require('./index-CAvQ7Tka.js');
20
- require('./focus-visible-BIj-I3-C.js');
21
- require('./gesture-controller-dtqlP_q4.js');
22
- require('./keyboard-BbZXOwZg.js');
19
+ var index$2 = require('./index-P1nQxrpZ.js');
20
+ var index = require('./index-DkNv4J_i.js');
21
+ require('./hardware-back-button-fqpYh-kd.js');
22
+ require('./gesture-controller-BDUH7687.js');
23
+ require('./keyboard-cHxZlTyz.js');
23
24
 
24
25
  var Style;
25
26
  (function (Style) {
@@ -30,7 +31,7 @@ var Style;
30
31
  const StatusBar = {
31
32
  getEngine() {
32
33
  const capacitor$1 = capacitor.getCapacitor();
33
- if (capacitor$1 === null || capacitor$1 === void 0 ? void 0 : capacitor$1.isPluginAvailable('StatusBar')) {
34
+ if (capacitor$1?.isPluginAvailable('StatusBar')) {
34
35
  return capacitor$1.Plugins.StatusBar;
35
36
  }
36
37
  return undefined;
@@ -116,116 +117,18 @@ const getBackdropValueForSheet = (x, backdropBreakpoint) => {
116
117
  *
117
118
  */
118
119
  const setCardStatusBarDark = () => {
119
- if (!ionicGlobal.win || ionicGlobal.win.innerWidth >= 768) {
120
+ if (!index.win || index.win.innerWidth >= 768) {
120
121
  return;
121
122
  }
122
123
  StatusBar.setStyle({ style: Style.Dark });
123
124
  };
124
125
  const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
125
- if (!ionicGlobal.win || ionicGlobal.win.innerWidth >= 768) {
126
+ if (!index.win || index.win.innerWidth >= 768) {
126
127
  return;
127
128
  }
128
129
  StatusBar.setStyle({ style: defaultStyle });
129
130
  };
130
131
 
131
- const createSheetEnterAnimation = (opts) => {
132
- const { currentBreakpoint, backdropBreakpoint, expandToScroll, staticBackdropOpacity } = opts;
133
- /**
134
- * If the backdropBreakpoint is undefined, then the backdrop
135
- * should always fade in. If the backdropBreakpoint came before the
136
- * current breakpoint, then the backdrop should be fading in.
137
- */
138
- const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;
139
- let initialBackdrop = '0';
140
- if (staticBackdropOpacity) {
141
- initialBackdrop = 'calc(var(--backdrop-opacity)';
142
- }
143
- else if (shouldShowBackdrop) {
144
- initialBackdrop = `calc(var(--backdrop-opacity) * ${currentBreakpoint})`;
145
- }
146
- const backdropAnimation = animation.createAnimation('backdropAnimation').fromTo('opacity', 0, initialBackdrop);
147
- if (shouldShowBackdrop) {
148
- backdropAnimation
149
- .beforeStyles({
150
- 'pointer-events': 'none',
151
- })
152
- .afterClearStyles(['pointer-events']);
153
- }
154
- const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
155
- { offset: 0, opacity: 1, transform: 'translateY(100%)' },
156
- { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
157
- ]);
158
- /**
159
- * This allows the content to be scrollable at any breakpoint.
160
- */
161
- const contentAnimation = !expandToScroll
162
- ? animation.createAnimation('contentAnimation').keyframes([
163
- { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
164
- { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
165
- ])
166
- : undefined;
167
- return { wrapperAnimation, backdropAnimation, contentAnimation };
168
- };
169
- const createSheetLeaveAnimation = (opts) => {
170
- const { currentBreakpoint, backdropBreakpoint } = opts;
171
- /**
172
- * Backdrop does not always fade in from 0 to 1 if backdropBreakpoint
173
- * is defined, so we need to account for that offset by figuring out
174
- * what the current backdrop value should be.
175
- */
176
- const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;
177
- const defaultBackdrop = [
178
- { offset: 0, opacity: backdropValue },
179
- { offset: 1, opacity: 0 },
180
- ];
181
- const customBackdrop = [
182
- { offset: 0, opacity: backdropValue },
183
- { offset: backdropBreakpoint, opacity: 0 },
184
- { offset: 1, opacity: 0 },
185
- ];
186
- const backdropAnimation = animation.createAnimation('backdropAnimation').keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);
187
- const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
188
- { offset: 0, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
189
- { offset: 1, opacity: 1, transform: `translateY(100%)` },
190
- ]);
191
- return { wrapperAnimation, backdropAnimation };
192
- };
193
-
194
- const createEnterAnimation$2 = () => {
195
- const backdropAnimation = animation.createAnimation()
196
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
197
- .beforeStyles({
198
- 'pointer-events': 'none',
199
- })
200
- .afterClearStyles(['pointer-events']);
201
- const wrapperAnimation = animation.createAnimation().keyframes([
202
- { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
203
- { offset: 1, opacity: 1, transform: `translateY(0px)` },
204
- ]);
205
- return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
206
- };
207
- /**
208
- * Ionic Modal Enter Animation
209
- */
210
- const ionicEnterAnimation = (baseEl, opts) => {
211
- const { currentBreakpoint, expandToScroll } = opts;
212
- const root = helpers.getElementRoot(baseEl);
213
- const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$2();
214
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
215
- wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
216
- // The content animation is only added if scrolling is enabled for
217
- // all the breakpoints.
218
- !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
219
- backdropAnimation.duration(300).easing('ease-out');
220
- wrapperAnimation.duration(400).easing('cubic-bezier(0.32, 0.68, 0, 1)');
221
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.duration(400).easing('cubic-bezier(0.32, 0.68, 0, 1)');
222
- const baseAnimation = animation.createAnimation().addElement(baseEl).addAnimation([backdropAnimation, wrapperAnimation]);
223
- if (contentAnimation) {
224
- baseAnimation.addAnimation(contentAnimation);
225
- }
226
- return baseAnimation;
227
- };
228
-
229
132
  /**
230
133
  * Swiping is only possible when the content is scrolled to the top, so that we
231
134
  * do not interfere with scrolling, and never on content with a refresher.
@@ -237,8 +140,8 @@ const ionicEnterAnimation = (baseEl, opts) => {
237
140
  * synchronous operation, and `getScrollElement` is asynchronous.
238
141
  */
239
142
  const canSwipeOnContent = (contentEl) => {
240
- const scrollEl = index.isIonContent(contentEl) ? helpers.getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
241
- const hasRefresherInContent = !!index.findRefresherInContent(contentEl);
143
+ const scrollEl = index$1.isIonContent(contentEl) ? helpers.getElementRoot(contentEl).querySelector('.inner-scroll') : contentEl;
144
+ const hasRefresherInContent = !!index$1.findRefresherInContent(contentEl);
242
145
  return !hasRefresherInContent && scrollEl.scrollTop === 0;
243
146
  };
244
147
  const handleCanDismiss = async (el, animation) => {
@@ -375,7 +278,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
375
278
  let initialScrollY = true;
376
279
  let lastStep = 0;
377
280
  const getScrollY = () => {
378
- if (contentEl && index.isIonContent(contentEl)) {
281
+ if (contentEl && index$1.isIonContent(contentEl)) {
379
282
  return contentEl.scrollY;
380
283
  /**
381
284
  * Custom scroll containers are intended to be
@@ -401,7 +304,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
401
304
  * swipe again. The target content will not
402
305
  * be the same between swipes.
403
306
  */
404
- contentEl = index.findClosestIonContent(target);
307
+ contentEl = index$1.findClosestIonContent(target);
405
308
  if (contentEl) {
406
309
  return canSwipeOnContent(contentEl);
407
310
  }
@@ -416,14 +319,13 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
416
319
  return false;
417
320
  };
418
321
  const onStart = (detail) => {
419
- var _a;
420
322
  const { deltaY } = detail;
421
323
  /**
422
324
  * Firefox automatically selects the header text during drag
423
325
  * due to the focusable wrapper (tabindex="-1"). Remove any
424
326
  * selection that may have occurred.
425
327
  */
426
- (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
328
+ window.getSelection()?.removeAllRanges();
427
329
  /**
428
330
  * Get the initial scrollY value so
429
331
  * that we can correctly reset the scrollY
@@ -446,7 +348,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
446
348
  * happen at the same time as the gesture.
447
349
  */
448
350
  if (deltaY > 0 && contentEl) {
449
- index.disableContentScrollY(contentEl);
351
+ index$1.disableContentScrollY(contentEl);
450
352
  }
451
353
  animation.progressStart(true, isOpen ? 1 : 0);
452
354
  onDragStart();
@@ -460,7 +362,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
460
362
  * happen at the same time as the gesture.
461
363
  */
462
364
  if (deltaY > 0 && contentEl) {
463
- index.disableContentScrollY(contentEl);
365
+ index$1.disableContentScrollY(contentEl);
464
366
  }
465
367
  /**
466
368
  * If we are swiping on the content
@@ -555,7 +457,7 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
555
457
  isOpen = shouldComplete;
556
458
  gesture.enable(false);
557
459
  if (contentEl) {
558
- index.resetContentScrollY(contentEl, initialScrollY);
460
+ index$1.resetContentScrollY(contentEl, initialScrollY);
559
461
  }
560
462
  animation
561
463
  .onFinish(() => {
@@ -576,21 +478,34 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onD
576
478
  * check canDismiss. 25% was chosen
577
479
  * to avoid accidental swipes.
578
480
  */
579
- if (isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4) {
481
+ const isAttemptingCanDismiss = isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4;
482
+ if (isAttemptingCanDismiss) {
580
483
  handleCanDismiss(el, animation);
581
484
  }
582
485
  else if (shouldComplete) {
583
486
  onDismiss();
584
487
  }
488
+ /**
489
+ * `shouldComplete` is not enough on its own, since it is always `false`
490
+ * when canDismiss blocks the gesture. `canDismiss: false` blocks it and
491
+ * never dismisses, because `handleCanDismiss` returns early when
492
+ * canDismiss is not a function. A canDismiss function dismisses through
493
+ * `handleCanDismiss`, which awaits the callback, so the outcome is not
494
+ * known when this event is emitted.
495
+ */
496
+ const isDismissing = isAttemptingDismissWithCanDismiss
497
+ ? isAttemptingCanDismiss && typeof el.canDismiss === 'function'
498
+ : shouldComplete;
585
499
  const eventDetail = {
586
500
  currentY: detail.currentY,
587
501
  deltaY: detail.deltaY,
588
502
  velocityY: detail.velocityY,
589
503
  progress: calculateProgress(el, detail.deltaY),
504
+ isDismissing,
590
505
  };
591
506
  onDragEnd(eventDetail);
592
507
  };
593
- const gesture = index$1.createGesture({
508
+ const gesture = index$2.createGesture({
594
509
  el,
595
510
  gestureName: 'modalSwipeToClose',
596
511
  gesturePriority: overlays.OVERLAY_GESTURE_PRIORITY,
@@ -645,6 +560,63 @@ const calculateProgress = (el, deltaY) => {
645
560
  return Math.max(0, Math.min(1, roundedProgress));
646
561
  };
647
562
 
563
+ const createSheetEnterAnimation = (opts) => {
564
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
565
+ /**
566
+ * If the backdropBreakpoint is undefined, then the backdrop
567
+ * should always fade in. If the backdropBreakpoint came before the
568
+ * current breakpoint, then the backdrop should be fading in.
569
+ */
570
+ const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;
571
+ const initialBackdrop = shouldShowBackdrop ? `calc(var(--backdrop-opacity) * ${currentBreakpoint})` : '0';
572
+ const backdropAnimation = animation.createAnimation('backdropAnimation').fromTo('opacity', 0, initialBackdrop);
573
+ if (shouldShowBackdrop) {
574
+ backdropAnimation
575
+ .beforeStyles({
576
+ 'pointer-events': 'none',
577
+ })
578
+ .afterClearStyles(['pointer-events']);
579
+ }
580
+ const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
581
+ { offset: 0, opacity: 1, transform: 'translateY(100%)' },
582
+ { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
583
+ ]);
584
+ /**
585
+ * This allows the content to be scrollable at any breakpoint.
586
+ */
587
+ const contentAnimation = !expandToScroll
588
+ ? animation.createAnimation('contentAnimation').keyframes([
589
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
590
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
591
+ ])
592
+ : undefined;
593
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
594
+ };
595
+ const createSheetLeaveAnimation = (opts) => {
596
+ const { currentBreakpoint, backdropBreakpoint } = opts;
597
+ /**
598
+ * Backdrop does not always fade in from 0 to 1 if backdropBreakpoint
599
+ * is defined, so we need to account for that offset by figuring out
600
+ * what the current backdrop value should be.
601
+ */
602
+ const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;
603
+ const defaultBackdrop = [
604
+ { offset: 0, opacity: backdropValue },
605
+ { offset: 1, opacity: 0 },
606
+ ];
607
+ const customBackdrop = [
608
+ { offset: 0, opacity: backdropValue },
609
+ { offset: backdropBreakpoint, opacity: 0 },
610
+ { offset: 1, opacity: 0 },
611
+ ];
612
+ const backdropAnimation = animation.createAnimation('backdropAnimation').keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);
613
+ const wrapperAnimation = animation.createAnimation('wrapperAnimation').keyframes([
614
+ { offset: 0, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
615
+ { offset: 1, opacity: 1, transform: `translateY(100%)` },
616
+ ]);
617
+ return { wrapperAnimation, backdropAnimation };
618
+ };
619
+
648
620
  const createEnterAnimation$1 = () => {
649
621
  const backdropAnimation = animation.createAnimation()
650
622
  .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
@@ -666,7 +638,7 @@ const iosEnterAnimation = (baseEl, opts) => {
666
638
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
667
639
  // The content animation is only added if scrolling is enabled for
668
640
  // all the breakpoints.
669
- !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
641
+ !expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page'));
670
642
  const baseAnimation = animation.createAnimation('entering-base')
671
643
  .addElement(baseEl)
672
644
  .easing('cubic-bezier(0.32,0.72,0,1)')
@@ -999,7 +971,7 @@ const mdEnterAnimation = (baseEl, opts) => {
999
971
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
1000
972
  // The content animation is only added if scrolling is enabled for
1001
973
  // all the breakpoints.
1002
- !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
974
+ !expandToScroll && contentAnimation?.addElement(baseEl.querySelector('.ion-page'));
1003
975
  const baseAnimation = animation.createAnimation()
1004
976
  .addElement(baseEl)
1005
977
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
@@ -1035,17 +1007,16 @@ const mdLeaveAnimation = (baseEl, opts) => {
1035
1007
  return baseAnimation;
1036
1008
  };
1037
1009
 
1038
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, usePhysicsBasedGesture, onDragStart, onDragMove, onDragEnd) => {
1039
- var _a;
1010
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, onDragStart, onDragMove, onDragEnd) => {
1040
1011
  // Defaults for the sheet swipe animation
1041
1012
  const defaultBackdrop = [
1042
1013
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
1043
- { offset: 1, opacity: usePhysicsBasedGesture ? 'var(--backdrop-opacity)' : 0.01 },
1014
+ { offset: 1, opacity: 0.01 },
1044
1015
  ];
1045
1016
  const customBackdrop = [
1046
1017
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
1047
- { offset: 1 - backdropBreakpoint, opacity: usePhysicsBasedGesture ? 'var(--backdrop-opacity)' : 0 },
1048
- { offset: 1, opacity: usePhysicsBasedGesture ? 'var(--backdrop-opacity)' : 0 },
1018
+ { offset: 1 - backdropBreakpoint, opacity: 0 },
1019
+ { offset: 1, opacity: 0 },
1049
1020
  ];
1050
1021
  const SheetDefaults = {
1051
1022
  WRAPPER_KEYFRAMES: [
@@ -1060,7 +1031,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1060
1031
  };
1061
1032
  const contentEl = baseEl.querySelector('ion-content');
1062
1033
  // Cache the initial value so the gesture restores it instead of forcing scrolling on.
1063
- const initialContentScrollY = (_a = contentEl === null || contentEl === void 0 ? void 0 : contentEl.scrollY) !== null && _a !== void 0 ? _a : true;
1034
+ const initialContentScrollY = contentEl?.scrollY ?? true;
1064
1035
  const height = wrapperEl.clientHeight;
1065
1036
  let currentBreakpoint = initialBreakpoint;
1066
1037
  let offset = 0;
@@ -1126,9 +1097,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1126
1097
  cachedFooterEl.style.removeProperty('height');
1127
1098
  cachedFooterEl.style.removeProperty('top');
1128
1099
  cachedFooterEl.style.removeProperty('left');
1129
- page === null || page === void 0 ? void 0 : page.style.removeProperty('padding-bottom');
1100
+ page?.style.removeProperty('padding-bottom');
1130
1101
  // Move to page
1131
- page === null || page === void 0 ? void 0 : page.appendChild(cachedFooterEl);
1102
+ page?.appendChild(cachedFooterEl);
1132
1103
  });
1133
1104
  }
1134
1105
  else {
@@ -1172,7 +1143,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1172
1143
  // when the footer is positioned absolutely. This has to be done before we
1173
1144
  // make the footer absolutely positioned or we may accidentally cause the
1174
1145
  // sheet to scroll.
1175
- page === null || page === void 0 ? void 0 : page.style.setProperty('padding-bottom', `${footerHeights}px`);
1146
+ page?.style.setProperty('padding-bottom', `${footerHeights}px`);
1176
1147
  // Apply positioning styles to keep footer at bottom
1177
1148
  cachedFooterEl.classList.add('modal-footer-moving');
1178
1149
  // Apply our preserved styles to pin the footer
@@ -1197,7 +1168,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1197
1168
  if (wrapperAnimation && backdropAnimation) {
1198
1169
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1199
1170
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1200
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1171
+ contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1201
1172
  animation.progressStart(true, 1 - currentBreakpoint);
1202
1173
  /**
1203
1174
  * If backdrop is not enabled, then content
@@ -1225,7 +1196,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1225
1196
  * For example, when using ion-nav within a modal it is possible to swipe, push a view,
1226
1197
  * and then swipe again. The target content will not be the same between swipes.
1227
1198
  */
1228
- const contentEl = index.findClosestIonContent(detail.event.target);
1199
+ const contentEl = index$1.findClosestIonContent(detail.event.target);
1229
1200
  currentBreakpoint = getCurrentBreakpoint();
1230
1201
  /**
1231
1202
  * Upwards swipes on the content cannot move the sheet anyway, so this only
@@ -1237,13 +1208,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1237
1208
  return true;
1238
1209
  };
1239
1210
  const onStart = (detail) => {
1240
- var _a;
1241
1211
  /**
1242
1212
  * Firefox automatically selects the header text during drag
1243
1213
  * due to the focusable wrapper (tabindex="-1"). Remove any
1244
1214
  * selection that may have occurred.
1245
1215
  */
1246
- (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
1216
+ window.getSelection()?.removeAllRanges();
1247
1217
  /**
1248
1218
  * If canDismiss is anything other than `true`
1249
1219
  * then users should be able to swipe down
@@ -1263,9 +1233,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1263
1233
  * which would impact performance significantly.
1264
1234
  */
1265
1235
  if (!expandToScroll) {
1266
- const targetEl = index.findClosestIonContent(detail.event.target);
1236
+ const targetEl = index$1.findClosestIonContent(detail.event.target);
1267
1237
  cachedScrollEl =
1268
- targetEl && index.isIonContent(targetEl) ? helpers.getElementRoot(targetEl).querySelector('.inner-scroll') : targetEl;
1238
+ targetEl && index$1.isIonContent(targetEl) ? helpers.getElementRoot(targetEl).querySelector('.inner-scroll') : targetEl;
1269
1239
  }
1270
1240
  /**
1271
1241
  * If expandToScroll is disabled, we need to swap
@@ -1359,9 +1329,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1359
1329
  : step;
1360
1330
  offset = helpers.clamp(0.0001, processedStep, maxStep);
1361
1331
  animation.progressStep(offset);
1362
- const snapBreakpoint = usePhysicsBasedGesture
1363
- ? calculateVelocitySnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
1364
- : calculatePositionSnapBreakpoint(detail.deltaY);
1332
+ const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
1365
1333
  const eventDetail = {
1366
1334
  currentY: detail.currentY,
1367
1335
  deltaY: detail.deltaY,
@@ -1372,15 +1340,23 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1372
1340
  onDragMove(eventDetail);
1373
1341
  };
1374
1342
  const onEnd = (detail) => {
1375
- const snapBreakpoint = usePhysicsBasedGesture
1376
- ? calculateVelocitySnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
1377
- : calculatePositionSnapBreakpoint(detail.deltaY);
1343
+ const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
1344
+ /**
1345
+ * `snapBreakpoint === 0` is not enough on its own. `canDismiss: false`
1346
+ * snaps to 0 but never dismisses, since `handleCanDismiss` returns early
1347
+ * when canDismiss is not a function. A canDismiss function dismisses
1348
+ * through `handleCanDismiss`, which awaits the callback, so the outcome
1349
+ * is not known when this event is emitted.
1350
+ */
1351
+ const shouldPreventDismiss = canDismissBlocksGesture && snapBreakpoint === 0;
1352
+ const isDismissing = shouldPreventDismiss ? typeof baseEl.canDismiss === 'function' : snapBreakpoint === 0;
1378
1353
  const eventDetail = {
1379
1354
  currentY: detail.currentY,
1380
1355
  deltaY: detail.deltaY,
1381
1356
  velocityY: detail.velocityY,
1382
1357
  progress: calculateProgress(detail.currentY),
1383
1358
  snapBreakpoint,
1359
+ isDismissing,
1384
1360
  };
1385
1361
  /**
1386
1362
  * If expandToScroll is disabled, we should not allow the moveSheetToBreakpoint
@@ -1396,7 +1372,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1396
1372
  * swap to moving on drag and if we don't swap back here then the footer will get stuck.
1397
1373
  */
1398
1374
  swapFooterPosition('stationary');
1399
- onDragEnd(eventDetail);
1375
+ /**
1376
+ * The sheet does not move in this case, so the gesture
1377
+ * never dismisses the modal.
1378
+ */
1379
+ onDragEnd({ ...eventDetail, isDismissing: false });
1400
1380
  return;
1401
1381
  }
1402
1382
  moveSheetToBreakpoint({
@@ -1421,14 +1401,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1421
1401
  */
1422
1402
  const shouldPreventDismiss = canDismiss && breakpoint === 0;
1423
1403
  const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;
1424
- /**
1425
- * Detect snap-back behavior: when the snap target is the same as the current breakpoint,
1426
- * the user released before crossing the threshold to a new breakpoint.
1427
- * Apply different timing and easing for snap-back vs. snap-to-new.
1428
- */
1429
- const isSnapBack = snapToBreakpoint === currentBreakpoint;
1430
- const duration = usePhysicsBasedGesture ? (isSnapBack ? 300 : 400) : 500;
1431
- const easing = isSnapBack ? 'cubic-bezier(0.34, 1.4, 0.64, 1)' : 'cubic-bezier(0.32, 0.68, 0, 1)';
1432
1404
  const shouldRemainOpen = snapToBreakpoint !== 0;
1433
1405
  currentBreakpoint = 0;
1434
1406
  /**
@@ -1443,15 +1415,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1443
1415
  backdropAnimation.keyframes([
1444
1416
  {
1445
1417
  offset: 0,
1446
- opacity: usePhysicsBasedGesture
1447
- ? 'var(--backdrop-opacity)'
1448
- : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
1418
+ opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
1449
1419
  },
1450
1420
  {
1451
1421
  offset: 1,
1452
- opacity: usePhysicsBasedGesture
1453
- ? 'var(--backdrop-opacity)'
1454
- : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1422
+ opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
1455
1423
  },
1456
1424
  ]);
1457
1425
  if (contentAnimation) {
@@ -1469,12 +1437,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1469
1437
  }
1470
1438
  animation.progressStep(0);
1471
1439
  }
1472
- /**
1473
- * Apply the appropriate easing curve for this snap behavior.
1474
- */
1475
- if (usePhysicsBasedGesture) {
1476
- animation.easing(easing);
1477
- }
1478
1440
  /**
1479
1441
  * Gesture should remain disabled until the
1480
1442
  * snapping animation completes.
@@ -1529,7 +1491,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1529
1491
  helpers.raf(() => {
1530
1492
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
1531
1493
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
1532
- contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1494
+ contentAnimation?.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
1533
1495
  animation.progressStart(true, 1 - snapToBreakpoint);
1534
1496
  currentBreakpoint = snapToBreakpoint;
1535
1497
  onBreakpointChange(currentBreakpoint);
@@ -1564,7 +1526,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1564
1526
  * be added every time onEnd runs.
1565
1527
  */
1566
1528
  }, { oneTimeCallback: true })
1567
- .progressEnd(1, 0, animated ? duration : 0);
1529
+ .progressEnd(1, 0, animated ? 500 : 0);
1568
1530
  });
1569
1531
  };
1570
1532
  /**
@@ -1575,7 +1537,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1575
1537
  * @param deltaY The change in Y position since the gesture started.
1576
1538
  * @returns The snap breakpoint value.
1577
1539
  */
1578
- const calculatePositionSnapBreakpoint = (deltaY) => {
1540
+ const calculateSnapBreakpoint = (deltaY) => {
1579
1541
  /**
1580
1542
  * Calculates the real-time vertical position of the modal.
1581
1543
  * We combine the wrapper's current bounding box position with the
@@ -1595,50 +1557,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1595
1557
  });
1596
1558
  return snapBreakpoint;
1597
1559
  };
1598
- /**
1599
- * Calculates the snap breakpoint using velocity-based logic.
1600
- * This provides a more intuitive and responsive sheet behavior for the Ionic theme.
1601
- *
1602
- * Rules:
1603
- * 1. Fast downward flick (> 500 px/s) always dismisses, regardless of position
1604
- * 2. Fast upward flick (> 400 px/s) snaps to the next breakpoint above
1605
- * 3. If dragged 40% below current snap point without fast upward flick, dismisses
1606
- * 4. Otherwise, falls back to position-based snap (closest breakpoint)
1607
- *
1608
- * @param deltaY The change in Y position since gesture started
1609
- * @param velocityY The velocity in pixels per millisecond
1610
- * @param currentY The current Y position of the gesture
1611
- * @returns The snap breakpoint value
1612
- */
1613
- const calculateVelocitySnapBreakpoint = (deltaY, velocityY, currentY) => {
1614
- // Convert velocity from px/ms to px/s for easier threshold comparison
1615
- const velocityYPerSecond = velocityY * 1000;
1616
- // Calculate current progress (0 = fully closed, 1 = fully expanded)
1617
- const currentProgress = calculateProgress(currentY);
1618
- // Rule 1: Fast downward flick always dismisses
1619
- if (velocityYPerSecond > 500) {
1620
- return minBreakpoint;
1621
- }
1622
- // Rule 2: Fast upward flick moves to next breakpoint above
1623
- if (velocityYPerSecond < -400) {
1624
- // Find next breakpoint above current position
1625
- const nextBreakpoint = breakpoints.find((bp) => bp > currentProgress);
1626
- // If no breakpoint above, stay at max breakpoint
1627
- return nextBreakpoint !== null && nextBreakpoint !== void 0 ? nextBreakpoint : maxBreakpoint;
1628
- }
1629
- // Rule 3: 40% dismissal rule (only if not flicking up and 0 breakpoint exists)
1630
- if (minBreakpoint === 0 && currentBreakpoint > 0) {
1631
- // Calculate how far we've moved below the current snap point
1632
- const distanceBelowSnap = currentBreakpoint - currentProgress;
1633
- const percentageBelowSnap = distanceBelowSnap / currentBreakpoint;
1634
- // If dragged more than 40% below and not flicking up, dismiss
1635
- if (percentageBelowSnap > 0.4 && velocityYPerSecond <= 400) {
1636
- return 0;
1637
- }
1638
- }
1639
- // Rule 4: Fallback to position-based snap (existing logic)
1640
- return calculatePositionSnapBreakpoint(deltaY);
1641
- };
1642
1560
  /**
1643
1561
  * Calculates the progress of the swipe gesture.
1644
1562
  *
@@ -1709,7 +1627,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1709
1627
  */
1710
1628
  return viewportBottom - activeHeight;
1711
1629
  };
1712
- const gesture = index$1.createGesture({
1630
+ const gesture = index$2.createGesture({
1713
1631
  el: wrapperEl,
1714
1632
  gestureName: 'modalSheet',
1715
1633
  gesturePriority: 40,
@@ -1766,9 +1684,9 @@ let cacheInvalidationScheduled = false;
1766
1684
  * Matches: @media (min-width: 768px) and (min-height: 600px)
1767
1685
  */
1768
1686
  const isCenteredDialogViewport = () => {
1769
- if (!ionicGlobal.win)
1687
+ if (!index.win)
1770
1688
  return false;
1771
- return ionicGlobal.win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
1689
+ return index.win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
1772
1690
  .matches;
1773
1691
  };
1774
1692
  /**
@@ -1783,8 +1701,8 @@ const getRootSafeAreaTop = () => {
1783
1701
  if (cachedRootSafeAreaTop !== null) {
1784
1702
  return cachedRootSafeAreaTop;
1785
1703
  }
1786
- const doc = ionicGlobal.win === null || ionicGlobal.win === void 0 ? void 0 : ionicGlobal.win.document;
1787
- if (!(doc === null || doc === void 0 ? void 0 : doc.body)) {
1704
+ const doc = index.win?.document;
1705
+ if (!doc?.body) {
1788
1706
  return 0;
1789
1707
  }
1790
1708
  const el = doc.createElement('div');
@@ -1809,8 +1727,8 @@ const getRootSafeAreaTop = () => {
1809
1727
  * a change to it becomes a size change the observer can see.
1810
1728
  */
1811
1729
  const onRootSafeAreaTopChange = (callback) => {
1812
- const doc = ionicGlobal.win === null || ionicGlobal.win === void 0 ? void 0 : ionicGlobal.win.document;
1813
- if (!(doc === null || doc === void 0 ? void 0 : doc.body) || typeof ResizeObserver === 'undefined') {
1730
+ const doc = index.win?.document;
1731
+ if (!doc?.body || typeof ResizeObserver === 'undefined') {
1814
1732
  return () => undefined;
1815
1733
  }
1816
1734
  const probe = doc.createElement('div');
@@ -1922,10 +1840,9 @@ const getInitialSafeAreaConfig = (context) => {
1922
1840
  * @returns SafeAreaConfig based on position
1923
1841
  */
1924
1842
  const getPositionBasedSafeAreaConfig = (wrapperEl) => {
1925
- var _a, _b;
1926
1843
  const rect = wrapperEl.getBoundingClientRect();
1927
- const vh = (_a = ionicGlobal.win === null || ionicGlobal.win === void 0 ? void 0 : ionicGlobal.win.innerHeight) !== null && _a !== void 0 ? _a : 0;
1928
- const vw = (_b = ionicGlobal.win === null || ionicGlobal.win === void 0 ? void 0 : ionicGlobal.win.innerWidth) !== null && _b !== void 0 ? _b : 0;
1844
+ const vh = index.win?.innerHeight ?? 0;
1845
+ const vw = index.win?.innerWidth ?? 0;
1929
1846
  // Only apply safe-area to sides where modal overlaps with screen edge
1930
1847
  return {
1931
1848
  top: rect.top <= EDGE_THRESHOLD ? 'inherit' : '0px',
@@ -1958,217 +1875,198 @@ const clearSafeAreaOverrides = (hostEl) => {
1958
1875
  hostEl.style.removeProperty('--ion-safe-area-right');
1959
1876
  };
1960
1877
 
1961
- const modalIonicCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-width:0;--border-style:none;--border-color:transparent;--box-shadow:none;right:0;left:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-wrapper{outline:none}.modal-shadow{position:absolute;background:transparent}.modal-handle{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;cursor:pointer;z-index:11}.modal-handle::before{position:absolute;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--box-shadow:var(--token-elevation-3, 0px 2px 7px 0px rgba(0, 0, 0, 0.05), 0px 6px 32px 0px rgba(0, 0, 0, 0.16));--backdrop-opacity:0.7;color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424))}:host(.modal-round){--border-radius:var(--token-border-radius-1000, var(--token-scale-1000, 40px))}:host(.modal-soft){--border-radius:var(--token-border-radius-400, var(--token-scale-400, 16px))}:host(.modal-rectangular){--border-radius:var(--token-border-radius-0, var(--token-scale-0, 0px))}:host(.select-modal.modal-default){--max-height:45%;--max-width:calc(100% - (var(--token-space-400, var(--token-scale-400, 16px)) * 2));--min-height:340px}.modal-handle{right:0px;left:0px;top:var(--token-space-300, var(--token-scale-300, 12px));border-radius:var(--token-border-radius-100, var(--token-scale-100, 4px));width:var(--token-scale-1100, 44px);height:var(--token-scale-100, 4px);background-color:var(--token-primitives-neutral-300, #e0e0e0)}.modal-handle::before{-webkit-padding-start:var(--token-space-100, var(--token-scale-100, 4px));padding-inline-start:var(--token-space-100, var(--token-scale-100, 4px));-webkit-padding-end:var(--token-space-100, var(--token-scale-100, 4px));padding-inline-end:var(--token-space-100, var(--token-scale-100, 4px));padding-top:var(--token-space-100, var(--token-scale-100, 4px));padding-bottom:var(--token-space-100, var(--token-scale-100, 4px))}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + var(--token-scale-250, 10px)))}`;
1878
+ const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-wrapper{outline:none}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}`;
1962
1879
 
1963
- const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-width:0;--border-style:none;--border-color:transparent;--box-shadow:none;right:0;left:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-wrapper{outline:none}.modal-shadow{position:absolute;background:transparent}.modal-handle{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;cursor:pointer;z-index:11}.modal-handle::before{position:absolute;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--background:var(--ion-background-color, #fff);--border-radius:0;--backdrop-opacity:0;color:var(--ion-text-color, #000)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{right:0px;left:0px;top:5px;border-radius:8px;width:36px;height:5px;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be))}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;width:36px;height:5px}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}`;
1964
-
1965
- const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-width:0;--border-style:none;--border-color:transparent;--box-shadow:none;right:0;left:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-wrapper{outline:none}.modal-shadow{position:absolute;background:transparent}.modal-handle{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;cursor:pointer;z-index:11}.modal-handle::before{position:absolute;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--background:var(--ion-background-color, #fff);--border-radius:0;--backdrop-opacity:0;color:var(--ion-text-color, #000)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{right:0px;left:0px;top:5px;border-radius:8px;width:36px;height:5px;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be))}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;width:36px;height:5px}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}`;
1880
+ const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-wrapper{outline:none}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}`;
1966
1881
 
1967
1882
  const Modal = class {
1968
1883
  constructor(hostRef) {
1969
- index$2.registerInstance(this, hostRef);
1970
- this.didPresent = index$2.createEvent(this, "ionModalDidPresent", 7);
1971
- this.willPresent = index$2.createEvent(this, "ionModalWillPresent", 7);
1972
- this.willDismiss = index$2.createEvent(this, "ionModalWillDismiss", 7);
1973
- this.didDismiss = index$2.createEvent(this, "ionModalDidDismiss", 7);
1974
- this.ionBreakpointDidChange = index$2.createEvent(this, "ionBreakpointDidChange", 7);
1975
- this.didPresentShorthand = index$2.createEvent(this, "didPresent", 7);
1976
- this.willPresentShorthand = index$2.createEvent(this, "willPresent", 7);
1977
- this.willDismissShorthand = index$2.createEvent(this, "willDismiss", 7);
1978
- this.didDismissShorthand = index$2.createEvent(this, "didDismiss", 7);
1979
- this.ionMount = index$2.createEvent(this, "ionMount", 7);
1980
- this.ionDragStart = index$2.createEvent(this, "ionDragStart", 7);
1981
- this.ionDragMove = index$2.createEvent(this, "ionDragMove", 7);
1982
- this.ionDragEnd = index$2.createEvent(this, "ionDragEnd", 7);
1983
- this.lockController = lockController.createLockController();
1984
- this.triggerController = overlays.createTriggerController();
1985
- this.coreDelegate = frameworkDelegate.CoreDelegate();
1986
- this.isSheetModal = false;
1987
- this.inheritedAttributes = {};
1988
- this.inline = false;
1989
- // Whether or not modal is being dismissed via gesture
1990
- this.gestureAnimationDismissing = false;
1991
- this.presented = false;
1992
- /** @internal */
1993
- this.hasController = false;
1994
- /**
1995
- * If `true`, the keyboard will be automatically dismissed when the overlay is presented.
1996
- */
1997
- this.keyboardClose = true;
1998
- /**
1999
- * Controls whether scrolling or dragging within the sheet modal expands
2000
- * it to a larger breakpoint. This only takes effect when `breakpoints`
2001
- * and `initialBreakpoint` are set.
2002
- *
2003
- * If `true`, scrolling or dragging anywhere in the modal will first expand
2004
- * it to the next breakpoint. Once fully expanded, scrolling will affect the
2005
- * content.
2006
- * If `false`, scrolling will always affect the content. The modal will
2007
- * only expand when dragging the header or handle. The modal will close when
2008
- * dragging the header or handle. It can also be closed when dragging the
2009
- * content, but only if the content is scrolled to the top.
2010
- */
2011
- this.expandToScroll = true;
2012
- /**
2013
- * A decimal value between 0 and 1 that indicates the
2014
- * point after which the backdrop will begin to fade in
2015
- * when using a sheet modal. Prior to this point, the
2016
- * backdrop will be hidden and the content underneath
2017
- * the sheet can be interacted with. This value is exclusive
2018
- * meaning the backdrop will become active after the value
2019
- * specified.
2020
- */
2021
- this.backdropBreakpoint = 0;
2022
- /**
2023
- * The interaction behavior for the sheet modal when the handle is pressed.
2024
- *
2025
- * Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed.
2026
- * Set to `"cycle"` to let the modal cycle between available breakpoints when pressed.
2027
- *
2028
- * Handle behavior is unavailable when the `handle` property is set to `false` or
2029
- * when the `breakpoints` property is not set (using a fullscreen or card modal).
2030
- */
2031
- this.handleBehavior = 'none';
2032
- /**
2033
- * If `true`, the modal will be dismissed when the backdrop is clicked.
2034
- */
2035
- this.backdropDismiss = true;
2036
- /**
2037
- * If `true`, a backdrop will be displayed behind the modal.
2038
- * This property controls whether or not the backdrop
2039
- * darkens the screen when the modal is presented.
2040
- * It does not control whether or not the backdrop
2041
- * is active or present in the DOM.
2042
- */
2043
- this.showBackdrop = true;
2044
- /**
2045
- * If `true`, the modal will animate.
2046
- */
2047
- this.animated = true;
2048
- /**
2049
- * If `true`, the modal will open. If `false`, the modal will close.
2050
- * Use this if you need finer grained control over presentation, otherwise
2051
- * just use the modalController or the `trigger` property.
2052
- * Note: `isOpen` will not automatically be set back to `false` when
2053
- * the modal dismisses. You will need to do that in your code.
2054
- */
2055
- this.isOpen = false;
2056
- /**
2057
- * If `true`, the component passed into `ion-modal` will
2058
- * automatically be mounted when the modal is created. The
2059
- * component will remain mounted even when the modal is dismissed.
2060
- * However, the component will be destroyed when the modal is
2061
- * destroyed. This property is not reactive and should only be
2062
- * used when initially creating a modal.
2063
- *
2064
- * Note: This feature only applies to inline modals in JavaScript
2065
- * frameworks such as Angular, React, and Vue.
2066
- */
2067
- this.keepContentsMounted = false;
2068
- /**
2069
- * If `true`, focus will not be allowed to move outside of this overlay.
2070
- * If `false`, focus will be allowed to move outside of the overlay.
2071
- *
2072
- * In most scenarios this property should remain set to `true`. Setting
2073
- * this property to `false` can cause severe accessibility issues as users
2074
- * relying on assistive technologies may be able to move focus into
2075
- * a confusing state. We recommend only setting this to `false` when
2076
- * absolutely necessary.
2077
- *
2078
- * Developers may want to consider disabling focus trapping if this
2079
- * overlay presents a non-Ionic overlay from a 3rd party library.
2080
- * Developers would disable focus trapping on the Ionic overlay
2081
- * when presenting the 3rd party overlay and then re-enable
2082
- * focus trapping when dismissing the 3rd party overlay and moving
2083
- * focus back to the Ionic overlay.
2084
- */
2085
- this.focusTrap = true;
2086
- /**
2087
- * Determines whether or not a modal can dismiss
2088
- * when calling the `dismiss` method.
2089
- *
2090
- * If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss.
2091
- * If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss.
2092
- *
2093
- * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
2094
- * if you need to access `this` from within the callback.
2095
- */
2096
- this.canDismiss = true;
2097
- this.onHandleClick = () => {
2098
- const { sheetTransition, handleBehavior } = this;
2099
- if (handleBehavior !== 'cycle' || sheetTransition !== undefined) {
2100
- /**
2101
- * The sheet modal should not advance to the next breakpoint
2102
- * if the handle behavior is not `cycle` or if the handle
2103
- * is clicked while the sheet is moving to a breakpoint.
2104
- */
2105
- return;
2106
- }
2107
- this.moveToNextBreakpoint();
2108
- };
2109
- this.onBackdropTap = () => {
2110
- const { sheetTransition } = this;
2111
- if (sheetTransition !== undefined) {
2112
- /**
2113
- * When the handle is double clicked at the largest breakpoint,
2114
- * it will start to move to the first breakpoint. While transitioning,
2115
- * the backdrop will often receive the second click. We prevent the
2116
- * backdrop from dismissing the modal while moving between breakpoints.
2117
- */
2118
- return;
2119
- }
2120
- this.dismiss(undefined, overlays.BACKDROP);
2121
- };
2122
- this.onLifecycle = (modalEvent) => {
2123
- const el = this.usersElement;
2124
- const name = LIFECYCLE_MAP[modalEvent.type];
2125
- if (el && name) {
2126
- const ev = new CustomEvent(name, {
2127
- bubbles: false,
2128
- cancelable: false,
2129
- detail: modalEvent.detail,
2130
- });
2131
- el.dispatchEvent(ev);
2132
- }
2133
- };
2134
- /**
2135
- * When the modal receives focus directly, pass focus to the handle
2136
- * if it exists and is focusable, otherwise let the focus trap handle it.
2137
- */
2138
- this.onModalFocus = (ev) => {
2139
- var _a;
2140
- const { dragHandleEl, el } = this;
2141
- /**
2142
- * Shadow DOM focus is retargeted to the host, so `ev.target === el` is also
2143
- * true when a shadow child (the dialog wrapper present() focuses) is focused.
2144
- * shadowRoot's activeElement is null only when the host was focused directly,
2145
- * so redirect to the handle only then and leave present()'s wrapper focus intact.
2146
- */
2147
- if (ev.target === el && ((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) == null && dragHandleEl && dragHandleEl.tabIndex !== -1) {
2148
- dragHandleEl.focus();
2149
- }
2150
- };
2151
- /**
2152
- * When the slot changes, we need to find all the modals in the slot
2153
- * and set the data-parent-ion-modal attribute on them so we can find them
2154
- * and dismiss them when we get dismissed.
2155
- * We need to do it this way because when a modal is opened, it's moved to
2156
- * the end of the body and is no longer an actual child of the modal.
2157
- */
2158
- this.onSlotChange = ({ target }) => {
2159
- const slot = target;
2160
- slot.assignedElements().forEach((el) => {
2161
- el.querySelectorAll('ion-modal').forEach((childModal) => {
2162
- // We don't need to write to the DOM if the modal is already tagged
2163
- // If this is a deeply nested modal, this effect should cascade so we don't
2164
- // need to worry about another modal claiming the same child.
2165
- if (childModal.getAttribute('data-parent-ion-modal') === null) {
2166
- childModal.setAttribute('data-parent-ion-modal', this.el.id);
2167
- }
2168
- });
2169
- });
2170
- };
2171
- }
1884
+ index$3.registerInstance(this, hostRef);
1885
+ this.didPresent = index$3.createEvent(this, "ionModalDidPresent", 7);
1886
+ this.willPresent = index$3.createEvent(this, "ionModalWillPresent", 7);
1887
+ this.willDismiss = index$3.createEvent(this, "ionModalWillDismiss", 7);
1888
+ this.didDismiss = index$3.createEvent(this, "ionModalDidDismiss", 7);
1889
+ this.ionBreakpointDidChange = index$3.createEvent(this, "ionBreakpointDidChange", 7);
1890
+ this.didPresentShorthand = index$3.createEvent(this, "didPresent", 7);
1891
+ this.willPresentShorthand = index$3.createEvent(this, "willPresent", 7);
1892
+ this.willDismissShorthand = index$3.createEvent(this, "willDismiss", 7);
1893
+ this.didDismissShorthand = index$3.createEvent(this, "didDismiss", 7);
1894
+ this.ionMount = index$3.createEvent(this, "ionMount", 7);
1895
+ this.ionDragStart = index$3.createEvent(this, "ionDragStart", 7);
1896
+ this.ionDragMove = index$3.createEvent(this, "ionDragMove", 7);
1897
+ this.ionDragEnd = index$3.createEvent(this, "ionDragEnd", 7);
1898
+ }
1899
+ lockController = lockController.createLockController();
1900
+ triggerController = overlays.createTriggerController();
1901
+ gesture;
1902
+ coreDelegate = frameworkDelegate.CoreDelegate();
1903
+ sheetTransition;
1904
+ isSheetModal = false;
1905
+ /**
1906
+ * The breakpoint value that has been committed for a sheet modal.
1907
+ * This represents the modal's resting state when it is not being dragged
1908
+ * or animating toward a new position.
1909
+ */
1910
+ currentBreakpoint;
1911
+ wrapperEl;
1912
+ backdropEl;
1913
+ dragHandleEl;
1914
+ sortedBreakpoints;
1915
+ keyboardOpenCallback;
1916
+ moveSheetToBreakpoint;
1917
+ resetSheetContentScroll;
1918
+ inheritedAttributes = {};
1919
+ statusBarStyle;
1920
+ inline = false;
1921
+ workingDelegate;
1922
+ // Reference to the user's provided modal content
1923
+ usersElement;
1924
+ // Whether or not modal is being dismissed via gesture
1925
+ gestureAnimationDismissing = false;
1926
+ // View transition properties for handling portrait/landscape switches
1927
+ currentViewIsPortrait;
1928
+ viewTransitionAnimation;
1929
+ resizeTimeout;
1930
+ unsubscribeRootSafeAreaTop;
1931
+ // Mutation observer to watch for parent removal
1932
+ parentRemovalObserver;
1933
+ // Cached original parent from before modal is moved to body during presentation
1934
+ cachedOriginalParent;
1935
+ // Cached ion-page ancestor for child route passthrough
1936
+ cachedPageParent;
1937
+ lastFocus;
1938
+ animation;
1939
+ presented = false;
1940
+ get el() { return index$3.getElement(this); }
1941
+ /** @internal */
1942
+ hasController = false;
1943
+ /** @internal */
1944
+ overlayIndex;
1945
+ /** @internal */
1946
+ delegate;
1947
+ /**
1948
+ * If `true`, the keyboard will be automatically dismissed when the overlay is presented.
1949
+ */
1950
+ keyboardClose = true;
1951
+ /**
1952
+ * Animation to use when the modal is presented.
1953
+ */
1954
+ enterAnimation;
1955
+ /**
1956
+ * Animation to use when the modal is dismissed.
1957
+ */
1958
+ leaveAnimation;
1959
+ /**
1960
+ * The breakpoints to use when creating a sheet modal. Each value in the
1961
+ * array must be a decimal between 0 and 1 where 0 indicates the modal is fully
1962
+ * closed and 1 indicates the modal is fully open. Values are relative
1963
+ * to the height of the modal, not the height of the screen. One of the values in this
1964
+ * array must be the value of the `initialBreakpoint` property.
1965
+ * For example: [0, .25, .5, 1]
1966
+ */
1967
+ breakpoints;
1968
+ /**
1969
+ * Controls whether scrolling or dragging within the sheet modal expands
1970
+ * it to a larger breakpoint. This only takes effect when `breakpoints`
1971
+ * and `initialBreakpoint` are set.
1972
+ *
1973
+ * If `true`, scrolling or dragging anywhere in the modal will first expand
1974
+ * it to the next breakpoint. Once fully expanded, scrolling will affect the
1975
+ * content.
1976
+ * If `false`, scrolling will always affect the content. The modal will
1977
+ * only expand when dragging the header or handle. The modal will close when
1978
+ * dragging the header or handle. It can also be closed when dragging the
1979
+ * content, but only if the content is scrolled to the top.
1980
+ */
1981
+ expandToScroll = true;
1982
+ /**
1983
+ * A decimal value between 0 and 1 that indicates the
1984
+ * initial point the modal will open at when creating a
1985
+ * sheet modal. This value must also be listed in the
1986
+ * `breakpoints` array.
1987
+ */
1988
+ initialBreakpoint;
1989
+ /**
1990
+ * A decimal value between 0 and 1 that indicates the
1991
+ * point after which the backdrop will begin to fade in
1992
+ * when using a sheet modal. Prior to this point, the
1993
+ * backdrop will be hidden and the content underneath
1994
+ * the sheet can be interacted with. This value is exclusive
1995
+ * meaning the backdrop will become active after the value
1996
+ * specified.
1997
+ */
1998
+ backdropBreakpoint = 0;
1999
+ /**
2000
+ * The horizontal line that displays at the top of a sheet modal. It is `true` by default when
2001
+ * setting the `breakpoints` and `initialBreakpoint` properties.
2002
+ */
2003
+ handle;
2004
+ /**
2005
+ * The interaction behavior for the sheet modal when the handle is pressed.
2006
+ *
2007
+ * Handle behavior is unavailable when the `handle` property is set to
2008
+ * `false` or when the `breakpoints` property is not set (using a
2009
+ * fullscreen or card modal).
2010
+ *
2011
+ * Set to `"cycle"` to make the handle focusable and let the sheet modal
2012
+ * cycle between available breakpoints when pressed. This keeps the sheet
2013
+ * operable with assistive technology.
2014
+ *
2015
+ * Set to `"none"` to make the handle purely decorative when pressed and
2016
+ * removed from the tab order.
2017
+ *
2018
+ * Defaults to `"cycle"`.
2019
+ */
2020
+ handleBehavior = 'cycle';
2021
+ /**
2022
+ * The component to display inside of the modal.
2023
+ * @internal
2024
+ */
2025
+ component;
2026
+ /**
2027
+ * The data to pass to the modal component.
2028
+ * @internal
2029
+ */
2030
+ componentProps;
2031
+ /**
2032
+ * Additional classes to apply for custom CSS. If multiple classes are
2033
+ * provided they should be separated by spaces.
2034
+ * @internal
2035
+ */
2036
+ cssClass;
2037
+ /**
2038
+ * If `true`, the modal will be dismissed when the backdrop is clicked.
2039
+ */
2040
+ backdropDismiss = true;
2041
+ /**
2042
+ * If `true`, a backdrop will be displayed behind the modal.
2043
+ * This property controls whether or not the backdrop
2044
+ * darkens the screen when the modal is presented.
2045
+ * It does not control whether or not the backdrop
2046
+ * is active or present in the DOM.
2047
+ */
2048
+ showBackdrop = true;
2049
+ /**
2050
+ * If `true`, the modal will animate.
2051
+ */
2052
+ animated = true;
2053
+ /**
2054
+ * The element that presented the modal. This is used for card presentation effects
2055
+ * and for stacking multiple modals on top of each other. Only applies in iOS mode.
2056
+ */
2057
+ presentingElement;
2058
+ /**
2059
+ * Additional attributes to pass to the modal.
2060
+ */
2061
+ htmlAttributes;
2062
+ /**
2063
+ * If `true`, the modal will open. If `false`, the modal will close.
2064
+ * Use this if you need finer grained control over presentation, otherwise
2065
+ * just use the modalController or the `trigger` property.
2066
+ * Note: `isOpen` will not automatically be set back to `false` when
2067
+ * the modal dismisses. You will need to do that in your code.
2068
+ */
2069
+ isOpen = false;
2172
2070
  onIsOpenChange(newValue, oldValue) {
2173
2071
  if (newValue === true && oldValue === false) {
2174
2072
  this.present();
@@ -2177,6 +2075,11 @@ const Modal = class {
2177
2075
  this.dismiss();
2178
2076
  }
2179
2077
  }
2078
+ /**
2079
+ * An ID corresponding to the trigger element that
2080
+ * causes the modal to open when clicked.
2081
+ */
2082
+ trigger;
2180
2083
  triggerChanged() {
2181
2084
  const { trigger, el, triggerController } = this;
2182
2085
  if (trigger) {
@@ -2209,6 +2112,108 @@ const Modal = class {
2209
2112
  }
2210
2113
  }, 50); // Debounce to avoid excessive calls during active resizing
2211
2114
  }
2115
+ /**
2116
+ * If `true`, the component passed into `ion-modal` will
2117
+ * automatically be mounted when the modal is created. The
2118
+ * component will remain mounted even when the modal is dismissed.
2119
+ * However, the component will be destroyed when the modal is
2120
+ * destroyed. This property is not reactive and should only be
2121
+ * used when initially creating a modal.
2122
+ *
2123
+ * Note: This feature only applies to inline modals in JavaScript
2124
+ * frameworks such as Angular, React, and Vue.
2125
+ */
2126
+ keepContentsMounted = false;
2127
+ /**
2128
+ * If `true`, focus will not be allowed to move outside of this overlay.
2129
+ * If `false`, focus will be allowed to move outside of the overlay.
2130
+ *
2131
+ * In most scenarios this property should remain set to `true`. Setting
2132
+ * this property to `false` can cause severe accessibility issues as users
2133
+ * relying on assistive technologies may be able to move focus into
2134
+ * a confusing state. We recommend only setting this to `false` when
2135
+ * absolutely necessary.
2136
+ *
2137
+ * Developers may want to consider disabling focus trapping if this
2138
+ * overlay presents a non-Ionic overlay from a 3rd party library.
2139
+ * Developers would disable focus trapping on the Ionic overlay
2140
+ * when presenting the 3rd party overlay and then re-enable
2141
+ * focus trapping when dismissing the 3rd party overlay and moving
2142
+ * focus back to the Ionic overlay.
2143
+ */
2144
+ focusTrap = true;
2145
+ /**
2146
+ * Determines whether or not a modal can dismiss
2147
+ * when calling the `dismiss` method.
2148
+ *
2149
+ * If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss.
2150
+ * If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss.
2151
+ *
2152
+ * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
2153
+ * if you need to access `this` from within the callback.
2154
+ */
2155
+ canDismiss = true;
2156
+ /**
2157
+ * Emitted after the modal has presented.
2158
+ */
2159
+ didPresent;
2160
+ /**
2161
+ * Emitted before the modal has presented.
2162
+ */
2163
+ willPresent;
2164
+ /**
2165
+ * Emitted before the modal has dismissed.
2166
+ */
2167
+ willDismiss;
2168
+ /**
2169
+ * Emitted after the modal has dismissed.
2170
+ */
2171
+ didDismiss;
2172
+ /**
2173
+ * Emitted after the modal breakpoint has changed.
2174
+ */
2175
+ ionBreakpointDidChange;
2176
+ /**
2177
+ * Emitted after the modal has presented.
2178
+ * Shorthand for ionModalDidPresent.
2179
+ */
2180
+ didPresentShorthand;
2181
+ /**
2182
+ * Emitted before the modal has presented.
2183
+ * Shorthand for ionModalWillPresent.
2184
+ */
2185
+ willPresentShorthand;
2186
+ /**
2187
+ * Emitted before the modal has dismissed.
2188
+ * Shorthand for ionModalWillDismiss.
2189
+ */
2190
+ willDismissShorthand;
2191
+ /**
2192
+ * Emitted after the modal has dismissed.
2193
+ * Shorthand for ionModalDidDismiss.
2194
+ */
2195
+ didDismissShorthand;
2196
+ /**
2197
+ * Emitted before the modal has presented, but after the component
2198
+ * has been mounted in the DOM.
2199
+ * This event exists so iOS can run the entering
2200
+ * transition properly
2201
+ *
2202
+ * @internal
2203
+ */
2204
+ ionMount;
2205
+ /**
2206
+ * Event that is emitted when the sheet modal or card modal gesture starts.
2207
+ */
2208
+ ionDragStart;
2209
+ /**
2210
+ * Event that is emitted when the sheet modal or card modal gesture moves.
2211
+ */
2212
+ ionDragMove;
2213
+ /**
2214
+ * Event that is emitted when the sheet modal or card modal gesture ends.
2215
+ */
2216
+ ionDragEnd;
2212
2217
  breakpointsChanged(breakpoints) {
2213
2218
  if (breakpoints !== undefined) {
2214
2219
  this.sortedBreakpoints = breakpoints.sort((a, b) => a - b);
@@ -2226,9 +2231,12 @@ const Modal = class {
2226
2231
  // Also called in dismiss() — intentional dual cleanup covers both
2227
2232
  // dismiss-then-remove and direct DOM removal without dismiss.
2228
2233
  this.cleanupSafeAreaOverrides();
2234
+ // Clean up aria-hidden if removed without dismiss() being called
2235
+ if (this.presented) {
2236
+ overlays.cleanupRootFocusTrapAccessibility();
2237
+ }
2229
2238
  }
2230
2239
  componentWillLoad() {
2231
- var _a;
2232
2240
  const { breakpoints, initialBreakpoint, el, htmlAttributes } = this;
2233
2241
  const isSheetModal = (this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined);
2234
2242
  const attributesToInherit = ['aria-label', 'role'];
@@ -2263,7 +2271,10 @@ const Modal = class {
2263
2271
  * htmlAttributes wins, but that's not a pattern that we recommend.
2264
2272
  * The only time you'd need htmlAttributes is when using modalController.
2265
2273
  */
2266
- this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { [attribute]: htmlAttributes[attribute] });
2274
+ this.inheritedAttributes = {
2275
+ ...this.inheritedAttributes,
2276
+ [attribute]: htmlAttributes[attribute],
2277
+ };
2267
2278
  delete htmlAttributes[attribute];
2268
2279
  }
2269
2280
  });
@@ -2272,9 +2283,9 @@ const Modal = class {
2272
2283
  this.currentBreakpoint = this.initialBreakpoint;
2273
2284
  }
2274
2285
  if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {
2275
- index$2.printIonWarning('[ion-modal] - Your breakpoints array must include the initialBreakpoint value.');
2286
+ index$3.printIonWarning('[ion-modal] - Your breakpoints array must include the initialBreakpoint value.');
2276
2287
  }
2277
- if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
2288
+ if (!this.htmlAttributes?.id) {
2278
2289
  overlays.setOverlayId(this.el);
2279
2290
  }
2280
2291
  }
@@ -2372,7 +2383,7 @@ const Modal = class {
2372
2383
  * get the transition incorrect.
2373
2384
  */
2374
2385
  if (helpers.hasLazyBuild(el)) {
2375
- await index$3.deepReady(this.usersElement);
2386
+ await index$4.deepReady(this.usersElement);
2376
2387
  /**
2377
2388
  * If keepContentsMounted="true" then the
2378
2389
  * JS Framework has already mounted the inner
@@ -2383,9 +2394,9 @@ const Modal = class {
2383
2394
  */
2384
2395
  }
2385
2396
  else if (!this.keepContentsMounted) {
2386
- await index$3.waitForMount();
2397
+ await index$4.waitForMount();
2387
2398
  }
2388
- index$2.writeTask(() => this.el.classList.add('show-modal'));
2399
+ index$3.writeTask(() => this.el.classList.add('show-modal'));
2389
2400
  // Recalculate isSheetModal before safe-area setup because framework
2390
2401
  // bindings (e.g., Angular) may not have been applied when componentWillLoad ran.
2391
2402
  this.isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
@@ -2402,12 +2413,11 @@ const Modal = class {
2402
2413
  this.statusBarStyle = await StatusBar.getStyle();
2403
2414
  setCardStatusBarDark();
2404
2415
  }
2405
- await overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, ionicEnterAnimation, {
2416
+ await overlays.present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
2406
2417
  presentingEl: presentingElement,
2407
2418
  currentBreakpoint: this.initialBreakpoint,
2408
2419
  backdropBreakpoint: this.backdropBreakpoint,
2409
2420
  expandToScroll: this.expandToScroll,
2410
- staticBackdropOpacity: ionicGlobal.getIonTheme(this) === 'ionic',
2411
2421
  });
2412
2422
  // Update safe-area based on actual position after animation
2413
2423
  this.updateSafeAreaOverrides();
@@ -2457,7 +2467,6 @@ const Modal = class {
2457
2467
  unlock();
2458
2468
  }
2459
2469
  initSwipeToClose() {
2460
- var _a;
2461
2470
  if (ionicGlobal.getIonMode(this) !== 'ios') {
2462
2471
  return;
2463
2472
  }
@@ -2465,17 +2474,17 @@ const Modal = class {
2465
2474
  // All of the elements needed for the swipe gesture
2466
2475
  // should be in the DOM and referenced by now, except
2467
2476
  // for the presenting el
2468
- const animationBuilder = this.leaveAnimation || index$2.config.get('modalLeave', iosLeaveAnimation);
2477
+ const animationBuilder = this.leaveAnimation || index$3.config.get('modalLeave', iosLeaveAnimation);
2469
2478
  const ani = (this.animation = animationBuilder(el, {
2470
2479
  presentingEl: this.presentingElement,
2471
2480
  expandToScroll: this.expandToScroll,
2472
2481
  }));
2473
- const contentEl = index.findIonContent(el);
2482
+ const contentEl = index$1.findIonContent(el);
2474
2483
  if (!contentEl) {
2475
- index.printIonContentErrorMsg(el);
2484
+ index$1.printIonContentErrorMsg(el);
2476
2485
  return;
2477
2486
  }
2478
- const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : Style.Default;
2487
+ const statusBarStyle = this.statusBarStyle ?? Style.Default;
2479
2488
  this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => this.cardOnDismiss(), () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
2480
2489
  this.gesture.enable(true);
2481
2490
  }
@@ -2484,21 +2493,20 @@ const Modal = class {
2484
2493
  if (!wrapperEl || initialBreakpoint === undefined) {
2485
2494
  return;
2486
2495
  }
2487
- const animationBuilder = this.enterAnimation || index$2.config.get('modalEnter', iosEnterAnimation);
2496
+ const animationBuilder = this.enterAnimation || index$3.config.get('modalEnter', iosEnterAnimation);
2488
2497
  const ani = (this.animation = animationBuilder(this.el, {
2489
2498
  presentingEl: this.presentingElement,
2490
2499
  currentBreakpoint: initialBreakpoint,
2491
2500
  backdropBreakpoint,
2492
2501
  expandToScroll: this.expandToScroll,
2493
- staticBackdropOpacity: ionicGlobal.getIonTheme(this) === 'ionic',
2494
2502
  }));
2495
2503
  ani.progressStart(true, 1);
2496
- const { gesture, moveSheetToBreakpoint, resetContentScroll } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
2504
+ const { gesture, moveSheetToBreakpoint, resetContentScroll } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => this.currentBreakpoint ?? 0, () => this.sheetOnDismiss(), (breakpoint) => {
2497
2505
  if (this.currentBreakpoint !== breakpoint) {
2498
2506
  this.currentBreakpoint = breakpoint;
2499
2507
  this.ionBreakpointDidChange.emit({ breakpoint });
2500
2508
  }
2501
- }, ionicGlobal.getIonTheme(this) === 'ionic', () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
2509
+ }, () => this.onDragStart(), (detail) => this.onDragMove(detail), (detail) => this.onDragEnd(detail));
2502
2510
  this.gesture = gesture;
2503
2511
  this.moveSheetToBreakpoint = moveSheetToBreakpoint;
2504
2512
  this.resetSheetContentScroll = resetContentScroll;
@@ -2519,7 +2527,6 @@ const Modal = class {
2519
2527
  * passthrough on child route page wrappers and nested router outlets.
2520
2528
  */
2521
2529
  setupChildRoutePassthrough() {
2522
- var _a;
2523
2530
  // Cache the page parent for cleanup
2524
2531
  this.cachedPageParent = this.getOriginalPageParent();
2525
2532
  const pageParent = this.cachedPageParent;
@@ -2527,14 +2534,11 @@ const Modal = class {
2527
2534
  if (!pageParent || pageParent.tagName === 'ION-APP') {
2528
2535
  return;
2529
2536
  }
2530
- const hasVisibleContent = Array.from(pageParent.children).some((child) => {
2531
- var _a;
2532
- return child !== this.el &&
2533
- !(child instanceof HTMLElement && window.getComputedStyle(child).display === 'none') &&
2534
- child.tagName !== 'TEMPLATE' &&
2535
- child.tagName !== 'SLOT' &&
2536
- !(child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()));
2537
- });
2537
+ const hasVisibleContent = Array.from(pageParent.children).some((child) => child !== this.el &&
2538
+ !(child instanceof HTMLElement && window.getComputedStyle(child).display === 'none') &&
2539
+ child.tagName !== 'TEMPLATE' &&
2540
+ child.tagName !== 'SLOT' &&
2541
+ !(child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()));
2538
2542
  if (hasVisibleContent) {
2539
2543
  return;
2540
2544
  }
@@ -2542,7 +2546,7 @@ const Modal = class {
2542
2546
  pageParent.classList.add('ion-page-overlay-passthrough');
2543
2547
  // Also make nested router outlets passthrough
2544
2548
  const routerOutlet = pageParent.parentElement;
2545
- if ((routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.tagName) === 'ION-ROUTER-OUTLET' && ((_a = routerOutlet.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) !== 'ION-APP') {
2549
+ if (routerOutlet?.tagName === 'ION-ROUTER-OUTLET' && routerOutlet.parentElement?.tagName !== 'ION-APP') {
2546
2550
  routerOutlet.style.setProperty('pointer-events', 'none');
2547
2551
  routerOutlet.setAttribute('data-overlay-passthrough', 'true');
2548
2552
  }
@@ -2570,7 +2574,7 @@ const Modal = class {
2570
2574
  }
2571
2575
  pageParent.classList.remove('ion-page-overlay-passthrough');
2572
2576
  const routerOutlet = pageParent.parentElement;
2573
- if (routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.hasAttribute('data-overlay-passthrough')) {
2577
+ if (routerOutlet?.hasAttribute('data-overlay-passthrough')) {
2574
2578
  routerOutlet.style.removeProperty('pointer-events');
2575
2579
  routerOutlet.removeAttribute('data-overlay-passthrough');
2576
2580
  }
@@ -2633,7 +2637,6 @@ const Modal = class {
2633
2637
  * For example, `cancel` or `backdrop`.
2634
2638
  */
2635
2639
  async dismiss(data, role) {
2636
- var _a, _b;
2637
2640
  if (this.gestureAnimationDismissing && role !== overlays.GESTURE) {
2638
2641
  return false;
2639
2642
  }
@@ -2678,14 +2681,14 @@ const Modal = class {
2678
2681
  }
2679
2682
  const dismissed = await overlays.dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
2680
2683
  presentingEl: presentingElement,
2681
- currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
2684
+ currentBreakpoint: this.currentBreakpoint ?? this.initialBreakpoint,
2682
2685
  backdropBreakpoint: this.backdropBreakpoint,
2683
2686
  expandToScroll: this.expandToScroll,
2684
2687
  });
2685
2688
  if (dismissed) {
2686
2689
  const { delegate } = this.getDelegate();
2687
2690
  await frameworkDelegate.detachComponent(delegate, this.usersElement);
2688
- index$2.writeTask(() => this.el.classList.remove('show-modal'));
2691
+ index$3.writeTask(() => this.el.classList.remove('show-modal'));
2689
2692
  if (this.animation) {
2690
2693
  this.animation.destroy();
2691
2694
  }
@@ -2697,7 +2700,7 @@ const Modal = class {
2697
2700
  * the top breakpoint. Inline modals reuse the same content on the next
2698
2701
  * present, so hand it back before the gesture goes away.
2699
2702
  */
2700
- (_b = this.resetSheetContentScroll) === null || _b === void 0 ? void 0 : _b.call(this);
2703
+ this.resetSheetContentScroll?.();
2701
2704
  this.resetSheetContentScroll = undefined;
2702
2705
  this.cleanupViewTransitionListener();
2703
2706
  this.cleanupParentRemovalObserver();
@@ -2729,11 +2732,11 @@ const Modal = class {
2729
2732
  */
2730
2733
  async setCurrentBreakpoint(breakpoint) {
2731
2734
  if (!this.isSheetModal) {
2732
- index$2.printIonWarning('[ion-modal] - setCurrentBreakpoint is only supported on sheet modals.');
2735
+ index$3.printIonWarning('[ion-modal] - setCurrentBreakpoint is only supported on sheet modals.');
2733
2736
  return;
2734
2737
  }
2735
2738
  if (!this.breakpoints.includes(breakpoint)) {
2736
- index$2.printIonWarning(`[ion-modal] - Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);
2739
+ index$3.printIonWarning(`[ion-modal] - Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);
2737
2740
  return;
2738
2741
  }
2739
2742
  const { currentBreakpoint, moveSheetToBreakpoint, canDismiss, breakpoints, animated } = this;
@@ -2778,18 +2781,59 @@ const Modal = class {
2778
2781
  await this.setCurrentBreakpoint(nextBreakpoint);
2779
2782
  return true;
2780
2783
  }
2781
- getShape() {
2782
- const theme = ionicGlobal.getIonTheme(this);
2783
- const { shape } = this;
2784
- // TODO(ROU-11167): Remove theme check when shapes are defined for all themes.
2785
- if (theme !== 'ionic') {
2786
- return undefined;
2784
+ onHandleClick = () => {
2785
+ const { sheetTransition, handleBehavior } = this;
2786
+ if (handleBehavior !== 'cycle' || sheetTransition !== undefined) {
2787
+ /**
2788
+ * The sheet modal should not advance to the next breakpoint
2789
+ * if the handle behavior is not `cycle` or if the handle
2790
+ * is clicked while the sheet is moving to a breakpoint.
2791
+ */
2792
+ return;
2787
2793
  }
2788
- if (shape === undefined) {
2789
- return 'round';
2794
+ this.moveToNextBreakpoint();
2795
+ };
2796
+ onBackdropTap = () => {
2797
+ const { sheetTransition } = this;
2798
+ if (sheetTransition !== undefined) {
2799
+ /**
2800
+ * When the handle is double clicked at the largest breakpoint,
2801
+ * it will start to move to the first breakpoint. While transitioning,
2802
+ * the backdrop will often receive the second click. We prevent the
2803
+ * backdrop from dismissing the modal while moving between breakpoints.
2804
+ */
2805
+ return;
2790
2806
  }
2791
- return shape;
2792
- }
2807
+ this.dismiss(undefined, overlays.BACKDROP);
2808
+ };
2809
+ onLifecycle = (modalEvent) => {
2810
+ const el = this.usersElement;
2811
+ const name = LIFECYCLE_MAP[modalEvent.type];
2812
+ if (el && name) {
2813
+ const ev = new CustomEvent(name, {
2814
+ bubbles: false,
2815
+ cancelable: false,
2816
+ detail: modalEvent.detail,
2817
+ });
2818
+ el.dispatchEvent(ev);
2819
+ }
2820
+ };
2821
+ /**
2822
+ * When the modal receives focus directly, pass focus to the handle
2823
+ * if it exists and is focusable, otherwise let the focus trap handle it.
2824
+ */
2825
+ onModalFocus = (ev) => {
2826
+ const { dragHandleEl, el } = this;
2827
+ /**
2828
+ * Shadow DOM focus is retargeted to the host, so `ev.target === el` is also
2829
+ * true when a shadow child (the dialog wrapper present() focuses) is focused.
2830
+ * shadowRoot's activeElement is null only when the host was focused directly,
2831
+ * so redirect to the handle only then and leave present()'s wrapper focus intact.
2832
+ */
2833
+ if (ev.target === el && el.shadowRoot?.activeElement == null && dragHandleEl && dragHandleEl.tabIndex !== -1) {
2834
+ dragHandleEl.focus();
2835
+ }
2836
+ };
2793
2837
  initViewTransitionListener() {
2794
2838
  // Only enable for iOS card modals when no custom animations are provided
2795
2839
  if (ionicGlobal.getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
@@ -2885,7 +2929,7 @@ const Modal = class {
2885
2929
  wrapperEl.style.transform = 'translateY(0vh)';
2886
2930
  wrapperEl.style.opacity = '1';
2887
2931
  }
2888
- if ((presentingElement === null || presentingElement === void 0 ? void 0 : presentingElement.tagName) === 'ION-MODAL') {
2932
+ if (presentingElement?.tagName === 'ION-MODAL') {
2889
2933
  const isPortrait = window.innerWidth < 768;
2890
2934
  if (isPortrait) {
2891
2935
  const transformOffset = !CSS.supports('width', 'max(0px, 1px)')
@@ -2899,9 +2943,29 @@ const Modal = class {
2899
2943
  }
2900
2944
  }
2901
2945
  }
2946
+ /**
2947
+ * When the slot changes, we need to find all the modals in the slot
2948
+ * and set the data-parent-ion-modal attribute on them so we can find them
2949
+ * and dismiss them when we get dismissed.
2950
+ * We need to do it this way because when a modal is opened, it's moved to
2951
+ * the end of the body and is no longer an actual child of the modal.
2952
+ */
2953
+ onSlotChange = ({ target }) => {
2954
+ const slot = target;
2955
+ slot.assignedElements().forEach((el) => {
2956
+ el.querySelectorAll('ion-modal').forEach((childModal) => {
2957
+ // We don't need to write to the DOM if the modal is already tagged
2958
+ // If this is a deeply nested modal, this effect should cascade so we don't
2959
+ // need to worry about another modal claiming the same child.
2960
+ if (childModal.getAttribute('data-parent-ion-modal') === null) {
2961
+ childModal.setAttribute('data-parent-ion-modal', this.el.id);
2962
+ }
2963
+ });
2964
+ });
2965
+ };
2902
2966
  async dismissNestedModals() {
2903
2967
  const nestedModals = document.querySelectorAll(`ion-modal[data-parent-ion-modal="${this.el.id}"]`);
2904
- nestedModals === null || nestedModals === void 0 ? void 0 : nestedModals.forEach(async (modal) => {
2968
+ nestedModals?.forEach(async (modal) => {
2905
2969
  await modal.dismiss(undefined, 'parent-dismissed');
2906
2970
  });
2907
2971
  }
@@ -2934,10 +2998,9 @@ const Modal = class {
2934
2998
  if (mutation.type === 'childList' && mutation.removedNodes.length > 0) {
2935
2999
  // Check if our cached original parent was removed
2936
3000
  const cachedParentWasRemoved = Array.from(mutation.removedNodes).some((node) => {
2937
- var _a, _b;
2938
3001
  const isDirectMatch = node === this.cachedOriginalParent;
2939
3002
  const isContainedMatch = this.cachedOriginalParent
2940
- ? (_b = (_a = node).contains) === null || _b === void 0 ? void 0 : _b.call(_a, this.cachedOriginalParent)
3003
+ ? node.contains?.(this.cachedOriginalParent)
2941
3004
  : false;
2942
3005
  return isDirectMatch || isContainedMatch;
2943
3006
  });
@@ -2959,8 +3022,7 @@ const Modal = class {
2959
3022
  });
2960
3023
  }
2961
3024
  cleanupParentRemovalObserver() {
2962
- var _a;
2963
- (_a = this.parentRemovalObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
3025
+ this.parentRemovalObserver?.disconnect();
2964
3026
  this.parentRemovalObserver = undefined;
2965
3027
  }
2966
3028
  onDragStart() {
@@ -3000,7 +3062,10 @@ const Modal = class {
3000
3062
  * sheets to prevent header content from getting double-offset padding).
3001
3063
  */
3002
3064
  setInitialSafeAreaOverrides() {
3003
- const context = Object.assign(Object.assign({}, this.getSafeAreaContext()), { hasCustomDimensions: hasCustomModalDimensions(this.el) });
3065
+ const context = {
3066
+ ...this.getSafeAreaContext(),
3067
+ hasCustomDimensions: hasCustomModalDimensions(this.el),
3068
+ };
3004
3069
  const safeAreaConfig = getInitialSafeAreaConfig(context);
3005
3070
  applySafeAreaOverrides(this.el, safeAreaConfig);
3006
3071
  // Set the internal offset property with the resolved root safe-area-top value
@@ -3016,7 +3081,7 @@ const Modal = class {
3016
3081
  * and whenever the root safe-area value itself changes.
3017
3082
  */
3018
3083
  updateSheetOffsetTop(safeAreaTop) {
3019
- const value = safeAreaTop !== null && safeAreaTop !== void 0 ? safeAreaTop : getRootSafeAreaTop();
3084
+ const value = safeAreaTop ?? getRootSafeAreaTop();
3020
3085
  this.el.style.setProperty('--ion-modal-offset-top', `${value}px`);
3021
3086
  }
3022
3087
  /**
@@ -3116,9 +3181,8 @@ const Modal = class {
3116
3181
  * Clears all safe-area overrides and padding.
3117
3182
  */
3118
3183
  cleanupSafeAreaOverrides() {
3119
- var _a;
3120
3184
  clearSafeAreaOverrides(this.el);
3121
- (_a = this.unsubscribeRootSafeAreaTop) === null || _a === void 0 ? void 0 : _a.call(this);
3185
+ this.unsubscribeRootSafeAreaTop?.();
3122
3186
  this.unsubscribeRootSafeAreaTop = undefined;
3123
3187
  // Remove internal sheet offset property
3124
3188
  this.el.style.removeProperty('--ion-modal-offset-top');
@@ -3128,16 +3192,24 @@ const Modal = class {
3128
3192
  render() {
3129
3193
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
3130
3194
  const showHandle = handle !== false && isSheetModal;
3131
- const theme$1 = ionicGlobal.getIonTheme(this);
3132
- const isCardModal = presentingElement !== undefined && theme$1 === 'ios';
3195
+ const mode = ionicGlobal.getIonMode(this);
3196
+ const isCardModal = presentingElement !== undefined && mode === 'ios';
3133
3197
  const isHandleCycle = handleBehavior === 'cycle';
3134
- const shape = this.getShape();
3135
3198
  const isSheetModalWithHandle = isSheetModal && showHandle;
3136
- return (index$2.h(index$2.Host, Object.assign({ key: 'cf99da2a03dd010716265401c8b6fe46a9bf0ced', "no-router": true,
3199
+ return (index$3.h(index$3.Host, { key: 'ae61e0ce9f0e062f1f30a7dc2283add15ad71a14', "no-router": true,
3137
3200
  // Allow the modal to be navigable when the handle is focusable
3138
- tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
3201
+ tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1, ...htmlAttributes, style: {
3139
3202
  zIndex: `${20000 + this.overlayIndex}`,
3140
- }, class: Object.assign({ [theme$1]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), index$2.h("ion-backdrop", { key: '91d148a13955bcda57b5d15d2613e74cc8cd5047', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme$1 === 'ios' && index$2.h("div", { key: 'bd51fa967ced9c6d574f0bb6d3c569fe53a2be59', class: "modal-shadow" }), index$2.h("div", Object.assign({ key: '45fc1228a8dfc8009c933c6cee4067c08ab27fe6',
3203
+ }, class: {
3204
+ [mode]: true,
3205
+ ['modal-default']: !isCardModal && !isSheetModal,
3206
+ [`modal-card`]: isCardModal,
3207
+ [`modal-sheet`]: isSheetModal,
3208
+ [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll,
3209
+ 'overlay-hidden': true,
3210
+ [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
3211
+ ...theme.getClassMap(this.cssClass),
3212
+ }, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, index$3.h("ion-backdrop", { key: '71298f3b3094e9935195af2591acf6c95ff4d7df', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '2580ffb95ec3470c77a66267ead4d57641d39473', class: "modal-shadow" }), index$3.h("div", { key: '652a7bf0ae78bde33b56d73bfc27a5bf6c910ac4',
3141
3213
  /*
3142
3214
  role and aria-modal must be used on the
3143
3215
  same element. They must also be set inside the
@@ -3150,11 +3222,10 @@ const Modal = class {
3150
3222
  without the tabindex focus() would be a no-op and screen readers
3151
3223
  may not properly announce the dialog and its content when it opens.
3152
3224
  */
3153
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$2.h("button", { key: '9bcc1589af7c422ee6f116aa50f62981031042ba', class: "modal-handle",
3225
+ role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (index$3.h("button", { key: '50d48904d16c7ac5b08b980b06b382a6a772b4ea', class: "modal-handle",
3154
3226
  // Prevents the handle from receiving keyboard focus when it does not cycle
3155
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", "data-focus-order": "1", ref: (el) => (this.dragHandleEl = el) })), index$2.h("slot", { key: 'd913facdd6abf0d87ba5e2d7f8b2f1c18e3ef556', onSlotchange: this.onSlotChange }))));
3227
+ 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) })), index$3.h("slot", { key: 'f6159c78c19c79a1cc2d25254e9e9c0a7488ce37', onSlotchange: this.onSlotChange }))));
3156
3228
  }
3157
- get el() { return index$2.getElement(this); }
3158
3229
  static get watchers() { return {
3159
3230
  "isOpen": [{
3160
3231
  "onIsOpenChange": 0
@@ -3174,7 +3245,6 @@ const LIFECYCLE_MAP = {
3174
3245
  ionModalDidDismiss: 'ionViewDidLeave',
3175
3246
  };
3176
3247
  Modal.style = {
3177
- ionic: modalIonicCss(),
3178
3248
  ios: modalIosCss(),
3179
3249
  md: modalMdCss()
3180
3250
  };