voyager-ionic-core 9.0.3 → 9.0.7

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 (553) 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--cshUOAU.js +4 -0
  99. package/components/{p-BF48Oc0v.js → p-7KepMw9O.js} +1 -1
  100. package/components/p-B-5Z9djt.js +4 -0
  101. package/components/p-B02CcbPD.js +4 -0
  102. package/components/p-B4IBdPVJ.js +4 -0
  103. package/components/{p-BYJRZKHa.js → p-BMHdI-wb.js} +1 -1
  104. package/components/p-BODcC-C0.js +4 -0
  105. package/components/{p-D7wDJdFn.js → p-Ba9_OzSY.js} +1 -1
  106. package/components/{p-DMBiAyOR.js → p-BqyLLYLm.js} +1 -1
  107. package/components/{p-BQyuFxYc.js → p-C1AxSUnp.js} +1 -1
  108. package/components/p-C7r5Gja6.js +4 -0
  109. package/components/{p-D5w_FlVa.js → p-CKiqp4Vl.js} +1 -1
  110. package/components/{p-C8Ck7_Eo.js → p-C_gnmBt2.js} +1 -1
  111. package/{dist/ionic/p-DTxBioUO.js → components/p-CdrNHfZl.js} +1 -1
  112. package/components/{p-DM1gJSMP.js → p-ChkSQqfP.js} +1 -1
  113. package/components/p-ChsJlFCQ.js +4 -0
  114. package/components/{p-cEN43Ahr.js → p-CjPRDxby.js} +1 -1
  115. package/components/p-CohRJRIu.js +4 -0
  116. package/components/{p-DxhHlJln.js → p-CqvARtmt.js} +1 -1
  117. package/components/p-Ct2aBEue.js +4 -0
  118. package/components/p-CtiO6_sC.js +4 -0
  119. package/components/{p-Hp8t4RMX.js → p-CvyvLbPe.js} +1 -1
  120. package/{dist/ionic/p-BMiZX1LT.js → components/p-CwEis84J.js} +1 -1
  121. package/components/p-CxEV3Vwy.js +4 -0
  122. package/components/p-Cyajikho.js +4 -0
  123. package/components/p-D64Tyi-z.js +4 -0
  124. package/components/{p-B4lxwJ8N.js → p-DBtFJlTi.js} +1 -1
  125. package/components/p-DD92Fw3n.js +4 -0
  126. package/components/p-DDI6VLW9.js +4 -0
  127. package/components/{p-Fl7ZFU74.js → p-DHo45oj7.js} +1 -1
  128. package/components/{p-COO0eJOA.js → p-DMPsc_0r.js} +1 -1
  129. package/{dist/ionic/p-DZ6Hmc-8.js → components/p-Dbi3KqKm.js} +1 -1
  130. package/components/p-DhfJAkyd.js +4 -0
  131. package/components/p-DnGlmM4u.js +4 -0
  132. package/components/{p-CJgnoKcN.js → p-Drpw2dyl.js} +1 -1
  133. package/components/{p-5ldEpNdG.js → p-Dvyv9SMk.js} +1 -1
  134. package/components/p-GpqwNbxf.js +4 -0
  135. package/components/{p-BJr2B5hZ.js → p-HthJZjZ6.js} +1 -1
  136. package/components/p-IQN1T5zw.js +4 -0
  137. package/components/{p-DL13ieTa.js → p-KbMCbGRA.js} +1 -1
  138. package/components/p-ODGeXc3M.js +4 -0
  139. package/components/p-R4UxBukQ.js +4 -0
  140. package/components/p-TLtgwTFF.js +4 -0
  141. package/components/p-Uk13YgEc.js +4 -0
  142. package/components/{p-qAXsfUff.js → p-V1THdfzs.js} +1 -1
  143. package/components/{p-C-NbvXu4.js → p-YNnH1_Hs.js} +1 -1
  144. package/components/{p-CqbGBmqb.js → p-ZrYBjOcc.js} +1 -1
  145. package/components/p-_y7kwBO8.js +4 -0
  146. package/components/{p-GGbIHyEF.js → p-hLu-eIbb.js} +1 -1
  147. package/components/p-jsVMT15X.js +4 -0
  148. package/components/{p-TWw4e4sO.js → p-r59A3wQk.js} +1 -1
  149. package/components/p-yGD6MBgf.js +4 -0
  150. package/css/core.css +1 -1
  151. package/css/core.css.map +1 -1
  152. package/css/display.css.map +1 -1
  153. package/css/flex-utils.css.map +1 -1
  154. package/css/float-elements.css +1 -1
  155. package/css/float-elements.css.map +1 -1
  156. package/css/global.bundle.css.map +1 -1
  157. package/css/ionic.bundle.css +1 -1
  158. package/css/ionic.bundle.css.map +1 -1
  159. package/css/padding.css.map +1 -1
  160. package/css/structure.css.map +1 -1
  161. package/css/text-alignment.css.map +1 -1
  162. package/css/text-transformation.css.map +1 -1
  163. package/css/typography.css.map +1 -1
  164. package/css/utils.bundle.css +1 -1
  165. package/css/utils.bundle.css.map +1 -1
  166. package/dist/cjs/{animation-Kd1N7WTN.js → animation-DcgLg_PI.js} +3 -3
  167. package/dist/cjs/{app-globals-b1G4t26O.js → app-globals-BoFCZq0K.js} +1 -1
  168. package/dist/cjs/attribute-controller-BjTE2TOf.js +131 -0
  169. package/dist/cjs/{button-active-CQCFubJJ.js → button-active-FdsfRDY_.js} +2 -2
  170. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-C6Pp4Z7A.js} +3 -3
  171. package/dist/cjs/{format-bHU8N1g5.js → format-CVjpvAl1.js} +1 -1
  172. package/dist/cjs/{framework-delegate-d-fWfeI6.js → framework-delegate-JbKIVMzR.js} +1 -1
  173. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic--4QteuuM.js} +1 -1
  174. package/dist/cjs/{helpers-7wzdhdeg.js → helpers-Cqr69qxA.js} +50 -3
  175. package/dist/cjs/{index-KiSZqhYS.js → index-B4ONUQRp.js} +1 -1
  176. package/dist/cjs/{index-C74Q3t6a.js → index-BQpSekmz.js} +7 -8
  177. package/dist/cjs/{index-DFNrCX7M.js → index-BhWiDK25.js} +9 -9
  178. package/dist/cjs/{index-DXoo08JC.js → index-BiQyIvoc.js} +54 -28
  179. package/dist/cjs/{index-DtvKGwdh.js → index-CNaZ6SYM.js} +2 -2
  180. package/dist/cjs/{index-CQfEIyLK.js → index-DUiuw_fH.js} +4 -4
  181. package/dist/cjs/index.cjs.js +19 -19
  182. package/dist/cjs/{input-shims-VJIiKBKv.js → input-shims-2AsXPZ5m.js} +16 -17
  183. package/dist/cjs/{input.utils-EHVE2RK_.js → input.utils-Becpo0ax.js} +1 -1
  184. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  185. package/dist/cjs/ion-action-sheet.cjs.entry.js +26 -28
  186. package/dist/cjs/ion-alert.cjs.entry.js +27 -29
  187. package/dist/cjs/ion-app_8.cjs.entry.js +72 -24
  188. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  189. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  190. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  191. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  192. package/dist/cjs/ion-button_2.cjs.entry.js +23 -34
  193. package/dist/cjs/ion-card_5.cjs.entry.js +19 -7
  194. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
  195. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  196. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  197. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  198. package/dist/cjs/ion-datetime.cjs.entry.js +34 -29
  199. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  200. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  201. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  202. package/dist/cjs/ion-input-otp.cjs.entry.js +33 -8
  203. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
  204. package/dist/cjs/ion-input.cjs.entry.js +12 -16
  205. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  206. package/dist/cjs/ion-item_8.cjs.entry.js +17 -8
  207. package/dist/cjs/ion-loading.cjs.entry.js +18 -20
  208. package/dist/cjs/ion-menu_3.cjs.entry.js +18 -19
  209. package/dist/cjs/ion-modal.cjs.entry.js +177 -172
  210. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
  211. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  212. package/dist/cjs/ion-picker-column.cjs.entry.js +8 -9
  213. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  214. package/dist/cjs/ion-popover.cjs.entry.js +119 -42
  215. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
  216. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  217. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  218. package/dist/cjs/ion-refresher_2.cjs.entry.js +8 -9
  219. package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -7
  220. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  221. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  222. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  224. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  225. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  226. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -10
  227. package/dist/cjs/ion-select_3.cjs.entry.js +71 -53
  228. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  229. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  230. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -7
  231. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  232. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  233. package/dist/cjs/ion-textarea.cjs.entry.js +11 -15
  234. package/dist/cjs/ion-toast.cjs.entry.js +49 -51
  235. package/dist/cjs/ion-toggle.cjs.entry.js +6 -7
  236. package/dist/cjs/{ionic-global-CYJNT-2P.js → ionic-global-48ceLiJ6.js} +1 -1
  237. package/dist/cjs/ionic.cjs.js +5 -5
  238. package/dist/cjs/{ios.transition-DYGiD6gM.js → ios.transition-D85_rHf5.js} +4 -5
  239. package/dist/cjs/{item-multiple-inputs-Dv6qrMhm.js → item-multiple-inputs-C-hz7xrh.js} +1 -1
  240. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-BlHp4a_c.js} +1 -1
  241. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-c2_I35b-.js} +5 -3
  242. package/dist/cjs/{keyboard-controller-PtZoN2GS.js → keyboard-controller-DHS0BgXp.js} +9 -9
  243. package/dist/cjs/loader.cjs.js +4 -4
  244. package/dist/cjs/{md.transition-CrSkaoz6.js → md.transition-Ce9X1WXr.js} +4 -5
  245. package/dist/cjs/{overlays-BR21NUIG.js → overlays-CLld3axA.js} +224 -12
  246. package/dist/cjs/{select-option-render-D8ZEjYji.js → select-option-render-CzyhrkOu.js} +2 -2
  247. package/dist/cjs/{slot-mutation-controller-D6IjSEIh.js → slot-mutation-controller-ClDxh3EK.js} +73 -5
  248. package/dist/cjs/{status-tap-CNP5eD1R.js → status-tap-CDA0Y3Ad.js} +3 -3
  249. package/dist/cjs/{swipe-back-CSIJQfu5.js → swipe-back-Dy8pxJCF.js} +2 -2
  250. package/dist/collection/collection-manifest.json +1 -1
  251. package/dist/collection/components/button/button.js +21 -32
  252. package/dist/collection/components/card/card.js +17 -6
  253. package/dist/collection/components/content/content.js +62 -8
  254. package/dist/collection/components/datetime/datetime.js +27 -20
  255. package/dist/collection/components/input/input.ios.css +6 -0
  256. package/dist/collection/components/input/input.js +6 -9
  257. package/dist/collection/components/input/input.md.css +6 -0
  258. package/dist/collection/components/input-otp/input-otp.js +29 -3
  259. package/dist/collection/components/item/item.js +15 -6
  260. package/dist/collection/components/menu/menu.js +4 -3
  261. package/dist/collection/components/modal/modal.ios.css +12 -1
  262. package/dist/collection/components/modal/modal.js +31 -8
  263. package/dist/collection/components/modal/modal.md.css +12 -1
  264. package/dist/collection/components/modal/safe-area-utils.js +69 -90
  265. package/dist/collection/components/modal/utils.js +7 -0
  266. package/dist/collection/components/popover/animations/ios.enter.js +20 -6
  267. package/dist/collection/components/popover/animations/md.enter.js +19 -5
  268. package/dist/collection/components/popover/utils.js +64 -13
  269. package/dist/collection/components/select/select.ios.css +1 -1
  270. package/dist/collection/components/select/select.js +67 -38
  271. package/dist/collection/components/select/select.md.css +1 -1
  272. package/dist/collection/components/textarea/textarea.ios.css +15 -1
  273. package/dist/collection/components/textarea/textarea.js +5 -8
  274. package/dist/collection/components/textarea/textarea.md.css +15 -1
  275. package/dist/collection/index.js +1 -1
  276. package/dist/collection/utils/attribute-controller.js +126 -0
  277. package/dist/collection/utils/forms/click-controller.js +70 -0
  278. package/dist/collection/utils/forms/index.js +1 -0
  279. package/dist/collection/utils/hardware-back-button.js +41 -12
  280. package/dist/collection/utils/helpers.js +44 -3
  281. package/dist/collection/utils/logging/index.js +4 -0
  282. package/dist/collection/utils/menu-controller/index.js +2 -1
  283. package/dist/collection/utils/overlays.js +64 -4
  284. package/dist/docs.json +9 -3
  285. package/dist/esm/{animation-BFNVlYum.js → animation-DmtJpz89.js} +2 -2
  286. package/dist/esm/{app-globals-BgX0BGL1.js → app-globals-CNfpAPW6.js} +1 -1
  287. package/dist/esm/attribute-controller-DPMIcbef.js +128 -0
  288. package/dist/esm/{button-active-BfOvDr3b.js → button-active-DVk40Sjl.js} +2 -2
  289. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CHJaJ9aX.js} +1 -1
  290. package/dist/esm/{format-DDFE9jM5.js → format-Ck1cw5z7.js} +1 -1
  291. package/dist/esm/{framework-delegate-BwNhx9NR.js → framework-delegate-CDjM1vRH.js} +1 -1
  292. package/dist/esm/{haptic-Cq4UAeka.js → haptic-WXfMCob9.js} +1 -1
  293. package/dist/esm/{helpers-BSmc0nst.js → helpers-BJqKF1pr.js} +47 -4
  294. package/dist/esm/{index-DnA_7Bnx.js → index-BBASprVu.js} +4 -4
  295. package/dist/esm/{index-C23AVPx9.js → index-BpRUsN_W.js} +55 -29
  296. package/dist/esm/{index-D76bbuoi.js → index-CK8uF0iB.js} +1 -1
  297. package/dist/esm/{index-CJln0gS3.js → index-Clv8QC5L.js} +2 -3
  298. package/dist/esm/{index-BuPaALjU.js → index-DIouXecD.js} +6 -6
  299. package/dist/esm/{index-C1b9CLFg.js → index-TkLga3ma.js} +2 -2
  300. package/dist/esm/index.js +11 -13
  301. package/dist/esm/{input-shims-Dqk-Ou25.js → input-shims-C1iYF5JK.js} +5 -6
  302. package/dist/esm/{input.utils-rqoH22pW.js → input.utils-DZY_K8Po.js} +1 -1
  303. package/dist/esm/ion-accordion_2.entry.js +3 -3
  304. package/dist/esm/ion-action-sheet.entry.js +11 -13
  305. package/dist/esm/ion-alert.entry.js +11 -13
  306. package/dist/esm/ion-app_8.entry.js +72 -24
  307. package/dist/esm/ion-avatar_3.entry.js +2 -2
  308. package/dist/esm/ion-back-button.entry.js +3 -3
  309. package/dist/esm/ion-backdrop.entry.js +2 -2
  310. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  311. package/dist/esm/ion-button_2.entry.js +23 -34
  312. package/dist/esm/ion-card_5.entry.js +19 -7
  313. package/dist/esm/ion-checkbox.entry.js +4 -4
  314. package/dist/esm/ion-chip.entry.js +2 -2
  315. package/dist/esm/ion-col_3.entry.js +2 -2
  316. package/dist/esm/ion-datetime-button.entry.js +4 -4
  317. package/dist/esm/ion-datetime.entry.js +33 -28
  318. package/dist/esm/ion-fab_3.entry.js +3 -3
  319. package/dist/esm/ion-img.entry.js +3 -3
  320. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  321. package/dist/esm/ion-input-otp.entry.js +33 -8
  322. package/dist/esm/ion-input-password-toggle.entry.js +2 -2
  323. package/dist/esm/ion-input.entry.js +12 -16
  324. package/dist/esm/ion-item-option_3.entry.js +4 -4
  325. package/dist/esm/ion-item_8.entry.js +17 -8
  326. package/dist/esm/ion-loading.entry.js +7 -9
  327. package/dist/esm/ion-menu_3.entry.js +10 -11
  328. package/dist/esm/ion-modal.entry.js +115 -110
  329. package/dist/esm/ion-nav_2.entry.js +6 -6
  330. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  331. package/dist/esm/ion-picker-column.entry.js +5 -6
  332. package/dist/esm/ion-picker.entry.js +2 -2
  333. package/dist/esm/ion-popover.entry.js +108 -31
  334. package/dist/esm/ion-progress-bar.entry.js +3 -3
  335. package/dist/esm/ion-radio_2.entry.js +4 -4
  336. package/dist/esm/ion-range.entry.js +4 -4
  337. package/dist/esm/ion-refresher_2.entry.js +8 -9
  338. package/dist/esm/ion-reorder_2.entry.js +6 -7
  339. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  340. package/dist/esm/ion-route_4.entry.js +4 -4
  341. package/dist/esm/ion-searchbar.entry.js +3 -3
  342. package/dist/esm/ion-segment-content.entry.js +1 -1
  343. package/dist/esm/ion-segment-view.entry.js +1 -1
  344. package/dist/esm/ion-segment_2.entry.js +3 -3
  345. package/dist/esm/ion-select-modal.entry.js +7 -9
  346. package/dist/esm/ion-select_3.entry.js +66 -48
  347. package/dist/esm/ion-spinner.entry.js +2 -2
  348. package/dist/esm/ion-split-pane.entry.js +2 -2
  349. package/dist/esm/ion-tab-bar_2.entry.js +6 -7
  350. package/dist/esm/ion-tab_2.entry.js +3 -3
  351. package/dist/esm/ion-text.entry.js +2 -2
  352. package/dist/esm/ion-textarea.entry.js +11 -15
  353. package/dist/esm/ion-toast.entry.js +7 -9
  354. package/dist/esm/ion-toggle.entry.js +6 -7
  355. package/dist/esm/{ionic-global-ZXjCXKH0.js → ionic-global-Cep6oYzK.js} +1 -1
  356. package/dist/esm/ionic.js +6 -6
  357. package/dist/esm/{ios.transition-CWAgfQ1r.js → ios.transition-B8netzsb.js} +4 -5
  358. package/dist/esm/{item-multiple-inputs-DZnIiOO_.js → item-multiple-inputs-Bd2LO7qK.js} +1 -1
  359. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-B4Y-Gph8.js} +5 -3
  360. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-Cmqp5iZD.js} +1 -1
  361. package/dist/esm/{keyboard-controller-DEwoa1ev.js → keyboard-controller-B2NoF7bV.js} +2 -2
  362. package/dist/esm/loader.js +5 -5
  363. package/dist/esm/{md.transition-ZuqDDdDW.js → md.transition-DNCSSiXk.js} +4 -5
  364. package/dist/esm/{overlays-DKE0DgvE.js → overlays-DmDY-El7.js} +216 -10
  365. package/dist/esm/{select-option-render-CRP_teb1.js → select-option-render-BSDT9oSA.js} +2 -2
  366. package/dist/esm/{slot-mutation-controller-B5NpUZ-N.js → slot-mutation-controller-hAS2uJ7c.js} +69 -3
  367. package/dist/esm/{status-tap-Cv9gb3ja.js → status-tap-VGRBYwiC.js} +3 -3
  368. package/dist/esm/{swipe-back-De5HlmeM.js → swipe-back-tCNYR9ZM.js} +2 -2
  369. package/dist/ionic/index.esm.js +1 -1
  370. package/dist/ionic/ionic.esm.js +1 -1
  371. package/dist/ionic/{p-b9b4e85d.entry.js → p-00cd107d.entry.js} +1 -1
  372. package/dist/ionic/p-01b7e3f2.entry.js +4 -0
  373. package/dist/ionic/{p-9c5f2691.entry.js → p-0a789930.entry.js} +1 -1
  374. package/dist/ionic/p-0b09c60e.entry.js +4 -0
  375. package/dist/ionic/p-0c32c626.entry.js +4 -0
  376. package/dist/ionic/p-0f97175e.entry.js +4 -0
  377. package/dist/ionic/p-107a81a6.entry.js +4 -0
  378. package/dist/ionic/{p-ca1b8865.entry.js → p-230f510c.entry.js} +1 -1
  379. package/dist/ionic/p-27d96a9b.entry.js +4 -0
  380. package/dist/ionic/{p-db449915.entry.js → p-28251c5c.entry.js} +1 -1
  381. package/dist/ionic/{p-099b7f9f.entry.js → p-362dcd86.entry.js} +1 -1
  382. package/dist/ionic/p-4bd80334.entry.js +4 -0
  383. package/dist/ionic/p-4d785062.entry.js +4 -0
  384. package/dist/ionic/{p-efc0cf82.entry.js → p-4e4e5919.entry.js} +1 -1
  385. package/dist/ionic/{p-837db1b9.entry.js → p-4ed3c460.entry.js} +1 -1
  386. package/dist/ionic/{p-d8c138d9.entry.js → p-4f25b926.entry.js} +1 -1
  387. package/dist/ionic/{p-271c3640.entry.js → p-539d6c8e.entry.js} +1 -1
  388. package/dist/ionic/p-5bb24bce.entry.js +4 -0
  389. package/dist/ionic/p-60780b88.entry.js +4 -0
  390. package/dist/ionic/{p-54cbb0a7.entry.js → p-62c87f3d.entry.js} +1 -1
  391. package/dist/ionic/p-6317d620.entry.js +4 -0
  392. package/dist/ionic/{p-85599fe3.entry.js → p-64ac3864.entry.js} +1 -1
  393. package/dist/ionic/{p-191a651e.entry.js → p-6c7b5930.entry.js} +1 -1
  394. package/dist/ionic/{p-7fbb3319.entry.js → p-77252596.entry.js} +1 -1
  395. package/dist/ionic/p-7ce9c6f8.entry.js +4 -0
  396. package/dist/ionic/{p-8b80d9f9.entry.js → p-7db20410.entry.js} +1 -1
  397. package/dist/ionic/{p-5d9094ac.entry.js → p-7e9c2a97.entry.js} +1 -1
  398. package/dist/ionic/p-7l6ENjIV.js +4 -0
  399. package/dist/ionic/p-82abf431.entry.js +4 -0
  400. package/dist/ionic/p-8b79061e.entry.js +4 -0
  401. package/dist/ionic/{p-6e386853.entry.js → p-8c85e250.entry.js} +1 -1
  402. package/dist/ionic/{p-90f50a65.entry.js → p-8d651adb.entry.js} +1 -1
  403. package/dist/ionic/{p-dd01be0a.entry.js → p-8db08782.entry.js} +1 -1
  404. package/dist/ionic/p-91f3cd8b.entry.js +4 -0
  405. package/dist/ionic/{p-f0fb23c1.entry.js → p-930c3538.entry.js} +1 -1
  406. package/dist/ionic/{p-ee09ac9d.entry.js → p-9ffccbf1.entry.js} +1 -1
  407. package/dist/ionic/{p-CM5OBjTW.js → p-B0jcOZOE.js} +1 -1
  408. package/dist/ionic/p-B8IuTu_r.js +4 -0
  409. package/dist/ionic/p-BNXIurCt.js +4 -0
  410. package/{components/p-6ZLn6K5e.js → dist/ionic/p-BO10QT9r.js} +1 -1
  411. package/dist/ionic/p-BOLqP2-V.js +4 -0
  412. package/dist/ionic/{p-BMPN55of.js → p-BY4FwwBp.js} +1 -1
  413. package/dist/ionic/p-BdHBcCZF.js +4 -0
  414. package/{components/p-DiuOa1vw.js → dist/ionic/p-BexAj0yw.js} +1 -1
  415. package/dist/ionic/p-Bnc1L7Rk.js +4 -0
  416. package/dist/ionic/p-BpRUsN_W.js +6 -0
  417. package/dist/ionic/p-Bppj2PE0.js +4 -0
  418. package/dist/ionic/p-BuLlVedw.js +4 -0
  419. package/dist/ionic/p-Bx5x5GJV.js +4 -0
  420. package/dist/ionic/p-C1WYZOZj.js +4 -0
  421. package/dist/ionic/p-C2LaBx3E.js +4 -0
  422. package/dist/ionic/{p-Bd72UYI2.js → p-CXs4J83x.js} +1 -1
  423. package/dist/ionic/p-Co7eql8D.js +4 -0
  424. package/dist/ionic/p-D13gXhdC.js +4 -0
  425. package/dist/ionic/p-D926OmIX.js +4 -0
  426. package/dist/ionic/{p-T71k3C35.js → p-DPNVo1nr.js} +1 -1
  427. package/{components/p-C4VpVfrJ.js → dist/ionic/p-DQXtveHv.js} +1 -1
  428. package/dist/ionic/p-DXXGkPA8.js +4 -0
  429. package/dist/ionic/{p-C8XilMh0.js → p-DfvWlTdB.js} +1 -1
  430. package/dist/ionic/p-DriE1ZAo.js +4 -0
  431. package/dist/ionic/{p-D7jHfs0Y.js → p-DxftXYZp.js} +1 -1
  432. package/dist/ionic/{p-Do3zTvCA.js → p-SEecsUh7.js} +1 -1
  433. package/dist/ionic/p-a4389f13.entry.js +4 -0
  434. package/dist/ionic/p-af11d3c6.entry.js +4 -0
  435. package/dist/ionic/p-af56702e.entry.js +4 -0
  436. package/dist/ionic/{p-561af487.entry.js → p-b3aadfe8.entry.js} +1 -1
  437. package/dist/ionic/p-b5bcbbc1.entry.js +4 -0
  438. package/dist/ionic/p-b9ed3a52.entry.js +4 -0
  439. package/dist/ionic/{p-3bba83ee.entry.js → p-bfdbe24b.entry.js} +1 -1
  440. package/dist/ionic/{p-4712a8a9.entry.js → p-c250b6b0.entry.js} +1 -1
  441. package/dist/ionic/{p-38b9375b.entry.js → p-c293f854.entry.js} +1 -1
  442. package/dist/ionic/p-c81ec0e8.entry.js +4 -0
  443. package/dist/ionic/p-c83dbc12.entry.js +4 -0
  444. package/dist/ionic/p-d0e374f8.entry.js +4 -0
  445. package/dist/ionic/p-d72accc4.entry.js +4 -0
  446. package/dist/ionic/p-d9a3dfd1.entry.js +4 -0
  447. package/dist/ionic/p-e1haAYzm.js +4 -0
  448. package/dist/ionic/p-e7ab4def.entry.js +4 -0
  449. package/dist/ionic/{p-d6755739.entry.js → p-eb989dc9.entry.js} +1 -1
  450. package/dist/ionic/p-ec259ac5.entry.js +4 -0
  451. package/dist/ionic/{p-DYUjHcuH.js → p-nCAPr1Ah.js} +1 -1
  452. package/dist/types/components/button/button.d.ts +3 -12
  453. package/dist/types/components/card/card.d.ts +3 -1
  454. package/dist/types/components/content/content.d.ts +28 -3
  455. package/dist/types/components/datetime/datetime.d.ts +5 -10
  456. package/dist/types/components/input/input.d.ts +1 -0
  457. package/dist/types/components/input-otp/input-otp.d.ts +7 -0
  458. package/dist/types/components/item/item.d.ts +1 -1
  459. package/dist/types/components/modal/modal.d.ts +9 -1
  460. package/dist/types/components/modal/safe-area-utils.d.ts +28 -14
  461. package/dist/types/components/modal/utils.d.ts +4 -0
  462. package/dist/types/components/popover/utils.d.ts +16 -3
  463. package/dist/types/components/select/select.d.ts +11 -0
  464. package/dist/types/components/textarea/textarea.d.ts +1 -0
  465. package/dist/types/components.d.ts +1 -1
  466. package/dist/types/index.d.ts +1 -1
  467. package/dist/types/stencil-public-runtime.d.ts +61 -55
  468. package/dist/types/utils/attribute-controller.d.ts +56 -0
  469. package/dist/types/utils/config.d.ts +4 -1
  470. package/dist/types/utils/forms/click-controller.d.ts +36 -0
  471. package/dist/types/utils/forms/index.d.ts +1 -0
  472. package/dist/types/utils/hardware-back-button.d.ts +11 -0
  473. package/dist/types/utils/helpers.d.ts +27 -2
  474. package/dist/types/utils/logging/index.d.ts +4 -0
  475. package/dist/types/utils/overlays.d.ts +20 -2
  476. package/hydrate/index.js +1249 -484
  477. package/hydrate/index.mjs +1249 -484
  478. package/package.json +3 -3
  479. package/components/p-1sJ0ZDPe.js +0 -4
  480. package/components/p-B1_TL6RQ.js +0 -4
  481. package/components/p-BT9-hMMz.js +0 -4
  482. package/components/p-BU8a2IhR.js +0 -4
  483. package/components/p-BW_SlU2D.js +0 -4
  484. package/components/p-BWoa-cki.js +0 -4
  485. package/components/p-BgkOsq-d.js +0 -4
  486. package/components/p-Bi-it1EH.js +0 -4
  487. package/components/p-C09TXohi.js +0 -4
  488. package/components/p-CG_zZq_I.js +0 -4
  489. package/components/p-CMRYD_yR.js +0 -4
  490. package/components/p-CNLioZ3B.js +0 -4
  491. package/components/p-CWAks_S_.js +0 -4
  492. package/components/p-Cd1WaN-0.js +0 -4
  493. package/components/p-CrAKlX71.js +0 -4
  494. package/components/p-Ctop2IWW.js +0 -4
  495. package/components/p-Cw6WocLJ.js +0 -4
  496. package/components/p-DFLJvuRK.js +0 -4
  497. package/components/p-DZRZic9C.js +0 -4
  498. package/components/p-DhNuxvJH.js +0 -4
  499. package/components/p-Djmz-ssp.js +0 -4
  500. package/components/p-DnBNYc7u.js +0 -4
  501. package/components/p-DwSXbQSz.js +0 -4
  502. package/components/p-M34T2gyX.js +0 -4
  503. package/components/p-YjMkHuvH.js +0 -4
  504. package/dist/cjs/hardware-back-button-Bu4Dzw8l.js +0 -121
  505. package/dist/cjs/index-DkNv4J_i.js +0 -10
  506. package/dist/esm/hardware-back-button-DmkiRgOT.js +0 -115
  507. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  508. package/dist/ionic/p-0dcb7bb6.entry.js +0 -4
  509. package/dist/ionic/p-1347880c.entry.js +0 -4
  510. package/dist/ionic/p-1f24cb24.entry.js +0 -4
  511. package/dist/ionic/p-2ea4bb36.entry.js +0 -4
  512. package/dist/ionic/p-338a02e0.entry.js +0 -4
  513. package/dist/ionic/p-3e01c744.entry.js +0 -4
  514. package/dist/ionic/p-458715a9.entry.js +0 -4
  515. package/dist/ionic/p-4c3e50f8.entry.js +0 -4
  516. package/dist/ionic/p-5906ea6f.entry.js +0 -4
  517. package/dist/ionic/p-5cc09b40.entry.js +0 -4
  518. package/dist/ionic/p-612ea3b1.entry.js +0 -4
  519. package/dist/ionic/p-68cc89a6.entry.js +0 -4
  520. package/dist/ionic/p-77c96e08.entry.js +0 -4
  521. package/dist/ionic/p-7bfeccb3.entry.js +0 -4
  522. package/dist/ionic/p-7e394cc3.entry.js +0 -4
  523. package/dist/ionic/p-803059b6.entry.js +0 -4
  524. package/dist/ionic/p-9595e305.entry.js +0 -4
  525. package/dist/ionic/p-9ee9c5b6.entry.js +0 -4
  526. package/dist/ionic/p-BY6BzzPF.js +0 -4
  527. package/dist/ionic/p-BaeKWZ-a.js +0 -4
  528. package/dist/ionic/p-BgOvhHy_.js +0 -4
  529. package/dist/ionic/p-BhamHSw3.js +0 -4
  530. package/dist/ionic/p-BijjLYjT.js +0 -4
  531. package/dist/ionic/p-C23AVPx9.js +0 -6
  532. package/dist/ionic/p-CER8qW8Y.js +0 -4
  533. package/dist/ionic/p-CFuOr1Tu.js +0 -4
  534. package/dist/ionic/p-CIGNaXM1.js +0 -4
  535. package/dist/ionic/p-CMZYmFb4.js +0 -4
  536. package/dist/ionic/p-CkxVYPtX.js +0 -4
  537. package/dist/ionic/p-CmXuiRT6.js +0 -4
  538. package/dist/ionic/p-D5t_-oMk.js +0 -4
  539. package/dist/ionic/p-D6rHcCvc.js +0 -4
  540. package/dist/ionic/p-DLM95R4x.js +0 -4
  541. package/dist/ionic/p-D_gb-kdd.js +0 -4
  542. package/dist/ionic/p-DajLgJ4d.js +0 -4
  543. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  544. package/dist/ionic/p-a8df96c8.entry.js +0 -4
  545. package/dist/ionic/p-a8ff2489.entry.js +0 -4
  546. package/dist/ionic/p-aff52029.entry.js +0 -4
  547. package/dist/ionic/p-b3532b8d.entry.js +0 -4
  548. package/dist/ionic/p-cc4320d3.entry.js +0 -4
  549. package/dist/ionic/p-d526798a.entry.js +0 -4
  550. package/dist/ionic/p-ec00fd0d.entry.js +0 -4
  551. package/dist/ionic/p-f83b3e0c.entry.js +0 -4
  552. package/dist/ionic/p-fa50d493.entry.js +0 -4
  553. package/dist/ionic/p-zWf7R2xV.js +0 -4
@@ -1,25 +1,23 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, c as createEvent, f as printIonWarning, w as writeTask, e as config, h, d as Host, g as getElement } from './index-C23AVPx9.js';
5
- import { i as isIonContent, f as findRefresherInContent, a as findClosestIonContent, d as disableContentScrollY, r as resetContentScrollY, b as findIonContent, p as printIonContentErrorMsg } from './index-C1b9CLFg.js';
6
- import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-BwNhx9NR.js';
7
- import { g as getElementRoot, e as clamp, r as raf, b as inheritAttributes, h as hasLazyBuild } from './helpers-BSmc0nst.js';
4
+ import { r as registerInstance, d as createEvent, a as printIonWarning, w as writeTask, i as config, h, f as Host, g as getElement } from './index-BpRUsN_W.js';
5
+ import { i as isIonContent, f as findRefresherInContent, a as findClosestIonContent, d as disableContentScrollY, r as resetContentScrollY, b as findIonContent, p as printIonContentErrorMsg } from './index-TkLga3ma.js';
6
+ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-CDjM1vRH.js';
7
+ import { w as win, o as onCustomPropertyChange, g as getElementRoot, e as clamp, r as raf, b as inheritAttributes, h as hasLazyBuild } from './helpers-BJqKF1pr.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
- import { g as getCapacitor } from './capacitor-CFERIeaU.js';
10
- import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, f as dismiss, g as eventMethod } from './overlays-DKE0DgvE.js';
9
+ import { g as getCapacitor } from './capacitor-CHJaJ9aX.js';
10
+ import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, n as getOverlaySizeType, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, f as dismiss, g as eventMethod } from './overlays-DmDY-El7.js';
11
11
  import { g as getClassMap } from './theme-byZM6qHV.js';
12
- import { e as deepReady, w as waitForMount } from './index-DnA_7Bnx.js';
13
- import { b as getIonMode } from './ionic-global-ZXjCXKH0.js';
14
- import { KEYBOARD_DID_OPEN } from './keyboard-Cj8mLJeq.js';
15
- import { c as createAnimation } from './animation-BFNVlYum.js';
12
+ import { e as deepReady, w as waitForMount } from './index-BBASprVu.js';
13
+ import { b as getIonMode } from './ionic-global-Cep6oYzK.js';
14
+ import { KEYBOARD_DID_OPEN } from './keyboard-B4Y-Gph8.js';
15
+ import { c as createAnimation } from './animation-DmtJpz89.js';
16
16
  import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
17
17
  import { createGesture } from './index-BmLuEdV7.js';
18
- import { w as win } from './index-ZjP4CjeZ.js';
19
18
  import './dir-Dojwmvde.js';
20
- import './hardware-back-button-DmkiRgOT.js';
21
19
  import './gesture-controller-B_gJaBk0.js';
22
- import './keyboard-DAF8GNJ9.js';
20
+ import './keyboard-Cmqp5iZD.js';
23
21
 
24
22
  var Style;
25
23
  (function (Style) {
@@ -127,6 +125,12 @@ const setCardStatusBarDefault = (defaultStyle = Style.Default) => {
127
125
  }
128
126
  StatusBar.setStyle({ style: defaultStyle });
129
127
  };
128
+ /**
129
+ * Calls back when the modal's resolved `--height` changes.
130
+ */
131
+ const onModalHeightChange = (hostEl, callback) => {
132
+ return onCustomPropertyChange(hostEl, '--height', () => callback());
133
+ };
130
134
 
131
135
  /**
132
136
  * Swiping is only possible when the content is scrolled to the top, so that we
@@ -1655,40 +1659,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1655
1659
  };
1656
1660
  };
1657
1661
 
1658
- /**
1659
- * These thresholds match the SCSS media query breakpoints in modal.vars.scss
1660
- * that trigger the centered dialog layout (non-fullscreen modal).
1661
- *
1662
- * SCSS defines two height breakpoints: $modal-inset-min-height-small (600px)
1663
- * and $modal-inset-min-height-large (768px). We use the smaller one because
1664
- * that's the threshold where the modal transitions from fullscreen to centered
1665
- * dialog — the larger breakpoint only increases the dialog's height.
1666
- */
1667
- const MODAL_INSET_MIN_WIDTH = 768;
1668
- const MODAL_INSET_MIN_HEIGHT = 600;
1669
1662
  const EDGE_THRESHOLD = 5;
1670
- /**
1671
- * CSS values for `--width` / `--height` that are treated as fullscreen
1672
- * (modal touches the corresponding screen edges). Empty string means the
1673
- * property was not overridden. See `hasCustomModalDimensions()`.
1674
- */
1675
- const FULLSCREEN_SIZE_VALUES = new Set(['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh']);
1676
1663
  /**
1677
1664
  * Cache for resolved root safe-area-top value, invalidated once per frame.
1678
1665
  */
1679
1666
  let cachedRootSafeAreaTop = null;
1680
1667
  let cacheInvalidationScheduled = false;
1681
- /**
1682
- * Determines if the current viewport meets the CSS media query conditions
1683
- * that cause regular modals to render as centered dialogs instead of fullscreen.
1684
- * Matches: @media (min-width: 768px) and (min-height: 600px)
1685
- */
1686
- const isCenteredDialogViewport = () => {
1687
- if (!win)
1688
- return false;
1689
- return win.matchMedia(`(min-width: ${MODAL_INSET_MIN_WIDTH}px) and (min-height: ${MODAL_INSET_MIN_HEIGHT}px)`)
1690
- .matches;
1691
- };
1692
1668
  /**
1693
1669
  * Resolves the current root --ion-safe-area-top value to pixels.
1694
1670
  * Uses a temporary element because getComputedStyle on :root returns
@@ -1722,55 +1698,64 @@ const getRootSafeAreaTop = () => {
1722
1698
  return value;
1723
1699
  };
1724
1700
  /**
1725
- * Calls back when the resolved root `--ion-safe-area-top` changes, which no
1726
- * event and no window resize covers. The probe's height tracks the variable, so
1727
- * a change to it becomes a size change the observer can see.
1701
+ * Calls back when the resolved root `--ion-safe-area-top` changes. The value
1702
+ * the caller already applied is passed as the baseline, so a change between
1703
+ * that read and the observer starting is still reported.
1728
1704
  */
1729
1705
  const onRootSafeAreaTopChange = (callback) => {
1730
- const doc = win?.document;
1731
- if (!doc?.body || typeof ResizeObserver === 'undefined') {
1732
- return () => undefined;
1733
- }
1734
- const probe = doc.createElement('div');
1735
- probe.style.cssText =
1736
- 'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;' +
1737
- 'height:var(--ion-safe-area-top,0px);';
1738
- doc.body.appendChild(probe);
1739
- /**
1740
- * Seeded with the value the caller has already applied, so a change that
1741
- * lands before the observer's first delivery still gets reported. Comparing
1742
- * against an unset value instead would consume that first delivery and treat
1743
- * the new inset as the baseline.
1744
- */
1745
- let lastHeight = getRootSafeAreaTop();
1746
- const observer = new ResizeObserver((entries) => {
1747
- const { height } = entries[0].contentRect;
1748
- if (height !== lastHeight) {
1749
- lastHeight = height;
1750
- callback(height);
1751
- }
1752
- });
1753
- observer.observe(probe);
1754
- return () => {
1755
- observer.disconnect();
1756
- probe.remove();
1757
- };
1706
+ return onCustomPropertyChange(win?.document?.body, '--ion-safe-area-top', callback, getRootSafeAreaTop());
1758
1707
  };
1759
1708
  /**
1760
- * True when the modal host declares BOTH a non-fullscreen `--width` AND a
1761
- * non-fullscreen `--height` (i.e. a centered-dialog-like modal that doesn't
1762
- * touch any screen edge).
1709
+ * Determines which viewport axes the modal spans so safe-area requirements
1710
+ * can be predicted independently for each axis.
1763
1711
  *
1764
- * The conservative "both axes" check avoids mis-zeroing safe-area for
1765
- * partial-custom modals where the modal still touches top/bottom edges
1766
- * (e.g. only `--width` overridden). Partial cases fall through to the
1767
- * existing position-based post-animation correction.
1712
+ * A modal that spans an axis reaches both edges on that axis and needs the
1713
+ * corresponding safe-area insets. A modal that does not span an axis reaches
1714
+ * neither edge on that axis.
1715
+ *
1716
+ * When both `--width` and `--height` are `fullscreen`, coverage can be
1717
+ * determined directly. Otherwise, coverage is based on the rendered wrapper,
1718
+ * including cases where content sizing or `--max-height` causes the modal
1719
+ * to reach the viewport.
1768
1720
  */
1769
- const hasCustomModalDimensions = (hostEl) => {
1721
+ const getModalCoveredAxes = (hostEl) => {
1770
1722
  const styles = getComputedStyle(hostEl);
1771
- const width = styles.getPropertyValue('--width').trim();
1772
- const height = styles.getPropertyValue('--height').trim();
1773
- return !FULLSCREEN_SIZE_VALUES.has(width) && !FULLSCREEN_SIZE_VALUES.has(height);
1723
+ const width = getOverlaySizeType(styles.getPropertyValue('--width'));
1724
+ const height = getOverlaySizeType(styles.getPropertyValue('--height'));
1725
+ if (width === 'fullscreen' && height === 'fullscreen') {
1726
+ return { vertical: true, horizontal: true };
1727
+ }
1728
+ return measureCoveredAxes(hostEl);
1729
+ };
1730
+ /**
1731
+ * Measures the modal wrapper to determine whether it spans the viewport
1732
+ * on each axis.
1733
+ *
1734
+ * The wrapper has no box while the modal is hidden, so `overlay-hidden`
1735
+ * is temporarily removed to allow the wrapper to be measured. The class
1736
+ * is restored in the same task before the browser can paint.
1737
+ *
1738
+ * Only the wrapper's size is measured. Its position is affected by the
1739
+ * enter animation, which initially translates it by its own height, while
1740
+ * the translation does not affect its measured size.
1741
+ */
1742
+ const measureCoveredAxes = (hostEl) => {
1743
+ const wrapperEl = hostEl.shadowRoot?.querySelector('.modal-wrapper');
1744
+ if (wrapperEl == null || win === undefined) {
1745
+ return { vertical: false, horizontal: false };
1746
+ }
1747
+ const wasHidden = hostEl.classList.contains('overlay-hidden');
1748
+ if (wasHidden) {
1749
+ hostEl.classList.remove('overlay-hidden');
1750
+ }
1751
+ const { width, height } = wrapperEl.getBoundingClientRect();
1752
+ if (wasHidden) {
1753
+ hostEl.classList.add('overlay-hidden');
1754
+ }
1755
+ return {
1756
+ vertical: height >= win.innerHeight - EDGE_THRESHOLD,
1757
+ horizontal: width >= win.innerWidth - EDGE_THRESHOLD,
1758
+ };
1774
1759
  };
1775
1760
  /**
1776
1761
  * Returns the initial safe-area configuration based on modal type.
@@ -1804,26 +1789,23 @@ const getInitialSafeAreaConfig = (context) => {
1804
1789
  right: '0px',
1805
1790
  };
1806
1791
  }
1807
- // On viewports that meet the centered dialog media query breakpoints,
1808
- // regular modals render as centered dialogs (not fullscreen), so they
1809
- // don't touch any screen edges and don't need safe-area insets. Also
1810
- // applies to phone viewports when the modal declares custom --width and
1811
- // --height; these don't touch screen edges either, so the initial
1812
- // prediction must be zero to avoid a post-animation correction flash.
1813
- if (isCenteredDialogViewport() || context.hasCustomDimensions) {
1814
- return {
1815
- top: '0px',
1816
- bottom: '0px',
1817
- left: '0px',
1818
- right: '0px',
1819
- };
1820
- }
1821
- // Fullscreen modals on phone - inherit all safe areas
1792
+ /**
1793
+ * Each axis is evaluated independently because a modal can span one axis
1794
+ * without spanning the other. This allows the initial safe-area configuration
1795
+ * to match the modal's expected dimensions and avoids correcting an incorrect
1796
+ * pair of insets after presentation.
1797
+ *
1798
+ * A modal can span the horizontal axis while remaining inset vertically, or
1799
+ * span the vertical axis while remaining inset horizontally. Wide viewports
1800
+ * can also render regular modals as centered dialogs, while content-sized
1801
+ * modals may still be clamped to the viewport.
1802
+ */
1803
+ const { vertical, horizontal } = context.coveredAxes ?? { vertical: true, horizontal: true };
1822
1804
  return {
1823
- top: 'inherit',
1824
- bottom: 'inherit',
1825
- left: 'inherit',
1826
- right: 'inherit',
1805
+ top: vertical ? 'inherit' : '0px',
1806
+ bottom: vertical ? 'inherit' : '0px',
1807
+ left: horizontal ? 'inherit' : '0px',
1808
+ right: horizontal ? 'inherit' : '0px',
1827
1809
  };
1828
1810
  };
1829
1811
  /**
@@ -1875,9 +1857,9 @@ const clearSafeAreaOverrides = (hostEl) => {
1875
1857
  hostEl.style.removeProperty('--ion-safe-area-right');
1876
1858
  };
1877
1859
 
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}`;
1860
+ const modalIosCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:100%;--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{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;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}`;
1879
1861
 
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}`;
1862
+ const modalMdCss = () => `:host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:100%;--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{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;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}`;
1881
1863
 
1882
1864
  const Modal = class {
1883
1865
  constructor(hostRef) {
@@ -2905,7 +2887,7 @@ const Modal = class {
2905
2887
  /**
2906
2888
  * Creates the context object for safe-area utilities.
2907
2889
  *
2908
- * `hasCustomDimensions` is only set by `setInitialSafeAreaOverrides()`
2890
+ * `coveredAxes` is only set by `setInitialSafeAreaOverrides()`
2909
2891
  * because it is only read by `getInitialSafeAreaConfig()`. Other callers
2910
2892
  * (resize handler, post-animation update, fullscreen-padding apply) would
2911
2893
  * pay a `getComputedStyle()` cost for a value they never consult.
@@ -2919,6 +2901,26 @@ const Modal = class {
2919
2901
  currentBreakpoint: this.currentBreakpoint,
2920
2902
  };
2921
2903
  }
2904
+ /**
2905
+ * Keeps the content's sizing in sync with `--height`. The content reads the
2906
+ * property to determine whether it should size itself to its content, and
2907
+ * changes to `--height` on an ancestor or the root can change that behavior
2908
+ * without changing the modal itself.
2909
+ */
2910
+ watchHeightForContent() {
2911
+ /**
2912
+ * A sheet's height comes from its breakpoints, so its content never sizes
2913
+ * itself to `--height`. Watching it would cause the drag to recalculate on
2914
+ * every frame.
2915
+ */
2916
+ if (this.isSheetModal) {
2917
+ return;
2918
+ }
2919
+ this.unsubscribeHeightChange?.();
2920
+ this.unsubscribeHeightChange = onModalHeightChange(this.el, () => {
2921
+ this.el.querySelectorAll('ion-content').forEach((contentEl) => contentEl.recalculateDimensions());
2922
+ });
2923
+ }
2922
2924
  /**
2923
2925
  * Sets initial safe-area overrides before modal animation.
2924
2926
  * Called in present() before animation starts.
@@ -2932,10 +2934,11 @@ const Modal = class {
2932
2934
  setInitialSafeAreaOverrides() {
2933
2935
  const context = {
2934
2936
  ...this.getSafeAreaContext(),
2935
- hasCustomDimensions: hasCustomModalDimensions(this.el),
2937
+ coveredAxes: getModalCoveredAxes(this.el),
2936
2938
  };
2937
2939
  const safeAreaConfig = getInitialSafeAreaConfig(context);
2938
2940
  applySafeAreaOverrides(this.el, safeAreaConfig);
2941
+ this.watchHeightForContent();
2939
2942
  // Set the internal offset property with the resolved root safe-area-top value
2940
2943
  if (context.isSheetModal) {
2941
2944
  this.updateSheetOffsetTop();
@@ -3055,6 +3058,8 @@ const Modal = class {
3055
3058
  clearSafeAreaOverrides(this.el);
3056
3059
  this.unsubscribeRootSafeAreaTop?.();
3057
3060
  this.unsubscribeRootSafeAreaTop = undefined;
3061
+ this.unsubscribeHeightChange?.();
3062
+ this.unsubscribeHeightChange = undefined;
3058
3063
  // Remove internal sheet offset property
3059
3064
  this.el.style.removeProperty('--ion-modal-offset-top');
3060
3065
  const { contentEl } = this.findContentAndFooter();
@@ -3092,7 +3097,7 @@ const Modal = class {
3092
3097
  const isCardModal = presentingElement !== undefined && mode === 'ios';
3093
3098
  const isHandleCycle = handleBehavior === 'cycle';
3094
3099
  const isSheetModalWithHandle = isSheetModal && showHandle;
3095
- return (h(Host, { key: '7c9c736052c5a788cf31040b6b2386dd9ea7454b', "no-router": true,
3100
+ return (h(Host, { key: '17a95bd7722bac2344bea041aff97db17f55c0cf', "no-router": true,
3096
3101
  // Allow the modal to be navigable when the handle is focusable
3097
3102
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1, ...htmlAttributes, style: {
3098
3103
  zIndex: `${20000 + this.overlayIndex}`,
@@ -3105,7 +3110,7 @@ const Modal = class {
3105
3110
  'overlay-hidden': true,
3106
3111
  [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
3107
3112
  ...getClassMap(this.cssClass),
3108
- }, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, h("ion-backdrop", { key: '01b5b5765fb3a32393c736065c824bf760728823', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '40fa7727a0923f7d7461dd027f1511a6a148d84a', class: "modal-shadow" }), h("div", { key: '9af934b607f60795bd5bff7bee6eacfc9b14fa35',
3113
+ }, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }, h("ion-backdrop", { key: '9dab1ef4771c0d847ba2be8672afbaa2748517f3', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '64af7ed1c5f552b61fc4b9387b926acc76c8a99a', class: "modal-shadow" }), h("div", { key: '7e76d77d5b2e8f0467bb793facf5aa86f8d01bbe',
3109
3114
  /*
3110
3115
  role and aria-modal must be used on the
3111
3116
  same element. They must also be set inside the
@@ -3118,9 +3123,9 @@ const Modal = class {
3118
3123
  without the tabindex focus() would be a no-op and screen readers
3119
3124
  may not properly announce the dialog and its content when it opens.
3120
3125
  */
3121
- role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (h("button", { key: 'df84a6806413b13efc5b03c862edde83151579a7', class: "modal-handle",
3126
+ role: "dialog", ...inheritedAttributes, "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }, showHandle && (h("button", { key: '5efc0bb0a59adcc594ac48da9fd90e57908a7ffb', class: "modal-handle",
3122
3127
  // Prevents the handle from receiving keyboard focus when it does not cycle
3123
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '072d3929ec6f25481946b184d8ac24219011e783', onSlotchange: this.onSlotChange }))));
3128
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '6175fcd0b39c086b4e9eb9e96c4d631c2a86774b', onSlotchange: this.onSlotChange }))));
3124
3129
  }
3125
3130
  get el() { return getElement(this); }
3126
3131
  static get watchers() { return {
@@ -1,12 +1,12 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, c as createEvent, e as config, f as printIonWarning, h, g as getElement, d as Host } from './index-C23AVPx9.js';
4
+ import { r as registerInstance, d as createEvent, i as config, a as printIonWarning, h, g as getElement, f as Host } from './index-BpRUsN_W.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
6
- import { l as assert } from './helpers-BSmc0nst.js';
7
- import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index-DnA_7Bnx.js';
8
- import { b as getIonMode } from './ionic-global-ZXjCXKH0.js';
9
- import { a as attachComponent } from './framework-delegate-BwNhx9NR.js';
6
+ import { l as assert } from './helpers-BJqKF1pr.js';
7
+ import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index-BBASprVu.js';
8
+ import { b as getIonMode } from './ionic-global-Cep6oYzK.js';
9
+ import { a as attachComponent } from './framework-delegate-CDjM1vRH.js';
10
10
  import './dir-Dojwmvde.js';
11
11
 
12
12
  const VIEW_STATE_NEW = 1;
@@ -115,7 +115,7 @@ const Nav = class {
115
115
  // We want to set this flag before any watch callbacks are manually called
116
116
  this.didLoad = true;
117
117
  this.rootChanged();
118
- this.gesture = (await import('./swipe-back-De5HlmeM.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
118
+ this.gesture = (await import('./swipe-back-tCNYR9ZM.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
119
119
  this.swipeGestureChanged();
120
120
  }
121
121
  connectedCallback() {
@@ -1,10 +1,10 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, h, d as Host, g as getElement } from './index-C23AVPx9.js';
5
- import { b as inheritAttributes } from './helpers-BSmc0nst.js';
4
+ import { r as registerInstance, h, f as Host, g as getElement } from './index-BpRUsN_W.js';
5
+ import { b as inheritAttributes } from './helpers-BJqKF1pr.js';
6
6
  import { c as createColorClasses } from './theme-byZM6qHV.js';
7
- import { b as getIonMode } from './ionic-global-ZXjCXKH0.js';
7
+ import { b as getIonMode } from './ionic-global-Cep6oYzK.js';
8
8
  import './dir-Dojwmvde.js';
9
9
 
10
10
  const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
@@ -1,14 +1,13 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, d as Host, g as getElement } from './index-C23AVPx9.js';
5
- import { d as doc } from './index-ZjP4CjeZ.js';
6
- import { r as raf } from './helpers-BSmc0nst.js';
7
- import { h as hapticSelectionEnd, b as hapticSelectionStart, a as hapticSelectionChanged } from './haptic-Cq4UAeka.js';
8
- import { a as isPlatform, b as getIonMode } from './ionic-global-ZXjCXKH0.js';
4
+ import { r as registerInstance, d as createEvent, h, f as Host, g as getElement } from './index-BpRUsN_W.js';
5
+ import { n as doc, r as raf } from './helpers-BJqKF1pr.js';
6
+ import { h as hapticSelectionEnd, b as hapticSelectionStart, a as hapticSelectionChanged } from './haptic-WXfMCob9.js';
7
+ import { a as isPlatform, b as getIonMode } from './ionic-global-Cep6oYzK.js';
9
8
  import { c as createColorClasses } from './theme-byZM6qHV.js';
10
9
  import './dir-Dojwmvde.js';
11
- import './capacitor-CFERIeaU.js';
10
+ import './capacitor-CHJaJ9aX.js';
12
11
 
13
12
  const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.2)}:host(.ion-color:focus) .picker-opts{background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
14
13
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, d as Host, g as getElement } from './index-C23AVPx9.js';
5
- import { g as getElementRoot } from './helpers-BSmc0nst.js';
4
+ import { r as registerInstance, d as createEvent, h, f as Host, g as getElement } from './index-BpRUsN_W.js';
5
+ import { g as getElementRoot } from './helpers-BJqKF1pr.js';
6
6
  import './dir-Dojwmvde.js';
7
7
 
8
8
  const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;