voyager-ionic-core 7.6.5 → 7.7.2

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 (722) hide show
  1. package/components/action-sheet.js +12 -6
  2. package/components/alert.js +11 -5
  3. package/components/backdrop.js +5 -3
  4. package/components/button.js +6 -4
  5. package/components/buttons.js +5 -3
  6. package/components/checkbox.js +4 -2
  7. package/components/data.js +1 -1
  8. package/components/hardware-back-button.js +47 -3
  9. package/components/helpers.js +1 -1
  10. package/components/icon.js +2 -1
  11. package/components/ion-accordion-group.js +6 -4
  12. package/components/ion-accordion.js +9 -5
  13. package/components/ion-app.js +14 -3
  14. package/components/ion-avatar.js +5 -3
  15. package/components/ion-back-button.js +6 -4
  16. package/components/ion-badge.js +6 -4
  17. package/components/ion-breadcrumb.js +6 -4
  18. package/components/ion-breadcrumbs.js +6 -4
  19. package/components/ion-card-content.js +5 -3
  20. package/components/ion-card-header.js +6 -4
  21. package/components/ion-card-subtitle.js +6 -4
  22. package/components/ion-card-title.js +6 -4
  23. package/components/ion-card.js +5 -3
  24. package/components/ion-chip.js +6 -4
  25. package/components/ion-col.js +4 -3
  26. package/components/ion-content.js +5 -4
  27. package/components/ion-datetime-button.js +6 -4
  28. package/components/ion-datetime.js +40 -19
  29. package/components/ion-fab-button.js +6 -4
  30. package/components/ion-fab-list.js +4 -3
  31. package/components/ion-fab.js +4 -3
  32. package/components/ion-footer.js +6 -4
  33. package/components/ion-grid.js +4 -3
  34. package/components/ion-header.js +6 -4
  35. package/components/ion-img.js +3 -2
  36. package/components/ion-infinite-scroll-content.js +6 -4
  37. package/components/ion-infinite-scroll.js +3 -2
  38. package/components/ion-input.js +4 -2
  39. package/components/ion-item-divider.js +6 -4
  40. package/components/ion-item-group.js +5 -3
  41. package/components/ion-item-option.js +6 -4
  42. package/components/ion-item-options.js +5 -3
  43. package/components/ion-item-sliding.js +3 -2
  44. package/components/ion-loading.js +10 -4
  45. package/components/ion-menu-button.js +6 -4
  46. package/components/ion-menu-toggle.js +4 -3
  47. package/components/ion-menu.js +13 -5
  48. package/components/ion-modal.js +13 -10
  49. package/components/ion-nav-link.js +1 -1
  50. package/components/ion-nav.js +3 -2
  51. package/components/ion-picker.js +10 -4
  52. package/components/ion-progress-bar.js +5 -3
  53. package/components/ion-range.js +4 -2
  54. package/components/ion-refresher-content.js +1 -1
  55. package/components/ion-refresher.js +5 -3
  56. package/components/ion-reorder-group.js +3 -2
  57. package/components/ion-reorder.js +5 -3
  58. package/components/ion-router-link.js +4 -3
  59. package/components/ion-router-outlet.js +3 -2
  60. package/components/ion-row.js +3 -2
  61. package/components/ion-searchbar.js +8 -6
  62. package/components/ion-segment-button.js +7 -5
  63. package/components/ion-segment.js +13 -4
  64. package/components/ion-select-option.js +3 -2
  65. package/components/ion-select.js +24 -3
  66. package/components/ion-skeleton-text.js +4 -3
  67. package/components/ion-split-pane.js +15 -14
  68. package/components/ion-tab-bar.js +6 -4
  69. package/components/ion-tab-button.js +6 -4
  70. package/components/ion-tab.js +4 -3
  71. package/components/ion-tabs.js +3 -2
  72. package/components/ion-text.js +4 -3
  73. package/components/ion-textarea.js +4 -2
  74. package/components/ion-thumbnail.js +3 -2
  75. package/components/ion-title.js +6 -4
  76. package/components/ion-toast.js +10 -4
  77. package/components/ion-toggle.js +4 -2
  78. package/components/ion-toolbar.js +6 -4
  79. package/components/item.js +15 -16
  80. package/components/label.js +5 -3
  81. package/components/list-header.js +6 -4
  82. package/components/list.js +5 -3
  83. package/components/note.js +6 -4
  84. package/components/overlays.js +83 -19
  85. package/components/picker-column-internal.js +7 -5
  86. package/components/picker-column.js +6 -4
  87. package/components/picker-internal.js +21 -3
  88. package/components/popover.js +12 -6
  89. package/components/radio-group.js +1 -1
  90. package/components/radio.js +4 -2
  91. package/components/ripple-effect.js +3 -2
  92. package/components/select-popover.js +7 -5
  93. package/components/spinner.js +3 -2
  94. package/css/core.css +28 -0
  95. package/css/core.css.map +1 -1
  96. package/css/ionic.bundle.css +1 -1
  97. package/css/ionic.bundle.css.map +1 -1
  98. package/dist/cjs/{animation-9b401d39.js → animation-fdab9de5.js} +1 -1
  99. package/dist/cjs/{app-globals-07127773.js → app-globals-92ad1b3d.js} +1 -1
  100. package/dist/cjs/{button-active-85665616.js → button-active-2d6520ec.js} +1 -1
  101. package/dist/cjs/{form-controller-7d42a722.js → form-controller-7b90d7b7.js} +1 -1
  102. package/dist/cjs/{framework-delegate-1c29b14a.js → framework-delegate-a3e6d060.js} +1 -1
  103. package/dist/cjs/{hardware-back-button-76833cac.js → hardware-back-button-2696acaf.js} +48 -2
  104. package/dist/cjs/{helpers-76bb7efb.js → helpers-2e1028fa.js} +1 -1
  105. package/dist/cjs/{index-71f41461.js → index-0ffe376d.js} +56 -23
  106. package/dist/cjs/{index-b4f986cd.js → index-10da82ce.js} +1 -1
  107. package/dist/cjs/{index-da15e99c.js → index-53d162b2.js} +1 -1
  108. package/dist/cjs/{index-96a721a7.js → index-a43f7a0f.js} +4 -4
  109. package/dist/cjs/{index-6bb6b651.js → index-c3580a90.js} +4 -4
  110. package/dist/cjs/index.cjs.js +11 -11
  111. package/dist/cjs/{input-shims-a23bb0f4.js → input-shims-6f804705.js} +2 -2
  112. package/dist/cjs/{input.utils-3d0166a2.js → input.utils-d693d18a.js} +1 -1
  113. package/dist/cjs/ion-accordion_2.cjs.entry.js +18 -12
  114. package/dist/cjs/ion-action-sheet.cjs.entry.js +20 -14
  115. package/dist/cjs/ion-alert.cjs.entry.js +19 -13
  116. package/dist/cjs/ion-app_8.cjs.entry.js +72 -50
  117. package/dist/cjs/ion-avatar_3.cjs.entry.js +16 -11
  118. package/dist/cjs/ion-back-button.cjs.entry.js +9 -7
  119. package/dist/cjs/ion-backdrop.cjs.entry.js +7 -5
  120. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +15 -11
  121. package/dist/cjs/ion-button_2.cjs.entry.js +11 -8
  122. package/dist/cjs/ion-card_5.cjs.entry.js +31 -21
  123. package/dist/cjs/ion-checkbox.cjs.entry.js +8 -6
  124. package/dist/cjs/ion-chip.cjs.entry.js +8 -6
  125. package/dist/cjs/ion-col_3.cjs.entry.js +13 -10
  126. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -6
  127. package/dist/cjs/ion-datetime_3.cjs.entry.js +62 -33
  128. package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
  129. package/dist/cjs/ion-img.cjs.entry.js +6 -5
  130. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -10
  131. package/dist/cjs/ion-input.cjs.entry.js +10 -8
  132. package/dist/cjs/ion-item-option_3.cjs.entry.js +18 -13
  133. package/dist/cjs/ion-item_8.cjs.entry.js +53 -33
  134. package/dist/cjs/ion-loading.cjs.entry.js +17 -11
  135. package/dist/cjs/ion-menu_3.cjs.entry.js +29 -19
  136. package/dist/cjs/ion-modal.cjs.entry.js +21 -18
  137. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -9
  138. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +10 -8
  139. package/dist/cjs/ion-picker-internal.cjs.entry.js +23 -5
  140. package/dist/cjs/ion-popover.cjs.entry.js +20 -14
  141. package/dist/cjs/ion-progress-bar.cjs.entry.js +8 -6
  142. package/dist/cjs/ion-radio_2.cjs.entry.js +9 -7
  143. package/dist/cjs/ion-range.cjs.entry.js +9 -7
  144. package/dist/cjs/ion-refresher_2.cjs.entry.js +11 -9
  145. package/dist/cjs/ion-reorder_2.cjs.entry.js +12 -9
  146. package/dist/cjs/ion-ripple-effect.cjs.entry.js +5 -4
  147. package/dist/cjs/ion-route_4.cjs.entry.js +7 -6
  148. package/dist/cjs/ion-searchbar.cjs.entry.js +11 -9
  149. package/dist/cjs/ion-segment_2.cjs.entry.js +23 -12
  150. package/dist/cjs/ion-select_3.cjs.entry.js +42 -18
  151. package/dist/cjs/ion-spinner.cjs.entry.js +5 -4
  152. package/dist/cjs/ion-split-pane.cjs.entry.js +17 -16
  153. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +15 -11
  154. package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
  155. package/dist/cjs/ion-text.cjs.entry.js +6 -5
  156. package/dist/cjs/ion-textarea.cjs.entry.js +10 -8
  157. package/dist/cjs/ion-toast.cjs.entry.js +17 -11
  158. package/dist/cjs/ion-toggle.cjs.entry.js +8 -6
  159. package/dist/cjs/{ionic-global-c70c3fb5.js → ionic-global-59a10130.js} +1 -1
  160. package/dist/cjs/ionic.cjs.js +7 -7
  161. package/dist/cjs/{ios.transition-9624a175.js → ios.transition-c3b11cc3.js} +4 -4
  162. package/dist/cjs/loader.cjs.js +6 -6
  163. package/dist/cjs/{md.transition-786baf9a.js → md.transition-82a8c649.js} +4 -4
  164. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-db0127c4.js} +1 -1
  165. package/dist/cjs/{overlays-4c97edb0.js → overlays-fb7ca451.js} +85 -22
  166. package/dist/cjs/{status-tap-66296dcb.js → status-tap-692f6d32.js} +3 -3
  167. package/dist/cjs/{swipe-back-e37a1a5c.js → swipe-back-7a848bb8.js} +1 -1
  168. package/dist/collection/collection-manifest.json +1 -1
  169. package/dist/collection/components/accordion/accordion.js +5 -3
  170. package/dist/collection/components/accordion/test/disabled/accordion.e2e.js +94 -0
  171. package/dist/collection/components/accordion/test/readonly/accordion.e2e.js +94 -0
  172. package/dist/collection/components/accordion-group/accordion-group.js +2 -2
  173. package/dist/collection/components/action-sheet/action-sheet.ios.css +13 -1
  174. package/dist/collection/components/action-sheet/action-sheet.js +9 -5
  175. package/dist/collection/components/alert/alert.ios.css +23 -0
  176. package/dist/collection/components/alert/alert.js +8 -4
  177. package/dist/collection/components/alert/test/basic/alert.e2e.js +29 -4
  178. package/dist/collection/components/app/app.js +12 -2
  179. package/dist/collection/components/avatar/avatar.js +1 -1
  180. package/dist/collection/components/back-button/back-button.js +2 -2
  181. package/dist/collection/components/backdrop/backdrop.js +1 -1
  182. package/dist/collection/components/badge/badge.js +2 -2
  183. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  184. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  185. package/dist/collection/components/button/button.js +2 -2
  186. package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
  187. package/dist/collection/components/buttons/buttons.js +1 -1
  188. package/dist/collection/components/card/card.js +1 -1
  189. package/dist/collection/components/card-content/card-content.js +1 -1
  190. package/dist/collection/components/card-header/card-header.js +2 -2
  191. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  192. package/dist/collection/components/card-title/card-title.js +2 -2
  193. package/dist/collection/components/chip/chip.js +2 -2
  194. package/dist/collection/components/col/col.js +2 -2
  195. package/dist/collection/components/content/content.js +3 -3
  196. package/dist/collection/components/datetime/datetime.js +35 -16
  197. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +3 -3
  198. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +12 -12
  199. package/dist/collection/components/datetime/test/datetime.e2e.js +1 -1
  200. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
  201. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
  202. package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
  203. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +3 -3
  204. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +11 -11
  205. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  206. package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +22 -5
  207. package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
  208. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +32 -32
  209. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +3 -3
  210. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  211. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
  212. package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
  213. package/dist/collection/components/datetime/test/values/datetime.e2e.js +4 -4
  214. package/dist/collection/components/datetime-button/datetime-button.js +1 -1
  215. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
  216. package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
  217. package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
  218. package/dist/collection/components/fab/fab.js +2 -2
  219. package/dist/collection/components/fab-button/fab-button.js +2 -2
  220. package/dist/collection/components/fab-list/fab-list.js +2 -2
  221. package/dist/collection/components/footer/footer.js +2 -2
  222. package/dist/collection/components/grid/grid.js +2 -2
  223. package/dist/collection/components/header/header.js +2 -2
  224. package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
  225. package/dist/collection/components/img/img.js +1 -1
  226. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  227. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  228. package/dist/collection/components/item/item.ios.css +2 -39
  229. package/dist/collection/components/item/item.js +10 -12
  230. package/dist/collection/components/item/item.md.css +2 -39
  231. package/dist/collection/components/item/test/item.spec.js +20 -0
  232. package/dist/collection/components/item-divider/item-divider.js +2 -2
  233. package/dist/collection/components/item-group/item-group.js +1 -1
  234. package/dist/collection/components/item-option/item-option.js +2 -2
  235. package/dist/collection/components/item-options/item-options.js +1 -1
  236. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  237. package/dist/collection/components/label/label.js +1 -1
  238. package/dist/collection/components/label/test/basic/label.e2e.js +2 -2
  239. package/dist/collection/components/list/list.js +1 -1
  240. package/dist/collection/components/list-header/list-header.js +2 -2
  241. package/dist/collection/components/loading/loading.js +8 -4
  242. package/dist/collection/components/menu/menu.js +8 -8
  243. package/dist/collection/components/menu-button/menu-button.js +2 -2
  244. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  245. package/dist/collection/components/modal/modal.js +11 -10
  246. package/dist/collection/components/modal/test/animations/modal.e2e.js +36 -0
  247. package/dist/collection/components/modal/test/sheet/modal.e2e.js +1 -1
  248. package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
  249. package/dist/collection/components/nav/nav.js +1 -1
  250. package/dist/collection/components/nav-link/nav-link.js +1 -1
  251. package/dist/collection/components/note/note.js +2 -2
  252. package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
  253. package/dist/collection/components/picker/picker.js +8 -4
  254. package/dist/collection/components/picker-column/picker-column.js +2 -2
  255. package/dist/collection/components/picker-column-internal/picker-column-internal.js +3 -3
  256. package/dist/collection/components/picker-internal/picker-internal.js +17 -1
  257. package/dist/collection/components/picker-internal/test/keyboard-entry/picker-internal.e2e.js +32 -0
  258. package/dist/collection/components/popover/popover.ios.css +8 -1
  259. package/dist/collection/components/popover/popover.js +8 -4
  260. package/dist/collection/components/popover/popover.md.css +1 -1
  261. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  262. package/dist/collection/components/radio-group/radio-group.js +1 -1
  263. package/dist/collection/components/radio-group/test/radio-group-events.e2e.js +15 -15
  264. package/dist/collection/components/range/test/label/range.e2e.js +2 -2
  265. package/dist/collection/components/range/test/range-events.e2e.js +2 -2
  266. package/dist/collection/components/refresher/refresher.js +1 -1
  267. package/dist/collection/components/refresher/test/test.utils.js +1 -1
  268. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  269. package/dist/collection/components/reorder/reorder.js +1 -1
  270. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  271. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  272. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
  273. package/dist/collection/components/router-link/router-link.js +2 -2
  274. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  275. package/dist/collection/components/row/row.js +1 -1
  276. package/dist/collection/components/searchbar/searchbar.js +4 -4
  277. package/dist/collection/components/segment/segment.js +9 -2
  278. package/dist/collection/components/segment-button/segment-button.js +3 -3
  279. package/dist/collection/components/select/select.js +20 -1
  280. package/dist/collection/components/select/test/disabled/select.e2e.js +1 -1
  281. package/dist/collection/components/select/test/select.spec.js +15 -0
  282. package/dist/collection/components/select-option/select-option.js +1 -1
  283. package/dist/collection/components/select-popover/select-popover.ios.css +10 -0
  284. package/dist/collection/components/select-popover/select-popover.js +1 -1
  285. package/dist/collection/components/select-popover/select-popover.md.css +10 -0
  286. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  287. package/dist/collection/components/spinner/spinner.js +1 -1
  288. package/dist/collection/components/split-pane/split-pane.js +11 -12
  289. package/dist/collection/components/tab/tab.js +2 -2
  290. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  291. package/dist/collection/components/tab-button/tab-button.js +2 -2
  292. package/dist/collection/components/tabs/tabs.js +1 -1
  293. package/dist/collection/components/text/text.js +2 -2
  294. package/dist/collection/components/textarea/test/textarea-events.e2e.js +4 -4
  295. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  296. package/dist/collection/components/title/title.js +2 -2
  297. package/dist/collection/components/toast/test/toast.spec.js +12 -0
  298. package/dist/collection/components/toast/toast.js +8 -4
  299. package/dist/collection/components/toolbar/toolbar.js +2 -2
  300. package/dist/collection/utils/hardware-back-button.js +45 -2
  301. package/dist/collection/utils/helpers.js +1 -1
  302. package/dist/collection/utils/overlays.js +82 -17
  303. package/dist/collection/utils/test/hardware-back-button.spec.js +38 -0
  304. package/dist/collection/utils/test/overlays/overlays.e2e.js +33 -0
  305. package/dist/collection/utils/test/overlays/overlays.spec.js +51 -0
  306. package/dist/docs.json +26 -31
  307. package/dist/esm/{animation-dde8cc0d.js → animation-60dbdd13.js} +1 -1
  308. package/dist/esm/{app-globals-52c78291.js → app-globals-5cf6195b.js} +1 -1
  309. package/dist/esm/{button-active-b62776db.js → button-active-47ac8092.js} +1 -1
  310. package/dist/esm/{data-775093f5.js → data-0f3ab200.js} +1 -1
  311. package/dist/esm/{form-controller-548aa79c.js → form-controller-014aa89f.js} +1 -1
  312. package/dist/esm/{framework-delegate-bc1fd82a.js → framework-delegate-fed7fe7c.js} +1 -1
  313. package/dist/esm/{hardware-back-button-b2bc76db.js → hardware-back-button-b410a047.js} +48 -3
  314. package/dist/esm/{helpers-ae653409.js → helpers-c0b9ca37.js} +1 -1
  315. package/dist/esm/{index-a97c95a7.js → index-0b4beb69.js} +4 -4
  316. package/dist/esm/{index-01cb9192.js → index-47b2066d.js} +4 -4
  317. package/dist/esm/{index-27668d5b.js → index-4c30cddd.js} +56 -23
  318. package/dist/esm/{index-82eeb47f.js → index-d64f34ea.js} +1 -1
  319. package/dist/esm/{index-b9e742e5.js → index-eb12ef92.js} +1 -1
  320. package/dist/esm/index.js +11 -11
  321. package/dist/esm/{input-shims-6539ce13.js → input-shims-b90ca55f.js} +2 -2
  322. package/dist/esm/{input.utils-a5a2d164.js → input.utils-6e9b0046.js} +1 -1
  323. package/dist/esm/ion-accordion_2.entry.js +18 -12
  324. package/dist/esm/ion-action-sheet.entry.js +20 -14
  325. package/dist/esm/ion-alert.entry.js +19 -13
  326. package/dist/esm/ion-app_8.entry.js +62 -40
  327. package/dist/esm/ion-avatar_3.entry.js +16 -11
  328. package/dist/esm/ion-back-button.entry.js +9 -7
  329. package/dist/esm/ion-backdrop.entry.js +7 -5
  330. package/dist/esm/ion-breadcrumb_2.entry.js +15 -11
  331. package/dist/esm/ion-button_2.entry.js +11 -8
  332. package/dist/esm/ion-card_5.entry.js +31 -21
  333. package/dist/esm/ion-checkbox.entry.js +8 -6
  334. package/dist/esm/ion-chip.entry.js +8 -6
  335. package/dist/esm/ion-col_3.entry.js +13 -10
  336. package/dist/esm/ion-datetime-button.entry.js +9 -7
  337. package/dist/esm/ion-datetime_3.entry.js +63 -34
  338. package/dist/esm/ion-fab_3.entry.js +17 -13
  339. package/dist/esm/ion-img.entry.js +6 -5
  340. package/dist/esm/ion-infinite-scroll_2.entry.js +13 -10
  341. package/dist/esm/ion-input.entry.js +10 -8
  342. package/dist/esm/ion-item-option_3.entry.js +18 -13
  343. package/dist/esm/ion-item_8.entry.js +53 -33
  344. package/dist/esm/ion-loading.entry.js +17 -11
  345. package/dist/esm/ion-menu_3.entry.js +29 -19
  346. package/dist/esm/ion-modal.entry.js +21 -18
  347. package/dist/esm/ion-nav_2.entry.js +10 -9
  348. package/dist/esm/ion-picker-column-internal.entry.js +10 -8
  349. package/dist/esm/ion-picker-internal.entry.js +23 -5
  350. package/dist/esm/ion-popover.entry.js +20 -14
  351. package/dist/esm/ion-progress-bar.entry.js +8 -6
  352. package/dist/esm/ion-radio_2.entry.js +9 -7
  353. package/dist/esm/ion-range.entry.js +9 -7
  354. package/dist/esm/ion-refresher_2.entry.js +11 -9
  355. package/dist/esm/ion-reorder_2.entry.js +12 -9
  356. package/dist/esm/ion-ripple-effect.entry.js +5 -4
  357. package/dist/esm/ion-route_4.entry.js +7 -6
  358. package/dist/esm/ion-searchbar.entry.js +11 -9
  359. package/dist/esm/ion-segment_2.entry.js +23 -12
  360. package/dist/esm/ion-select_3.entry.js +42 -18
  361. package/dist/esm/ion-spinner.entry.js +5 -4
  362. package/dist/esm/ion-split-pane.entry.js +17 -16
  363. package/dist/esm/ion-tab-bar_2.entry.js +15 -11
  364. package/dist/esm/ion-tab_2.entry.js +10 -8
  365. package/dist/esm/ion-text.entry.js +6 -5
  366. package/dist/esm/ion-textarea.entry.js +10 -8
  367. package/dist/esm/ion-toast.entry.js +17 -11
  368. package/dist/esm/ion-toggle.entry.js +8 -6
  369. package/dist/esm/{ionic-global-8fa0f940.js → ionic-global-ad9a1810.js} +1 -1
  370. package/dist/esm/ionic.js +8 -8
  371. package/dist/esm/{ios.transition-62fd50ab.js → ios.transition-b76c7020.js} +4 -4
  372. package/dist/esm/loader.js +7 -7
  373. package/dist/esm/{md.transition-7e56966a.js → md.transition-564937a7.js} +4 -4
  374. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
  375. package/dist/esm/{overlays-8414359b.js → overlays-04a9a43f.js} +86 -22
  376. package/dist/esm/{status-tap-129c01cf.js → status-tap-5a95077d.js} +3 -3
  377. package/dist/esm/{swipe-back-18cb49f7.js → swipe-back-fa0ec5cd.js} +1 -1
  378. package/dist/esm-es5/{animation-dde8cc0d.js → animation-60dbdd13.js} +1 -1
  379. package/dist/esm-es5/app-globals-5cf6195b.js +4 -0
  380. package/dist/esm-es5/{button-active-b62776db.js → button-active-47ac8092.js} +1 -1
  381. package/dist/esm-es5/{data-775093f5.js → data-0f3ab200.js} +1 -1
  382. package/dist/esm-es5/{form-controller-548aa79c.js → form-controller-014aa89f.js} +1 -1
  383. package/dist/esm-es5/{framework-delegate-bc1fd82a.js → framework-delegate-fed7fe7c.js} +1 -1
  384. package/dist/esm-es5/hardware-back-button-b410a047.js +4 -0
  385. package/dist/esm-es5/helpers-c0b9ca37.js +4 -0
  386. package/dist/esm-es5/{index-a97c95a7.js → index-0b4beb69.js} +1 -1
  387. package/dist/esm-es5/{index-01cb9192.js → index-47b2066d.js} +1 -1
  388. package/dist/esm-es5/index-4c30cddd.js +5 -0
  389. package/dist/esm-es5/index-d64f34ea.js +4 -0
  390. package/dist/esm-es5/{index-b9e742e5.js → index-eb12ef92.js} +1 -1
  391. package/dist/esm-es5/index.js +1 -1
  392. package/dist/esm-es5/{input-shims-6539ce13.js → input-shims-b90ca55f.js} +1 -1
  393. package/dist/esm-es5/{input.utils-a5a2d164.js → input.utils-6e9b0046.js} +1 -1
  394. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  395. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  396. package/dist/esm-es5/ion-alert.entry.js +1 -1
  397. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  398. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  399. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  400. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  401. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  402. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  403. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  404. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  405. package/dist/esm-es5/ion-chip.entry.js +1 -1
  406. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  407. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  408. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  409. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  410. package/dist/esm-es5/ion-img.entry.js +1 -1
  411. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  412. package/dist/esm-es5/ion-input.entry.js +1 -1
  413. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  414. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  415. package/dist/esm-es5/ion-loading.entry.js +1 -1
  416. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  417. package/dist/esm-es5/ion-modal.entry.js +1 -1
  418. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  419. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  420. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  421. package/dist/esm-es5/ion-popover.entry.js +1 -1
  422. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  423. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  424. package/dist/esm-es5/ion-range.entry.js +1 -1
  425. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  426. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  427. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  428. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  429. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  430. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  431. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  432. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  433. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  434. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  435. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  436. package/dist/esm-es5/ion-text.entry.js +1 -1
  437. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  438. package/dist/esm-es5/ion-toast.entry.js +1 -1
  439. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  440. package/dist/esm-es5/{ionic-global-8fa0f940.js → ionic-global-ad9a1810.js} +1 -1
  441. package/dist/esm-es5/ionic.js +2 -2
  442. package/dist/esm-es5/{ios.transition-62fd50ab.js → ios.transition-b76c7020.js} +1 -1
  443. package/dist/esm-es5/loader.js +2 -2
  444. package/dist/esm-es5/md.transition-564937a7.js +4 -0
  445. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
  446. package/dist/esm-es5/overlays-04a9a43f.js +4 -0
  447. package/dist/esm-es5/{status-tap-129c01cf.js → status-tap-5a95077d.js} +1 -1
  448. package/dist/esm-es5/{swipe-back-18cb49f7.js → swipe-back-fa0ec5cd.js} +1 -1
  449. package/dist/ionic/index.esm.js +1 -1
  450. package/dist/ionic/ionic.esm.js +1 -1
  451. package/dist/ionic/ionic.js +1 -1
  452. package/dist/ionic/p-027f3674.entry.js +4 -0
  453. package/dist/ionic/p-0457213c.entry.js +4 -0
  454. package/dist/ionic/p-05d560ec.entry.js +4 -0
  455. package/dist/ionic/p-0b34d3a7.system.js +4 -0
  456. package/dist/ionic/p-0e23c289.system.entry.js +4 -0
  457. package/dist/ionic/p-1131946f.system.entry.js +4 -0
  458. package/dist/ionic/{p-25221a73.js → p-123b4809.js} +1 -1
  459. package/dist/ionic/{p-d2707f9d.system.js → p-1636923f.system.js} +1 -1
  460. package/dist/ionic/p-16a61810.entry.js +4 -0
  461. package/dist/ionic/p-18beebdf.system.entry.js +4 -0
  462. package/dist/ionic/p-1924f2e0.system.entry.js +4 -0
  463. package/dist/ionic/{p-53ec4f1c.system.js → p-1dfc11b3.system.js} +1 -1
  464. package/dist/ionic/p-1f16d040.entry.js +4 -0
  465. package/dist/ionic/p-1f19958f.system.entry.js +4 -0
  466. package/dist/ionic/p-21ca1f1c.js +4 -0
  467. package/dist/ionic/p-2327064c.entry.js +4 -0
  468. package/dist/ionic/{p-7bae84aa.entry.js → p-23c73017.entry.js} +1 -1
  469. package/dist/ionic/p-275705e5.entry.js +4 -0
  470. package/dist/ionic/{p-32b8e50d.system.js → p-2e14c533.system.js} +1 -1
  471. package/dist/ionic/p-2e1f014a.system.entry.js +4 -0
  472. package/dist/ionic/p-3079950e.entry.js +4 -0
  473. package/dist/ionic/{p-03e00f90.js → p-30cd5e7b.js} +1 -1
  474. package/dist/ionic/p-30d77a91.system.js +4 -0
  475. package/dist/ionic/{p-376a6063.js → p-31c495c2.js} +1 -1
  476. package/dist/ionic/p-337ac0f5.entry.js +4 -0
  477. package/dist/ionic/p-3471a7c0.system.entry.js +4 -0
  478. package/dist/ionic/p-3481d54e.system.entry.js +4 -0
  479. package/dist/ionic/{p-cabad15b.system.js → p-37c33319.system.js} +1 -1
  480. package/dist/ionic/p-396083cc.entry.js +4 -0
  481. package/dist/ionic/{p-e814f9c0.entry.js → p-3a7de59c.entry.js} +1 -1
  482. package/dist/ionic/{p-d51674c5.system.js → p-3c6f02cf.system.js} +1 -1
  483. package/dist/ionic/p-3d961d93.entry.js +4 -0
  484. package/dist/ionic/p-3e9ad72a.system.entry.js +4 -0
  485. package/dist/ionic/p-42a9f663.system.entry.js +4 -0
  486. package/dist/ionic/p-43a5edee.entry.js +4 -0
  487. package/dist/ionic/{p-8aa1d0b7.system.js → p-49543c9c.system.js} +1 -1
  488. package/dist/ionic/p-49aba878.js +4 -0
  489. package/dist/ionic/{p-88d5fbd3.js → p-4f777b5e.js} +1 -1
  490. package/dist/ionic/p-4fda5c35.entry.js +4 -0
  491. package/dist/ionic/{p-249633a4.entry.js → p-502780e4.entry.js} +1 -1
  492. package/dist/ionic/{p-436bd99a.entry.js → p-508a4c87.entry.js} +1 -1
  493. package/dist/ionic/p-5928fac9.system.entry.js +4 -0
  494. package/dist/ionic/{p-d5216086.entry.js → p-5b40d967.entry.js} +1 -1
  495. package/dist/ionic/p-5c2ae448.js +4 -0
  496. package/dist/ionic/p-5c580e89.entry.js +4 -0
  497. package/dist/ionic/p-5c6a04bd.entry.js +4 -0
  498. package/dist/ionic/p-5cb5f63d.system.entry.js +4 -0
  499. package/dist/ionic/{p-fd41bd8a.js → p-5d7e32ce.js} +1 -1
  500. package/dist/ionic/p-5e23bea8.system.entry.js +4 -0
  501. package/dist/ionic/{p-ed60d571.entry.js → p-5f169eba.entry.js} +1 -1
  502. package/dist/ionic/{p-13387c28.entry.js → p-601e17b4.entry.js} +1 -1
  503. package/dist/ionic/p-61ba2137.system.js +4 -0
  504. package/dist/ionic/p-64761c90.entry.js +4 -0
  505. package/dist/ionic/{p-c1c57873.system.entry.js → p-64856c3c.system.entry.js} +1 -1
  506. package/dist/ionic/p-6486e393.system.entry.js +4 -0
  507. package/dist/ionic/p-64db1331.entry.js +4 -0
  508. package/dist/ionic/{p-ef3a6b51.system.js → p-6525a8cd.system.js} +1 -1
  509. package/dist/ionic/p-657ccdd6.entry.js +4 -0
  510. package/dist/ionic/p-667e3e2d.entry.js +4 -0
  511. package/dist/ionic/p-6871553b.system.js +4 -0
  512. package/dist/ionic/p-68ba8e77.system.entry.js +4 -0
  513. package/dist/ionic/p-70e34286.system.entry.js +4 -0
  514. package/dist/ionic/p-7173ba59.system.entry.js +4 -0
  515. package/dist/ionic/p-717e2526.system.entry.js +4 -0
  516. package/dist/ionic/p-72fa96bf.system.js +5 -0
  517. package/dist/ionic/{p-87bb3735.system.js → p-7330c044.system.js} +1 -1
  518. package/dist/ionic/{p-ae638cb5.system.js → p-74deb358.system.js} +1 -1
  519. package/dist/ionic/p-7b1ed642.system.entry.js +4 -0
  520. package/dist/ionic/{p-b6f6f00e.entry.js → p-7ce40e7b.entry.js} +1 -1
  521. package/dist/ionic/p-86813176.system.entry.js +4 -0
  522. package/dist/ionic/p-8794fa00.system.entry.js +4 -0
  523. package/dist/ionic/p-88e9052d.entry.js +4 -0
  524. package/dist/ionic/{p-3c33dc30.system.js → p-89ca4c4b.system.js} +1 -1
  525. package/dist/ionic/p-8e651c29.entry.js +4 -0
  526. package/dist/ionic/p-9056778e.system.entry.js +4 -0
  527. package/dist/ionic/p-91cb3f9a.entry.js +4 -0
  528. package/dist/ionic/{p-29d03b3a.js → p-9393a49f.js} +1 -1
  529. package/dist/ionic/{p-3a75d7fd.js → p-94be3ad7.js} +1 -1
  530. package/dist/ionic/p-95d5a097.entry.js +4 -0
  531. package/dist/ionic/p-9cd7ba27.system.js +4 -0
  532. package/dist/ionic/p-9ec7208d.system.js +4 -0
  533. package/dist/ionic/p-a022b684.system.entry.js +4 -0
  534. package/dist/ionic/p-a0b28c69.system.entry.js +4 -0
  535. package/dist/ionic/p-a3df16b9.system.entry.js +4 -0
  536. package/dist/ionic/{p-4180a747.js → p-a3f572a7.js} +1 -1
  537. package/dist/ionic/{p-4a4bbcc5.system.js → p-a5951821.system.js} +2 -2
  538. package/dist/ionic/p-a6e465f5.entry.js +4 -0
  539. package/dist/ionic/{p-bb41c476.system.entry.js → p-a85d9047.system.entry.js} +1 -1
  540. package/dist/ionic/p-a8a56449.entry.js +4 -0
  541. package/dist/ionic/p-aaaa615c.system.entry.js +4 -0
  542. package/dist/ionic/p-abcedc15.system.entry.js +4 -0
  543. package/dist/ionic/{p-0bd51c34.system.js → p-abe101da.system.js} +1 -1
  544. package/dist/ionic/p-ae35294f.system.entry.js +4 -0
  545. package/dist/ionic/p-afd6d696.system.entry.js +4 -0
  546. package/dist/ionic/p-b06ac4a5.system.js +4 -0
  547. package/dist/ionic/p-b0ff8075.entry.js +4 -0
  548. package/dist/ionic/{p-66d633fb.js → p-b253ad7f.js} +1 -1
  549. package/dist/ionic/p-b2595011.system.entry.js +4 -0
  550. package/dist/ionic/p-b5839dc2.js +4 -0
  551. package/dist/ionic/p-b6279412.entry.js +4 -0
  552. package/dist/ionic/p-b8c685a7.system.js +4 -0
  553. package/dist/ionic/p-ba97a133.system.entry.js +4 -0
  554. package/dist/ionic/p-bd4787eb.entry.js +4 -0
  555. package/dist/ionic/p-bdca4784.js +4 -0
  556. package/dist/ionic/p-bf05cbc7.entry.js +4 -0
  557. package/dist/ionic/p-c11bab7e.entry.js +4 -0
  558. package/dist/ionic/p-c1797ec5.system.entry.js +4 -0
  559. package/dist/ionic/{p-36d187af.js → p-c2289cd1.js} +1 -1
  560. package/dist/ionic/p-c308f773.entry.js +4 -0
  561. package/dist/ionic/p-c39cc96d.system.entry.js +4 -0
  562. package/dist/ionic/p-c747f89b.system.entry.js +4 -0
  563. package/dist/ionic/{p-7798c78a.system.js → p-c80c7e90.system.js} +1 -1
  564. package/dist/ionic/{p-013013a3.js → p-c858f685.js} +1 -1
  565. package/dist/ionic/p-c995da88.system.js +4 -0
  566. package/dist/ionic/p-cb9e71e0.entry.js +4 -0
  567. package/dist/ionic/p-cd9a7017.system.entry.js +4 -0
  568. package/dist/ionic/p-cde3ac34.system.entry.js +4 -0
  569. package/dist/ionic/p-ceceac26.js +4 -0
  570. package/dist/ionic/{p-803ad1e3.entry.js → p-d39ab63d.entry.js} +1 -1
  571. package/dist/ionic/{p-43afd001.system.js → p-d4cadd34.system.js} +1 -1
  572. package/dist/ionic/p-db30f71b.entry.js +4 -0
  573. package/dist/ionic/p-dbcba5a2.js +4 -0
  574. package/dist/ionic/{p-1052ef2b.entry.js → p-dcb5711d.entry.js} +1 -1
  575. package/dist/ionic/{p-23ce95e8.js → p-de55ec45.js} +1 -1
  576. package/dist/ionic/p-df504a37.system.js +4 -0
  577. package/dist/ionic/p-e04b9647.system.entry.js +4 -0
  578. package/dist/ionic/{p-38f2c6bb.system.js → p-e2bb92ed.system.js} +1 -1
  579. package/dist/ionic/p-e81bf09e.system.entry.js +4 -0
  580. package/dist/ionic/p-e9f9388e.system.js +4 -0
  581. package/dist/ionic/p-ea25b4c8.system.entry.js +4 -0
  582. package/dist/ionic/p-eb07b88f.entry.js +4 -0
  583. package/dist/ionic/p-ed7a529f.js +5 -0
  584. package/dist/ionic/p-edcada2b.system.entry.js +4 -0
  585. package/dist/ionic/p-f0194418.system.entry.js +4 -0
  586. package/dist/ionic/p-f460c7ae.entry.js +4 -0
  587. package/dist/ionic/p-f53d074d.system.entry.js +4 -0
  588. package/dist/ionic/{p-18cae04f.js → p-f7dce541.js} +1 -1
  589. package/dist/ionic/p-f840d817.entry.js +4 -0
  590. package/dist/ionic/p-f8c96502.system.entry.js +4 -0
  591. package/dist/ionic/p-fb9f8495.system.entry.js +4 -0
  592. package/dist/ionic/p-fd2aa50c.js +4 -0
  593. package/dist/ionic/p-fd8ced99.system.js +4 -0
  594. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +2 -2
  595. package/dist/types/components/action-sheet/action-sheet.d.ts +4 -0
  596. package/dist/types/components/alert/alert-interface.d.ts +2 -2
  597. package/dist/types/components/alert/alert.d.ts +4 -0
  598. package/dist/types/components/item/item.d.ts +1 -0
  599. package/dist/types/components/loading/loading.d.ts +4 -0
  600. package/dist/types/components/modal/modal.d.ts +4 -0
  601. package/dist/types/components/picker/picker.d.ts +4 -0
  602. package/dist/types/components/popover/popover.d.ts +4 -0
  603. package/dist/types/components/toast/toast-interface.d.ts +2 -2
  604. package/dist/types/components/toast/toast.d.ts +4 -0
  605. package/dist/types/components.d.ts +7 -7
  606. package/dist/types/interface.d.ts +1 -1
  607. package/dist/types/utils/browser/index.d.ts +22 -1
  608. package/dist/types/utils/config.d.ts +7 -0
  609. package/dist/types/utils/hardware-back-button.d.ts +13 -0
  610. package/hydrate/index.d.ts +1 -1
  611. package/hydrate/index.js +794 -373
  612. package/package.json +9 -9
  613. package/dist/collection/components/accordion/test/accordion.e2e.js +0 -39
  614. package/dist/esm-es5/app-globals-52c78291.js +0 -4
  615. package/dist/esm-es5/hardware-back-button-b2bc76db.js +0 -4
  616. package/dist/esm-es5/helpers-ae653409.js +0 -4
  617. package/dist/esm-es5/index-27668d5b.js +0 -5
  618. package/dist/esm-es5/index-82eeb47f.js +0 -4
  619. package/dist/esm-es5/md.transition-7e56966a.js +0 -4
  620. package/dist/esm-es5/overlays-8414359b.js +0 -4
  621. package/dist/ionic/p-005e0ad0.js +0 -4
  622. package/dist/ionic/p-01438d78.entry.js +0 -4
  623. package/dist/ionic/p-02e530f5.system.js +0 -4
  624. package/dist/ionic/p-0abedd22.entry.js +0 -4
  625. package/dist/ionic/p-0d2b6901.entry.js +0 -4
  626. package/dist/ionic/p-127ff448.entry.js +0 -4
  627. package/dist/ionic/p-1a0bf247.system.entry.js +0 -4
  628. package/dist/ionic/p-1a5f0313.system.js +0 -4
  629. package/dist/ionic/p-1cca10d6.system.js +0 -4
  630. package/dist/ionic/p-1f7fc88d.entry.js +0 -4
  631. package/dist/ionic/p-1ffb40d0.system.entry.js +0 -4
  632. package/dist/ionic/p-23a9d086.js +0 -4
  633. package/dist/ionic/p-25553eba.system.entry.js +0 -4
  634. package/dist/ionic/p-2a496995.js +0 -4
  635. package/dist/ionic/p-3197dbf7.entry.js +0 -4
  636. package/dist/ionic/p-32ad210f.system.js +0 -4
  637. package/dist/ionic/p-35e1a80f.system.entry.js +0 -4
  638. package/dist/ionic/p-38c337e7.system.js +0 -4
  639. package/dist/ionic/p-3b83e483.system.entry.js +0 -4
  640. package/dist/ionic/p-3bcbbf43.system.entry.js +0 -4
  641. package/dist/ionic/p-3f0afc6f.entry.js +0 -4
  642. package/dist/ionic/p-40f68333.system.js +0 -4
  643. package/dist/ionic/p-41040a92.system.entry.js +0 -4
  644. package/dist/ionic/p-41aa2662.entry.js +0 -4
  645. package/dist/ionic/p-48f7e8cc.system.entry.js +0 -4
  646. package/dist/ionic/p-4b3623da.js +0 -4
  647. package/dist/ionic/p-4cd6a04c.system.entry.js +0 -4
  648. package/dist/ionic/p-525b6ac4.system.entry.js +0 -4
  649. package/dist/ionic/p-54c92c77.entry.js +0 -4
  650. package/dist/ionic/p-5a85d71d.entry.js +0 -4
  651. package/dist/ionic/p-5aecd304.system.entry.js +0 -4
  652. package/dist/ionic/p-5c2da581.system.entry.js +0 -4
  653. package/dist/ionic/p-619fafe3.system.entry.js +0 -4
  654. package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
  655. package/dist/ionic/p-677cb2f7.js +0 -4
  656. package/dist/ionic/p-67c3a2a8.system.js +0 -5
  657. package/dist/ionic/p-688a36c7.entry.js +0 -4
  658. package/dist/ionic/p-6a257379.entry.js +0 -4
  659. package/dist/ionic/p-6b9eee40.system.entry.js +0 -4
  660. package/dist/ionic/p-6ba863b1.system.entry.js +0 -4
  661. package/dist/ionic/p-6e165986.system.entry.js +0 -4
  662. package/dist/ionic/p-7510e462.entry.js +0 -4
  663. package/dist/ionic/p-76b6b42e.system.entry.js +0 -4
  664. package/dist/ionic/p-770f5b43.system.js +0 -4
  665. package/dist/ionic/p-7751def0.system.entry.js +0 -4
  666. package/dist/ionic/p-788942c8.system.entry.js +0 -4
  667. package/dist/ionic/p-790220fd.system.js +0 -4
  668. package/dist/ionic/p-7de774dd.entry.js +0 -4
  669. package/dist/ionic/p-8084e9cb.entry.js +0 -4
  670. package/dist/ionic/p-80ddd0c1.entry.js +0 -4
  671. package/dist/ionic/p-85e04029.entry.js +0 -4
  672. package/dist/ionic/p-87e10168.system.entry.js +0 -4
  673. package/dist/ionic/p-888db766.system.js +0 -4
  674. package/dist/ionic/p-88d99112.system.entry.js +0 -4
  675. package/dist/ionic/p-89c28901.system.entry.js +0 -4
  676. package/dist/ionic/p-928e945d.system.entry.js +0 -4
  677. package/dist/ionic/p-978c6799.system.entry.js +0 -4
  678. package/dist/ionic/p-9a0b9b64.entry.js +0 -4
  679. package/dist/ionic/p-a2d75455.entry.js +0 -4
  680. package/dist/ionic/p-a706cf11.system.entry.js +0 -4
  681. package/dist/ionic/p-a78d17e2.entry.js +0 -4
  682. package/dist/ionic/p-aca77953.entry.js +0 -4
  683. package/dist/ionic/p-b09c8228.entry.js +0 -4
  684. package/dist/ionic/p-b2205a7c.system.entry.js +0 -4
  685. package/dist/ionic/p-b43cf55f.entry.js +0 -4
  686. package/dist/ionic/p-bc59962f.system.entry.js +0 -4
  687. package/dist/ionic/p-be04fcd8.system.entry.js +0 -4
  688. package/dist/ionic/p-bf595ef8.system.entry.js +0 -4
  689. package/dist/ionic/p-bf80f9d1.entry.js +0 -4
  690. package/dist/ionic/p-c0f62b42.system.js +0 -4
  691. package/dist/ionic/p-c16d9f2c.system.entry.js +0 -4
  692. package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
  693. package/dist/ionic/p-c9219299.entry.js +0 -4
  694. package/dist/ionic/p-cae77add.system.entry.js +0 -4
  695. package/dist/ionic/p-cd6bb7f5.system.entry.js +0 -4
  696. package/dist/ionic/p-cdce5ba3.system.entry.js +0 -4
  697. package/dist/ionic/p-d6129c6e.js +0 -5
  698. package/dist/ionic/p-d6beb1c9.system.entry.js +0 -4
  699. package/dist/ionic/p-db798370.system.entry.js +0 -4
  700. package/dist/ionic/p-dc1d883c.system.entry.js +0 -4
  701. package/dist/ionic/p-dd9dff11.entry.js +0 -4
  702. package/dist/ionic/p-ddbb2d5b.system.js +0 -4
  703. package/dist/ionic/p-de6f8b28.system.js +0 -4
  704. package/dist/ionic/p-df62accd.entry.js +0 -4
  705. package/dist/ionic/p-e1e05489.system.entry.js +0 -4
  706. package/dist/ionic/p-e3ff3cde.system.entry.js +0 -4
  707. package/dist/ionic/p-e8294cc1.entry.js +0 -4
  708. package/dist/ionic/p-e87564bc.entry.js +0 -4
  709. package/dist/ionic/p-ea7f77e7.entry.js +0 -4
  710. package/dist/ionic/p-eb210b21.system.entry.js +0 -4
  711. package/dist/ionic/p-eb80ca40.entry.js +0 -4
  712. package/dist/ionic/p-eba17ff5.system.entry.js +0 -4
  713. package/dist/ionic/p-eef72e06.js +0 -4
  714. package/dist/ionic/p-efcc4b66.entry.js +0 -4
  715. package/dist/ionic/p-f08d8865.js +0 -4
  716. package/dist/ionic/p-f3478ed6.system.entry.js +0 -4
  717. package/dist/ionic/p-f4bf2448.entry.js +0 -4
  718. package/dist/ionic/p-f4e37ba7.entry.js +0 -4
  719. package/dist/ionic/p-f56d53bd.entry.js +0 -4
  720. package/dist/ionic/p-f8564a9b.system.entry.js +0 -4
  721. package/dist/ionic/p-f865bc9a.entry.js +0 -4
  722. package/dist/ionic/p-fd1a0431.js +0 -4
@@ -113,6 +113,10 @@ export class Loading {
113
113
  * This can be useful in a button handler for determining which button was
114
114
  * clicked to dismiss the loading.
115
115
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
116
+ *
117
+ * This is a no-op if the overlay has not been presented yet. If you want
118
+ * to remove an overlay from the DOM that was never presented, use the
119
+ * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
116
120
  */
117
121
  async dismiss(data, role) {
118
122
  const unlock = await this.lockController.lock();
@@ -154,9 +158,9 @@ export class Loading {
154
158
  * Otherwise, don't set aria-labelledby.
155
159
  */
156
160
  const ariaLabelledBy = message !== undefined ? msgId : null;
157
- return (h(Host, Object.assign({ role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
161
+ return (h(Host, Object.assign({ key: '95123f54ba1db5e59563d79db075315b43ed20f7', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
158
162
  zIndex: `${40000 + this.overlayIndex}`,
159
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { tabindex: "0" }), h("div", { class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { tabindex: "0" })));
163
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), h("ion-backdrop", { key: 'e113bf123eaad38f2dafce8ea5d2ebef409d0c0f', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '1268c9480854383c7883a79d597350540ade93c2', tabindex: "0" }), h("div", { key: 'e86fc71504ebd578117dea2232d9740a087d1249', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (h("div", { class: "loading-spinner" }, h("ion-spinner", { name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), h("div", { key: '3b91e2492e06aa65ebe77ed2b6ffb9d2f84bdd9c', tabindex: "0" })));
160
164
  }
161
165
  static get is() { return "ion-loading"; }
162
166
  static get encapsulation() { return "scoped"; }
@@ -680,7 +684,7 @@ export class Loading {
680
684
  }, {
681
685
  "name": "role",
682
686
  "type": "string | undefined",
683
- "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\"`."
687
+ "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."
684
688
  }],
685
689
  "references": {
686
690
  "Promise": {
@@ -697,7 +701,7 @@ export class Loading {
697
701
  "text": "data Any data to emit in the dismiss events."
698
702
  }, {
699
703
  "name": "param",
700
- "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\"`."
704
+ "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."
701
705
  }]
702
706
  }
703
707
  },
@@ -4,6 +4,7 @@
4
4
  import { Build, Host, h } from "@stencil/core";
5
5
  import { getTimeGivenProgression } from "../../utils/animation/cubic-bezier";
6
6
  import { GESTURE_CONTROLLER } from "../../utils/gesture/index";
7
+ import { shoudUseCloseWatcher } from "../../utils/hardware-back-button";
7
8
  import { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from "../../utils/helpers";
8
9
  import { menuController } from "../../utils/menu-controller/index";
9
10
  import { getPresentedOverlay } from "../../utils/overlays";
@@ -595,13 +596,18 @@ export class Menu {
595
596
  render() {
596
597
  const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;
597
598
  const mode = getIonMode(this);
598
- return (h(Host, { role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
599
+ /**
600
+ * If the Close Watcher is enabled then
601
+ * the ionBackButton listener in the menu controller
602
+ * will handle closing the menu when Escape is pressed.
603
+ */
604
+ return (h(Host, { key: 'be7145625a30951e5cc26646f6121ee4fa4c910f', onKeyDown: shoudUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
599
605
  [mode]: true,
600
606
  [`menu-type-${type}`]: true,
601
607
  'menu-enabled': !disabled,
602
608
  [`menu-side-${side}`]: true,
603
609
  'menu-pane-visible': isPaneVisible,
604
- } }, h("div", { class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", null)), h("ion-backdrop", { ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
610
+ } }, h("div", { key: 'ecd6e0641ed67691db270190801f7be365a2d121', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: 'aea3780e259f2b3ea84697a509bb7f13fa9531e9' })), h("ion-backdrop", { key: 'be3253506a34c4c00eb1814621c674196b72db46', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
605
611
  }
606
612
  static get is() { return "ion-menu"; }
607
613
  static get encapsulation() { return "shadow"; }
@@ -998,12 +1004,6 @@ export class Menu {
998
1004
  "target": undefined,
999
1005
  "capture": true,
1000
1006
  "passive": false
1001
- }, {
1002
- "name": "keydown",
1003
- "method": "onKeydown",
1004
- "target": undefined,
1005
- "capture": false,
1006
- "passive": false
1007
1007
  }];
1008
1008
  }
1009
1009
  }
@@ -46,7 +46,7 @@ export class MenuButton {
46
46
  type: this.type,
47
47
  };
48
48
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
49
- return (h(Host, { onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
49
+ return (h(Host, { key: '2fd7130b8d28695162f7efebbd2131e5e9e4f330', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
50
50
  [mode]: true,
51
51
  button: true, // ion-buttons target .button
52
52
  'menu-button-hidden': hidden,
@@ -55,7 +55,7 @@ export class MenuButton {
55
55
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
56
56
  'ion-activatable': true,
57
57
  'ion-focusable': true,
58
- }) }, h("button", Object.assign({}, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { class: "button-inner" }, h("slot", null, h("ion-icon", { part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
58
+ }) }, h("button", Object.assign({ key: 'fa6b1fb9291df812b04065b4b0ebdfd28e5217eb' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), h("span", { key: '88106a08070ebff7457c581301efe649829aded2', class: "button-inner" }, h("slot", { key: 'e3edfb89e5705b2c08c66f3d3452457667de3657' }, h("ion-icon", { key: '24678e9c3bb2f1f3db113a2ae0ec93e407a7de0c', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
59
59
  }
60
60
  static get is() { return "ion-menu-button"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -26,10 +26,10 @@ export class MenuToggle {
26
26
  render() {
27
27
  const mode = getIonMode(this);
28
28
  const hidden = this.autoHide && !this.visible;
29
- return (h(Host, { onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
29
+ return (h(Host, { key: '5b75baade530bf9e7ed9165a5db3e513975e22f2', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
30
30
  [mode]: true,
31
31
  'menu-toggle-hidden': hidden,
32
- } }, h("slot", null)));
32
+ } }, h("slot", { key: '65dea458274b685125c22af54aa153cf4977113c' })));
33
33
  }
34
34
  static get is() { return "ion-menu-toggle"; }
35
35
  static get encapsulation() { return "shadow"; }
@@ -8,7 +8,7 @@ import { raf, inheritAttributes, hasLazyBuild } from "../../utils/helpers";
8
8
  import { createLockController } from "../../utils/lock-controller";
9
9
  import { printIonWarning } from "../../utils/logging/index";
10
10
  import { Style as StatusBarStyle, StatusBar } from "../../utils/native/status-bar";
11
- import { GESTURE, BACKDROP, activeAnimations, dismiss, eventMethod, prepareOverlay, present, createTriggerController, setOverlayId, } from "../../utils/overlays";
11
+ import { GESTURE, BACKDROP, dismiss, eventMethod, prepareOverlay, present, createTriggerController, setOverlayId, } from "../../utils/overlays";
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { config } from "../../global/config";
@@ -396,6 +396,10 @@ export class Modal {
396
396
  *
397
397
  * @param data Any data to emit in the dismiss events.
398
398
  * @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.
399
+ *
400
+ * This is a no-op if the overlay has not been presented yet. If you want
401
+ * to remove an overlay from the DOM that was never presented, use the
402
+ * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
399
403
  */
400
404
  async dismiss(data, role) {
401
405
  var _a;
@@ -432,7 +436,6 @@ export class Modal {
432
436
  window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
433
437
  this.keyboardOpenCallback = undefined;
434
438
  }
435
- const enteringAnimation = activeAnimations.get(this) || [];
436
439
  const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {
437
440
  presentingEl: presentingElement,
438
441
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
@@ -448,7 +451,6 @@ export class Modal {
448
451
  if (this.gesture) {
449
452
  this.gesture.destroy();
450
453
  }
451
- enteringAnimation.forEach((ani) => ani.destroy());
452
454
  }
453
455
  this.currentBreakpoint = undefined;
454
456
  this.animation = undefined;
@@ -528,19 +530,18 @@ export class Modal {
528
530
  const mode = getIonMode(this);
529
531
  const isCardModal = presentingElement !== undefined && mode === 'ios';
530
532
  const isHandleCycle = handleBehavior === 'cycle';
531
- return (h(Host, Object.assign({ "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
533
+ return (h(Host, Object.assign({ key: '0c2c4369ab2df4ef4660addea5e927c6a0232864', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
532
534
  zIndex: `${20000 + this.overlayIndex}`,
533
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", Object.assign({
535
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: 'd044383a776c2ee1703f996caedaedca47f2948f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { class: "modal-shadow" }), h("div", Object.assign({ key: '8d23b6a3cc9069e4d46fa0645cde9db3e6f89507',
534
536
  /*
535
537
  role and aria-modal must be used on the
536
538
  same element. They must also be set inside the
537
539
  shadow DOM otherwise ion-button will not be highlighted
538
540
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
539
541
  */
540
- role: "dialog"
541
- }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { class: "modal-handle",
542
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { class: "modal-handle",
542
543
  // Prevents the handle from receiving keyboard focus when it does not cycle
543
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", null))));
544
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '3fbb689e4bf5575fbb26ad1000f6ac5993f3bf8f' }))));
544
545
  }
545
546
  static get is() { return "ion-modal"; }
546
547
  static get encapsulation() { return "shadow"; }
@@ -1235,7 +1236,7 @@ export class Modal {
1235
1236
  }, {
1236
1237
  "name": "role",
1237
1238
  "type": "string | undefined",
1238
- "docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
1239
+ "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."
1239
1240
  }],
1240
1241
  "references": {
1241
1242
  "Promise": {
@@ -1256,7 +1257,7 @@ export class Modal {
1256
1257
  "text": "data Any data to emit in the dismiss events."
1257
1258
  }, {
1258
1259
  "name": "param",
1259
- "text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
1260
+ "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."
1260
1261
  }]
1261
1262
  }
1262
1263
  },
@@ -0,0 +1,36 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ config, title }) => {
7
+ test.describe(title('modal: animations'), () => {
8
+ test.beforeEach(async ({ page }) => {
9
+ await page.setContent(`
10
+ <ion-modal is-open="true" trigger="open-modal"></ion-modal>
11
+ `, config);
12
+ });
13
+ test('card modal should clean up animations on dismiss', async ({ page }, testInfo) => {
14
+ testInfo.annotations.push({
15
+ type: 'issue',
16
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28352',
17
+ });
18
+ const ionModalDidDismiss = await page.spyOnEvent('ionModalDidDismiss');
19
+ const modal = page.locator('ion-modal');
20
+ const initialAnimations = await modal.evaluate((el) => {
21
+ return el.shadowRoot.getAnimations();
22
+ });
23
+ // While the modal is open, it should have animations
24
+ expect(initialAnimations.length).toBeGreaterThan(0);
25
+ await modal.evaluate((el) => {
26
+ el.dismiss();
27
+ });
28
+ await ionModalDidDismiss.next();
29
+ const currentAnimations = await modal.evaluate((el) => {
30
+ return el.shadowRoot.getAnimations();
31
+ });
32
+ // Once the modal has finished closing, there should be no animations
33
+ expect(currentAnimations.length).toBe(0);
34
+ });
35
+ });
36
+ });
@@ -40,7 +40,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
40
40
  const ionModalDidPresent = await page.spyOnEvent('ionModalDidPresent');
41
41
  await page.click('#backdrop-inactive');
42
42
  await ionModalDidPresent.next();
43
- const input = page.locator('#root-input input').first();
43
+ const input = page.locator('#root-input').first();
44
44
  await input.click();
45
45
  await expect(input).toBeFocused();
46
46
  });
@@ -13,7 +13,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
13
13
  const modal = page.locator('ion-modal');
14
14
  await modal.evaluate((el) => el.dismiss());
15
15
  await ionModalDidDismiss.next();
16
- await page.waitForSelector('ion-modal', { state: 'detached' });
16
+ await page.locator('ion-modal').waitFor({ state: 'detached' });
17
17
  });
18
18
  });
19
19
  });
@@ -827,7 +827,7 @@ export class Nav {
827
827
  }
828
828
  }
829
829
  render() {
830
- return h("slot", null);
830
+ return h("slot", { key: '654286a8a7ef03d4a22497eb51e781a9a8979774' });
831
831
  }
832
832
  static get is() { return "ion-nav"; }
833
833
  static get encapsulation() { return "shadow"; }
@@ -14,7 +14,7 @@ export class NavLink {
14
14
  this.routerAnimation = undefined;
15
15
  }
16
16
  render() {
17
- return h(Host, { onClick: this.onClick });
17
+ return h(Host, { key: 'a781794425ad0866705bc6691256184b93477a74', onClick: this.onClick });
18
18
  }
19
19
  static get is() { return "ion-nav-link"; }
20
20
  static get properties() {
@@ -13,9 +13,9 @@ export class Note {
13
13
  }
14
14
  render() {
15
15
  const mode = getIonMode(this);
16
- return (h(Host, { class: createColorClasses(this.color, {
16
+ return (h(Host, { key: 'eebc0ea94483a248192408a1546739700281d2ae', class: createColorClasses(this.color, {
17
17
  [mode]: true,
18
- }) }, h("slot", null)));
18
+ }) }, h("slot", { key: '33018e11967398327a0e7c20522547a4d9e8f55b' })));
19
19
  }
20
20
  static get is() { return "ion-note"; }
21
21
  static get encapsulation() { return "shadow"; }
@@ -58,33 +58,33 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
58
58
 
59
59
  <ion-list>
60
60
  <ion-item>
61
- <ion-note slot="start">Really really long note</ion-note>
61
+ <ion-note slot="start">123</ion-note>
62
62
  <ion-label>Label</ion-label>
63
63
  </ion-item>
64
64
 
65
65
  <ion-item>
66
66
  <ion-label>Label</ion-label>
67
- <ion-note slot="end">Really really long note</ion-note>
67
+ <ion-note slot="end">123</ion-note>
68
68
  </ion-item>
69
69
 
70
70
  <ion-item>
71
- <ion-note slot="start">Note</ion-note>
71
+ <ion-note slot="start">123</ion-note>
72
72
  <ion-label>Really really long label</ion-label>
73
73
  </ion-item>
74
74
 
75
75
  <ion-item>
76
76
  <ion-label>Really really long label</ion-label>
77
- <ion-note slot="end">Note</ion-note>
77
+ <ion-note slot="end">123</ion-note>
78
78
  </ion-item>
79
79
 
80
80
  <ion-item>
81
- <ion-note slot="start">Really really long note</ion-note>
81
+ <ion-note slot="start">123</ion-note>
82
82
  <ion-label>Really really long label</ion-label>
83
83
  </ion-item>
84
84
 
85
85
  <ion-item>
86
86
  <ion-label>Really really long label</ion-label>
87
- <ion-note slot="end">Really really long note</ion-note>
87
+ <ion-note slot="end">123</ion-note>
88
88
  </ion-item>
89
89
  </ion-list>
90
90
  `, config);
@@ -109,6 +109,10 @@ export class Picker {
109
109
  * This can be useful in a button handler for determining which button was
110
110
  * clicked to dismiss the picker.
111
111
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
112
+ *
113
+ * This is a no-op if the overlay has not been presented yet. If you want
114
+ * to remove an overlay from the DOM that was never presented, use the
115
+ * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
112
116
  */
113
117
  async dismiss(data, role) {
114
118
  const unlock = await this.lockController.lock();
@@ -180,11 +184,11 @@ export class Picker {
180
184
  render() {
181
185
  const { htmlAttributes } = this;
182
186
  const mode = getIonMode(this);
183
- return (h(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
187
+ return (h(Host, Object.assign({ key: 'c266cc072afaba2da22f70d8b62dc4bc6756d188', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
184
188
  zIndex: `${20000 + this.overlayIndex}`,
185
189
  }, class: Object.assign({ [mode]: true,
186
190
  // Used internally for styling
187
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { tabindex: "0" }), h("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { class: "picker-columns" }, h("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { class: "picker-below-highlight" }))), h("div", { tabindex: "0" })));
191
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '35ee3e5028028835580e28ac2c8db65a924d5d6a', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: '8b454e6edbcfc45c57d3d8baf7c14b7905921a6e', tabindex: "0" }), h("div", { key: 'e0fee78ec6d097bf0963190f748e5daad602e0f7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: 'ce66bca18fc3e982ad7d6660f27cb1a03fb8247b', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: 'a58b9523fe16f109dd6de0610717c5077fed964b', class: "picker-columns" }, h("div", { key: 'acd54c0314cff51e8513a08dd9755c4b847c0617', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-column", { col: c })), h("div", { key: '604730bd87582d048d850c6e0a0f29ba33258918', class: "picker-below-highlight" }))), h("div", { key: '93baf5e6e57aec5f084d7d5b24af14e7d8126b5a', tabindex: "0" })));
188
192
  }
189
193
  static get is() { return "ion-picker"; }
190
194
  static get encapsulation() { return "scoped"; }
@@ -693,7 +697,7 @@ export class Picker {
693
697
  }, {
694
698
  "name": "role",
695
699
  "type": "string | undefined",
696
- "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\"`."
700
+ "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."
697
701
  }],
698
702
  "references": {
699
703
  "Promise": {
@@ -710,7 +714,7 @@ export class Picker {
710
714
  "text": "data Any data to emit in the dismiss events."
711
715
  }, {
712
716
  "name": "param",
713
- "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\"`."
717
+ "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."
714
718
  }]
715
719
  }
716
720
  },
@@ -336,9 +336,9 @@ export class PickerColumnCmp {
336
336
  render() {
337
337
  const col = this.col;
338
338
  const mode = getIonMode(this);
339
- return (h(Host, { class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
339
+ return (h(Host, { key: '06e2ae483a3bcf4fe721ad0c48cded6a1efdc6c0', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
340
340
  'max-width': this.col.columnWidth,
341
- } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
341
+ } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '14bea013788d899edf7155eb3cc10f79fe8e4690', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
342
342
  }
343
343
  static get is() { return "ion-picker-column"; }
344
344
  static get originalStyleUrls() {
@@ -333,11 +333,11 @@ export class PickerColumnInternal {
333
333
  * the attribute can be moved to datetime.tsx and set on every
334
334
  * instance of ion-picker-column-internal there instead.
335
335
  */
336
- return (h(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
336
+ return (h(Host, { key: 'd0e3818aa4ab06aefd988d1b42ae754244727b8f', exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
337
337
  [mode]: true,
338
338
  ['picker-column-active']: isActive,
339
339
  ['picker-column-numeric-input']: numericInput,
340
- }) }, h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
340
+ }) }, h("div", { key: 'ec3b16415db5f64e3fab37fda023560ebcdc9423', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '40c78c9a1277807572d73e23048c2730cab88f5a', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c51fa817f6999356cf3568a46098e954936b45d5', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), items.map((item, index) => {
341
341
  const isItemDisabled = pickerDisabled || item.disabled || false;
342
342
  {
343
343
  /*
@@ -354,7 +354,7 @@ export class PickerColumnInternal {
354
354
  }, "data-value": item.value, "data-index": index, onClick: (ev) => {
355
355
  this.centerPickerItemInView(ev.target, true);
356
356
  }, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
357
- }), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
357
+ }), h("div", { key: '80a7461dfe571f46466219b05007b021711aed32', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'fed82263295f58c51e2b753d0c06c7d71872b8a7', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'e805dff4122cc4e5fb4d7dcb96054fee8ad3bd07', class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
358
358
  }
359
359
  static get is() { return "ion-picker-column-internal"; }
360
360
  static get encapsulation() { return "shadow"; }
@@ -217,6 +217,7 @@ export class PickerInternal {
217
217
  inputEl.focus();
218
218
  }
219
219
  else {
220
+ // TODO FW-5900 Use keydown instead
220
221
  el.addEventListener('keypress', this.onKeyPress);
221
222
  this.destroyKeypressListener = () => {
222
223
  el.removeEventListener('keypress', this.onKeyPress);
@@ -467,7 +468,22 @@ export class PickerInternal {
467
468
  this.emitInputModeChange();
468
469
  }
469
470
  render() {
470
- return (h(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, h("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), h("div", { class: "picker-before" }), h("div", { class: "picker-after" }), h("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), h("slot", null)));
471
+ return (h(Host, { key: 'f6b301345583f5ccfc31cce536176af7aeefd193', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, h("input", { key: 'e57fd191d49cc500b719d5b9ad35054d55e96c43', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
472
+ var _a;
473
+ /**
474
+ * The "Enter" key represents
475
+ * the user submitting their time
476
+ * selection, so we should blur the
477
+ * input (and therefore close the keyboard)
478
+ *
479
+ * Updating the picker's state to no longer
480
+ * be in input mode is handled in the onBlur
481
+ * callback below.
482
+ */
483
+ if (ev.key === 'Enter') {
484
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
485
+ }
486
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), h("div", { key: '3360e7d913f87293844928e430acde69d399f68e', class: "picker-before" }), h("div", { key: '4db89e681458d4eec5d60ff47d3e0ba9fd116682', class: "picker-after" }), h("div", { key: 'a21b20d77dac8141623995b5a53f416d3d9fc1ef', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), h("slot", { key: '86c7d926523b615b4769bd1a4e9713b351089369' })));
471
487
  }
472
488
  static get is() { return "ion-picker-internal"; }
473
489
  static get encapsulation() { return "shadow"; }
@@ -110,5 +110,37 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
110
110
  await expect(ionChange).toHaveReceivedEventDetail({ text: '00', value: 12 });
111
111
  await expect(column).toHaveJSProperty('value', 12);
112
112
  });
113
+ test('pressing Enter should dismiss the keyboard', async ({ page }) => {
114
+ test.info().annotations.push({
115
+ type: 'issue',
116
+ description: 'https://github.com/ionic-team/ionic-framework/issues/28325',
117
+ });
118
+ await page.setContent(`
119
+ <ion-picker-internal>
120
+ <ion-picker-column-internal></ion-picker-column-internal>
121
+ </ion-picker-internal>
122
+
123
+ <script>
124
+ const column = document.querySelector('ion-picker-column-internal');
125
+ column.items = [
126
+ { text: '00', value: 12 },
127
+ { text: '01', value: 1 },
128
+ { text: '02', value: 2 },
129
+ { text: '03', value: 3 },
130
+ { text: '04', value: 4 },
131
+ { text: '05', value: 5 }
132
+ ];
133
+ column.value = 5;
134
+ column.numericInput = true;
135
+ </script>
136
+ `, config);
137
+ const column = page.locator('ion-picker-column-internal');
138
+ await column.click();
139
+ const input = page.locator('ion-picker-internal input');
140
+ await expect(input).toBeFocused();
141
+ // pressing Enter should blur the input and therefore close the keyboard
142
+ await page.keyboard.press('Enter');
143
+ await expect(input).not.toBeFocused();
144
+ });
113
145
  });
114
146
  });
@@ -134,7 +134,7 @@
134
134
  z-index: 10;
135
135
  }
136
136
 
137
- .popover-viewport {
137
+ ::slotted(.popover-viewport) {
138
138
  --ion-safe-area-top: 0px;
139
139
  --ion-safe-area-right: 0px;
140
140
  --ion-safe-area-bottom: 0px;
@@ -258,6 +258,13 @@
258
258
  width: 20px;
259
259
  height: 10px;
260
260
  overflow: hidden;
261
+ /*
262
+ * Required for the arrow to render above the backdrop.
263
+ * Otherwise, the arrow will appear slightly transparent.
264
+ * The value is set to 11 since it's the minimum value that
265
+ * will allow the arrow to render above the backdrop.
266
+ */
267
+ z-index: 11;
261
268
  }
262
269
 
263
270
  .popover-arrow::after {
@@ -280,6 +280,10 @@ export class Popover {
280
280
  * @param role The role of the element that is dismissing the popover. For example, 'cancel' or 'backdrop'.
281
281
  * @param dismissParentPopover If `true`, dismissing this popover will also dismiss
282
282
  * a parent popover if this popover is nested. Defaults to `true`.
283
+ *
284
+ * This is a no-op if the overlay has not been presented yet. If you want
285
+ * to remove an overlay from the DOM that was never presented, use the
286
+ * [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
283
287
  */
284
288
  async dismiss(data, role, dismissParentPopover = true) {
285
289
  const unlock = await this.lockController.lock();
@@ -331,9 +335,9 @@ export class Popover {
331
335
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
332
336
  const desktop = isPlatform('desktop');
333
337
  const enableArrow = arrow && !parentPopover;
334
- return (h(Host, Object.assign({ "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
338
+ return (h(Host, Object.assign({ key: '104a5bf92a9bbd2efc71d499a8500e5d55f81711', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
335
339
  zIndex: `${20000 + this.overlayIndex}`,
336
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { class: "popover-arrow", part: "arrow" }), h("div", { class: "popover-content", part: "content" }, h("slot", null)))));
340
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'ef0baa04c22444d4bc705220235a892308d67586', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { class: "popover-arrow", part: "arrow" }), h("div", { key: '5cc5f5c353de614e484e9cfeacecfca9fbfde0e0', class: "popover-content", part: "content" }, h("slot", { key: '2d85c591cdc85efa98afbf40f676525f1402efcf' })))));
337
341
  }
338
342
  static get is() { return "ion-popover"; }
339
343
  static get encapsulation() { return "shadow"; }
@@ -1130,7 +1134,7 @@ export class Popover {
1130
1134
  }, {
1131
1135
  "name": "dismissParentPopover",
1132
1136
  "type": "boolean",
1133
- "docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
1137
+ "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."
1134
1138
  }],
1135
1139
  "references": {
1136
1140
  "Promise": {
@@ -1154,7 +1158,7 @@ export class Popover {
1154
1158
  "text": "role The role of the element that is dismissing the popover. For example, 'cancel' or 'backdrop'."
1155
1159
  }, {
1156
1160
  "name": "param",
1157
- "text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
1161
+ "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."
1158
1162
  }]
1159
1163
  }
1160
1164
  },
@@ -134,7 +134,7 @@
134
134
  z-index: 10;
135
135
  }
136
136
 
137
- .popover-viewport {
137
+ ::slotted(.popover-viewport) {
138
138
  --ion-safe-area-top: 0px;
139
139
  --ion-safe-area-right: 0px;
140
140
  --ion-safe-area-bottom: 0px;
@@ -26,7 +26,7 @@ export class ProgressBar {
26
26
  const { color, type, reversed, value, buffer } = this;
27
27
  const paused = config.getBoolean('_testing');
28
28
  const mode = getIonMode(this);
29
- return (h(Host, { role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
29
+ return (h(Host, { key: '384d09558f91dc8119e689c3a8923e67c54c7eb2', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses(color, {
30
30
  [mode]: true,
31
31
  [`progress-bar-${type}`]: true,
32
32
  'progress-paused': paused,
@@ -153,7 +153,7 @@ export class RadioGroup {
153
153
  const { label, labelId, el, name, value } = this;
154
154
  const mode = getIonMode(this);
155
155
  renderHiddenInput(true, el, name, value, false);
156
- return h(Host, { role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
156
+ return h(Host, { key: 'd8e84feca8f4dbe7605bc4ad096b6e68b482ba68', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
157
157
  }
158
158
  static get is() { return "ion-radio-group"; }
159
159
  static get properties() {