@ionic/core 7.7.1 → 7.7.2-dev.11707840956.16e27b4c

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 (344) hide show
  1. package/components/action-sheet.js +7 -3
  2. package/components/alert.js +6 -2
  3. package/components/ion-loading.js +6 -2
  4. package/components/ion-modal.js +7 -3
  5. package/components/ion-picker.js +6 -2
  6. package/components/ion-toast.js +6 -2
  7. package/components/label.js +2 -2
  8. package/components/overlays.js +54 -4
  9. package/components/popover.js +7 -3
  10. package/dist/cjs/{app-globals-5a17c5e1.js → app-globals-92ad1b3d.js} +1 -1
  11. package/dist/cjs/{button-active-b8c3f603.js → button-active-2d6520ec.js} +1 -1
  12. package/dist/cjs/{hardware-back-button-d23873bb.js → hardware-back-button-2696acaf.js} +2 -2
  13. package/dist/cjs/{index-5a471146.js → index-0ffe376d.js} +25 -22
  14. package/dist/cjs/{index-8c679cbf.js → index-a43f7a0f.js} +2 -2
  15. package/dist/cjs/{index-84351d21.js → index-c3580a90.js} +3 -3
  16. package/dist/cjs/index.cjs.js +8 -8
  17. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  18. package/dist/cjs/ion-action-sheet.cjs.entry.js +12 -8
  19. package/dist/cjs/ion-alert.cjs.entry.js +11 -7
  20. package/dist/cjs/ion-app_8.cjs.entry.js +6 -6
  21. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  24. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  25. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  27. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  30. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  31. package/dist/cjs/ion-datetime_3.cjs.entry.js +10 -6
  32. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  34. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  36. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-item_8.cjs.entry.js +4 -4
  38. package/dist/cjs/ion-loading.cjs.entry.js +10 -6
  39. package/dist/cjs/ion-menu_3.cjs.entry.js +5 -5
  40. package/dist/cjs/ion-modal.cjs.entry.js +12 -8
  41. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -3
  42. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  44. package/dist/cjs/ion-popover.cjs.entry.js +12 -8
  45. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  46. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  49. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  51. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
  55. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  56. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  58. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  59. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-toast.cjs.entry.js +10 -6
  62. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  63. package/dist/cjs/{ionic-global-7358c23e.js → ionic-global-59a10130.js} +1 -1
  64. package/dist/cjs/ionic.cjs.js +6 -6
  65. package/dist/cjs/{ios.transition-8e40c54e.js → ios.transition-c3b11cc3.js} +2 -2
  66. package/dist/cjs/loader.cjs.js +5 -5
  67. package/dist/cjs/{md.transition-597a2479.js → md.transition-82a8c649.js} +2 -2
  68. package/dist/cjs/{overlays-330df245.js → overlays-fb7ca451.js} +56 -6
  69. package/dist/cjs/{status-tap-b0bfea34.js → status-tap-692f6d32.js} +1 -1
  70. package/dist/collection/collection-manifest.json +1 -1
  71. package/dist/collection/components/action-sheet/action-sheet.js +9 -5
  72. package/dist/collection/components/alert/alert.js +8 -4
  73. package/dist/collection/components/label/label.ios.css +0 -4
  74. package/dist/collection/components/label/label.md.css +0 -4
  75. package/dist/collection/components/loading/loading.js +8 -4
  76. package/dist/collection/components/modal/modal.js +9 -5
  77. package/dist/collection/components/picker/picker.js +8 -4
  78. package/dist/collection/components/popover/popover.ios.css +7 -0
  79. package/dist/collection/components/popover/popover.js +8 -4
  80. package/dist/collection/components/toast/test/toast.spec.js +12 -0
  81. package/dist/collection/components/toast/toast.js +8 -4
  82. package/dist/collection/utils/overlays.js +54 -4
  83. package/dist/collection/utils/test/overlays/overlays.e2e.js +33 -0
  84. package/dist/collection/utils/test/overlays/overlays.spec.js +51 -0
  85. package/dist/docs.json +23 -23
  86. package/dist/esm/{app-globals-47226a12.js → app-globals-5cf6195b.js} +1 -1
  87. package/dist/esm/{button-active-4bee452c.js → button-active-47ac8092.js} +1 -1
  88. package/dist/esm/{hardware-back-button-f42b9c80.js → hardware-back-button-b410a047.js} +2 -2
  89. package/dist/esm/{index-4b98143d.js → index-0b4beb69.js} +3 -3
  90. package/dist/esm/{index-48209844.js → index-47b2066d.js} +2 -2
  91. package/dist/esm/{index-73881b51.js → index-4c30cddd.js} +25 -22
  92. package/dist/esm/index.js +8 -8
  93. package/dist/esm/ion-accordion_2.entry.js +2 -2
  94. package/dist/esm/ion-action-sheet.entry.js +12 -8
  95. package/dist/esm/ion-alert.entry.js +11 -7
  96. package/dist/esm/ion-app_8.entry.js +6 -6
  97. package/dist/esm/ion-avatar_3.entry.js +2 -2
  98. package/dist/esm/ion-back-button.entry.js +2 -2
  99. package/dist/esm/ion-backdrop.entry.js +2 -2
  100. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  101. package/dist/esm/ion-button_2.entry.js +2 -2
  102. package/dist/esm/ion-card_5.entry.js +2 -2
  103. package/dist/esm/ion-checkbox.entry.js +2 -2
  104. package/dist/esm/ion-chip.entry.js +2 -2
  105. package/dist/esm/ion-col_3.entry.js +2 -2
  106. package/dist/esm/ion-datetime-button.entry.js +2 -2
  107. package/dist/esm/ion-datetime_3.entry.js +10 -6
  108. package/dist/esm/ion-fab_3.entry.js +2 -2
  109. package/dist/esm/ion-img.entry.js +2 -2
  110. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  111. package/dist/esm/ion-input.entry.js +2 -2
  112. package/dist/esm/ion-item-option_3.entry.js +2 -2
  113. package/dist/esm/ion-item_8.entry.js +4 -4
  114. package/dist/esm/ion-loading.entry.js +10 -6
  115. package/dist/esm/ion-menu_3.entry.js +5 -5
  116. package/dist/esm/ion-modal.entry.js +12 -8
  117. package/dist/esm/ion-nav_2.entry.js +3 -3
  118. package/dist/esm/ion-picker-column-internal.entry.js +2 -2
  119. package/dist/esm/ion-picker-internal.entry.js +1 -1
  120. package/dist/esm/ion-popover.entry.js +12 -8
  121. package/dist/esm/ion-progress-bar.entry.js +2 -2
  122. package/dist/esm/ion-radio_2.entry.js +2 -2
  123. package/dist/esm/ion-range.entry.js +2 -2
  124. package/dist/esm/ion-refresher_2.entry.js +2 -2
  125. package/dist/esm/ion-reorder_2.entry.js +2 -2
  126. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  127. package/dist/esm/ion-route_4.entry.js +2 -2
  128. package/dist/esm/ion-searchbar.entry.js +2 -2
  129. package/dist/esm/ion-segment_2.entry.js +2 -2
  130. package/dist/esm/ion-select_3.entry.js +4 -4
  131. package/dist/esm/ion-spinner.entry.js +2 -2
  132. package/dist/esm/ion-split-pane.entry.js +2 -2
  133. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  134. package/dist/esm/ion-tab_2.entry.js +1 -1
  135. package/dist/esm/ion-text.entry.js +2 -2
  136. package/dist/esm/ion-textarea.entry.js +2 -2
  137. package/dist/esm/ion-toast.entry.js +10 -6
  138. package/dist/esm/ion-toggle.entry.js +2 -2
  139. package/dist/esm/{ionic-global-778b7863.js → ionic-global-ad9a1810.js} +1 -1
  140. package/dist/esm/ionic.js +7 -7
  141. package/dist/esm/{ios.transition-7ff7381d.js → ios.transition-b76c7020.js} +2 -2
  142. package/dist/esm/loader.js +6 -6
  143. package/dist/esm/{md.transition-28a9a26b.js → md.transition-564937a7.js} +2 -2
  144. package/dist/esm/{overlays-33ae3ea0.js → overlays-04a9a43f.js} +56 -6
  145. package/dist/esm/{status-tap-2b335fb7.js → status-tap-5a95077d.js} +1 -1
  146. package/dist/esm-es5/app-globals-5cf6195b.js +4 -0
  147. package/dist/esm-es5/{button-active-4bee452c.js → button-active-47ac8092.js} +1 -1
  148. package/dist/esm-es5/{hardware-back-button-f42b9c80.js → hardware-back-button-b410a047.js} +1 -1
  149. package/dist/esm-es5/{index-4b98143d.js → index-0b4beb69.js} +1 -1
  150. package/dist/esm-es5/{index-48209844.js → index-47b2066d.js} +1 -1
  151. package/dist/esm-es5/{index-73881b51.js → index-4c30cddd.js} +1 -1
  152. package/dist/esm-es5/index.js +1 -1
  153. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  154. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  155. package/dist/esm-es5/ion-alert.entry.js +1 -1
  156. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  157. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  158. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  159. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  160. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  161. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  162. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  163. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  164. package/dist/esm-es5/ion-chip.entry.js +1 -1
  165. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  166. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  167. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  168. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  169. package/dist/esm-es5/ion-img.entry.js +1 -1
  170. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  171. package/dist/esm-es5/ion-input.entry.js +1 -1
  172. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  173. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  174. package/dist/esm-es5/ion-loading.entry.js +1 -1
  175. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  176. package/dist/esm-es5/ion-modal.entry.js +1 -1
  177. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  178. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  179. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  180. package/dist/esm-es5/ion-popover.entry.js +1 -1
  181. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  182. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  183. package/dist/esm-es5/ion-range.entry.js +1 -1
  184. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  185. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  186. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  187. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  188. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  189. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  190. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  191. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  192. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  193. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  194. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  195. package/dist/esm-es5/ion-text.entry.js +1 -1
  196. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  197. package/dist/esm-es5/ion-toast.entry.js +1 -1
  198. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  199. package/dist/esm-es5/{ionic-global-778b7863.js → ionic-global-ad9a1810.js} +1 -1
  200. package/dist/esm-es5/ionic.js +2 -2
  201. package/dist/esm-es5/{ios.transition-7ff7381d.js → ios.transition-b76c7020.js} +1 -1
  202. package/dist/esm-es5/loader.js +2 -2
  203. package/dist/esm-es5/md.transition-564937a7.js +4 -0
  204. package/dist/esm-es5/{overlays-33ae3ea0.js → overlays-04a9a43f.js} +1 -1
  205. package/dist/esm-es5/{status-tap-2b335fb7.js → status-tap-5a95077d.js} +1 -1
  206. package/dist/ionic/index.esm.js +1 -1
  207. package/dist/ionic/ionic.esm.js +1 -1
  208. package/dist/ionic/ionic.js +1 -1
  209. package/dist/ionic/{p-ce2eabd5.entry.js → p-027f3674.entry.js} +1 -1
  210. package/dist/ionic/{p-dce9bc53.entry.js → p-0457213c.entry.js} +1 -1
  211. package/dist/ionic/{p-7dc7514a.entry.js → p-05d560ec.entry.js} +1 -1
  212. package/dist/ionic/p-0b34d3a7.system.js +4 -0
  213. package/dist/ionic/{p-f9d0e6f4.system.entry.js → p-0e23c289.system.entry.js} +1 -1
  214. package/dist/ionic/{p-8569d759.system.entry.js → p-1131946f.system.entry.js} +1 -1
  215. package/dist/ionic/{p-8ddc00f7.js → p-123b4809.js} +1 -1
  216. package/dist/ionic/{p-5eea8b4c.system.js → p-1636923f.system.js} +1 -1
  217. package/dist/ionic/{p-333f06ed.entry.js → p-16a61810.entry.js} +1 -1
  218. package/dist/ionic/{p-48af4316.system.entry.js → p-18beebdf.system.entry.js} +2 -2
  219. package/dist/ionic/{p-016976a7.system.entry.js → p-1924f2e0.system.entry.js} +2 -2
  220. package/dist/ionic/{p-396c1a55.entry.js → p-1f16d040.entry.js} +1 -1
  221. package/dist/ionic/{p-e6aaff14.system.entry.js → p-1f19958f.system.entry.js} +1 -1
  222. package/dist/ionic/p-21ca1f1c.js +4 -0
  223. package/dist/ionic/{p-df468a8f.entry.js → p-2327064c.entry.js} +1 -1
  224. package/dist/ionic/{p-5a0c301f.entry.js → p-23c73017.entry.js} +1 -1
  225. package/dist/ionic/{p-3a98f8db.entry.js → p-275705e5.entry.js} +1 -1
  226. package/dist/ionic/{p-c6fef62b.system.js → p-2e14c533.system.js} +1 -1
  227. package/dist/ionic/{p-61c0f8bf.system.entry.js → p-2e1f014a.system.entry.js} +1 -1
  228. package/dist/ionic/{p-aa7ae6aa.entry.js → p-3079950e.entry.js} +1 -1
  229. package/dist/ionic/{p-b4d8fe47.js → p-30cd5e7b.js} +1 -1
  230. package/dist/ionic/{p-5b6aa59a.entry.js → p-31450f73.entry.js} +1 -1
  231. package/dist/ionic/{p-b8c4df21.entry.js → p-337ac0f5.entry.js} +1 -1
  232. package/dist/ionic/{p-0e29919c.system.entry.js → p-3481d54e.system.entry.js} +1 -1
  233. package/dist/ionic/{p-51f08a9f.entry.js → p-396083cc.entry.js} +1 -1
  234. package/dist/ionic/{p-f88dd429.entry.js → p-3a7de59c.entry.js} +1 -1
  235. package/dist/ionic/{p-9f6397ce.entry.js → p-3d961d93.entry.js} +1 -1
  236. package/dist/ionic/{p-70026e8f.system.entry.js → p-42a9f663.system.entry.js} +1 -1
  237. package/dist/ionic/{p-400574bf.entry.js → p-43a5edee.entry.js} +1 -1
  238. package/dist/ionic/{p-f1cc690e.entry.js → p-45841d37.entry.js} +1 -1
  239. package/dist/ionic/{p-3eb2da31.js → p-49aba878.js} +1 -1
  240. package/dist/ionic/{p-5e60dbc8.entry.js → p-4fda5c35.entry.js} +1 -1
  241. package/dist/ionic/{p-3cdbaa49.entry.js → p-502780e4.entry.js} +1 -1
  242. package/dist/ionic/{p-108f730a.entry.js → p-508a4c87.entry.js} +1 -1
  243. package/dist/ionic/{p-9f5b40c0.system.entry.js → p-5928fac9.system.entry.js} +1 -1
  244. package/dist/ionic/{p-6a34980d.entry.js → p-5b40d967.entry.js} +1 -1
  245. package/dist/ionic/p-5c2ae448.js +4 -0
  246. package/dist/ionic/{p-a2ad515b.entry.js → p-5c580e89.entry.js} +1 -1
  247. package/dist/ionic/{p-a02b2d75.entry.js → p-5c6a04bd.entry.js} +1 -1
  248. package/dist/ionic/{p-30c9e049.system.entry.js → p-5cb5f63d.system.entry.js} +1 -1
  249. package/dist/ionic/{p-1aa7c019.js → p-5d7e32ce.js} +1 -1
  250. package/dist/ionic/{p-3a54c070.system.entry.js → p-5e23bea8.system.entry.js} +1 -1
  251. package/dist/ionic/{p-1c531ca2.entry.js → p-601e17b4.entry.js} +1 -1
  252. package/dist/ionic/{p-f1ad3b3d.entry.js → p-64761c90.entry.js} +1 -1
  253. package/dist/ionic/{p-bc2c03d7.system.entry.js → p-64856c3c.system.entry.js} +1 -1
  254. package/dist/ionic/{p-efe9180b.entry.js → p-64db1331.entry.js} +1 -1
  255. package/dist/ionic/{p-3f028207.system.js → p-6525a8cd.system.js} +1 -1
  256. package/dist/ionic/{p-d8607ede.entry.js → p-657ccdd6.entry.js} +1 -1
  257. package/dist/ionic/{p-cd055d60.system.entry.js → p-68ba8e77.system.entry.js} +1 -1
  258. package/dist/ionic/{p-aaa4ffb3.system.entry.js → p-69973389.system.entry.js} +1 -1
  259. package/dist/ionic/{p-2f66e177.system.entry.js → p-70e34286.system.entry.js} +1 -1
  260. package/dist/ionic/{p-df281664.system.entry.js → p-7173ba59.system.entry.js} +1 -1
  261. package/dist/ionic/{p-20a6513f.system.entry.js → p-717e2526.system.entry.js} +1 -1
  262. package/dist/ionic/{p-76893257.system.js → p-72fa96bf.system.js} +1 -1
  263. package/dist/ionic/{p-25b08bc4.system.js → p-74deb358.system.js} +1 -1
  264. package/dist/ionic/{p-a1bfaa5c.system.entry.js → p-7b1ed642.system.entry.js} +1 -1
  265. package/dist/ionic/{p-fd3f475f.entry.js → p-7ce40e7b.entry.js} +1 -1
  266. package/dist/ionic/{p-58e3ae88.system.entry.js → p-86813176.system.entry.js} +1 -1
  267. package/dist/ionic/{p-0eef8b34.system.entry.js → p-8794fa00.system.entry.js} +1 -1
  268. package/dist/ionic/{p-a051c371.entry.js → p-88e9052d.entry.js} +1 -1
  269. package/dist/ionic/{p-b94882a9.system.js → p-89ca4c4b.system.js} +1 -1
  270. package/dist/ionic/{p-f46775e4.entry.js → p-8e651c29.entry.js} +1 -1
  271. package/dist/ionic/{p-c3790581.entry.js → p-8f872991.entry.js} +1 -1
  272. package/dist/ionic/{p-f97b9cdd.system.entry.js → p-9056778e.system.entry.js} +1 -1
  273. package/dist/ionic/{p-1f583f73.entry.js → p-91cb3f9a.entry.js} +1 -1
  274. package/dist/ionic/{p-97eca294.entry.js → p-95d5a097.entry.js} +1 -1
  275. package/dist/ionic/{p-95c44e02.system.js → p-9cd7ba27.system.js} +1 -1
  276. package/dist/ionic/{p-fd36799d.system.js → p-9ec7208d.system.js} +1 -1
  277. package/dist/ionic/{p-4c256bc2.system.entry.js → p-a022b684.system.entry.js} +1 -1
  278. package/dist/ionic/{p-078fd095.system.entry.js → p-a0b28c69.system.entry.js} +1 -1
  279. package/dist/ionic/{p-eda7a1db.system.entry.js → p-a3df16b9.system.entry.js} +1 -1
  280. package/dist/ionic/{p-62a3c609.system.js → p-a5951821.system.js} +1 -1
  281. package/dist/ionic/{p-e0569db4.entry.js → p-a6e465f5.entry.js} +1 -1
  282. package/dist/ionic/{p-9a6ab80a.system.entry.js → p-a85d9047.system.entry.js} +1 -1
  283. package/dist/ionic/{p-8ebd9951.entry.js → p-a8a56449.entry.js} +1 -1
  284. package/dist/ionic/{p-c851b204.system.entry.js → p-aaaa615c.system.entry.js} +1 -1
  285. package/dist/ionic/{p-ac20160b.system.entry.js → p-abcedc15.system.entry.js} +1 -1
  286. package/dist/ionic/{p-0ae25399.system.entry.js → p-ae35294f.system.entry.js} +1 -1
  287. package/dist/ionic/{p-6f38d0c5.system.entry.js → p-afd6d696.system.entry.js} +1 -1
  288. package/dist/ionic/{p-d7260b87.entry.js → p-b0ff8075.entry.js} +1 -1
  289. package/dist/ionic/{p-e68980ff.system.entry.js → p-b2595011.system.entry.js} +1 -1
  290. package/dist/ionic/{p-fe92da17.entry.js → p-b6279412.entry.js} +1 -1
  291. package/dist/ionic/{p-4dfc27eb.system.entry.js → p-b7efc743.system.entry.js} +1 -1
  292. package/dist/ionic/{p-ac979ebf.system.entry.js → p-ba97a133.system.entry.js} +1 -1
  293. package/dist/ionic/{p-389ff4d2.system.entry.js → p-bd314f1e.system.entry.js} +1 -1
  294. package/dist/ionic/{p-84513dfb.entry.js → p-bd4787eb.entry.js} +1 -1
  295. package/dist/ionic/p-bdca4784.js +4 -0
  296. package/dist/ionic/{p-2da0a76c.entry.js → p-bf05cbc7.entry.js} +1 -1
  297. package/dist/ionic/{p-dbb4c012.entry.js → p-c11bab7e.entry.js} +1 -1
  298. package/dist/ionic/{p-78edc0cd.system.entry.js → p-c1797ec5.system.entry.js} +1 -1
  299. package/dist/ionic/{p-d95c8e90.entry.js → p-c308f773.entry.js} +1 -1
  300. package/dist/ionic/{p-f7b43141.system.entry.js → p-c39cc96d.system.entry.js} +1 -1
  301. package/dist/ionic/{p-92c2178e.system.entry.js → p-c747f89b.system.entry.js} +1 -1
  302. package/dist/ionic/{p-b498de69.entry.js → p-c771a6ef.entry.js} +1 -1
  303. package/dist/ionic/{p-a19f5ae1.entry.js → p-cb9e71e0.entry.js} +1 -1
  304. package/dist/ionic/{p-5f456b3c.system.entry.js → p-cd9a7017.system.entry.js} +1 -1
  305. package/dist/ionic/{p-20f7a91e.system.entry.js → p-cde3ac34.system.entry.js} +1 -1
  306. package/dist/ionic/{p-4b2d5b9c.js → p-ceceac26.js} +1 -1
  307. package/dist/ionic/{p-3cb2ab30.entry.js → p-d39ab63d.entry.js} +1 -1
  308. package/dist/ionic/{p-fd9a9db3.system.js → p-d4cadd34.system.js} +1 -1
  309. package/dist/ionic/p-dbcba5a2.js +4 -0
  310. package/dist/ionic/{p-b37e4ee5.system.entry.js → p-dbd70d97.system.entry.js} +1 -1
  311. package/dist/ionic/{p-ea8fbf09.entry.js → p-dcb5711d.entry.js} +1 -1
  312. package/dist/ionic/{p-341b4519.js → p-de55ec45.js} +1 -1
  313. package/dist/ionic/{p-001010b6.system.js → p-df504a37.system.js} +1 -1
  314. package/dist/ionic/{p-84879f61.system.entry.js → p-e04b9647.system.entry.js} +1 -1
  315. package/dist/ionic/{p-dd60faa5.system.entry.js → p-e81bf09e.system.entry.js} +1 -1
  316. package/dist/ionic/{p-9beb5039.system.js → p-e9f9388e.system.js} +1 -1
  317. package/dist/ionic/{p-1f6cdf2c.system.entry.js → p-ea25b4c8.system.entry.js} +1 -1
  318. package/dist/ionic/{p-8a671f16.entry.js → p-eb07b88f.entry.js} +1 -1
  319. package/dist/ionic/p-ed7a529f.js +5 -0
  320. package/dist/ionic/p-edcada2b.system.entry.js +4 -0
  321. package/dist/ionic/{p-7c32fb95.system.entry.js → p-f0194418.system.entry.js} +1 -1
  322. package/dist/ionic/{p-680f96e8.system.entry.js → p-f53d074d.system.entry.js} +1 -1
  323. package/dist/ionic/{p-d74ca358.entry.js → p-f840d817.entry.js} +1 -1
  324. package/dist/ionic/{p-0fd295ef.system.entry.js → p-fb9f8495.system.entry.js} +1 -1
  325. package/dist/types/components/action-sheet/action-sheet.d.ts +4 -0
  326. package/dist/types/components/alert/alert.d.ts +4 -0
  327. package/dist/types/components/loading/loading.d.ts +4 -0
  328. package/dist/types/components/modal/modal.d.ts +4 -0
  329. package/dist/types/components/picker/picker.d.ts +4 -0
  330. package/dist/types/components/popover/popover.d.ts +4 -0
  331. package/dist/types/components/toast/toast.d.ts +4 -0
  332. package/dist/types/components.d.ts +7 -7
  333. package/hydrate/index.d.ts +1 -1
  334. package/hydrate/index.js +220 -35
  335. package/package.json +3 -3
  336. package/dist/esm-es5/app-globals-47226a12.js +0 -4
  337. package/dist/esm-es5/md.transition-28a9a26b.js +0 -4
  338. package/dist/ionic/p-0b955124.system.js +0 -4
  339. package/dist/ionic/p-6b02edd6.js +0 -4
  340. package/dist/ionic/p-8f1ce253.js +0 -4
  341. package/dist/ionic/p-bd259c65.system.entry.js +0 -4
  342. package/dist/ionic/p-c5c3710c.js +0 -4
  343. package/dist/ionic/p-e1271366.js +0 -5
  344. package/dist/ionic/p-f89ae259.js +0 -4
@@ -409,6 +409,15 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
409
409
  return;
410
410
  }
411
411
  setRootAriaHidden(true);
412
+ /**
413
+ * Hide all other overlays from screen readers so only this one
414
+ * can be read. Note that presenting an overlay always makes
415
+ * it the topmost one.
416
+ */
417
+ if (doc !== undefined) {
418
+ const presentedOverlays = getPresentedOverlays(doc);
419
+ presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
420
+ }
412
421
  overlay.presented = true;
413
422
  overlay.willPresent.emit();
414
423
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -431,7 +440,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
431
440
  * from returning focus as a result.
432
441
  */
433
442
  if (overlay.el.tagName !== 'ION-TOAST') {
434
- focusPreviousElementOnDismiss(overlay.el);
443
+ restoreElementFocus(overlay.el);
435
444
  }
436
445
  /**
437
446
  * If the focused element is already
@@ -442,6 +451,14 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
442
451
  if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
443
452
  overlay.el.focus();
444
453
  }
454
+ /**
455
+ * If this overlay was previously dismissed without being
456
+ * the topmost one (such as by manually calling dismiss()),
457
+ * it would still have aria-hidden on being presented again.
458
+ * Removing it here ensures the overlay is visible to screen
459
+ * readers.
460
+ */
461
+ overlay.el.removeAttribute('aria-hidden');
445
462
  };
446
463
  /**
447
464
  * When an overlay component is dismissed,
@@ -453,7 +470,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
453
470
  * to where they were before they
454
471
  * opened the overlay.
455
472
  */
456
- const focusPreviousElementOnDismiss = async (overlayEl) => {
473
+ const restoreElementFocus = async (overlayEl) => {
457
474
  let previousElement = document.activeElement;
458
475
  if (!previousElement) {
459
476
  return;
@@ -464,10 +481,36 @@ const focusPreviousElementOnDismiss = async (overlayEl) => {
464
481
  previousElement = shadowRoot.querySelector(focusableQueryString) || previousElement;
465
482
  }
466
483
  await overlayEl.onDidDismiss();
467
- previousElement.focus();
484
+ /**
485
+ * After onDidDismiss, the overlay loses focus
486
+ * because it is removed from the document
487
+ *
488
+ * > An element will also lose focus [...]
489
+ * > if the element is removed from the document)
490
+ *
491
+ * https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
492
+ *
493
+ * Additionally, `document.activeElement` returns:
494
+ *
495
+ * > The Element which currently has focus,
496
+ * > `<body>` or null if there is
497
+ * > no focused element.
498
+ *
499
+ * https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement#value
500
+ *
501
+ * However, if the user has already focused
502
+ * an element sometime between onWillDismiss
503
+ * and onDidDismiss (for example, focusing a
504
+ * text box after tapping a button in an
505
+ * action sheet) then don't restore focus to
506
+ * previous element
507
+ */
508
+ if (document.activeElement === null || document.activeElement === document.body) {
509
+ previousElement.focus();
510
+ }
468
511
  };
469
512
  export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
470
- var _a, _b;
513
+ var _a, _b, _c;
471
514
  if (!overlay.presented) {
472
515
  return false;
473
516
  }
@@ -518,6 +561,13 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
518
561
  console.error(err);
519
562
  }
520
563
  overlay.el.remove();
564
+ /**
565
+ * If there are other overlays presented, unhide the new
566
+ * topmost one from screen readers.
567
+ */
568
+ if (doc !== undefined) {
569
+ (_c = getPresentedOverlay(doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
570
+ }
521
571
  return true;
522
572
  };
523
573
  const getAppRoot = (doc) => {
@@ -175,5 +175,38 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
175
175
  await modalInputOne.click();
176
176
  await expect(modalInputOne).toBeFocused();
177
177
  });
178
+ test('should not return focus to another element if focus already manually returned', async ({ page, skip, }, testInfo) => {
179
+ skip.browser('webkit', 'WebKit does not consider buttons to be focusable, so this test always passes since the input is the only focusable element.');
180
+ testInfo.annotations.push({
181
+ type: 'issue',
182
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28849',
183
+ });
184
+ await page.setContent(`
185
+ <button id="open-action-sheet">open</button>
186
+ <ion-action-sheet trigger="open-action-sheet"></ion-action-sheet>
187
+ <input id="test-input" />
188
+
189
+ <script>
190
+ const actionSheet = document.querySelector('ion-action-sheet');
191
+
192
+ actionSheet.addEventListener('ionActionSheetWillDismiss', () => {
193
+ requestAnimationFrame(() => {
194
+ document.querySelector('#test-input').focus();
195
+ });
196
+ });
197
+ </script>
198
+ `, config);
199
+ const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent');
200
+ const actionSheet = page.locator('ion-action-sheet');
201
+ const input = page.locator('#test-input');
202
+ const trigger = page.locator('#open-action-sheet');
203
+ // present action sheet
204
+ await trigger.click();
205
+ await ionActionSheetDidPresent.next();
206
+ // dismiss action sheet
207
+ await actionSheet.evaluate((el) => el.dismiss());
208
+ // verify focus is in correct location
209
+ await expect(input).toBeFocused();
210
+ });
178
211
  });
179
212
  });
@@ -100,3 +100,54 @@ describe('setRootAriaHidden()', () => {
100
100
  expect(routerOutlet.hasAttribute('aria-hidden')).toEqual(false);
101
101
  });
102
102
  });
103
+ describe('aria-hidden on individual overlays', () => {
104
+ it('should hide non-topmost overlays from screen readers', async () => {
105
+ const page = await newSpecPage({
106
+ components: [Modal],
107
+ html: `
108
+ <ion-modal id="one"></ion-modal>
109
+ <ion-modal id="two"></ion-modal>
110
+ `,
111
+ });
112
+ const modalOne = page.body.querySelector('ion-modal#one');
113
+ const modalTwo = page.body.querySelector('ion-modal#two');
114
+ await modalOne.present();
115
+ await modalTwo.present();
116
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
117
+ expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
118
+ });
119
+ it('should unhide new topmost overlay from screen readers when topmost is dismissed', async () => {
120
+ const page = await newSpecPage({
121
+ components: [Modal],
122
+ html: `
123
+ <ion-modal id="one"></ion-modal>
124
+ <ion-modal id="two"></ion-modal>
125
+ `,
126
+ });
127
+ const modalOne = page.body.querySelector('ion-modal#one');
128
+ const modalTwo = page.body.querySelector('ion-modal#two');
129
+ await modalOne.present();
130
+ await modalTwo.present();
131
+ // dismiss modalTwo so that modalOne becomes the new topmost overlay
132
+ await modalTwo.dismiss();
133
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
134
+ });
135
+ it('should not keep overlays hidden from screen readers if presented after being dismissed while non-topmost', async () => {
136
+ const page = await newSpecPage({
137
+ components: [Modal],
138
+ html: `
139
+ <ion-modal id="one"></ion-modal>
140
+ <ion-modal id="two"></ion-modal>
141
+ `,
142
+ });
143
+ const modalOne = page.body.querySelector('ion-modal#one');
144
+ const modalTwo = page.body.querySelector('ion-modal#two');
145
+ await modalOne.present();
146
+ await modalTwo.present();
147
+ // modalOne is not the topmost overlay at this point and is hidden from screen readers
148
+ await modalOne.dismiss();
149
+ // modalOne will become the topmost overlay; ensure it isn't still hidden from screen readers
150
+ await modalOne.present();
151
+ expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
152
+ });
153
+ });
package/dist/docs.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "timestamp": "2024-02-07T14:16:22",
2
+ "timestamp": "2024-02-13T16:17:46",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
- "version": "4.12.0",
5
+ "version": "4.12.2",
6
6
  "typescriptVersion": "5.3.3"
7
7
  },
8
8
  "components": [
@@ -806,7 +806,7 @@
806
806
  {
807
807
  "name": "role",
808
808
  "type": "string | undefined",
809
- "docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
809
+ "docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
810
810
  }
811
811
  ],
812
812
  "references": {
@@ -827,7 +827,7 @@
827
827
  {
828
828
  "name": "role",
829
829
  "type": "string | undefined",
830
- "docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
830
+ "docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
831
831
  }
832
832
  ],
833
833
  "docs": "Dismiss the action sheet overlay after it has been presented.",
@@ -838,7 +838,7 @@
838
838
  },
839
839
  {
840
840
  "name": "param",
841
- "text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
841
+ "text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
842
842
  }
843
843
  ]
844
844
  },
@@ -1637,7 +1637,7 @@
1637
1637
  {
1638
1638
  "name": "role",
1639
1639
  "type": "string | undefined",
1640
- "docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
1640
+ "docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
1641
1641
  }
1642
1642
  ],
1643
1643
  "references": {
@@ -1658,7 +1658,7 @@
1658
1658
  {
1659
1659
  "name": "role",
1660
1660
  "type": "string | undefined",
1661
- "docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
1661
+ "docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
1662
1662
  }
1663
1663
  ],
1664
1664
  "docs": "Dismiss the alert overlay after it has been presented.",
@@ -1669,7 +1669,7 @@
1669
1669
  },
1670
1670
  {
1671
1671
  "name": "param",
1672
- "text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
1672
+ "text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
1673
1673
  }
1674
1674
  ]
1675
1675
  },
@@ -13797,7 +13797,7 @@
13797
13797
  {
13798
13798
  "name": "role",
13799
13799
  "type": "string | undefined",
13800
- "docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
13800
+ "docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
13801
13801
  }
13802
13802
  ],
13803
13803
  "references": {
@@ -13818,7 +13818,7 @@
13818
13818
  {
13819
13819
  "name": "role",
13820
13820
  "type": "string | undefined",
13821
- "docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
13821
+ "docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
13822
13822
  }
13823
13823
  ],
13824
13824
  "docs": "Dismiss the loading overlay after it has been presented.",
@@ -13829,7 +13829,7 @@
13829
13829
  },
13830
13830
  {
13831
13831
  "name": "param",
13832
- "text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
13832
+ "text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
13833
13833
  }
13834
13834
  ]
13835
13835
  },
@@ -15526,7 +15526,7 @@
15526
15526
  {
15527
15527
  "name": "role",
15528
15528
  "type": "string | undefined",
15529
- "docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
15529
+ "docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
15530
15530
  }
15531
15531
  ],
15532
15532
  "references": {
@@ -15551,7 +15551,7 @@
15551
15551
  {
15552
15552
  "name": "role",
15553
15553
  "type": "string | undefined",
15554
- "docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
15554
+ "docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
15555
15555
  }
15556
15556
  ],
15557
15557
  "docs": "Dismiss the modal overlay after it has been presented.",
@@ -15562,7 +15562,7 @@
15562
15562
  },
15563
15563
  {
15564
15564
  "name": "param",
15565
- "text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
15565
+ "text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
15566
15566
  }
15567
15567
  ]
15568
15568
  },
@@ -17787,7 +17787,7 @@
17787
17787
  {
17788
17788
  "name": "role",
17789
17789
  "type": "string | undefined",
17790
- "docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
17790
+ "docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
17791
17791
  }
17792
17792
  ],
17793
17793
  "references": {
@@ -17808,7 +17808,7 @@
17808
17808
  {
17809
17809
  "name": "role",
17810
17810
  "type": "string | undefined",
17811
- "docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
17811
+ "docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
17812
17812
  }
17813
17813
  ],
17814
17814
  "docs": "Dismiss the picker overlay after it has been presented.",
@@ -17819,7 +17819,7 @@
17819
17819
  },
17820
17820
  {
17821
17821
  "name": "param",
17822
- "text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
17822
+ "text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
17823
17823
  }
17824
17824
  ]
17825
17825
  },
@@ -18829,7 +18829,7 @@
18829
18829
  {
18830
18830
  "name": "dismissParentPopover",
18831
18831
  "type": "boolean",
18832
- "docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
18832
+ "docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
18833
18833
  }
18834
18834
  ],
18835
18835
  "references": {
@@ -18859,7 +18859,7 @@
18859
18859
  {
18860
18860
  "name": "dismissParentPopover",
18861
18861
  "type": "boolean",
18862
- "docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
18862
+ "docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
18863
18863
  }
18864
18864
  ],
18865
18865
  "docs": "Dismiss the popover overlay after it has been presented.",
@@ -18874,7 +18874,7 @@
18874
18874
  },
18875
18875
  {
18876
18876
  "name": "param",
18877
- "text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
18877
+ "text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
18878
18878
  }
18879
18879
  ]
18880
18880
  },
@@ -28180,7 +28180,7 @@
28180
28180
  {
28181
28181
  "name": "role",
28182
28182
  "type": "string | undefined",
28183
- "docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
28183
+ "docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
28184
28184
  }
28185
28185
  ],
28186
28186
  "references": {
@@ -28206,7 +28206,7 @@
28206
28206
  {
28207
28207
  "name": "role",
28208
28208
  "type": "string | undefined",
28209
- "docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
28209
+ "docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
28210
28210
  }
28211
28211
  ],
28212
28212
  "docs": "Dismiss the toast overlay after it has been presented.",
@@ -28217,7 +28217,7 @@
28217
28217
  },
28218
28218
  {
28219
28219
  "name": "param",
28220
- "text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
28220
+ "text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
28221
28221
  }
28222
28222
  ]
28223
28223
  },
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { i as initialize } from './ionic-global-778b7863.js';
4
+ import { i as initialize } from './ionic-global-ad9a1810.js';
5
5
 
6
6
  const globalScripts = initialize;
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as writeTask } from './index-73881b51.js';
4
+ import { w as writeTask } from './index-4c30cddd.js';
5
5
  import { h as hapticSelectionEnd, a as hapticSelectionStart, b as hapticSelectionChanged } from './haptic-554688a5.js';
6
6
  import { createGesture } from './index-2cf77112.js';
7
7
 
@@ -2,8 +2,8 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { w as win } from './index-a5d50daf.js';
5
- import { c as config } from './ionic-global-778b7863.js';
6
- import './index-73881b51.js';
5
+ import { c as config } from './ionic-global-ad9a1810.js';
6
+ import './index-4c30cddd.js';
7
7
 
8
8
  /**
9
9
  * CloseWatcher is a newer API that lets
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { w as writeTask, B as Build } from './index-73881b51.js';
4
+ import { w as writeTask, B as Build } from './index-4c30cddd.js';
5
5
  import { r as raf } from './helpers-c0b9ca37.js';
6
6
 
7
7
  const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
@@ -10,8 +10,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
10
10
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
11
11
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
12
12
 
13
- const iosTransitionAnimation = () => import('./ios.transition-7ff7381d.js');
14
- const mdTransitionAnimation = () => import('./md.transition-28a9a26b.js');
13
+ const iosTransitionAnimation = () => import('./ios.transition-b76c7020.js');
14
+ const mdTransitionAnimation = () => import('./md.transition-564937a7.js');
15
15
  // TODO(FW-2832): types
16
16
  const transition = (opts) => {
17
17
  return new Promise((resolve, reject) => {
@@ -2,10 +2,10 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { d as doc } from './index-a5d50daf.js';
5
- import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-f42b9c80.js';
5
+ import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-b410a047.js';
6
6
  import { p as printIonWarning } from './index-9b0d46f4.js';
7
7
  import { c as componentOnReady } from './helpers-c0b9ca37.js';
8
- import { b as getIonMode } from './ionic-global-778b7863.js';
8
+ import { b as getIonMode } from './ionic-global-ad9a1810.js';
9
9
  import { c as createAnimation } from './animation-60dbdd13.js';
10
10
 
11
11
  /**
@@ -1388,8 +1388,7 @@ const patch = (oldVNode, newVNode, isInitialRender = false) => {
1388
1388
  isSvgMode = tag === 'svg' ? true : tag === 'foreignObject' ? false : isSvgMode;
1389
1389
  }
1390
1390
  {
1391
- if (tag === 'slot')
1392
- ;
1391
+ if (tag === 'slot' && !useNativeShadowDom) ;
1393
1392
  else {
1394
1393
  // either this is the first render of an element OR it's an update
1395
1394
  // AND we already know it's possible it could have changed
@@ -1676,9 +1675,9 @@ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1676
1675
  {
1677
1676
  scopeId = hostElm['s-sc'];
1678
1677
  }
1678
+ useNativeShadowDom = (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) !== 0;
1679
1679
  {
1680
1680
  contentRef = hostElm['s-cr'];
1681
- useNativeShadowDom = (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) !== 0;
1682
1681
  // always reset
1683
1682
  checkSlotFallbackVisibility = false;
1684
1683
  }
@@ -2565,25 +2564,29 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2565
2564
  }
2566
2565
  });
2567
2566
  });
2568
- // Add styles for `slot-fb` elements if any of our components are using slots outside the Shadow DOM
2569
- if (hasSlotRelocation) {
2570
- dataStyles.innerHTML += SLOT_FB_CSS;
2571
- }
2572
- // Add hydration styles
2573
- {
2574
- dataStyles.innerHTML += cmpTags + HYDRATED_CSS;
2575
- }
2576
- // If we have styles, add them to the DOM
2577
- if (dataStyles.innerHTML.length) {
2578
- dataStyles.setAttribute('data-styles', '');
2579
- // Apply CSP nonce to the style tag if it exists
2580
- const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
2581
- if (nonce != null) {
2582
- dataStyles.setAttribute('nonce', nonce);
2583
- }
2584
- // Insert the styles into the document head
2585
- // NOTE: this _needs_ to happen last so we can ensure the nonce (and other attributes) are applied
2586
- head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2567
+ // Only bother generating CSS if we have components
2568
+ // TODO(STENCIL-1118): Add test cases for CSS content based on conditionals
2569
+ if (cmpTags.length > 0) {
2570
+ // Add styles for `slot-fb` elements if any of our components are using slots outside the Shadow DOM
2571
+ if (hasSlotRelocation) {
2572
+ dataStyles.innerHTML += SLOT_FB_CSS;
2573
+ }
2574
+ // Add hydration styles
2575
+ {
2576
+ dataStyles.innerHTML += cmpTags + HYDRATED_CSS;
2577
+ }
2578
+ // If we have styles, add them to the DOM
2579
+ if (dataStyles.innerHTML.length) {
2580
+ dataStyles.setAttribute('data-styles', '');
2581
+ // Apply CSP nonce to the style tag if it exists
2582
+ const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
2583
+ if (nonce != null) {
2584
+ dataStyles.setAttribute('nonce', nonce);
2585
+ }
2586
+ // Insert the styles into the document head
2587
+ // NOTE: this _needs_ to happen last so we can ensure the nonce (and other attributes) are applied
2588
+ head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2589
+ }
2587
2590
  }
2588
2591
  // Process deferred connectedCallbacks now all components have been registered
2589
2592
  isBootstrapping = false;
package/dist/esm/index.js CHANGED
@@ -2,21 +2,21 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  export { c as createAnimation } from './animation-60dbdd13.js';
5
- export { a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE, L as LIFECYCLE_WILL_ENTER, b as LIFECYCLE_WILL_LEAVE, d as LIFECYCLE_WILL_UNLOAD, g as getIonPageElement } from './index-4b98143d.js';
6
- export { iosTransitionAnimation } from './ios.transition-7ff7381d.js';
7
- export { mdTransitionAnimation } from './md.transition-28a9a26b.js';
5
+ export { a as LIFECYCLE_DID_ENTER, c as LIFECYCLE_DID_LEAVE, L as LIFECYCLE_WILL_ENTER, b as LIFECYCLE_WILL_LEAVE, d as LIFECYCLE_WILL_UNLOAD, g as getIonPageElement } from './index-0b4beb69.js';
6
+ export { iosTransitionAnimation } from './ios.transition-b76c7020.js';
7
+ export { mdTransitionAnimation } from './md.transition-564937a7.js';
8
8
  export { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
9
9
  export { createGesture } from './index-2cf77112.js';
10
- export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-global-778b7863.js';
10
+ export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-global-ad9a1810.js';
11
11
  export { c as componentOnReady } from './helpers-c0b9ca37.js';
12
12
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-49c88215.js';
13
13
  export { o as openURL } from './theme-01f3f29c.js';
14
- export { m as menuController } from './index-48209844.js';
15
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-33ae3ea0.js';
14
+ export { m as menuController } from './index-47b2066d.js';
15
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-04a9a43f.js';
16
16
  import './index-a5d50daf.js';
17
- import './index-73881b51.js';
17
+ import './index-4c30cddd.js';
18
18
  import './gesture-controller-1bf57181.js';
19
- import './hardware-back-button-f42b9c80.js';
19
+ import './hardware-back-button-b410a047.js';
20
20
  import './index-9b0d46f4.js';
21
21
  import './framework-delegate-fed7fe7c.js';
22
22
 
@@ -1,10 +1,10 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, h, H as Host, f as getElement, d as createEvent } from './index-73881b51.js';
4
+ import { r as registerInstance, h, H as Host, f as getElement, d as createEvent } from './index-4c30cddd.js';
5
5
  import { r as raf, t as transitionEndAsync, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers-c0b9ca37.js';
6
6
  import { l as chevronDown } from './index-f7dc70ba.js';
7
- import { c as config, b as getIonMode } from './ionic-global-778b7863.js';
7
+ import { c as config, b as getIonMode } from './ionic-global-ad9a1810.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
9
 
10
10
  const accordionIosCss = ":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}";