@ionic/core 8.0.1-dev.11713911458.1ad5f4cf → 8.0.1-dev.11714496052.149681e5

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 (448) hide show
  1. package/components/index2.js +119 -1
  2. package/components/input-shims.js +5 -5
  3. package/components/ion-content.js +6 -4
  4. package/components/ion-datetime-button.js +2 -2
  5. package/components/ion-datetime.js +15 -13
  6. package/components/ion-fab-button.js +2 -2
  7. package/components/ion-fab-list.js +2 -2
  8. package/components/ion-fab.js +2 -2
  9. package/components/ion-footer.js +2 -2
  10. package/components/ion-grid.js +2 -2
  11. package/components/ion-header.js +2 -2
  12. package/components/ion-img.js +1 -1
  13. package/components/ion-infinite-scroll-content.js +2 -2
  14. package/components/ion-infinite-scroll.js +1 -1
  15. package/components/ion-input-password-toggle.js +3 -3
  16. package/components/ion-input.js +8 -12
  17. package/components/ion-item-divider.js +2 -2
  18. package/components/ion-item-group.js +1 -1
  19. package/components/ion-item-option.js +2 -2
  20. package/components/ion-item-options.js +1 -1
  21. package/components/ion-item-sliding.js +1 -1
  22. package/components/ion-loading.js +2 -2
  23. package/components/ion-menu-button.js +2 -2
  24. package/components/ion-menu-toggle.js +2 -2
  25. package/components/ion-menu.js +2 -2
  26. package/components/ion-modal.js +10 -8
  27. package/components/ion-nav-link.js +1 -1
  28. package/components/ion-nav.js +1 -1
  29. package/components/ion-note.js +2 -2
  30. package/components/ion-picker-legacy.js +2 -2
  31. package/components/ion-progress-bar.js +1 -1
  32. package/components/ion-range.js +3 -3
  33. package/components/ion-refresher-content.js +1 -1
  34. package/components/ion-refresher.js +1 -1
  35. package/components/ion-reorder-group.js +1 -1
  36. package/components/ion-reorder.js +1 -1
  37. package/components/ion-router-link.js +2 -2
  38. package/components/ion-router-outlet.js +1 -1
  39. package/components/ion-row.js +1 -1
  40. package/components/ion-searchbar.js +4 -4
  41. package/components/ion-segment-button.js +3 -3
  42. package/components/ion-segment.js +2 -2
  43. package/components/ion-select-option.js +1 -1
  44. package/components/ion-select.js +2 -2
  45. package/components/ion-skeleton-text.js +2 -2
  46. package/components/ion-split-pane.js +2 -2
  47. package/components/ion-tab-bar.js +2 -2
  48. package/components/ion-tab-button.js +2 -2
  49. package/components/ion-tab.js +2 -2
  50. package/components/ion-tabs.js +1 -1
  51. package/components/ion-text.js +2 -2
  52. package/components/ion-textarea.js +2 -2
  53. package/components/ion-thumbnail.js +1 -1
  54. package/components/ion-title.js +2 -2
  55. package/components/ion-toast.js +2 -2
  56. package/components/ion-toggle.js +3 -3
  57. package/components/ion-toolbar.js +2 -2
  58. package/components/label.js +2 -2
  59. package/components/list-header.js +2 -2
  60. package/components/list.js +1 -1
  61. package/components/overlays.js +3 -2
  62. package/components/picker-column-option.js +2 -2
  63. package/components/picker-column.js +156 -4
  64. package/components/picker-column2.js +2 -2
  65. package/components/picker.js +2 -2
  66. package/components/popover.js +6 -4
  67. package/components/radio-group.js +1 -1
  68. package/components/radio.js +3 -3
  69. package/components/ripple-effect.js +1 -1
  70. package/components/select-popover.js +1 -1
  71. package/components/spinner.js +1 -1
  72. package/css/core.css +1 -1
  73. package/css/core.css.map +1 -1
  74. package/css/ionic.bundle.css +1 -1
  75. package/css/ionic.bundle.css.map +1 -1
  76. package/css/palettes/dark.always.css +1 -1
  77. package/css/palettes/dark.always.css.map +1 -1
  78. package/css/palettes/dark.class.css +1 -1
  79. package/css/palettes/dark.class.css.map +1 -1
  80. package/css/palettes/dark.system.css +1 -1
  81. package/css/palettes/dark.system.css.map +1 -1
  82. package/dist/cjs/{index-6d6ac424.js → index-be7cf657.js} +124 -6
  83. package/dist/cjs/index.cjs.js +5 -5
  84. package/dist/cjs/{input-shims-9e59ef62.js → input-shims-20d639e6.js} +5 -5
  85. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  86. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  87. package/dist/cjs/ion-app_8.cjs.entry.js +16 -15
  88. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  89. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  90. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-datetime_3.cjs.entry.js +20 -18
  92. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  93. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  94. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  95. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  96. package/dist/cjs/ion-input.cjs.entry.js +7 -12
  97. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  98. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  99. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  100. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  101. package/dist/cjs/ion-modal.cjs.entry.js +10 -9
  102. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -3
  103. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-picker-column.cjs.entry.js +154 -4
  105. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-popover.cjs.entry.js +6 -5
  107. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  108. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  109. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  110. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  113. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  115. package/dist/cjs/ion-segment_2.cjs.entry.js +5 -5
  116. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  117. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  118. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  120. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  121. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  122. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  123. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  124. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  125. package/dist/cjs/ionic.cjs.js +1 -1
  126. package/dist/cjs/{ios.transition-d4f0ca4e.js → ios.transition-b0e0575b.js} +3 -1
  127. package/dist/cjs/loader.cjs.js +1 -1
  128. package/dist/cjs/{md.transition-857328f3.js → md.transition-b22b61b7.js} +3 -1
  129. package/dist/cjs/{overlays-10c452b2.js → overlays-574e681c.js} +3 -1
  130. package/dist/collection/components/content/content.js +23 -4
  131. package/dist/collection/components/content/test/content.spec.js +27 -0
  132. package/dist/collection/components/datetime/datetime.js +15 -13
  133. package/dist/collection/components/datetime/test/overlay-roles/datetime.e2e.js +34 -0
  134. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  135. package/dist/collection/components/fab/fab.js +2 -2
  136. package/dist/collection/components/fab-button/fab-button.js +2 -2
  137. package/dist/collection/components/fab-list/fab-list.js +2 -2
  138. package/dist/collection/components/footer/footer.js +2 -2
  139. package/dist/collection/components/grid/grid.js +2 -2
  140. package/dist/collection/components/header/header.js +2 -2
  141. package/dist/collection/components/img/img.js +1 -1
  142. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  143. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  144. package/dist/collection/components/input/input.js +24 -12
  145. package/dist/collection/components/input/test/input.spec.js +13 -0
  146. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  147. package/dist/collection/components/item-divider/item-divider.js +2 -2
  148. package/dist/collection/components/item-group/item-group.js +1 -1
  149. package/dist/collection/components/item-option/item-option.js +2 -2
  150. package/dist/collection/components/item-options/item-options.js +1 -1
  151. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  152. package/dist/collection/components/label/label.js +2 -2
  153. package/dist/collection/components/list/list.js +1 -1
  154. package/dist/collection/components/list-header/list-header.js +2 -2
  155. package/dist/collection/components/loading/loading.js +2 -2
  156. package/dist/collection/components/menu/menu.js +2 -2
  157. package/dist/collection/components/menu-button/menu-button.js +2 -2
  158. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  159. package/dist/collection/components/modal/gestures/sheet.js +3 -2
  160. package/dist/collection/components/modal/modal.js +25 -6
  161. package/dist/collection/components/modal/test/basic/modal.spec.js +19 -0
  162. package/dist/collection/components/nav/nav.js +1 -1
  163. package/dist/collection/components/nav-link/nav-link.js +1 -1
  164. package/dist/collection/components/note/note.js +2 -2
  165. package/dist/collection/components/picker/picker.js +2 -2
  166. package/dist/collection/components/picker-column/picker-column.css +19 -0
  167. package/dist/collection/components/picker-column/picker-column.js +158 -3
  168. package/dist/collection/components/picker-column/test/picker-column.spec.js +83 -0
  169. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  170. package/dist/collection/components/picker-legacy/picker.js +2 -2
  171. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  172. package/dist/collection/components/popover/popover.js +23 -4
  173. package/dist/collection/components/popover/test/basic/popover.spec.js +19 -0
  174. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  175. package/dist/collection/components/radio/radio.js +3 -3
  176. package/dist/collection/components/radio-group/radio-group.js +1 -1
  177. package/dist/collection/components/range/range.js +3 -3
  178. package/dist/collection/components/refresher/refresher.js +1 -1
  179. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  180. package/dist/collection/components/reorder/reorder.js +1 -1
  181. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  182. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  183. package/dist/collection/components/router-link/router-link.js +2 -2
  184. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  185. package/dist/collection/components/row/row.js +1 -1
  186. package/dist/collection/components/searchbar/searchbar.js +4 -4
  187. package/dist/collection/components/segment/segment.js +2 -2
  188. package/dist/collection/components/segment-button/segment-button.js +3 -3
  189. package/dist/collection/components/select/select.js +2 -2
  190. package/dist/collection/components/select-option/select-option.js +1 -1
  191. package/dist/collection/components/select-popover/select-popover.js +1 -1
  192. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  193. package/dist/collection/components/spinner/spinner.js +1 -1
  194. package/dist/collection/components/split-pane/split-pane.js +2 -2
  195. package/dist/collection/components/tab/tab.js +2 -2
  196. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  197. package/dist/collection/components/tab-button/tab-button.js +2 -2
  198. package/dist/collection/components/tabs/tabs.js +1 -1
  199. package/dist/collection/components/text/text.js +2 -2
  200. package/dist/collection/components/textarea/textarea.js +2 -2
  201. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  202. package/dist/collection/components/title/title.js +2 -2
  203. package/dist/collection/components/toast/toast.js +2 -2
  204. package/dist/collection/components/toggle/toggle.js +3 -3
  205. package/dist/collection/components/toolbar/toolbar.js +2 -2
  206. package/dist/collection/utils/focus-controller/index.js +112 -0
  207. package/dist/collection/utils/focus-controller/test/generic/focus-controller.e2e.js +52 -0
  208. package/dist/collection/utils/focus-controller/test/ionic/focus-controller.e2e.js +52 -0
  209. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -5
  210. package/dist/collection/utils/overlays.js +2 -1
  211. package/dist/collection/utils/transition/index.js +11 -1
  212. package/dist/docs.json +96 -1
  213. package/dist/esm/{index-f0d7371a.js → index-c9a90692.js} +121 -3
  214. package/dist/esm/index.js +5 -5
  215. package/dist/esm/{input-shims-0314bbe5.js → input-shims-4530285e.js} +5 -5
  216. package/dist/esm/ion-action-sheet.entry.js +1 -1
  217. package/dist/esm/ion-alert.entry.js +1 -1
  218. package/dist/esm/ion-app_8.entry.js +16 -15
  219. package/dist/esm/ion-avatar_3.entry.js +1 -1
  220. package/dist/esm/ion-col_3.entry.js +3 -3
  221. package/dist/esm/ion-datetime-button.entry.js +2 -2
  222. package/dist/esm/ion-datetime_3.entry.js +20 -18
  223. package/dist/esm/ion-fab_3.entry.js +6 -6
  224. package/dist/esm/ion-img.entry.js +1 -1
  225. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  226. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  227. package/dist/esm/ion-input.entry.js +7 -12
  228. package/dist/esm/ion-item-option_3.entry.js +4 -4
  229. package/dist/esm/ion-item_8.entry.js +12 -12
  230. package/dist/esm/ion-loading.entry.js +3 -3
  231. package/dist/esm/ion-menu_3.entry.js +7 -7
  232. package/dist/esm/ion-modal.entry.js +10 -9
  233. package/dist/esm/ion-nav_2.entry.js +4 -3
  234. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  235. package/dist/esm/ion-picker-column.entry.js +154 -4
  236. package/dist/esm/ion-picker.entry.js +2 -2
  237. package/dist/esm/ion-popover.entry.js +6 -5
  238. package/dist/esm/ion-progress-bar.entry.js +1 -1
  239. package/dist/esm/ion-radio_2.entry.js +4 -4
  240. package/dist/esm/ion-range.entry.js +3 -3
  241. package/dist/esm/ion-refresher_2.entry.js +2 -2
  242. package/dist/esm/ion-reorder_2.entry.js +2 -2
  243. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  244. package/dist/esm/ion-route_4.entry.js +2 -2
  245. package/dist/esm/ion-searchbar.entry.js +4 -4
  246. package/dist/esm/ion-segment_2.entry.js +5 -5
  247. package/dist/esm/ion-select_3.entry.js +5 -5
  248. package/dist/esm/ion-spinner.entry.js +1 -1
  249. package/dist/esm/ion-split-pane.entry.js +2 -2
  250. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  251. package/dist/esm/ion-tab_2.entry.js +3 -3
  252. package/dist/esm/ion-text.entry.js +2 -2
  253. package/dist/esm/ion-textarea.entry.js +2 -2
  254. package/dist/esm/ion-toast.entry.js +3 -3
  255. package/dist/esm/ion-toggle.entry.js +3 -3
  256. package/dist/esm/ionic.js +1 -1
  257. package/dist/esm/{ios.transition-71bfa932.js → ios.transition-0321a527.js} +3 -1
  258. package/dist/esm/loader.js +1 -1
  259. package/dist/esm/{md.transition-86aef3c0.js → md.transition-57a06277.js} +3 -1
  260. package/dist/esm/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +3 -2
  261. package/dist/esm-es5/index-c9a90692.js +4 -0
  262. package/dist/esm-es5/index.js +1 -1
  263. package/dist/esm-es5/input-shims-4530285e.js +4 -0
  264. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  265. package/dist/esm-es5/ion-alert.entry.js +1 -1
  266. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  267. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  268. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  270. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  271. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  272. package/dist/esm-es5/ion-img.entry.js +1 -1
  273. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  274. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  275. package/dist/esm-es5/ion-input.entry.js +1 -1
  276. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  277. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  278. package/dist/esm-es5/ion-loading.entry.js +1 -1
  279. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  280. package/dist/esm-es5/ion-modal.entry.js +1 -1
  281. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  282. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  283. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  284. package/dist/esm-es5/ion-picker.entry.js +1 -1
  285. package/dist/esm-es5/ion-popover.entry.js +1 -1
  286. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  287. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  288. package/dist/esm-es5/ion-range.entry.js +1 -1
  289. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  290. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  291. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  292. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  293. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  294. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  295. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  296. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  297. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  298. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  299. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  300. package/dist/esm-es5/ion-text.entry.js +1 -1
  301. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  302. package/dist/esm-es5/ion-toast.entry.js +1 -1
  303. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  304. package/dist/esm-es5/ionic.js +1 -1
  305. package/dist/esm-es5/ios.transition-0321a527.js +4 -0
  306. package/dist/esm-es5/loader.js +1 -1
  307. package/dist/esm-es5/md.transition-57a06277.js +4 -0
  308. package/dist/esm-es5/{overlays-6fb4a2f2.js → overlays-1eac28e2.js} +1 -1
  309. package/dist/html.html-data.json +24 -0
  310. package/dist/ionic/index.esm.js +1 -1
  311. package/dist/ionic/ionic.esm.js +1 -1
  312. package/dist/ionic/{p-07584ab4.system.js → p-0cd59e4e.system.js} +1 -1
  313. package/dist/ionic/{p-50205ef9.system.entry.js → p-0d88f9c2.system.entry.js} +1 -1
  314. package/dist/ionic/{p-1fe1f512.entry.js → p-1a8d2fe3.entry.js} +1 -1
  315. package/dist/ionic/{p-3008ca4e.system.entry.js → p-1aff89d0.system.entry.js} +1 -1
  316. package/dist/ionic/p-1fbe9447.system.js +4 -0
  317. package/dist/ionic/{p-4a01cec0.entry.js → p-2185597f.entry.js} +1 -1
  318. package/dist/ionic/{p-7f33a6e2.system.entry.js → p-22d183b4.system.entry.js} +2 -2
  319. package/dist/ionic/{p-5f15ee76.entry.js → p-255b6f01.entry.js} +1 -1
  320. package/dist/ionic/p-282cc565.js +4 -0
  321. package/dist/ionic/{p-4f6ebc2b.entry.js → p-2870db48.entry.js} +1 -1
  322. package/dist/ionic/{p-cbd87df6.entry.js → p-2b45e94f.entry.js} +1 -1
  323. package/dist/ionic/{p-cf8101a6.system.entry.js → p-2c1cc9bf.system.entry.js} +1 -1
  324. package/dist/ionic/p-2e56ebdc.entry.js +4 -0
  325. package/dist/ionic/p-30a1fb3a.js +4 -0
  326. package/dist/ionic/{p-e62d4a6c.entry.js → p-30a40a57.entry.js} +1 -1
  327. package/dist/ionic/{p-98af538a.system.entry.js → p-320f9186.system.entry.js} +2 -2
  328. package/dist/ionic/p-3328cd28.entry.js +4 -0
  329. package/dist/ionic/{p-6ef17d86.system.entry.js → p-3339b5ca.system.entry.js} +1 -1
  330. package/dist/ionic/p-39a3eca2.entry.js +4 -0
  331. package/dist/ionic/{p-703f62c1.entry.js → p-3af6a819.entry.js} +1 -1
  332. package/dist/ionic/p-3ebbbd37.js +4 -0
  333. package/dist/ionic/{p-8a5152e5.entry.js → p-3f7e6661.entry.js} +1 -1
  334. package/dist/ionic/{p-814efd87.system.entry.js → p-4195e4d0.system.entry.js} +1 -1
  335. package/dist/ionic/{p-dbc3e90c.entry.js → p-454c2bfe.entry.js} +1 -1
  336. package/dist/ionic/{p-2690b1de.js → p-46111310.js} +1 -1
  337. package/dist/ionic/p-46f407f0.system.js +4 -0
  338. package/dist/ionic/{p-4809ddae.system.entry.js → p-47915d5c.system.entry.js} +1 -1
  339. package/dist/ionic/{p-5ad55625.entry.js → p-49a47e7c.entry.js} +1 -1
  340. package/dist/ionic/p-4b078620.entry.js +4 -0
  341. package/dist/ionic/{p-332aa81e.entry.js → p-4c24ae09.entry.js} +1 -1
  342. package/dist/ionic/{p-904df2ee.system.entry.js → p-4c3d0457.system.entry.js} +1 -1
  343. package/dist/ionic/{p-530207f9.entry.js → p-4f1d1637.entry.js} +1 -1
  344. package/dist/ionic/{p-341b3f37.entry.js → p-4fc2a1ce.entry.js} +1 -1
  345. package/dist/ionic/{p-53d69c70.system.entry.js → p-5015ef54.system.entry.js} +1 -1
  346. package/dist/ionic/{p-e8a713b5.entry.js → p-5087e4df.entry.js} +1 -1
  347. package/dist/ionic/{p-5895b91d.entry.js → p-5408ee96.entry.js} +1 -1
  348. package/dist/ionic/p-55b9eb6b.system.entry.js +4 -0
  349. package/dist/ionic/{p-987e38ef.system.entry.js → p-56c470c2.system.entry.js} +1 -1
  350. package/dist/ionic/{p-5c26fed5.system.entry.js → p-5983ad03.system.entry.js} +1 -1
  351. package/dist/ionic/p-5a82c7b9.system.entry.js +4 -0
  352. package/dist/ionic/p-5e074809.system.entry.js +4 -0
  353. package/dist/ionic/{p-e81c3ca2.system.entry.js → p-676e0f71.system.entry.js} +1 -1
  354. package/dist/ionic/{p-eac224fa.entry.js → p-70605125.entry.js} +1 -1
  355. package/dist/ionic/{p-9fd3ca09.system.entry.js → p-70e00e9f.system.entry.js} +1 -1
  356. package/dist/ionic/{p-1472c130.entry.js → p-71044f08.entry.js} +1 -1
  357. package/dist/ionic/p-72b181e2.system.entry.js +4 -0
  358. package/dist/ionic/{p-fa0bf39d.system.entry.js → p-75a6989a.system.entry.js} +1 -1
  359. package/dist/ionic/p-7a152fab.entry.js +4 -0
  360. package/dist/ionic/{p-68afa357.system.entry.js → p-7e5972a0.system.entry.js} +2 -2
  361. package/dist/ionic/p-80270af4.system.entry.js +4 -0
  362. package/dist/ionic/p-8134b3c4.entry.js +4 -0
  363. package/dist/ionic/{p-4f77a080.system.entry.js → p-89f2d585.system.entry.js} +1 -1
  364. package/dist/ionic/{p-6cf780b6.system.entry.js → p-8ffff03f.system.entry.js} +1 -1
  365. package/dist/ionic/{p-bc3d649d.entry.js → p-9277e3d2.entry.js} +1 -1
  366. package/dist/ionic/p-944dd52a.system.js +4 -0
  367. package/dist/ionic/{p-ca5bb110.system.entry.js → p-94d20e10.system.entry.js} +1 -1
  368. package/dist/ionic/{p-48f60474.entry.js → p-962f482c.entry.js} +1 -1
  369. package/dist/ionic/p-9832568f.entry.js +4 -0
  370. package/dist/ionic/{p-f956e38a.entry.js → p-9876ce3b.entry.js} +1 -1
  371. package/dist/ionic/{p-151e8afd.entry.js → p-9a06b83d.entry.js} +1 -1
  372. package/dist/ionic/{p-f8f8c5a8.system.entry.js → p-9dbd1f93.system.entry.js} +1 -1
  373. package/dist/ionic/{p-c54b167f.system.entry.js → p-9e829e8f.system.entry.js} +1 -1
  374. package/dist/ionic/p-a0351a92.system.js +4 -0
  375. package/dist/ionic/{p-c927dbe2.system.entry.js → p-a0dd50e4.system.entry.js} +1 -1
  376. package/dist/ionic/{p-2b86020c.system.entry.js → p-a4ce5696.system.entry.js} +1 -1
  377. package/dist/ionic/{p-1ba197b6.entry.js → p-a51785b7.entry.js} +1 -1
  378. package/dist/ionic/{p-e292247e.system.entry.js → p-a6f505f5.system.entry.js} +1 -1
  379. package/dist/ionic/p-aa2c2a8b.system.entry.js +4 -0
  380. package/dist/ionic/{p-d061515d.system.entry.js → p-ac058b0e.system.entry.js} +1 -1
  381. package/dist/ionic/p-ae9ebfd1.entry.js +4 -0
  382. package/dist/ionic/{p-91b568e2.system.entry.js → p-b0fc315c.system.entry.js} +1 -1
  383. package/dist/ionic/p-b79b8d53.js +4 -0
  384. package/dist/ionic/{p-e93cd31c.entry.js → p-b80dfa1b.entry.js} +1 -1
  385. package/dist/ionic/{p-df0d39c7.system.entry.js → p-b8d966bb.system.entry.js} +2 -2
  386. package/dist/ionic/{p-90f8498c.entry.js → p-ba8fd3f7.entry.js} +1 -1
  387. package/dist/ionic/{p-3d977e09.system.entry.js → p-bd62a431.system.entry.js} +2 -2
  388. package/dist/ionic/{p-70f6b982.entry.js → p-bebb01a5.entry.js} +1 -1
  389. package/dist/ionic/p-c27aef92.system.js +4 -0
  390. package/dist/ionic/p-c34a80bd.entry.js +4 -0
  391. package/dist/ionic/{p-ca6decbd.entry.js → p-cfd91e4b.entry.js} +1 -1
  392. package/dist/ionic/p-d38c209e.system.entry.js +4 -0
  393. package/dist/ionic/{p-aa79cc0e.system.entry.js → p-d3a32834.system.entry.js} +2 -2
  394. package/dist/ionic/{p-275dd0ba.system.entry.js → p-d5559e4d.system.entry.js} +1 -1
  395. package/dist/ionic/p-d76c8ebd.entry.js +4 -0
  396. package/dist/ionic/{p-55bc2a11.system.entry.js → p-d833beb7.system.entry.js} +1 -1
  397. package/dist/ionic/p-d8d6ebc0.system.js +1 -1
  398. package/dist/ionic/{p-7c93f00b.system.entry.js → p-da29453c.system.entry.js} +1 -1
  399. package/dist/ionic/{p-e099a6f3.entry.js → p-dffd0e36.entry.js} +1 -1
  400. package/dist/ionic/{p-1c42ad90.entry.js → p-eb1428cc.entry.js} +1 -1
  401. package/dist/ionic/{p-e1ad8e76.entry.js → p-f49da44a.entry.js} +1 -1
  402. package/dist/ionic/p-f5006fa9.system.entry.js +4 -0
  403. package/dist/ionic/p-fe9a80b7.entry.js +4 -0
  404. package/dist/types/components/content/content.d.ts +8 -0
  405. package/dist/types/components/input/input.d.ts +4 -0
  406. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  407. package/dist/types/components/modal/modal.d.ts +18 -0
  408. package/dist/types/components/picker-column/picker-column.d.ts +35 -0
  409. package/dist/types/components/popover/popover-interface.d.ts +1 -0
  410. package/dist/types/components/popover/popover.d.ts +18 -0
  411. package/dist/types/components.d.ts +32 -0
  412. package/dist/types/utils/config.d.ts +9 -0
  413. package/dist/types/utils/focus-controller/index.d.ts +13 -0
  414. package/dist/types/utils/overlays.d.ts +1 -0
  415. package/hydrate/index.js +426 -154
  416. package/package.json +1 -1
  417. package/dist/esm-es5/index-f0d7371a.js +0 -4
  418. package/dist/esm-es5/input-shims-0314bbe5.js +0 -4
  419. package/dist/esm-es5/ios.transition-71bfa932.js +0 -4
  420. package/dist/esm-es5/md.transition-86aef3c0.js +0 -4
  421. package/dist/ionic/p-0e713efe.js +0 -4
  422. package/dist/ionic/p-2613c305.system.js +0 -4
  423. package/dist/ionic/p-34f26d8b.entry.js +0 -4
  424. package/dist/ionic/p-38010e7c.system.entry.js +0 -4
  425. package/dist/ionic/p-4d2b2d23.system.entry.js +0 -4
  426. package/dist/ionic/p-4de53118.js +0 -4
  427. package/dist/ionic/p-510cb8e6.system.js +0 -4
  428. package/dist/ionic/p-582db405.system.entry.js +0 -4
  429. package/dist/ionic/p-5f28cb75.js +0 -4
  430. package/dist/ionic/p-7372cf23.system.entry.js +0 -4
  431. package/dist/ionic/p-84ead641.entry.js +0 -4
  432. package/dist/ionic/p-91dabef7.system.js +0 -4
  433. package/dist/ionic/p-9fa5ff32.system.js +0 -4
  434. package/dist/ionic/p-a28ea4d8.system.entry.js +0 -4
  435. package/dist/ionic/p-a39a73e3.entry.js +0 -4
  436. package/dist/ionic/p-a90201f2.js +0 -4
  437. package/dist/ionic/p-ac045dad.entry.js +0 -4
  438. package/dist/ionic/p-ba35f07f.entry.js +0 -4
  439. package/dist/ionic/p-c2762c6a.system.entry.js +0 -4
  440. package/dist/ionic/p-cc258008.entry.js +0 -4
  441. package/dist/ionic/p-ce5bf737.system.entry.js +0 -4
  442. package/dist/ionic/p-cf45a5c7.system.entry.js +0 -4
  443. package/dist/ionic/p-d277ba16.entry.js +0 -4
  444. package/dist/ionic/p-dfb78785.system.js +0 -4
  445. package/dist/ionic/p-e5f99a0d.entry.js +0 -4
  446. package/dist/ionic/p-e781c893.entry.js +0 -4
  447. package/dist/ionic/p-ec178f19.entry.js +0 -4
  448. package/dist/ionic/p-f6fec6a0.entry.js +0 -4
package/hydrate/index.js CHANGED
@@ -10190,7 +10190,7 @@ const trapKeyboardFocus = (ev, doc) => {
10190
10190
  * behind the sheet should be focusable until
10191
10191
  * the backdrop is enabled.
10192
10192
  */
10193
- if (lastOverlay.classList.contains('ion-disable-focus-trap')) {
10193
+ if (lastOverlay.classList.contains(FOCUS_TRAP_DISABLE_CLASS)) {
10194
10194
  return;
10195
10195
  }
10196
10196
  const trapScopedFocus = () => {
@@ -10865,6 +10865,7 @@ const revealOverlaysToScreenReaders = () => {
10865
10865
  }
10866
10866
  }
10867
10867
  };
10868
+ const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
10868
10869
 
10869
10870
  const hostContext = (selector, el) => {
10870
10871
  return el.closest(selector) !== null;
@@ -14201,6 +14202,7 @@ class Content {
14201
14202
  };
14202
14203
  this.color = undefined;
14203
14204
  this.fullscreen = false;
14205
+ this.fixedSlotPlacement = 'after';
14204
14206
  this.forceOverscroll = undefined;
14205
14207
  this.scrollX = false;
14206
14208
  this.scrollY = true;
@@ -14464,13 +14466,13 @@ class Content {
14464
14466
  }
14465
14467
  }
14466
14468
  render() {
14467
- const { isMainContent, scrollX, scrollY, el } = this;
14469
+ const { fixedSlotPlacement, isMainContent, scrollX, scrollY, el } = this;
14468
14470
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
14469
14471
  const mode = getIonMode$1(this);
14470
14472
  const forceOverscroll = this.shouldForceOverscroll();
14471
14473
  const transitionShadow = mode === 'ios';
14472
14474
  this.resize();
14473
- return (hAsync(Host, { key: '98e9658e69c0bbe0113e4c1b89dd7b240334c039', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
14475
+ return (hAsync(Host, { key: 'f599a7da14969df38c20a6f650179d2a319fb58b', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
14474
14476
  [mode]: true,
14475
14477
  'content-sizing': hostContext('ion-popover', this.el),
14476
14478
  overscroll: forceOverscroll,
@@ -14478,12 +14480,12 @@ class Content {
14478
14480
  }), style: {
14479
14481
  '--offset-top': `${this.cTop}px`,
14480
14482
  '--offset-bottom': `${this.cBottom}px`,
14481
- } }, hAsync("div", { key: 'e89aa6ea09625846db52d63bdbf06c3c279a5ba4', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), hAsync("div", { key: '37925cf9d898ede58d5ac7b5a650c648033602a3', class: {
14483
+ } }, 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: {
14482
14484
  'inner-scroll': true,
14483
14485
  'scroll-x': scrollX,
14484
14486
  'scroll-y': scrollY,
14485
14487
  overscroll: (scrollX || scrollY) && forceOverscroll,
14486
- }, 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" })));
14488
+ }, 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));
14487
14489
  }
14488
14490
  get el() { return getElement(this); }
14489
14491
  static get style() { return IonContentStyle0; }
@@ -14493,6 +14495,7 @@ class Content {
14493
14495
  "$members$": {
14494
14496
  "color": [513],
14495
14497
  "fullscreen": [4],
14498
+ "fixedSlotPlacement": [1, "fixed-slot-placement"],
14496
14499
  "forceOverscroll": [1028, "force-overscroll"],
14497
14500
  "scrollX": [4, "scroll-x"],
14498
14501
  "scrollY": [4, "scroll-y"],
@@ -16531,10 +16534,10 @@ class Datetime {
16531
16534
  const { activeParts } = this;
16532
16535
  return Array.isArray(activeParts) ? activeParts[0] : activeParts;
16533
16536
  };
16534
- this.closeParentOverlay = () => {
16537
+ this.closeParentOverlay = (role) => {
16535
16538
  const popoverOrModal = this.el.closest('ion-modal, ion-popover');
16536
16539
  if (popoverOrModal) {
16537
- popoverOrModal.dismiss();
16540
+ popoverOrModal.dismiss(undefined, role);
16538
16541
  }
16539
16542
  };
16540
16543
  this.setWorkingParts = (parts) => {
@@ -17204,7 +17207,7 @@ class Datetime {
17204
17207
  }
17205
17208
  }
17206
17209
  if (closeOverlay) {
17207
- this.closeParentOverlay();
17210
+ this.closeParentOverlay(CONFIRM_ROLE);
17208
17211
  }
17209
17212
  }
17210
17213
  /**
@@ -17224,7 +17227,7 @@ class Datetime {
17224
17227
  async cancel(closeOverlay = false) {
17225
17228
  this.ionCancel.emit();
17226
17229
  if (closeOverlay) {
17227
- this.closeParentOverlay();
17230
+ this.closeParentOverlay(CANCEL_ROLE);
17228
17231
  }
17229
17232
  }
17230
17233
  get isCalendarPicker() {
@@ -17536,7 +17539,7 @@ class Datetime {
17536
17539
  const todayString = workingParts.day !== null
17537
17540
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
17538
17541
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
17539
- return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
17542
+ return (hAsync("ion-picker-column", { "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
17540
17543
  const { value } = ev.detail;
17541
17544
  const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
17542
17545
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), findPart));
@@ -17611,7 +17614,7 @@ class Datetime {
17611
17614
  const { disabled, workingParts } = this;
17612
17615
  const activePart = this.getActivePartsWithFallback();
17613
17616
  const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
17614
- return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
17617
+ return (hAsync("ion-picker-column", { "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
17615
17618
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { day: ev.detail.value }));
17616
17619
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { day: ev.detail.value }));
17617
17620
  ev.stopPropagation();
@@ -17623,7 +17626,7 @@ class Datetime {
17623
17626
  }
17624
17627
  const { disabled, workingParts } = this;
17625
17628
  const activePart = this.getActivePartsWithFallback();
17626
- return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
17629
+ return (hAsync("ion-picker-column", { "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
17627
17630
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { month: ev.detail.value }));
17628
17631
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { month: ev.detail.value }));
17629
17632
  ev.stopPropagation();
@@ -17635,7 +17638,7 @@ class Datetime {
17635
17638
  }
17636
17639
  const { disabled, workingParts } = this;
17637
17640
  const activePart = this.getActivePartsWithFallback();
17638
- return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
17641
+ return (hAsync("ion-picker-column", { "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
17639
17642
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { year: ev.detail.value }));
17640
17643
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { year: ev.detail.value }));
17641
17644
  ev.stopPropagation();
@@ -17668,7 +17671,7 @@ class Datetime {
17668
17671
  if (hoursData.length === 0)
17669
17672
  return [];
17670
17673
  const activePart = this.getActivePartsWithFallback();
17671
- return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
17674
+ return (hAsync("ion-picker-column", { "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
17672
17675
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
17673
17676
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
17674
17677
  ev.stopPropagation();
@@ -17679,7 +17682,7 @@ class Datetime {
17679
17682
  if (minutesData.length === 0)
17680
17683
  return [];
17681
17684
  const activePart = this.getActivePartsWithFallback();
17682
- return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
17685
+ return (hAsync("ion-picker-column", { "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
17683
17686
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
17684
17687
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
17685
17688
  ev.stopPropagation();
@@ -17692,7 +17695,7 @@ class Datetime {
17692
17695
  }
17693
17696
  const activePart = this.getActivePartsWithFallback();
17694
17697
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
17695
- return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
17698
+ 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) => {
17696
17699
  const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
17697
17700
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
17698
17701
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
@@ -18002,7 +18005,7 @@ class Datetime {
18002
18005
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
18003
18006
  const hasWheelVariant = hasDatePresentation && preferWheel;
18004
18007
  renderHiddenInput(true, el, name, formatValue(value), disabled);
18005
- return (hAsync(Host, { key: 'f1f8ca52cdd9cfc8394b0365c89c0d30cd7316e7', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
18008
+ return (hAsync(Host, { key: '4e247382419e963381c8dcde52ba5aaaae0e6cee', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
18006
18009
  [mode]: true,
18007
18010
  ['datetime-readonly']: readonly,
18008
18011
  ['datetime-disabled']: disabled,
@@ -18012,7 +18015,7 @@ class Datetime {
18012
18015
  [`datetime-size-${size}`]: true,
18013
18016
  [`datetime-prefer-wheel`]: hasWheelVariant,
18014
18017
  [`datetime-grid`]: isGridStyle,
18015
- })) }, hAsync("div", { key: '480068aa8072b60ac521646dfa82480c5f6ce6ef', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18018
+ })) }, hAsync("div", { key: '27bc39dd318bab9dc4078eedc4fc1b4842f145e6', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18016
18019
  }
18017
18020
  get el() { return getElement(this); }
18018
18021
  static get watchers() { return {
@@ -18081,6 +18084,8 @@ class Datetime {
18081
18084
  }; }
18082
18085
  }
18083
18086
  let datetimeIds = 0;
18087
+ const CANCEL_ROLE = 'datetime-cancel';
18088
+ const CONFIRM_ROLE = 'datetime-confirm';
18084
18089
  const WHEEL_ITEM_PART = 'wheel-item';
18085
18090
  const WHEEL_ITEM_ACTIVE_PART = `active`;
18086
18091
 
@@ -18418,11 +18423,11 @@ class DatetimeButton {
18418
18423
  render() {
18419
18424
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
18420
18425
  const mode = getIonMode$1(this);
18421
- return (hAsync(Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: createColorClasses$1(color, {
18426
+ return (hAsync(Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: createColorClasses$1(color, {
18422
18427
  [mode]: true,
18423
18428
  [`${selectedButton}-active`]: datetimeActive,
18424
18429
  ['datetime-button-disabled']: disabled,
18425
- }) }, 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' })))));
18430
+ }) }, 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' })))));
18426
18431
  }
18427
18432
  get el() { return getElement(this); }
18428
18433
  static get style() { return {
@@ -18496,12 +18501,12 @@ class Fab {
18496
18501
  render() {
18497
18502
  const { horizontal, vertical, edge } = this;
18498
18503
  const mode = getIonMode$1(this);
18499
- return (hAsync(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
18504
+ return (hAsync(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
18500
18505
  [mode]: true,
18501
18506
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
18502
18507
  [`fab-vertical-${vertical}`]: vertical !== undefined,
18503
18508
  'fab-edge': edge,
18504
- } }, hAsync("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
18509
+ } }, hAsync("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
18505
18510
  }
18506
18511
  get el() { return getElement(this); }
18507
18512
  static get watchers() { return {
@@ -18591,7 +18596,7 @@ class FabButton {
18591
18596
  rel: this.rel,
18592
18597
  target: this.target,
18593
18598
  };
18594
- return (hAsync(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
18599
+ return (hAsync(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
18595
18600
  [mode]: true,
18596
18601
  'fab-button-in-list': inList,
18597
18602
  'fab-button-translucent-in-list': inList && translucent,
@@ -18602,7 +18607,7 @@ class FabButton {
18602
18607
  'ion-activatable': true,
18603
18608
  'ion-focusable': true,
18604
18609
  [`fab-button-${size}`]: size !== undefined,
18605
- }) }, 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' }))));
18610
+ }) }, 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' }))));
18606
18611
  }
18607
18612
  get el() { return getElement(this); }
18608
18613
  static get style() { return {
@@ -18653,11 +18658,11 @@ class FabList {
18653
18658
  }
18654
18659
  render() {
18655
18660
  const mode = getIonMode$1(this);
18656
- return (hAsync(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
18661
+ return (hAsync(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
18657
18662
  [mode]: true,
18658
18663
  'fab-list-active': this.activated,
18659
18664
  [`fab-list-side-${this.side}`]: true,
18660
- } }, hAsync("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
18665
+ } }, hAsync("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
18661
18666
  }
18662
18667
  get el() { return getElement(this); }
18663
18668
  static get watchers() { return {
@@ -19109,7 +19114,7 @@ class Footer {
19109
19114
  const mode = getIonMode$1(this);
19110
19115
  const tabs = this.el.closest('ion-tabs');
19111
19116
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
19112
- return (hAsync(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
19117
+ return (hAsync(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
19113
19118
  [mode]: true,
19114
19119
  // Used internally for styling
19115
19120
  [`footer-${mode}`]: true,
@@ -19117,7 +19122,7 @@ class Footer {
19117
19122
  [`footer-translucent-${mode}`]: translucent,
19118
19123
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
19119
19124
  [`footer-collapse-${collapse}`]: collapse !== undefined,
19120
- } }, mode === 'ios' && translucent && hAsync("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), hAsync("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
19125
+ } }, mode === 'ios' && translucent && hAsync("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), hAsync("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
19121
19126
  }
19122
19127
  get el() { return getElement(this); }
19123
19128
  static get style() { return {
@@ -19148,10 +19153,10 @@ class Grid {
19148
19153
  }
19149
19154
  render() {
19150
19155
  const mode = getIonMode$1(this);
19151
- return (hAsync(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
19156
+ return (hAsync(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
19152
19157
  [mode]: true,
19153
19158
  'grid-fixed': this.fixed,
19154
- } }, hAsync("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
19159
+ } }, hAsync("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
19155
19160
  }
19156
19161
  static get style() { return IonGridStyle0; }
19157
19162
  static get cmpMeta() { return {
@@ -19482,14 +19487,14 @@ class Header {
19482
19487
  const collapse = this.collapse || 'none';
19483
19488
  // banner role must be at top level, so remove role if inside a menu
19484
19489
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
19485
- return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
19490
+ return (hAsync(Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
19486
19491
  [mode]: true,
19487
19492
  // Used internally for styling
19488
19493
  [`header-${mode}`]: true,
19489
19494
  [`header-translucent`]: this.translucent,
19490
19495
  [`header-collapse-${collapse}`]: true,
19491
19496
  [`header-translucent-${mode}`]: this.translucent,
19492
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
19497
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), hAsync("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
19493
19498
  }
19494
19499
  get el() { return getElement(this); }
19495
19500
  static get style() { return {
@@ -19768,7 +19773,7 @@ class Img {
19768
19773
  render() {
19769
19774
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
19770
19775
  const { draggable } = inheritedAttributes;
19771
- 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) })));
19776
+ 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) })));
19772
19777
  }
19773
19778
  get el() { return getElement(this); }
19774
19779
  static get watchers() { return {
@@ -19975,7 +19980,7 @@ class InfiniteScroll {
19975
19980
  render() {
19976
19981
  const mode = getIonMode$1(this);
19977
19982
  const disabled = this.disabled;
19978
- return (hAsync(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
19983
+ return (hAsync(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
19979
19984
  [mode]: true,
19980
19985
  'infinite-scroll-loading': this.isLoading,
19981
19986
  'infinite-scroll-enabled': !disabled,
@@ -20031,11 +20036,11 @@ class InfiniteScrollContent {
20031
20036
  }
20032
20037
  render() {
20033
20038
  const mode = getIonMode$1(this);
20034
- return (hAsync(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
20039
+ return (hAsync(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
20035
20040
  [mode]: true,
20036
20041
  // Used internally for styling
20037
20042
  [`infinite-scroll-content-${mode}`]: true,
20038
- } }, 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())));
20043
+ } }, 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())));
20039
20044
  }
20040
20045
  static get style() { return {
20041
20046
  ios: IonInfiniteScrollContentIosStyle0,
@@ -20459,6 +20464,7 @@ class Input {
20459
20464
  this.autocorrect = 'off';
20460
20465
  this.autofocus = false;
20461
20466
  this.clearInput = false;
20467
+ this.clearInputIcon = undefined;
20462
20468
  this.clearOnEdit = undefined;
20463
20469
  this.counter = false;
20464
20470
  this.counterFormatter = undefined;
@@ -20739,11 +20745,13 @@ class Input {
20739
20745
  return this.renderLabel();
20740
20746
  }
20741
20747
  render() {
20742
- const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus } = this;
20748
+ const { disabled, fill, readonly, shape, inputId, labelPlacement, el, hasFocus, clearInputIcon } = this;
20743
20749
  const mode = getIonMode$1(this);
20744
20750
  const value = this.getValue();
20745
20751
  const inItem = hostContext('ion-item', this.el);
20746
20752
  const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
20753
+ const defaultClearIcon = mode === 'ios' ? closeCircle : closeSharp;
20754
+ const clearIconData = clearInputIcon !== null && clearInputIcon !== void 0 ? clearInputIcon : defaultClearIcon;
20747
20755
  const hasValue = this.hasValue();
20748
20756
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
20749
20757
  /**
@@ -20764,7 +20772,7 @@ class Input {
20764
20772
  * TODO(FW-5592): Remove hasStartEndSlots condition
20765
20773
  */
20766
20774
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
20767
- return (hAsync(Host, { key: '083568e68a2970485e93a84ad3b837c117e03fed', class: createColorClasses$1(this.color, {
20775
+ return (hAsync(Host, { key: '72705dc05d44da17c617402c2d236a7b58b314f4', class: createColorClasses$1(this.color, {
20768
20776
  [mode]: true,
20769
20777
  'has-value': hasValue,
20770
20778
  'has-focus': hasFocus,
@@ -20775,22 +20783,14 @@ class Input {
20775
20783
  'in-item': inItem,
20776
20784
  'in-item-color': hostContext('ion-item.ion-color', this.el),
20777
20785
  'input-disabled': disabled,
20778
- }) }, hAsync("label", { key: '5e6767a20b8ac61d5df69106f4ce11ecc46ae5bf', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '4af8df127e8194b4eeb8b16936a36489aee17009', class: "native-wrapper" }, hAsync("slot", { key: '90e925fa36a5c057a4ca5e03d5fcaf8e12e711ad', name: "start" }), hAsync("input", Object.assign({ key: '0a5455e8c31beca48e08b97faa5e3e069822248f', 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: 'b9eab01b390581d20c861ae6a4c49bde0841f14c', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
20786
+ }) }, hAsync("label", { key: 'f8c3f6da165b1299f0a6ceb5f4801e4d11eef832', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'a9232033f23a51ec542bf23e7691966eefdf30c1', class: "native-wrapper" }, hAsync("slot", { key: 'c38d8d6a4bbb64d5416a2f5948055610278c4527', name: "start" }), hAsync("input", Object.assign({ key: 'bb00038edf66e9617439b5b12600f38a9ba06dc6', 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: '8aa7bdac43a74bc16c7163b5af8dff6d5b37ce0a', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
20779
20787
  /**
20780
20788
  * This prevents mobile browsers from
20781
20789
  * blurring the input when the clear
20782
20790
  * button is activated.
20783
20791
  */
20784
20792
  ev.preventDefault();
20785
- }, onFocusin: (ev) => {
20786
- /**
20787
- * Prevent the focusin event from bubbling otherwise it will cause the focusin
20788
- * event listener in scroll assist to fire. When this fires, focus will be moved
20789
- * back to the input even if the clear button was never tapped. This poses issues
20790
- * for screen readers as it means users would be unable to swipe past the clear button.
20791
- */
20792
- ev.stopPropagation();
20793
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '8284ba60924a42fd6d352d23441524f8a027e0ce', "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), hAsync("slot", { key: '8f3c04ecc32cb04a06ebb916b79071414b2a5263', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '7e97782b292fd140b3fe7f13de05dfafb4b0fa28', class: "input-highlight" })), this.renderBottomContent()));
20793
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '200261c73f9610ef80609605ef2bc7b0affaf857', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '5f4511c2f332c906d1d24dfce77e8758e3869d1f', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '092a55c60b3ca1aaa4cc0ddd782b3ffc7cbc03fa', class: "input-highlight" })), this.renderBottomContent()));
20794
20794
  }
20795
20795
  get el() { return getElement(this); }
20796
20796
  static get watchers() { return {
@@ -20812,6 +20812,7 @@ class Input {
20812
20812
  "autocorrect": [1],
20813
20813
  "autofocus": [4],
20814
20814
  "clearInput": [4, "clear-input"],
20815
+ "clearInputIcon": [1, "clear-input-icon"],
20815
20816
  "clearOnEdit": [4, "clear-on-edit"],
20816
20817
  "counter": [4],
20817
20818
  "counterFormatter": [16],
@@ -20911,16 +20912,16 @@ class InputPasswordToggle {
20911
20912
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
20912
20913
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
20913
20914
  const isPasswordVisible = type === 'text';
20914
- return (hAsync(Host, { key: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses$1(color, {
20915
+ return (hAsync(Host, { key: 'ed1c29726ce0c91548f0e2ada61e3f8b5c813d2d', class: createColorClasses$1(color, {
20915
20916
  [mode]: true,
20916
- }) }, 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) => {
20917
+ }) }, 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) => {
20917
20918
  /**
20918
20919
  * This prevents mobile browsers from
20919
20920
  * blurring the input when the password toggle
20920
20921
  * button is activated.
20921
20922
  */
20922
20923
  ev.preventDefault();
20923
- }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '9c88de8f4631d9bde222ce2edf6950d639e04773', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
20924
+ }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '1f2119c30b56c800d9af44e6499445a0ebb466cf', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
20924
20925
  }
20925
20926
  get el() { return getElement(this); }
20926
20927
  static get watchers() { return {
@@ -21216,11 +21217,11 @@ class ItemDivider {
21216
21217
  }
21217
21218
  render() {
21218
21219
  const mode = getIonMode$1(this);
21219
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
21220
+ return (hAsync(Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: createColorClasses$1(this.color, {
21220
21221
  [mode]: true,
21221
21222
  'item-divider-sticky': this.sticky,
21222
21223
  item: true,
21223
- }) }, 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" }))));
21224
+ }) }, 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" }))));
21224
21225
  }
21225
21226
  get el() { return getElement(this); }
21226
21227
  static get style() { return {
@@ -21252,7 +21253,7 @@ class ItemGroup {
21252
21253
  }
21253
21254
  render() {
21254
21255
  const mode = getIonMode$1(this);
21255
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
21256
+ return (hAsync(Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
21256
21257
  [mode]: true,
21257
21258
  // Used internally for styling
21258
21259
  [`item-group-${mode}`]: true,
@@ -21320,12 +21321,12 @@ class ItemOption {
21320
21321
  href: this.href,
21321
21322
  target: this.target,
21322
21323
  };
21323
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
21324
+ return (hAsync(Host, { key: '1900e015f593fefd710478a2088e052399c957eb', onClick: this.onClick, class: createColorClasses$1(this.color, {
21324
21325
  [mode]: true,
21325
21326
  'item-option-disabled': disabled,
21326
21327
  'item-option-expandable': expandable,
21327
21328
  'ion-activatable': true,
21328
- }) }, 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' }))));
21329
+ }) }, 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' }))));
21329
21330
  }
21330
21331
  get el() { return getElement(this); }
21331
21332
  static get style() { return {
@@ -21372,7 +21373,7 @@ class ItemOptions {
21372
21373
  render() {
21373
21374
  const mode = getIonMode$1(this);
21374
21375
  const isEnd = isEndSide(this.side);
21375
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
21376
+ return (hAsync(Host, { key: 'e28cd6a236323b5cc203c9b96782aa81024da924', class: {
21376
21377
  [mode]: true,
21377
21378
  // Used internally for styling
21378
21379
  [`item-options-${mode}`]: true,
@@ -21834,7 +21835,7 @@ class ItemSliding {
21834
21835
  }
21835
21836
  render() {
21836
21837
  const mode = getIonMode$1(this);
21837
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
21838
+ return (hAsync(Host, { key: '99f87c8bd794ae69830b407ba55013ac44793c26', class: {
21838
21839
  [mode]: true,
21839
21840
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
21840
21841
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -21943,13 +21944,13 @@ class Label {
21943
21944
  render() {
21944
21945
  const position = this.position;
21945
21946
  const mode = getIonMode$1(this);
21946
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
21947
+ return (hAsync(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses$1(this.color, {
21947
21948
  [mode]: true,
21948
21949
  'in-item-color': hostContext('ion-item.ion-color', this.el),
21949
21950
  [`label-${position}`]: position !== undefined,
21950
21951
  [`label-no-animate`]: this.noAnimate,
21951
21952
  'label-rtl': document.dir === 'rtl',
21952
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
21953
+ }) }, hAsync("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
21953
21954
  }
21954
21955
  get el() { return getElement(this); }
21955
21956
  static get watchers() { return {
@@ -22005,7 +22006,7 @@ class List {
22005
22006
  render() {
22006
22007
  const mode = getIonMode$1(this);
22007
22008
  const { lines, inset } = this;
22008
- return (hAsync(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
22009
+ return (hAsync(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
22009
22010
  [mode]: true,
22010
22011
  // Used internally for styling
22011
22012
  [`list-${mode}`]: true,
@@ -22051,10 +22052,10 @@ class ListHeader {
22051
22052
  render() {
22052
22053
  const { lines } = this;
22053
22054
  const mode = getIonMode$1(this);
22054
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
22055
+ return (hAsync(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses$1(this.color, {
22055
22056
  [mode]: true,
22056
22057
  [`list-header-lines-${lines}`]: lines !== undefined,
22057
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
22058
+ }) }, hAsync("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, hAsync("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
22058
22059
  }
22059
22060
  static get style() { return {
22060
22061
  ios: IonListHeaderIosStyle0,
@@ -22320,9 +22321,9 @@ class Loading {
22320
22321
  * Otherwise, don't set aria-labelledby.
22321
22322
  */
22322
22323
  const ariaLabelledBy = message !== undefined ? msgId : null;
22323
- return (hAsync(Host, Object.assign({ key: 'f48fc35c38f3c200f39a44f3e741c1676057248e', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22324
+ return (hAsync(Host, Object.assign({ key: '4610b316b10a4df3416d0e83062935f3079baff2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22324
22325
  zIndex: `${40000 + this.overlayIndex}`,
22325
- }, 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" })));
22326
+ }, 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" })));
22326
22327
  }
22327
22328
  get el() { return getElement(this); }
22328
22329
  static get watchers() { return {
@@ -23303,14 +23304,14 @@ class Menu {
23303
23304
  * the ionBackButton listener in the menu controller
23304
23305
  * will handle closing the menu when Escape is pressed.
23305
23306
  */
23306
- return (hAsync(Host, { key: '68ea0bdf902c1f6369db93d69cacc0f30e1df32b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
23307
+ return (hAsync(Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
23307
23308
  [mode]: true,
23308
23309
  [`menu-type-${type}`]: true,
23309
23310
  'menu-enabled': !disabled,
23310
23311
  [`menu-side-${side}`]: true,
23311
23312
  'menu-pane-visible': isPaneVisible,
23312
23313
  'split-pane-side': hostContext('ion-split-pane', el),
23313
- } }, 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" })));
23314
+ } }, 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" })));
23314
23315
  }
23315
23316
  get el() { return getElement(this); }
23316
23317
  static get watchers() { return {
@@ -23413,7 +23414,7 @@ class MenuButton {
23413
23414
  type: this.type,
23414
23415
  };
23415
23416
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
23416
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
23417
+ return (hAsync(Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
23417
23418
  [mode]: true,
23418
23419
  button: true, // ion-buttons target .button
23419
23420
  'menu-button-hidden': hidden,
@@ -23422,7 +23423,7 @@ class MenuButton {
23422
23423
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
23423
23424
  'ion-activatable': true,
23424
23425
  'ion-focusable': true,
23425
- }) }, 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" }))));
23426
+ }) }, 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" }))));
23426
23427
  }
23427
23428
  get el() { return getElement(this); }
23428
23429
  static get style() { return {
@@ -23471,10 +23472,10 @@ class MenuToggle {
23471
23472
  render() {
23472
23473
  const mode = getIonMode$1(this);
23473
23474
  const hidden = this.autoHide && !this.visible;
23474
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
23475
+ return (hAsync(Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
23475
23476
  [mode]: true,
23476
23477
  'menu-toggle-hidden': hidden,
23477
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
23478
+ } }, hAsync("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
23478
23479
  }
23479
23480
  static get style() { return IonMenuToggleStyle0; }
23480
23481
  static get cmpMeta() { return {
@@ -23528,8 +23529,117 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
23528
23529
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
23529
23530
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
23530
23531
 
23532
+ /**
23533
+ * Moves focus to a specified element. Note that we do not remove the tabindex
23534
+ * because that can result in an unintentional blur. Non-focusables can't be
23535
+ * focused, so the body will get focused again.
23536
+ */
23537
+ const moveFocus = (el) => {
23538
+ el.tabIndex = -1;
23539
+ el.focus();
23540
+ };
23541
+ /**
23542
+ * Elements that are hidden using `display: none` should not be focused even if
23543
+ * they are present in the DOM.
23544
+ */
23545
+ const isVisible = (el) => {
23546
+ return el.offsetParent !== null;
23547
+ };
23548
+ /**
23549
+ * The focus controller allows us to manage focus within a view so assistive
23550
+ * technologies can inform users of changes to the navigation state. Traditional
23551
+ * native apps have a way of informing assistive technology about a navigation
23552
+ * state change. Mobile browsers have this too, but only when doing a full page
23553
+ * load. In a single page app we do not do that, so we need to build this
23554
+ * integration ourselves.
23555
+ */
23556
+ const createFocusController = () => {
23557
+ const saveViewFocus = (referenceEl) => {
23558
+ const focusManagerEnabled = config.get('focusManagerPriority', false);
23559
+ /**
23560
+ * When going back to a previously visited page focus should typically be moved
23561
+ * back to the element that was last focused when the user was on this view.
23562
+ */
23563
+ if (focusManagerEnabled) {
23564
+ const activeEl = document.activeElement;
23565
+ if (activeEl !== null && (referenceEl === null || referenceEl === void 0 ? void 0 : referenceEl.contains(activeEl))) {
23566
+ activeEl.setAttribute(LAST_FOCUS, 'true');
23567
+ }
23568
+ }
23569
+ };
23570
+ const setViewFocus = (referenceEl) => {
23571
+ const focusManagerPriorities = config.get('focusManagerPriority', false);
23572
+ /**
23573
+ * If the focused element is a descendant of the referenceEl then it's possible
23574
+ * that the app developer manually moved focus, so we do not want to override that.
23575
+ * This can happen with inputs the are focused when a view transitions in.
23576
+ */
23577
+ if (Array.isArray(focusManagerPriorities) && !referenceEl.contains(document.activeElement)) {
23578
+ /**
23579
+ * When going back to a previously visited view focus should always be moved back
23580
+ * to the element that the user was last focused on when they were on this view.
23581
+ */
23582
+ const lastFocus = referenceEl.querySelector(`[${LAST_FOCUS}]`);
23583
+ if (lastFocus && isVisible(lastFocus)) {
23584
+ moveFocus(lastFocus);
23585
+ return;
23586
+ }
23587
+ for (const priority of focusManagerPriorities) {
23588
+ /**
23589
+ * For each recognized case (excluding the default case) make sure to return
23590
+ * so that the fallback focus behavior does not run.
23591
+ *
23592
+ * We intentionally query for specific roles/semantic elements so that the
23593
+ * transition manager can work with both Ionic and non-Ionic UI components.
23594
+ *
23595
+ * If new selectors are added, be sure to remove the outline ring by adding
23596
+ * new selectors to rule in core.scss.
23597
+ */
23598
+ switch (priority) {
23599
+ case 'content':
23600
+ const content = referenceEl.querySelector('main, [role="main"]');
23601
+ if (content && isVisible(content)) {
23602
+ moveFocus(content);
23603
+ return;
23604
+ }
23605
+ break;
23606
+ case 'heading':
23607
+ const headingOne = referenceEl.querySelector('h1, [role="heading"][aria-level="1"]');
23608
+ if (headingOne && isVisible(headingOne)) {
23609
+ moveFocus(headingOne);
23610
+ return;
23611
+ }
23612
+ break;
23613
+ case 'banner':
23614
+ const header = referenceEl.querySelector('header, [role="banner"]');
23615
+ if (header && isVisible(header)) {
23616
+ moveFocus(header);
23617
+ return;
23618
+ }
23619
+ break;
23620
+ default:
23621
+ printIonWarning(`Unrecognized focus manager priority value ${priority}`);
23622
+ break;
23623
+ }
23624
+ }
23625
+ /**
23626
+ * If there is nothing to focus then focus the page so focus at least moves to
23627
+ * the correct view. The browser will then determine where within the page to
23628
+ * move focus to.
23629
+ */
23630
+ moveFocus(referenceEl);
23631
+ }
23632
+ };
23633
+ return {
23634
+ saveViewFocus,
23635
+ setViewFocus,
23636
+ };
23637
+ };
23638
+ const LAST_FOCUS = 'ion-last-focus';
23639
+
23531
23640
  const iosTransitionAnimation$1 = () => Promise.resolve().then(function () { return ios_transition; });
23532
23641
  const mdTransitionAnimation$1 = () => Promise.resolve().then(function () { return md_transition; });
23642
+ const focusController = createFocusController();
23533
23643
  // TODO(FW-2832): types
23534
23644
  const transition = (opts) => {
23535
23645
  return new Promise((resolve, reject) => {
@@ -23551,6 +23661,7 @@ const transition = (opts) => {
23551
23661
  const beforeTransition = (opts) => {
23552
23662
  const enteringEl = opts.enteringEl;
23553
23663
  const leavingEl = opts.leavingEl;
23664
+ focusController.saveViewFocus(leavingEl);
23554
23665
  setZIndex(enteringEl, leavingEl, opts.direction);
23555
23666
  if (opts.showGoBack) {
23556
23667
  enteringEl.classList.add('can-go-back');
@@ -23585,6 +23696,7 @@ const afterTransition = (opts) => {
23585
23696
  leavingEl.classList.remove('ion-page-invisible');
23586
23697
  leavingEl.style.removeProperty('pointer-events');
23587
23698
  }
23699
+ focusController.setViewFocus(enteringEl);
23588
23700
  };
23589
23701
  const getAnimationBuilder = async (opts) => {
23590
23702
  if (!opts.leavingEl || !opts.animated || opts.duration === 0) {
@@ -23617,7 +23729,12 @@ const animation = async (animationBuilder, opts) => {
23617
23729
  const noAnimation = async (opts) => {
23618
23730
  const enteringEl = opts.enteringEl;
23619
23731
  const leavingEl = opts.leavingEl;
23620
- await waitForReady(opts, false);
23732
+ const focusManagerEnabled = config.get('focusManagerPriority', false);
23733
+ /**
23734
+ * If the focus manager is enabled then we need to wait for Ionic components to be
23735
+ * rendered otherwise the component to focus may not be focused because it is hidden.
23736
+ */
23737
+ await waitForReady(opts, focusManagerEnabled);
23621
23738
  fireWillEvents(enteringEl, leavingEl);
23622
23739
  fireDidEvents(enteringEl, leavingEl);
23623
23740
  return {
@@ -24510,7 +24627,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
24510
24627
  * as inputs should not be focusable outside
24511
24628
  * the sheet.
24512
24629
  */
24513
- baseEl.classList.remove('ion-disable-focus-trap');
24630
+ baseEl.classList.remove(FOCUS_TRAP_DISABLE_CLASS);
24514
24631
  };
24515
24632
  const disableBackdrop = () => {
24516
24633
  baseEl.style.setProperty('pointer-events', 'none');
@@ -24522,7 +24639,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
24522
24639
  * Adding this class disables focus trapping
24523
24640
  * for the sheet temporarily.
24524
24641
  */
24525
- baseEl.classList.add('ion-disable-focus-trap');
24642
+ baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
24526
24643
  };
24527
24644
  /**
24528
24645
  * After the entering animation completes,
@@ -24897,6 +25014,7 @@ class Modal {
24897
25014
  this.isOpen = false;
24898
25015
  this.trigger = undefined;
24899
25016
  this.keepContentsMounted = false;
25017
+ this.focusTrap = true;
24900
25018
  this.canDismiss = true;
24901
25019
  }
24902
25020
  onIsOpenChange(newValue, oldValue) {
@@ -25353,23 +25471,23 @@ class Modal {
25353
25471
  return true;
25354
25472
  }
25355
25473
  render() {
25356
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;
25474
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
25357
25475
  const showHandle = handle !== false && isSheetModal;
25358
25476
  const mode = getIonMode$1(this);
25359
25477
  const isCardModal = presentingElement !== undefined && mode === 'ios';
25360
25478
  const isHandleCycle = handleBehavior === 'cycle';
25361
- return (hAsync(Host, Object.assign({ key: 'bb00efb8cbbdb2d1bbcc5e9c638586e2904882a8', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
25479
+ return (hAsync(Host, Object.assign({ key: 'fe6fd17cf857127f89d652b9aa3e9473d28c55db', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
25362
25480
  zIndex: `${20000 + this.overlayIndex}`,
25363
- }, 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',
25481
+ }, 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',
25364
25482
  /*
25365
25483
  role and aria-modal must be used on the
25366
25484
  same element. They must also be set inside the
25367
25485
  shadow DOM otherwise ion-button will not be highlighted
25368
25486
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
25369
25487
  */
25370
- 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",
25488
+ 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",
25371
25489
  // Prevents the handle from receiving keyboard focus when it does not cycle
25372
- 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' }))));
25490
+ 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' }))));
25373
25491
  }
25374
25492
  get el() { return getElement(this); }
25375
25493
  static get watchers() { return {
@@ -25406,6 +25524,7 @@ class Modal {
25406
25524
  "isOpen": [4, "is-open"],
25407
25525
  "trigger": [1],
25408
25526
  "keepContentsMounted": [4, "keep-contents-mounted"],
25527
+ "focusTrap": [4, "focus-trap"],
25409
25528
  "canDismiss": [4, "can-dismiss"],
25410
25529
  "presented": [32],
25411
25530
  "present": [64],
@@ -26317,7 +26436,7 @@ class Nav {
26317
26436
  }
26318
26437
  }
26319
26438
  render() {
26320
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
26439
+ return hAsync("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
26321
26440
  }
26322
26441
  get el() { return getElement(this); }
26323
26442
  static get watchers() { return {
@@ -26390,7 +26509,7 @@ class NavLink {
26390
26509
  this.routerAnimation = undefined;
26391
26510
  }
26392
26511
  render() {
26393
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
26512
+ return hAsync(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
26394
26513
  }
26395
26514
  get el() { return getElement(this); }
26396
26515
  static get cmpMeta() { return {
@@ -26424,9 +26543,9 @@ class Note {
26424
26543
  }
26425
26544
  render() {
26426
26545
  const mode = getIonMode$1(this);
26427
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
26546
+ return (hAsync(Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: createColorClasses$1(this.color, {
26428
26547
  [mode]: true,
26429
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
26548
+ }) }, hAsync("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
26430
26549
  }
26431
26550
  static get style() { return {
26432
26551
  ios: IonNoteIosStyle0,
@@ -26923,7 +27042,7 @@ class Picker$1 {
26923
27042
  this.emitInputModeChange();
26924
27043
  }
26925
27044
  render() {
26926
- 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) => {
27045
+ 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) => {
26927
27046
  var _a;
26928
27047
  /**
26929
27048
  * The "Enter" key represents
@@ -26938,7 +27057,7 @@ class Picker$1 {
26938
27057
  if (ev.key === 'Enter') {
26939
27058
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
26940
27059
  }
26941
- }, 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' })));
27060
+ }, 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' })));
26942
27061
  }
26943
27062
  get el() { return getElement(this); }
26944
27063
  static get style() { return {
@@ -27188,11 +27307,11 @@ class Picker {
27188
27307
  render() {
27189
27308
  const { htmlAttributes } = this;
27190
27309
  const mode = getIonMode$1(this);
27191
- return (hAsync(Host, Object.assign({ key: 'cb1495acc8842c00e9f51ae792a01f769e36b0c6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
27310
+ return (hAsync(Host, Object.assign({ key: '26e3144adcdf01605271d01e468bb4a75ce854b1', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
27192
27311
  zIndex: `${20000 + this.overlayIndex}`,
27193
27312
  }, class: Object.assign({ [mode]: true,
27194
27313
  // Used internally for styling
27195
- [`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" })));
27314
+ [`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" })));
27196
27315
  }
27197
27316
  get el() { return getElement(this); }
27198
27317
  static get watchers() { return {
@@ -27245,7 +27364,7 @@ const buttonClass$1 = (button) => {
27245
27364
  return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
27246
27365
  };
27247
27366
 
27248
- 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)}}";
27367
+ 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)}}";
27249
27368
  var IonPickerColumnStyle0 = pickerColumnCss;
27250
27369
 
27251
27370
  /**
@@ -27261,6 +27380,7 @@ class PickerColumn {
27261
27380
  this.isScrolling = false;
27262
27381
  this.isColumnVisible = false;
27263
27382
  this.canExitInputMode = true;
27383
+ this.updateValueTextOnScroll = false;
27264
27384
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
27265
27385
  const { isColumnVisible, scrollEl } = this;
27266
27386
  if (isColumnVisible && scrollEl) {
@@ -27275,6 +27395,7 @@ class PickerColumn {
27275
27395
  * of these can cause a scroll to occur.
27276
27396
  */
27277
27397
  this.canExitInputMode = canExitInputMode;
27398
+ this.updateValueTextOnScroll = false;
27278
27399
  scrollEl.scroll({
27279
27400
  top,
27280
27401
  left: 0,
@@ -27347,6 +27468,7 @@ class PickerColumn {
27347
27468
  let activeEl = this.activeItem;
27348
27469
  const scrollCallback = () => {
27349
27470
  raf(() => {
27471
+ var _a;
27350
27472
  if (!scrollEl)
27351
27473
  return;
27352
27474
  if (timeout) {
@@ -27427,8 +27549,23 @@ class PickerColumn {
27427
27549
  }
27428
27550
  activeEl = newActiveElement;
27429
27551
  this.setPickerItemActiveState(newActiveElement, true);
27552
+ /**
27553
+ * Set the aria-valuetext even though the value prop has not been updated yet.
27554
+ * This enables some screen readers to announce the value as the users drag
27555
+ * as opposed to when their release their pointer from the screen.
27556
+ *
27557
+ * When the value is programmatically updated, we will smoothly scroll
27558
+ * to the new option. However, we do not want to update aria-valuetext mid-scroll
27559
+ * as that can cause the old value to be briefly set before being set to the
27560
+ * correct option. This will cause some screen readers to announce the old value
27561
+ * again before announcing the new value. The correct valuetext will be set on render.
27562
+ */
27563
+ if (this.updateValueTextOnScroll) {
27564
+ (_a = this.assistiveFocusable) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
27565
+ }
27430
27566
  timeout = setTimeout(() => {
27431
27567
  this.isScrolling = false;
27568
+ this.updateValueTextOnScroll = true;
27432
27569
  enableHaptics && hapticSelectionEnd();
27433
27570
  /**
27434
27571
  * Certain tasks (such as those that
@@ -27487,12 +27624,139 @@ class PickerColumn {
27487
27624
  */
27488
27625
  this.el.classList.remove('picker-column-active');
27489
27626
  };
27627
+ /**
27628
+ * Find the next enabled option after the active option.
27629
+ * @param stride - How many options to "jump" over in order to select the next option.
27630
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
27631
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
27632
+ * the enabled option 5 options after the active one. Note that the actual option selected
27633
+ * may be past the stride if the option at the stride is disabled.
27634
+ */
27635
+ this.findNextOption = (stride = 1) => {
27636
+ const { activeItem } = this;
27637
+ if (!activeItem)
27638
+ return null;
27639
+ let prevNode = activeItem;
27640
+ let node = activeItem.nextElementSibling;
27641
+ while (node != null) {
27642
+ if (stride > 0) {
27643
+ stride--;
27644
+ }
27645
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
27646
+ return node;
27647
+ }
27648
+ prevNode = node;
27649
+ // Use nextElementSibling instead of nextSibling to avoid text/comment nodes
27650
+ node = node.nextElementSibling;
27651
+ }
27652
+ return prevNode;
27653
+ };
27654
+ /**
27655
+ * Find the next enabled option after the active option.
27656
+ * @param stride - How many options to "jump" over in order to select the next option.
27657
+ * This can be used to implement PageUp/PageDown behaviors where pressing these keys
27658
+ * scrolls the picker by more than 1 option. For example, a stride of 5 means select
27659
+ * the enabled option 5 options before the active one. Note that the actual option selected
27660
+ * may be past the stride if the option at the stride is disabled.
27661
+ */
27662
+ this.findPreviousOption = (stride = 1) => {
27663
+ const { activeItem } = this;
27664
+ if (!activeItem)
27665
+ return null;
27666
+ let nextNode = activeItem;
27667
+ let node = activeItem.previousElementSibling;
27668
+ while (node != null) {
27669
+ if (stride > 0) {
27670
+ stride--;
27671
+ }
27672
+ if (node.tagName === 'ION-PICKER-COLUMN-OPTION' && !node.disabled && stride === 0) {
27673
+ return node;
27674
+ }
27675
+ nextNode = node;
27676
+ // Use previousElementSibling instead of previousSibling to avoid text/comment nodes
27677
+ node = node.previousElementSibling;
27678
+ }
27679
+ return nextNode;
27680
+ };
27681
+ this.onKeyDown = (ev) => {
27682
+ /**
27683
+ * The below operations should be inverted when running on a mobile device.
27684
+ * For example, swiping up will dispatch an "ArrowUp" event. On desktop,
27685
+ * this should cause the previous option to be selected. On mobile, swiping
27686
+ * up causes a view to scroll down. As a result, swiping up on mobile should
27687
+ * cause the next option to be selected. The Home/End operations remain
27688
+ * unchanged because those always represent the first/last options, respectively.
27689
+ */
27690
+ const mobile = isPlatform('mobile');
27691
+ let newOption = null;
27692
+ switch (ev.key) {
27693
+ case 'ArrowDown':
27694
+ newOption = mobile ? this.findPreviousOption() : this.findNextOption();
27695
+ break;
27696
+ case 'ArrowUp':
27697
+ newOption = mobile ? this.findNextOption() : this.findPreviousOption();
27698
+ break;
27699
+ case 'PageUp':
27700
+ newOption = mobile ? this.findNextOption(5) : this.findPreviousOption(5);
27701
+ break;
27702
+ case 'PageDown':
27703
+ newOption = mobile ? this.findPreviousOption(5) : this.findNextOption(5);
27704
+ break;
27705
+ case 'Home':
27706
+ /**
27707
+ * There is no guarantee that the first child will be an ion-picker-column-option,
27708
+ * so we do not use firstElementChild.
27709
+ */
27710
+ newOption = this.el.querySelector('ion-picker-column-option:first-of-type');
27711
+ break;
27712
+ case 'End':
27713
+ /**
27714
+ * There is no guarantee that the last child will be an ion-picker-column-option,
27715
+ * so we do not use lastElementChild.
27716
+ */
27717
+ newOption = this.el.querySelector('ion-picker-column-option:last-of-type');
27718
+ break;
27719
+ }
27720
+ if (newOption !== null) {
27721
+ this.value = newOption.value;
27722
+ // This stops any default browser behavior such as scrolling
27723
+ ev.preventDefault();
27724
+ }
27725
+ };
27726
+ /**
27727
+ * Utility to generate the correct text for aria-valuetext.
27728
+ */
27729
+ this.getOptionValueText = (el) => {
27730
+ var _a;
27731
+ return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
27732
+ };
27733
+ /**
27734
+ * Render an element that overlays the column. This element is for assistive
27735
+ * tech to allow users to navigate the column up/down. This element should receive
27736
+ * focus as it listens for synthesized keyboard events as required by the
27737
+ * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
27738
+ */
27739
+ this.renderAssistiveFocusable = () => {
27740
+ const { activeItem } = this;
27741
+ const valueText = this.getOptionValueText(activeItem);
27742
+ /**
27743
+ * When using the picker, the valuetext provides important context that valuenow
27744
+ * does not. Additionally, using non-zero valuemin/valuemax values can cause
27745
+ * WebKit to incorrectly announce numeric valuetext values (such as a year
27746
+ * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
27747
+ */
27748
+ 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) }));
27749
+ };
27750
+ this.ariaLabel = null;
27490
27751
  this.isActive = false;
27491
27752
  this.disabled = false;
27492
27753
  this.value = undefined;
27493
27754
  this.color = 'primary';
27494
27755
  this.numericInput = false;
27495
27756
  }
27757
+ ariaLabelChanged(newValue) {
27758
+ this.ariaLabel = newValue;
27759
+ }
27496
27760
  valueChange() {
27497
27761
  if (this.isColumnVisible) {
27498
27762
  /**
@@ -27608,6 +27872,10 @@ class PickerColumn {
27608
27872
  this.scrollEl.focus();
27609
27873
  }
27610
27874
  }
27875
+ connectedCallback() {
27876
+ var _a;
27877
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
27878
+ }
27611
27879
  get activeItem() {
27612
27880
  const { value } = this;
27613
27881
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -27625,17 +27893,18 @@ class PickerColumn {
27625
27893
  render() {
27626
27894
  const { color, disabled, isActive, numericInput } = this;
27627
27895
  const mode = getIonMode$1(this);
27628
- return (hAsync(Host, { key: '59648ef23cef1ab6d30955bb95bc23e670ec7256', class: createColorClasses$1(color, {
27896
+ return (hAsync(Host, { key: '5a6b90bacbfa016d937d1c7ae6c55fd1e19729b5', class: createColorClasses$1(color, {
27629
27897
  [mode]: true,
27630
27898
  ['picker-column-active']: isActive,
27631
27899
  ['picker-column-numeric-input']: numericInput,
27632
27900
  ['picker-column-disabled']: disabled,
27633
- }) }, hAsync("slot", { key: 'fd93192d4945b2c33e0fe93cc90b505f2cec12fc', name: "prefix" }), hAsync("div", { key: '99e49c6d58badd2fe5e75f0ebcd4bc00eb50aa58', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
27901
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '25785dd94823696945830461404d4127ebfbdb82', name: "prefix" }), hAsync("div", { key: '94cb28b3a212574400c84f8e086a1c82654549dc', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
27634
27902
  this.scrollEl = el;
27635
- } }, hAsync("div", { key: 'bb44892ef179b25373e45e4b4bc4d1fa617b1ea1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '9ee7aeb8468bbb03f7192d56849dae089b7a0250', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '0baa4bda4bf02a8d06dbf3392b1516ca8ea8d26a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'ff4cad20fd82ab66599473f60d10c18dc1dc76d8' }), hAsync("div", { key: '04dcb0390209081e6223b90e45b8f2ef0fdf94bd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '734e3b431a30ce93957e1452516efc86e29ff9c9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '1c68dcf9a029e607bb6bc9c19cd02214914eb6d7', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd85210cc99c8c1bf83eb1cd51540ebe875d4adeb', name: "suffix" })));
27903
+ } }, hAsync("div", { key: '19b174ac090d4670323fc2bd8ed8da44bf1ea692', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8c7ce6384e94acfb6154d5850f4dbabbd542edce', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'ea4f5026eff35400698e84f0c88c57ed443d82d0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '627cb80802653c8e047304d71d1b12865df316b0' }), hAsync("div", { key: '468a4fdb3ba93bc5df7e99d68b388f8b52d70945', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '88d0030269d256b4217e99e26e9a80af81120164', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'fb312153e4ad2bdcf1646751d78eeb9afd83e79c', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '7fb8379b86f016f70546110e1abf05fb02eb98fb', name: "suffix" })));
27636
27904
  }
27637
27905
  get el() { return getElement(this); }
27638
27906
  static get watchers() { return {
27907
+ "aria-label": ["ariaLabelChanged"],
27639
27908
  "value": ["valueChange"]
27640
27909
  }; }
27641
27910
  static get style() { return IonPickerColumnStyle0; }
@@ -27647,6 +27916,7 @@ class PickerColumn {
27647
27916
  "value": [1032],
27648
27917
  "color": [513],
27649
27918
  "numericInput": [4, "numeric-input"],
27919
+ "ariaLabel": [32],
27650
27920
  "isActive": [32],
27651
27921
  "scrollActiveItemIntoView": [64],
27652
27922
  "setValue": [64],
@@ -27997,9 +28267,9 @@ class PickerColumnCmp {
27997
28267
  render() {
27998
28268
  const col = this.col;
27999
28269
  const mode = getIonMode$1(this);
28000
- 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: {
28270
+ 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: {
28001
28271
  'max-width': this.col.columnWidth,
28002
- } }, 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))));
28272
+ } }, 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))));
28003
28273
  }
28004
28274
  get el() { return getElement(this); }
28005
28275
  static get watchers() { return {
@@ -28103,10 +28373,10 @@ class PickerColumnOption {
28103
28373
  render() {
28104
28374
  const { color, disabled, ariaLabel } = this;
28105
28375
  const mode = getIonMode$1(this);
28106
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
28376
+ return (hAsync(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses$1(color, {
28107
28377
  [mode]: true,
28108
28378
  ['option-disabled']: disabled,
28109
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
28379
+ }) }, hAsync("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
28110
28380
  }
28111
28381
  get el() { return getElement(this); }
28112
28382
  static get watchers() { return {
@@ -29189,6 +29459,7 @@ class Popover {
29189
29459
  this.arrow = true;
29190
29460
  this.isOpen = false;
29191
29461
  this.keyboardEvents = false;
29462
+ this.focusTrap = true;
29192
29463
  this.keepContentsMounted = false;
29193
29464
  }
29194
29465
  onTriggerChange() {
@@ -29415,12 +29686,12 @@ class Popover {
29415
29686
  }
29416
29687
  render() {
29417
29688
  const mode = getIonMode$1(this);
29418
- const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes } = this;
29689
+ const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
29419
29690
  const desktop = isPlatform('desktop');
29420
29691
  const enableArrow = arrow && !parentPopover;
29421
- return (hAsync(Host, Object.assign({ key: '4bccccf57df72e1196c6a28e803831c0520aef53', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
29692
+ return (hAsync(Host, Object.assign({ key: '17e5e8b3e7ba5e251665fb9d0ade10c781f82f0e', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
29422
29693
  zIndex: `${20000 + this.overlayIndex}`,
29423
- }, 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' })))));
29694
+ }, 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' })))));
29424
29695
  }
29425
29696
  get el() { return getElement(this); }
29426
29697
  static get watchers() { return {
@@ -29461,6 +29732,7 @@ class Popover {
29461
29732
  "arrow": [4],
29462
29733
  "isOpen": [4, "is-open"],
29463
29734
  "keyboardEvents": [4, "keyboard-events"],
29735
+ "focusTrap": [4, "focus-trap"],
29464
29736
  "keepContentsMounted": [4, "keep-contents-mounted"],
29465
29737
  "presented": [32],
29466
29738
  "presentFromTrigger": [64],
@@ -29511,7 +29783,7 @@ class ProgressBar {
29511
29783
  const mode = getIonMode$1(this);
29512
29784
  // If the progress is displayed as a solid bar.
29513
29785
  const progressSolid = buffer === 1;
29514
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
29786
+ return (hAsync(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
29515
29787
  [mode]: true,
29516
29788
  [`progress-bar-${type}`]: true,
29517
29789
  'progress-paused': paused,
@@ -29668,7 +29940,7 @@ class Radio {
29668
29940
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
29669
29941
  const mode = getIonMode$1(this);
29670
29942
  const inItem = hostContext('ion-item', el);
29671
- return (hAsync(Host, { key: 'cb00934d052260e97462e97a1669045cbb0b963a', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
29943
+ return (hAsync(Host, { key: 'e44cade8aa8415bdc825f9d17fc8562487cf5d35', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
29672
29944
  [mode]: true,
29673
29945
  'in-item': inItem,
29674
29946
  'radio-checked': checked,
@@ -29679,10 +29951,10 @@ class Radio {
29679
29951
  // Focus and active styling should not apply when the radio is in an item
29680
29952
  'ion-activatable': !inItem,
29681
29953
  'ion-focusable': !inItem,
29682
- }), 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: {
29954
+ }), 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: {
29683
29955
  'label-text-wrapper': true,
29684
29956
  'label-text-wrapper-hidden': !hasLabel,
29685
- }, part: "label" }, hAsync("slot", { key: 'd5e43a8d0fe5a7fc323887d310fd64d6f87deef7' })), hAsync("div", { key: '7fd221189adcfccca1ed18dcd0a60cde6261120b', class: "native-wrapper" }, this.renderRadioControl()))));
29957
+ }, part: "label" }, hAsync("slot", { key: '9e3cce6254e70b02d50381537438a70435b031cc' })), hAsync("div", { key: 'bfa3ee188d911e056a3e60178eac41362efb94b3', class: "native-wrapper" }, this.renderRadioControl()))));
29686
29958
  }
29687
29959
  get el() { return getElement(this); }
29688
29960
  static get watchers() { return {
@@ -29867,7 +30139,7 @@ class RadioGroup {
29867
30139
  const { label, labelId, el, name, value } = this;
29868
30140
  const mode = getIonMode$1(this);
29869
30141
  renderHiddenInput(true, el, name, value, false);
29870
- return hAsync(Host, { key: 'b6b439d6d53d17a5a4d9853a7cf6065b28213338', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
30142
+ return hAsync(Host, { key: '7801c5d6b3916efb15b4e479c6b90a8925e254a4', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
29871
30143
  }
29872
30144
  get el() { return getElement(this); }
29873
30145
  static get watchers() { return {
@@ -30496,7 +30768,7 @@ class Range {
30496
30768
  const needsEndAdjustment = inItem && !hasEndContent;
30497
30769
  const mode = getIonMode$1(this);
30498
30770
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
30499
- return (hAsync(Host, { key: 'cd70b5db9eae808a644643d7095a1b5264cbc5fe', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
30771
+ return (hAsync(Host, { key: '217323e45c3197c0ff9a5e0b12c1f860f9fe5152', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
30500
30772
  [mode]: true,
30501
30773
  'in-item': inItem,
30502
30774
  'range-disabled': disabled,
@@ -30505,10 +30777,10 @@ class Range {
30505
30777
  [`range-label-placement-${labelPlacement}`]: true,
30506
30778
  'range-item-start-adjustment': needsStartAdjustment,
30507
30779
  'range-item-end-adjustment': needsEndAdjustment,
30508
- }) }, hAsync("label", { key: '78ef0523f0064d6b268ae17ef72f90094511d897', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '6e4b2051e770dabe80dcb9f412e9aae1859e9f33', class: {
30780
+ }) }, hAsync("label", { key: '84357e85fc78954b9f598236e802c582dad8f69e', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '85c61c11453e417e27305cddd65d2044b6ffc451', class: {
30509
30781
  'label-text-wrapper': true,
30510
30782
  'label-text-wrapper-hidden': !hasLabel,
30511
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '72cdb8f6657a3b84f759743cedd600020c954c6a', class: "native-wrapper" }, hAsync("slot", { key: 'f7a38d6bd63df5dc8b4470f1f4acaaf3e5c80514', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'ae74ac8c1da691e3be1b2f00dfd3c8419b9566ec', name: "end" })))));
30783
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: 'f3504d2df23e8b4c7d657f21b8953defddd89e76', class: "native-wrapper" }, hAsync("slot", { key: '36e85481fb513462a5e71a3801c3349485e6a1ef', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'ed3eae7883e6a55c88b69b678e1de43cee4d1b40', name: "end" })))));
30512
30784
  }
30513
30785
  get el() { return getElement(this); }
30514
30786
  static get watchers() { return {
@@ -31382,7 +31654,7 @@ class Refresher {
31382
31654
  }
31383
31655
  render() {
31384
31656
  const mode = getIonMode$1(this);
31385
- return (hAsync(Host, { key: 'e7f4f2f96de7e80430bf54967ebc12e7216b2ca9', slot: "fixed", class: {
31657
+ return (hAsync(Host, { key: '1696f66f62d18c9075294f17cb24263325fcf35d', slot: "fixed", class: {
31386
31658
  [mode]: true,
31387
31659
  // Used internally for styling
31388
31660
  [`refresher-${mode}`]: true,
@@ -31610,7 +31882,7 @@ class RefresherContent {
31610
31882
  const pullingIcon = this.pullingIcon;
31611
31883
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
31612
31884
  const mode = getIonMode$1(this);
31613
- 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())));
31885
+ 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())));
31614
31886
  }
31615
31887
  get el() { return getElement(this); }
31616
31888
  static get cmpMeta() { return {
@@ -31653,7 +31925,7 @@ class Reorder {
31653
31925
  render() {
31654
31926
  const mode = getIonMode$1(this);
31655
31927
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
31656
- 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" }))));
31928
+ 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" }))));
31657
31929
  }
31658
31930
  get el() { return getElement(this); }
31659
31931
  static get style() { return {
@@ -31907,7 +32179,7 @@ class ReorderGroup {
31907
32179
  }
31908
32180
  render() {
31909
32181
  const mode = getIonMode$1(this);
31910
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
32182
+ return (hAsync(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
31911
32183
  [mode]: true,
31912
32184
  'reorder-enabled': !this.disabled,
31913
32185
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -32015,7 +32287,7 @@ class RippleEffect {
32015
32287
  }
32016
32288
  render() {
32017
32289
  const mode = getIonMode$1(this);
32018
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
32290
+ return (hAsync(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
32019
32291
  [mode]: true,
32020
32292
  unbounded: this.unbounded,
32021
32293
  } }));
@@ -32957,10 +33229,10 @@ class RouterLink {
32957
33229
  rel: this.rel,
32958
33230
  target: this.target,
32959
33231
  };
32960
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
33232
+ return (hAsync(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses$1(this.color, {
32961
33233
  [mode]: true,
32962
33234
  'ion-activatable': true,
32963
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
33235
+ }) }, hAsync("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), hAsync("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
32964
33236
  }
32965
33237
  static get style() { return IonRouterLinkStyle0; }
32966
33238
  static get cmpMeta() { return {
@@ -33155,7 +33427,7 @@ class RouterOutlet {
33155
33427
  return true;
33156
33428
  }
33157
33429
  render() {
33158
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
33430
+ return hAsync("slot", { key: '8279a453c66a766e6e383ff59842b4ae070c13a9' });
33159
33431
  }
33160
33432
  get el() { return getElement(this); }
33161
33433
  static get watchers() { return {
@@ -33189,7 +33461,7 @@ class Row {
33189
33461
  registerInstance(this, hostRef);
33190
33462
  }
33191
33463
  render() {
33192
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
33464
+ return (hAsync(Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: getIonMode$1(this) }, hAsync("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
33193
33465
  }
33194
33466
  static get style() { return IonRowStyle0; }
33195
33467
  static get cmpMeta() { return {
@@ -33583,8 +33855,8 @@ class Searchbar {
33583
33855
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
33584
33856
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
33585
33857
  const shouldShowCancelButton = this.shouldShowCancelButton();
33586
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '753b11f41484edcb2714aa81be8bc7bc0370cb2e', "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: 'e42fe29767fb06a5e4f9060c3f8a47b040528e4f', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
33587
- return (hAsync(Host, { key: 'da667148dc3300f4a8473315d04e6560194f51dc', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
33858
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '0309b828f496e449405f4215f6cb10d3ae874f52', "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: 'c0563d48fc25cc02ff45f4d708d1bdeb0cf7c7bc', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
33859
+ return (hAsync(Host, { key: '0842b78189eb10329d161294048aa26f380056b3', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
33588
33860
  [mode]: true,
33589
33861
  'searchbar-animated': animated,
33590
33862
  'searchbar-disabled': this.disabled,
@@ -33594,14 +33866,14 @@ class Searchbar {
33594
33866
  'searchbar-has-focus': this.focused,
33595
33867
  'searchbar-should-show-clear': this.shouldShowClearButton(),
33596
33868
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
33597
- }) }, hAsync("div", { key: 'b1a28467d41dd989e6aee10c7c9fb70a7c1534f1', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '4983f67966f79b2846c1369c7feaa0c568bc3025', "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: 'b6576522762a83a7d9977f312dce433c2aaa2490', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: 'c460a3be7ffed2ddf4b08f64ea4ec6843586a726', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
33869
+ }) }, hAsync("div", { key: '250fddf0a88c0608f2f797d671ce0d57e4a0983b', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '8545874203f86312e3a949199ceaeefb9a2cd326', "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: '3c212122d0c8b1d4e0c38be8e0bd2365232d0f87', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '4450d17927983da489b051639c14f96f1a96d64a', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
33598
33870
  /**
33599
33871
  * This prevents mobile browsers from
33600
33872
  * blurring the input when the clear
33601
33873
  * button is activated.
33602
33874
  */
33603
33875
  ev.preventDefault();
33604
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'e2e5dcdeca46d2588642e7b9f05d396f6e0332a9', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
33876
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'f9e9060cbe0caf06763327a01d5f03b0a5d87404', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
33605
33877
  }
33606
33878
  get el() { return getElement(this); }
33607
33879
  static get watchers() { return {
@@ -34075,14 +34347,14 @@ class Segment {
34075
34347
  }
34076
34348
  render() {
34077
34349
  const mode = getIonMode$1(this);
34078
- return (hAsync(Host, { key: '22bd7bbecaa9f0c95971565e06ef3fa4ad44a946', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
34350
+ return (hAsync(Host, { key: '1f29e1c1f712a65ddce6c8aa1623fee85cb66ed9', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
34079
34351
  [mode]: true,
34080
34352
  'in-toolbar': hostContext('ion-toolbar', this.el),
34081
34353
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
34082
34354
  'segment-activated': this.activated,
34083
34355
  'segment-disabled': this.disabled,
34084
34356
  'segment-scrollable': this.scrollable,
34085
- }) }, hAsync("slot", { key: '6d6fe81026928662137b872206de55117fda30a2' })));
34357
+ }) }, hAsync("slot", { key: '86f5724565043a3d0983a14cc49c37df9a60c6b0' })));
34086
34358
  }
34087
34359
  get el() { return getElement(this); }
34088
34360
  static get watchers() { return {
@@ -34192,7 +34464,7 @@ class SegmentButton {
34192
34464
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
34193
34465
  const mode = getIonMode$1(this);
34194
34466
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
34195
- return (hAsync(Host, { key: '9b54e4841be5d0f4f2ee230a649bfbe01066c7c7', class: {
34467
+ return (hAsync(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
34196
34468
  [mode]: true,
34197
34469
  'in-toolbar': hostContext('ion-toolbar', this.el),
34198
34470
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -34208,10 +34480,10 @@ class SegmentButton {
34208
34480
  'ion-activatable': true,
34209
34481
  'ion-activatable-instant': true,
34210
34482
  'ion-focusable': true,
34211
- } }, 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: {
34483
+ } }, 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: {
34212
34484
  'segment-button-indicator': true,
34213
34485
  'segment-button-indicator-animated': true,
34214
- } }, hAsync("div", { key: 'b43124415ebd77c87285791522c5afc26a137f96', part: "indicator-background", class: "segment-button-indicator-background" }))));
34486
+ } }, hAsync("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
34215
34487
  }
34216
34488
  get el() { return getElement(this); }
34217
34489
  static get watchers() { return {
@@ -34810,7 +35082,7 @@ class Select {
34810
35082
  * TODO(FW-5592): Remove hasStartEndSlots condition
34811
35083
  */
34812
35084
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
34813
- return (hAsync(Host, { key: '5a1b82be3f737a2ce5b87c5cd716f898a902ab10', onClick: this.onClick, class: createColorClasses$1(this.color, {
35085
+ return (hAsync(Host, { key: '38647216725f05c3ea8e2c7b4125d7035e5bef31', onClick: this.onClick, class: createColorClasses$1(this.color, {
34814
35086
  [mode]: true,
34815
35087
  'in-item': inItem,
34816
35088
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -34826,7 +35098,7 @@ class Select {
34826
35098
  [`select-justify-${justify}`]: justifyEnabled,
34827
35099
  [`select-shape-${shape}`]: shape !== undefined,
34828
35100
  [`select-label-placement-${labelPlacement}`]: true,
34829
- }) }, hAsync("label", { key: '79a6e99e38fa3f72d876f4b8ac0077a9fbf4bd2d', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: 'e18ac0b4a35e2cdde858347a9b116218533cd532', class: "select-wrapper-inner" }, hAsync("slot", { key: 'cc194f718ef9363d3496531f0d9259e33b66f4d8', name: "start" }), hAsync("div", { key: '833c5544e453c0ac543f5d4898d0f492caac405a', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'adaa4064c9ad01ef7a452308680eb09dc3ad60ff', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'd47a6ef0a6192c5f098973aa517aad2aa9ae8dfc', class: "select-highlight" }))));
35101
+ }) }, hAsync("label", { key: '80f465dda111b27548cba11fe734b4916f1da6d7', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: 'b6c22c7f2d42439d89397ffe7182bf0e07225dc1', class: "select-wrapper-inner" }, hAsync("slot", { key: '95cf6118d97f974debfe31e17938b6bb9b0bec63', name: "start" }), hAsync("div", { key: '647912e4208feaddc581d066007653c910065907', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '3bbf5e126327ff21fed8f6ad3acd77d0df900c4a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'd790350694c310866c5bd3f8da0edc9f8c17ac0d', class: "select-highlight" }))));
34830
35102
  }
34831
35103
  get el() { return getElement(this); }
34832
35104
  static get watchers() { return {
@@ -34917,7 +35189,7 @@ class SelectOption {
34917
35189
  this.value = undefined;
34918
35190
  }
34919
35191
  render() {
34920
- return hAsync(Host, { key: '6fa504ac5597098086050c0f517a03be8b8032c9', role: "option", id: this.inputId, class: getIonMode$1(this) });
35192
+ return hAsync(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode$1(this) });
34921
35193
  }
34922
35194
  get el() { return getElement(this); }
34923
35195
  static get style() { return IonSelectOptionStyle0; }
@@ -35037,7 +35309,7 @@ class SelectPopover {
35037
35309
  render() {
35038
35310
  const { header, message, options, subHeader } = this;
35039
35311
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
35040
- 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))));
35312
+ 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))));
35041
35313
  }
35042
35314
  get el() { return getElement(this); }
35043
35315
  static get style() { return {
@@ -35085,11 +35357,11 @@ class SkeletonText {
35085
35357
  const animated = this.animated && config.getBoolean('animated', true);
35086
35358
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
35087
35359
  const mode = getIonMode$1(this);
35088
- return (hAsync(Host, { key: '8a1b489e35564056b3babce548982e58fec74119', class: {
35360
+ return (hAsync(Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
35089
35361
  [mode]: true,
35090
35362
  'skeleton-text-animated': animated,
35091
35363
  'in-media': inMedia,
35092
- } }, hAsync("span", { key: '71df251a41967dc4dab241f6fa906fa4d568dd9e' }, "\u00A0")));
35364
+ } }, hAsync("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
35093
35365
  }
35094
35366
  get el() { return getElement(this); }
35095
35367
  static get style() { return IonSkeletonTextStyle0; }
@@ -35142,7 +35414,7 @@ class Spinner {
35142
35414
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
35143
35415
  }
35144
35416
  }
35145
- return (hAsync(Host, { key: '9422c25aadfdf08861e26bb1aa336c94391d10a3', class: createColorClasses$1(self.color, {
35417
+ return (hAsync(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses$1(self.color, {
35146
35418
  [mode]: true,
35147
35419
  [`spinner-${spinnerName}`]: true,
35148
35420
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -35242,12 +35514,12 @@ class SplitPane {
35242
35514
  }
35243
35515
  render() {
35244
35516
  const mode = getIonMode$1(this);
35245
- return (hAsync(Host, { key: 'd04ff97717268184725f25b39bb1416b2b423260', class: {
35517
+ return (hAsync(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
35246
35518
  [mode]: true,
35247
35519
  // Used internally for styling
35248
35520
  [`split-pane-${mode}`]: true,
35249
35521
  'split-pane-visible': this.visible,
35250
- } }, hAsync("slot", { key: '4d355509ab6fcdac415184068ffe1241a5078db3' })));
35522
+ } }, hAsync("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
35251
35523
  }
35252
35524
  get el() { return getElement(this); }
35253
35525
  static get watchers() { return {
@@ -35316,10 +35588,10 @@ class Tab {
35316
35588
  }
35317
35589
  render() {
35318
35590
  const { tab, active, component } = this;
35319
- return (hAsync(Host, { key: 'f341d086cc626834d2ac83a9b6366fcaf71a72d5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35591
+ return (hAsync(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
35320
35592
  'ion-page': component === undefined,
35321
35593
  'tab-hidden': !active,
35322
- } }, hAsync("slot", { key: 'b665bb7a388f1a032685c9e7fe9b412ca742689e' })));
35594
+ } }, hAsync("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
35323
35595
  }
35324
35596
  get el() { return getElement(this); }
35325
35597
  static get watchers() { return {
@@ -35397,11 +35669,11 @@ class TabBar {
35397
35669
  const { color, translucent, keyboardVisible } = this;
35398
35670
  const mode = getIonMode$1(this);
35399
35671
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
35400
- return (hAsync(Host, { key: '77fe8ff42b083bfdb5e01a9873ef45b6f3ce3744', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35672
+ return (hAsync(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
35401
35673
  [mode]: true,
35402
35674
  'tab-bar-translucent': translucent,
35403
35675
  'tab-bar-hidden': shouldHide,
35404
- }) }, hAsync("slot", { key: 'd479c80ff66f4cfc12ab4a583bd292ef8392895e' })));
35676
+ }) }, hAsync("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
35405
35677
  }
35406
35678
  get el() { return getElement(this); }
35407
35679
  static get watchers() { return {
@@ -35499,7 +35771,7 @@ class TabButton {
35499
35771
  rel,
35500
35772
  target,
35501
35773
  };
35502
- return (hAsync(Host, { key: '092250aa4c247411c4717bf3871bdd7a47b7177f', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35774
+ return (hAsync(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
35503
35775
  [mode]: true,
35504
35776
  'tab-selected': selected,
35505
35777
  'tab-disabled': disabled,
@@ -35511,7 +35783,7 @@ class TabButton {
35511
35783
  'ion-activatable': true,
35512
35784
  'ion-selectable': true,
35513
35785
  'ion-focusable': true,
35514
- } }, 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" }))));
35786
+ } }, 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" }))));
35515
35787
  }
35516
35788
  get el() { return getElement(this); }
35517
35789
  static get style() { return {
@@ -35677,7 +35949,7 @@ class Tabs {
35677
35949
  return Array.from(this.el.querySelectorAll('ion-tab'));
35678
35950
  }
35679
35951
  render() {
35680
- 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" })));
35952
+ 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" })));
35681
35953
  }
35682
35954
  get el() { return getElement(this); }
35683
35955
  static get style() { return IonTabsStyle0; }
@@ -35719,9 +35991,9 @@ class Text {
35719
35991
  }
35720
35992
  render() {
35721
35993
  const mode = getIonMode$1(this);
35722
- return (hAsync(Host, { key: '096d8ca01301500d61d9e92299e0cc78c2ad86e3', class: createColorClasses$1(this.color, {
35994
+ return (hAsync(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses$1(this.color, {
35723
35995
  [mode]: true,
35724
- }) }, hAsync("slot", { key: '9399d939ec4f134c24c29bda8857cd348259c666' })));
35996
+ }) }, hAsync("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
35725
35997
  }
35726
35998
  static get style() { return IonTextStyle0; }
35727
35999
  static get cmpMeta() { return {
@@ -36088,7 +36360,7 @@ class Textarea {
36088
36360
  * TODO(FW-5592): Remove hasStartEndSlots condition
36089
36361
  */
36090
36362
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
36091
- return (hAsync(Host, { key: 'b4cf1f37cacdd1775fefb874b87b30ba753fdc3a', class: createColorClasses$1(this.color, {
36363
+ return (hAsync(Host, { key: 'd18525dd7b9b7953cc76a233c39a73e3dde611b4', class: createColorClasses$1(this.color, {
36092
36364
  [mode]: true,
36093
36365
  'has-value': hasValue,
36094
36366
  'has-focus': hasFocus,
@@ -36097,7 +36369,7 @@ class Textarea {
36097
36369
  [`textarea-shape-${shape}`]: shape !== undefined,
36098
36370
  [`textarea-label-placement-${labelPlacement}`]: true,
36099
36371
  'textarea-disabled': disabled,
36100
- }) }, hAsync("label", { key: '71673192cf9d61dd072d9c0c3caefad313ed7129', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '6ecfbc046cf6e14f0d58dca1bff7db2093620f01', class: "textarea-wrapper-inner" }, hAsync("div", { key: '7d2410de5dd971f74406ab8a321d87709873fa22', class: "start-slot-wrapper" }, hAsync("slot", { key: '061cc0dd516b2f3a4ad7199790028e5d525a3ab2', name: "start" })), hAsync("div", { key: 'f75309006f7c4e835f346cecf243f104e37bd477', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: 'ba47358352fcd30e659b7ac684ce2e5b83744150', 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: 'bebb8b585bc4e7adb9192665679cd7073e23240c', class: "end-slot-wrapper" }, hAsync("slot", { key: '734f40dcc6a57771c00f7528fb19544bb68fc563', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'e5a1bbebc2e16cb1b3f2bce312494447a0b36957', class: "textarea-highlight" })), this.renderBottomContent()));
36372
+ }) }, hAsync("label", { key: '8e3ef5ae7a45266a5af2710ff309592d4685f9c0', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '7f0278d3112edea31be4a0b2b007469c99f70bf2', class: "textarea-wrapper-inner" }, hAsync("div", { key: '40488b751dc430d780b84242072deccbec616571', class: "start-slot-wrapper" }, hAsync("slot", { key: '7cb49e2be164b00c70c0e7dd66f825f65bd6d57b', name: "start" })), hAsync("div", { key: '86a5c143d048293a5ca09c7daa66b79e9670485a', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '473c0d7c44bfcc6cd1bcf47f2dbc2b39832308dc', 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: 'cdd2f28e17dd5d2c0283756f985cb8cf71c52e70', class: "end-slot-wrapper" }, hAsync("slot", { key: '8401a277df850473f6e535449f332f830e30e68d', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'd29994278fda886d2d1c37a265397b141d6535d3', class: "textarea-highlight" })), this.renderBottomContent()));
36101
36373
  }
36102
36374
  get el() { return getElement(this); }
36103
36375
  static get watchers() { return {
@@ -36159,7 +36431,7 @@ class Thumbnail {
36159
36431
  registerInstance(this, hostRef);
36160
36432
  }
36161
36433
  render() {
36162
- return (hAsync(Host, { key: '29ed7678be93e55afad58bd37a61db3a289a5d76', class: getIonMode$1(this) }, hAsync("slot", { key: 'da1eb174d2544b9d452c98076f6e0abcda60099d' })));
36434
+ return (hAsync(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode$1(this) }, hAsync("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
36163
36435
  }
36164
36436
  static get style() { return IonThumbnailStyle0; }
36165
36437
  static get cmpMeta() { return {
@@ -36992,9 +37264,9 @@ class Toast {
36992
37264
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
36993
37265
  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);
36994
37266
  }
36995
- return (hAsync(Host, Object.assign({ key: 'f3555e5e093ce5dc5114df2e7ed298afa79eee02', tabindex: "-1" }, this.htmlAttributes, { style: {
37267
+ return (hAsync(Host, Object.assign({ key: 'da148788489146a20b42023fdc6401e53c044767', tabindex: "-1" }, this.htmlAttributes, { style: {
36996
37268
  zIndex: `${60000 + this.overlayIndex}`,
36997
- }, 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')))));
37269
+ }, 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')))));
36998
37270
  }
36999
37271
  get el() { return getElement(this); }
37000
37272
  static get watchers() { return {
@@ -37214,7 +37486,7 @@ class Toggle {
37214
37486
  const value = this.getValue();
37215
37487
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
37216
37488
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
37217
- return (hAsync(Host, { key: 'c945ab955306b2fcb7833f7ff771ac943d73d27d', onClick: this.onClick, class: createColorClasses$1(color, {
37489
+ return (hAsync(Host, { key: '00954bdb79a64221bad1a9a5e56f08a27cc664f3', onClick: this.onClick, class: createColorClasses$1(color, {
37218
37490
  [mode]: true,
37219
37491
  'in-item': hostContext('ion-item', el),
37220
37492
  'toggle-activated': activated,
@@ -37224,10 +37496,10 @@ class Toggle {
37224
37496
  [`toggle-alignment-${alignment}`]: true,
37225
37497
  [`toggle-label-placement-${labelPlacement}`]: true,
37226
37498
  [`toggle-${rtl}`]: true,
37227
- }) }, hAsync("label", { key: '71fb6976e877639ca9f28c2103f6290917cdb6ce', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'ed2495568197928ef1f17fc60470f4d9754a6244', 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: '953ab9a29c432de4b869aeac296007e703bcdf27', class: {
37499
+ }) }, hAsync("label", { key: '9be8f5c69118f718f7633efb32132ac06f7f0c2b', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '16af6e4f1c418b7aa17f5d1c34e237ab155c6036', 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: 'b7fe0b66eba606f9163377b9c479af00c4231ee3', class: {
37228
37500
  'label-text-wrapper': true,
37229
37501
  'label-text-wrapper-hidden': !this.hasLabel,
37230
- }, part: "label" }, hAsync("slot", { key: '718b24b4d59b979c11edfb1d90fa0270ac248b2f' })), hAsync("div", { key: '293595f9dc291df38a54e23f81797b89428ff2c5', class: "native-wrapper" }, this.renderToggleControl()))));
37502
+ }, part: "label" }, hAsync("slot", { key: '7281efd2efaee1a91ec9e13209d7b895f15c8919' })), hAsync("div", { key: '2f32fe1f80eacab1fba77f90df45379662678327', class: "native-wrapper" }, this.renderToggleControl()))));
37231
37503
  }
37232
37504
  get el() { return getElement(this); }
37233
37505
  static get watchers() { return {
@@ -37331,10 +37603,10 @@ class Toolbar {
37331
37603
  this.childrenStyles.forEach((value) => {
37332
37604
  Object.assign(childStyles, value);
37333
37605
  });
37334
- return (hAsync(Host, { key: 'af016bf9981a2d6182783c6643e2d460245ecc2f', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37606
+ return (hAsync(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
37335
37607
  [mode]: true,
37336
37608
  'in-toolbar': hostContext('ion-toolbar', this.el),
37337
- })) }, 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" }))));
37609
+ })) }, 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" }))));
37338
37610
  }
37339
37611
  get el() { return getElement(this); }
37340
37612
  static get style() { return {
@@ -37384,11 +37656,11 @@ class ToolbarTitle {
37384
37656
  render() {
37385
37657
  const mode = getIonMode$1(this);
37386
37658
  const size = this.getSize();
37387
- return (hAsync(Host, { key: '5cb49f3642fb3c937cdba729ab7d561213d9bce5', class: createColorClasses$1(this.color, {
37659
+ return (hAsync(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses$1(this.color, {
37388
37660
  [mode]: true,
37389
37661
  [`title-${size}`]: true,
37390
37662
  'title-rtl': document.dir === 'rtl',
37391
- }) }, hAsync("div", { key: 'f089bf6cff17ab109fec7de8b1bf96bf33bede1f', class: "toolbar-title" }, hAsync("slot", { key: 'ed74c4e77126a309970ff719baa6ebaebb00d2e6' }))));
37663
+ }) }, hAsync("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, hAsync("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
37392
37664
  }
37393
37665
  get el() { return getElement(this); }
37394
37666
  static get watchers() { return {