voyager-ionic-core 9.0.3 → 9.0.6

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 (527) 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-Hp8t4RMX.js → p-6sKRBFnK.js} +1 -1
  99. package/components/{p-qAXsfUff.js → p-B8HBLiYi.js} +1 -1
  100. package/{dist/ionic/p-Do3zTvCA.js → components/p-BEiYs-sz.js} +1 -1
  101. package/components/p-BKeulLTJ.js +4 -0
  102. package/components/{p-5ldEpNdG.js → p-BKxLivx4.js} +1 -1
  103. package/components/{p-BYJRZKHa.js → p-BLjEwM6v.js} +1 -1
  104. package/components/{p-Cd1WaN-0.js → p-BNnmwjuy.js} +1 -1
  105. package/components/{p-COO0eJOA.js → p-BSJriPuC.js} +1 -1
  106. package/components/p-BUVGbkSc.js +4 -0
  107. package/components/{p-DL13ieTa.js → p-B_tZQKpS.js} +1 -1
  108. package/components/p-BexLz2XV.js +4 -0
  109. package/components/p-BinR4_P7.js +4 -0
  110. package/components/{p-DxhHlJln.js → p-BrOSQhkA.js} +1 -1
  111. package/components/p-BriaEJK8.js +4 -0
  112. package/components/p-BsLM9eQu.js +4 -0
  113. package/components/{p-DhNuxvJH.js → p-Bu6O-veK.js} +1 -1
  114. package/{dist/ionic/p-BMiZX1LT.js → components/p-C7rB-0-1.js} +1 -1
  115. package/components/{p-6ZLn6K5e.js → p-C9ioHZq-.js} +1 -1
  116. package/components/p-CAQG0btC.js +4 -0
  117. package/components/{p-DMBiAyOR.js → p-CHHkdXfP.js} +1 -1
  118. package/components/p-CJgshb3W.js +4 -0
  119. package/components/p-CQjNc-Pz.js +4 -0
  120. package/components/{p-CJgnoKcN.js → p-CTUMJM0R.js} +1 -1
  121. package/components/{p-C4VpVfrJ.js → p-CVVUo4J1.js} +1 -1
  122. package/components/{p-B4lxwJ8N.js → p-CXy2v7GI.js} +1 -1
  123. package/components/{p-BQyuFxYc.js → p-C_NQIzjP.js} +1 -1
  124. package/components/{p-D7wDJdFn.js → p-Canp1qah.js} +1 -1
  125. package/components/p-CcQQ8oRo.js +4 -0
  126. package/components/{p-GGbIHyEF.js → p-CiFFeRH9.js} +1 -1
  127. package/components/p-CiXOsJF2.js +4 -0
  128. package/components/p-Ctw69DyZ.js +4 -0
  129. package/components/{p-C8Ck7_Eo.js → p-CvzE7FFp.js} +1 -1
  130. package/components/{p-TWw4e4sO.js → p-CzykzqAO.js} +1 -1
  131. package/components/p-D0jSx7rE.js +4 -0
  132. package/components/{p-C-NbvXu4.js → p-D4NOsSCE.js} +1 -1
  133. package/components/{p-cEN43Ahr.js → p-DGUed0uX.js} +1 -1
  134. package/components/p-DM2jMsSO.js +4 -0
  135. package/components/p-DPyjiKOq.js +4 -0
  136. package/components/{p-BF48Oc0v.js → p-DSmHJ2DH.js} +1 -1
  137. package/components/{p-Fl7ZFU74.js → p-DWGgvN5e.js} +1 -1
  138. package/components/p-DlUdjUlf.js +4 -0
  139. package/components/{p-DM1gJSMP.js → p-Dlr7b3_2.js} +1 -1
  140. package/components/p-F1rV0pyK.js +4 -0
  141. package/components/{p-DFLJvuRK.js → p-LH1I_Zhd.js} +1 -1
  142. package/components/p-PPagT42x.js +4 -0
  143. package/components/{p-CqbGBmqb.js → p-RJT5zTbD.js} +1 -1
  144. package/components/p-T2dnrBya.js +4 -0
  145. package/components/p-WMQuK_Tj.js +4 -0
  146. package/components/p-eJpG4UbM.js +4 -0
  147. package/components/p-fFx6WCTj.js +4 -0
  148. package/{dist/ionic/p-BgOvhHy_.js → components/p-q2WJ5Igc.js} +1 -1
  149. package/components/{p-D5w_FlVa.js → p-y7Nhe3de.js} +1 -1
  150. package/css/core.css +1 -1
  151. package/css/core.css.map +1 -1
  152. package/css/ionic.bundle.css +1 -1
  153. package/css/ionic.bundle.css.map +1 -1
  154. package/dist/cjs/{animation-Kd1N7WTN.js → animation-BFKyYY11.js} +3 -3
  155. package/dist/cjs/{app-globals-b1G4t26O.js → app-globals-BLTzqkrC.js} +1 -1
  156. package/dist/cjs/attribute-controller-CXIeB0Mn.js +131 -0
  157. package/dist/cjs/{button-active-CQCFubJJ.js → button-active-CEQaiV9N.js} +2 -2
  158. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-BMzmHhwe.js} +3 -3
  159. package/dist/cjs/{format-bHU8N1g5.js → format-CdRlDqPs.js} +1 -1
  160. package/dist/cjs/{framework-delegate-d-fWfeI6.js → framework-delegate-DTLbqaaO.js} +1 -1
  161. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-CJVUv_GB.js} +1 -1
  162. package/dist/cjs/{helpers-7wzdhdeg.js → helpers-Crluoxqu.js} +50 -3
  163. package/dist/cjs/{index-DtvKGwdh.js → index-BAM4223M.js} +2 -2
  164. package/dist/cjs/{index-C74Q3t6a.js → index-BKpybYNI.js} +7 -8
  165. package/dist/cjs/{index-KiSZqhYS.js → index-BSD7toMO.js} +1 -1
  166. package/dist/cjs/{index-DFNrCX7M.js → index-CElfU-dK.js} +8 -9
  167. package/dist/cjs/{index-CQfEIyLK.js → index-CgXTRA_-.js} +4 -4
  168. package/dist/cjs/{index-DXoo08JC.js → index-SAR1xwtW.js} +25 -12
  169. package/dist/cjs/index.cjs.js +19 -19
  170. package/dist/cjs/{input-shims-VJIiKBKv.js → input-shims-CHghGZe-.js} +16 -17
  171. package/dist/cjs/{input.utils-EHVE2RK_.js → input.utils-BBZr0wjw.js} +1 -1
  172. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  173. package/dist/cjs/ion-action-sheet.cjs.entry.js +26 -28
  174. package/dist/cjs/ion-alert.cjs.entry.js +27 -29
  175. package/dist/cjs/ion-app_8.cjs.entry.js +72 -24
  176. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  177. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  178. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  179. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  180. package/dist/cjs/ion-button_2.cjs.entry.js +23 -34
  181. package/dist/cjs/ion-card_5.cjs.entry.js +19 -7
  182. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
  183. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  184. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  185. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  186. package/dist/cjs/ion-datetime.cjs.entry.js +34 -29
  187. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  188. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  189. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  190. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  191. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
  192. package/dist/cjs/ion-input.cjs.entry.js +12 -16
  193. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  194. package/dist/cjs/ion-item_8.cjs.entry.js +17 -8
  195. package/dist/cjs/ion-loading.cjs.entry.js +18 -20
  196. package/dist/cjs/ion-menu_3.cjs.entry.js +15 -17
  197. package/dist/cjs/ion-modal.cjs.entry.js +177 -172
  198. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
  199. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  200. package/dist/cjs/ion-picker-column.cjs.entry.js +8 -9
  201. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  202. package/dist/cjs/ion-popover.cjs.entry.js +119 -42
  203. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
  204. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  205. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  206. package/dist/cjs/ion-refresher_2.cjs.entry.js +8 -9
  207. package/dist/cjs/ion-reorder_2.cjs.entry.js +6 -7
  208. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  209. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  210. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  211. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  212. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  213. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  214. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -10
  215. package/dist/cjs/ion-select_3.cjs.entry.js +71 -53
  216. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  217. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  218. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +6 -7
  219. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  220. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  221. package/dist/cjs/ion-textarea.cjs.entry.js +11 -15
  222. package/dist/cjs/ion-toast.cjs.entry.js +49 -51
  223. package/dist/cjs/ion-toggle.cjs.entry.js +6 -7
  224. package/dist/cjs/{ionic-global-CYJNT-2P.js → ionic-global-C1h8Yi_K.js} +1 -1
  225. package/dist/cjs/ionic.cjs.js +5 -5
  226. package/dist/cjs/{ios.transition-DYGiD6gM.js → ios.transition-YFSxiyP_.js} +4 -5
  227. package/dist/cjs/{item-multiple-inputs-Dv6qrMhm.js → item-multiple-inputs-h2PyAFzG.js} +1 -1
  228. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-C-C7xMKk.js} +1 -1
  229. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-Cv-LNReK.js} +5 -3
  230. package/dist/cjs/{keyboard-controller-PtZoN2GS.js → keyboard-controller-CLcFxSnb.js} +9 -9
  231. package/dist/cjs/loader.cjs.js +4 -4
  232. package/dist/cjs/{md.transition-CrSkaoz6.js → md.transition-Cm8yg0UK.js} +4 -5
  233. package/dist/cjs/{overlays-BR21NUIG.js → overlays-C68wNDWY.js} +162 -9
  234. package/dist/cjs/{select-option-render-D8ZEjYji.js → select-option-render-C-Yh9yZG.js} +2 -2
  235. package/dist/cjs/{slot-mutation-controller-D6IjSEIh.js → slot-mutation-controller-zixZ5LyH.js} +73 -5
  236. package/dist/cjs/{status-tap-CNP5eD1R.js → status-tap-C3frTJ4c.js} +3 -3
  237. package/dist/cjs/{swipe-back-CSIJQfu5.js → swipe-back-ChrfFzIe.js} +2 -2
  238. package/dist/collection/collection-manifest.json +1 -1
  239. package/dist/collection/components/button/button.js +21 -32
  240. package/dist/collection/components/card/card.js +17 -6
  241. package/dist/collection/components/content/content.js +62 -8
  242. package/dist/collection/components/datetime/datetime.js +27 -20
  243. package/dist/collection/components/input/input.ios.css +6 -0
  244. package/dist/collection/components/input/input.js +6 -9
  245. package/dist/collection/components/input/input.md.css +6 -0
  246. package/dist/collection/components/item/item.js +15 -6
  247. package/dist/collection/components/modal/modal.ios.css +12 -1
  248. package/dist/collection/components/modal/modal.js +31 -8
  249. package/dist/collection/components/modal/modal.md.css +12 -1
  250. package/dist/collection/components/modal/safe-area-utils.js +69 -90
  251. package/dist/collection/components/modal/utils.js +7 -0
  252. package/dist/collection/components/popover/animations/ios.enter.js +20 -6
  253. package/dist/collection/components/popover/animations/md.enter.js +19 -5
  254. package/dist/collection/components/popover/utils.js +64 -13
  255. package/dist/collection/components/select/select.ios.css +1 -1
  256. package/dist/collection/components/select/select.js +67 -38
  257. package/dist/collection/components/select/select.md.css +1 -1
  258. package/dist/collection/components/textarea/textarea.ios.css +15 -1
  259. package/dist/collection/components/textarea/textarea.js +5 -8
  260. package/dist/collection/components/textarea/textarea.md.css +15 -1
  261. package/dist/collection/index.js +1 -1
  262. package/dist/collection/utils/attribute-controller.js +126 -0
  263. package/dist/collection/utils/forms/click-controller.js +70 -0
  264. package/dist/collection/utils/forms/index.js +1 -0
  265. package/dist/collection/utils/helpers.js +44 -3
  266. package/dist/collection/utils/logging/index.js +4 -0
  267. package/dist/collection/utils/overlays.js +34 -0
  268. package/dist/docs.json +9 -3
  269. package/dist/esm/{animation-BFNVlYum.js → animation-CFd8Olt3.js} +2 -2
  270. package/dist/esm/{app-globals-BgX0BGL1.js → app-globals-7GHLBkwd.js} +1 -1
  271. package/dist/esm/attribute-controller-Cn665x42.js +128 -0
  272. package/dist/esm/{button-active-BfOvDr3b.js → button-active-DMuYeDQN.js} +2 -2
  273. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CoEgIpR9.js} +1 -1
  274. package/dist/esm/{format-DDFE9jM5.js → format-C9zPmwKU.js} +1 -1
  275. package/dist/esm/{framework-delegate-BwNhx9NR.js → framework-delegate-DeT5pmPB.js} +1 -1
  276. package/dist/esm/{haptic-Cq4UAeka.js → haptic-Dxm7ZmT5.js} +1 -1
  277. package/dist/esm/{helpers-BSmc0nst.js → helpers-B54ynME_.js} +47 -4
  278. package/dist/esm/{index-C1b9CLFg.js → index--21qeSt0.js} +2 -2
  279. package/dist/esm/{index-DnA_7Bnx.js → index-B8iieOdw.js} +4 -4
  280. package/dist/esm/{index-BuPaALjU.js → index-B9jhwvmO.js} +5 -6
  281. package/dist/esm/{index-D76bbuoi.js → index-D4ZMZz_3.js} +1 -1
  282. package/dist/esm/{index-C23AVPx9.js → index-D9OR05yj.js} +26 -13
  283. package/dist/esm/{index-CJln0gS3.js → index-D_xZtbw6.js} +2 -3
  284. package/dist/esm/index.js +11 -13
  285. package/dist/esm/{input-shims-Dqk-Ou25.js → input-shims-MCrhq67U.js} +5 -6
  286. package/dist/esm/{input.utils-rqoH22pW.js → input.utils-B-IIWrwT.js} +1 -1
  287. package/dist/esm/ion-accordion_2.entry.js +3 -3
  288. package/dist/esm/ion-action-sheet.entry.js +11 -13
  289. package/dist/esm/ion-alert.entry.js +11 -13
  290. package/dist/esm/ion-app_8.entry.js +72 -24
  291. package/dist/esm/ion-avatar_3.entry.js +2 -2
  292. package/dist/esm/ion-back-button.entry.js +3 -3
  293. package/dist/esm/ion-backdrop.entry.js +2 -2
  294. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  295. package/dist/esm/ion-button_2.entry.js +23 -34
  296. package/dist/esm/ion-card_5.entry.js +19 -7
  297. package/dist/esm/ion-checkbox.entry.js +4 -4
  298. package/dist/esm/ion-chip.entry.js +2 -2
  299. package/dist/esm/ion-col_3.entry.js +2 -2
  300. package/dist/esm/ion-datetime-button.entry.js +4 -4
  301. package/dist/esm/ion-datetime.entry.js +33 -28
  302. package/dist/esm/ion-fab_3.entry.js +3 -3
  303. package/dist/esm/ion-img.entry.js +3 -3
  304. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  305. package/dist/esm/ion-input-otp.entry.js +3 -3
  306. package/dist/esm/ion-input-password-toggle.entry.js +2 -2
  307. package/dist/esm/ion-input.entry.js +12 -16
  308. package/dist/esm/ion-item-option_3.entry.js +4 -4
  309. package/dist/esm/ion-item_8.entry.js +17 -8
  310. package/dist/esm/ion-loading.entry.js +7 -9
  311. package/dist/esm/ion-menu_3.entry.js +7 -9
  312. package/dist/esm/ion-modal.entry.js +115 -110
  313. package/dist/esm/ion-nav_2.entry.js +6 -6
  314. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  315. package/dist/esm/ion-picker-column.entry.js +5 -6
  316. package/dist/esm/ion-picker.entry.js +2 -2
  317. package/dist/esm/ion-popover.entry.js +108 -31
  318. package/dist/esm/ion-progress-bar.entry.js +3 -3
  319. package/dist/esm/ion-radio_2.entry.js +4 -4
  320. package/dist/esm/ion-range.entry.js +4 -4
  321. package/dist/esm/ion-refresher_2.entry.js +8 -9
  322. package/dist/esm/ion-reorder_2.entry.js +6 -7
  323. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  324. package/dist/esm/ion-route_4.entry.js +4 -4
  325. package/dist/esm/ion-searchbar.entry.js +3 -3
  326. package/dist/esm/ion-segment-content.entry.js +1 -1
  327. package/dist/esm/ion-segment-view.entry.js +1 -1
  328. package/dist/esm/ion-segment_2.entry.js +3 -3
  329. package/dist/esm/ion-select-modal.entry.js +7 -9
  330. package/dist/esm/ion-select_3.entry.js +66 -48
  331. package/dist/esm/ion-spinner.entry.js +2 -2
  332. package/dist/esm/ion-split-pane.entry.js +2 -2
  333. package/dist/esm/ion-tab-bar_2.entry.js +6 -7
  334. package/dist/esm/ion-tab_2.entry.js +3 -3
  335. package/dist/esm/ion-text.entry.js +2 -2
  336. package/dist/esm/ion-textarea.entry.js +11 -15
  337. package/dist/esm/ion-toast.entry.js +7 -9
  338. package/dist/esm/ion-toggle.entry.js +6 -7
  339. package/dist/esm/{ionic-global-ZXjCXKH0.js → ionic-global-B-G43ddm.js} +1 -1
  340. package/dist/esm/ionic.js +6 -6
  341. package/dist/esm/{ios.transition-CWAgfQ1r.js → ios.transition-CRfGj4Mo.js} +4 -5
  342. package/dist/esm/{item-multiple-inputs-DZnIiOO_.js → item-multiple-inputs-BSD9wGHO.js} +1 -1
  343. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-DDw62P0D.js} +5 -3
  344. package/dist/esm/{keyboard-controller-DEwoa1ev.js → keyboard-controller-Dzjet5wD.js} +2 -2
  345. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-ly3M0GO7.js} +1 -1
  346. package/dist/esm/loader.js +5 -5
  347. package/dist/esm/{md.transition-ZuqDDdDW.js → md.transition-wqThNy_C.js} +4 -5
  348. package/dist/esm/{overlays-DKE0DgvE.js → overlays-BQnV0HAU.js} +156 -7
  349. package/dist/esm/{select-option-render-CRP_teb1.js → select-option-render-CGxPejmz.js} +2 -2
  350. package/dist/esm/{slot-mutation-controller-B5NpUZ-N.js → slot-mutation-controller-C3s4-_YN.js} +69 -3
  351. package/dist/esm/{status-tap-Cv9gb3ja.js → status-tap-DRx9wSD_.js} +3 -3
  352. package/dist/esm/{swipe-back-De5HlmeM.js → swipe-back-CXmdi75W.js} +2 -2
  353. package/dist/ionic/index.esm.js +1 -1
  354. package/dist/ionic/ionic.esm.js +1 -1
  355. package/dist/ionic/{p-8b80d9f9.entry.js → p-0517aec4.entry.js} +1 -1
  356. package/dist/ionic/{p-ee09ac9d.entry.js → p-083b1119.entry.js} +1 -1
  357. package/dist/ionic/p-0ab133d6.entry.js +4 -0
  358. package/dist/ionic/{p-271c3640.entry.js → p-1110da0d.entry.js} +1 -1
  359. package/dist/ionic/p-1213b719.entry.js +4 -0
  360. package/dist/ionic/p-150f350e.entry.js +4 -0
  361. package/dist/ionic/{p-38b9375b.entry.js → p-20d1ac29.entry.js} +1 -1
  362. package/dist/ionic/p-24b0a961.entry.js +4 -0
  363. package/dist/ionic/{p-f0fb23c1.entry.js → p-2e6e933d.entry.js} +1 -1
  364. package/dist/ionic/p-30dcf43b.entry.js +4 -0
  365. package/dist/ionic/p-336ea4b8.entry.js +4 -0
  366. package/dist/ionic/{p-b9b4e85d.entry.js → p-378341d1.entry.js} +1 -1
  367. package/dist/ionic/{p-191a651e.entry.js → p-37f46670.entry.js} +1 -1
  368. package/dist/ionic/p-3a5faaa8.entry.js +4 -0
  369. package/dist/ionic/{p-efc0cf82.entry.js → p-3c4b0ba7.entry.js} +1 -1
  370. package/dist/ionic/p-42b2a992.entry.js +4 -0
  371. package/dist/ionic/p-49a16200.entry.js +4 -0
  372. package/dist/ionic/{p-837db1b9.entry.js → p-4dbb2f4f.entry.js} +1 -1
  373. package/dist/ionic/p-52dc3309.entry.js +4 -0
  374. package/dist/ionic/{p-85599fe3.entry.js → p-58f914ee.entry.js} +1 -1
  375. package/dist/ionic/{p-561af487.entry.js → p-5b9666be.entry.js} +1 -1
  376. package/dist/ionic/p-5c19330c.entry.js +4 -0
  377. package/dist/ionic/{p-3bba83ee.entry.js → p-61b304c8.entry.js} +1 -1
  378. package/dist/ionic/p-624f2fa8.entry.js +4 -0
  379. package/dist/ionic/p-636349e2.entry.js +4 -0
  380. package/dist/ionic/{p-d8c138d9.entry.js → p-6865f0e1.entry.js} +1 -1
  381. package/dist/ionic/p-7441ed2b.entry.js +4 -0
  382. package/dist/ionic/p-76309bab.entry.js +4 -0
  383. package/dist/ionic/p-83448626.entry.js +4 -0
  384. package/dist/ionic/{p-5d9094ac.entry.js → p-834afcf7.entry.js} +1 -1
  385. package/dist/ionic/{p-099b7f9f.entry.js → p-93cd738b.entry.js} +1 -1
  386. package/dist/ionic/{p-d6755739.entry.js → p-9b78fedf.entry.js} +1 -1
  387. package/dist/ionic/p-9dd9788c.entry.js +4 -0
  388. package/dist/ionic/{p-DYUjHcuH.js → p-B4ELlbJE.js} +1 -1
  389. package/dist/ionic/p-B4wzg4z4.js +4 -0
  390. package/dist/ionic/p-B4xjg_Qu.js +4 -0
  391. package/dist/ionic/{p-T71k3C35.js → p-BCgqWm-V.js} +1 -1
  392. package/dist/ionic/p-BChRVdVv.js +4 -0
  393. package/dist/ionic/{p-DTxBioUO.js → p-BUB5OrpU.js} +1 -1
  394. package/dist/ionic/p-BVEsh7-M.js +4 -0
  395. package/dist/ionic/p-Ba6ZV-qU.js +4 -0
  396. package/dist/ionic/{p-D7jHfs0Y.js → p-BhMQahM6.js} +1 -1
  397. package/dist/ionic/p-BtHAx8im.js +4 -0
  398. package/dist/ionic/{p-DZ6Hmc-8.js → p-Bv-6401R.js} +1 -1
  399. package/dist/ionic/{p-C8XilMh0.js → p-CCik51Nv.js} +1 -1
  400. package/dist/ionic/p-CTmJSZcs.js +4 -0
  401. package/dist/ionic/{p-BaeKWZ-a.js → p-CVwXN07G.js} +1 -1
  402. package/dist/ionic/p-CgQdInM0.js +4 -0
  403. package/{components/p-BJr2B5hZ.js → dist/ionic/p-CrAPHbJ3.js} +1 -1
  404. package/dist/ionic/p-CsWrz1c2.js +4 -0
  405. package/dist/ionic/p-D5akOqD0.js +4 -0
  406. package/dist/ionic/{p-C23AVPx9.js → p-D9OR05yj.js} +2 -2
  407. package/dist/ionic/p-DHf9V6zI.js +4 -0
  408. package/dist/ionic/{p-Bd72UYI2.js → p-DNxEB9-T.js} +1 -1
  409. package/dist/ionic/p-DZUqAr_6.js +4 -0
  410. package/dist/ionic/{p-CM5OBjTW.js → p-DffXRKHu.js} +1 -1
  411. package/dist/ionic/{p-BMPN55of.js → p-DxvRP6ld.js} +1 -1
  412. package/dist/ionic/p-Dzew6Qv7.js +4 -0
  413. package/dist/ionic/p-PkaVMJga.js +4 -0
  414. package/dist/ionic/{p-4712a8a9.entry.js → p-b0a3dd1a.entry.js} +1 -1
  415. package/dist/ionic/p-b1164028.entry.js +4 -0
  416. package/dist/ionic/{p-ca1b8865.entry.js → p-b710b4b8.entry.js} +1 -1
  417. package/dist/ionic/{p-6e386853.entry.js → p-b9659d21.entry.js} +1 -1
  418. package/dist/ionic/{p-68cc89a6.entry.js → p-ba7bd621.entry.js} +1 -1
  419. package/dist/ionic/{p-db449915.entry.js → p-c2a23101.entry.js} +1 -1
  420. package/dist/ionic/p-daaecea3.entry.js +4 -0
  421. package/dist/ionic/p-e05073f6.entry.js +4 -0
  422. package/dist/ionic/{p-90f50a65.entry.js → p-e137f724.entry.js} +1 -1
  423. package/dist/ionic/p-e1969fd1.entry.js +4 -0
  424. package/dist/ionic/{p-7fbb3319.entry.js → p-e338693a.entry.js} +1 -1
  425. package/dist/ionic/p-e4c3f17f.entry.js +4 -0
  426. package/dist/ionic/p-e7414c33.entry.js +4 -0
  427. package/dist/ionic/{p-dd01be0a.entry.js → p-eb762f80.entry.js} +1 -1
  428. package/dist/ionic/{p-ec00fd0d.entry.js → p-edcb63e5.entry.js} +1 -1
  429. package/dist/ionic/p-f19e50f8.entry.js +4 -0
  430. package/dist/ionic/p-f9057f70.entry.js +4 -0
  431. package/dist/ionic/{p-9c5f2691.entry.js → p-f99cf5aa.entry.js} +1 -1
  432. package/dist/ionic/{p-54cbb0a7.entry.js → p-fee863dc.entry.js} +1 -1
  433. package/dist/ionic/p-kKvGoaEe.js +4 -0
  434. package/dist/ionic/p-tXpzvta8.js +4 -0
  435. package/dist/ionic/p-vPo3vRFc.js +4 -0
  436. package/dist/types/components/button/button.d.ts +3 -12
  437. package/dist/types/components/card/card.d.ts +3 -1
  438. package/dist/types/components/content/content.d.ts +28 -3
  439. package/dist/types/components/datetime/datetime.d.ts +5 -10
  440. package/dist/types/components/input/input.d.ts +1 -0
  441. package/dist/types/components/item/item.d.ts +1 -1
  442. package/dist/types/components/modal/modal.d.ts +9 -1
  443. package/dist/types/components/modal/safe-area-utils.d.ts +28 -14
  444. package/dist/types/components/modal/utils.d.ts +4 -0
  445. package/dist/types/components/popover/utils.d.ts +16 -3
  446. package/dist/types/components/select/select.d.ts +11 -0
  447. package/dist/types/components/textarea/textarea.d.ts +1 -0
  448. package/dist/types/components.d.ts +1 -1
  449. package/dist/types/index.d.ts +1 -1
  450. package/dist/types/stencil-public-runtime.d.ts +61 -55
  451. package/dist/types/utils/attribute-controller.d.ts +56 -0
  452. package/dist/types/utils/forms/click-controller.d.ts +36 -0
  453. package/dist/types/utils/forms/index.d.ts +1 -0
  454. package/dist/types/utils/helpers.d.ts +27 -2
  455. package/dist/types/utils/logging/index.d.ts +4 -0
  456. package/dist/types/utils/overlays.d.ts +15 -0
  457. package/hydrate/index.js +808 -292
  458. package/hydrate/index.mjs +808 -292
  459. package/package.json +3 -3
  460. package/components/p-1sJ0ZDPe.js +0 -4
  461. package/components/p-B1_TL6RQ.js +0 -4
  462. package/components/p-BT9-hMMz.js +0 -4
  463. package/components/p-BU8a2IhR.js +0 -4
  464. package/components/p-BW_SlU2D.js +0 -4
  465. package/components/p-BWoa-cki.js +0 -4
  466. package/components/p-BgkOsq-d.js +0 -4
  467. package/components/p-Bi-it1EH.js +0 -4
  468. package/components/p-C09TXohi.js +0 -4
  469. package/components/p-CG_zZq_I.js +0 -4
  470. package/components/p-CMRYD_yR.js +0 -4
  471. package/components/p-CNLioZ3B.js +0 -4
  472. package/components/p-CWAks_S_.js +0 -4
  473. package/components/p-CrAKlX71.js +0 -4
  474. package/components/p-Ctop2IWW.js +0 -4
  475. package/components/p-Cw6WocLJ.js +0 -4
  476. package/components/p-DZRZic9C.js +0 -4
  477. package/components/p-DiuOa1vw.js +0 -4
  478. package/components/p-Djmz-ssp.js +0 -4
  479. package/components/p-DnBNYc7u.js +0 -4
  480. package/components/p-DwSXbQSz.js +0 -4
  481. package/components/p-M34T2gyX.js +0 -4
  482. package/components/p-YjMkHuvH.js +0 -4
  483. package/dist/cjs/hardware-back-button-Bu4Dzw8l.js +0 -121
  484. package/dist/cjs/index-DkNv4J_i.js +0 -10
  485. package/dist/esm/hardware-back-button-DmkiRgOT.js +0 -115
  486. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  487. package/dist/ionic/p-0dcb7bb6.entry.js +0 -4
  488. package/dist/ionic/p-1347880c.entry.js +0 -4
  489. package/dist/ionic/p-1f24cb24.entry.js +0 -4
  490. package/dist/ionic/p-2ea4bb36.entry.js +0 -4
  491. package/dist/ionic/p-338a02e0.entry.js +0 -4
  492. package/dist/ionic/p-3e01c744.entry.js +0 -4
  493. package/dist/ionic/p-458715a9.entry.js +0 -4
  494. package/dist/ionic/p-4c3e50f8.entry.js +0 -4
  495. package/dist/ionic/p-5906ea6f.entry.js +0 -4
  496. package/dist/ionic/p-5cc09b40.entry.js +0 -4
  497. package/dist/ionic/p-612ea3b1.entry.js +0 -4
  498. package/dist/ionic/p-77c96e08.entry.js +0 -4
  499. package/dist/ionic/p-7bfeccb3.entry.js +0 -4
  500. package/dist/ionic/p-7e394cc3.entry.js +0 -4
  501. package/dist/ionic/p-803059b6.entry.js +0 -4
  502. package/dist/ionic/p-9595e305.entry.js +0 -4
  503. package/dist/ionic/p-9ee9c5b6.entry.js +0 -4
  504. package/dist/ionic/p-BY6BzzPF.js +0 -4
  505. package/dist/ionic/p-BhamHSw3.js +0 -4
  506. package/dist/ionic/p-BijjLYjT.js +0 -4
  507. package/dist/ionic/p-CER8qW8Y.js +0 -4
  508. package/dist/ionic/p-CFuOr1Tu.js +0 -4
  509. package/dist/ionic/p-CIGNaXM1.js +0 -4
  510. package/dist/ionic/p-CMZYmFb4.js +0 -4
  511. package/dist/ionic/p-CkxVYPtX.js +0 -4
  512. package/dist/ionic/p-CmXuiRT6.js +0 -4
  513. package/dist/ionic/p-D5t_-oMk.js +0 -4
  514. package/dist/ionic/p-D6rHcCvc.js +0 -4
  515. package/dist/ionic/p-DLM95R4x.js +0 -4
  516. package/dist/ionic/p-D_gb-kdd.js +0 -4
  517. package/dist/ionic/p-DajLgJ4d.js +0 -4
  518. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  519. package/dist/ionic/p-a8df96c8.entry.js +0 -4
  520. package/dist/ionic/p-a8ff2489.entry.js +0 -4
  521. package/dist/ionic/p-aff52029.entry.js +0 -4
  522. package/dist/ionic/p-b3532b8d.entry.js +0 -4
  523. package/dist/ionic/p-cc4320d3.entry.js +0 -4
  524. package/dist/ionic/p-d526798a.entry.js +0 -4
  525. package/dist/ionic/p-f83b3e0c.entry.js +0 -4
  526. package/dist/ionic/p-fa50d493.entry.js +0 -4
  527. package/dist/ionic/p-zWf7R2xV.js +0 -4
@@ -3,14 +3,129 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index$1 = require('./index-DkNv4J_i.js');
7
- var helpers = require('./helpers-7wzdhdeg.js');
8
- var hardwareBackButton = require('./hardware-back-button-Bu4Dzw8l.js');
9
- var index = require('./index-DXoo08JC.js');
10
- var ionicGlobal = require('./ionic-global-CYJNT-2P.js');
11
- var frameworkDelegate = require('./framework-delegate-d-fWfeI6.js');
6
+ var helpers = require('./helpers-Crluoxqu.js');
7
+ var index = require('./index-SAR1xwtW.js');
8
+ var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
9
+ var frameworkDelegate = require('./framework-delegate-DTLbqaaO.js');
12
10
  var gestureController = require('./gesture-controller-CeJslptU.js');
13
11
 
12
+ /**
13
+ * CloseWatcher is a newer API that lets
14
+ * use detect the hardware back button event
15
+ * in a web browser: https://caniuse.com/?search=closewatcher
16
+ * However, not every browser supports it yet.
17
+ *
18
+ * This needs to be a function so that we can
19
+ * check the config once it has been set.
20
+ * Otherwise, this code would be evaluated the
21
+ * moment this file is evaluated which could be
22
+ * before the config is set.
23
+ */
24
+ const shouldUseCloseWatcher = () => index.config.get('experimentalCloseWatcher', false) && helpers.win !== undefined && 'CloseWatcher' in helpers.win;
25
+ /**
26
+ * When hardwareBackButton: false in config,
27
+ * we need to make sure we also block the default
28
+ * webview behavior. If we don't then it will be
29
+ * possible for users to navigate backward while
30
+ * an overlay is still open. Additionally, it will
31
+ * give the appearance that the hardwareBackButton
32
+ * config is not working as the page transition
33
+ * will still happen.
34
+ */
35
+ const blockHardwareBackButton = () => {
36
+ document.addEventListener('backbutton', () => { });
37
+ };
38
+ const startHardwareBackButton = () => {
39
+ const doc = document;
40
+ let busy = false;
41
+ const backButtonCallback = () => {
42
+ if (busy) {
43
+ return;
44
+ }
45
+ let index$1 = 0;
46
+ let handlers = [];
47
+ const ev = new CustomEvent('ionBackButton', {
48
+ bubbles: false,
49
+ detail: {
50
+ register(priority, handler) {
51
+ handlers.push({ priority, handler, id: index$1++ });
52
+ },
53
+ },
54
+ });
55
+ doc.dispatchEvent(ev);
56
+ const executeAction = async (handlerRegister) => {
57
+ try {
58
+ if (handlerRegister?.handler) {
59
+ const result = handlerRegister.handler(processHandlers);
60
+ if (result != null) {
61
+ await result;
62
+ }
63
+ }
64
+ }
65
+ catch (e) {
66
+ index.printIonError('[ion-app] - Exception in startHardwareBackButton:', e);
67
+ }
68
+ };
69
+ const processHandlers = () => {
70
+ if (handlers.length > 0) {
71
+ let selectedHandler = {
72
+ priority: Number.MIN_SAFE_INTEGER,
73
+ handler: () => undefined,
74
+ id: -1,
75
+ };
76
+ handlers.forEach((handler) => {
77
+ if (handler.priority >= selectedHandler.priority) {
78
+ selectedHandler = handler;
79
+ }
80
+ });
81
+ busy = true;
82
+ handlers = handlers.filter((handler) => handler.id !== selectedHandler.id);
83
+ executeAction(selectedHandler).then(() => (busy = false));
84
+ }
85
+ };
86
+ processHandlers();
87
+ };
88
+ /**
89
+ * If the CloseWatcher is defined then
90
+ * we don't want to also listen for the native
91
+ * backbutton event otherwise we may get duplicate
92
+ * events firing.
93
+ */
94
+ if (shouldUseCloseWatcher()) {
95
+ let watcher;
96
+ const configureWatcher = () => {
97
+ watcher?.destroy();
98
+ watcher = new helpers.win.CloseWatcher();
99
+ /**
100
+ * Once a close request happens
101
+ * the watcher gets destroyed.
102
+ * As a result, we need to re-configure
103
+ * the watcher so we can respond to other
104
+ * close requests.
105
+ */
106
+ watcher.onclose = () => {
107
+ backButtonCallback();
108
+ configureWatcher();
109
+ };
110
+ };
111
+ configureWatcher();
112
+ }
113
+ else {
114
+ doc.addEventListener('backbutton', backButtonCallback);
115
+ }
116
+ };
117
+ const OVERLAY_BACK_BUTTON_PRIORITY = 100;
118
+ const MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays
119
+
120
+ var hardwareBackButton = /*#__PURE__*/Object.freeze({
121
+ __proto__: null,
122
+ MENU_BACK_BUTTON_PRIORITY: MENU_BACK_BUTTON_PRIORITY,
123
+ OVERLAY_BACK_BUTTON_PRIORITY: OVERLAY_BACK_BUTTON_PRIORITY,
124
+ blockHardwareBackButton: blockHardwareBackButton,
125
+ shouldUseCloseWatcher: shouldUseCloseWatcher,
126
+ startHardwareBackButton: startHardwareBackButton
127
+ });
128
+
14
129
  /**
15
130
  * This query string selects elements that
16
131
  * are eligible to receive focus. We select
@@ -407,7 +522,7 @@ const connectListeners = (doc) => {
407
522
  doc.addEventListener('ionBackButton', (ev) => {
408
523
  const lastOverlay = getPresentedOverlay(doc);
409
524
  if (lastOverlay?.backdropDismiss) {
410
- ev.detail.register(hardwareBackButton.OVERLAY_BACK_BUTTON_PRIORITY, () => {
525
+ ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, () => {
411
526
  /**
412
527
  * Do not return this promise otherwise
413
528
  * the hardware back button utility will
@@ -430,7 +545,7 @@ const connectListeners = (doc) => {
430
545
  * this behavior will be handled via the ionBackButton
431
546
  * event.
432
547
  */
433
- if (!hardwareBackButton.shouldUseCloseWatcher()) {
548
+ if (!shouldUseCloseWatcher()) {
434
549
  doc.addEventListener('keydown', (ev) => {
435
550
  if (ev.key === 'Escape') {
436
551
  const lastOverlay = getPresentedOverlay(doc);
@@ -716,7 +831,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
716
831
  if (!overlay.presented) {
717
832
  return false;
718
833
  }
719
- const presentedOverlays = index$1.doc !== undefined ? getPresentedOverlays(index$1.doc) : [];
834
+ const presentedOverlays = helpers.doc !== undefined ? getPresentedOverlays(helpers.doc) : [];
720
835
  /**
721
836
  * For accessibility, toasts lack focus traps and don't receive
722
837
  * `aria-hidden` on the root element when presented.
@@ -845,6 +960,40 @@ const safeCall = (handler, arg) => {
845
960
  }
846
961
  return undefined;
847
962
  };
963
+ /**
964
+ * `--width` and `--height` values that leave an overlay spanning the viewport
965
+ * on that axis, so it reaches both edges. An empty value means the property
966
+ * was never overridden.
967
+ */
968
+ const FULLSCREEN_SIZES = ['', '100%', '100vw', '100vh', '100dvw', '100dvh', '100svw', '100svh'];
969
+ /**
970
+ * `--width` and `--height` values that size an overlay to its content, leaving
971
+ * the rendered size dependent on the content and on `--max-width` or
972
+ * `--max-height`.
973
+ */
974
+ const CONTENT_SIZES = ['auto', 'fit-content', 'min-content', 'max-content'];
975
+ /**
976
+ * How an overlay's `--width` or `--height` determines its used size:
977
+ *
978
+ * `fullscreen` spans the viewport on that axis. `content` depends on the
979
+ * overlay's content, so its used size is not known until layout. `definite`
980
+ * resolves independently of the overlay's content size.
981
+ *
982
+ * Values are lowercased because CSS keywords are case-insensitive, while a
983
+ * custom property preserves the case in which it was authored. Content values
984
+ * are matched as a suffix so vendor-prefixed values such as `-moz-fit-content`
985
+ * are recognized.
986
+ */
987
+ const getOverlaySizeType = (size) => {
988
+ const value = size.trim().toLowerCase();
989
+ if (FULLSCREEN_SIZES.includes(value)) {
990
+ return 'fullscreen';
991
+ }
992
+ if (CONTENT_SIZES.some((keyword) => value.endsWith(keyword))) {
993
+ return 'content';
994
+ }
995
+ return 'definite';
996
+ };
848
997
  const BACKDROP = 'backdrop';
849
998
  const GESTURE = 'gesture';
850
999
  const OVERLAY_GESTURE_PRIORITY = 39;
@@ -979,6 +1128,7 @@ const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
979
1128
  exports.BACKDROP = BACKDROP;
980
1129
  exports.FOCUS_TRAP_DISABLE_CLASS = FOCUS_TRAP_DISABLE_CLASS;
981
1130
  exports.GESTURE = GESTURE;
1131
+ exports.MENU_BACK_BUTTON_PRIORITY = MENU_BACK_BUTTON_PRIORITY;
982
1132
  exports.OVERLAY_GESTURE_PRIORITY = OVERLAY_GESTURE_PRIORITY;
983
1133
  exports.actionSheetController = actionSheetController;
984
1134
  exports.alertController = alertController;
@@ -989,7 +1139,9 @@ exports.dismiss = dismiss;
989
1139
  exports.eventMethod = eventMethod;
990
1140
  exports.focusFirstDescendant = focusFirstDescendant;
991
1141
  exports.focusLastDescendant = focusLastDescendant;
1142
+ exports.getOverlaySizeType = getOverlaySizeType;
992
1143
  exports.getPresentedOverlay = getPresentedOverlay;
1144
+ exports.hardwareBackButton = hardwareBackButton;
993
1145
  exports.isCancel = isCancel;
994
1146
  exports.loadingController = loadingController;
995
1147
  exports.modalController = modalController;
@@ -999,4 +1151,5 @@ exports.present = present;
999
1151
  exports.restoreRootFocusTrapAccessibility = restoreRootFocusTrapAccessibility;
1000
1152
  exports.safeCall = safeCall;
1001
1153
  exports.setOverlayId = setOverlayId;
1154
+ exports.shouldUseCloseWatcher = shouldUseCloseWatcher;
1002
1155
  exports.toastController = toastController;
@@ -3,8 +3,8 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DXoo08JC.js');
7
- var index$1 = require('./index-KiSZqhYS.js');
6
+ var index = require('./index-SAR1xwtW.js');
7
+ var index$1 = require('./index-BSD7toMO.js');
8
8
 
9
9
  /**
10
10
  * Converts a DOM node into a Stencil VNode (or text string) so the
@@ -3,8 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DkNv4J_i.js');
7
- var helpers = require('./helpers-7wzdhdeg.js');
6
+ var helpers = require('./helpers-Crluoxqu.js');
8
7
  var dir = require('./dir-zwDPRE5K.js');
9
8
 
10
9
  /**
@@ -96,8 +95,8 @@ const createNotchController = (el, getNotchSpacerEl, getLabelSlot) => {
96
95
  */
97
96
  width === 0 &&
98
97
  notchSpacerEl.offsetParent === null &&
99
- index.win !== undefined &&
100
- 'IntersectionObserver' in index.win) {
98
+ helpers.win !== undefined &&
99
+ 'IntersectionObserver' in helpers.win) {
101
100
  /**
102
101
  * If there is an IO already attached
103
102
  * then that will update the notch
@@ -281,6 +280,73 @@ const createStartContainerController = (el, getStartContainer, shouldApplyAdjust
281
280
  };
282
281
  };
283
282
 
283
+ /**
284
+ * The content slotted into a form control's start or end slot that a click
285
+ * started on, or `null` when the click did not start on slotted content.
286
+ *
287
+ * The slotted element is compared against the host in case the form control
288
+ * itself is slotted into, for example, an item. Without that check a control
289
+ * carrying slot="start"/"end" would treat every click on itself as a slotted
290
+ * click.
291
+ */
292
+ const getSlottedClickContent = (ev, el) => {
293
+ const slotted = ev.target.closest('[slot="start"], [slot="end"]');
294
+ return slotted !== null && slotted !== el && el.contains(slotted) ? slotted : null;
295
+ };
296
+ /**
297
+ * Whether a click started on content slotted into a form control's start or
298
+ * end slot.
299
+ */
300
+ const isSlottedClick = (ev, el) => getSlottedClickContent(ev, el) !== null;
301
+ /**
302
+ * A utility for form components that wrap their content in a <label>, such as
303
+ * ion-input, ion-textarea and ion-select.
304
+ *
305
+ * Clicking slotted content also clicks that label, and the browser follows it
306
+ * with a click on the label's control. That second click would be emitted from
307
+ * the host as a duplicate, so the slotted click is remembered and the click
308
+ * that follows it is suppressed.
309
+ *
310
+ * Browsers skip the forwarding when the click lands on interactive content,
311
+ * such as a slotted button, so the slotted click is remembered for a frame
312
+ * rather than until a forwarded click that may never arrive.
313
+ *
314
+ * @internal
315
+ * @param el - The host element.
316
+ * @param getNativeInput - A callback returning the native form control the
317
+ * label points at, for components that have one. Those components emit the
318
+ * click from the host rather than the control, so the control's click is
319
+ * always stopped and re-dispatched from the host. Omit it for components whose
320
+ * label has no `for` attribute, such as ion-select, where the browser forwards
321
+ * to an internal control that already re-bubbles targeting the host.
322
+ */
323
+ const createClickController = (el, getNativeInput) => {
324
+ let hasSlottedClick = false;
325
+ const handleClickCapture = (ev) => {
326
+ if (isSlottedClick(ev, el)) {
327
+ hasSlottedClick = true;
328
+ helpers.raf(() => (hasSlottedClick = false));
329
+ return;
330
+ }
331
+ if (getNativeInput === undefined) {
332
+ if (hasSlottedClick) {
333
+ ev.stopPropagation();
334
+ hasSlottedClick = false;
335
+ }
336
+ return;
337
+ }
338
+ const nativeInput = getNativeInput();
339
+ if (nativeInput !== undefined && ev.target === nativeInput) {
340
+ ev.stopPropagation();
341
+ if (!hasSlottedClick) {
342
+ el.click();
343
+ }
344
+ hasSlottedClick = false;
345
+ }
346
+ };
347
+ return { handleClickCapture };
348
+ };
349
+
284
350
  /**
285
351
  * Used to update a scoped component that uses emulated slots. This fires when
286
352
  * content is passed into the slot or when the content inside of a slot changes.
@@ -293,7 +359,7 @@ const createStartContainerController = (el, getStartContainer, shouldApplyAdjust
293
359
  const createSlotMutationController = (el, slotName, mutationCallback) => {
294
360
  let hostMutationObserver;
295
361
  let slottedContentMutationObserver;
296
- if (index.win !== undefined && 'MutationObserver' in index.win) {
362
+ if (helpers.win !== undefined && 'MutationObserver' in helpers.win) {
297
363
  const slots = Array.isArray(slotName) ? slotName : [slotName];
298
364
  hostMutationObserver = new MutationObserver((entries) => {
299
365
  for (const entry of entries) {
@@ -392,6 +458,8 @@ const createSlotMutationController = (el, slotName, mutationCallback) => {
392
458
  };
393
459
  };
394
460
 
461
+ exports.createClickController = createClickController;
395
462
  exports.createNotchController = createNotchController;
396
463
  exports.createSlotMutationController = createSlotMutationController;
397
464
  exports.createStartContainerController = createStartContainerController;
465
+ exports.getSlottedClickContent = getSlottedClickContent;
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DXoo08JC.js');
7
- var index$1 = require('./index-DtvKGwdh.js');
8
- var helpers = require('./helpers-7wzdhdeg.js');
6
+ var index = require('./index-SAR1xwtW.js');
7
+ var index$1 = require('./index-BAM4223M.js');
8
+ var helpers = require('./helpers-Crluoxqu.js');
9
9
  require('./dir-zwDPRE5K.js');
10
10
 
11
11
  const startStatusTap = () => {
@@ -3,10 +3,10 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var helpers = require('./helpers-7wzdhdeg.js');
6
+ var helpers = require('./helpers-Crluoxqu.js');
7
7
  var dir = require('./dir-zwDPRE5K.js');
8
8
  var index = require('./index-DRPqwSvU.js');
9
- require('./index-DXoo08JC.js');
9
+ require('./index-SAR1xwtW.js');
10
10
  require('./gesture-controller-CeJslptU.js');
11
11
 
12
12
  const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) => {
@@ -99,7 +99,7 @@
99
99
  "mixins": [],
100
100
  "compiler": {
101
101
  "name": "@stencil/core",
102
- "version": "4.44.2",
102
+ "version": "4.45.1",
103
103
  "typescriptVersion": "5.8.3"
104
104
  },
105
105
  "collections": [
@@ -2,7 +2,8 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { Host, forceUpdate, h } from "@stencil/core";
5
- import { inheritAriaAttributes, hasShadowDom } from "../../utils/helpers";
5
+ import { createAriaAttributeController } from "../../utils/attribute-controller";
6
+ import { hasShadowDom } from "../../utils/helpers";
6
7
  import { printIonWarning } from "../../utils/logging/index";
7
8
  import { createColorClasses, hostContext, openURL } from "../../utils/theme";
8
9
  import { getIonMode } from "../../global/ionic-global";
@@ -23,7 +24,6 @@ export class Button {
23
24
  this.inToolbar = false;
24
25
  this.formButtonEl = null;
25
26
  this.formEl = null;
26
- this.inheritedAttributes = {};
27
27
  /**
28
28
  * If `true`, the button only has an icon.
29
29
  */
@@ -82,23 +82,6 @@ export class Button {
82
82
  this.formButtonEl.disabled = disabled;
83
83
  }
84
84
  }
85
- /**
86
- * This component is used within the `ion-input-password-toggle` component
87
- * to toggle the visibility of the password input.
88
- * These attributes need to update based on the state of the password input.
89
- * Otherwise, the values will be stale.
90
- *
91
- * @param newValue
92
- * @param _oldValue
93
- * @param propName
94
- */
95
- onAriaChanged(newValue, _oldValue, propName) {
96
- this.inheritedAttributes = {
97
- ...this.inheritedAttributes,
98
- [propName]: newValue,
99
- };
100
- forceUpdate(this);
101
- }
102
85
  /**
103
86
  * This is responsible for rendering a hidden native
104
87
  * button element inside the associated form. This allows
@@ -136,7 +119,21 @@ export class Button {
136
119
  this.inToolbar = !!this.el.closest('ion-buttons');
137
120
  this.inListHeader = !!this.el.closest('ion-list-header');
138
121
  this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');
139
- this.inheritedAttributes = inheritAriaAttributes(this.el);
122
+ /**
123
+ * The ARIA state has to stay live, since `ion-input-password-toggle` rewrites
124
+ * `aria-label` and `aria-pressed` on its `ion-button` on every toggle. We keep
125
+ * `aria-disabled` out of the watch because the `<Host>` below renders it from the
126
+ * `disabled` prop and those writes would clobber a developer's value, and `role` out
127
+ * because a post-load write stays on the host too, which would put the same role on
128
+ * two elements in the accessibility tree.
129
+ */
130
+ this.ariaController = createAriaAttributeController(this.el, () => forceUpdate(this), ['aria-disabled', 'role']);
131
+ }
132
+ connectedCallback() {
133
+ this.ariaController?.init();
134
+ }
135
+ disconnectedCallback() {
136
+ this.ariaController?.destroy();
140
137
  }
141
138
  get hasIconOnly() {
142
139
  return !!this.el.querySelector('[slot="icon-only"]');
@@ -211,7 +208,8 @@ export class Button {
211
208
  }
212
209
  render() {
213
210
  const mode = getIonMode(this);
214
- const { buttonType, type, disabled, rel, target, size, href, color, expand, hasIconOnly, shape, strong, inheritedAttributes, } = this;
211
+ const { buttonType, type, disabled, rel, target, size, href, color, expand, hasIconOnly, shape, strong } = this;
212
+ const inheritedAttributes = this.ariaController?.attributes ?? {};
215
213
  const finalSize = size === undefined && this.inItem ? 'small' : size;
216
214
  const TagType = href === undefined ? 'button' : 'a';
217
215
  const attrs = TagType === 'button'
@@ -236,7 +234,7 @@ export class Button {
236
234
  {
237
235
  type !== 'button' && this.renderHiddenButton();
238
236
  }
239
- return (h(Host, { key: '82c71b8cbf3bb51e443f4aa99c375bf5be6b8dc7', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
237
+ return (h(Host, { key: 'fd42d1a5836c148cddd6c474c130ce4bb36286ea', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses(color, {
240
238
  [mode]: true,
241
239
  [buttonType]: true,
242
240
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -251,7 +249,7 @@ export class Button {
251
249
  'button-disabled': disabled,
252
250
  'ion-activatable': true,
253
251
  'ion-focusable': true,
254
- }) }, h(TagType, { key: '53f4cb366bac796ab38f609e858bc1a55fce7641', ...attrs, class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, ...inheritedAttributes }, h("span", { key: '40e127fc11c889e77b8bf02e8714f0dea83bfce7', class: "button-inner" }, h("slot", { key: 'e11c8c86d3f0894658a8999129425c9c111f5540', name: "icon-only", onSlotchange: this.slotChanged }), h("slot", { key: '105ea9259ea17036359e6fe7eced8b267ab8e0f6', name: "start" }), h("slot", { key: '0d7b0966e328a5b10b0562dacbd638dfd08d92af' }), h("slot", { key: 'c542b40685802464d69f57ecc0a7c3465d24a417', name: "end" })), mode === 'md' && h("ion-ripple-effect", { key: '46df4cbeb057b0a8daab92226121d8bbb8c0ee07', type: this.rippleType }))));
252
+ }) }, h(TagType, { key: '97dbf689ea912aed38182dbe0097a2bf5b768816', ...attrs, class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, ...inheritedAttributes }, h("span", { key: '0f1ff4c667e95a8e3dc787fee43fe529b95477b7', class: "button-inner" }, h("slot", { key: 'fc1e8b8080d02828c392e9edd6a70e0255435f82', name: "icon-only", onSlotchange: this.slotChanged }), h("slot", { key: 'c1ece4c0d935f4d023d38fee4cf529dd4123d487', name: "start" }), h("slot", { key: '970db0ee1e3633bc9cbff52eca446e4891ff6851' }), h("slot", { key: 'ef8d7d894f01dbe881f381b985620c2a482e55fe', name: "end" })), mode === 'md' && h("ion-ripple-effect", { key: 'fea5e49a54b0efd07b1bd35d9fd5d2d862a2bac1', type: this.rippleType }))));
255
253
  }
256
254
  static get is() { return "ion-button"; }
257
255
  static get encapsulation() { return "shadow"; }
@@ -647,15 +645,6 @@ export class Button {
647
645
  return [{
648
646
  "propName": "disabled",
649
647
  "methodName": "disabledChanged"
650
- }, {
651
- "propName": "aria-checked",
652
- "methodName": "onAriaChanged"
653
- }, {
654
- "propName": "aria-label",
655
- "methodName": "onAriaChanged"
656
- }, {
657
- "propName": "aria-pressed",
658
- "methodName": "onAriaChanged"
659
648
  }];
660
649
  }
661
650
  }
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { Host, h } from "@stencil/core";
5
- import { inheritAttributes } from "../../utils/helpers";
4
+ import { Host, h, forceUpdate } from "@stencil/core";
5
+ import { createAttributeController } from "../../utils/attribute-controller";
6
6
  import { createColorClasses, openURL } from "../../utils/theme";
7
7
  import { getIonMode } from "../../global/ionic-global";
8
8
  /**
@@ -12,7 +12,6 @@ import { getIonMode } from "../../global/ionic-global";
12
12
  */
13
13
  export class Card {
14
14
  constructor() {
15
- this.inheritedAriaAttributes = {};
16
15
  /**
17
16
  * If `true`, a button tag will be rendered and the card will be tappable.
18
17
  */
@@ -32,7 +31,18 @@ export class Card {
32
31
  this.routerDirection = 'forward';
33
32
  }
34
33
  componentWillLoad() {
35
- this.inheritedAriaAttributes = inheritAttributes(this.el, ['aria-label']);
34
+ /**
35
+ * Only the initial copy takes the attribute off the host, so an `aria-label` written
36
+ * after load stays on the host too. That's harmless here, because unlike `ion-item`
37
+ * the card host renders no role of its own, so nothing reads the leftover copy.
38
+ */
39
+ this.ariaController = createAttributeController(this.el, ['aria-label'], () => forceUpdate(this));
40
+ }
41
+ connectedCallback() {
42
+ this.ariaController?.init();
43
+ }
44
+ disconnectedCallback() {
45
+ this.ariaController?.destroy();
36
46
  }
37
47
  isClickable() {
38
48
  return this.href !== undefined || this.button;
@@ -42,7 +52,8 @@ export class Card {
42
52
  if (!clickable) {
43
53
  return [h("slot", null)];
44
54
  }
45
- const { href, routerAnimation, routerDirection, inheritedAriaAttributes } = this;
55
+ const { href, routerAnimation, routerDirection } = this;
56
+ const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
46
57
  const TagType = clickable ? (href === undefined ? 'button' : 'a') : 'div';
47
58
  const attrs = TagType === 'button'
48
59
  ? { type: this.type }
@@ -56,7 +67,7 @@ export class Card {
56
67
  }
57
68
  render() {
58
69
  const mode = getIonMode(this);
59
- return (h(Host, { key: '85e9b30bd81e79a0c7ac75cb3664bdcf9e4afc4d', class: createColorClasses(this.color, {
70
+ return (h(Host, { key: '104412c26f53cce36432c3bb4d9e38bbe00c5816', class: createColorClasses(this.color, {
60
71
  [mode]: true,
61
72
  'card-disabled': this.disabled,
62
73
  'ion-activatable': this.isClickable(),