@ionic/core 8.0.2 → 8.1.1-dev.11714676345.1df5b5f8

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 (436) hide show
  1. package/components/index2.js +119 -1
  2. package/components/ion-content.js +6 -4
  3. package/components/ion-datetime-button.js +2 -2
  4. package/components/ion-datetime.js +15 -13
  5. package/components/ion-fab-button.js +2 -2
  6. package/components/ion-fab-list.js +2 -2
  7. package/components/ion-fab.js +2 -2
  8. package/components/ion-footer.js +2 -2
  9. package/components/ion-grid.js +2 -2
  10. package/components/ion-header.js +2 -2
  11. package/components/ion-img.js +1 -1
  12. package/components/ion-infinite-scroll-content.js +2 -2
  13. package/components/ion-infinite-scroll.js +1 -1
  14. package/components/ion-input-password-toggle.js +3 -3
  15. package/components/ion-input.js +8 -4
  16. package/components/ion-item-divider.js +2 -2
  17. package/components/ion-item-group.js +1 -1
  18. package/components/ion-item-option.js +2 -2
  19. package/components/ion-item-options.js +1 -1
  20. package/components/ion-item-sliding.js +1 -1
  21. package/components/ion-loading.js +2 -2
  22. package/components/ion-menu-button.js +2 -2
  23. package/components/ion-menu-toggle.js +2 -2
  24. package/components/ion-menu.js +2 -2
  25. package/components/ion-modal.js +10 -8
  26. package/components/ion-nav-link.js +1 -1
  27. package/components/ion-nav.js +1 -1
  28. package/components/ion-note.js +2 -2
  29. package/components/ion-picker-legacy.js +2 -2
  30. package/components/ion-progress-bar.js +1 -1
  31. package/components/ion-range.js +3 -3
  32. package/components/ion-refresher-content.js +1 -1
  33. package/components/ion-refresher.js +1 -1
  34. package/components/ion-reorder-group.js +1 -1
  35. package/components/ion-reorder.js +1 -1
  36. package/components/ion-router-link.js +2 -2
  37. package/components/ion-router-outlet.js +1 -1
  38. package/components/ion-row.js +1 -1
  39. package/components/ion-searchbar.js +4 -4
  40. package/components/ion-segment-button.js +3 -3
  41. package/components/ion-segment.js +10 -9
  42. package/components/ion-select-option.js +1 -1
  43. package/components/ion-select.js +8 -5
  44. package/components/ion-skeleton-text.js +2 -2
  45. package/components/ion-split-pane.js +2 -2
  46. package/components/ion-tab-bar.js +2 -2
  47. package/components/ion-tab-button.js +2 -2
  48. package/components/ion-tab.js +2 -2
  49. package/components/ion-tabs.js +1 -1
  50. package/components/ion-text.js +2 -2
  51. package/components/ion-textarea.js +2 -2
  52. package/components/ion-thumbnail.js +1 -1
  53. package/components/ion-title.js +2 -2
  54. package/components/ion-toast.js +2 -2
  55. package/components/ion-toggle.js +3 -3
  56. package/components/ion-toolbar.js +2 -2
  57. package/components/label.js +2 -2
  58. package/components/list-header.js +2 -2
  59. package/components/list.js +1 -1
  60. package/components/overlays.js +3 -2
  61. package/components/picker-column-option.js +2 -2
  62. package/components/picker-column.js +156 -4
  63. package/components/picker-column2.js +2 -2
  64. package/components/picker.js +2 -2
  65. package/components/popover.js +6 -4
  66. package/components/radio-group.js +1 -1
  67. package/components/radio.js +3 -3
  68. package/components/ripple-effect.js +1 -1
  69. package/components/select-popover.js +1 -1
  70. package/components/spinner.js +1 -1
  71. package/css/core.css +1 -1
  72. package/css/core.css.map +1 -1
  73. package/css/ionic.bundle.css +1 -1
  74. package/css/ionic.bundle.css.map +1 -1
  75. package/dist/cjs/{index-6047957b.js → index-c0b7f8f4.js} +124 -6
  76. package/dist/cjs/index.cjs.js +5 -5
  77. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  78. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  79. package/dist/cjs/ion-app_8.cjs.entry.js +15 -14
  80. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  81. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-datetime_3.cjs.entry.js +20 -18
  84. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  85. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  86. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  87. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  88. package/dist/cjs/ion-input.cjs.entry.js +7 -4
  89. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  90. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  91. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  93. package/dist/cjs/ion-modal.cjs.entry.js +10 -9
  94. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -3
  95. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  96. package/dist/cjs/ion-picker-column.cjs.entry.js +154 -4
  97. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-popover.cjs.entry.js +6 -5
  99. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  100. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  101. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  102. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  105. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  107. package/dist/cjs/ion-segment_2.cjs.entry.js +13 -12
  108. package/dist/cjs/ion-select_3.cjs.entry.js +11 -8
  109. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  110. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  112. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  113. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  115. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  116. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  117. package/dist/cjs/ionic.cjs.js +1 -1
  118. package/dist/cjs/{ios.transition-59b0e1d9.js → ios.transition-5ddf92f1.js} +3 -1
  119. package/dist/cjs/loader.cjs.js +1 -1
  120. package/dist/cjs/{md.transition-0cc7c831.js → md.transition-047c18c5.js} +3 -1
  121. package/dist/cjs/{overlays-2feabb85.js → overlays-cb04d075.js} +3 -1
  122. package/dist/collection/components/content/content.js +23 -4
  123. package/dist/collection/components/content/test/content.spec.js +27 -0
  124. package/dist/collection/components/datetime/datetime.js +15 -13
  125. package/dist/collection/components/datetime/test/overlay-roles/datetime.e2e.js +34 -0
  126. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  127. package/dist/collection/components/fab/fab.js +2 -2
  128. package/dist/collection/components/fab-button/fab-button.js +2 -2
  129. package/dist/collection/components/fab-list/fab-list.js +2 -2
  130. package/dist/collection/components/footer/footer.js +2 -2
  131. package/dist/collection/components/grid/grid.js +2 -2
  132. package/dist/collection/components/header/header.js +2 -2
  133. package/dist/collection/components/img/img.js +1 -1
  134. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  135. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  136. package/dist/collection/components/input/input.js +24 -4
  137. package/dist/collection/components/input/test/input.spec.js +13 -0
  138. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  139. package/dist/collection/components/item-divider/item-divider.js +2 -2
  140. package/dist/collection/components/item-group/item-group.js +1 -1
  141. package/dist/collection/components/item-option/item-option.js +2 -2
  142. package/dist/collection/components/item-options/item-options.js +1 -1
  143. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  144. package/dist/collection/components/label/label.js +2 -2
  145. package/dist/collection/components/list/list.js +1 -1
  146. package/dist/collection/components/list-header/list-header.js +2 -2
  147. package/dist/collection/components/loading/loading.js +2 -2
  148. package/dist/collection/components/menu/menu.js +2 -2
  149. package/dist/collection/components/menu-button/menu-button.js +2 -2
  150. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  151. package/dist/collection/components/modal/gestures/sheet.js +3 -2
  152. package/dist/collection/components/modal/modal.js +25 -6
  153. package/dist/collection/components/modal/test/basic/modal.spec.js +19 -0
  154. package/dist/collection/components/nav/nav.js +1 -1
  155. package/dist/collection/components/nav-link/nav-link.js +1 -1
  156. package/dist/collection/components/note/note.js +2 -2
  157. package/dist/collection/components/picker/picker.js +2 -2
  158. package/dist/collection/components/picker-column/picker-column.css +19 -0
  159. package/dist/collection/components/picker-column/picker-column.js +158 -3
  160. package/dist/collection/components/picker-column/test/picker-column.spec.js +83 -0
  161. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  162. package/dist/collection/components/picker-legacy/picker.js +2 -2
  163. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  164. package/dist/collection/components/popover/popover.js +23 -4
  165. package/dist/collection/components/popover/test/basic/popover.spec.js +19 -0
  166. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  167. package/dist/collection/components/radio/radio.js +3 -3
  168. package/dist/collection/components/radio-group/radio-group.js +1 -1
  169. package/dist/collection/components/range/range.js +3 -3
  170. package/dist/collection/components/refresher/refresher.js +1 -1
  171. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  172. package/dist/collection/components/reorder/reorder.js +1 -1
  173. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  174. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  175. package/dist/collection/components/router-link/router-link.js +2 -2
  176. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  177. package/dist/collection/components/row/row.js +1 -1
  178. package/dist/collection/components/searchbar/searchbar.js +4 -4
  179. package/dist/collection/components/segment/segment.js +10 -9
  180. package/dist/collection/components/segment-button/segment-button.js +3 -3
  181. package/dist/collection/components/select/select.js +8 -5
  182. package/dist/collection/components/select-option/select-option.js +1 -1
  183. package/dist/collection/components/select-popover/select-popover.js +1 -1
  184. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  185. package/dist/collection/components/spinner/spinner.js +1 -1
  186. package/dist/collection/components/split-pane/split-pane.js +2 -2
  187. package/dist/collection/components/tab/tab.js +2 -2
  188. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  189. package/dist/collection/components/tab-button/tab-button.js +2 -2
  190. package/dist/collection/components/tabs/tabs.js +1 -1
  191. package/dist/collection/components/text/text.js +2 -2
  192. package/dist/collection/components/textarea/textarea.js +2 -2
  193. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  194. package/dist/collection/components/title/title.js +2 -2
  195. package/dist/collection/components/toast/toast.js +2 -2
  196. package/dist/collection/components/toggle/toggle.js +3 -3
  197. package/dist/collection/components/toolbar/toolbar.js +2 -2
  198. package/dist/collection/utils/focus-controller/index.js +112 -0
  199. package/dist/collection/utils/focus-controller/test/generic/focus-controller.e2e.js +52 -0
  200. package/dist/collection/utils/focus-controller/test/ionic/focus-controller.e2e.js +52 -0
  201. package/dist/collection/utils/overlays.js +2 -1
  202. package/dist/collection/utils/transition/index.js +11 -1
  203. package/dist/docs.json +96 -1
  204. package/dist/esm/{index-f4460246.js → index-8e6b6a24.js} +121 -3
  205. package/dist/esm/index.js +5 -5
  206. package/dist/esm/ion-action-sheet.entry.js +1 -1
  207. package/dist/esm/ion-alert.entry.js +1 -1
  208. package/dist/esm/ion-app_8.entry.js +15 -14
  209. package/dist/esm/ion-avatar_3.entry.js +1 -1
  210. package/dist/esm/ion-col_3.entry.js +3 -3
  211. package/dist/esm/ion-datetime-button.entry.js +2 -2
  212. package/dist/esm/ion-datetime_3.entry.js +20 -18
  213. package/dist/esm/ion-fab_3.entry.js +6 -6
  214. package/dist/esm/ion-img.entry.js +1 -1
  215. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  216. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  217. package/dist/esm/ion-input.entry.js +7 -4
  218. package/dist/esm/ion-item-option_3.entry.js +4 -4
  219. package/dist/esm/ion-item_8.entry.js +12 -12
  220. package/dist/esm/ion-loading.entry.js +3 -3
  221. package/dist/esm/ion-menu_3.entry.js +7 -7
  222. package/dist/esm/ion-modal.entry.js +10 -9
  223. package/dist/esm/ion-nav_2.entry.js +4 -3
  224. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  225. package/dist/esm/ion-picker-column.entry.js +154 -4
  226. package/dist/esm/ion-picker.entry.js +2 -2
  227. package/dist/esm/ion-popover.entry.js +6 -5
  228. package/dist/esm/ion-progress-bar.entry.js +1 -1
  229. package/dist/esm/ion-radio_2.entry.js +4 -4
  230. package/dist/esm/ion-range.entry.js +3 -3
  231. package/dist/esm/ion-refresher_2.entry.js +2 -2
  232. package/dist/esm/ion-reorder_2.entry.js +2 -2
  233. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  234. package/dist/esm/ion-route_4.entry.js +2 -2
  235. package/dist/esm/ion-searchbar.entry.js +4 -4
  236. package/dist/esm/ion-segment_2.entry.js +13 -12
  237. package/dist/esm/ion-select_3.entry.js +11 -8
  238. package/dist/esm/ion-spinner.entry.js +1 -1
  239. package/dist/esm/ion-split-pane.entry.js +2 -2
  240. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  241. package/dist/esm/ion-tab_2.entry.js +3 -3
  242. package/dist/esm/ion-text.entry.js +2 -2
  243. package/dist/esm/ion-textarea.entry.js +2 -2
  244. package/dist/esm/ion-toast.entry.js +3 -3
  245. package/dist/esm/ion-toggle.entry.js +3 -3
  246. package/dist/esm/ionic.js +1 -1
  247. package/dist/esm/{ios.transition-72f59adb.js → ios.transition-e35d0940.js} +3 -1
  248. package/dist/esm/loader.js +1 -1
  249. package/dist/esm/{md.transition-ef0437fe.js → md.transition-4b90a1f0.js} +3 -1
  250. package/dist/esm/{overlays-56045efc.js → overlays-df2c06b2.js} +3 -2
  251. package/dist/esm-es5/index-8e6b6a24.js +4 -0
  252. package/dist/esm-es5/index.js +1 -1
  253. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  254. package/dist/esm-es5/ion-alert.entry.js +1 -1
  255. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  256. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  257. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  258. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  259. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  260. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  261. package/dist/esm-es5/ion-img.entry.js +1 -1
  262. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  263. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  264. package/dist/esm-es5/ion-input.entry.js +1 -1
  265. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  266. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  267. package/dist/esm-es5/ion-loading.entry.js +1 -1
  268. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-modal.entry.js +1 -1
  270. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  272. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  273. package/dist/esm-es5/ion-picker.entry.js +1 -1
  274. package/dist/esm-es5/ion-popover.entry.js +1 -1
  275. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  276. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  277. package/dist/esm-es5/ion-range.entry.js +1 -1
  278. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  279. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  280. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  281. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  282. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  283. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  284. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  285. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  286. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  287. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  288. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  289. package/dist/esm-es5/ion-text.entry.js +1 -1
  290. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  291. package/dist/esm-es5/ion-toast.entry.js +1 -1
  292. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  293. package/dist/esm-es5/ionic.js +1 -1
  294. package/dist/esm-es5/ios.transition-e35d0940.js +4 -0
  295. package/dist/esm-es5/loader.js +1 -1
  296. package/dist/esm-es5/md.transition-4b90a1f0.js +4 -0
  297. package/dist/esm-es5/{overlays-56045efc.js → overlays-df2c06b2.js} +1 -1
  298. package/dist/html.html-data.json +24 -0
  299. package/dist/ionic/index.esm.js +1 -1
  300. package/dist/ionic/ionic.esm.js +1 -1
  301. package/dist/ionic/{p-e58a04ae.system.entry.js → p-01a27023.system.entry.js} +1 -1
  302. package/dist/ionic/p-0395be73.entry.js +4 -0
  303. package/dist/ionic/p-049d43bd.entry.js +4 -0
  304. package/dist/ionic/p-0536574e.entry.js +4 -0
  305. package/dist/ionic/{p-4f17f03d.entry.js → p-09538818.entry.js} +1 -1
  306. package/dist/ionic/p-0978924b.system.entry.js +4 -0
  307. package/dist/ionic/{p-9c5b6727.entry.js → p-09b4e9ec.entry.js} +1 -1
  308. package/dist/ionic/{p-22ef5198.system.entry.js → p-0a6d801e.system.entry.js} +1 -1
  309. package/dist/ionic/{p-dc242acb.system.entry.js → p-0b007acc.system.entry.js} +1 -1
  310. package/dist/ionic/{p-100d079f.system.entry.js → p-10feef7e.system.entry.js} +1 -1
  311. package/dist/ionic/p-15d1ddba.js +4 -0
  312. package/dist/ionic/{p-2bd9b326.system.entry.js → p-199f826f.system.entry.js} +1 -1
  313. package/dist/ionic/p-1b435d20.entry.js +4 -0
  314. package/dist/ionic/{p-7cf7ef9f.entry.js → p-1eb63fa4.entry.js} +1 -1
  315. package/dist/ionic/{p-672b53f3.entry.js → p-207e11dc.entry.js} +1 -1
  316. package/dist/ionic/{p-7f512c4d.system.entry.js → p-23fa696f.system.entry.js} +1 -1
  317. package/dist/ionic/{p-32df9442.entry.js → p-29de09dd.entry.js} +1 -1
  318. package/dist/ionic/p-30baae57.system.js +1 -1
  319. package/dist/ionic/p-33e10509.system.js +4 -0
  320. package/dist/ionic/{p-eed23392.system.entry.js → p-380efbfa.system.entry.js} +1 -1
  321. package/dist/ionic/p-3c27be4a.entry.js +4 -0
  322. package/dist/ionic/{p-022bc8ff.entry.js → p-3f53a0b1.entry.js} +1 -1
  323. package/dist/ionic/{p-0ae12601.entry.js → p-433157a4.entry.js} +1 -1
  324. package/dist/ionic/p-498eb648.system.entry.js +4 -0
  325. package/dist/ionic/{p-eaac2522.system.entry.js → p-4d8f408d.system.entry.js} +1 -1
  326. package/dist/ionic/{p-44edbb29.system.entry.js → p-509620b8.system.entry.js} +1 -1
  327. package/dist/ionic/{p-797fc793.entry.js → p-5109a566.entry.js} +1 -1
  328. package/dist/ionic/{p-af6c2b39.entry.js → p-52ce473d.entry.js} +1 -1
  329. package/dist/ionic/{p-4ba654fa.system.entry.js → p-57bc32e2.system.entry.js} +1 -1
  330. package/dist/ionic/p-5dc9f99a.entry.js +4 -0
  331. package/dist/ionic/p-5ec3bb70.system.entry.js +4 -0
  332. package/dist/ionic/{p-0300cf19.system.entry.js → p-62e44e4a.system.entry.js} +1 -1
  333. package/dist/ionic/p-66ed603b.js +4 -0
  334. package/dist/ionic/p-68bb9870.system.entry.js +4 -0
  335. package/dist/ionic/{p-2912d62c.system.entry.js → p-6a2cf398.system.entry.js} +1 -1
  336. package/dist/ionic/{p-5d723a0a.entry.js → p-6ec88301.entry.js} +1 -1
  337. package/dist/ionic/p-6f008ad2.js +4 -0
  338. package/dist/ionic/{p-86a7576c.system.entry.js → p-700567ab.system.entry.js} +1 -1
  339. package/dist/ionic/p-712d54ae.js +4 -0
  340. package/dist/ionic/{p-508d5d0d.entry.js → p-7349de07.entry.js} +1 -1
  341. package/dist/ionic/{p-3098a7cb.entry.js → p-78405458.entry.js} +1 -1
  342. package/dist/ionic/{p-637e85a2.entry.js → p-80265a58.entry.js} +1 -1
  343. package/dist/ionic/{p-f8b4ac1f.system.entry.js → p-83d748f8.system.entry.js} +2 -2
  344. package/dist/ionic/{p-3b974a28.entry.js → p-8a03fbee.entry.js} +1 -1
  345. package/dist/ionic/{p-a23a7b64.system.entry.js → p-8cb80f83.system.entry.js} +1 -1
  346. package/dist/ionic/{p-bae97f84.system.entry.js → p-8d14ee8c.system.entry.js} +2 -2
  347. package/dist/ionic/{p-61d8c43c.system.entry.js → p-9213681c.system.entry.js} +1 -1
  348. package/dist/ionic/p-92d7e99d.system.js +4 -0
  349. package/dist/ionic/{p-e1f7425b.system.entry.js → p-9664a1a2.system.entry.js} +1 -1
  350. package/dist/ionic/{p-762156c0.entry.js → p-9797f6eb.entry.js} +1 -1
  351. package/dist/ionic/{p-dba28cb1.system.entry.js → p-9848d7be.system.entry.js} +1 -1
  352. package/dist/ionic/{p-5b183a1c.entry.js → p-99884813.entry.js} +1 -1
  353. package/dist/ionic/{p-a87cdd33.system.entry.js → p-99ca9787.system.entry.js} +1 -1
  354. package/dist/ionic/{p-a51b22fb.system.entry.js → p-9bfd7cda.system.entry.js} +1 -1
  355. package/dist/ionic/p-9c6dcf78.system.entry.js +4 -0
  356. package/dist/ionic/{p-1ae3a136.system.entry.js → p-a2e94ade.system.entry.js} +1 -1
  357. package/dist/ionic/p-a488b7ab.system.js +4 -0
  358. package/dist/ionic/{p-18470679.entry.js → p-a4ab7449.entry.js} +1 -1
  359. package/dist/ionic/{p-5d26afde.system.entry.js → p-a50f23bf.system.entry.js} +2 -2
  360. package/dist/ionic/p-a6a8b478.system.entry.js +4 -0
  361. package/dist/ionic/{p-3a3d5a1a.entry.js → p-aaaaaea1.entry.js} +1 -1
  362. package/dist/ionic/{p-cfbf4588.entry.js → p-b02eda30.entry.js} +1 -1
  363. package/dist/ionic/{p-8162bcf4.entry.js → p-b04c27d8.entry.js} +1 -1
  364. package/dist/ionic/{p-a822c02f.system.entry.js → p-b07affd5.system.entry.js} +1 -1
  365. package/dist/ionic/{p-15daa308.system.entry.js → p-b28d3ccb.system.entry.js} +2 -2
  366. package/dist/ionic/{p-3fefc7cd.entry.js → p-b563b6ac.entry.js} +1 -1
  367. package/dist/ionic/{p-27206537.system.entry.js → p-b9181033.system.entry.js} +1 -1
  368. package/dist/ionic/{p-6143e16a.entry.js → p-ba70039f.entry.js} +1 -1
  369. package/dist/ionic/{p-74806c03.entry.js → p-bbbe869e.entry.js} +1 -1
  370. package/dist/ionic/p-bd1173d3.entry.js +4 -0
  371. package/dist/ionic/p-c0e9ba51.entry.js +4 -0
  372. package/dist/ionic/p-c5dd0892.system.entry.js +4 -0
  373. package/dist/ionic/p-cec8589b.system.js +4 -0
  374. package/dist/ionic/{p-939dbcc6.system.entry.js → p-d69b26d9.system.entry.js} +1 -1
  375. package/dist/ionic/p-d9f3d68a.entry.js +4 -0
  376. package/dist/ionic/{p-fb088c7d.system.entry.js → p-dc0d9ff5.system.entry.js} +2 -2
  377. package/dist/ionic/{p-53c46dd1.entry.js → p-dc1e363a.entry.js} +1 -1
  378. package/dist/ionic/{p-4c103f8d.system.entry.js → p-e0a8ffd0.system.entry.js} +1 -1
  379. package/dist/ionic/{p-091697a4.system.entry.js → p-e6e197f5.system.entry.js} +1 -1
  380. package/dist/ionic/{p-2d641da7.entry.js → p-e6e88ab9.entry.js} +1 -1
  381. package/dist/ionic/{p-f14daa66.system.js → p-eb3023c9.system.js} +1 -1
  382. package/dist/ionic/p-ecbdbf25.system.entry.js +4 -0
  383. package/dist/ionic/{p-3dd57c9c.system.entry.js → p-ed5aebaa.system.entry.js} +1 -1
  384. package/dist/ionic/p-f0e81ddb.entry.js +4 -0
  385. package/dist/ionic/{p-d979153a.entry.js → p-f357707e.entry.js} +1 -1
  386. package/dist/ionic/{p-430a7e95.entry.js → p-f53bcebd.entry.js} +1 -1
  387. package/dist/ionic/p-f9baf25c.entry.js +4 -0
  388. package/dist/ionic/{p-05a8a97d.system.entry.js → p-fb21fd1c.system.entry.js} +1 -1
  389. package/dist/ionic/{p-23610251.entry.js → p-fcecca8f.entry.js} +1 -1
  390. package/dist/ionic/p-ffbf54f0.entry.js +4 -0
  391. package/dist/types/components/content/content.d.ts +8 -0
  392. package/dist/types/components/input/input.d.ts +4 -0
  393. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  394. package/dist/types/components/modal/modal.d.ts +18 -0
  395. package/dist/types/components/picker-column/picker-column.d.ts +35 -0
  396. package/dist/types/components/popover/popover-interface.d.ts +1 -0
  397. package/dist/types/components/popover/popover.d.ts +18 -0
  398. package/dist/types/components/segment/segment.d.ts +1 -0
  399. package/dist/types/components/select/select.d.ts +2 -1
  400. package/dist/types/components.d.ts +32 -0
  401. package/dist/types/utils/config.d.ts +9 -0
  402. package/dist/types/utils/focus-controller/index.d.ts +13 -0
  403. package/dist/types/utils/overlays.d.ts +1 -0
  404. package/hydrate/index.js +440 -156
  405. package/package.json +1 -1
  406. package/dist/esm-es5/index-f4460246.js +0 -4
  407. package/dist/esm-es5/ios.transition-72f59adb.js +0 -4
  408. package/dist/esm-es5/md.transition-ef0437fe.js +0 -4
  409. package/dist/ionic/p-00d9d02d.js +0 -4
  410. package/dist/ionic/p-0df52fbc.entry.js +0 -4
  411. package/dist/ionic/p-16b35bc9.system.entry.js +0 -4
  412. package/dist/ionic/p-19d50867.system.entry.js +0 -4
  413. package/dist/ionic/p-307c6b05.entry.js +0 -4
  414. package/dist/ionic/p-3b185894.system.js +0 -4
  415. package/dist/ionic/p-3bece4aa.entry.js +0 -4
  416. package/dist/ionic/p-3ce83c9b.entry.js +0 -4
  417. package/dist/ionic/p-439b8b3c.system.entry.js +0 -4
  418. package/dist/ionic/p-47212f88.system.entry.js +0 -4
  419. package/dist/ionic/p-657157d7.entry.js +0 -4
  420. package/dist/ionic/p-6636ef29.js +0 -4
  421. package/dist/ionic/p-6a5fe8b0.js +0 -4
  422. package/dist/ionic/p-6c64aef2.entry.js +0 -4
  423. package/dist/ionic/p-7f189103.system.entry.js +0 -4
  424. package/dist/ionic/p-99c42ae3.entry.js +0 -4
  425. package/dist/ionic/p-aa71aee7.js +0 -4
  426. package/dist/ionic/p-b4a034c8.system.js +0 -4
  427. package/dist/ionic/p-b6d4e78d.system.entry.js +0 -4
  428. package/dist/ionic/p-b9c741b6.entry.js +0 -4
  429. package/dist/ionic/p-cab332d1.system.js +0 -4
  430. package/dist/ionic/p-cac9bd5d.entry.js +0 -4
  431. package/dist/ionic/p-cc3fc234.entry.js +0 -4
  432. package/dist/ionic/p-d0d2827d.system.entry.js +0 -4
  433. package/dist/ionic/p-d78ce4cc.system.entry.js +0 -4
  434. package/dist/ionic/p-e95ac94c.entry.js +0 -4
  435. package/dist/ionic/p-f2026596.system.js +0 -4
  436. package/dist/ionic/p-f350f4c2.entry.js +0 -4
package/hydrate/index.js CHANGED
@@ -4628,7 +4628,7 @@ const trapKeyboardFocus = (ev, doc) => {
4628
4628
  * behind the sheet should be focusable until
4629
4629
  * the backdrop is enabled.
4630
4630
  */
4631
- if (lastOverlay.classList.contains('ion-disable-focus-trap')) {
4631
+ if (lastOverlay.classList.contains(FOCUS_TRAP_DISABLE_CLASS)) {
4632
4632
  return;
4633
4633
  }
4634
4634
  const trapScopedFocus = () => {
@@ -5303,6 +5303,7 @@ const revealOverlaysToScreenReaders = () => {
5303
5303
  }
5304
5304
  }
5305
5305
  };
5306
+ const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
5306
5307
 
5307
5308
  const hostContext = (selector, el) => {
5308
5309
  return el.closest(selector) !== null;
@@ -8639,6 +8640,7 @@ class Content {
8639
8640
  };
8640
8641
  this.color = undefined;
8641
8642
  this.fullscreen = false;
8643
+ this.fixedSlotPlacement = 'after';
8642
8644
  this.forceOverscroll = undefined;
8643
8645
  this.scrollX = false;
8644
8646
  this.scrollY = true;
@@ -8902,13 +8904,13 @@ class Content {
8902
8904
  }
8903
8905
  }
8904
8906
  render() {
8905
- const { isMainContent, scrollX, scrollY, el } = this;
8907
+ const { fixedSlotPlacement, isMainContent, scrollX, scrollY, el } = this;
8906
8908
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
8907
8909
  const mode = getIonMode$1(this);
8908
8910
  const forceOverscroll = this.shouldForceOverscroll();
8909
8911
  const transitionShadow = mode === 'ios';
8910
8912
  this.resize();
8911
- return (hAsync(Host, { key: '98e9658e69c0bbe0113e4c1b89dd7b240334c039', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
8913
+ return (hAsync(Host, { key: 'f599a7da14969df38c20a6f650179d2a319fb58b', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
8912
8914
  [mode]: true,
8913
8915
  'content-sizing': hostContext('ion-popover', this.el),
8914
8916
  overscroll: forceOverscroll,
@@ -8916,12 +8918,12 @@ class Content {
8916
8918
  }), style: {
8917
8919
  '--offset-top': `${this.cTop}px`,
8918
8920
  '--offset-bottom': `${this.cBottom}px`,
8919
- } }, hAsync("div", { key: 'e89aa6ea09625846db52d63bdbf06c3c279a5ba4', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync("div", { key: '37925cf9d898ede58d5ac7b5a650c648033602a3', class: {
8921
+ } }, hAsync("div", { key: '7c545c3c95ea05abd036d0462936ac153d2a8fc6', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? hAsync("slot", { name: "fixed" }) : null, hAsync("div", { key: 'a67ab7438466c99f74b7ba59964802c3ba86ac5b', class: {
8920
8922
  'inner-scroll': true,
8921
8923
  'scroll-x': scrollX,
8922
8924
  'scroll-y': scrollY,
8923
8925
  overscroll: (scrollX || scrollY) && forceOverscroll,
8924
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: 'a40f964cacf0c2e2bdcf962791aaadb386d44323' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, hAsync("slot", { key: 'd21886cff0bc417e1f5e3a436dddc079e967579b', name: "fixed" })));
8926
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: '6d10fcac2e40b4dd6c20d91a8957ac07251d2fa7' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? hAsync("slot", { name: "fixed" }) : null));
8925
8927
  }
8926
8928
  get el() { return getElement(this); }
8927
8929
  static get style() { return IonContentStyle0; }
@@ -8931,6 +8933,7 @@ class Content {
8931
8933
  "$members$": {
8932
8934
  "color": [513],
8933
8935
  "fullscreen": [4],
8936
+ "fixedSlotPlacement": [1, "fixed-slot-placement"],
8934
8937
  "forceOverscroll": [1028, "force-overscroll"],
8935
8938
  "scrollX": [4, "scroll-x"],
8936
8939
  "scrollY": [4, "scroll-y"],
@@ -10969,10 +10972,10 @@ class Datetime {
10969
10972
  const { activeParts } = this;
10970
10973
  return Array.isArray(activeParts) ? activeParts[0] : activeParts;
10971
10974
  };
10972
- this.closeParentOverlay = () => {
10975
+ this.closeParentOverlay = (role) => {
10973
10976
  const popoverOrModal = this.el.closest('ion-modal, ion-popover');
10974
10977
  if (popoverOrModal) {
10975
- popoverOrModal.dismiss();
10978
+ popoverOrModal.dismiss(undefined, role);
10976
10979
  }
10977
10980
  };
10978
10981
  this.setWorkingParts = (parts) => {
@@ -11643,7 +11646,7 @@ class Datetime {
11643
11646
  }
11644
11647
  }
11645
11648
  if (closeOverlay) {
11646
- this.closeParentOverlay();
11649
+ this.closeParentOverlay(CONFIRM_ROLE);
11647
11650
  }
11648
11651
  }
11649
11652
  /**
@@ -11663,7 +11666,7 @@ class Datetime {
11663
11666
  async cancel(closeOverlay = false) {
11664
11667
  this.ionCancel.emit();
11665
11668
  if (closeOverlay) {
11666
- this.closeParentOverlay();
11669
+ this.closeParentOverlay(CANCEL_ROLE);
11667
11670
  }
11668
11671
  }
11669
11672
  get isCalendarPicker() {
@@ -11975,7 +11978,7 @@ class Datetime {
11975
11978
  const todayString = workingParts.day !== null
11976
11979
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
11977
11980
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
11978
- return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
11981
+ return (hAsync("ion-picker-column", { "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
11979
11982
  const { value } = ev.detail;
11980
11983
  const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
11981
11984
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), findPart));
@@ -12050,7 +12053,7 @@ class Datetime {
12050
12053
  const { disabled, workingParts } = this;
12051
12054
  const activePart = this.getActivePartsWithFallback();
12052
12055
  const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
12053
- return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
12056
+ return (hAsync("ion-picker-column", { "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
12054
12057
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { day: ev.detail.value }));
12055
12058
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { day: ev.detail.value }));
12056
12059
  ev.stopPropagation();
@@ -12062,7 +12065,7 @@ class Datetime {
12062
12065
  }
12063
12066
  const { disabled, workingParts } = this;
12064
12067
  const activePart = this.getActivePartsWithFallback();
12065
- return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
12068
+ return (hAsync("ion-picker-column", { "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
12066
12069
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { month: ev.detail.value }));
12067
12070
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { month: ev.detail.value }));
12068
12071
  ev.stopPropagation();
@@ -12074,7 +12077,7 @@ class Datetime {
12074
12077
  }
12075
12078
  const { disabled, workingParts } = this;
12076
12079
  const activePart = this.getActivePartsWithFallback();
12077
- return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
12080
+ return (hAsync("ion-picker-column", { "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
12078
12081
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { year: ev.detail.value }));
12079
12082
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { year: ev.detail.value }));
12080
12083
  ev.stopPropagation();
@@ -12107,7 +12110,7 @@ class Datetime {
12107
12110
  if (hoursData.length === 0)
12108
12111
  return [];
12109
12112
  const activePart = this.getActivePartsWithFallback();
12110
- return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
12113
+ return (hAsync("ion-picker-column", { "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
12111
12114
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
12112
12115
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
12113
12116
  ev.stopPropagation();
@@ -12118,7 +12121,7 @@ class Datetime {
12118
12121
  if (minutesData.length === 0)
12119
12122
  return [];
12120
12123
  const activePart = this.getActivePartsWithFallback();
12121
- return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
12124
+ return (hAsync("ion-picker-column", { "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
12122
12125
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
12123
12126
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
12124
12127
  ev.stopPropagation();
@@ -12131,7 +12134,7 @@ class Datetime {
12131
12134
  }
12132
12135
  const activePart = this.getActivePartsWithFallback();
12133
12136
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
12134
- return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
12137
+ return (hAsync("ion-picker-column", { "aria-label": "Select a day period", style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
12135
12138
  const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
12136
12139
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
12137
12140
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
@@ -12441,7 +12444,7 @@ class Datetime {
12441
12444
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
12442
12445
  const hasWheelVariant = hasDatePresentation && preferWheel;
12443
12446
  renderHiddenInput(true, el, name, formatValue(value), disabled);
12444
- return (hAsync(Host, { key: '11508a20af9da98e21eb92d2b882bb7cf8370da6', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12447
+ return (hAsync(Host, { key: '48313af4ec8e2a2666cd8c89932c5131dfa7b556', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12445
12448
  [mode]: true,
12446
12449
  ['datetime-readonly']: readonly,
12447
12450
  ['datetime-disabled']: disabled,
@@ -12451,7 +12454,7 @@ class Datetime {
12451
12454
  [`datetime-size-${size}`]: true,
12452
12455
  [`datetime-prefer-wheel`]: hasWheelVariant,
12453
12456
  [`datetime-grid`]: isGridStyle,
12454
- })) }, hAsync("div", { key: 'e35a98de33fa67c8b20c1d40620c1c75dee07512', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12457
+ })) }, hAsync("div", { key: 'b72570048236415aed915488305046d987d51dcf', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12455
12458
  }
12456
12459
  get el() { return getElement(this); }
12457
12460
  static get watchers() { return {
@@ -12520,6 +12523,8 @@ class Datetime {
12520
12523
  }; }
12521
12524
  }
12522
12525
  let datetimeIds = 0;
12526
+ const CANCEL_ROLE = 'datetime-cancel';
12527
+ const CONFIRM_ROLE = 'datetime-confirm';
12523
12528
  const WHEEL_ITEM_PART = 'wheel-item';
12524
12529
  const WHEEL_ITEM_ACTIVE_PART = `active`;
12525
12530
 
@@ -12857,11 +12862,11 @@ class DatetimeButton {
12857
12862
  render() {
12858
12863
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
12859
12864
  const mode = getIonMode$1(this);
12860
- return (hAsync(Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: createColorClasses$1(color, {
12865
+ return (hAsync(Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: createColorClasses$1(color, {
12861
12866
  [mode]: true,
12862
12867
  [`${selectedButton}-active`]: datetimeActive,
12863
12868
  ['datetime-button-disabled']: disabled,
12864
- }) }, dateText && (hAsync("button", { key: '6b7aa66a15b4a6d89d411e40586de28a2ac9f343', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, hAsync("slot", { key: 'd42f34fd167be34386319e7ea788c2ab03c90b87', name: "date-target" }, dateText), mode === 'md' && hAsync("ion-ripple-effect", { key: '47dd34f3c2799064cac7a5fe25440ecc043950f0' }))), timeText && (hAsync("button", { key: 'd77424a20fae320654774c7bfc8a8e2369d3afe3', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, hAsync("slot", { key: 'ac088a78141bb53f2efd48dd7745f8954c92378b', name: "time-target" }, timeText), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b3a58ddfd28b9396e2518ffd62a045ec13d8b9d0' })))));
12869
+ }) }, dateText && (hAsync("button", { key: '812dcb50b17768cc13a5cfa0bcce8b113cee0f09', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, hAsync("slot", { key: '46930c740a32a78502df9e651f9bd5914d6a9fea', name: "date-target" }, dateText), mode === 'md' && hAsync("ion-ripple-effect", { key: '0602999cc8435dc37aa22da7f5531bc8cb71e1b4' }))), timeText && (hAsync("button", { key: 'ecdd21da5181ecbdce03209f9f6673b7dcbc1f78', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, hAsync("slot", { key: 'b5b093b5166d12d11e27360788edaac916d44390', name: "time-target" }, timeText), mode === 'md' && hAsync("ion-ripple-effect", { key: '70bb3a04f4748d13233eeb257503968dbd1161a9' })))));
12865
12870
  }
12866
12871
  get el() { return getElement(this); }
12867
12872
  static get style() { return {
@@ -12935,12 +12940,12 @@ class Fab {
12935
12940
  render() {
12936
12941
  const { horizontal, vertical, edge } = this;
12937
12942
  const mode = getIonMode$1(this);
12938
- return (hAsync(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
12943
+ return (hAsync(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
12939
12944
  [mode]: true,
12940
12945
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
12941
12946
  [`fab-vertical-${vertical}`]: vertical !== undefined,
12942
12947
  'fab-edge': edge,
12943
- } }, hAsync("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
12948
+ } }, hAsync("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
12944
12949
  }
12945
12950
  get el() { return getElement(this); }
12946
12951
  static get watchers() { return {
@@ -13030,7 +13035,7 @@ class FabButton {
13030
13035
  rel: this.rel,
13031
13036
  target: this.target,
13032
13037
  };
13033
- return (hAsync(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13038
+ return (hAsync(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13034
13039
  [mode]: true,
13035
13040
  'fab-button-in-list': inList,
13036
13041
  'fab-button-translucent-in-list': inList && translucent,
@@ -13041,7 +13046,7 @@ class FabButton {
13041
13046
  'ion-activatable': true,
13042
13047
  'ion-focusable': true,
13043
13048
  [`fab-button-${size}`]: size !== undefined,
13044
- }) }, hAsync(TagType, Object.assign({ key: '914561622c0c6bd41453e828a7d8a39f924875ac' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), hAsync("ion-icon", { key: '2c8090742a64c62a79243667027a195cca9d5912', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), hAsync("span", { key: 'c3e55291e4c4d306d34a4b95dd2e727e87bdf39c', class: "button-inner" }, hAsync("slot", { key: 'f8e57f71d8f8878d9746cfece82f57f19ef9e988' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'a5e94fa0bb9836072300617245ed0c1b4887bac6' }))));
13049
+ }) }, hAsync(TagType, Object.assign({ key: '83e853c8815f41543c848eb2e05ec2bb1716110a' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur, onClick: (ev) => openURL(href, ev, this.routerDirection, this.routerAnimation) }, inheritedAttributes), hAsync("ion-icon", { key: '798deede94de658e4345acf7c2aafe2ab2567b0b', "aria-hidden": "true", icon: this.closeIcon, part: "close-icon", class: "close-icon", lazy: false }), hAsync("span", { key: '99252fde6de1aca73fc240a6da7e29acac9acb18', class: "button-inner" }, hAsync("slot", { key: 'dc73e9b41bf1f0e385e5784f975dfb81e37c8dfb' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '8413e162f44a0350f54dff06cff7aad101de3549' }))));
13045
13050
  }
13046
13051
  get el() { return getElement(this); }
13047
13052
  static get style() { return {
@@ -13092,11 +13097,11 @@ class FabList {
13092
13097
  }
13093
13098
  render() {
13094
13099
  const mode = getIonMode$1(this);
13095
- return (hAsync(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
13100
+ return (hAsync(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
13096
13101
  [mode]: true,
13097
13102
  'fab-list-active': this.activated,
13098
13103
  [`fab-list-side-${this.side}`]: true,
13099
- } }, hAsync("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
13104
+ } }, hAsync("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
13100
13105
  }
13101
13106
  get el() { return getElement(this); }
13102
13107
  static get watchers() { return {
@@ -13548,7 +13553,7 @@ class Footer {
13548
13553
  const mode = getIonMode$1(this);
13549
13554
  const tabs = this.el.closest('ion-tabs');
13550
13555
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
13551
- return (hAsync(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
13556
+ return (hAsync(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
13552
13557
  [mode]: true,
13553
13558
  // Used internally for styling
13554
13559
  [`footer-${mode}`]: true,
@@ -13556,7 +13561,7 @@ class Footer {
13556
13561
  [`footer-translucent-${mode}`]: translucent,
13557
13562
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
13558
13563
  [`footer-collapse-${collapse}`]: collapse !== undefined,
13559
- } }, mode === 'ios' && translucent && hAsync("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), hAsync("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
13564
+ } }, mode === 'ios' && translucent && hAsync("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), hAsync("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
13560
13565
  }
13561
13566
  get el() { return getElement(this); }
13562
13567
  static get style() { return {
@@ -13587,10 +13592,10 @@ class Grid {
13587
13592
  }
13588
13593
  render() {
13589
13594
  const mode = getIonMode$1(this);
13590
- return (hAsync(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
13595
+ return (hAsync(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
13591
13596
  [mode]: true,
13592
13597
  'grid-fixed': this.fixed,
13593
- } }, hAsync("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
13598
+ } }, hAsync("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
13594
13599
  }
13595
13600
  static get style() { return IonGridStyle0; }
13596
13601
  static get cmpMeta() { return {
@@ -13921,14 +13926,14 @@ class Header {
13921
13926
  const collapse = this.collapse || 'none';
13922
13927
  // banner role must be at top level, so remove role if inside a menu
13923
13928
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
13924
- return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
13929
+ return (hAsync(Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
13925
13930
  [mode]: true,
13926
13931
  // Used internally for styling
13927
13932
  [`header-${mode}`]: true,
13928
13933
  [`header-translucent`]: this.translucent,
13929
13934
  [`header-collapse-${collapse}`]: true,
13930
13935
  [`header-translucent-${mode}`]: this.translucent,
13931
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
13936
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), hAsync("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
13932
13937
  }
13933
13938
  get el() { return getElement(this); }
13934
13939
  static get style() { return {
@@ -14207,7 +14212,7 @@ class Img {
14207
14212
  render() {
14208
14213
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
14209
14214
  const { draggable } = inheritedAttributes;
14210
- return (hAsync(Host, { key: 'da600442894427dee1974a28e545613afac69fca', class: getIonMode$1(this) }, hAsync("img", { key: '16df0c7069af86c0fa7ce5af598bc0f63b4eb71a', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
14215
+ return (hAsync(Host, { key: '14d24d65ec8e5522192ca58035264971b1ab883b', class: getIonMode$1(this) }, hAsync("img", { key: '345ba155a5fdce5e66c397a599b7333d37d9cb1d', decoding: "async", src: loadSrc, alt: alt, onLoad: onLoad, onError: loadError, part: "image", draggable: isDraggable(draggable) })));
14211
14216
  }
14212
14217
  get el() { return getElement(this); }
14213
14218
  static get watchers() { return {
@@ -14414,7 +14419,7 @@ class InfiniteScroll {
14414
14419
  render() {
14415
14420
  const mode = getIonMode$1(this);
14416
14421
  const disabled = this.disabled;
14417
- return (hAsync(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
14422
+ return (hAsync(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
14418
14423
  [mode]: true,
14419
14424
  'infinite-scroll-loading': this.isLoading,
14420
14425
  'infinite-scroll-enabled': !disabled,
@@ -14470,11 +14475,11 @@ class InfiniteScrollContent {
14470
14475
  }
14471
14476
  render() {
14472
14477
  const mode = getIonMode$1(this);
14473
- return (hAsync(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
14478
+ return (hAsync(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
14474
14479
  [mode]: true,
14475
14480
  // Used internally for styling
14476
14481
  [`infinite-scroll-content-${mode}`]: true,
14477
- } }, hAsync("div", { key: 'a94f4d8746e053dc718f97520bd7e48cb316443a', class: "infinite-loading" }, this.loadingSpinner && (hAsync("div", { key: '10143d5d2a50a2a2bc5de1cee8e7ab51263bcf23', class: "infinite-loading-spinner" }, hAsync("ion-spinner", { key: '8846e88191690d9c61a0b462889ed56fbfed8b0d', name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
14482
+ } }, hAsync("div", { key: '07d3cada920145f979ad315bd187fb878e0c3da3', class: "infinite-loading" }, this.loadingSpinner && (hAsync("div", { key: '6254f175d7543d09f3dd47cd0589a2809182cd8c', class: "infinite-loading-spinner" }, hAsync("ion-spinner", { key: 'a6a816d1c65b60b786333b209b63492aa716a283', name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
14478
14483
  }
14479
14484
  static get style() { return {
14480
14485
  ios: IonInfiniteScrollContentIosStyle0,
@@ -14898,6 +14903,7 @@ class Input {
14898
14903
  this.autocorrect = 'off';
14899
14904
  this.autofocus = false;
14900
14905
  this.clearInput = false;
14906
+ this.clearInputIcon = undefined;
14901
14907
  this.clearOnEdit = undefined;
14902
14908
  this.counter = false;
14903
14909
  this.counterFormatter = undefined;
@@ -15178,11 +15184,13 @@ class Input {
15178
15184
  return this.renderLabel();
15179
15185
  }
15180
15186
  render() {
15181
- const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus } = this;
15187
+ const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus, clearInputIcon } = this;
15182
15188
  const mode = getIonMode$1(this);
15183
15189
  const value = this.getValue();
15184
15190
  const inItem = hostContext('ion-item', this.el);
15185
15191
  const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
15192
+ const defaultClearIcon = mode === 'ios' ? closeCircle : closeSharp;
15193
+ const clearIconData = clearInputIcon !== null && clearInputIcon !== void 0 ? clearInputIcon : defaultClearIcon;
15186
15194
  const hasValue = this.hasValue();
15187
15195
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
15188
15196
  /**
@@ -15203,7 +15211,7 @@ class Input {
15203
15211
  * TODO(FW-5592): Remove hasStartEndSlots condition
15204
15212
  */
15205
15213
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
15206
- return (hAsync(Host, { key: 'b0697cdbb71e680d904c11445a9bd7c28567b0e4', class: createColorClasses$1(this.color, {
15214
+ return (hAsync(Host, { key: '907ce98a82b5cfae5a08504cd79e00a2330b7444', class: createColorClasses$1(this.color, {
15207
15215
  [mode]: true,
15208
15216
  'has-value': hasValue,
15209
15217
  'has-focus': hasFocus,
@@ -15214,7 +15222,7 @@ class Input {
15214
15222
  'in-item': inItem,
15215
15223
  'in-item-color': hostContext('ion-item.ion-color', this.el),
15216
15224
  'input-disabled': disabled,
15217
- }) }, hAsync("label", { key: 'eb9851f62c4aa62dd3b2ebe2e169182ea9fa12d8', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'e8cd537de25d25ed7fd3a6c3450643f0bfe10f82', class: "native-wrapper" }, hAsync("slot", { key: '00590a3d52896465102d0f9e75a9165f9a3f5936', name: "start" }), hAsync("input", Object.assign({ key: '26fd41169cbf5c5b7efc9989d6e9300c20db321a', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '4dc7c673179fa5c0f84a251ceed2599f8b7e9b8b', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
15225
+ }) }, hAsync("label", { key: '59d5bb45d2a5b828bba0ed8687a632a551e2f4d8', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'f93f129d08246d0e9a601c100d718534d6403853', class: "native-wrapper" }, hAsync("slot", { key: '54eeb1a6bace662b7eb0d7e27180ea3d7e3a3729', name: "start" }), hAsync("input", Object.assign({ key: 'b3e0be55bc1a4a539ae3b0fdcf7fc078723cca16', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '5f6373504a6d0d074bfbf875c794d45ea2748175', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
15218
15226
  /**
15219
15227
  * This prevents mobile browsers from
15220
15228
  * blurring the input when the clear
@@ -15229,7 +15237,7 @@ class Input {
15229
15237
  * for screen readers as it means users would be unable to swipe past the clear button.
15230
15238
  */
15231
15239
  ev.stopPropagation();
15232
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '22faa709020c08c3fbd44955c2cfa77c2117e47e', "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), hAsync("slot", { key: '6b2c0138fd1aa0e8f004e807d842856278960d8a', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '2db65ebfa53b4490490d3f1dc4a1a21875e239a2', class: "input-highlight" })), this.renderBottomContent()));
15240
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '230d77973aa83458ceb32bf52e3abe9bc322cfe6', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '9d69ac6e8a3c4b2b303dba2478f82695d5755ed2', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'ac61f16237ce731e0745ab72d0fc3f066252464a', class: "input-highlight" })), this.renderBottomContent()));
15233
15241
  }
15234
15242
  get el() { return getElement(this); }
15235
15243
  static get watchers() { return {
@@ -15251,6 +15259,7 @@ class Input {
15251
15259
  "autocorrect": [1],
15252
15260
  "autofocus": [4],
15253
15261
  "clearInput": [4, "clear-input"],
15262
+ "clearInputIcon": [1, "clear-input-icon"],
15254
15263
  "clearOnEdit": [4, "clear-on-edit"],
15255
15264
  "counter": [4],
15256
15265
  "counterFormatter": [16],
@@ -15350,16 +15359,16 @@ class InputPasswordToggle {
15350
15359
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
15351
15360
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
15352
15361
  const isPasswordVisible = type === 'text';
15353
- return (hAsync(Host, { key: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses$1(color, {
15362
+ return (hAsync(Host, { key: 'ed1c29726ce0c91548f0e2ada61e3f8b5c813d2d', class: createColorClasses$1(color, {
15354
15363
  [mode]: true,
15355
- }) }, hAsync("ion-button", { key: '1eaea1442b248fb2b8d61538b27274e647a07804', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": "show password", role: "switch", type: "button", onPointerDown: (ev) => {
15364
+ }) }, hAsync("ion-button", { key: '9698eccdaedb86cf12d20acc53660371b3af3c55', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": "show password", role: "switch", type: "button", onPointerDown: (ev) => {
15356
15365
  /**
15357
15366
  * This prevents mobile browsers from
15358
15367
  * blurring the input when the password toggle
15359
15368
  * button is activated.
15360
15369
  */
15361
15370
  ev.preventDefault();
15362
- }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '9c88de8f4631d9bde222ce2edf6950d639e04773', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15371
+ }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '1f2119c30b56c800d9af44e6499445a0ebb466cf', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15363
15372
  }
15364
15373
  get el() { return getElement(this); }
15365
15374
  static get watchers() { return {
@@ -15655,11 +15664,11 @@ class ItemDivider {
15655
15664
  }
15656
15665
  render() {
15657
15666
  const mode = getIonMode$1(this);
15658
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15667
+ return (hAsync(Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: createColorClasses$1(this.color, {
15659
15668
  [mode]: true,
15660
15669
  'item-divider-sticky': this.sticky,
15661
15670
  item: true,
15662
- }) }, hAsync("slot", { key: 'eb50dfab74ab0fd13697db17ecd60e8fa0bf1750', name: "start" }), hAsync("div", { key: '2806efd89d086f4fb844a479d9c095e1e0775713', class: "item-divider-inner" }, hAsync("div", { key: '77b7d5fa987e5f1c26d8023cd1f974a8a263a3de', class: "item-divider-wrapper" }, hAsync("slot", { key: 'dbafb0deb140a19a2a9748fd5b48760c39c6fd2e' })), hAsync("slot", { key: 'ef9a848fe21e84ef21cd273b8a4d9f95f558175b', name: "end" }))));
15671
+ }) }, hAsync("slot", { key: '6ce072dfc2adfa699a2c34ffe25ed221c74d9eea', name: "start" }), hAsync("div", { key: '9a441be204ee2f0b567432722407c75e3cbbe942', class: "item-divider-inner" }, hAsync("div", { key: 'fd6f2969b345dba51400a290473e594d2d019dc5', class: "item-divider-wrapper" }, hAsync("slot", { key: 'ebf5601b21c4cf199c01bf142865b8da0c1ba4a6' })), hAsync("slot", { key: '249af8f30113f2c986976d518126661f65531121', name: "end" }))));
15663
15672
  }
15664
15673
  get el() { return getElement(this); }
15665
15674
  static get style() { return {
@@ -15691,7 +15700,7 @@ class ItemGroup {
15691
15700
  }
15692
15701
  render() {
15693
15702
  const mode = getIonMode$1(this);
15694
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15703
+ return (hAsync(Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
15695
15704
  [mode]: true,
15696
15705
  // Used internally for styling
15697
15706
  [`item-group-${mode}`]: true,
@@ -15759,12 +15768,12 @@ class ItemOption {
15759
15768
  href: this.href,
15760
15769
  target: this.target,
15761
15770
  };
15762
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
15771
+ return (hAsync(Host, { key: '1900e015f593fefd710478a2088e052399c957eb', onClick: this.onClick, class: createColorClasses$1(this.color, {
15763
15772
  [mode]: true,
15764
15773
  'item-option-disabled': disabled,
15765
15774
  'item-option-expandable': expandable,
15766
15775
  'ion-activatable': true,
15767
- }) }, hAsync(TagType, Object.assign({ key: 'e4dfbb3048eed03a7f7e84c6f75545e0ca9b45fb' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: 'dffcf437fbdc15f2e7a19e60a015e90c73c8377d', class: "button-inner" }, hAsync("slot", { key: '48a23512e0601e062118d8b2c46c8bb96f25509f', name: "top" }), hAsync("div", { key: '952a9a9aa3a476aa1f4408d7e208bf9e916b8c30', class: "horizontal-wrapper" }, hAsync("slot", { key: 'f8d18a61c1ecec4a22a55443cf72bbc51383b64f', name: "start" }), hAsync("slot", { key: '1f9f219e6f879d2e0bf6d80cf0d3f518eb14ce0e', name: "icon-only" }), hAsync("slot", { key: 'a55adcdbe68131e5b1855c2dd45dd9454ab544fb' }), hAsync("slot", { key: '3c4c85a4fbb7efc797d8bc5adf6d238da022ff9f', name: "end" })), hAsync("slot", { key: '503c7e4b306745c523f57f24399ea06ba9b1e21d', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b0e270b0c4f3ff9f9b6d74bad12a9278d7633226' }))));
15776
+ }) }, hAsync(TagType, Object.assign({ key: '5db2bb9bc72b7b00c324e4189cd1b5f862680ebb' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: '6927e812ad001c5e7bd17f440d82c3830c58957b', class: "button-inner" }, hAsync("slot", { key: '0fde4333def94c55d1318868c2bc71e780d5876a', name: "top" }), hAsync("div", { key: '7ecc9ae8ddf66d7ed5d9f30becc9faf820e1c62e', class: "horizontal-wrapper" }, hAsync("slot", { key: 'a15567fd4bd91080e9fbb6bb0c9b0e67d8a67051', name: "start" }), hAsync("slot", { key: '7f86cdd28063e23f9d78997623333c5037c4f364', name: "icon-only" }), hAsync("slot", { key: '4abb69ce3ad6c4917dd87b7b1eb0fa1c69917d73' }), hAsync("slot", { key: '8b35a29f48722040465f182679ac17209937578d', name: "end" })), hAsync("slot", { key: 'fa15a00891b41d66a4ccb51575dec54b72d0059e', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0c071910c90fafca8026f59d78f4d9d5224d150a' }))));
15768
15777
  }
15769
15778
  get el() { return getElement(this); }
15770
15779
  static get style() { return {
@@ -15811,7 +15820,7 @@ class ItemOptions {
15811
15820
  render() {
15812
15821
  const mode = getIonMode$1(this);
15813
15822
  const isEnd = isEndSide(this.side);
15814
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
15823
+ return (hAsync(Host, { key: 'e28cd6a236323b5cc203c9b96782aa81024da924', class: {
15815
15824
  [mode]: true,
15816
15825
  // Used internally for styling
15817
15826
  [`item-options-${mode}`]: true,
@@ -16273,7 +16282,7 @@ class ItemSliding {
16273
16282
  }
16274
16283
  render() {
16275
16284
  const mode = getIonMode$1(this);
16276
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16285
+ return (hAsync(Host, { key: '99f87c8bd794ae69830b407ba55013ac44793c26', class: {
16277
16286
  [mode]: true,
16278
16287
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16279
16288
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16382,13 +16391,13 @@ class Label {
16382
16391
  render() {
16383
16392
  const position = this.position;
16384
16393
  const mode = getIonMode$1(this);
16385
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16394
+ return (hAsync(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses$1(this.color, {
16386
16395
  [mode]: true,
16387
16396
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16388
16397
  [`label-${position}`]: position !== undefined,
16389
16398
  [`label-no-animate`]: this.noAnimate,
16390
16399
  'label-rtl': document.dir === 'rtl',
16391
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16400
+ }) }, hAsync("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
16392
16401
  }
16393
16402
  get el() { return getElement(this); }
16394
16403
  static get watchers() { return {
@@ -16444,7 +16453,7 @@ class List {
16444
16453
  render() {
16445
16454
  const mode = getIonMode$1(this);
16446
16455
  const { lines, inset } = this;
16447
- return (hAsync(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
16456
+ return (hAsync(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
16448
16457
  [mode]: true,
16449
16458
  // Used internally for styling
16450
16459
  [`list-${mode}`]: true,
@@ -16490,10 +16499,10 @@ class ListHeader {
16490
16499
  render() {
16491
16500
  const { lines } = this;
16492
16501
  const mode = getIonMode$1(this);
16493
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16502
+ return (hAsync(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses$1(this.color, {
16494
16503
  [mode]: true,
16495
16504
  [`list-header-lines-${lines}`]: lines !== undefined,
16496
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16505
+ }) }, hAsync("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, hAsync("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
16497
16506
  }
16498
16507
  static get style() { return {
16499
16508
  ios: IonListHeaderIosStyle0,
@@ -16759,9 +16768,9 @@ class Loading {
16759
16768
  * Otherwise, don't set aria-labelledby.
16760
16769
  */
16761
16770
  const ariaLabelledBy = message !== undefined ? msgId : null;
16762
- return (hAsync(Host, Object.assign({ key: 'f48fc35c38f3c200f39a44f3e741c1676057248e', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16771
+ return (hAsync(Host, Object.assign({ key: '4610b316b10a4df3416d0e83062935f3079baff2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16763
16772
  zIndex: `${40000 + this.overlayIndex}`,
16764
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'e46058f693235c8ce5474df167595f6a80e4559d', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '2ecd77581a2f130616033b8a78fb9da9d508b588', tabindex: "0" }), hAsync("div", { key: '0243f93c41684f30c81623a8fbb533fd8f17b679', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '0643bc42b6e691580d29af27ea5a9fe395a6c5ce', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'f0417802dfbcad6ab9903b84bad692eedd326c88', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '3d3a256fe1074bda91cd09212460aa6460c4c723', tabindex: "0" })));
16773
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'd07d0759ed13093c4c4fe06be442dde4bd9c2c31', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'ed3ec8b48f049b592fbea9767cc3d448dc037938', tabindex: "0" }), hAsync("div", { key: 'c515f3badf149d83c1d67374ef3507415fe51422', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '265d1673c2deb751aeca285f5a18863bb629ca5e', class: "loading-spinner" }, hAsync("ion-spinner", { key: '155bf7c92f6d7afd8edbb39f2b47ad05b7d503f1', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'b0e21df5cf54f9b48a218a03543d8c86f5406522', tabindex: "0" })));
16765
16774
  }
16766
16775
  get el() { return getElement(this); }
16767
16776
  static get watchers() { return {
@@ -17742,14 +17751,14 @@ class Menu {
17742
17751
  * the ionBackButton listener in the menu controller
17743
17752
  * will handle closing the menu when Escape is pressed.
17744
17753
  */
17745
- return (hAsync(Host, { key: '68ea0bdf902c1f6369db93d69cacc0f30e1df32b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17754
+ return (hAsync(Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17746
17755
  [mode]: true,
17747
17756
  [`menu-type-${type}`]: true,
17748
17757
  'menu-enabled': !disabled,
17749
17758
  [`menu-side-${side}`]: true,
17750
17759
  'menu-pane-visible': isPaneVisible,
17751
17760
  'split-pane-side': hostContext('ion-split-pane', el),
17752
- } }, hAsync("div", { key: '7f32097faa4dcf64a568c7cf4b8397bbffc9f7a4', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '3d4fbc9142297708aa1b31eed875afe6ea79de04' })), hAsync("ion-backdrop", { key: 'f29f4615913da302212d54a43dce94ca5bfa86a5', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
17761
+ } }, hAsync("div", { key: '34b0e5840906862cf1bc27207e089004b0402c56', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '2cd7e61a8c0987ca4b3f1f8b33cba7152f1275fe' })), hAsync("ion-backdrop", { key: 'd190b1f9b66c76e276f27bfe074d3aab796180fb', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
17753
17762
  }
17754
17763
  get el() { return getElement(this); }
17755
17764
  static get watchers() { return {
@@ -17852,7 +17861,7 @@ class MenuButton {
17852
17861
  type: this.type,
17853
17862
  };
17854
17863
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
17855
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
17864
+ return (hAsync(Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
17856
17865
  [mode]: true,
17857
17866
  button: true, // ion-buttons target .button
17858
17867
  'menu-button-hidden': hidden,
@@ -17861,7 +17870,7 @@ class MenuButton {
17861
17870
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
17862
17871
  'ion-activatable': true,
17863
17872
  'ion-focusable': true,
17864
- }) }, hAsync("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, hAsync("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, hAsync("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
17873
+ }) }, hAsync("button", Object.assign({ key: '39f3ce20c400d2fac4890a042e8e44426709fca5' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '310978dc1cdef668de6720cde2a2304253679176', class: "button-inner" }, hAsync("slot", { key: '2a2b9de524c1fc3c526fe9559cb077b976852725' }, hAsync("ion-icon", { key: '9c22d7ea9fc3d76c32ec1c1b4b13d982c60b8c2d', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: 'c58c9e29c763070383472f65a9d322a684bcb564', type: "unbounded" }))));
17865
17874
  }
17866
17875
  get el() { return getElement(this); }
17867
17876
  static get style() { return {
@@ -17910,10 +17919,10 @@ class MenuToggle {
17910
17919
  render() {
17911
17920
  const mode = getIonMode$1(this);
17912
17921
  const hidden = this.autoHide && !this.visible;
17913
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
17922
+ return (hAsync(Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
17914
17923
  [mode]: true,
17915
17924
  'menu-toggle-hidden': hidden,
17916
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
17925
+ } }, hAsync("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
17917
17926
  }
17918
17927
  static get style() { return IonMenuToggleStyle0; }
17919
17928
  static get cmpMeta() { return {
@@ -17967,8 +17976,117 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
17967
17976
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
17968
17977
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
17969
17978
 
17979
+ /**
17980
+ * Moves focus to a specified element. Note that we do not remove the tabindex
17981
+ * because that can result in an unintentional blur. Non-focusables can't be
17982
+ * focused, so the body will get focused again.
17983
+ */
17984
+ const moveFocus = (el) => {
17985
+ el.tabIndex = -1;
17986
+ el.focus();
17987
+ };
17988
+ /**
17989
+ * Elements that are hidden using `display: none` should not be focused even if
17990
+ * they are present in the DOM.
17991
+ */
17992
+ const isVisible = (el) => {
17993
+ return el.offsetParent !== null;
17994
+ };
17995
+ /**
17996
+ * The focus controller allows us to manage focus within a view so assistive
17997
+ * technologies can inform users of changes to the navigation state. Traditional
17998
+ * native apps have a way of informing assistive technology about a navigation
17999
+ * state change. Mobile browsers have this too, but only when doing a full page
18000
+ * load. In a single page app we do not do that, so we need to build this
18001
+ * integration ourselves.
18002
+ */
18003
+ const createFocusController = () => {
18004
+ const saveViewFocus = (referenceEl) => {
18005
+ const focusManagerEnabled = config.get('focusManagerPriority', false);
18006
+ /**
18007
+ * When going back to a previously visited page focus should typically be moved
18008
+ * back to the element that was last focused when the user was on this view.
18009
+ */
18010
+ if (focusManagerEnabled) {
18011
+ const activeEl = document.activeElement;
18012
+ if (activeEl !== null && (referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.contains(activeEl))) {
18013
+ activeEl.setAttribute(LAST_FOCUS, 'true');
18014
+ }
18015
+ }
18016
+ };
18017
+ const setViewFocus = (referenceEl) => {
18018
+ const focusManagerPriorities = config.get('focusManagerPriority', false);
18019
+ /**
18020
+ * If the focused element is a descendant of the referenceEl then it's possible
18021
+ * that the app developer manually moved focus, so we do not want to override that.
18022
+ * This can happen with inputs the are focused when a view transitions in.
18023
+ */
18024
+ if (Array.isArray(focusManagerPriorities) && !referenceEl.contains(document.activeElement)) {
18025
+ /**
18026
+ * When going back to a previously visited view focus should always be moved back
18027
+ * to the element that the user was last focused on when they were on this view.
18028
+ */
18029
+ const lastFocus = referenceEl.querySelector(`[${LAST_FOCUS}]`);
18030
+ if (lastFocus && isVisible(lastFocus)) {
18031
+ moveFocus(lastFocus);
18032
+ return;
18033
+ }
18034
+ for (const priority of focusManagerPriorities) {
18035
+ /**
18036
+ * For each recognized case (excluding the default case) make sure to return
18037
+ * so that the fallback focus behavior does not run.
18038
+ *
18039
+ * We intentionally query for specific roles/semantic elements so that the
18040
+ * transition manager can work with both Ionic and non-Ionic UI components.
18041
+ *
18042
+ * If new selectors are added, be sure to remove the outline ring by adding
18043
+ * new selectors to rule in core.scss.
18044
+ */
18045
+ switch (priority) {
18046
+ case 'content':
18047
+ const content = referenceEl.querySelector('main, [role="main"]');
18048
+ if (content && isVisible(content)) {
18049
+ moveFocus(content);
18050
+ return;
18051
+ }
18052
+ break;
18053
+ case 'heading':
18054
+ const headingOne = referenceEl.querySelector('h1, [role="heading"][aria-level="1"]');
18055
+ if (headingOne && isVisible(headingOne)) {
18056
+ moveFocus(headingOne);
18057
+ return;
18058
+ }
18059
+ break;
18060
+ case 'banner':
18061
+ const header = referenceEl.querySelector('header, [role="banner"]');
18062
+ if (header && isVisible(header)) {
18063
+ moveFocus(header);
18064
+ return;
18065
+ }
18066
+ break;
18067
+ default:
18068
+ printIonWarning(`Unrecognized focus manager priority value ${priority}`);
18069
+ break;
18070
+ }
18071
+ }
18072
+ /**
18073
+ * If there is nothing to focus then focus the page so focus at least moves to
18074
+ * the correct view. The browser will then determine where within the page to
18075
+ * move focus to.
18076
+ */
18077
+ moveFocus(referenceEl);
18078
+ }
18079
+ };
18080
+ return {
18081
+ saveViewFocus,
18082
+ setViewFocus,
18083
+ };
18084
+ };
18085
+ const LAST_FOCUS = 'ion-last-focus';
18086
+
17970
18087
  const iosTransitionAnimation$1 = () => Promise.resolve().then(function () { return ios_transition; });
17971
18088
  const mdTransitionAnimation$1 = () => Promise.resolve().then(function () { return md_transition; });
18089
+ const focusController = createFocusController();
17972
18090
  // TODO(FW-2832): types
17973
18091
  const transition = (opts) => {
17974
18092
  return new Promise((resolve, reject) => {
@@ -17990,6 +18108,7 @@ const transition = (opts) => {
17990
18108
  const beforeTransition = (opts) => {
17991
18109
  const enteringEl = opts.enteringEl;
17992
18110
  const leavingEl = opts.leavingEl;
18111
+ focusController.saveViewFocus(leavingEl);
17993
18112
  setZIndex(enteringEl, leavingEl, opts.direction);
17994
18113
  if (opts.showGoBack) {
17995
18114
  enteringEl.classList.add('can-go-back');
@@ -18024,6 +18143,7 @@ const afterTransition = (opts) => {
18024
18143
  leavingEl.classList.remove('ion-page-invisible');
18025
18144
  leavingEl.style.removeProperty('pointer-events');
18026
18145
  }
18146
+ focusController.setViewFocus(enteringEl);
18027
18147
  };
18028
18148
  const getAnimationBuilder = async (opts) => {
18029
18149
  if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
@@ -18056,7 +18176,12 @@ const animation = async (animationBuilder, opts) => {
18056
18176
  const noAnimation = async (opts) => {
18057
18177
  const enteringEl = opts.enteringEl;
18058
18178
  const leavingEl = opts.leavingEl;
18059
- await waitForReady(opts, false);
18179
+ const focusManagerEnabled = config.get('focusManagerPriority', false);
18180
+ /**
18181
+ * If the focus manager is enabled then we need to wait for Ionic components to be
18182
+ * rendered otherwise the component to focus may not be focused because it is hidden.
18183
+ */
18184
+ await waitForReady(opts, focusManagerEnabled);
18060
18185
  fireWillEvents(enteringEl, leavingEl);
18061
18186
  fireDidEvents(enteringEl, leavingEl);
18062
18187
  return {
@@ -18949,7 +19074,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
18949
19074
  * as inputs should not be focusable outside
18950
19075
  * the sheet.
18951
19076
  */
18952
- baseEl.classList.remove('ion-disable-focus-trap');
19077
+ baseEl.classList.remove(FOCUS_TRAP_DISABLE_CLASS);
18953
19078
  };
18954
19079
  const disableBackdrop = () => {
18955
19080
  baseEl.style.setProperty('pointer-events', 'none');
@@ -18961,7 +19086,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
18961
19086
  * Adding this class disables focus trapping
18962
19087
  * for the sheet temporarily.
18963
19088
  */
18964
- baseEl.classList.add('ion-disable-focus-trap');
19089
+ baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
18965
19090
  };
18966
19091
  /**
18967
19092
  * After the entering animation completes,
@@ -19336,6 +19461,7 @@ class Modal {
19336
19461
  this.isOpen = false;
19337
19462
  this.trigger = undefined;
19338
19463
  this.keepContentsMounted = false;
19464
+ this.focusTrap = true;
19339
19465
  this.canDismiss = true;
19340
19466
  }
19341
19467
  onIsOpenChange(newValue, oldValue) {
@@ -19792,23 +19918,23 @@ class Modal {
19792
19918
  return true;
19793
19919
  }
19794
19920
  render() {
19795
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
19921
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
19796
19922
  const showHandle = handle !== false && isSheetModal;
19797
19923
  const mode = getIonMode$1(this);
19798
19924
  const isCardModal = presentingElement !== undefined && mode === 'ios';
19799
19925
  const isHandleCycle = handleBehavior === 'cycle';
19800
- return (hAsync(Host, Object.assign({ key: 'bb00efb8cbbdb2d1bbcc5e9c638586e2904882a8', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
19926
+ return (hAsync(Host, Object.assign({ key: 'fe6fd17cf857127f89d652b9aa3e9473d28c55db', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
19801
19927
  zIndex: `${20000 + this.overlayIndex}`,
19802
- }, 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 }), hAsync("ion-backdrop", { key: 'd2d50f736fdc34b933c00309fe0b67e4aff7ee63', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '5d3523a04da9350ae435a4f3247198095b71f206', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '09b3c4b629155f8c32f5c896cf689ffbe7004de8',
19928
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), hAsync("ion-backdrop", { key: '0f3a31363c2717e5483bc0412c25804897d4aff8', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '0e5ed59162ff08fe0a9f757e06bdacc75f65c0ed', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '35cdbe2238765e5f346ad7be64f7eefa8c78f0c0',
19803
19929
  /*
19804
19930
  role and aria-modal must be used on the
19805
19931
  same element. They must also be set inside the
19806
19932
  shadow DOM otherwise ion-button will not be highlighted
19807
19933
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
19808
19934
  */
19809
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'e47d90068927f3a518e4144e17f18ac326126712', class: "modal-handle",
19935
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '7a4031eaebf9a098f4c4220a5fe9d1c25cc0ec92', class: "modal-handle",
19810
19936
  // Prevents the handle from receiving keyboard focus when it does not cycle
19811
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '5733e94b3ecc4ed9bfb6aec5cd254cd0e43ee8f7' }))));
19937
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '534adc8e5bd850199fe2e9e16f0e7c19217d8486' }))));
19812
19938
  }
19813
19939
  get el() { return getElement(this); }
19814
19940
  static get watchers() { return {
@@ -19845,6 +19971,7 @@ class Modal {
19845
19971
  "isOpen": [4, "is-open"],
19846
19972
  "trigger": [1],
19847
19973
  "keepContentsMounted": [4, "keep-contents-mounted"],
19974
+ "focusTrap": [4, "focus-trap"],
19848
19975
  "canDismiss": [4, "can-dismiss"],
19849
19976
  "presented": [32],
19850
19977
  "present": [64],
@@ -20756,7 +20883,7 @@ class Nav {
20756
20883
  }
20757
20884
  }
20758
20885
  render() {
20759
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
20886
+ return hAsync("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
20760
20887
  }
20761
20888
  get el() { return getElement(this); }
20762
20889
  static get watchers() { return {
@@ -20829,7 +20956,7 @@ class NavLink {
20829
20956
  this.routerAnimation = undefined;
20830
20957
  }
20831
20958
  render() {
20832
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
20959
+ return hAsync(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
20833
20960
  }
20834
20961
  get el() { return getElement(this); }
20835
20962
  static get cmpMeta() { return {
@@ -20863,9 +20990,9 @@ class Note {
20863
20990
  }
20864
20991
  render() {
20865
20992
  const mode = getIonMode$1(this);
20866
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
20993
+ return (hAsync(Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: createColorClasses$1(this.color, {
20867
20994
  [mode]: true,
20868
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
20995
+ }) }, hAsync("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
20869
20996
  }
20870
20997
  static get style() { return {
20871
20998
  ios: IonNoteIosStyle0,
@@ -21362,7 +21489,7 @@ class Picker$1 {
21362
21489
  this.emitInputModeChange();
21363
21490
  }
21364
21491
  render() {
21365
- return (hAsync(Host, { key: 'f92214a09dc85b65873676f40fde2b802960e704', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { key: '6da37f75aca4ea1c9cb3bc733ebda2116279f313', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
21492
+ return (hAsync(Host, { key: '02b0687b1f80ba295a965dfba76dd59e2d1de5d3', onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { key: 'f83ed84bcf9e02539c00d8a4e63e6a0d7fc4ac71', "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", onKeyDown: (ev) => {
21366
21493
  var _a;
21367
21494
  /**
21368
21495
  * The "Enter" key represents
@@ -21377,7 +21504,7 @@ class Picker$1 {
21377
21504
  if (ev.key === 'Enter') {
21378
21505
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
21379
21506
  }
21380
- }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { key: '298e99d83dd3f5bf2798150bab0bb4024af472fa', class: "picker-before" }), hAsync("div", { key: 'ea578f04eb562a4dc6d6cc92de133dcb9fb7f42a', class: "picker-after" }), hAsync("div", { key: '84567824956dfe967992a629904836ba8b75b3ec', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", { key: 'df81f8fb90e1f649b608328034528f5c31c70c3b' })));
21507
+ }, ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { key: '45b07fb0617d8e006712776bf78302288edb3ff4', class: "picker-before" }), hAsync("div", { key: '73009229368e0d62b09c913aacade26f068a7aa9', class: "picker-after" }), hAsync("div", { key: 'b73da00e446cd1cfd511c39212e14a00d355752e', class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", { key: 'd969f5efc5ddb9eda6c4828702efd1ceeb69f767' })));
21381
21508
  }
21382
21509
  get el() { return getElement(this); }
21383
21510
  static get style() { return {
@@ -21627,11 +21754,11 @@ class Picker {
21627
21754
  render() {
21628
21755
  const { htmlAttributes } = this;
21629
21756
  const mode = getIonMode$1(this);
21630
- return (hAsync(Host, Object.assign({ key: 'cb1495acc8842c00e9f51ae792a01f769e36b0c6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21757
+ return (hAsync(Host, Object.assign({ key: '26e3144adcdf01605271d01e468bb4a75ce854b1', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21631
21758
  zIndex: `${20000 + this.overlayIndex}`,
21632
21759
  }, class: Object.assign({ [mode]: true,
21633
21760
  // Used internally for styling
21634
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'eecbcdfd474f5ab2f9962a030b1dcbf7714fe938', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '262e1d3bc916b30068f7be1edbc73283a815fc0f', tabindex: "0" }), hAsync("div", { key: 'a036cf789ab768428aae26a19dbd0c5cb696188c', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '6be7a8986976ead39611ce398ed6ad71f3b7427e', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '66a1d99aebf48219cab4177d06d893fe1d458a1f', class: "picker-columns" }, hAsync("div", { key: 'ed7fd940c5f54453587e13ab52cbfd4122a397c6', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '21c491c08bce126dde03196b21e28d903e157e1f', class: "picker-below-highlight" }))), hAsync("div", { key: 'bd892f74b886ae1bfd010d687a2b9741213b246c', tabindex: "0" })));
21761
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'fa212d21406606186cd95f8c7a4f119696ac8d4a', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '19ea889f65cb6a68a9db26cf9f83c6587cfcf07e', tabindex: "0" }), hAsync("div", { key: '5fc0f5d26915ba353b9f0335946f94b6fda95e1e', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '3fa5bff4ac0013ef31845482a27a14caebbdcd2f', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '2ff6376956d01dcd9ec01b8d6972dd4b37ffb1a1', class: "picker-columns" }, hAsync("div", { key: '4adcef77429f10a3faa50b41d1eaf3404387997c', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'e0f37d3e9896eb2bc0f0aef4762a897130851963', class: "picker-below-highlight" }))), hAsync("div", { key: '671bb7d0f487b0d7c7fa70388f8fa1de77448b9f', tabindex: "0" })));
21635
21762
  }
21636
21763
  get el() { return getElement(this); }
21637
21764
  static get watchers() { return {
@@ -21684,7 +21811,7 @@ const buttonClass$1 = (button) => {
21684
21811
  return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
21685
21812
  };
21686
21813
 
21687
- const pickerColumnCss = "/*!@:host*/.sc-ion-picker-column-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}/*!@.picker-opts*/.picker-opts.sc-ion-picker-column{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}/*!@.picker-item-empty*/.picker-item-empty.sc-ion-picker-column{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@.picker-opts::-webkit-scrollbar*/.picker-opts.sc-ion-picker-column::-webkit-scrollbar{display:none}/*!@::slotted(ion-picker-column-option)*/.sc-ion-picker-column-s>ion-picker-column-option{display:block;scroll-snap-align:center}/*!@.picker-item-empty,\n:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled)*/.picker-item-empty.sc-ion-picker-column,.sc-ion-picker-column-h:not([disabled]).sc-ion-picker-column-s>ion-picker-column-option.option-disabled,.sc-ion-picker-column-h:not([disabled]) .sc-ion-picker-column-s>ion-picker-column-option.option-disabled{scroll-snap-align:none}/*!@::slotted([slot=prefix]), ::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=prefix],.sc-ion-picker-column-s>[slot=suffix]{max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@::slotted([slot=prefix])*/.sc-ion-picker-column-s>[slot=prefix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}/*!@::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=suffix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}/*!@:host(.picker-column-disabled) .picker-opts*/.picker-column-disabled.sc-ion-picker-column-h .picker-opts.sc-ion-picker-column{overflow-y:hidden}/*!@:host(.picker-column-disabled) ::slotted(ion-picker-column-option)*/.sc-ion-picker-column-h.picker-column-disabled .sc-ion-picker-column-s>ion-picker-column-option{cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){/*!@:host(:focus) .picker-opts*/.sc-ion-picker-column-h:focus .picker-opts.sc-ion-picker-column{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
21814
+ const pickerColumnCss = "/*!@:host*/.sc-ion-picker-column-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}/*!@.assistive-focusable*/.assistive-focusable.sc-ion-picker-column{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}/*!@.assistive-focusable:focus*/.assistive-focusable.sc-ion-picker-column:focus{outline:none}/*!@.picker-opts*/.picker-opts.sc-ion-picker-column{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}/*!@.picker-item-empty*/.picker-item-empty.sc-ion-picker-column{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@.picker-opts::-webkit-scrollbar*/.picker-opts.sc-ion-picker-column::-webkit-scrollbar{display:none}/*!@::slotted(ion-picker-column-option)*/.sc-ion-picker-column-s>ion-picker-column-option{display:block;scroll-snap-align:center}/*!@.picker-item-empty,\n:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled)*/.picker-item-empty.sc-ion-picker-column,.sc-ion-picker-column-h:not([disabled]).sc-ion-picker-column-s>ion-picker-column-option.option-disabled,.sc-ion-picker-column-h:not([disabled]) .sc-ion-picker-column-s>ion-picker-column-option.option-disabled{scroll-snap-align:none}/*!@::slotted([slot=prefix]), ::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=prefix],.sc-ion-picker-column-s>[slot=suffix]{max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@::slotted([slot=prefix])*/.sc-ion-picker-column-s>[slot=prefix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}/*!@::slotted([slot=suffix])*/.sc-ion-picker-column-s>[slot=suffix]{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}/*!@:host(.picker-column-disabled) .picker-opts*/.picker-column-disabled.sc-ion-picker-column-h .picker-opts.sc-ion-picker-column{overflow-y:hidden}/*!@:host(.picker-column-disabled) ::slotted(ion-picker-column-option)*/.sc-ion-picker-column-h.picker-column-disabled .sc-ion-picker-column-s>ion-picker-column-option{cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){/*!@:host(:focus) .picker-opts*/.sc-ion-picker-column-h:focus .picker-opts.sc-ion-picker-column{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
21688
21815
  var IonPickerColumnStyle0 = pickerColumnCss;
21689
21816
 
21690
21817
  /**
@@ -21700,6 +21827,7 @@ class PickerColumn {
21700
21827
  this.isScrolling = false;
21701
21828
  this.isColumnVisible = false;
21702
21829
  this.canExitInputMode = true;
21830
+ this.updateValueTextOnScroll = false;
21703
21831
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
21704
21832
  const { isColumnVisible, scrollEl } = this;
21705
21833
  if (isColumnVisible && scrollEl) {
@@ -21714,6 +21842,7 @@ class PickerColumn {
21714
21842
  * of these can cause a scroll to occur.
21715
21843
  */
21716
21844
  this.canExitInputMode = canExitInputMode;
21845
+ this.updateValueTextOnScroll = false;
21717
21846
  scrollEl.scroll({
21718
21847
  top,
21719
21848
  left: 0,
@@ -21786,6 +21915,7 @@ class PickerColumn {
21786
21915
  let activeEl = this.activeItem;
21787
21916
  const scrollCallback = () => {
21788
21917
  raf(() => {
21918
+ var _a;
21789
21919
  if (!scrollEl)
21790
21920
  return;
21791
21921
  if (timeout) {
@@ -21866,8 +21996,23 @@ class PickerColumn {
21866
21996
  }
21867
21997
  activeEl = newActiveElement;
21868
21998
  this.setPickerItemActiveState(newActiveElement, true);
21999
+ /**
22000
+ * Set the aria-valuetext even though the value prop has not been updated yet.
22001
+ * This enables some screen readers to announce the value as the users drag
22002
+ * as opposed to when their release their pointer from the screen.
22003
+ *
22004
+ * When the value is programmatically updated, we will smoothly scroll
22005
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
22006
+ * as that can cause the old value to be briefly set before being set to the
22007
+ * correct option. This will cause some screen readers to announce the old value
22008
+ * again before announcing the new value. The correct valuetext will be set on render.
22009
+ */
22010
+ if (this.updateValueTextOnScroll) {
22011
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
22012
+ }
21869
22013
  timeout = setTimeout(() => {
21870
22014
  this.isScrolling = false;
22015
+ this.updateValueTextOnScroll = true;
21871
22016
  enableHaptics && hapticSelectionEnd();
21872
22017
  /**
21873
22018
  * Certain tasks (such as those that
@@ -21926,12 +22071,139 @@ class PickerColumn {
21926
22071
  */
21927
22072
  this.el.classList.remove('picker-column-active');
21928
22073
  };
22074
+ /**
22075
+ * Find the next enabled option after the active option.
22076
+ * @param stride - How many options to "jump" over in order to select the next option.
22077
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
22078
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
22079
+ * the enabled option 5 options after the active one. Note that the actual option selected
22080
+ * may be past the stride if the option at the stride is disabled.
22081
+ */
22082
+ this.findNextOption = (stride = 1) => {
22083
+ const { activeItem } = this;
22084
+ if (!activeItem)
22085
+ return null;
22086
+ let prevNode = activeItem;
22087
+ let node = activeItem.nextElementSibling;
22088
+ while (node != null) {
22089
+ if (stride > 0) {
22090
+ stride--;
22091
+ }
22092
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
22093
+ return node;
22094
+ }
22095
+ prevNode = node;
22096
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
22097
+ node = node.nextElementSibling;
22098
+ }
22099
+ return prevNode;
22100
+ };
22101
+ /**
22102
+ * Find the next enabled option after the active option.
22103
+ * @param stride - How many options to "jump" over in order to select the next option.
22104
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
22105
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
22106
+ * the enabled option 5 options before the active one. Note that the actual option selected
22107
+ * may be past the stride if the option at the stride is disabled.
22108
+ */
22109
+ this.findPreviousOption = (stride = 1) => {
22110
+ const { activeItem } = this;
22111
+ if (!activeItem)
22112
+ return null;
22113
+ let nextNode = activeItem;
22114
+ let node = activeItem.previousElementSibling;
22115
+ while (node != null) {
22116
+ if (stride > 0) {
22117
+ stride--;
22118
+ }
22119
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
22120
+ return node;
22121
+ }
22122
+ nextNode = node;
22123
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
22124
+ node = node.previousElementSibling;
22125
+ }
22126
+ return nextNode;
22127
+ };
22128
+ this.onKeyDown = (ev) => {
22129
+ /**
22130
+ * The below operations should be inverted when running on a mobile device.
22131
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
22132
+ * this should cause the previous option to be selected. On mobile, swiping
22133
+ * up causes a view to scroll down. As a result, swiping up on mobile should
22134
+ * cause the next option to be selected. The Home/End operations remain
22135
+ * unchanged because those always represent the first/last options, respectively.
22136
+ */
22137
+ const mobile = isPlatform('mobile');
22138
+ let newOption = null;
22139
+ switch (ev.key) {
22140
+ case 'ArrowDown':
22141
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
22142
+ break;
22143
+ case 'ArrowUp':
22144
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
22145
+ break;
22146
+ case 'PageUp':
22147
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
22148
+ break;
22149
+ case 'PageDown':
22150
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
22151
+ break;
22152
+ case 'Home':
22153
+ /**
22154
+ * There is no guarantee that the first child will be an ion-picker-column-option,
22155
+ * so we do not use firstElementChild.
22156
+ */
22157
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
22158
+ break;
22159
+ case 'End':
22160
+ /**
22161
+ * There is no guarantee that the last child will be an ion-picker-column-option,
22162
+ * so we do not use lastElementChild.
22163
+ */
22164
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
22165
+ break;
22166
+ }
22167
+ if (newOption !== null) {
22168
+ this.value = newOption.value;
22169
+ // This stops any default browser behavior such as scrolling
22170
+ ev.preventDefault();
22171
+ }
22172
+ };
22173
+ /**
22174
+ * Utility to generate the correct text for aria-valuetext.
22175
+ */
22176
+ this.getOptionValueText = (el) => {
22177
+ var _a;
22178
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
22179
+ };
22180
+ /**
22181
+ * Render an element that overlays the column. This element is for assistive
22182
+ * tech to allow users to navigate the column up/down. This element should receive
22183
+ * focus as it listens for synthesized keyboard events as required by the
22184
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
22185
+ */
22186
+ this.renderAssistiveFocusable = () => {
22187
+ const { activeItem } = this;
22188
+ const valueText = this.getOptionValueText(activeItem);
22189
+ /**
22190
+ * When using the picker, the valuetext provides important context that valuenow
22191
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
22192
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
22193
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
22194
+ */
22195
+ return (hAsync("div", { ref: (el) => (this.assistiveFocusable = el), class: "assistive-focusable", role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": valueText, "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }));
22196
+ };
22197
+ this.ariaLabel = null;
21929
22198
  this.isActive = false;
21930
22199
  this.disabled = false;
21931
22200
  this.value = undefined;
21932
22201
  this.color = 'primary';
21933
22202
  this.numericInput = false;
21934
22203
  }
22204
+ ariaLabelChanged(newValue) {
22205
+ this.ariaLabel = newValue;
22206
+ }
21935
22207
  valueChange() {
21936
22208
  if (this.isColumnVisible) {
21937
22209
  /**
@@ -22047,6 +22319,10 @@ class PickerColumn {
22047
22319
  this.scrollEl.focus();
22048
22320
  }
22049
22321
  }
22322
+ connectedCallback() {
22323
+ var _a;
22324
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
22325
+ }
22050
22326
  get activeItem() {
22051
22327
  const { value } = this;
22052
22328
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -22064,17 +22340,18 @@ class PickerColumn {
22064
22340
  render() {
22065
22341
  const { color, disabled, isActive, numericInput } = this;
22066
22342
  const mode = getIonMode$1(this);
22067
- return (hAsync(Host, { key: '54d3ea9f92136ac446a6c0a2b1389d93c5ff31ee', class: createColorClasses$1(color, {
22343
+ return (hAsync(Host, { key: 'ced35afc6326a20dbac68193921a807a9c10bb99', class: createColorClasses$1(color, {
22068
22344
  [mode]: true,
22069
22345
  ['picker-column-active']: isActive,
22070
22346
  ['picker-column-numeric-input']: numericInput,
22071
22347
  ['picker-column-disabled']: disabled,
22072
- }) }, hAsync("slot", { key: '969279123f09d37a28aa726936c9f484b0de33e4', name: "prefix" }), hAsync("div", { key: 'd4d09a561213c408cf1c42a28cdef37f14367724', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
22348
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '41e290dcc44dacb4237eb674ce2dedc7db66eb7d', name: "prefix" }), hAsync("div", { key: '1fd869b063900103deadefc40929a1e8f02ec084', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22073
22349
  this.scrollEl = el;
22074
- } }, hAsync("div", { key: '3710d8980682c819be33eeb6611a5c707b0e6a29', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '65b7d8d523db669a2df107ae7aaacf62daf13232', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '694657e475edcdbc93561e826e0db016738f119d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'ecbbd8db6ffdd8d8506a16d94f001d434f4daf97' }), hAsync("div", { key: 'e19a7f7e5e4aeb7d52339e962314d68c31c6337b', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '103e6a5863efc526de3ea35c63230cc37e487594', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'c9e2313ae630ec0b39cbc92d5261fc194dc22a5f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '1537926d9ed8d4251ded95dcb249197491fc2616', name: "suffix" })));
22350
+ } }, hAsync("div", { key: '0d2087f775b240c9b2534650eb27f3d99e7690a9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '1245b2bb2b6314c3ec4e0ab3ece4e42beb360fc9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '503b08f6bbe27fa7d34c165a93ec38ce7f1ad590', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'ec401a2b2d56546fb3f10239b71320ce7dc6a77d' }), hAsync("div", { key: '97a234018291c5a6ca7a56bb1a9a417cac0b3e6f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '0197711f71486a8fa3c184b593cebe1c1e54c585', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '961304f0a2a10afb3502ce4c5fbdceef0aa933cf', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'f38b83d26c3c2ba8ef00da7caf7f0be518b2007d', name: "suffix" })));
22075
22351
  }
22076
22352
  get el() { return getElement(this); }
22077
22353
  static get watchers() { return {
22354
+ "aria-label": ["ariaLabelChanged"],
22078
22355
  "value": ["valueChange"]
22079
22356
  }; }
22080
22357
  static get style() { return IonPickerColumnStyle0; }
@@ -22086,6 +22363,7 @@ class PickerColumn {
22086
22363
  "value": [1032],
22087
22364
  "color": [513],
22088
22365
  "numericInput": [4, "numeric-input"],
22366
+ "ariaLabel": [32],
22089
22367
  "isActive": [32],
22090
22368
  "scrollActiveItemIntoView": [64],
22091
22369
  "setValue": [64],
@@ -22436,9 +22714,9 @@ class PickerColumnCmp {
22436
22714
  render() {
22437
22715
  const col = this.col;
22438
22716
  const mode = getIonMode$1(this);
22439
- return (hAsync(Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', 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: {
22717
+ return (hAsync(Host, { key: '56289a294e5c580f3e7fe5fc12777aa7f80ad19b', 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: {
22440
22718
  'max-width': this.col.columnWidth,
22441
- } }, col.prefix && (hAsync("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
22719
+ } }, col.prefix && (hAsync("div", { key: 'd21f44667b5df567d6879723fe643ea7c2c60bef', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: 'bb427e5f24fd832703926e0e847ad05567597262', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '0413f7c074b6534b8967387ecb9957a79a267aff', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
22442
22720
  }
22443
22721
  get el() { return getElement(this); }
22444
22722
  static get watchers() { return {
@@ -22542,10 +22820,10 @@ class PickerColumnOption {
22542
22820
  render() {
22543
22821
  const { color, disabled, ariaLabel } = this;
22544
22822
  const mode = getIonMode$1(this);
22545
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
22823
+ return (hAsync(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses$1(color, {
22546
22824
  [mode]: true,
22547
22825
  ['option-disabled']: disabled,
22548
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
22826
+ }) }, hAsync("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
22549
22827
  }
22550
22828
  get el() { return getElement(this); }
22551
22829
  static get watchers() { return {
@@ -23628,6 +23906,7 @@ class Popover {
23628
23906
  this.arrow = true;
23629
23907
  this.isOpen = false;
23630
23908
  this.keyboardEvents = false;
23909
+ this.focusTrap = true;
23631
23910
  this.keepContentsMounted = false;
23632
23911
  }
23633
23912
  onTriggerChange() {
@@ -23854,12 +24133,12 @@ class Popover {
23854
24133
  }
23855
24134
  render() {
23856
24135
  const mode = getIonMode$1(this);
23857
- const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
24136
+ const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
23858
24137
  const desktop = isPlatform('desktop');
23859
24138
  const enableArrow = arrow && !parentPopover;
23860
- return (hAsync(Host, Object.assign({ key: '4bccccf57df72e1196c6a28e803831c0520aef53', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24139
+ return (hAsync(Host, Object.assign({ key: '17e5e8b3e7ba5e251665fb9d0ade10c781f82f0e', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
23861
24140
  zIndex: `${20000 + this.overlayIndex}`,
23862
- }, 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 && hAsync("ion-backdrop", { key: 'e42f4f61150b7b41093d37d187d1b7bb4187a00e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '386ac3247b0f82566aae07b6dbf5e97d243ce367', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '28f0e5ea2fa099b808ffb77a9a0d78b8b46c1513', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '7ba2e3dee529015c4e07ce78ec10dc59985ec6a2', class: "popover-content", part: "content" }, hAsync("slot", { key: '915cdc8e389fda210f83aec8b7bbbfa6f830a884' })))));
24141
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: 'c12fb94b375d7e88a0c5d715440c0f66ad7ee817', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '478b388cc9a5a382003a2863e968e77a174914ab', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: 'f1c63a0079f197a8d4577e7c00a654871fb9d816', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '08b62a321c09ad4b0f90460468ecbc1d56320bf1', class: "popover-content", part: "content" }, hAsync("slot", { key: '55645ff597f64d434219caa28015cf2a4ceb0ee5' })))));
23863
24142
  }
23864
24143
  get el() { return getElement(this); }
23865
24144
  static get watchers() { return {
@@ -23900,6 +24179,7 @@ class Popover {
23900
24179
  "arrow": [4],
23901
24180
  "isOpen": [4, "is-open"],
23902
24181
  "keyboardEvents": [4, "keyboard-events"],
24182
+ "focusTrap": [4, "focus-trap"],
23903
24183
  "keepContentsMounted": [4, "keep-contents-mounted"],
23904
24184
  "presented": [32],
23905
24185
  "presentFromTrigger": [64],
@@ -23950,7 +24230,7 @@ class ProgressBar {
23950
24230
  const mode = getIonMode$1(this);
23951
24231
  // If the progress is displayed as a solid bar.
23952
24232
  const progressSolid = buffer === 1;
23953
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24233
+ return (hAsync(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
23954
24234
  [mode]: true,
23955
24235
  [`progress-bar-${type}`]: true,
23956
24236
  'progress-paused': paused,
@@ -24107,7 +24387,7 @@ class Radio {
24107
24387
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24108
24388
  const mode = getIonMode$1(this);
24109
24389
  const inItem = hostContext('ion-item', el);
24110
- return (hAsync(Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24390
+ return (hAsync(Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24111
24391
  [mode]: true,
24112
24392
  'in-item': inItem,
24113
24393
  'radio-checked': checked,
@@ -24118,10 +24398,10 @@ class Radio {
24118
24398
  // Focus and active styling should not apply when the radio is in an item
24119
24399
  'ion-activatable': !inItem,
24120
24400
  'ion-focusable': !inItem,
24121
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '05613f89400469692442bf3c02c27f9299c5d6ef', class: "radio-wrapper" }, hAsync("div", { key: '89b5d7668c3856f417c318629086cf46a072efbe', class: {
24401
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '48a99aa80a7d7b4085ef26faf3167903c975517c', class: "radio-wrapper" }, hAsync("div", { key: 'a8d74e0603b41215ea3e867356a9be0dcf3722d8', class: {
24122
24402
  'label-text-wrapper': true,
24123
24403
  'label-text-wrapper-hidden': !hasLabel,
24124
- }, part: "label" }, hAsync("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), hAsync("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
24404
+ }, part: "label" }, hAsync("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), hAsync("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
24125
24405
  }
24126
24406
  get el() { return getElement(this); }
24127
24407
  static get watchers() { return {
@@ -24306,7 +24586,7 @@ class RadioGroup {
24306
24586
  const { label, labelId, el, name, value } = this;
24307
24587
  const mode = getIonMode$1(this);
24308
24588
  renderHiddenInput(true, el, name, value, false);
24309
- return hAsync(Host, { key: '672d1df4a5d2fd22415e8772b054313907aba8f6', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24589
+ return hAsync(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24310
24590
  }
24311
24591
  get el() { return getElement(this); }
24312
24592
  static get watchers() { return {
@@ -24935,7 +25215,7 @@ class Range {
24935
25215
  const needsEndAdjustment = inItem && !hasEndContent;
24936
25216
  const mode = getIonMode$1(this);
24937
25217
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
24938
- return (hAsync(Host, { key: 'f66f03965290003b8a2b74b6f16ebf5615291688', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25218
+ return (hAsync(Host, { key: '7ad5ca892fd46c64ce5583e91e6812410a869921', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
24939
25219
  [mode]: true,
24940
25220
  'in-item': inItem,
24941
25221
  'range-disabled': disabled,
@@ -24944,10 +25224,10 @@ class Range {
24944
25224
  [`range-label-placement-${labelPlacement}`]: true,
24945
25225
  'range-item-start-adjustment': needsStartAdjustment,
24946
25226
  'range-item-end-adjustment': needsEndAdjustment,
24947
- }) }, hAsync("label", { key: '4b0035999693e241afb753f4c335ec386a2f5a2b', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'f03119f14a4c6bb2f6c529e885002df633cd1797', class: {
25227
+ }) }, hAsync("label", { key: 'eb8d46a9572341b4cc3c91d8a5de0667bd166ca4', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '21acd6ff6eba17bf6923bf723fea055b95fd29ca', class: {
24948
25228
  'label-text-wrapper': true,
24949
25229
  'label-text-wrapper-hidden': !hasLabel,
24950
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '72678b1d17ac2a6dfeee26d40a6a80bcc0e7e2fe', class: "native-wrapper" }, hAsync("slot", { key: 'c555ac9598427b81fddd5415ea673479c2247977', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'bf58ccc934a246b303c766d16df5eeb62c225b12', name: "end" })))));
25230
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '7644c86a6ad3edf2c27f02dd2a14795b3720ea0d', class: "native-wrapper" }, hAsync("slot", { key: '1bbeccee57addc126b36de395e28ba655248695b', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '2963dd84e4116fc3956c304eb53deefd0d1291df', name: "end" })))));
24951
25231
  }
24952
25232
  get el() { return getElement(this); }
24953
25233
  static get watchers() { return {
@@ -25821,7 +26101,7 @@ class Refresher {
25821
26101
  }
25822
26102
  render() {
25823
26103
  const mode = getIonMode$1(this);
25824
- return (hAsync(Host, { key: 'e7f4f2f96de7e80430bf54967ebc12e7216b2ca9', slot: "fixed", class: {
26104
+ return (hAsync(Host, { key: '1696f66f62d18c9075294f17cb24263325fcf35d', slot: "fixed", class: {
25825
26105
  [mode]: true,
25826
26106
  // Used internally for styling
25827
26107
  [`refresher-${mode}`]: true,
@@ -26049,7 +26329,7 @@ class RefresherContent {
26049
26329
  const pullingIcon = this.pullingIcon;
26050
26330
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26051
26331
  const mode = getIonMode$1(this);
26052
- return (hAsync(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, hAsync("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, hAsync("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, hAsync("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26332
+ return (hAsync(Host, { key: '1bec5b4da221c69d856f3f5ddf40f2e03ebf2a4c', class: mode }, hAsync("div", { key: '4fcc526c4f1881e9368d9cd16bd7030919bd3841', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'a4e9e2e12c2d7faefc8303ec8c021f999ddf308e', class: "refresher-pulling-icon" }, hAsync("div", { key: '5a2d215feb7fb4b64d540d3a65c0f24b415a2433', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: 'abef2621d671ac6ff0abac43a702cbd825b7f127', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '30087d672c3780672a05874cd93cd099b2855462', class: "arrow-container" }, hAsync("ion-icon", { key: '5e30333dee469aec0d8efc8c4e6dabb619c6f363', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: '48fe72b5ce8ded633c6ee799cebb520b9c8be528', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'd8dfd5d42056b1c0a436c5006affb255407816c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'c2cbfb94f157c82601ffe7bb815ff82ebc7c0a49', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: '17f3ebe6a31768d5e389f45a2c12f68600185db9', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: 'e8e61f8d7189c9939bba184201c9509d1d5b0fad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26053
26333
  }
26054
26334
  get el() { return getElement(this); }
26055
26335
  static get cmpMeta() { return {
@@ -26092,7 +26372,7 @@ class Reorder {
26092
26372
  render() {
26093
26373
  const mode = getIonMode$1(this);
26094
26374
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26095
- return (hAsync(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, hAsync("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, hAsync("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26375
+ return (hAsync(Host, { key: '663d74e231e3af56b6298ee2539fdac9c8465839', class: mode }, hAsync("slot", { key: 'c7c384ab8c9ca8abdc89cd984a39dfde70e342ca' }, hAsync("ion-icon", { key: 'c8b6052db03d4b9e33a90e600c20861c73ee73ce', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26096
26376
  }
26097
26377
  get el() { return getElement(this); }
26098
26378
  static get style() { return {
@@ -26346,7 +26626,7 @@ class ReorderGroup {
26346
26626
  }
26347
26627
  render() {
26348
26628
  const mode = getIonMode$1(this);
26349
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
26629
+ return (hAsync(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
26350
26630
  [mode]: true,
26351
26631
  'reorder-enabled': !this.disabled,
26352
26632
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -26454,7 +26734,7 @@ class RippleEffect {
26454
26734
  }
26455
26735
  render() {
26456
26736
  const mode = getIonMode$1(this);
26457
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
26737
+ return (hAsync(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
26458
26738
  [mode]: true,
26459
26739
  unbounded: this.unbounded,
26460
26740
  } }));
@@ -27396,10 +27676,10 @@ class RouterLink {
27396
27676
  rel: this.rel,
27397
27677
  target: this.target,
27398
27678
  };
27399
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
27679
+ return (hAsync(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses$1(this.color, {
27400
27680
  [mode]: true,
27401
27681
  'ion-activatable': true,
27402
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
27682
+ }) }, hAsync("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), hAsync("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
27403
27683
  }
27404
27684
  static get style() { return IonRouterLinkStyle0; }
27405
27685
  static get cmpMeta() { return {
@@ -27594,7 +27874,7 @@ class RouterOutlet {
27594
27874
  return true;
27595
27875
  }
27596
27876
  render() {
27597
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
27877
+ return hAsync("slot", { key: '8279a453c66a766e6e383ff59842b4ae070c13a9' });
27598
27878
  }
27599
27879
  get el() { return getElement(this); }
27600
27880
  static get watchers() { return {
@@ -27628,7 +27908,7 @@ class Row {
27628
27908
  registerInstance(this, hostRef);
27629
27909
  }
27630
27910
  render() {
27631
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
27911
+ return (hAsync(Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: getIonMode$1(this) }, hAsync("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
27632
27912
  }
27633
27913
  static get style() { return IonRowStyle0; }
27634
27914
  static get cmpMeta() { return {
@@ -28022,8 +28302,8 @@ class Searchbar {
28022
28302
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28023
28303
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28024
28304
  const shouldShowCancelButton = this.shouldShowCancelButton();
28025
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '2e53057ad0dcb8ea930fe4a4a03f08af5163d31e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: '10b06fdbb3ae51bf02bd094205d075e1f9b60ea3', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28026
- return (hAsync(Host, { key: 'f1a07f9e2f27f5297581e66c80097cf7843c1a5a', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28305
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '8f3323145edfde317f2762e470f3ab2e27452b69', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: 'a3ae5d8a6fe3a96b5aa7142f7a246876fdbe3ef3', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28306
+ return (hAsync(Host, { key: '543593e248261418ea75580e5fbed1c613e57d00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28027
28307
  [mode]: true,
28028
28308
  'searchbar-animated': animated,
28029
28309
  'searchbar-disabled': this.disabled,
@@ -28033,14 +28313,14 @@ class Searchbar {
28033
28313
  'searchbar-has-focus': this.focused,
28034
28314
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28035
28315
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28036
- }) }, hAsync("div", { key: '9b7dc9abf5b1925872c75f6c992aac465700b615', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: 'd0e11e98bfb8b9e9225de80c8f132f68c3466f13', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: 'd475776f64b55d13d49f8193f3b84a4e669403c7', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '9b5b681edfac608ed1c20175086ec40c652a7f07', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28316
+ }) }, hAsync("div", { key: '01351daea61933fedd1bd6289376183962096479', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: 'fae92d93e9c16c4b48116da9aa6b3e827d0f830a', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '4d20d2db6ce72e82f86fa140ebd2ad3b6bbf4bd6', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '40102559fa7864a7545466cf1abc40131b5ace6c', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28037
28317
  /**
28038
28318
  * This prevents mobile browsers from
28039
28319
  * blurring the input when the clear
28040
28320
  * button is activated.
28041
28321
  */
28042
28322
  ev.preventDefault();
28043
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '44c85c0d3a1346c5e9306a65f6a7cf0fcdc1f149', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28323
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '42eb950e72357bba1a1fe2dacfa982412c9d64db', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28044
28324
  }
28045
28325
  get el() { return getElement(this); }
28046
28326
  static get watchers() { return {
@@ -28130,6 +28410,14 @@ class Segment {
28130
28410
  }
28131
28411
  }
28132
28412
  };
28413
+ this.onSlottedItemsChange = () => {
28414
+ /**
28415
+ * When the slotted segment buttons change we need to
28416
+ * ensure that the new segment buttons are checked if
28417
+ * the value matches the segment button value.
28418
+ */
28419
+ this.valueChanged(this.value);
28420
+ };
28133
28421
  this.getSegmentButton = (selector) => {
28134
28422
  var _a, _b;
28135
28423
  const buttons = this.getButtons().filter((button) => !button.disabled);
@@ -28197,13 +28485,6 @@ class Segment {
28197
28485
  }
28198
28486
  async componentDidLoad() {
28199
28487
  this.setCheckedClasses();
28200
- /**
28201
- * If the value changes before watchers
28202
- * are setup, then the ionSelect watch callback
28203
- * will not fire. As a result, we manually
28204
- * fire this event when Select is loaded.
28205
- */
28206
- this.ionSelect.emit({ value: this.value });
28207
28488
  /**
28208
28489
  * We need to wait for the buttons to all be rendered
28209
28490
  * before we can scroll.
@@ -28514,14 +28795,14 @@ class Segment {
28514
28795
  }
28515
28796
  render() {
28516
28797
  const mode = getIonMode$1(this);
28517
- return (hAsync(Host, { key: '107be9ad856d855db449d24cd75f9fb82746e9aa', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
28798
+ return (hAsync(Host, { key: 'ad0946134c8d465b760ad792655f1cb9922db520', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
28518
28799
  [mode]: true,
28519
28800
  'in-toolbar': hostContext('ion-toolbar', this.el),
28520
28801
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
28521
28802
  'segment-activated': this.activated,
28522
28803
  'segment-disabled': this.disabled,
28523
28804
  'segment-scrollable': this.scrollable,
28524
- }) }, hAsync("slot", { key: 'bdb223b18a62af921084301f01a728c421379646' })));
28805
+ }) }, hAsync("slot", { key: 'dcdb425bcda0d60acb7c317e5e671ed462715b4a', onSlotchange: this.onSlottedItemsChange })));
28525
28806
  }
28526
28807
  get el() { return getElement(this); }
28527
28808
  static get watchers() { return {
@@ -28631,7 +28912,7 @@ class SegmentButton {
28631
28912
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
28632
28913
  const mode = getIonMode$1(this);
28633
28914
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
28634
- return (hAsync(Host, { key: '9b54e4841be5d0f4f2ee230a649bfbe01066c7c7', class: {
28915
+ return (hAsync(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
28635
28916
  [mode]: true,
28636
28917
  'in-toolbar': hostContext('ion-toolbar', this.el),
28637
28918
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -28647,10 +28928,10 @@ class SegmentButton {
28647
28928
  'ion-activatable': true,
28648
28929
  'ion-activatable-instant': true,
28649
28930
  'ion-focusable': true,
28650
- } }, hAsync("button", Object.assign({ key: 'b97b964b5f3f1bf53e41ad2a1ad4853d5f956fe5', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '0eeb2616f7c5a7a7fc1e2e3bd34ab461de6179f4', class: "button-inner" }, hAsync("slot", { key: '5ac8fafa2f23e30f8df63bfe236a9604cfb388ae' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '86032e9726e2b6437ffc34f59fcbe564616cc9ca' })), hAsync("div", { key: '536b1da58dd2521be290707d6b1726831340cf9f', part: "indicator", class: {
28931
+ } }, hAsync("button", Object.assign({ key: 'a53c9f1e360934e8d2e90476642ba4507fc38ebd', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '7d8feda840d389941cc693f500b5eba0b39b41da', class: "button-inner" }, hAsync("slot", { key: 'd9ae1eec45db253cbf573d29cd545658dd595d87' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '49e6a16968709dc9b3fc77bc9fb99acb42fda88c' })), hAsync("div", { key: '4e3ea0989ed5205dbb03586e4facb439b05a92de', part: "indicator", class: {
28651
28932
  'segment-button-indicator': true,
28652
28933
  'segment-button-indicator-animated': true,
28653
- } }, hAsync("div", { key: 'b43124415ebd77c87285791522c5afc26a137f96', part: "indicator-background", class: "segment-button-indicator-background" }))));
28934
+ } }, hAsync("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
28654
28935
  }
28655
28936
  get el() { return getElement(this); }
28656
28937
  static get watchers() { return {
@@ -28779,9 +29060,6 @@ class Select {
28779
29060
  this.value = value;
28780
29061
  this.ionChange.emit({ value });
28781
29062
  }
28782
- componentWillLoad() {
28783
- this.inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
28784
- }
28785
29063
  async connectedCallback() {
28786
29064
  const { el } = this;
28787
29065
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
@@ -28791,6 +29069,12 @@ class Select {
28791
29069
  this.updateOverlayOptions();
28792
29070
  });
28793
29071
  }
29072
+ componentWillLoad() {
29073
+ this.inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
29074
+ }
29075
+ componentDidLoad() {
29076
+ this.emitStyle();
29077
+ }
28794
29078
  disconnectedCallback() {
28795
29079
  if (this.mutationO) {
28796
29080
  this.mutationO.disconnect();
@@ -29249,7 +29533,7 @@ class Select {
29249
29533
  * TODO(FW-5592): Remove hasStartEndSlots condition
29250
29534
  */
29251
29535
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
29252
- return (hAsync(Host, { key: 'df8333e037d8cb9fd34af7f3525608d7bd0ec0f4', onClick: this.onClick, class: createColorClasses$1(this.color, {
29536
+ return (hAsync(Host, { key: '57fa52484e644c5c021921fef7131ac832034feb', onClick: this.onClick, class: createColorClasses$1(this.color, {
29253
29537
  [mode]: true,
29254
29538
  'in-item': inItem,
29255
29539
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -29265,7 +29549,7 @@ class Select {
29265
29549
  [`select-justify-${justify}`]: justifyEnabled,
29266
29550
  [`select-shape-${shape}`]: shape !== undefined,
29267
29551
  [`select-label-placement-${labelPlacement}`]: true,
29268
- }) }, hAsync("label", { key: '3b165b4c7512bcf750bac885aef67745db53a840', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '1b0cac005aff58ba067efe7e1165b3375716c57e', class: "select-wrapper-inner" }, hAsync("slot", { key: '0552b33874ec305d3406876d5714a1dc4f0dc2c1', name: "start" }), hAsync("div", { key: '7d56e2610cc026f844373590f8229164baff2c62', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '79d8daef62fce370d804734390d8ba47dc611d36', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'be8b6f8c45b5062618ba50b2311f1143210bcc59', class: "select-highlight" }))));
29552
+ }) }, hAsync("label", { key: '34cb142fa7fec6946e7eb39e30d639e534fa30f8', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '3243dcc4698ebd53adaa59ae470a6e90061feb57', class: "select-wrapper-inner" }, hAsync("slot", { key: '1e0aa1e18a79397fd551c0c87bb00053a29e428c', name: "start" }), hAsync("div", { key: 'e21995dd161859aaeade1063d0f27acf38941260', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '4cb0e709df3974acb3f3a9fa82fb6f02cc666fcf', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'bcf9062e00e10576b399eeee886ec48595b1e7a7', class: "select-highlight" }))));
29269
29553
  }
29270
29554
  get el() { return getElement(this); }
29271
29555
  static get watchers() { return {
@@ -29356,7 +29640,7 @@ class SelectOption {
29356
29640
  this.value = undefined;
29357
29641
  }
29358
29642
  render() {
29359
- return hAsync(Host, { key: '6fa504ac5597098086050c0f517a03be8b8032c9', role: "option", id: this.inputId, class: getIonMode$1(this) });
29643
+ return hAsync(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode$1(this) });
29360
29644
  }
29361
29645
  get el() { return getElement(this); }
29362
29646
  static get style() { return IonSelectOptionStyle0; }
@@ -29476,7 +29760,7 @@ class SelectPopover {
29476
29760
  render() {
29477
29761
  const { header, message, options, subHeader } = this;
29478
29762
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
29479
- return (hAsync(Host, { key: '2ed838c17d47198c697164a0a750aafb6ca61a95', class: getIonMode$1(this) }, hAsync("ion-list", { key: '24fe7a6e9e45458c201b178ca236645d0f49ea8a' }, header !== undefined && hAsync("ion-list-header", { key: 'ebe64853dcd59c14a8f4dc9c2dc9e66d1e9767f6' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'ed7c6f2d7e1282b3048df0af8f1e3fd3b08297c6' }, hAsync("ion-label", { key: 'a81f6c4011a0dce47b80c98a45d80b1368d84a1e', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '4fd72c62da896092d535580917bb8a5ad6609c05' }, subHeader), message !== undefined && hAsync("p", { key: '88aead29b35d69743abe4015f96a6fa9f199a0ff' }, message)))), this.renderOptions(options))));
29763
+ return (hAsync(Host, { key: '302553a2eec4d1442751b8af28b7c9bd3487fd5d', class: getIonMode$1(this) }, hAsync("ion-list", { key: '39ae8579e6fe3bae2c7504147268ad5c82fd27e6' }, header !== undefined && hAsync("ion-list-header", { key: 'e0e6686380d188f46c593e1bb25287dcf08c75c2' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: '8a2d8652db269593c0ba7d767277e12c2b06144d' }, hAsync("ion-label", { key: 'a30cc0ecf95d5bdd6421ee1683922c1b853e98ea', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'c298459ca450123808a08d65660825b2c26d00e5' }, subHeader), message !== undefined && hAsync("p", { key: 'ed895fbaec020e809021138401341b6fd7675035' }, message)))), this.renderOptions(options))));
29480
29764
  }
29481
29765
  get el() { return getElement(this); }
29482
29766
  static get style() { return {
@@ -29524,11 +29808,11 @@ class SkeletonText {
29524
29808
  const animated = this.animated && config.getBoolean('animated', true);
29525
29809
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
29526
29810
  const mode = getIonMode$1(this);
29527
- return (hAsync(Host, { key: '8a1b489e35564056b3babce548982e58fec74119', class: {
29811
+ return (hAsync(Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
29528
29812
  [mode]: true,
29529
29813
  'skeleton-text-animated': animated,
29530
29814
  'in-media': inMedia,
29531
- } }, hAsync("span", { key: '71df251a41967dc4dab241f6fa906fa4d568dd9e' }, "\u00A0")));
29815
+ } }, hAsync("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
29532
29816
  }
29533
29817
  get el() { return getElement(this); }
29534
29818
  static get style() { return IonSkeletonTextStyle0; }
@@ -29581,7 +29865,7 @@ class Spinner {
29581
29865
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
29582
29866
  }
29583
29867
  }
29584
- return (hAsync(Host, { key: '9422c25aadfdf08861e26bb1aa336c94391d10a3', class: createColorClasses$1(self.color, {
29868
+ return (hAsync(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses$1(self.color, {
29585
29869
  [mode]: true,
29586
29870
  [`spinner-${spinnerName}`]: true,
29587
29871
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -29681,12 +29965,12 @@ class SplitPane {
29681
29965
  }
29682
29966
  render() {
29683
29967
  const mode = getIonMode$1(this);
29684
- return (hAsync(Host, { key: 'd04ff97717268184725f25b39bb1416b2b423260', class: {
29968
+ return (hAsync(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
29685
29969
  [mode]: true,
29686
29970
  // Used internally for styling
29687
29971
  [`split-pane-${mode}`]: true,
29688
29972
  'split-pane-visible': this.visible,
29689
- } }, hAsync("slot", { key: '4d355509ab6fcdac415184068ffe1241a5078db3' })));
29973
+ } }, hAsync("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
29690
29974
  }
29691
29975
  get el() { return getElement(this); }
29692
29976
  static get watchers() { return {
@@ -29755,10 +30039,10 @@ class Tab {
29755
30039
  }
29756
30040
  render() {
29757
30041
  const { tab, active, component } = this;
29758
- return (hAsync(Host, { key: 'f341d086cc626834d2ac83a9b6366fcaf71a72d5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30042
+ return (hAsync(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
29759
30043
  'ion-page': component === undefined,
29760
30044
  'tab-hidden': !active,
29761
- } }, hAsync("slot", { key: 'b665bb7a388f1a032685c9e7fe9b412ca742689e' })));
30045
+ } }, hAsync("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
29762
30046
  }
29763
30047
  get el() { return getElement(this); }
29764
30048
  static get watchers() { return {
@@ -29836,11 +30120,11 @@ class TabBar {
29836
30120
  const { color, translucent, keyboardVisible } = this;
29837
30121
  const mode = getIonMode$1(this);
29838
30122
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
29839
- return (hAsync(Host, { key: '77fe8ff42b083bfdb5e01a9873ef45b6f3ce3744', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30123
+ return (hAsync(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
29840
30124
  [mode]: true,
29841
30125
  'tab-bar-translucent': translucent,
29842
30126
  'tab-bar-hidden': shouldHide,
29843
- }) }, hAsync("slot", { key: 'd479c80ff66f4cfc12ab4a583bd292ef8392895e' })));
30127
+ }) }, hAsync("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
29844
30128
  }
29845
30129
  get el() { return getElement(this); }
29846
30130
  static get watchers() { return {
@@ -29938,7 +30222,7 @@ class TabButton {
29938
30222
  rel,
29939
30223
  target,
29940
30224
  };
29941
- return (hAsync(Host, { key: '092250aa4c247411c4717bf3871bdd7a47b7177f', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30225
+ return (hAsync(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
29942
30226
  [mode]: true,
29943
30227
  'tab-selected': selected,
29944
30228
  'tab-disabled': disabled,
@@ -29950,7 +30234,7 @@ class TabButton {
29950
30234
  'ion-activatable': true,
29951
30235
  'ion-selectable': true,
29952
30236
  'ion-focusable': true,
29953
- } }, hAsync("a", Object.assign({ key: '0414e9284005ce34ad69c4858f1b30aff00beb86' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'df97b6b56fb86507d40e68caa49f888ee29f8da4', class: "button-inner" }, hAsync("slot", { key: '715c209dd0cd61ac37b2813815014c685b7a92bc' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'e6894153a563f63f4f7d84f2703cef0f7522d435', type: "unbounded" }))));
30237
+ } }, hAsync("a", Object.assign({ key: '0da8784b1b243ffaaaf04dd7adb55d6881ed0c08' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: '2c628e8f1ebc129f84876c01530468cb97d8bf3a', class: "button-inner" }, hAsync("slot", { key: '8052a171d197a7de1a7eb12b091c35f73ae1ee21' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '4186bdb5ed045ec16f495a14fa30ac864c576227', type: "unbounded" }))));
29954
30238
  }
29955
30239
  get el() { return getElement(this); }
29956
30240
  static get style() { return {
@@ -30116,7 +30400,7 @@ class Tabs {
30116
30400
  return Array.from(this.el.querySelectorAll('ion-tab'));
30117
30401
  }
30118
30402
  render() {
30119
- return (hAsync(Host, { key: '13d9b30a83eb565b635ec7c547bd99da8c96aaa0', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'd885dbf0134cd5d256f7e3e9fc4844636c2c6cbf', name: "top" }), hAsync("div", { key: '2f48887902d47c0e29afb8da450da22b874b0e76', class: "tabs-inner" }, hAsync("slot", { key: 'bcdb41418edc7d176e570c37bb6a6ba1dc123f7d' })), hAsync("slot", { key: '85101e7c57cf8cda04bd3a125f1207faf85110d2', name: "bottom" })));
30403
+ return (hAsync(Host, { key: '239bdb2ff2ec5cfcc74c51812cf6240f48acc617', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '2b266d0f87c7c82e992fe0d9b5c8f25569b118e3', name: "top" }), hAsync("div", { key: '4cbbd010f0b0b1cd82714db7d098d28fab6d5218', class: "tabs-inner" }, hAsync("slot", { key: '72b2a02cd29d5b30e47758f3d6daaa1021916256' })), hAsync("slot", { key: '25494076dbbf7606d477b44f1b969719e7b4a805', name: "bottom" })));
30120
30404
  }
30121
30405
  get el() { return getElement(this); }
30122
30406
  static get style() { return IonTabsStyle0; }
@@ -30158,9 +30442,9 @@ class Text {
30158
30442
  }
30159
30443
  render() {
30160
30444
  const mode = getIonMode$1(this);
30161
- return (hAsync(Host, { key: '096d8ca01301500d61d9e92299e0cc78c2ad86e3', class: createColorClasses$1(this.color, {
30445
+ return (hAsync(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses$1(this.color, {
30162
30446
  [mode]: true,
30163
- }) }, hAsync("slot", { key: '9399d939ec4f134c24c29bda8857cd348259c666' })));
30447
+ }) }, hAsync("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
30164
30448
  }
30165
30449
  static get style() { return IonTextStyle0; }
30166
30450
  static get cmpMeta() { return {
@@ -30527,7 +30811,7 @@ class Textarea {
30527
30811
  * TODO(FW-5592): Remove hasStartEndSlots condition
30528
30812
  */
30529
30813
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
30530
- return (hAsync(Host, { key: '16eeb87ea5dbac1b37f1a376cd74e6f41af1b5f6', class: createColorClasses$1(this.color, {
30814
+ return (hAsync(Host, { key: '37595a18d77dea1a337ac1c672e5f08a4128111d', class: createColorClasses$1(this.color, {
30531
30815
  [mode]: true,
30532
30816
  'has-value': hasValue,
30533
30817
  'has-focus': hasFocus,
@@ -30536,7 +30820,7 @@ class Textarea {
30536
30820
  [`textarea-shape-${shape}`]: shape !== undefined,
30537
30821
  [`textarea-label-placement-${labelPlacement}`]: true,
30538
30822
  'textarea-disabled': disabled,
30539
- }) }, hAsync("label", { key: '5f7946957517614b937eb37533a87c124cf3eabb', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '4e950025447d83f3ec77b515a2c5cd6511819b7e', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'a508e5879a9f7b3f2a91d5b1851ab990302044fe', class: "start-slot-wrapper" }, hAsync("slot", { key: 'a2b18078c602896be5ae2da71519f534aa24bbc4', name: "start" })), hAsync("div", { key: '5a4d07c72794548d7f0945aebc5bc2c65118cac3', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: 'f13d0e8b96a798d3cec017b2b618e4979555c5ee', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), hAsync("div", { key: '10b8792a1506b41928869a4460b6f780c39947b6', class: "end-slot-wrapper" }, hAsync("slot", { key: '26362017095ffdda6749a19e0152ef4da8759fba', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '06a6135b05848b3855192f162ec293d9eae6e171', class: "textarea-highlight" })), this.renderBottomContent()));
30823
+ }) }, hAsync("label", { key: '67342758743e5a40448a32ff695876d39778621f', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'a994be8264bf5652811cf816d79a04178954e83f', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e09c93ebcd5b3d227d51e682ca23dfc7fd7027ad', class: "start-slot-wrapper" }, hAsync("slot", { key: 'd39758f21f19ae70aea21e9a9a7b7c20991fe593', name: "start" })), hAsync("div", { key: '6a4e10e53de4bb235ee30def4c9ae5bdee888816', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '9e254e551f124d972e9bc6b09ef0f2bb55890be5', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), hAsync("div", { key: 'a66aa2d2bc4778a0bec56a8b9ec9052a832eb3b2', class: "end-slot-wrapper" }, hAsync("slot", { key: '8e6a90b4475de32e23afc593da4108610dcca663', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '6da03205a8daff45581b20f0af3938634a9d5f8c', class: "textarea-highlight" })), this.renderBottomContent()));
30540
30824
  }
30541
30825
  get el() { return getElement(this); }
30542
30826
  static get watchers() { return {
@@ -30598,7 +30882,7 @@ class Thumbnail {
30598
30882
  registerInstance(this, hostRef);
30599
30883
  }
30600
30884
  render() {
30601
- return (hAsync(Host, { key: '29ed7678be93e55afad58bd37a61db3a289a5d76', class: getIonMode$1(this) }, hAsync("slot", { key: 'da1eb174d2544b9d452c98076f6e0abcda60099d' })));
30885
+ return (hAsync(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode$1(this) }, hAsync("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
30602
30886
  }
30603
30887
  static get style() { return IonThumbnailStyle0; }
30604
30888
  static get cmpMeta() { return {
@@ -31431,9 +31715,9 @@ class Toast {
31431
31715
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
31432
31716
  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);
31433
31717
  }
31434
- return (hAsync(Host, Object.assign({ key: 'f3555e5e093ce5dc5114df2e7ed298afa79eee02', tabindex: "-1" }, this.htmlAttributes, { style: {
31718
+ return (hAsync(Host, Object.assign({ key: 'da148788489146a20b42023fdc6401e53c044767', tabindex: "-1" }, this.htmlAttributes, { style: {
31435
31719
  zIndex: `${60000 + this.overlayIndex}`,
31436
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '3a98853e3b9c4c015a0e4035ad34f7fe02ec3b1c', class: wrapperClass }, hAsync("div", { key: '3c3447ce2a1fd4aecc3f7da1c1bb0c504fb6fcf7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '40bb8c55ac8bf7ce283bf2cdeb5902e76ad911ca', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'bfe843cce24b0205cdce48a544b294dcb0946eb4', 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')))));
31720
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: 'ab0a4d783aa43ba961492b3eb8beb60a38153057', class: wrapperClass }, hAsync("div", { key: '83e49027fd1ca6553d6910ff91befeea43576f3c', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '025cb4b6b170a89548969a25bcce4ab7a3817898', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'b811b4e1cbc1528c2cfb57898f5615692120f840', 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')))));
31437
31721
  }
31438
31722
  get el() { return getElement(this); }
31439
31723
  static get watchers() { return {
@@ -31653,7 +31937,7 @@ class Toggle {
31653
31937
  const value = this.getValue();
31654
31938
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
31655
31939
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
31656
- return (hAsync(Host, { key: '9083d3ea92131df1480dfdaacd62037ffd5a69ec', onClick: this.onClick, class: createColorClasses$1(color, {
31940
+ return (hAsync(Host, { key: 'b0d648e071bc8095998b519ce4dcdd0ea91575c0', onClick: this.onClick, class: createColorClasses$1(color, {
31657
31941
  [mode]: true,
31658
31942
  'in-item': hostContext('ion-item', el),
31659
31943
  'toggle-activated': activated,
@@ -31663,10 +31947,10 @@ class Toggle {
31663
31947
  [`toggle-alignment-${alignment}`]: true,
31664
31948
  [`toggle-label-placement-${labelPlacement}`]: true,
31665
31949
  [`toggle-${rtl}`]: true,
31666
- }) }, hAsync("label", { key: '554e11ac1db370363b251b83e4d57c32a2bd4577', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '327540a212dfe686310e8a587fa8c81edfd2e229', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '9ba185a8afaf65c8ba0d2044b1abfa376aee4db3', class: {
31950
+ }) }, hAsync("label", { key: '9a2fe1d16dba66a9dfef450efebf2e5cbe3dcd00', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '4358d18cb86da768155c17f9da3aac641296c256', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '0ec99e452164d7059cc4f93d09e5b918f82c022a', class: {
31667
31951
  'label-text-wrapper': true,
31668
31952
  'label-text-wrapper-hidden': !this.hasLabel,
31669
- }, part: "label" }, hAsync("slot", { key: '730287f916c13ec437f39f2304a70afa50f41dc7' })), hAsync("div", { key: '0e810cdf6dc7623d4efd2092a642ef12906efcae', class: "native-wrapper" }, this.renderToggleControl()))));
31953
+ }, part: "label" }, hAsync("slot", { key: '1c5cbc99905a79e842e9487eb3ca654e1bab3c66' })), hAsync("div", { key: 'ca8196423b429899febd11c7337d768ff05df6f4', class: "native-wrapper" }, this.renderToggleControl()))));
31670
31954
  }
31671
31955
  get el() { return getElement(this); }
31672
31956
  static get watchers() { return {
@@ -31770,10 +32054,10 @@ class Toolbar {
31770
32054
  this.childrenStyles.forEach((value) => {
31771
32055
  Object.assign(childStyles, value);
31772
32056
  });
31773
- return (hAsync(Host, { key: 'af016bf9981a2d6182783c6643e2d460245ecc2f', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32057
+ return (hAsync(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
31774
32058
  [mode]: true,
31775
32059
  'in-toolbar': hostContext('ion-toolbar', this.el),
31776
- })) }, hAsync("div", { key: '437debb5b7c561b315d887ae8d47186cba5521ce', class: "toolbar-background" }), hAsync("div", { key: '4c2429fa3e8526fedf456e4658be92d5dce8ca34', class: "toolbar-container" }, hAsync("slot", { key: '4c07db12cfc48b4836b566449b854c24db308e3a', name: "start" }), hAsync("slot", { key: '12855ec04622c09cc404f9b4f07f57a73e5770a0', name: "secondary" }), hAsync("div", { key: '56f37d52c91de2b76910defbc9e5b7c1def3861c', class: "toolbar-content" }, hAsync("slot", { key: 'c10ec3fdbea10a6388f4f510d45188f7fda1a371' })), hAsync("slot", { key: 'c8ed49c6888faf35e71f2a8f4f6bf98fb0c34a25', name: "primary" }), hAsync("slot", { key: '0251f3980082a092304f95cbc002bc8c633c5739', name: "end" }))));
32060
+ })) }, hAsync("div", { key: '0891db157d6e028c6d03696f13fb510ea91b0296', class: "toolbar-background" }), hAsync("div", { key: '95fbc870d808f74af4bb18cd8f8ec8c7828a9e0b', class: "toolbar-container" }, hAsync("slot", { key: '84d4a9644660fe00ca085055ca8d12f3647531ad', name: "start" }), hAsync("slot", { key: 'fd361dc9c9979f59aed2fedcf94629506fae62b0', name: "secondary" }), hAsync("div", { key: '54d2b28616a4627c55766f66dc453707752758a6', class: "toolbar-content" }, hAsync("slot", { key: '8f65e0830cce7135640b90eb694e282cb7e5efd2' })), hAsync("slot", { key: 'c78be11a207c8674f222543646398636956087e6', name: "primary" }), hAsync("slot", { key: 'ab25e1601ccaa8cb0d81921b849bcb7402aa7826', name: "end" }))));
31777
32061
  }
31778
32062
  get el() { return getElement(this); }
31779
32063
  static get style() { return {
@@ -31823,11 +32107,11 @@ class ToolbarTitle {
31823
32107
  render() {
31824
32108
  const mode = getIonMode$1(this);
31825
32109
  const size = this.getSize();
31826
- return (hAsync(Host, { key: '5cb49f3642fb3c937cdba729ab7d561213d9bce5', class: createColorClasses$1(this.color, {
32110
+ return (hAsync(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses$1(this.color, {
31827
32111
  [mode]: true,
31828
32112
  [`title-${size}`]: true,
31829
32113
  'title-rtl': document.dir === 'rtl',
31830
- }) }, hAsync("div", { key: 'f089bf6cff17ab109fec7de8b1bf96bf33bede1f', class: "toolbar-title" }, hAsync("slot", { key: 'ed74c4e77126a309970ff719baa6ebaebb00d2e6' }))));
32114
+ }) }, hAsync("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, hAsync("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
31831
32115
  }
31832
32116
  get el() { return getElement(this); }
31833
32117
  static get watchers() { return {