voyager-ionic-core 7.6.3 → 7.7.0

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 (718) hide show
  1. package/components/action-sheet.js +7 -5
  2. package/components/alert.js +7 -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 +7 -5
  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 +6 -4
  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 +6 -4
  45. package/components/ion-menu-button.js +7 -5
  46. package/components/ion-menu-toggle.js +4 -3
  47. package/components/ion-menu.js +13 -5
  48. package/components/ion-modal.js +8 -7
  49. package/components/ion-nav-link.js +1 -1
  50. package/components/ion-nav.js +3 -2
  51. package/components/ion-picker.js +6 -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 +6 -4
  77. package/components/ion-toggle.js +4 -2
  78. package/components/ion-toolbar.js +6 -4
  79. package/components/item.js +14 -6
  80. package/components/label.js +5 -3
  81. package/components/list-header.js +6 -4
  82. package/components/list.js +6 -4
  83. package/components/note.js +6 -4
  84. package/components/overlays.js +41 -13
  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 +8 -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 +5 -3
  93. package/components/spinner.js +4 -3
  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-7def22c8.js → app-globals-5a17c5e1.js} +1 -1
  100. package/dist/cjs/{button-active-962fe442.js → button-active-b8c3f603.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-d23873bb.js} +48 -2
  104. package/dist/cjs/{helpers-76bb7efb.js → helpers-2e1028fa.js} +1 -1
  105. package/dist/cjs/{index-b4f986cd.js → index-10da82ce.js} +1 -1
  106. package/dist/cjs/{index-da15e99c.js → index-53d162b2.js} +1 -1
  107. package/dist/cjs/{index-50dcfe2f.js → index-5a471146.js} +57 -29
  108. package/dist/cjs/{index-17ab7794.js → index-84351d21.js} +4 -4
  109. package/dist/cjs/{index-3b012034.js → index-8c679cbf.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 +15 -13
  115. package/dist/cjs/ion-alert.cjs.entry.js +15 -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 +10 -8
  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 +58 -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 +12 -10
  132. package/dist/cjs/ion-item-option_3.cjs.entry.js +18 -13
  133. package/dist/cjs/ion-item_8.cjs.entry.js +54 -34
  134. package/dist/cjs/ion-loading.cjs.entry.js +13 -11
  135. package/dist/cjs/ion-menu_3.cjs.entry.js +30 -20
  136. package/dist/cjs/ion-modal.cjs.entry.js +17 -16
  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 +16 -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 +40 -16
  151. package/dist/cjs/ion-spinner.cjs.entry.js +6 -5
  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 +13 -11
  158. package/dist/cjs/ion-toggle.cjs.entry.js +8 -6
  159. package/dist/cjs/{ionic-global-a4edbf03.js → ionic-global-7358c23e.js} +1 -1
  160. package/dist/cjs/ionic.cjs.js +5 -5
  161. package/dist/cjs/{ios.transition-b5353f3e.js → ios.transition-8e40c54e.js} +4 -4
  162. package/dist/cjs/loader.cjs.js +4 -4
  163. package/dist/cjs/{md.transition-67157dd9.js → md.transition-597a2479.js} +4 -4
  164. package/dist/cjs/{notch-controller-9735e7ac.js → notch-controller-db0127c4.js} +1 -1
  165. package/dist/cjs/{overlays-e77cc023.js → overlays-eaf2075f.js} +44 -16
  166. package/dist/cjs/{status-tap-b5d77c08.js → status-tap-b0bfea34.js} +3 -3
  167. package/dist/cjs/{swipe-back-e37a1a5c.js → swipe-back-7a848bb8.js} +1 -1
  168. package/dist/collection/collection-manifest.json +2 -2
  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 +8 -6
  173. package/dist/collection/components/action-sheet/action-sheet.js +9 -13
  174. package/dist/collection/components/alert/alert.ios.css +23 -0
  175. package/dist/collection/components/alert/alert.js +8 -12
  176. package/dist/collection/components/alert/test/basic/alert.e2e.js +29 -4
  177. package/dist/collection/components/app/app.js +15 -4
  178. package/dist/collection/components/avatar/avatar.js +1 -1
  179. package/dist/collection/components/back-button/back-button.js +3 -3
  180. package/dist/collection/components/backdrop/backdrop.js +1 -1
  181. package/dist/collection/components/badge/badge.js +2 -2
  182. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  183. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  184. package/dist/collection/components/button/button.js +2 -2
  185. package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
  186. package/dist/collection/components/buttons/buttons.js +1 -1
  187. package/dist/collection/components/card/card.js +1 -1
  188. package/dist/collection/components/card-content/card-content.js +1 -1
  189. package/dist/collection/components/card-header/card-header.js +2 -2
  190. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  191. package/dist/collection/components/card-title/card-title.js +2 -2
  192. package/dist/collection/components/chip/chip.js +2 -2
  193. package/dist/collection/components/col/col.js +2 -2
  194. package/dist/collection/components/content/content.js +27 -43
  195. package/dist/collection/components/datetime/datetime.js +44 -22
  196. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +3 -3
  197. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +12 -12
  198. package/dist/collection/components/datetime/test/datetime.e2e.js +1 -1
  199. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
  200. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
  201. package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
  202. package/dist/collection/components/datetime/test/highlighted-dates/datetime.e2e.js +1 -1
  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/input/input.ios.css +4 -4
  229. package/dist/collection/components/input/input.md.css +4 -4
  230. package/dist/collection/components/item/item.ios.css +2 -39
  231. package/dist/collection/components/item/item.js +9 -2
  232. package/dist/collection/components/item/item.md.css +2 -39
  233. package/dist/collection/components/item/test/item.spec.js +20 -0
  234. package/dist/collection/components/item-divider/item-divider.js +2 -2
  235. package/dist/collection/components/item-group/item-group.js +1 -1
  236. package/dist/collection/components/item-option/item-option.js +2 -2
  237. package/dist/collection/components/item-options/item-options.js +1 -1
  238. package/dist/collection/components/item-sliding/item-sliding.js +4 -6
  239. package/dist/collection/components/label/label.js +1 -1
  240. package/dist/collection/components/label/test/basic/label.e2e.js +2 -2
  241. package/dist/collection/components/list/list.js +1 -1
  242. package/dist/collection/components/list/list.md.css +1 -21
  243. package/dist/collection/components/list-header/list-header.js +2 -2
  244. package/dist/collection/components/loading/loading.js +8 -12
  245. package/dist/collection/components/menu/menu.js +23 -18
  246. package/dist/collection/components/menu-button/menu-button.js +3 -3
  247. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  248. package/dist/collection/components/modal/modal.js +13 -17
  249. package/dist/collection/components/modal/test/sheet/modal.e2e.js +1 -1
  250. package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
  251. package/dist/collection/components/nav/nav.js +115 -191
  252. package/dist/collection/components/nav-link/nav-link.js +1 -1
  253. package/dist/collection/components/note/note.js +2 -2
  254. package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
  255. package/dist/collection/components/picker/picker.js +11 -17
  256. package/dist/collection/components/picker-column/picker-column.js +2 -2
  257. package/dist/collection/components/picker-column-internal/picker-column-internal.js +6 -5
  258. package/dist/collection/components/picker-internal/picker-internal.js +17 -1
  259. package/dist/collection/components/picker-internal/test/keyboard-entry/picker-internal.e2e.js +32 -0
  260. package/dist/collection/components/popover/popover.ios.css +1 -1
  261. package/dist/collection/components/popover/popover.js +20 -23
  262. package/dist/collection/components/popover/popover.md.css +1 -1
  263. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  264. package/dist/collection/components/radio/radio.js +6 -4
  265. package/dist/collection/components/radio-group/radio-group.js +1 -1
  266. package/dist/collection/components/radio-group/test/radio-group-events.e2e.js +15 -15
  267. package/dist/collection/components/range/test/label/range.e2e.js +2 -2
  268. package/dist/collection/components/range/test/range-events.e2e.js +2 -2
  269. package/dist/collection/components/refresher/refresher.js +1 -1
  270. package/dist/collection/components/refresher/test/test.utils.js +1 -1
  271. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  272. package/dist/collection/components/reorder/reorder.js +1 -1
  273. package/dist/collection/components/reorder-group/reorder-group.js +4 -6
  274. package/dist/collection/components/ripple-effect/ripple-effect.js +7 -11
  275. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
  276. package/dist/collection/components/router/router.js +12 -14
  277. package/dist/collection/components/router-link/router-link.js +2 -2
  278. package/dist/collection/components/router-outlet/router-outlet.js +22 -15
  279. package/dist/collection/components/row/row.js +1 -1
  280. package/dist/collection/components/searchbar/searchbar.js +4 -4
  281. package/dist/collection/components/segment/segment.js +9 -2
  282. package/dist/collection/components/segment-button/segment-button.js +3 -3
  283. package/dist/collection/components/select/select.js +23 -6
  284. package/dist/collection/components/select/test/disabled/select.e2e.js +1 -1
  285. package/dist/collection/components/select/test/select.spec.js +15 -0
  286. package/dist/collection/components/select-option/select-option.js +1 -1
  287. package/dist/collection/components/select-popover/select-popover.js +1 -1
  288. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  289. package/dist/collection/components/spinner/spinner.js +2 -2
  290. package/dist/collection/components/split-pane/split-pane.js +11 -12
  291. package/dist/collection/components/tab/tab.js +2 -2
  292. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  293. package/dist/collection/components/tab-button/tab-button.js +2 -2
  294. package/dist/collection/components/tabs/tabs.js +10 -13
  295. package/dist/collection/components/text/text.js +2 -2
  296. package/dist/collection/components/textarea/test/textarea-events.e2e.js +4 -4
  297. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  298. package/dist/collection/components/title/title.js +2 -2
  299. package/dist/collection/components/toast/toast.js +8 -12
  300. package/dist/collection/components/toolbar/toolbar.js +2 -2
  301. package/dist/collection/utils/hardware-back-button.js +45 -2
  302. package/dist/collection/utils/helpers.js +1 -1
  303. package/dist/collection/utils/overlays.js +41 -12
  304. package/dist/collection/utils/test/hardware-back-button.spec.js +38 -0
  305. package/dist/docs.d.ts +1 -21
  306. package/dist/docs.json +710 -542
  307. package/dist/esm/{animation-dde8cc0d.js → animation-60dbdd13.js} +1 -1
  308. package/dist/esm/{app-globals-8c62bec2.js → app-globals-47226a12.js} +1 -1
  309. package/dist/esm/{button-active-308d3edd.js → button-active-4bee452c.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-f42b9c80.js} +48 -3
  314. package/dist/esm/{helpers-ae653409.js → helpers-c0b9ca37.js} +1 -1
  315. package/dist/esm/{index-1193f005.js → index-48209844.js} +4 -4
  316. package/dist/esm/{index-4743453d.js → index-4b98143d.js} +4 -4
  317. package/dist/esm/{index-b7d870cf.js → index-73881b51.js} +57 -29
  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 +15 -13
  325. package/dist/esm/ion-alert.entry.js +15 -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 +10 -8
  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 +59 -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 +12 -10
  342. package/dist/esm/ion-item-option_3.entry.js +18 -13
  343. package/dist/esm/ion-item_8.entry.js +54 -34
  344. package/dist/esm/ion-loading.entry.js +13 -11
  345. package/dist/esm/ion-menu_3.entry.js +30 -20
  346. package/dist/esm/ion-modal.entry.js +17 -16
  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 +16 -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 +40 -16
  361. package/dist/esm/ion-spinner.entry.js +6 -5
  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 +13 -11
  368. package/dist/esm/ion-toggle.entry.js +8 -6
  369. package/dist/esm/{ionic-global-1f99b929.js → ionic-global-778b7863.js} +1 -1
  370. package/dist/esm/ionic.js +6 -6
  371. package/dist/esm/{ios.transition-3376ccb2.js → ios.transition-7ff7381d.js} +4 -4
  372. package/dist/esm/loader.js +5 -5
  373. package/dist/esm/{md.transition-f992779f.js → md.transition-28a9a26b.js} +4 -4
  374. package/dist/esm/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
  375. package/dist/esm/{overlays-b33f6bca.js → overlays-fad5fe01.js} +44 -16
  376. package/dist/esm/{status-tap-16fd8f3d.js → status-tap-2b335fb7.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-47226a12.js +4 -0
  380. package/dist/esm-es5/{button-active-308d3edd.js → button-active-4bee452c.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-f42b9c80.js +4 -0
  385. package/dist/esm-es5/helpers-c0b9ca37.js +4 -0
  386. package/dist/esm-es5/{index-1193f005.js → index-48209844.js} +1 -1
  387. package/dist/esm-es5/{index-4743453d.js → index-4b98143d.js} +1 -1
  388. package/dist/esm-es5/index-73881b51.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-1f99b929.js → ionic-global-778b7863.js} +1 -1
  441. package/dist/esm-es5/ionic.js +1 -1
  442. package/dist/esm-es5/{ios.transition-3376ccb2.js → ios.transition-7ff7381d.js} +1 -1
  443. package/dist/esm-es5/loader.js +1 -1
  444. package/dist/esm-es5/md.transition-28a9a26b.js +4 -0
  445. package/dist/esm-es5/{notch-controller-fea7f9c5.js → notch-controller-15d281a4.js} +1 -1
  446. package/dist/esm-es5/overlays-fad5fe01.js +4 -0
  447. package/dist/esm-es5/{status-tap-16fd8f3d.js → status-tap-2b335fb7.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-001010b6.system.js +4 -0
  453. package/dist/ionic/p-044ad008.system.entry.js +4 -0
  454. package/dist/ionic/p-078fd095.system.entry.js +4 -0
  455. package/dist/ionic/p-0ae25399.system.entry.js +4 -0
  456. package/dist/ionic/p-0b955124.system.js +4 -0
  457. package/dist/ionic/p-0e29919c.system.entry.js +4 -0
  458. package/dist/ionic/p-0eef8b34.system.entry.js +4 -0
  459. package/dist/ionic/p-0fd295ef.system.entry.js +4 -0
  460. package/dist/ionic/{p-799da666.entry.js → p-108f730a.entry.js} +1 -1
  461. package/dist/ionic/p-1375f21f.js +4 -0
  462. package/dist/ionic/{p-7fae5c36.js → p-1aa7c019.js} +1 -1
  463. package/dist/ionic/{p-e33d1ebc.entry.js → p-1c531ca2.entry.js} +1 -1
  464. package/dist/ionic/p-1d8c2cfc.system.entry.js +4 -0
  465. package/dist/ionic/{p-53ec4f1c.system.js → p-1dfc11b3.system.js} +1 -1
  466. package/dist/ionic/p-1f6cdf2c.system.entry.js +4 -0
  467. package/dist/ionic/p-20a6513f.system.entry.js +4 -0
  468. package/dist/ionic/p-20f7a91e.system.entry.js +4 -0
  469. package/dist/ionic/{p-0aa78a8d.system.js → p-25b08bc4.system.js} +1 -1
  470. package/dist/ionic/p-2da0a76c.entry.js +4 -0
  471. package/dist/ionic/p-2f66e177.system.entry.js +4 -0
  472. package/dist/ionic/p-30c9e049.system.entry.js +4 -0
  473. package/dist/ionic/p-30d77a91.system.js +4 -0
  474. package/dist/ionic/{p-376a6063.js → p-31c495c2.js} +1 -1
  475. package/dist/ionic/p-333f06ed.entry.js +4 -0
  476. package/dist/ionic/{p-0509fd34.js → p-341b4519.js} +1 -1
  477. package/dist/ionic/p-34947dff.system.entry.js +4 -0
  478. package/dist/ionic/{p-cabad15b.system.js → p-37c33319.system.js} +1 -1
  479. package/dist/ionic/p-38a6fee7.entry.js +4 -0
  480. package/dist/ionic/p-396c1a55.entry.js +4 -0
  481. package/dist/ionic/p-3a54c070.system.entry.js +4 -0
  482. package/dist/ionic/p-3a98f8db.entry.js +4 -0
  483. package/dist/ionic/{p-d51674c5.system.js → p-3c6f02cf.system.js} +1 -1
  484. package/dist/ionic/{p-bdf71399.entry.js → p-3cdbaa49.entry.js} +1 -1
  485. package/dist/ionic/p-3eb2da31.js +4 -0
  486. package/dist/ionic/{p-1501b945.system.js → p-3f028207.system.js} +1 -1
  487. package/dist/ionic/p-400574bf.entry.js +4 -0
  488. package/dist/ionic/p-41fde260.entry.js +4 -0
  489. package/dist/ionic/{p-8aa1d0b7.system.js → p-49543c9c.system.js} +1 -1
  490. package/dist/ionic/p-4b2d5b9c.js +4 -0
  491. package/dist/ionic/{p-88d5fbd3.js → p-4f777b5e.js} +1 -1
  492. package/dist/ionic/p-4fc40349.system.entry.js +4 -0
  493. package/dist/ionic/p-51f08a9f.entry.js +4 -0
  494. package/dist/ionic/p-52e02877.entry.js +4 -0
  495. package/dist/ionic/{p-afa9f205.system.js → p-55d5cd00.system.js} +1 -1
  496. package/dist/ionic/p-5615cf3f.system.entry.js +4 -0
  497. package/dist/ionic/p-58e3ae88.system.entry.js +4 -0
  498. package/dist/ionic/p-594ead2f.entry.js +4 -0
  499. package/dist/ionic/{p-b964aba3.entry.js → p-5a0c301f.entry.js} +1 -1
  500. package/dist/ionic/p-5e60dbc8.entry.js +4 -0
  501. package/dist/ionic/{p-f6e9c227.system.js → p-5eea8b4c.system.js} +1 -1
  502. package/dist/ionic/p-5f456b3c.system.entry.js +4 -0
  503. package/dist/ionic/p-61ba2137.system.js +4 -0
  504. package/dist/ionic/{p-17d283b9.system.entry.js → p-62067818.system.entry.js} +1 -1
  505. package/dist/ionic/{p-5ad1fe3b.system.js → p-62a3c609.system.js} +1 -1
  506. package/dist/ionic/p-680f96e8.system.entry.js +4 -0
  507. package/dist/ionic/p-6871553b.system.js +4 -0
  508. package/dist/ionic/p-6b02edd6.js +4 -0
  509. package/dist/ionic/p-6f38d0c5.system.entry.js +4 -0
  510. package/dist/ionic/p-70026e8f.system.entry.js +4 -0
  511. package/dist/ionic/{p-87bb3735.system.js → p-7330c044.system.js} +1 -1
  512. package/dist/ionic/p-76893257.system.js +5 -0
  513. package/dist/ionic/p-78edc0cd.system.entry.js +4 -0
  514. package/dist/ionic/p-7c32fb95.system.entry.js +4 -0
  515. package/dist/ionic/p-84879f61.system.entry.js +4 -0
  516. package/dist/ionic/p-84f589e1.entry.js +4 -0
  517. package/dist/ionic/p-8569d759.system.entry.js +4 -0
  518. package/dist/ionic/p-86670b91.system.js +4 -0
  519. package/dist/ionic/p-88ca4854.entry.js +4 -0
  520. package/dist/ionic/{p-1c249831.entry.js → p-89b5aff2.entry.js} +1 -1
  521. package/dist/ionic/p-8a671f16.entry.js +4 -0
  522. package/dist/ionic/{p-44a56556.js → p-8ddc00f7.js} +1 -1
  523. package/dist/ionic/p-8f1ce253.js +4 -0
  524. package/dist/ionic/p-92c2178e.system.entry.js +4 -0
  525. package/dist/ionic/{p-29d03b3a.js → p-9393a49f.js} +1 -1
  526. package/dist/ionic/{p-3a75d7fd.js → p-94be3ad7.js} +1 -1
  527. package/dist/ionic/p-95c44e02.system.js +4 -0
  528. package/dist/ionic/p-97eca294.entry.js +4 -0
  529. package/dist/ionic/{p-d93eed83.system.entry.js → p-9a6ab80a.system.entry.js} +1 -1
  530. package/dist/ionic/p-9db1e4c5.entry.js +4 -0
  531. package/dist/ionic/p-9eb4ea47.system.entry.js +4 -0
  532. package/dist/ionic/p-9f5b40c0.system.entry.js +4 -0
  533. package/dist/ionic/p-9f6397ce.entry.js +4 -0
  534. package/dist/ionic/p-a02b2d75.entry.js +4 -0
  535. package/dist/ionic/p-a051c371.entry.js +4 -0
  536. package/dist/ionic/{p-ade3cf46.entry.js → p-a114530c.entry.js} +1 -1
  537. package/dist/ionic/p-a19f5ae1.entry.js +4 -0
  538. package/dist/ionic/p-a1bfaa5c.system.entry.js +4 -0
  539. package/dist/ionic/p-a2ad515b.entry.js +4 -0
  540. package/dist/ionic/{p-4180a747.js → p-a3f572a7.js} +1 -1
  541. package/dist/ionic/p-aa7ae6aa.entry.js +4 -0
  542. package/dist/ionic/{p-0bd51c34.system.js → p-abe101da.system.js} +1 -1
  543. package/dist/ionic/p-ac20160b.system.entry.js +4 -0
  544. package/dist/ionic/p-b06ac4a5.system.js +4 -0
  545. package/dist/ionic/p-b1f0c48e.system.entry.js +4 -0
  546. package/dist/ionic/{p-66d633fb.js → p-b253ad7f.js} +1 -1
  547. package/dist/ionic/p-b4a95b80.system.entry.js +4 -0
  548. package/dist/ionic/{p-04377cfa.js → p-b4d8fe47.js} +1 -1
  549. package/dist/ionic/p-b5839dc2.js +4 -0
  550. package/dist/ionic/p-b8c4df21.entry.js +4 -0
  551. package/dist/ionic/p-b8c685a7.system.js +4 -0
  552. package/dist/ionic/{p-9f94c72e.system.js → p-b94882a9.system.js} +1 -1
  553. package/dist/ionic/{p-41208f54.system.entry.js → p-bc2c03d7.system.entry.js} +1 -1
  554. package/dist/ionic/{p-36d187af.js → p-c2289cd1.js} +1 -1
  555. package/dist/ionic/p-c3d041af.entry.js +4 -0
  556. package/dist/ionic/p-c569d1c8.entry.js +4 -0
  557. package/dist/ionic/p-c5c3710c.js +4 -0
  558. package/dist/ionic/{p-a074be82.system.js → p-c6fef62b.system.js} +1 -1
  559. package/dist/ionic/{p-7798c78a.system.js → p-c80c7e90.system.js} +1 -1
  560. package/dist/ionic/{p-013013a3.js → p-c858f685.js} +1 -1
  561. package/dist/ionic/p-c995da88.system.js +4 -0
  562. package/dist/ionic/p-cd055d60.system.entry.js +4 -0
  563. package/dist/ionic/p-ce2eabd5.entry.js +4 -0
  564. package/dist/ionic/p-d181166c.system.entry.js +4 -0
  565. package/dist/ionic/p-d7260b87.entry.js +4 -0
  566. package/dist/ionic/p-d74ca358.entry.js +4 -0
  567. package/dist/ionic/p-d8607ede.entry.js +4 -0
  568. package/dist/ionic/p-d95c8e90.entry.js +4 -0
  569. package/dist/ionic/p-dbb4c012.entry.js +4 -0
  570. package/dist/ionic/p-dce9bc53.entry.js +4 -0
  571. package/dist/ionic/p-dd60faa5.system.entry.js +4 -0
  572. package/dist/ionic/p-df281664.system.entry.js +4 -0
  573. package/dist/ionic/p-df468a8f.entry.js +4 -0
  574. package/dist/ionic/p-e1271366.js +5 -0
  575. package/dist/ionic/{p-38f2c6bb.system.js → p-e2bb92ed.system.js} +1 -1
  576. package/dist/ionic/p-e68980ff.system.entry.js +4 -0
  577. package/dist/ionic/p-e6aaff14.system.entry.js +4 -0
  578. package/dist/ionic/p-e6cfaa07.system.entry.js +4 -0
  579. package/dist/ionic/{p-4f400544.entry.js → p-ea8fbf09.entry.js} +1 -1
  580. package/dist/ionic/p-eb1fdf9f.system.entry.js +4 -0
  581. package/dist/ionic/p-eda7a1db.system.entry.js +4 -0
  582. package/dist/ionic/p-ef441122.entry.js +4 -0
  583. package/dist/ionic/p-efe9180b.entry.js +4 -0
  584. package/dist/ionic/p-f46775e4.entry.js +4 -0
  585. package/dist/ionic/p-f7b43141.system.entry.js +4 -0
  586. package/dist/ionic/{p-18cae04f.js → p-f7dce541.js} +1 -1
  587. package/dist/ionic/p-f88dd429.entry.js +4 -0
  588. package/dist/ionic/p-f97b9cdd.system.entry.js +4 -0
  589. package/dist/ionic/p-fd2aa50c.js +4 -0
  590. package/dist/ionic/p-fd36799d.system.js +4 -0
  591. package/dist/ionic/{p-767f1a92.entry.js → p-fd3f475f.entry.js} +1 -1
  592. package/dist/ionic/p-fd8ced99.system.js +4 -0
  593. package/dist/ionic/p-fe92da17.entry.js +4 -0
  594. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +2 -2
  595. package/dist/types/components/alert/alert-interface.d.ts +2 -2
  596. package/dist/types/components/item/item.d.ts +1 -0
  597. package/dist/types/components/spinner/spinner-interface.d.ts +3 -1
  598. package/dist/types/components/split-pane/split-pane.d.ts +1 -1
  599. package/dist/types/components/toast/toast-interface.d.ts +2 -2
  600. package/dist/types/interface.d.ts +1 -1
  601. package/dist/types/utils/browser/index.d.ts +22 -1
  602. package/dist/types/utils/config.d.ts +7 -0
  603. package/dist/types/utils/hardware-back-button.d.ts +13 -0
  604. package/dist/types/utils/helpers.d.ts +1 -1
  605. package/hydrate/index.d.ts +2 -2
  606. package/hydrate/index.js +2380 -437
  607. package/package.json +6 -6
  608. package/dist/collection/components/accordion/test/accordion.e2e.js +0 -39
  609. package/dist/esm-es5/app-globals-8c62bec2.js +0 -4
  610. package/dist/esm-es5/hardware-back-button-b2bc76db.js +0 -4
  611. package/dist/esm-es5/helpers-ae653409.js +0 -4
  612. package/dist/esm-es5/index-82eeb47f.js +0 -4
  613. package/dist/esm-es5/index-b7d870cf.js +0 -5
  614. package/dist/esm-es5/md.transition-f992779f.js +0 -4
  615. package/dist/esm-es5/overlays-b33f6bca.js +0 -4
  616. package/dist/ionic/p-0235067a.js +0 -4
  617. package/dist/ionic/p-02cb0cf0.entry.js +0 -4
  618. package/dist/ionic/p-043aa6cc.system.entry.js +0 -4
  619. package/dist/ionic/p-0550f802.entry.js +0 -4
  620. package/dist/ionic/p-068ec6d3.system.entry.js +0 -4
  621. package/dist/ionic/p-06abe918.system.entry.js +0 -4
  622. package/dist/ionic/p-0ebc87b7.system.entry.js +0 -4
  623. package/dist/ionic/p-149567b1.system.entry.js +0 -4
  624. package/dist/ionic/p-154e5e06.entry.js +0 -4
  625. package/dist/ionic/p-158efe8d.system.entry.js +0 -4
  626. package/dist/ionic/p-19d9ceb8.system.js +0 -4
  627. package/dist/ionic/p-1b27ac67.entry.js +0 -4
  628. package/dist/ionic/p-1cca10d6.system.js +0 -4
  629. package/dist/ionic/p-20e0e75d.system.entry.js +0 -4
  630. package/dist/ionic/p-213e377d.system.entry.js +0 -4
  631. package/dist/ionic/p-23a9d086.js +0 -4
  632. package/dist/ionic/p-254ec7c0.system.entry.js +0 -4
  633. package/dist/ionic/p-26c4bf85.entry.js +0 -4
  634. package/dist/ionic/p-2894d5f6.entry.js +0 -4
  635. package/dist/ionic/p-290d3fe9.js +0 -5
  636. package/dist/ionic/p-2b3debd5.entry.js +0 -4
  637. package/dist/ionic/p-2ba9a9bd.system.entry.js +0 -4
  638. package/dist/ionic/p-328107a5.system.entry.js +0 -4
  639. package/dist/ionic/p-328b49db.system.entry.js +0 -4
  640. package/dist/ionic/p-32ad210f.system.js +0 -4
  641. package/dist/ionic/p-3313c481.entry.js +0 -4
  642. package/dist/ionic/p-332ea4d3.system.entry.js +0 -4
  643. package/dist/ionic/p-3381c3f4.entry.js +0 -4
  644. package/dist/ionic/p-3671f1b9.system.js +0 -4
  645. package/dist/ionic/p-38c337e7.system.js +0 -4
  646. package/dist/ionic/p-39f96ff6.system.entry.js +0 -4
  647. package/dist/ionic/p-3dfc522b.entry.js +0 -4
  648. package/dist/ionic/p-3e8d5e53.entry.js +0 -4
  649. package/dist/ionic/p-40f68333.system.js +0 -4
  650. package/dist/ionic/p-43f03cf4.system.entry.js +0 -4
  651. package/dist/ionic/p-4489dd20.system.entry.js +0 -4
  652. package/dist/ionic/p-44dc52e5.entry.js +0 -4
  653. package/dist/ionic/p-47bb15a1.entry.js +0 -4
  654. package/dist/ionic/p-4a3218d4.system.entry.js +0 -4
  655. package/dist/ionic/p-4b3623da.js +0 -4
  656. package/dist/ionic/p-507ddbfe.system.entry.js +0 -4
  657. package/dist/ionic/p-52cfafe9.system.js +0 -5
  658. package/dist/ionic/p-5e0c7fdc.entry.js +0 -4
  659. package/dist/ionic/p-5ff99b79.entry.js +0 -4
  660. package/dist/ionic/p-60959b71.entry.js +0 -4
  661. package/dist/ionic/p-61e4d3ec.entry.js +0 -4
  662. package/dist/ionic/p-6337e56b.system.entry.js +0 -4
  663. package/dist/ionic/p-648ad047.system.entry.js +0 -4
  664. package/dist/ionic/p-6855f26a.entry.js +0 -4
  665. package/dist/ionic/p-69641343.system.entry.js +0 -4
  666. package/dist/ionic/p-6ab03751.js +0 -4
  667. package/dist/ionic/p-6c277fa2.system.entry.js +0 -4
  668. package/dist/ionic/p-6e0539ea.system.entry.js +0 -4
  669. package/dist/ionic/p-6fba0ce1.system.entry.js +0 -4
  670. package/dist/ionic/p-72cb0718.system.entry.js +0 -4
  671. package/dist/ionic/p-745e3339.system.entry.js +0 -4
  672. package/dist/ionic/p-790220fd.system.js +0 -4
  673. package/dist/ionic/p-793a10e0.system.entry.js +0 -4
  674. package/dist/ionic/p-84b567a6.entry.js +0 -4
  675. package/dist/ionic/p-85f48531.entry.js +0 -4
  676. package/dist/ionic/p-888db766.system.js +0 -4
  677. package/dist/ionic/p-8dae44aa.entry.js +0 -4
  678. package/dist/ionic/p-8f301ac5.system.entry.js +0 -4
  679. package/dist/ionic/p-928ee57a.entry.js +0 -4
  680. package/dist/ionic/p-93390f78.entry.js +0 -4
  681. package/dist/ionic/p-93419ece.system.entry.js +0 -4
  682. package/dist/ionic/p-97174c1e.js +0 -4
  683. package/dist/ionic/p-98f35d98.js +0 -4
  684. package/dist/ionic/p-9a68d8ef.system.js +0 -4
  685. package/dist/ionic/p-9fb45814.entry.js +0 -4
  686. package/dist/ionic/p-9fda6824.system.entry.js +0 -4
  687. package/dist/ionic/p-a20bb802.entry.js +0 -4
  688. package/dist/ionic/p-a3013394.entry.js +0 -4
  689. package/dist/ionic/p-a4461d1c.system.entry.js +0 -4
  690. package/dist/ionic/p-a49931aa.system.js +0 -4
  691. package/dist/ionic/p-a821750c.system.entry.js +0 -4
  692. package/dist/ionic/p-abd5d0d5.system.entry.js +0 -4
  693. package/dist/ionic/p-aed4931c.entry.js +0 -4
  694. package/dist/ionic/p-b7058a0e.system.entry.js +0 -4
  695. package/dist/ionic/p-b7a2ffc9.system.entry.js +0 -4
  696. package/dist/ionic/p-b8a9e195.system.entry.js +0 -4
  697. package/dist/ionic/p-beeed22c.system.entry.js +0 -4
  698. package/dist/ionic/p-c08fe2c0.entry.js +0 -4
  699. package/dist/ionic/p-c1701827.entry.js +0 -4
  700. package/dist/ionic/p-c23eff76.entry.js +0 -4
  701. package/dist/ionic/p-c68dd1e0.entry.js +0 -4
  702. package/dist/ionic/p-c8aadc98.system.entry.js +0 -4
  703. package/dist/ionic/p-cad1126a.entry.js +0 -4
  704. package/dist/ionic/p-cd1b920b.entry.js +0 -4
  705. package/dist/ionic/p-cd574dfa.js +0 -4
  706. package/dist/ionic/p-cf235986.entry.js +0 -4
  707. package/dist/ionic/p-d0748f6d.entry.js +0 -4
  708. package/dist/ionic/p-da5e2652.entry.js +0 -4
  709. package/dist/ionic/p-da666998.system.entry.js +0 -4
  710. package/dist/ionic/p-dc71e4ef.system.entry.js +0 -4
  711. package/dist/ionic/p-ddbb2d5b.system.js +0 -4
  712. package/dist/ionic/p-ddd48faf.system.entry.js +0 -4
  713. package/dist/ionic/p-de6f8b28.system.js +0 -4
  714. package/dist/ionic/p-e2903cdc.system.entry.js +0 -4
  715. package/dist/ionic/p-eb246b50.entry.js +0 -4
  716. package/dist/ionic/p-ee810056.system.entry.js +0 -4
  717. package/dist/ionic/p-eef72e06.js +0 -4
  718. package/dist/ionic/p-f894e0ad.entry.js +0 -4
@@ -101,6 +101,13 @@ export class Segment {
101
101
  }
102
102
  async componentDidLoad() {
103
103
  this.setCheckedClasses();
104
+ /**
105
+ * If the value changes before watchers
106
+ * are setup, then the ionSelect watch callback
107
+ * will not fire. As a result, we manually
108
+ * fire this event when Select is loaded.
109
+ */
110
+ this.ionSelect.emit({ value: this.value });
104
111
  /**
105
112
  * We need to wait for the buttons to all be rendered
106
113
  * before we can scroll.
@@ -413,14 +420,14 @@ export class Segment {
413
420
  }
414
421
  render() {
415
422
  const mode = getIonMode(this);
416
- return (h(Host, { role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
423
+ return (h(Host, { key: '971e62fdaef3b6380aa1bf214605a5bfde662abf', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
417
424
  [mode]: true,
418
425
  'in-toolbar': hostContext('ion-toolbar', this.el),
419
426
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
420
427
  'segment-activated': this.activated,
421
428
  'segment-disabled': this.disabled,
422
429
  'segment-scrollable': this.scrollable,
423
- }) }, h("slot", null)));
430
+ }) }, h("slot", { key: 'eaa7a8a3d5237c8bbc03f57690fd0aa7e4c124e3' })));
424
431
  }
425
432
  static get is() { return "ion-segment"; }
426
433
  static get encapsulation() { return "shadow"; }
@@ -78,7 +78,7 @@ export class SegmentButton {
78
78
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
79
79
  const mode = getIonMode(this);
80
80
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
81
- return (h(Host, { class: {
81
+ return (h(Host, { key: 'b50b375ed817b47720b743078202f38c737a4034', class: {
82
82
  [mode]: true,
83
83
  'in-toolbar': hostContext('ion-toolbar', this.el),
84
84
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -94,10 +94,10 @@ export class SegmentButton {
94
94
  'ion-activatable': true,
95
95
  'ion-activatable-instant': true,
96
96
  'ion-focusable': true,
97
- } }, h("button", Object.assign({ "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { class: "button-inner" }, h("slot", null)), mode === 'md' && h("ion-ripple-effect", null)), h("div", { part: "indicator", class: {
97
+ } }, h("button", Object.assign({ key: '402f6467ec9ce97aa1df2c72382d07242b51c114', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '4f5a1988296c4e59e64255feff264bbbe2ccc312', class: "button-inner" }, h("slot", { key: '35b2a26cca8c76a111e447fa8cae464c504fcb97' })), mode === 'md' && h("ion-ripple-effect", null)), h("div", { key: 'adca0f1e0efcf18b575013d4fb2f22814c81c147', part: "indicator", class: {
98
98
  'segment-button-indicator': true,
99
99
  'segment-button-indicator-animated': true,
100
- } }, h("div", { part: "indicator-background", class: "segment-button-indicator-background" }))));
100
+ } }, h("div", { key: '8a23ffe49dc115ee0603e298bb6a39834b910b67', part: "indicator-background", class: "segment-button-indicator-background" }))));
101
101
  }
102
102
  static get is() { return "ion-segment-button"; }
103
103
  static get encapsulation() { return "shadow"; }
@@ -44,8 +44,27 @@ export class Select {
44
44
  * We ensure the target isn't this element in case the select is slotted
45
45
  * in, for example, an item. This would prevent the select from ever
46
46
  * being opened since the element itself has slot="start"/"end".
47
+ *
48
+ * Clicking a slotted element also causes a click
49
+ * on the <label> element (since it wraps the slots).
50
+ * Clicking <label> dispatches another click event on
51
+ * the native form control that then bubbles up to this
52
+ * listener. This additional event targets the host
53
+ * element, so the select overlay is opened.
54
+ *
55
+ * When the slotted elements are clicked (and therefore
56
+ * the ancestor <label> element) we want to prevent the label
57
+ * from dispatching another click event.
58
+ *
59
+ * Do not call stopPropagation() because this will cause
60
+ * click handlers on the slotted elements to never fire in React.
61
+ * When developers do onClick in React a native "click" listener
62
+ * is added on the root element, not the slotted element. When that
63
+ * native click listener fires, React then dispatches the synthetic
64
+ * click event on the slotted element. However, if stopPropagation
65
+ * is called then the native click event will never bubble up
66
+ * to the root element.
47
67
  */
48
- ev.stopPropagation();
49
68
  ev.preventDefault();
50
69
  }
51
70
  };
@@ -1205,11 +1224,9 @@ Developers can use the "legacy" property to continue using the legacy form marku
1205
1224
  "complexType": {
1206
1225
  "signature": "(event?: UIEvent) => Promise<any>",
1207
1226
  "parameters": [{
1208
- "tags": [{
1209
- "name": "param",
1210
- "text": "event The user interface event that called the open."
1211
- }],
1212
- "text": "The user interface event that called the open."
1227
+ "name": "event",
1228
+ "type": "UIEvent | undefined",
1229
+ "docs": "The user interface event that called the open."
1213
1230
  }],
1214
1231
  "references": {
1215
1232
  "Promise": {
@@ -13,7 +13,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
13
13
  description: 'https://github.com/ionic-team/ionic-framework/issues/28284',
14
14
  });
15
15
  await page.setContent(`
16
- <ion-select interface="popover">
16
+ <ion-select aria-label="Select" interface="popover">
17
17
  <ion-select-option value="a" disabled="true">A</ion-select-option>
18
18
  <ion-select-option value="b">B</ion-select-option>
19
19
  </ion-select>
@@ -57,3 +57,18 @@ describe('ion-select', () => {
57
57
  expect(slotEl).toBe(null);
58
58
  });
59
59
  });
60
+ describe('select: slot interactivity', () => {
61
+ test('should not prevent click handlers from firing', async () => {
62
+ // https://github.com/ionic-team/ionic-framework/issues/28818
63
+ const divSpy = jest.fn();
64
+ const buttonSpy = jest.fn();
65
+ const page = await newSpecPage({
66
+ components: [Select],
67
+ template: () => (h("div", { onClick: divSpy }, h("ion-select", { label: "Label Prop Text" }, h("button", { slot: "end", onClick: buttonSpy }, "Button")))),
68
+ });
69
+ const button = page.body.querySelector('button');
70
+ await button.click();
71
+ expect(buttonSpy).toHaveBeenCalled();
72
+ expect(divSpy).toHaveBeenCalled();
73
+ });
74
+ });
@@ -10,7 +10,7 @@ export class SelectOption {
10
10
  this.value = undefined;
11
11
  }
12
12
  render() {
13
- return h(Host, { role: "option", id: this.inputId, class: getIonMode(this) });
13
+ return h(Host, { key: 'fe62f2d62ede6866e20969a2e7ae25453648fcef', role: "option", id: this.inputId, class: getIonMode(this) });
14
14
  }
15
15
  static get is() { return "ion-select-option"; }
16
16
  static get encapsulation() { return "shadow"; }
@@ -102,7 +102,7 @@ export class SelectPopover {
102
102
  render() {
103
103
  const { header, message, options, subHeader } = this;
104
104
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
105
- return (h(Host, { class: getIonMode(this) }, h("ion-list", null, header !== undefined && h("ion-list-header", null, header), hasSubHeaderOrMessage && (h("ion-item", null, h("ion-label", { class: "ion-text-wrap" }, subHeader !== undefined && h("h3", null, subHeader), message !== undefined && h("p", null, message)))), this.renderOptions(options))));
105
+ return (h(Host, { key: '9d3995131364d4f1d282e0a1fc34e778e94c9f98', class: getIonMode(this) }, h("ion-list", { key: '14244dcd6375eb61d65f3a9450d42a5d7b2d6541' }, header !== undefined && h("ion-list-header", null, header), hasSubHeaderOrMessage && (h("ion-item", null, h("ion-label", { class: "ion-text-wrap" }, subHeader !== undefined && h("h3", null, subHeader), message !== undefined && h("p", null, message)))), this.renderOptions(options))));
106
106
  }
107
107
  static get is() { return "ion-select-popover"; }
108
108
  static get encapsulation() { return "scoped"; }
@@ -25,11 +25,11 @@ export class SkeletonText {
25
25
  const animated = this.animated && config.getBoolean('animated', true);
26
26
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
27
27
  const mode = getIonMode(this);
28
- return (h(Host, { class: {
28
+ return (h(Host, { key: 'ee3cd9a5448fb69c8ddfc88a993f9968e1a381ff', class: {
29
29
  [mode]: true,
30
30
  'skeleton-text-animated': animated,
31
31
  'in-media': inMedia,
32
- } }, h("span", null, "\u00A0")));
32
+ } }, h("span", { key: '8aa792724a3b77877062e9aae838d9e1572b576f' }, "\u00A0")));
33
33
  }
34
34
  static get is() { return "ion-skeleton-text"; }
35
35
  static get encapsulation() { return "shadow"; }
@@ -28,7 +28,7 @@ export class Spinner {
28
28
  const spinnerName = self.getName();
29
29
  const spinner = (_a = SPINNERS[spinnerName]) !== null && _a !== void 0 ? _a : SPINNERS['lines'];
30
30
  const duration = typeof self.duration === 'number' && self.duration > 10 ? self.duration : spinner.dur;
31
- const svgs = []; // TODO(FW-2832): type
31
+ const svgs = [];
32
32
  if (spinner.circles !== undefined) {
33
33
  for (let i = 0; i < spinner.circles; i++) {
34
34
  svgs.push(buildCircle(spinner, duration, i, spinner.circles));
@@ -39,7 +39,7 @@ export class Spinner {
39
39
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
40
40
  }
41
41
  }
42
- return (h(Host, { class: createColorClasses(self.color, {
42
+ return (h(Host, { key: '47cd6cd98e36e5b99fbe263a6a102610cae240c3', class: createColorClasses(self.color, {
43
43
  [mode]: true,
44
44
  [`spinner-${spinnerName}`]: true,
45
45
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -66,16 +66,15 @@ export class SplitPane {
66
66
  this.visible = false;
67
67
  return;
68
68
  }
69
- if (window.matchMedia) {
70
- // Listen on media query
71
- const callback = (q) => {
72
- this.visible = q.matches;
73
- };
74
- const mediaList = window.matchMedia(mediaQuery);
75
- mediaList.addListener(callback);
76
- this.rmL = () => mediaList.removeListener(callback);
77
- this.visible = mediaList.matches;
78
- }
69
+ // Listen on media query
70
+ const callback = (q) => {
71
+ this.visible = q.matches;
72
+ };
73
+ const mediaList = window.matchMedia(mediaQuery);
74
+ // TODO FW-5869
75
+ mediaList.addListener(callback);
76
+ this.rmL = () => mediaList.removeListener(callback);
77
+ this.visible = mediaList.matches;
79
78
  }
80
79
  isPane(element) {
81
80
  if (!this.visible) {
@@ -109,12 +108,12 @@ export class SplitPane {
109
108
  }
110
109
  render() {
111
110
  const mode = getIonMode(this);
112
- return (h(Host, { class: {
111
+ return (h(Host, { key: '3efe241375d23ae12c47927aa1fc1f3f4b4e5807', class: {
113
112
  [mode]: true,
114
113
  // Used internally for styling
115
114
  [`split-pane-${mode}`]: true,
116
115
  'split-pane-visible': this.visible,
117
- } }, h("slot", null)));
116
+ } }, h("slot", { key: 'd5c94319658e2291dcc356e6ed7a9abc1a48a8b9' })));
118
117
  }
119
118
  static get is() { return "ion-split-pane"; }
120
119
  static get encapsulation() { return "shadow"; }
@@ -48,10 +48,10 @@ export class Tab {
48
48
  }
49
49
  render() {
50
50
  const { tab, active, component } = this;
51
- return (h(Host, { role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
51
+ return (h(Host, { key: '0f4b90f0b1027e89bd447ace17af31c8e155a827', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
52
52
  'ion-page': component === undefined,
53
53
  'tab-hidden': !active,
54
- } }, h("slot", null)));
54
+ } }, h("slot", { key: 'ec3eaacf8b7085510e89273aa8373805ee98a381' })));
55
55
  }
56
56
  static get is() { return "ion-tab"; }
57
57
  static get encapsulation() { return "shadow"; }
@@ -51,11 +51,11 @@ export class TabBar {
51
51
  const { color, translucent, keyboardVisible } = this;
52
52
  const mode = getIonMode(this);
53
53
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
54
- return (h(Host, { role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
54
+ return (h(Host, { key: 'e2b4b50270f171ed251359df6c65c5e7e4d526a4', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
55
55
  [mode]: true,
56
56
  'tab-bar-translucent': translucent,
57
57
  'tab-bar-hidden': shouldHide,
58
- }) }, h("slot", null)));
58
+ }) }, h("slot", { key: '37495b2eddd01a758ceaeb36426abc9bd20bcca3' })));
59
59
  }
60
60
  static get is() { return "ion-tab-bar"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -70,7 +70,7 @@ export class TabButton {
70
70
  rel,
71
71
  target,
72
72
  };
73
- return (h(Host, { onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
73
+ return (h(Host, { key: '9926f9392e7910ff3159397e4f907e0d7d2cf5a0', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
74
74
  [mode]: true,
75
75
  'tab-selected': selected,
76
76
  'tab-disabled': disabled,
@@ -82,7 +82,7 @@ export class TabButton {
82
82
  'ion-activatable': true,
83
83
  'ion-selectable': true,
84
84
  'ion-focusable': true,
85
- } }, h("a", Object.assign({}, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { class: "button-inner" }, h("slot", null)), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
85
+ } }, h("a", Object.assign({ key: '4b3ace749583a5502e94462f9a70c5158fe0194a' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), h("span", { key: 'a2a30c02fbd5052da12586a5ab00a45f3bf53b88', class: "button-inner" }, h("slot", { key: '3fb22ffbb09000d99537b531220c029330ae6940' })), mode === 'md' && h("ion-ripple-effect", { type: "unbounded" }))));
86
86
  }
87
87
  static get is() { return "ion-tab-button"; }
88
88
  static get encapsulation() { return "shadow"; }
@@ -135,7 +135,7 @@ export class Tabs {
135
135
  return Array.from(this.el.querySelectorAll('ion-tab'));
136
136
  }
137
137
  render() {
138
- return (h(Host, { onIonTabButtonClick: this.onTabClicked }, h("slot", { name: "top" }), h("div", { class: "tabs-inner" }, h("slot", null)), h("slot", { name: "bottom" })));
138
+ return (h(Host, { key: '9044f05f4716fd9c158864175290dfb044e63539', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: '178492f52f15a042e47531007a3564a935847818', name: "top" }), h("div", { key: 'b3affaaeb7752194acde36d9de74dbe2b3280cd1', class: "tabs-inner" }, h("slot", { key: '98f0f4e2903f1a6cec041e06b75073c57960a912' })), h("slot", { key: '0899482561bdaf35e97e5a40860c40978daca03a', name: "bottom" })));
139
139
  }
140
140
  static get is() { return "ion-tabs"; }
141
141
  static get encapsulation() { return "shadow"; }
@@ -236,11 +236,9 @@ export class Tabs {
236
236
  "complexType": {
237
237
  "signature": "(tab: string | HTMLIonTabElement) => Promise<boolean>",
238
238
  "parameters": [{
239
- "tags": [{
240
- "name": "param",
241
- "text": "tab The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
242
- }],
243
- "text": "The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
239
+ "name": "tab",
240
+ "type": "string | HTMLIonTabElement",
241
+ "docs": "The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
244
242
  }],
245
243
  "references": {
246
244
  "Promise": {
@@ -266,11 +264,9 @@ export class Tabs {
266
264
  "complexType": {
267
265
  "signature": "(tab: string | HTMLIonTabElement) => Promise<HTMLIonTabElement | undefined>",
268
266
  "parameters": [{
269
- "tags": [{
270
- "name": "param",
271
- "text": "tab The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
272
- }],
273
- "text": "The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
267
+ "name": "tab",
268
+ "type": "string | HTMLIonTabElement",
269
+ "docs": "The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
274
270
  }],
275
271
  "references": {
276
272
  "Promise": {
@@ -313,8 +309,9 @@ export class Tabs {
313
309
  "complexType": {
314
310
  "signature": "(id: string) => Promise<RouteWrite>",
315
311
  "parameters": [{
316
- "tags": [],
317
- "text": ""
312
+ "name": "id",
313
+ "type": "string",
314
+ "docs": ""
318
315
  }],
319
316
  "references": {
320
317
  "Promise": {
@@ -13,9 +13,9 @@ export class Text {
13
13
  }
14
14
  render() {
15
15
  const mode = getIonMode(this);
16
- return (h(Host, { class: createColorClasses(this.color, {
16
+ return (h(Host, { key: '8922ebdd7486c9cb9f9b547a49e5be2261df4ba1', class: createColorClasses(this.color, {
17
17
  [mode]: true,
18
- }) }, h("slot", null)));
18
+ }) }, h("slot", { key: '164cbd0f81a00adfac04f544524e905f721c121c' })));
19
19
  }
20
20
  static get is() { return "ion-text"; }
21
21
  static get encapsulation() { return "shadow"; }
@@ -10,7 +10,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
10
10
  test.describe(title('textarea: events: ionChange'), () => {
11
11
  test.describe('when the textarea is blurred', () => {
12
12
  test('should emit if the value has changed', async ({ page }) => {
13
- await page.setContent(`<ion-textarea></ion-textarea>`, config);
13
+ await page.setContent(`<ion-textarea aria-label="textarea"></ion-textarea>`, config);
14
14
  const nativeTextarea = page.locator('ion-textarea textarea');
15
15
  const ionChangeSpy = await page.spyOnEvent('ionChange');
16
16
  await nativeTextarea.type('new value', { delay: 100 });
@@ -21,7 +21,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
21
21
  expect(ionChangeSpy).toHaveReceivedEventTimes(1);
22
22
  });
23
23
  test('should emit if the textarea is cleared with an initial value', async ({ page }) => {
24
- await page.setContent(`<ion-textarea clear-on-edit="true" value="123"></ion-textarea>`, config);
24
+ await page.setContent(`<ion-textarea aria-label="textarea" clear-on-edit="true" value="123"></ion-textarea>`, config);
25
25
  const textarea = page.locator('ion-textarea');
26
26
  const nativeTextarea = textarea.locator('textarea');
27
27
  const ionChangeSpy = await page.spyOnEvent('ionChange');
@@ -32,7 +32,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
32
32
  expect(ionChangeSpy).toHaveReceivedEventTimes(1);
33
33
  });
34
34
  test('should not emit if the value is set programmatically', async ({ page }) => {
35
- await page.setContent(`<ion-textarea></ion-textarea>`, config);
35
+ await page.setContent(`<ion-textarea aria-label="textarea"></ion-textarea>`, config);
36
36
  const textarea = page.locator('ion-textarea');
37
37
  const ionChangeSpy = await page.spyOnEvent('ionChange');
38
38
  await textarea.evaluate((el) => {
@@ -51,7 +51,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
51
51
  });
52
52
  test.describe(title('textarea: events: ionInput'), () => {
53
53
  test('should emit when the user types', async ({ page }) => {
54
- await page.setContent(`<ion-textarea value="some value"></ion-textarea>`, config);
54
+ await page.setContent(`<ion-textarea aria-label="textarea" value="some value"></ion-textarea>`, config);
55
55
  const ionInputSpy = await page.spyOnEvent('ionInput');
56
56
  const nativeTextarea = page.locator('ion-textarea textarea');
57
57
  await nativeTextarea.type('new value', { delay: 100 });
@@ -5,7 +5,7 @@ import { Host, h } from "@stencil/core";
5
5
  import { getIonMode } from "../../global/ionic-global";
6
6
  export class Thumbnail {
7
7
  render() {
8
- return (h(Host, { class: getIonMode(this) }, h("slot", null)));
8
+ return (h(Host, { key: '2b3d5139161f4b9075dce537c14b4087986b37c4', class: getIonMode(this) }, h("slot", { key: '3c4838c43e1230f9413a3cb66584417fd11382b2' })));
9
9
  }
10
10
  static get is() { return "ion-thumbnail"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -27,11 +27,11 @@ export class ToolbarTitle {
27
27
  render() {
28
28
  const mode = getIonMode(this);
29
29
  const size = this.getSize();
30
- return (h(Host, { class: createColorClasses(this.color, {
30
+ return (h(Host, { key: 'b68a272a33ec81d282629a569676f64d3215a0c7', class: createColorClasses(this.color, {
31
31
  [mode]: true,
32
32
  [`title-${size}`]: true,
33
33
  'title-rtl': document.dir === 'rtl',
34
- }) }, h("div", { class: "toolbar-title" }, h("slot", null))));
34
+ }) }, h("div", { key: '9069816a14e6e358695c5bd465787cf297c761bc', class: "toolbar-title" }, h("slot", { key: '8894bd04f2292b54050ee864abb5396deadf9874' }))));
35
35
  }
36
36
  static get is() { return "ion-title"; }
37
37
  static get encapsulation() { return "shadow"; }
@@ -384,9 +384,9 @@ export class Toast {
384
384
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
385
385
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
386
386
  }
387
- return (h(Host, Object.assign({ tabindex: "-1" }, this.htmlAttributes, { style: {
387
+ return (h(Host, Object.assign({ key: '15a5c3e8d475435c838b70c55ef2e7cc12d6abfb', tabindex: "-1" }, this.htmlAttributes, { style: {
388
388
  zIndex: `${60000 + this.overlayIndex}`,
389
- }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { class: wrapperClass }, h("div", { class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
389
+ }, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: 'a6ed7fb75ab098dc632d1a546b4d5298675c14c1', class: wrapperClass }, h("div", { key: '68ff7219e9abae0b7c2030369ebffd2fe0edf7de', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '6b45ca5e283d3507c682cbe733e27a94460a7f69', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
390
390
  }
391
391
  static get is() { return "ion-toast"; }
392
392
  static get encapsulation() { return "shadow"; }
@@ -1026,17 +1026,13 @@ export class Toast {
1026
1026
  "complexType": {
1027
1027
  "signature": "(data?: any, role?: string) => Promise<boolean>",
1028
1028
  "parameters": [{
1029
- "tags": [{
1030
- "name": "param",
1031
- "text": "data Any data to emit in the dismiss events."
1032
- }],
1033
- "text": "Any data to emit in the dismiss events."
1029
+ "name": "data",
1030
+ "type": "any",
1031
+ "docs": "Any data to emit in the dismiss events."
1034
1032
  }, {
1035
- "tags": [{
1036
- "name": "param",
1037
- "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\"`."
1038
- }],
1039
- "text": "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\"`."
1033
+ "name": "role",
1034
+ "type": "string | undefined",
1035
+ "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\"`."
1040
1036
  }],
1041
1037
  "references": {
1042
1038
  "Promise": {
@@ -62,10 +62,10 @@ export class Toolbar {
62
62
  this.childrenStyles.forEach((value) => {
63
63
  Object.assign(childStyles, value);
64
64
  });
65
- return (h(Host, { class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
65
+ return (h(Host, { key: 'afac0f08f3981483c072984ce047df5dc9cc1e99', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
66
66
  [mode]: true,
67
67
  'in-toolbar': hostContext('ion-toolbar', this.el),
68
- })) }, h("div", { class: "toolbar-background" }), h("div", { class: "toolbar-container" }, h("slot", { name: "start" }), h("slot", { name: "secondary" }), h("div", { class: "toolbar-content" }, h("slot", null)), h("slot", { name: "primary" }), h("slot", { name: "end" }))));
68
+ })) }, h("div", { key: '30d4f1d0ec01cc646398301b5f7d469391eb35d2', class: "toolbar-background" }), h("div", { key: '175d1f283e670b57a9bf8fd2a8c5e7d0da749aa8', class: "toolbar-container" }, h("slot", { key: '4853b18092737b32b5995457536fa5a7fc2816ef', name: "start" }), h("slot", { key: '6eb4921200aad02d7977d134edad6cff2aad91ad', name: "secondary" }), h("div", { key: '024e0339c74c4b9a886d49e96723243719643dc2', class: "toolbar-content" }, h("slot", { key: 'b6452c84692fedd6efe33ac67907d01253b76f8f' })), h("slot", { key: '636e56eeaa318ce45a9c3854a30b8eb2819a33e0', name: "primary" }), h("slot", { key: 'a45c19b93dca3719d75bd4d99acc49de87137a7d', name: "end" }))));
69
69
  }
70
70
  static get is() { return "ion-toolbar"; }
71
71
  static get encapsulation() { return "shadow"; }
@@ -1,6 +1,21 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
+ import { win } from "./browser/index";
5
+ import { config } from "../global/config";
6
+ /**
7
+ * CloseWatcher is a newer API that lets
8
+ * use detect the hardware back button event
9
+ * in a web browser: https://caniuse.com/?search=closewatcher
10
+ * However, not every browser supports it yet.
11
+ *
12
+ * This needs to be a function so that we can
13
+ * check the config once it has been set.
14
+ * Otherwise, this code would be evaluated the
15
+ * moment this file is evaluated which could be
16
+ * before the config is set.
17
+ */
18
+ export const shoudUseCloseWatcher = () => config.get('experimentalCloseWatcher', false) && win !== undefined && 'CloseWatcher' in win;
4
19
  /**
5
20
  * When hardwareBackButton: false in config,
6
21
  * we need to make sure we also block the default
@@ -17,7 +32,7 @@ export const blockHardwareBackButton = () => {
17
32
  export const startHardwareBackButton = () => {
18
33
  const doc = document;
19
34
  let busy = false;
20
- doc.addEventListener('backbutton', () => {
35
+ const backButtonCallback = () => {
21
36
  if (busy) {
22
37
  return;
23
38
  }
@@ -63,7 +78,35 @@ export const startHardwareBackButton = () => {
63
78
  }
64
79
  };
65
80
  processHandlers();
66
- });
81
+ };
82
+ /**
83
+ * If the CloseWatcher is defined then
84
+ * we don't want to also listen for the native
85
+ * backbutton event otherwise we may get duplicate
86
+ * events firing.
87
+ */
88
+ if (shoudUseCloseWatcher()) {
89
+ let watcher;
90
+ const configureWatcher = () => {
91
+ watcher === null || watcher === void 0 ? void 0 : watcher.destroy();
92
+ watcher = new win.CloseWatcher();
93
+ /**
94
+ * Once a close request happens
95
+ * the watcher gets destroyed.
96
+ * As a result, we need to re-configure
97
+ * the watcher so we can respond to other
98
+ * close requests.
99
+ */
100
+ watcher.onclose = () => {
101
+ backButtonCallback();
102
+ configureWatcher();
103
+ };
104
+ };
105
+ configureWatcher();
106
+ }
107
+ else {
108
+ doc.addEventListener('backbutton', backButtonCallback);
109
+ }
67
110
  };
68
111
  export const OVERLAY_BACK_BUTTON_PRIORITY = 100;
69
112
  export const MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays
@@ -34,7 +34,7 @@ const transitionEnd = (el, expectedDuration = 0, callback) => {
34
34
  el.addEventListener('transitionend', onTransitionEnd, opts);
35
35
  animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);
36
36
  unRegTrans = () => {
37
- if (animationTimeout) {
37
+ if (animationTimeout !== undefined) {
38
38
  clearTimeout(animationTimeout);
39
39
  animationTimeout = undefined;
40
40
  }