voyager-ionic-core 8.3.4 → 8.4.1

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 (518) hide show
  1. package/components/alert.js +7 -5
  2. package/components/backdrop.js +1 -1
  3. package/components/button.js +2 -2
  4. package/components/buttons.js +2 -2
  5. package/components/checkbox.js +7 -5
  6. package/components/content.js +446 -0
  7. package/components/header.js +375 -0
  8. package/components/index4.js +2 -2
  9. package/components/ion-app.js +1 -1
  10. package/components/ion-avatar.js +1 -1
  11. package/components/ion-back-button.js +2 -2
  12. package/components/ion-badge.js +2 -2
  13. package/components/ion-breadcrumb.js +4 -4
  14. package/components/ion-breadcrumbs.js +2 -2
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +2 -2
  17. package/components/ion-card-subtitle.js +2 -2
  18. package/components/ion-card-title.js +2 -2
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-chip.js +2 -2
  21. package/components/ion-col.js +2 -2
  22. package/components/ion-content.js +1 -441
  23. package/components/ion-datetime-button.js +2 -2
  24. package/components/ion-datetime.js +2 -2
  25. package/components/ion-fab-button.js +2 -2
  26. package/components/ion-fab-list.js +2 -2
  27. package/components/ion-fab.js +2 -2
  28. package/components/ion-footer.js +2 -2
  29. package/components/ion-grid.js +2 -2
  30. package/components/ion-header.js +1 -351
  31. package/components/ion-img.js +1 -1
  32. package/components/ion-infinite-scroll-content.js +2 -2
  33. package/components/ion-infinite-scroll.js +1 -1
  34. package/components/ion-input-password-toggle.js +3 -3
  35. package/components/ion-input.js +3 -3
  36. package/components/ion-item-divider.js +2 -2
  37. package/components/ion-item-group.js +1 -1
  38. package/components/ion-item-option.js +2 -2
  39. package/components/ion-item-options.js +1 -1
  40. package/components/ion-item-sliding.js +3 -1
  41. package/components/ion-loading.js +2 -2
  42. package/components/ion-menu-button.js +2 -2
  43. package/components/ion-menu-toggle.js +2 -2
  44. package/components/ion-menu.js +47 -20
  45. package/components/ion-modal.js +1 -1737
  46. package/components/ion-nav-link.js +1 -1
  47. package/components/ion-nav.js +1 -1
  48. package/components/ion-note.js +2 -2
  49. package/components/ion-picker-legacy.js +2 -2
  50. package/components/ion-progress-bar.js +1 -1
  51. package/components/ion-range.js +3 -3
  52. package/components/ion-refresher-content.js +1 -1
  53. package/components/ion-refresher.js +1 -1
  54. package/components/ion-reorder-group.js +1 -1
  55. package/components/ion-reorder.js +1 -1
  56. package/components/ion-router-link.js +2 -2
  57. package/components/ion-router-outlet.js +1 -1
  58. package/components/ion-row.js +1 -1
  59. package/components/ion-searchbar.js +4 -4
  60. package/components/ion-segment-button.js +24 -5
  61. package/components/ion-segment-content.d.ts +11 -0
  62. package/components/ion-segment-content.js +37 -0
  63. package/components/ion-segment-view.d.ts +11 -0
  64. package/components/ion-segment-view.js +140 -0
  65. package/components/ion-segment.js +110 -15
  66. package/components/ion-select-modal.d.ts +11 -0
  67. package/components/ion-select-modal.js +9 -0
  68. package/components/ion-select-option.js +1 -1
  69. package/components/ion-select.js +114 -41
  70. package/components/ion-skeleton-text.js +2 -2
  71. package/components/ion-split-pane.js +2 -2
  72. package/components/ion-tab-bar.js +2 -2
  73. package/components/ion-tab-button.js +2 -2
  74. package/components/ion-tab.js +2 -2
  75. package/components/ion-tabs.js +1 -1
  76. package/components/ion-text.js +2 -2
  77. package/components/ion-textarea.js +2 -2
  78. package/components/ion-thumbnail.js +1 -1
  79. package/components/ion-title.js +1 -70
  80. package/components/ion-toast.js +4 -4
  81. package/components/ion-toggle.js +3 -3
  82. package/components/ion-toolbar.js +1 -88
  83. package/components/label.js +2 -2
  84. package/components/list-header.js +2 -2
  85. package/components/list.js +1 -1
  86. package/components/modal.js +1742 -0
  87. package/components/overlays.js +27 -12
  88. package/components/picker-column-option.js +2 -2
  89. package/components/picker-column.js +3 -3
  90. package/components/picker-column2.js +2 -2
  91. package/components/picker.js +2 -2
  92. package/components/popover.js +2 -2
  93. package/components/radio-group.js +12 -4
  94. package/components/radio.js +7 -5
  95. package/components/ripple-effect.js +1 -1
  96. package/components/select-modal.js +197 -0
  97. package/components/select-popover.js +1 -1
  98. package/components/spinner.js +1 -1
  99. package/components/title.js +75 -0
  100. package/components/toolbar.js +93 -0
  101. package/dist/cjs/{index-9cd00dc3.js → index-8e789962.js} +2 -2
  102. package/dist/cjs/index.cjs.js +2 -2
  103. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  104. package/dist/cjs/ion-alert.cjs.entry.js +8 -6
  105. package/dist/cjs/ion-app_8.cjs.entry.js +36 -17
  106. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
  107. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
  109. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +6 -6
  110. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  112. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -4
  113. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  115. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  116. package/dist/cjs/ion-datetime_3.cjs.entry.js +7 -7
  117. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  118. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  119. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  120. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  121. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  122. package/dist/cjs/ion-item-option_3.cjs.entry.js +6 -4
  123. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  124. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-menu_3.cjs.entry.js +52 -25
  126. package/dist/cjs/ion-modal.cjs.entry.js +5 -5
  127. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  128. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  129. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  130. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  131. package/dist/cjs/ion-popover.cjs.entry.js +3 -3
  132. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  133. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -8
  134. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  135. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  136. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  138. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  139. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  140. package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
  141. package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
  142. package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
  143. package/dist/cjs/ion-select-modal.cjs.entry.js +111 -0
  144. package/dist/cjs/ion-select_3.cjs.entry.js +40 -15
  145. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  146. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  147. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  148. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  149. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  150. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  151. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  152. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  153. package/dist/cjs/ionic.cjs.js +1 -1
  154. package/dist/cjs/loader.cjs.js +1 -1
  155. package/dist/cjs/{overlays-ba0f6986.js → overlays-aa669eb8.js} +26 -11
  156. package/dist/collection/collection-manifest.json +3 -0
  157. package/dist/collection/components/alert/alert.js +7 -5
  158. package/dist/collection/components/app/app.js +1 -1
  159. package/dist/collection/components/avatar/avatar.js +1 -1
  160. package/dist/collection/components/back-button/back-button.js +2 -2
  161. package/dist/collection/components/backdrop/backdrop.js +1 -1
  162. package/dist/collection/components/badge/badge.js +2 -2
  163. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -4
  164. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  165. package/dist/collection/components/button/button.js +2 -2
  166. package/dist/collection/components/buttons/buttons.js +2 -2
  167. package/dist/collection/components/card/card.js +1 -1
  168. package/dist/collection/components/card-content/card-content.js +1 -1
  169. package/dist/collection/components/card-header/card-header.js +2 -2
  170. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  171. package/dist/collection/components/card-title/card-title.js +2 -2
  172. package/dist/collection/components/checkbox/checkbox.js +29 -4
  173. package/dist/collection/components/chip/chip.js +2 -2
  174. package/dist/collection/components/col/col.js +2 -2
  175. package/dist/collection/components/content/content.js +3 -3
  176. package/dist/collection/components/datetime/datetime.js +2 -2
  177. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  178. package/dist/collection/components/fab/fab.js +2 -2
  179. package/dist/collection/components/fab-button/fab-button.js +2 -2
  180. package/dist/collection/components/fab-list/fab-list.js +2 -2
  181. package/dist/collection/components/footer/footer.js +2 -2
  182. package/dist/collection/components/grid/grid.js +2 -2
  183. package/dist/collection/components/header/header.js +2 -2
  184. package/dist/collection/components/header/header.utils.js +21 -2
  185. package/dist/collection/components/img/img.js +1 -1
  186. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  187. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  188. package/dist/collection/components/input/input.js +3 -3
  189. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  190. package/dist/collection/components/item-divider/item-divider.js +2 -2
  191. package/dist/collection/components/item-group/item-group.js +1 -1
  192. package/dist/collection/components/item-option/item-option.js +2 -2
  193. package/dist/collection/components/item-options/item-options.js +1 -1
  194. package/dist/collection/components/item-sliding/item-sliding.js +3 -1
  195. package/dist/collection/components/label/label.js +2 -2
  196. package/dist/collection/components/list/list.js +1 -1
  197. package/dist/collection/components/list-header/list-header.js +2 -2
  198. package/dist/collection/components/loading/loading.js +2 -2
  199. package/dist/collection/components/menu/menu.js +75 -27
  200. package/dist/collection/components/menu-button/menu-button.js +2 -2
  201. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  202. package/dist/collection/components/modal/modal.js +4 -4
  203. package/dist/collection/components/nav/nav.js +1 -1
  204. package/dist/collection/components/nav-link/nav-link.js +1 -1
  205. package/dist/collection/components/note/note.js +2 -2
  206. package/dist/collection/components/picker/picker.js +2 -2
  207. package/dist/collection/components/picker-column/picker-column.js +3 -3
  208. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  209. package/dist/collection/components/picker-legacy/picker.js +2 -2
  210. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  211. package/dist/collection/components/popover/popover.js +2 -2
  212. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  213. package/dist/collection/components/radio/radio.js +9 -7
  214. package/dist/collection/components/radio-group/radio-group.js +34 -3
  215. package/dist/collection/components/range/range.js +3 -3
  216. package/dist/collection/components/refresher/refresher.js +1 -1
  217. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  218. package/dist/collection/components/reorder/reorder.js +1 -1
  219. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  220. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  221. package/dist/collection/components/router-link/router-link.js +2 -2
  222. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  223. package/dist/collection/components/row/row.js +1 -1
  224. package/dist/collection/components/searchbar/searchbar.js +4 -4
  225. package/dist/collection/components/segment/segment.js +115 -14
  226. package/dist/collection/components/segment-button/segment-button.js +40 -5
  227. package/dist/collection/components/segment-content/segment-content.css +6 -0
  228. package/dist/collection/components/segment-content/segment-content.js +21 -0
  229. package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
  230. package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
  231. package/dist/collection/components/segment-view/segment-view.js +227 -0
  232. package/dist/collection/components/segment-view/segment-view.md.css +83 -0
  233. package/dist/collection/components/select/select.js +61 -16
  234. package/dist/collection/components/select-modal/select-modal-interface.js +1 -0
  235. package/dist/collection/components/select-modal/select-modal.ios.css +3 -0
  236. package/dist/collection/components/select-modal/select-modal.js +159 -0
  237. package/dist/collection/components/select-modal/select-modal.md.css +110 -0
  238. package/dist/collection/components/select-modal/test/fixtures.js +48 -0
  239. package/dist/collection/components/select-option/select-option.js +1 -1
  240. package/dist/collection/components/select-popover/select-popover.js +1 -1
  241. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  242. package/dist/collection/components/spinner/spinner.js +1 -1
  243. package/dist/collection/components/split-pane/split-pane.js +2 -2
  244. package/dist/collection/components/tab/tab.js +2 -2
  245. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  246. package/dist/collection/components/tab-button/tab-button.js +2 -2
  247. package/dist/collection/components/tabs/tabs.js +1 -1
  248. package/dist/collection/components/text/text.js +2 -2
  249. package/dist/collection/components/textarea/textarea.js +2 -2
  250. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  251. package/dist/collection/components/title/title.js +2 -2
  252. package/dist/collection/components/toast/toast.ios.css +1 -1
  253. package/dist/collection/components/toast/toast.js +2 -2
  254. package/dist/collection/components/toast/toast.md.css +1 -1
  255. package/dist/collection/components/toggle/toggle.js +3 -3
  256. package/dist/collection/components/toolbar/toolbar.js +2 -2
  257. package/dist/collection/utils/focus-trap.js +8 -2
  258. package/dist/collection/utils/menu-controller/index.js +2 -2
  259. package/dist/collection/utils/overlays.js +19 -9
  260. package/dist/docs.json +426 -29
  261. package/dist/esm/{index-fe1782b1.js → index-24b48b06.js} +2 -2
  262. package/dist/esm/index.js +2 -2
  263. package/dist/esm/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm/ion-alert.entry.js +8 -6
  265. package/dist/esm/ion-app_8.entry.js +36 -17
  266. package/dist/esm/ion-avatar_3.entry.js +4 -4
  267. package/dist/esm/ion-back-button.entry.js +2 -2
  268. package/dist/esm/ion-backdrop.entry.js +1 -1
  269. package/dist/esm/ion-breadcrumb_2.entry.js +6 -6
  270. package/dist/esm/ion-button_2.entry.js +2 -2
  271. package/dist/esm/ion-card_5.entry.js +8 -8
  272. package/dist/esm/ion-checkbox.entry.js +5 -4
  273. package/dist/esm/ion-chip.entry.js +2 -2
  274. package/dist/esm/ion-col_3.entry.js +5 -5
  275. package/dist/esm/ion-datetime-button.entry.js +2 -2
  276. package/dist/esm/ion-datetime_3.entry.js +7 -7
  277. package/dist/esm/ion-fab_3.entry.js +6 -6
  278. package/dist/esm/ion-img.entry.js +1 -1
  279. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  280. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  281. package/dist/esm/ion-input.entry.js +3 -3
  282. package/dist/esm/ion-item-option_3.entry.js +6 -4
  283. package/dist/esm/ion-item_8.entry.js +12 -12
  284. package/dist/esm/ion-loading.entry.js +3 -3
  285. package/dist/esm/ion-menu_3.entry.js +52 -25
  286. package/dist/esm/ion-modal.entry.js +5 -5
  287. package/dist/esm/ion-nav_2.entry.js +2 -2
  288. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  289. package/dist/esm/ion-picker-column.entry.js +3 -3
  290. package/dist/esm/ion-picker.entry.js +2 -2
  291. package/dist/esm/ion-popover.entry.js +3 -3
  292. package/dist/esm/ion-progress-bar.entry.js +1 -1
  293. package/dist/esm/ion-radio_2.entry.js +17 -8
  294. package/dist/esm/ion-range.entry.js +3 -3
  295. package/dist/esm/ion-refresher_2.entry.js +2 -2
  296. package/dist/esm/ion-reorder_2.entry.js +2 -2
  297. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  298. package/dist/esm/ion-route_4.entry.js +2 -2
  299. package/dist/esm/ion-searchbar.entry.js +4 -4
  300. package/dist/esm/ion-segment-content.entry.js +19 -0
  301. package/dist/esm/ion-segment-view.entry.js +118 -0
  302. package/dist/esm/ion-segment_2.entry.js +132 -19
  303. package/dist/esm/ion-select-modal.entry.js +107 -0
  304. package/dist/esm/ion-select_3.entry.js +40 -15
  305. package/dist/esm/ion-spinner.entry.js +1 -1
  306. package/dist/esm/ion-split-pane.entry.js +2 -2
  307. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  308. package/dist/esm/ion-tab_2.entry.js +3 -3
  309. package/dist/esm/ion-text.entry.js +2 -2
  310. package/dist/esm/ion-textarea.entry.js +2 -2
  311. package/dist/esm/ion-toast.entry.js +5 -5
  312. package/dist/esm/ion-toggle.entry.js +3 -3
  313. package/dist/esm/ionic.js +1 -1
  314. package/dist/esm/loader.js +1 -1
  315. package/dist/esm/{overlays-ae10d43d.js → overlays-e7b9d6d9.js} +27 -12
  316. package/dist/esm-es5/{index-fe1782b1.js → index-24b48b06.js} +1 -1
  317. package/dist/esm-es5/index.js +1 -1
  318. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  319. package/dist/esm-es5/ion-alert.entry.js +1 -1
  320. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  321. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  322. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  323. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  324. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  325. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  326. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  327. package/dist/esm-es5/ion-checkbox.entry.js +2 -2
  328. package/dist/esm-es5/ion-chip.entry.js +1 -1
  329. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  330. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  331. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  332. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  333. package/dist/esm-es5/ion-img.entry.js +1 -1
  334. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  336. package/dist/esm-es5/ion-input.entry.js +1 -1
  337. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  338. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  339. package/dist/esm-es5/ion-loading.entry.js +1 -1
  340. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  341. package/dist/esm-es5/ion-modal.entry.js +1 -1
  342. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  343. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  344. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  345. package/dist/esm-es5/ion-picker.entry.js +1 -1
  346. package/dist/esm-es5/ion-popover.entry.js +1 -1
  347. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  348. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  349. package/dist/esm-es5/ion-range.entry.js +1 -1
  350. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  351. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  352. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  353. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  354. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  355. package/dist/esm-es5/ion-segment-content.entry.js +4 -0
  356. package/dist/esm-es5/ion-segment-view.entry.js +4 -0
  357. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  358. package/dist/esm-es5/ion-select-modal.entry.js +4 -0
  359. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  360. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  361. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  362. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  363. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  364. package/dist/esm-es5/ion-text.entry.js +1 -1
  365. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  366. package/dist/esm-es5/ion-toast.entry.js +1 -1
  367. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  368. package/dist/esm-es5/ionic.js +1 -1
  369. package/dist/esm-es5/loader.js +1 -1
  370. package/dist/esm-es5/overlays-e7b9d6d9.js +4 -0
  371. package/dist/html.html-data.json +65 -2
  372. package/dist/ionic/index.esm.js +1 -1
  373. package/dist/ionic/ionic.esm.js +1 -1
  374. package/dist/ionic/{p-313ccc01.system.entry.js → p-01186920.system.entry.js} +1 -1
  375. package/dist/ionic/{p-7251fed5.entry.js → p-04909654.entry.js} +1 -1
  376. package/dist/ionic/{p-e3e1e3de.entry.js → p-081a4ce4.entry.js} +1 -1
  377. package/dist/ionic/p-0aa833fb.system.js +4 -0
  378. package/dist/ionic/{p-79e7be3a.system.entry.js → p-1046866e.system.entry.js} +1 -1
  379. package/dist/ionic/p-12a722b8.system.entry.js +4 -0
  380. package/dist/ionic/{p-41c89b8d.entry.js → p-12c45a7c.entry.js} +1 -1
  381. package/dist/ionic/p-14be4015.entry.js +4 -0
  382. package/dist/ionic/{p-c71f301f.system.entry.js → p-14e159ea.system.entry.js} +1 -1
  383. package/dist/ionic/p-15e76dd1.entry.js +4 -0
  384. package/dist/ionic/{p-003eecb9.entry.js → p-16188af7.entry.js} +1 -1
  385. package/dist/ionic/p-16799667.system.entry.js +4 -0
  386. package/dist/ionic/p-16bfb979.system.entry.js +4 -0
  387. package/dist/ionic/{p-8836d0eb.system.entry.js → p-17a9ca63.system.entry.js} +1 -1
  388. package/dist/ionic/{p-b54fc1ae.entry.js → p-19ec4f42.entry.js} +1 -1
  389. package/dist/ionic/{p-8b6232a6.system.entry.js → p-1e010627.system.entry.js} +2 -2
  390. package/dist/ionic/{p-cdb11938.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  391. package/dist/ionic/{p-0790b342.system.entry.js → p-1fe02220.system.entry.js} +1 -1
  392. package/dist/ionic/{p-836d39d4.system.entry.js → p-2172893e.system.entry.js} +1 -1
  393. package/dist/ionic/{p-4a0a4204.system.entry.js → p-2507278c.system.entry.js} +1 -1
  394. package/dist/ionic/{p-75c0dc65.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
  395. package/dist/ionic/{p-a879ecb7.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
  396. package/dist/ionic/{p-293ed6ac.system.entry.js → p-2b838f86.system.entry.js} +1 -1
  397. package/dist/ionic/p-2b9b78c7.entry.js +4 -0
  398. package/dist/ionic/{p-f0ab13a8.system.entry.js → p-2bd0ae94.system.entry.js} +1 -1
  399. package/dist/ionic/{p-4a82bd1c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
  400. package/dist/ionic/{p-148b8abb.entry.js → p-2fc0dafe.entry.js} +1 -1
  401. package/dist/ionic/p-322c5fb4.system.js +2 -2
  402. package/dist/ionic/{p-60cc7986.entry.js → p-33a8a71b.entry.js} +1 -1
  403. package/dist/ionic/{p-18105026.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
  404. package/dist/ionic/{p-be71fe0f.system.entry.js → p-404aede0.system.entry.js} +1 -1
  405. package/dist/ionic/p-424eb140.system.entry.js +4 -0
  406. package/dist/ionic/{p-b7657e8d.entry.js → p-4439fc2a.entry.js} +1 -1
  407. package/dist/ionic/{p-c34659b9.entry.js → p-45693d7e.entry.js} +1 -1
  408. package/dist/ionic/p-49a0e74c.entry.js +4 -0
  409. package/dist/ionic/{p-fd0cb4ef.entry.js → p-4ec778aa.entry.js} +1 -1
  410. package/dist/ionic/p-508d024a.entry.js +4 -0
  411. package/dist/ionic/{p-f559ac5b.entry.js → p-51796b2d.entry.js} +1 -1
  412. package/dist/ionic/{p-9ece8dcf.entry.js → p-52d7a191.entry.js} +1 -1
  413. package/dist/ionic/{p-ce705aac.system.entry.js → p-567de071.system.entry.js} +1 -1
  414. package/dist/ionic/{p-95823c62.system.entry.js → p-5823babc.system.entry.js} +2 -2
  415. package/dist/ionic/{p-baffaf8d.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  416. package/dist/ionic/{p-521eca2e.entry.js → p-5ab1b709.entry.js} +1 -1
  417. package/dist/ionic/{p-8d44cf1f.entry.js → p-5b932840.entry.js} +1 -1
  418. package/dist/ionic/{p-53add985.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
  419. package/dist/ionic/p-626fd66d.system.entry.js +4 -0
  420. package/dist/ionic/{p-233e6c93.entry.js → p-62af944c.entry.js} +1 -1
  421. package/dist/ionic/{p-00b01a55.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  422. package/dist/ionic/{p-ad9b5007.system.entry.js → p-6416c34c.system.entry.js} +1 -1
  423. package/dist/ionic/{p-857ca696.system.entry.js → p-6499df44.system.entry.js} +1 -1
  424. package/dist/ionic/p-69666e8a.system.entry.js +4 -0
  425. package/dist/ionic/{p-9e208825.entry.js → p-6b280620.entry.js} +1 -1
  426. package/dist/ionic/{p-5e842258.entry.js → p-6d32975a.entry.js} +1 -1
  427. package/dist/ionic/p-6d6cedc5.entry.js +4 -0
  428. package/dist/ionic/p-73dc4950.entry.js +4 -0
  429. package/dist/ionic/{p-fcd71204.system.entry.js → p-7458862e.system.entry.js} +1 -1
  430. package/dist/ionic/{p-a3711608.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  431. package/dist/ionic/{p-f8c8b9ba.entry.js → p-7b9a2b23.entry.js} +1 -1
  432. package/dist/ionic/{p-bd25d639.system.entry.js → p-7ddc46c3.system.entry.js} +1 -1
  433. package/dist/ionic/{p-6817cf42.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  434. package/dist/ionic/p-908d6080.entry.js +4 -0
  435. package/dist/ionic/{p-af999a31.entry.js → p-937a7e21.entry.js} +1 -1
  436. package/dist/ionic/p-942b5e13.entry.js +4 -0
  437. package/dist/ionic/{p-4c8fceb0.entry.js → p-95775830.entry.js} +1 -1
  438. package/dist/ionic/{p-6ceb04b5.entry.js → p-982315a6.entry.js} +1 -1
  439. package/dist/ionic/{p-973f0b15.system.entry.js → p-98231c01.system.entry.js} +1 -1
  440. package/dist/ionic/{p-25928b83.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  441. package/dist/ionic/{p-e3a5da9d.entry.js → p-98ff6b32.entry.js} +1 -1
  442. package/dist/ionic/{p-6e85e450.entry.js → p-9df2c6fb.entry.js} +1 -1
  443. package/dist/ionic/{p-d58f21d2.entry.js → p-9e33104d.entry.js} +1 -1
  444. package/dist/ionic/{p-da263d8e.entry.js → p-9fa07aec.entry.js} +1 -1
  445. package/dist/ionic/{p-9910f786.entry.js → p-a43467d8.entry.js} +1 -1
  446. package/dist/ionic/{p-6b8893dd.entry.js → p-a61cba41.entry.js} +1 -1
  447. package/dist/ionic/p-adbc4bdf.entry.js +4 -0
  448. package/dist/ionic/{p-49bc6544.entry.js → p-afecb188.entry.js} +1 -1
  449. package/dist/ionic/p-b2272f51.system.entry.js +4 -0
  450. package/dist/ionic/{p-be715dd3.system.entry.js → p-b335ffed.system.entry.js} +1 -1
  451. package/dist/ionic/{p-6d50faff.entry.js → p-b79ba17c.entry.js} +1 -1
  452. package/dist/ionic/{p-e3f13b08.js → p-b82d4cab.js} +1 -1
  453. package/dist/ionic/{p-68c4df55.entry.js → p-b9d7015f.entry.js} +1 -1
  454. package/dist/ionic/{p-7243df6f.entry.js → p-bb0db172.entry.js} +1 -1
  455. package/dist/ionic/{p-df83e308.system.entry.js → p-bc36ad98.system.entry.js} +1 -1
  456. package/dist/ionic/{p-773d118d.entry.js → p-bdad26e3.entry.js} +1 -1
  457. package/dist/ionic/p-c29f8157.system.entry.js +4 -0
  458. package/dist/ionic/p-c2b74d92.system.entry.js +4 -0
  459. package/dist/ionic/{p-176b372f.entry.js → p-c41ac815.entry.js} +1 -1
  460. package/dist/ionic/{p-79b12fda.system.js → p-c449820c.system.js} +1 -1
  461. package/dist/ionic/{p-5417b9bb.entry.js → p-c9f3a539.entry.js} +1 -1
  462. package/dist/ionic/{p-2ea1ca4f.system.entry.js → p-ca065903.system.entry.js} +1 -1
  463. package/dist/ionic/{p-2ca6eac2.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  464. package/dist/ionic/{p-3c968c7f.system.entry.js → p-d18ab582.system.entry.js} +2 -2
  465. package/dist/ionic/{p-92d7a3d1.entry.js → p-d7aa6b00.entry.js} +1 -1
  466. package/dist/ionic/{p-21cfd4de.entry.js → p-da074ff7.entry.js} +1 -1
  467. package/dist/ionic/{p-89a0a446.entry.js → p-de930745.entry.js} +1 -1
  468. package/dist/ionic/{p-960803fc.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
  469. package/dist/ionic/{p-d754c709.system.entry.js → p-e4f69534.system.entry.js} +1 -1
  470. package/dist/ionic/{p-dda5c73d.entry.js → p-e563a35c.entry.js} +1 -1
  471. package/dist/ionic/p-e6635685.js +4 -0
  472. package/dist/ionic/{p-7740e32c.system.js → p-e7ed4a7f.system.js} +1 -1
  473. package/dist/ionic/{p-0373d924.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  474. package/dist/ionic/{p-9b6c6302.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
  475. package/dist/ionic/{p-01503bbd.system.entry.js → p-f3102647.system.entry.js} +1 -1
  476. package/dist/ionic/p-fbf284c7.entry.js +4 -0
  477. package/dist/ionic/{p-6562e0a9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
  478. package/dist/ionic/p-fec61c32.entry.js +4 -0
  479. package/dist/ionic/{p-b0180ce1.system.entry.js → p-ffd131f9.system.entry.js} +1 -1
  480. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  481. package/dist/types/components/menu/menu-interface.d.ts +5 -2
  482. package/dist/types/components/menu/menu.d.ts +6 -6
  483. package/dist/types/components/radio/radio.d.ts +1 -1
  484. package/dist/types/components/radio-group/radio-group.d.ts +2 -0
  485. package/dist/types/components/segment/segment.d.ts +21 -1
  486. package/dist/types/components/segment-button/segment-button.d.ts +4 -0
  487. package/dist/types/components/segment-content/segment-content.d.ts +4 -0
  488. package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
  489. package/dist/types/components/segment-view/segment-view.d.ts +55 -0
  490. package/dist/types/components/select/select-interface.d.ts +1 -1
  491. package/dist/types/components/select/select.d.ts +5 -4
  492. package/dist/types/components/select-modal/select-modal-interface.d.ts +10 -0
  493. package/dist/types/components/select-modal/select-modal.d.ts +16 -0
  494. package/dist/types/components/select-modal/test/fixtures.d.ts +16 -0
  495. package/dist/types/components.d.ts +104 -13
  496. package/dist/types/utils/focus-trap.d.ts +1 -1
  497. package/dist/types/utils/overlays-interface.d.ts +1 -1
  498. package/hydrate/index.js +695 -228
  499. package/hydrate/index.mjs +695 -228
  500. package/package.json +1 -1
  501. package/dist/esm-es5/overlays-ae10d43d.js +0 -4
  502. package/dist/ionic/p-04fc24ee.system.js +0 -4
  503. package/dist/ionic/p-110e03be.system.entry.js +0 -4
  504. package/dist/ionic/p-2200e26b.entry.js +0 -4
  505. package/dist/ionic/p-44d1539c.system.entry.js +0 -4
  506. package/dist/ionic/p-53854390.entry.js +0 -4
  507. package/dist/ionic/p-5800e441.entry.js +0 -4
  508. package/dist/ionic/p-5c831f49.js +0 -4
  509. package/dist/ionic/p-63d65dbc.system.entry.js +0 -4
  510. package/dist/ionic/p-72ffd137.system.entry.js +0 -4
  511. package/dist/ionic/p-82ab7ccb.entry.js +0 -4
  512. package/dist/ionic/p-87a4407b.entry.js +0 -4
  513. package/dist/ionic/p-9172535c.entry.js +0 -4
  514. package/dist/ionic/p-93f37ceb.system.entry.js +0 -4
  515. package/dist/ionic/p-9895e7f3.entry.js +0 -4
  516. package/dist/ionic/p-a0c88dc2.system.entry.js +0 -4
  517. package/dist/ionic/p-a89dac49.entry.js +0 -4
  518. package/dist/ionic/p-f88ebc36.entry.js +0 -4
package/hydrate/index.js CHANGED
@@ -4392,7 +4392,7 @@ const createLockController = () => {
4392
4392
  * Note: We need this distinction because `disabled="false"` is
4393
4393
  * valid usage for the disabled property on ion-button.
4394
4394
  */
4395
- const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])';
4395
+ const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), ion-checkbox:not([tabindex^="-"]):not([hidden]):not([disabled]), ion-radio:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])';
4396
4396
  /**
4397
4397
  * Focuses the first descendant in a context
4398
4398
  * that can receive focus. If none exists,
@@ -4447,7 +4447,13 @@ const focusElementInContext = (hostToFocus, fallbackElement) => {
4447
4447
  elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
4448
4448
  }
4449
4449
  if (elementToFocus) {
4450
- focusVisibleElement(elementToFocus);
4450
+ const radioGroup = elementToFocus.closest('ion-radio-group');
4451
+ if (radioGroup) {
4452
+ radioGroup.setFocus();
4453
+ }
4454
+ else {
4455
+ focusVisibleElement(elementToFocus);
4456
+ }
4451
4457
  }
4452
4458
  else {
4453
4459
  // Focus fallback element instead of letting focus escape
@@ -4623,6 +4629,7 @@ const createController = (tagName) => {
4623
4629
  };
4624
4630
  const alertController = /*@__PURE__*/ createController('ion-alert');
4625
4631
  const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
4632
+ const modalController = /*@__PURE__*/ createController('ion-modal');
4626
4633
  const popoverController = /*@__PURE__*/ createController('ion-popover');
4627
4634
  /**
4628
4635
  * Prepares the overlay element to be presented.
@@ -5397,21 +5404,30 @@ const createTriggerController = () => {
5397
5404
  * like TalkBack do not announce or interact with the content until the
5398
5405
  * animation is complete, avoiding confusion for users.
5399
5406
  *
5400
- * If the overlay is being presented, it prevents focus rings from appearing
5401
- * in incorrect positions due to the transition (specifically `transform`
5402
- * styles), ensuring that when aria-hidden is removed, the focus rings are
5403
- * correctly displayed in the final location of the elements.
5407
+ * When the overlay is presented on an Android device, TalkBack's focus rings
5408
+ * may appear in the wrong position due to the transition (specifically
5409
+ * `transform` styles). This occurs because the focus rings are initially
5410
+ * displayed at the starting position of the elements before the transition
5411
+ * begins. This workaround ensures the focus rings do not appear in the
5412
+ * incorrect location.
5413
+ *
5414
+ * If this solution is applied to iOS devices, then it leads to a bug where
5415
+ * the overlays cannot be accessed by screen readers. This is due to
5416
+ * VoiceOver not being able to update the accessibility tree when the
5417
+ * `aria-hidden` is removed.
5404
5418
  *
5405
5419
  * @param overlay - The overlay that is being animated.
5406
5420
  */
5407
5421
  const hideAnimatingOverlayFromScreenReaders = (overlay) => {
5408
5422
  if (doc === undefined)
5409
5423
  return;
5410
- /**
5411
- * Once the animation is complete, this attribute will be removed.
5412
- * This is done at the end of the `present` method.
5413
- */
5414
- overlay.setAttribute('aria-hidden', 'true');
5424
+ if (isPlatform('android')) {
5425
+ /**
5426
+ * Once the animation is complete, this attribute will be removed.
5427
+ * This is done at the end of the `present` method.
5428
+ */
5429
+ overlay.setAttribute('aria-hidden', 'true');
5430
+ }
5415
5431
  };
5416
5432
  /**
5417
5433
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
@@ -7291,13 +7307,15 @@ class Alert {
7291
7307
  const msgId = `alert-${overlayIndex}-msg`;
7292
7308
  const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';
7293
7309
  /**
7294
- * If the header is defined, use that. Otherwise, fall back to the subHeader.
7295
- * If neither is defined, don't set aria-labelledby.
7310
+ * Use both the header and subHeader ids if they are defined.
7311
+ * If only the header is defined, use the header id.
7312
+ * If only the subHeader is defined, use the subHeader id.
7313
+ * If neither are defined, do not set aria-labelledby.
7296
7314
  */
7297
- const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
7298
- return (hAsync(Host, Object.assign({ key: 'c7d53f48b359f2bc3480a2e1ba34948fc9378fb0', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
7315
+ const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
7316
+ return (hAsync(Host, Object.assign({ key: 'ad7e14b4f92a09387aa80abfb718a755e4e889d6', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
7299
7317
  zIndex: `${20000 + overlayIndex}`,
7300
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '18c7e6b5d63435d9a6a82bda951158e7e1af6e92', tappable: this.backdropDismiss }), hAsync("div", { key: '8ea08a2a70239e817442c12596f51b108aca428c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '215ca5d72b8b180788e9748f5f22de01fa5a152a', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '9880acd318428d4b5d670c67dd156477877f99f2', class: "alert-head" }, header && (hAsync("h2", { key: '612dec8dc9bfdcb36e1e4655dc214b7c229b20c8', id: hdrId, class: "alert-title" }, header)), subHeader && (hAsync("h2", { key: 'e3c54c80a1cd9399595064b5a0a887c16fdc8ff8', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '9062655e906b5caf36df6f742fd412552ae510be', tabindex: "0", "aria-hidden": "true" })));
7318
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '4b4693dca3c910aa9a61c4d90295d785ec6cbe3d', tappable: this.backdropDismiss }), hAsync("div", { key: '64fd19b8f1d8246dcc869053f858bc33506def4b', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'e61ba6f339c3a02cecd37d8b641ee5043018eb29', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '044e00667ffcb74aa2c5e0d0b42669c4004dbb4f', class: "alert-head" }, header && (hAsync("h2", { key: '1aaae8d58722c4cf5debb1f00415ab7ed0a52bbd', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '9c9854dc3b0ad40f1861a49b76d5636afcae9c74', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '19aaca9912f77cde4ae8079be210eda697ed8de1', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'a85d27c516f7cdbc85b19f40d2f0bd865490b6a7', tabindex: "0", "aria-hidden": "true" })));
7301
7319
  }
7302
7320
  get el() { return getElement(this); }
7303
7321
  static get watchers() { return {
@@ -7375,7 +7393,7 @@ class App {
7375
7393
  }
7376
7394
  render() {
7377
7395
  const mode = getIonMode$1(this);
7378
- return (hAsync(Host, { key: 'e95cdeb2709edbc74f4e6ebf77cb110154605b72', class: {
7396
+ return (hAsync(Host, { key: '96715520fd05d6f0e6fa26a8ba78792cfccd4c0a', class: {
7379
7397
  [mode]: true,
7380
7398
  'ion-page': true,
7381
7399
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -7406,7 +7424,7 @@ class Avatar {
7406
7424
  registerInstance(this, hostRef);
7407
7425
  }
7408
7426
  render() {
7409
- return (hAsync(Host, { key: 'dc1e3cd535e419eebe5599574fd2393ebfde8bbc', class: getIonMode$1(this) }, hAsync("slot", { key: 'edb8441c063ea592b41345ea97d88ecd90cb3052' })));
7427
+ return (hAsync(Host, { key: '998217066084f966bf5d356fed85bcbd451f675a', class: getIonMode$1(this) }, hAsync("slot", { key: '1a6f7c9d4dc6a875f86b5b3cda6d59cb39587f22' })));
7410
7428
  }
7411
7429
  static get style() { return {
7412
7430
  ios: IonAvatarIosStyle0,
@@ -7494,7 +7512,7 @@ class BackButton {
7494
7512
  const showBackButton = defaultHref !== undefined;
7495
7513
  const mode = getIonMode$1(this);
7496
7514
  const ariaLabel = inheritedAttributes['aria-label'] || backButtonText || 'back';
7497
- return (hAsync(Host, { key: '8351c93a1812c94c979fb115f07a9ad7b3152188', onClick: this.onClick, class: createColorClasses$1(color, {
7515
+ return (hAsync(Host, { key: '5466624a10f1ab56f5469e6dc07080303880f2fe', onClick: this.onClick, class: createColorClasses$1(color, {
7498
7516
  [mode]: true,
7499
7517
  button: true, // ion-buttons target .button
7500
7518
  'back-button-disabled': disabled,
@@ -7504,7 +7522,7 @@ class BackButton {
7504
7522
  'ion-activatable': true,
7505
7523
  'ion-focusable': true,
7506
7524
  'show-back-button': showBackButton,
7507
- }) }, hAsync("button", { key: '991b8baa784dbfbdf8d3581cbbf6a858ac1f1e6e', type: type, disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }, hAsync("span", { key: '929fcd83a4fdb00cf97ca803f234719171602a5e', class: "button-inner" }, backButtonIcon && (hAsync("ion-icon", { key: '0c10d412ae8342d96f221e626b421c9abadac748', part: "icon", icon: backButtonIcon, "aria-hidden": "true", lazy: false, "flip-rtl": icon === undefined })), backButtonText && (hAsync("span", { key: '96f505880a80f36ee8b8c78268b450f3629ee613', part: "text", "aria-hidden": "true", class: "button-text" }, backButtonText))), mode === 'md' && hAsync("ion-ripple-effect", { key: '0aecf5d415c608069eb1a10043530bd0929b6383', type: this.rippleType }))));
7525
+ }) }, hAsync("button", { key: '63bc75ef0ad7cc9fb79e58217a3314b20acd73e3', type: type, disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }, hAsync("span", { key: '5d3eacbd11af2245c6e1151cab446a0d96559ad8', class: "button-inner" }, backButtonIcon && (hAsync("ion-icon", { key: '6439af0ae463764174e7d3207f02267811df666d', part: "icon", icon: backButtonIcon, "aria-hidden": "true", lazy: false, "flip-rtl": icon === undefined })), backButtonText && (hAsync("span", { key: '8ee89fb18dfdb5b75948a8b197ff4cdbc008742f', part: "text", "aria-hidden": "true", class: "button-text" }, backButtonText))), mode === 'md' && hAsync("ion-ripple-effect", { key: '63803a884998bc73bea5afe0b2a0a14e3fa4d6bf', type: this.rippleType }))));
7508
7526
  }
7509
7527
  get el() { return getElement(this); }
7510
7528
  static get style() { return {
@@ -7557,7 +7575,7 @@ class Backdrop {
7557
7575
  }
7558
7576
  render() {
7559
7577
  const mode = getIonMode$1(this);
7560
- return (hAsync(Host, { key: 'fe191068e2aaadfdbe7a463c08d227a1b36d7a98', "aria-hidden": "true", class: {
7578
+ return (hAsync(Host, { key: '7abaf2c310aa399607451b14063265e8a5846938', "aria-hidden": "true", class: {
7561
7579
  [mode]: true,
7562
7580
  'backdrop-hide': !this.visible,
7563
7581
  'backdrop-no-tappable': !this.tappable,
@@ -7597,9 +7615,9 @@ class Badge {
7597
7615
  }
7598
7616
  render() {
7599
7617
  const mode = getIonMode$1(this);
7600
- return (hAsync(Host, { key: '1253618692342bcf9487188402dc3d49ae0de480', class: createColorClasses$1(this.color, {
7618
+ return (hAsync(Host, { key: '1a2d39c5deec771a2f2196447627b62a7d4c8389', class: createColorClasses$1(this.color, {
7601
7619
  [mode]: true,
7602
- }) }, hAsync("slot", { key: '71d65e203965ea37b94504a8a0a96beb52d4e356' })));
7620
+ }) }, hAsync("slot", { key: 'fc1b6587f1ed24715748eb6785e7fb7a57cdd5cd' })));
7603
7621
  }
7604
7622
  static get style() { return {
7605
7623
  ios: IonBadgeIosStyle0,
@@ -7685,7 +7703,7 @@ class Breadcrumb {
7685
7703
  // to show the separator as long as it isn't also the last breadcrumb
7686
7704
  // otherwise if not collapsed use the value in separator
7687
7705
  const showSeparator = last ? false : collapsed ? (showCollapsedIndicator && !last ? true : false) : separator;
7688
- return (hAsync(Host, { key: 'dfe55ad57f23e5da5f2e2c51fea99964812472e3', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7706
+ return (hAsync(Host, { key: '32ca61c83721dff52b5e97171ed449dce3584a55', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7689
7707
  [mode]: true,
7690
7708
  'breadcrumb-active': active,
7691
7709
  'breadcrumb-collapsed': collapsed,
@@ -7695,15 +7713,15 @@ class Breadcrumb {
7695
7713
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7696
7714
  'ion-activatable': clickable,
7697
7715
  'ion-focusable': clickable,
7698
- }) }, hAsync(TagType, Object.assign({ key: 'e361b1f0e7de6dd5c5dd4f6deae72c2c8210466d' }, attrs, { class: "breadcrumb-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("slot", { key: '9daeb45a8a28c89f3ad5751f71b8412197846371', name: "start" }), hAsync("slot", { key: '4849e63cdffd6c712292745138b68730442c8b0d' }), hAsync("slot", { key: '6edf9bac5aec06ccec2844efac2d9afa1d24cf57', name: "end" })), showCollapsedIndicator && (hAsync("button", { key: 'de7f5faea75b44011b289d259265e2435a65874f', part: "collapsed-indicator", "aria-label": "Show more breadcrumbs", onClick: () => this.collapsedIndicatorClick(), ref: (collapsedEl) => (this.collapsedRef = collapsedEl), class: {
7716
+ }) }, hAsync(TagType, Object.assign({ key: '479feb845f4a6d8009d5422b33eb423730b9722b' }, attrs, { class: "breadcrumb-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("slot", { key: '3c5dcaeb0d258235d1b7707868026ff1d1404099', name: "start" }), hAsync("slot", { key: 'f1cfb934443cd97dc220882c5e3596ea879d66cf' }), hAsync("slot", { key: '539710121b5b1f3ee8d4c24a9651b67c2ae08add', name: "end" })), showCollapsedIndicator && (hAsync("button", { key: 'ed53a95ccd89022c8b7bee0658a221ec62a5c73b', part: "collapsed-indicator", "aria-label": "Show more breadcrumbs", onClick: () => this.collapsedIndicatorClick(), ref: (collapsedEl) => (this.collapsedRef = collapsedEl), class: {
7699
7717
  'breadcrumbs-collapsed-indicator': true,
7700
- } }, hAsync("ion-icon", { key: '957d8851af9c99dda263f34eff0b35a0fc212c32', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7718
+ } }, hAsync("ion-icon", { key: 'a849e1142a86f06f207cf11662fa2a560ab7fc6a', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7701
7719
  /**
7702
7720
  * Separators should not be announced by narrators.
7703
7721
  * We add aria-hidden on the span so that this applies
7704
7722
  * to any custom separators too.
7705
7723
  */
7706
- hAsync("span", { key: '97d646c37c4c41ad6b12c3a543d1146fde06fc9a', class: "breadcrumb-separator", part: "separator", "aria-hidden": "true" }, hAsync("slot", { key: '0429f671a986f2d7be1b1b69fc879e80806d2916', name: "separator" }, mode === 'ios' ? (hAsync("ion-icon", { icon: chevronForwardOutline, lazy: false, "flip-rtl": true })) : (hAsync("span", null, "/")))))));
7724
+ hAsync("span", { key: 'fc3c741cb01fafef8b26046c7ee5b190efc69a7c', class: "breadcrumb-separator", part: "separator", "aria-hidden": "true" }, hAsync("slot", { key: '4871932ae1dae520767e0713e7cee2d11b0bba6d', name: "separator" }, mode === 'ios' ? (hAsync("ion-icon", { icon: chevronForwardOutline, lazy: false, "flip-rtl": true })) : (hAsync("span", null, "/")))))));
7707
7725
  }
7708
7726
  get el() { return getElement(this); }
7709
7727
  static get style() { return {
@@ -7843,12 +7861,12 @@ class Breadcrumbs {
7843
7861
  render() {
7844
7862
  const { color, collapsed } = this;
7845
7863
  const mode = getIonMode$1(this);
7846
- return (hAsync(Host, { key: '18ffba1642f10cc2bc31440e84f23aa6f042e501', class: createColorClasses$1(color, {
7864
+ return (hAsync(Host, { key: 'fe64e9cdf597ede2db140bf5fa05a0359d82db57', class: createColorClasses$1(color, {
7847
7865
  [mode]: true,
7848
7866
  'in-toolbar': hostContext('ion-toolbar', this.el),
7849
7867
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7850
7868
  'breadcrumbs-collapsed': collapsed,
7851
- }) }, hAsync("slot", { key: '3db6d31590e3047889ce554d57d155c8ea2e1455', onSlotchange: this.slotChanged })));
7869
+ }) }, hAsync("slot", { key: 'a2c99b579e339055c50a613d5c6b61032f5ddffe', onSlotchange: this.slotChanged })));
7852
7870
  }
7853
7871
  get el() { return getElement(this); }
7854
7872
  static get watchers() { return {
@@ -8091,7 +8109,7 @@ class Button {
8091
8109
  {
8092
8110
  type !== 'button' && this.renderHiddenButton();
8093
8111
  }
8094
- return (hAsync(Host, { key: '8f3a0363d46ef888d22b0b0812c70cb4f79e6efa', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8112
+ return (hAsync(Host, { key: '340a809d85698741bb36e796355cae89a970655f', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8095
8113
  [mode]: true,
8096
8114
  [buttonType]: true,
8097
8115
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -8106,7 +8124,7 @@ class Button {
8106
8124
  'button-disabled': disabled,
8107
8125
  'ion-activatable': true,
8108
8126
  'ion-focusable': true,
8109
- }) }, hAsync(TagType, Object.assign({ key: 'a517c7d06aab15ad4c2a51b8ec224c1aeb4ed565' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("span", { key: '127c26dd97c0bf5097433df77df7313d59784899', class: "button-inner" }, hAsync("slot", { key: '39d9a9cad8e1addbe63406062e555e05c2cb541b', name: "icon-only", onSlotchange: this.slotChanged }), hAsync("slot", { key: 'cfdebdd89155c6c21eb80e51e06456a3a6d877e0', name: "start" }), hAsync("slot", { key: 'eac497e0f97ab55baa834ae23155d89b0f7069c6' }), hAsync("slot", { key: 'c99f7900f8856b32a0b4ac11092d461f5e9a1109', name: "end" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'c681edb0480879fbd801575f2233f6e118898638', type: this.rippleType }))));
8127
+ }) }, hAsync(TagType, Object.assign({ key: '03ae1b94a0d606aa65aa6f82c2fc76abcf3f1300' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("span", { key: '90bf53d4ffcab88ee596ece7113d5b6409e61143', class: "button-inner" }, hAsync("slot", { key: 'a7876695f0d8702e8bcb471ae4c0984f27d77458', name: "icon-only", onSlotchange: this.slotChanged }), hAsync("slot", { key: '2c8551586f8726884d7797a6d3fee2d4b3aab35f', name: "start" }), hAsync("slot", { key: '9ab07accdb22b08d0a463a7c821c9793507d1f7d' }), hAsync("slot", { key: '8984afe177e6ba021435875a3798e2a64f3bdf2c', name: "end" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '3e9f01e7a1198b6b7109502293a971da7072a4f3', type: this.rippleType }))));
8110
8128
  }
8111
8129
  get el() { return getElement(this); }
8112
8130
  static get watchers() { return {
@@ -8157,10 +8175,10 @@ class Buttons {
8157
8175
  }
8158
8176
  render() {
8159
8177
  const mode = getIonMode$1(this);
8160
- return (hAsync(Host, { key: '4e5ce9abb3f56e8c91e3eb58c2819300e61eba24', class: {
8178
+ return (hAsync(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
8161
8179
  [mode]: true,
8162
8180
  ['buttons-collapse']: this.collapse,
8163
- } }, hAsync("slot", { key: 'f2f360ec888b6e946b512fed07431fab47c61482' })));
8181
+ } }, hAsync("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
8164
8182
  }
8165
8183
  static get style() { return {
8166
8184
  ios: IonButtonsIosStyle0,
@@ -8229,7 +8247,7 @@ class Card {
8229
8247
  }
8230
8248
  render() {
8231
8249
  const mode = getIonMode$1(this);
8232
- return (hAsync(Host, { key: '8584300522f382ee8891c039d71da82533dfa36a', class: createColorClasses$1(this.color, {
8250
+ return (hAsync(Host, { key: '85e9b30bd81e79a0c7ac75cb3664bdcf9e4afc4d', class: createColorClasses$1(this.color, {
8233
8251
  [mode]: true,
8234
8252
  'card-disabled': this.disabled,
8235
8253
  'ion-activatable': this.isClickable(),
@@ -8276,7 +8294,7 @@ class CardContent {
8276
8294
  }
8277
8295
  render() {
8278
8296
  const mode = getIonMode$1(this);
8279
- return (hAsync(Host, { key: '2a2d0b48aad4b83990a1748fce60e772514eb223', class: {
8297
+ return (hAsync(Host, { key: 'd98e4d1fc6ad3237549f9bc17e4c67ec5059b1b3', class: {
8280
8298
  [mode]: true,
8281
8299
  // Used internally for styling
8282
8300
  [`card-content-${mode}`]: true,
@@ -8313,11 +8331,11 @@ class CardHeader {
8313
8331
  }
8314
8332
  render() {
8315
8333
  const mode = getIonMode$1(this);
8316
- return (hAsync(Host, { key: '18d12507ec6e650a72d721e9d0f4128b5e86df1d', class: createColorClasses$1(this.color, {
8334
+ return (hAsync(Host, { key: '64246b81931203a64d553c788cd736f41e23f37b', class: createColorClasses$1(this.color, {
8317
8335
  'card-header-translucent': this.translucent,
8318
8336
  'ion-inherit-color': true,
8319
8337
  [mode]: true,
8320
- }) }, hAsync("slot", { key: '3374c087d8c3f014082787e255432e7a335ef44f' })));
8338
+ }) }, hAsync("slot", { key: 'af2da2dfe266889afeb57fac25c6a730558dbba4' })));
8321
8339
  }
8322
8340
  static get style() { return {
8323
8341
  ios: IonCardHeaderIosStyle0,
@@ -8352,10 +8370,10 @@ class CardSubtitle {
8352
8370
  }
8353
8371
  render() {
8354
8372
  const mode = getIonMode$1(this);
8355
- return (hAsync(Host, { key: 'cbcb01bd01cf6de64a0b04fb626e42b07ceb8f53', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8373
+ return (hAsync(Host, { key: '84d820a19d9074f9c8bc61ccba1ca40062a60b73', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8356
8374
  'ion-inherit-color': true,
8357
8375
  [mode]: true,
8358
- }) }, hAsync("slot", { key: 'cbcaa73aa5799882c48d6c0aabfb13651bcc91c0' })));
8376
+ }) }, hAsync("slot", { key: 'e4d07d395a1f4469a90847636083101b32b776a1' })));
8359
8377
  }
8360
8378
  static get style() { return {
8361
8379
  ios: IonCardSubtitleIosStyle0,
@@ -8389,10 +8407,10 @@ class CardTitle {
8389
8407
  }
8390
8408
  render() {
8391
8409
  const mode = getIonMode$1(this);
8392
- return (hAsync(Host, { key: 'f904a0ca6489f147d03c9c5f9f2c5549cdb38d1a', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8410
+ return (hAsync(Host, { key: 'fca001a86396e83718d5211cd71912fdf40dea2f', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8393
8411
  'ion-inherit-color': true,
8394
8412
  [mode]: true,
8395
- }) }, hAsync("slot", { key: 'effb921de4ad8dfbbe318b3f692f4005812da7b1' })));
8413
+ }) }, hAsync("slot", { key: '2ba416aed488b2ff462fa75fb3b70373a6dd7da6' })));
8396
8414
  }
8397
8415
  static get style() { return {
8398
8416
  ios: IonCardTitleIosStyle0,
@@ -8477,7 +8495,8 @@ class Checkbox {
8477
8495
  componentWillLoad() {
8478
8496
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
8479
8497
  }
8480
- setFocus() {
8498
+ /** @internal */
8499
+ async setFocus() {
8481
8500
  if (this.focusEl) {
8482
8501
  this.focusEl.focus();
8483
8502
  }
@@ -8487,7 +8506,7 @@ class Checkbox {
8487
8506
  const mode = getIonMode$1(this);
8488
8507
  const path = getSVGPath(mode, indeterminate);
8489
8508
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8490
- return (hAsync(Host, { key: 'd7a07fbf130413eaa4622c07786e8a00723113eb', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8509
+ return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8491
8510
  [mode]: true,
8492
8511
  'in-item': hostContext('ion-item', el),
8493
8512
  'checkbox-checked': checked,
@@ -8497,10 +8516,10 @@ class Checkbox {
8497
8516
  [`checkbox-justify-${justify}`]: justify !== undefined,
8498
8517
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8499
8518
  [`checkbox-label-placement-${labelPlacement}`]: true,
8500
- }), onClick: this.onClick }, hAsync("label", { key: '99797589ed4ea7cbac53531c85b2d4a2dcd568c4', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: 'cc12fe7920ab23c6f21546f7b312b8f1f5671349', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), hAsync("div", { key: '1b087f061da5abca6129d372503d8882b77e24be', class: {
8519
+ }), onClick: this.onClick }, hAsync("label", { key: '68222fb736a5ec3f2e488649b0e2ce0417dcb224', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: 'f12962d7e9b19c744cfdbdeccc67ae7f5d080281', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), hAsync("div", { key: 'c72df2699414b1e5a41a1bc267bc634f0c93dcff', class: {
8501
8520
  'label-text-wrapper': true,
8502
8521
  'label-text-wrapper-hidden': el.textContent === '',
8503
- }, part: "label" }, hAsync("slot", { key: 'bc84274c826fa1db1207230aa03bf5790afe2992' })), hAsync("div", { key: '89e9396dc9215804bd8ac42e943a292d050ef8c5', class: "native-wrapper" }, hAsync("svg", { key: '2aafac248c639074faaf17044d8d9204474a9b7b', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8522
+ }, part: "label" }, hAsync("slot", { key: 'a2a80285178a7e0e3b536fc9ca26b8b444aa4307' })), hAsync("div", { key: 'c2b05e0d1fe8df5dcd72858220b5ff51ecaee4cc', class: "native-wrapper" }, hAsync("svg", { key: 'ee24913fded72258ebd9713654a6dba92a18fcf7', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8504
8523
  }
8505
8524
  getSVGPath(mode, indeterminate) {
8506
8525
  let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -8526,7 +8545,8 @@ class Checkbox {
8526
8545
  "value": [8],
8527
8546
  "labelPlacement": [1, "label-placement"],
8528
8547
  "justify": [1],
8529
- "alignment": [1]
8548
+ "alignment": [1],
8549
+ "setFocus": [64]
8530
8550
  },
8531
8551
  "$listeners$": undefined,
8532
8552
  "$lazyBundleId$": "-",
@@ -8553,12 +8573,12 @@ class Chip {
8553
8573
  }
8554
8574
  render() {
8555
8575
  const mode = getIonMode$1(this);
8556
- return (hAsync(Host, { key: '7dd923c1b28d1eb1efa348f66f49cec067645af9', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8576
+ return (hAsync(Host, { key: 'fa2e9a4837ef87a17ef10f388e8caa7f604d9145', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8557
8577
  [mode]: true,
8558
8578
  'chip-outline': this.outline,
8559
8579
  'chip-disabled': this.disabled,
8560
8580
  'ion-activatable': true,
8561
- }) }, hAsync("slot", { key: '7ede838bf109dc27a898ee2dcdeabc3f439c8e6f' }), mode === 'md' && hAsync("ion-ripple-effect", { key: '5acb073029544e73fcc0db4cc4e661ec1df4d231' })));
8581
+ }) }, hAsync("slot", { key: '3793fbd9d915cef7241fb101e2bc64c08b9ba482' }), mode === 'md' && hAsync("ion-ripple-effect", { key: 'd3b95b53918611dec095a50f2aaaab65617947a4' })));
8562
8582
  }
8563
8583
  static get style() { return {
8564
8584
  ios: IonChipIosStyle0,
@@ -8709,9 +8729,9 @@ class Col {
8709
8729
  render() {
8710
8730
  const isRTL = document.dir === 'rtl';
8711
8731
  const mode = getIonMode$1(this);
8712
- return (hAsync(Host, { key: 'c37fa4c4c993385ccbb6f4e89b2f390b140507a0', class: {
8732
+ return (hAsync(Host, { key: '32ed75d81dd09d9bc8999f6d42e5b3cb99c84d91', class: {
8713
8733
  [mode]: true,
8714
- }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '6a5296ff0b9dee6600c2dafe7363a065d053bac2' })));
8734
+ }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '38f8d0440c20cc6d1b1d6a654d07f16de61d8134' })));
8715
8735
  }
8716
8736
  static get style() { return IonColStyle0; }
8717
8737
  static get cmpMeta() { return {
@@ -9085,7 +9105,7 @@ class Content {
9085
9105
  const forceOverscroll = this.shouldForceOverscroll();
9086
9106
  const transitionShadow = mode === 'ios';
9087
9107
  this.resize();
9088
- return (hAsync(Host, Object.assign({ key: '92a7cbc2e9c812930f4231bd846411933a5dded6', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9108
+ return (hAsync(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9089
9109
  [mode]: true,
9090
9110
  'content-sizing': hostContext('ion-popover', this.el),
9091
9111
  overscroll: forceOverscroll,
@@ -9093,12 +9113,12 @@ class Content {
9093
9113
  }), style: {
9094
9114
  '--offset-top': `${this.cTop}px`,
9095
9115
  '--offset-bottom': `${this.cBottom}px`,
9096
- } }, inheritedAttributes), hAsync("div", { key: '52498d8874b9944b8245e448ea9dfc75b3929c2d', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? hAsync("slot", { name: "fixed" }) : null, hAsync("div", { key: '00e157a53485b285300404178436276afceb63f5', class: {
9116
+ } }, inheritedAttributes), hAsync("div", { key: '6480ca7648b278abb36477b3838bccbcd4995e2a', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? hAsync("slot", { name: "fixed" }) : null, hAsync("div", { key: '29a23b663f5f0215bb000820c01e1814c0d55985', class: {
9097
9117
  'inner-scroll': true,
9098
9118
  'scroll-x': scrollX,
9099
9119
  'scroll-y': scrollY,
9100
9120
  overscroll: (scrollX || scrollY) && forceOverscroll,
9101
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: '8522320514a2e8a63f7dc9ade6c1fb3fb00f454e' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? hAsync("slot", { name: "fixed" }) : null));
9121
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, hAsync("slot", { key: '0fe1bd05609a4b88ae2ce9addf5d5dc5dc1806f0' })), transitionShadow ? (hAsync("div", { class: "transition-effect" }, hAsync("div", { class: "transition-cover" }), hAsync("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? hAsync("slot", { name: "fixed" }) : null));
9102
9122
  }
9103
9123
  get el() { return getElement(this); }
9104
9124
  static get style() { return IonContentStyle0; }
@@ -12619,7 +12639,7 @@ class Datetime {
12619
12639
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
12620
12640
  const hasWheelVariant = hasDatePresentation && preferWheel;
12621
12641
  renderHiddenInput(true, el, name, formatValue(value), disabled);
12622
- return (hAsync(Host, { key: '2933ce5caaeb21a633b1ec4d936e86b0f0890807', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12642
+ return (hAsync(Host, { key: '7afbb1a7e6c78389b4588999779e5c90e010e85d', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12623
12643
  [mode]: true,
12624
12644
  ['datetime-readonly']: readonly,
12625
12645
  ['datetime-disabled']: disabled,
@@ -12629,7 +12649,7 @@ class Datetime {
12629
12649
  [`datetime-size-${size}`]: true,
12630
12650
  [`datetime-prefer-wheel`]: hasWheelVariant,
12631
12651
  [`datetime-grid`]: isGridStyle,
12632
- })) }, hAsync("div", { key: '0efc9ef0aa1a29234412b2eddf5d7ff899b7543f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12652
+ })) }, hAsync("div", { key: '297c458d4d17154cb297e2ef5926505bcb2d1fce', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12633
12653
  }
12634
12654
  get el() { return getElement(this); }
12635
12655
  static get watchers() { return {
@@ -13037,11 +13057,11 @@ class DatetimeButton {
13037
13057
  render() {
13038
13058
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
13039
13059
  const mode = getIonMode$1(this);
13040
- return (hAsync(Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: createColorClasses$1(color, {
13060
+ return (hAsync(Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: createColorClasses$1(color, {
13041
13061
  [mode]: true,
13042
13062
  [`${selectedButton}-active`]: datetimeActive,
13043
13063
  ['datetime-button-disabled']: disabled,
13044
- }) }, 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' })))));
13064
+ }) }, 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' })))));
13045
13065
  }
13046
13066
  get el() { return getElement(this); }
13047
13067
  static get style() { return {
@@ -13115,12 +13135,12 @@ class Fab {
13115
13135
  render() {
13116
13136
  const { horizontal, vertical, edge } = this;
13117
13137
  const mode = getIonMode$1(this);
13118
- return (hAsync(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
13138
+ return (hAsync(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
13119
13139
  [mode]: true,
13120
13140
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
13121
13141
  [`fab-vertical-${vertical}`]: vertical !== undefined,
13122
13142
  'fab-edge': edge,
13123
- } }, hAsync("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
13143
+ } }, hAsync("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
13124
13144
  }
13125
13145
  get el() { return getElement(this); }
13126
13146
  static get watchers() { return {
@@ -13210,7 +13230,7 @@ class FabButton {
13210
13230
  rel: this.rel,
13211
13231
  target: this.target,
13212
13232
  };
13213
- return (hAsync(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13233
+ return (hAsync(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13214
13234
  [mode]: true,
13215
13235
  'fab-button-in-list': inList,
13216
13236
  'fab-button-translucent-in-list': inList && translucent,
@@ -13221,7 +13241,7 @@ class FabButton {
13221
13241
  'ion-activatable': true,
13222
13242
  'ion-focusable': true,
13223
13243
  [`fab-button-${size}`]: size !== undefined,
13224
- }) }, 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' }))));
13244
+ }) }, 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' }))));
13225
13245
  }
13226
13246
  get el() { return getElement(this); }
13227
13247
  static get style() { return {
@@ -13272,11 +13292,11 @@ class FabList {
13272
13292
  }
13273
13293
  render() {
13274
13294
  const mode = getIonMode$1(this);
13275
- return (hAsync(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
13295
+ return (hAsync(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
13276
13296
  [mode]: true,
13277
13297
  'fab-list-active': this.activated,
13278
13298
  [`fab-list-side-${this.side}`]: true,
13279
- } }, hAsync("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
13299
+ } }, hAsync("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
13280
13300
  }
13281
13301
  get el() { return getElement(this); }
13282
13302
  static get watchers() { return {
@@ -13728,7 +13748,7 @@ class Footer {
13728
13748
  const mode = getIonMode$1(this);
13729
13749
  const tabs = this.el.closest('ion-tabs');
13730
13750
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
13731
- return (hAsync(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
13751
+ return (hAsync(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
13732
13752
  [mode]: true,
13733
13753
  // Used internally for styling
13734
13754
  [`footer-${mode}`]: true,
@@ -13736,7 +13756,7 @@ class Footer {
13736
13756
  [`footer-translucent-${mode}`]: translucent,
13737
13757
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
13738
13758
  [`footer-collapse-${collapse}`]: collapse !== undefined,
13739
- } }, mode === 'ios' && translucent && hAsync("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), hAsync("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
13759
+ } }, mode === 'ios' && translucent && hAsync("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), hAsync("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
13740
13760
  }
13741
13761
  get el() { return getElement(this); }
13742
13762
  static get style() { return {
@@ -13767,10 +13787,10 @@ class Grid {
13767
13787
  }
13768
13788
  render() {
13769
13789
  const mode = getIonMode$1(this);
13770
- return (hAsync(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
13790
+ return (hAsync(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
13771
13791
  [mode]: true,
13772
13792
  'grid-fixed': this.fixed,
13773
- } }, hAsync("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
13793
+ } }, hAsync("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
13774
13794
  }
13775
13795
  static get style() { return IonGridStyle0; }
13776
13796
  static get cmpMeta() { return {
@@ -13909,13 +13929,32 @@ mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
13909
13929
  };
13910
13930
  const setHeaderActive = (headerIndex, active = true) => {
13911
13931
  const headerEl = headerIndex.el;
13932
+ const toolbars = headerIndex.toolbars;
13933
+ const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl);
13912
13934
  if (active) {
13913
13935
  headerEl.classList.remove('header-collapse-condense-inactive');
13914
- headerEl.removeAttribute('aria-hidden');
13936
+ ionTitles.forEach((ionTitle) => {
13937
+ if (ionTitle) {
13938
+ ionTitle.removeAttribute('aria-hidden');
13939
+ }
13940
+ });
13915
13941
  }
13916
13942
  else {
13917
13943
  headerEl.classList.add('header-collapse-condense-inactive');
13918
- headerEl.setAttribute('aria-hidden', 'true');
13944
+ /**
13945
+ * The small title should only be accessed by screen readers
13946
+ * when the large title collapses into the small title due
13947
+ * to scrolling.
13948
+ *
13949
+ * Originally, the header was given `aria-hidden="true"`
13950
+ * but this caused issues with screen readers not being
13951
+ * able to access any focusable elements within the header.
13952
+ */
13953
+ ionTitles.forEach((ionTitle) => {
13954
+ if (ionTitle) {
13955
+ ionTitle.setAttribute('aria-hidden', 'true');
13956
+ }
13957
+ });
13919
13958
  }
13920
13959
  };
13921
13960
  const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
@@ -14101,14 +14140,14 @@ class Header {
14101
14140
  const collapse = this.collapse || 'none';
14102
14141
  // banner role must be at top level, so remove role if inside a menu
14103
14142
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
14104
- return (hAsync(Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
14143
+ return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
14105
14144
  [mode]: true,
14106
14145
  // Used internally for styling
14107
14146
  [`header-${mode}`]: true,
14108
14147
  [`header-translucent`]: this.translucent,
14109
14148
  [`header-collapse-${collapse}`]: true,
14110
14149
  [`header-translucent-${mode}`]: this.translucent,
14111
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), hAsync("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
14150
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
14112
14151
  }
14113
14152
  get el() { return getElement(this); }
14114
14153
  static get style() { return {
@@ -14387,7 +14426,7 @@ class Img {
14387
14426
  render() {
14388
14427
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
14389
14428
  const { draggable } = inheritedAttributes;
14390
- 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) })));
14429
+ 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) })));
14391
14430
  }
14392
14431
  get el() { return getElement(this); }
14393
14432
  static get watchers() { return {
@@ -14594,7 +14633,7 @@ class InfiniteScroll {
14594
14633
  render() {
14595
14634
  const mode = getIonMode$1(this);
14596
14635
  const disabled = this.disabled;
14597
- return (hAsync(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
14636
+ return (hAsync(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
14598
14637
  [mode]: true,
14599
14638
  'infinite-scroll-loading': this.isLoading,
14600
14639
  'infinite-scroll-enabled': !disabled,
@@ -14650,11 +14689,11 @@ class InfiniteScrollContent {
14650
14689
  }
14651
14690
  render() {
14652
14691
  const mode = getIonMode$1(this);
14653
- return (hAsync(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
14692
+ return (hAsync(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
14654
14693
  [mode]: true,
14655
14694
  // Used internally for styling
14656
14695
  [`infinite-scroll-content-${mode}`]: true,
14657
- } }, 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())));
14696
+ } }, 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())));
14658
14697
  }
14659
14698
  static get style() { return {
14660
14699
  ios: IonInfiniteScrollContentIosStyle0,
@@ -15401,7 +15440,7 @@ class Input {
15401
15440
  * TODO(FW-5592): Remove hasStartEndSlots condition
15402
15441
  */
15403
15442
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
15404
- return (hAsync(Host, { key: 'cdde9963d71685e6a4f3f3b3bc52e75d022435cb', class: createColorClasses$1(this.color, {
15443
+ return (hAsync(Host, { key: '54b5662d9a7f011a85e4119650c92b9af275bf96', class: createColorClasses$1(this.color, {
15405
15444
  [mode]: true,
15406
15445
  'has-value': hasValue,
15407
15446
  'has-focus': hasFocus,
@@ -15412,7 +15451,7 @@ class Input {
15412
15451
  'in-item': inItem,
15413
15452
  'in-item-color': hostContext('ion-item.ion-color', this.el),
15414
15453
  'input-disabled': disabled,
15415
- }) }, hAsync("label", { key: '4412791c93405f20e50e50363879265180b6078f', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '5c71c43ef3eeb44dde76ed64ce10763834c8fbc7', class: "native-wrapper" }, hAsync("slot", { key: '1d86b58dc299a4208dd02ccdc9ceaea7576698c3', name: "start" }), hAsync("input", Object.assign({ key: '7fc932174485f7d09e6a797dfd49ea11fbad71b6', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '46de455e4e308b8d7640b04778f7c7559b4124c6', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
15454
+ }) }, hAsync("label", { key: '551cf8a932af3275689ecf32988b84355404e8f1', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'b3601dca7e0f23517748f6e7feb899c953355bc4', class: "native-wrapper" }, hAsync("slot", { key: 'd687a9bb4c5778cfee35ce1b8d6d16ddc8eca768', name: "start" }), hAsync("input", Object.assign({ key: 'ab927e84e43bedf8b7827bb743888a1778292deb', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '0d2ee3f7e69cee75f071f37b2e9bc174572c5a01', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
15416
15455
  /**
15417
15456
  * This prevents mobile browsers from
15418
15457
  * blurring the input when the clear
@@ -15427,7 +15466,7 @@ class Input {
15427
15466
  * for screen readers as it means users would be unable to swipe past the clear button.
15428
15467
  */
15429
15468
  ev.stopPropagation();
15430
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '375e860a20e1807ce0db0e1934a0650fe9929966', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '859d47a1b88aa8377479e5d11e52a6a1c1c30e7e', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'd2d4286b348107e33247b5c0afda0f8bd697ecee', class: "input-highlight" })), this.renderBottomContent()));
15469
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: 'c7715111897f43839c10d38662616edb662cd49b', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: 'afc44cbe1ad50f17942d5297a12509abecbd6ecd', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'ee3af32cd9003d497f33e352e56313d43295f3a9', class: "input-highlight" })), this.renderBottomContent()));
15431
15470
  }
15432
15471
  get el() { return getElement(this); }
15433
15472
  static get watchers() { return {
@@ -15549,16 +15588,16 @@ class InputPasswordToggle {
15549
15588
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
15550
15589
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
15551
15590
  const isPasswordVisible = type === 'text';
15552
- return (hAsync(Host, { key: 'ed1c29726ce0c91548f0e2ada61e3f8b5c813d2d', class: createColorClasses$1(color, {
15591
+ return (hAsync(Host, { key: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses$1(color, {
15553
15592
  [mode]: true,
15554
- }) }, 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) => {
15593
+ }) }, 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) => {
15555
15594
  /**
15556
15595
  * This prevents mobile browsers from
15557
15596
  * blurring the input when the password toggle
15558
15597
  * button is activated.
15559
15598
  */
15560
15599
  ev.preventDefault();
15561
- }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '1f2119c30b56c800d9af44e6499445a0ebb466cf', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15600
+ }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '9c88de8f4631d9bde222ce2edf6950d639e04773', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15562
15601
  }
15563
15602
  get el() { return getElement(this); }
15564
15603
  static get watchers() { return {
@@ -15854,11 +15893,11 @@ class ItemDivider {
15854
15893
  }
15855
15894
  render() {
15856
15895
  const mode = getIonMode$1(this);
15857
- return (hAsync(Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: createColorClasses$1(this.color, {
15896
+ return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15858
15897
  [mode]: true,
15859
15898
  'item-divider-sticky': this.sticky,
15860
15899
  item: true,
15861
- }) }, 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" }))));
15900
+ }) }, 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" }))));
15862
15901
  }
15863
15902
  get el() { return getElement(this); }
15864
15903
  static get style() { return {
@@ -15890,7 +15929,7 @@ class ItemGroup {
15890
15929
  }
15891
15930
  render() {
15892
15931
  const mode = getIonMode$1(this);
15893
- return (hAsync(Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
15932
+ return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15894
15933
  [mode]: true,
15895
15934
  // Used internally for styling
15896
15935
  [`item-group-${mode}`]: true,
@@ -15958,12 +15997,12 @@ class ItemOption {
15958
15997
  href: this.href,
15959
15998
  target: this.target,
15960
15999
  };
15961
- return (hAsync(Host, { key: '1900e015f593fefd710478a2088e052399c957eb', onClick: this.onClick, class: createColorClasses$1(this.color, {
16000
+ return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
15962
16001
  [mode]: true,
15963
16002
  'item-option-disabled': disabled,
15964
16003
  'item-option-expandable': expandable,
15965
16004
  'ion-activatable': true,
15966
- }) }, 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' }))));
16005
+ }) }, 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' }))));
15967
16006
  }
15968
16007
  get el() { return getElement(this); }
15969
16008
  static get style() { return {
@@ -16010,7 +16049,7 @@ class ItemOptions {
16010
16049
  render() {
16011
16050
  const mode = getIonMode$1(this);
16012
16051
  const isEnd = isEndSide(this.side);
16013
- return (hAsync(Host, { key: 'e28cd6a236323b5cc203c9b96782aa81024da924', class: {
16052
+ return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16014
16053
  [mode]: true,
16015
16054
  // Used internally for styling
16016
16055
  [`item-options-${mode}`]: true,
@@ -16358,6 +16397,8 @@ class ItemSliding {
16358
16397
  optsWidth = -this.optsWidthLeftSide;
16359
16398
  openAmount = optsWidth + (openAmount - optsWidth) * ELASTIC_FACTOR;
16360
16399
  }
16400
+ if (openAmount === 0)
16401
+ return;
16361
16402
  this.setOpenAmount(openAmount, false);
16362
16403
  }
16363
16404
  onEnd(gesture) {
@@ -16472,7 +16513,7 @@ class ItemSliding {
16472
16513
  }
16473
16514
  render() {
16474
16515
  const mode = getIonMode$1(this);
16475
- return (hAsync(Host, { key: '99f87c8bd794ae69830b407ba55013ac44793c26', class: {
16516
+ return (hAsync(Host, { key: 'a5216b11d92a1e1afed09d139212e0df81fdab79', class: {
16476
16517
  [mode]: true,
16477
16518
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16478
16519
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16581,13 +16622,13 @@ class Label {
16581
16622
  render() {
16582
16623
  const position = this.position;
16583
16624
  const mode = getIonMode$1(this);
16584
- return (hAsync(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses$1(this.color, {
16625
+ return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16585
16626
  [mode]: true,
16586
16627
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16587
16628
  [`label-${position}`]: position !== undefined,
16588
16629
  [`label-no-animate`]: this.noAnimate,
16589
16630
  'label-rtl': document.dir === 'rtl',
16590
- }) }, hAsync("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
16631
+ }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16591
16632
  }
16592
16633
  get el() { return getElement(this); }
16593
16634
  static get watchers() { return {
@@ -16643,7 +16684,7 @@ class List {
16643
16684
  render() {
16644
16685
  const mode = getIonMode$1(this);
16645
16686
  const { lines, inset } = this;
16646
- return (hAsync(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
16687
+ return (hAsync(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
16647
16688
  [mode]: true,
16648
16689
  // Used internally for styling
16649
16690
  [`list-${mode}`]: true,
@@ -16689,10 +16730,10 @@ class ListHeader {
16689
16730
  render() {
16690
16731
  const { lines } = this;
16691
16732
  const mode = getIonMode$1(this);
16692
- return (hAsync(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses$1(this.color, {
16733
+ return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16693
16734
  [mode]: true,
16694
16735
  [`list-header-lines-${lines}`]: lines !== undefined,
16695
- }) }, hAsync("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, hAsync("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
16736
+ }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16696
16737
  }
16697
16738
  static get style() { return {
16698
16739
  ios: IonListHeaderIosStyle0,
@@ -16961,9 +17002,9 @@ class Loading {
16961
17002
  * Otherwise, don't set aria-labelledby.
16962
17003
  */
16963
17004
  const ariaLabelledBy = message !== undefined ? msgId : null;
16964
- return (hAsync(Host, Object.assign({ key: 'fb3d2cd7cd0539ed6540d8be50e243c7916b3ca2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17005
+ return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16965
17006
  zIndex: `${40000 + this.overlayIndex}`,
16966
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'c8bd30782f3040b1b80e88aa924861e439d40754', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '7ad4447fafa49aa861d311221b8c2e8171b4c610', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '1879df0d895eb8ee20ccdc94dd35d708c1140b91', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '220f292c136681f5fa91f94669aac75b15e490ce', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'd599084a1426d941bdd080a988d8ad5b9589b823', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'e443897b353a48e0c72718dba04d83d7c5070d73', tabindex: "0", "aria-hidden": "true" })));
17007
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '6cd39bd7912fd080ab59d041644054c96d238ea9', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'c14ca5a9308844f11bcb010257e15208a75b39bc', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '118bceefa8e1cf8b225a858f224e6d919cf03c26', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '490d6e8ae4433835fe273162d7b90deab944fb39', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'c5cf6549c43df4cb23814b3e62ec4d9e7ea2b64f', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '2b888362122d3b66b0492d53b0c21bd6a2a97501', tabindex: "0", "aria-hidden": "true" })));
16967
17008
  }
16968
17009
  get el() { return getElement(this); }
16969
17010
  static get watchers() { return {
@@ -17315,7 +17356,7 @@ const createMenuController = () => {
17315
17356
  menus.splice(index, 1);
17316
17357
  }
17317
17358
  };
17318
- const _setOpen = async (menu, shouldOpen, animated) => {
17359
+ const _setOpen = async (menu, shouldOpen, animated, role) => {
17319
17360
  if (isAnimatingSync()) {
17320
17361
  return false;
17321
17362
  }
@@ -17325,7 +17366,7 @@ const createMenuController = () => {
17325
17366
  await openedMenu.setOpen(false, false);
17326
17367
  }
17327
17368
  }
17328
- return menu._setOpen(shouldOpen, animated);
17369
+ return menu._setOpen(shouldOpen, animated, role);
17329
17370
  };
17330
17371
  const _createAnimation = (type, menuCmp) => {
17331
17372
  const animationBuilder = menuAnimations.get(type); // TODO(FW-2832): type
@@ -17559,13 +17600,13 @@ class Menu {
17559
17600
  if (shouldClose) {
17560
17601
  ev.preventDefault();
17561
17602
  ev.stopPropagation();
17562
- this.close();
17603
+ this.close(undefined, BACKDROP);
17563
17604
  }
17564
17605
  }
17565
17606
  }
17566
17607
  onKeydown(ev) {
17567
17608
  if (ev.key === 'Escape') {
17568
- this.close();
17609
+ this.close(undefined, BACKDROP);
17569
17610
  }
17570
17611
  }
17571
17612
  /**
@@ -17594,8 +17635,8 @@ class Menu {
17594
17635
  * Closes the menu. If the menu is already closed or it can't be closed,
17595
17636
  * it returns `false`.
17596
17637
  */
17597
- close(animated = true) {
17598
- return this.setOpen(false, animated);
17638
+ close(animated = true, role) {
17639
+ return this.setOpen(false, animated, role);
17599
17640
  }
17600
17641
  /**
17601
17642
  * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.
@@ -17608,8 +17649,8 @@ class Menu {
17608
17649
  * Opens or closes the button.
17609
17650
  * If the operation can't be completed successfully, it returns `false`.
17610
17651
  */
17611
- setOpen(shouldOpen, animated = true) {
17612
- return menuController._setOpen(this, shouldOpen, animated);
17652
+ setOpen(shouldOpen, animated = true, role) {
17653
+ return menuController._setOpen(this, shouldOpen, animated, role);
17613
17654
  }
17614
17655
  trapKeyboardFocus(ev, doc) {
17615
17656
  const target = ev.target;
@@ -17647,12 +17688,12 @@ class Menu {
17647
17688
  }
17648
17689
  }
17649
17690
  }
17650
- async _setOpen(shouldOpen, animated = true) {
17691
+ async _setOpen(shouldOpen, animated = true, role) {
17651
17692
  // If the menu is disabled or it is currently being animated, let's do nothing
17652
17693
  if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {
17653
17694
  return false;
17654
17695
  }
17655
- this.beforeAnimation(shouldOpen);
17696
+ this.beforeAnimation(shouldOpen, role);
17656
17697
  await this.loadAnimation();
17657
17698
  await this.startAnimation(shouldOpen, animated);
17658
17699
  /**
@@ -17664,7 +17705,7 @@ class Menu {
17664
17705
  this.operationCancelled = false;
17665
17706
  return false;
17666
17707
  }
17667
- this.afterAnimation(shouldOpen);
17708
+ this.afterAnimation(shouldOpen, role);
17668
17709
  return true;
17669
17710
  }
17670
17711
  async loadAnimation() {
@@ -17739,7 +17780,7 @@ class Menu {
17739
17780
  return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);
17740
17781
  }
17741
17782
  onWillStart() {
17742
- this.beforeAnimation(!this._isOpen);
17783
+ this.beforeAnimation(!this._isOpen, GESTURE);
17743
17784
  return this.loadAnimation();
17744
17785
  }
17745
17786
  onStart() {
@@ -17806,11 +17847,27 @@ class Menu {
17806
17847
  const playTo = this._isOpen ? !shouldComplete : shouldComplete;
17807
17848
  this.animation
17808
17849
  .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')
17809
- .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })
17850
+ .onFinish(() => this.afterAnimation(shouldOpen, GESTURE), { oneTimeCallback: true })
17810
17851
  .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);
17811
17852
  }
17812
- beforeAnimation(shouldOpen) {
17853
+ beforeAnimation(shouldOpen, role) {
17813
17854
  assert(!this.isAnimating, '_before() should not be called while animating');
17855
+ /**
17856
+ * When the menu is presented on an Android device, TalkBack's focus rings
17857
+ * may appear in the wrong position due to the transition (specifically
17858
+ * `transform` styles). This occurs because the focus rings are initially
17859
+ * displayed at the starting position of the elements before the transition
17860
+ * begins. This workaround ensures the focus rings do not appear in the
17861
+ * incorrect location.
17862
+ *
17863
+ * If this solution is applied to iOS devices, then it leads to a bug where
17864
+ * the overlays cannot be accessed by screen readers. This is due to
17865
+ * VoiceOver not being able to update the accessibility tree when the
17866
+ * `aria-hidden` is removed.
17867
+ */
17868
+ if (isPlatform('android')) {
17869
+ this.el.setAttribute('aria-hidden', 'true');
17870
+ }
17814
17871
  // this places the menu into the correct location before it animates in
17815
17872
  // this css class doesn't actually kick off any animations
17816
17873
  this.el.classList.add(SHOW_MENU);
@@ -17848,10 +17905,10 @@ class Menu {
17848
17905
  this.ionWillOpen.emit();
17849
17906
  }
17850
17907
  else {
17851
- this.ionWillClose.emit();
17908
+ this.ionWillClose.emit({ role });
17852
17909
  }
17853
17910
  }
17854
- afterAnimation(isOpen) {
17911
+ afterAnimation(isOpen, role) {
17855
17912
  var _a;
17856
17913
  // keep opening/closing the menu disabled for a touch more yet
17857
17914
  // only add listeners/css if it's enabled and isOpen
@@ -17863,6 +17920,16 @@ class Menu {
17863
17920
  this.blocker.unblock();
17864
17921
  }
17865
17922
  if (isOpen) {
17923
+ /**
17924
+ * When the menu is presented on an Android device, TalkBack's focus rings
17925
+ * may appear in the wrong position due to the transition (specifically
17926
+ * `transform` styles). The menu is hidden from screen readers during the
17927
+ * transition to prevent this. Once the transition is complete, the menu
17928
+ * is shown again.
17929
+ */
17930
+ if (isPlatform('android')) {
17931
+ this.el.removeAttribute('aria-hidden');
17932
+ }
17866
17933
  // emit open event
17867
17934
  this.ionDidOpen.emit();
17868
17935
  /**
@@ -17878,6 +17945,7 @@ class Menu {
17878
17945
  document.addEventListener('focus', this.handleFocus, true);
17879
17946
  }
17880
17947
  else {
17948
+ this.el.removeAttribute('aria-hidden');
17881
17949
  // remove css classes and unhide content from screen readers
17882
17950
  this.el.classList.remove(SHOW_MENU);
17883
17951
  /**
@@ -17901,7 +17969,7 @@ class Menu {
17901
17969
  this.animation.stop();
17902
17970
  }
17903
17971
  // emit close event
17904
- this.ionDidClose.emit();
17972
+ this.ionDidClose.emit({ role });
17905
17973
  // undo focus trapping so multiple menus don't collide
17906
17974
  document.removeEventListener('focus', this.handleFocus, true);
17907
17975
  }
@@ -17933,7 +18001,7 @@ class Menu {
17933
18001
  * If the menu is disabled then we should
17934
18002
  * forcibly close the menu even if it is open.
17935
18003
  */
17936
- this.afterAnimation(false);
18004
+ this.afterAnimation(false, GESTURE);
17937
18005
  }
17938
18006
  }
17939
18007
  render() {
@@ -17944,14 +18012,14 @@ class Menu {
17944
18012
  * the ionBackButton listener in the menu controller
17945
18013
  * will handle closing the menu when Escape is pressed.
17946
18014
  */
17947
- return (hAsync(Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18015
+ return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17948
18016
  [mode]: true,
17949
18017
  [`menu-type-${type}`]: true,
17950
18018
  'menu-enabled': !disabled,
17951
18019
  [`menu-side-${side}`]: true,
17952
18020
  'menu-pane-visible': isPaneVisible,
17953
18021
  'split-pane-side': hostContext('ion-split-pane', el),
17954
- } }, 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" })));
18022
+ } }, hAsync("div", { key: '894e680fe227534711128c7aca980964ddb5a08a', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'e9f5934518dc0cceaeadf1f2820614595fec6bc9' })), hAsync("ion-backdrop", { key: '7282077817657b1bb6c155f1404c0a519fece993', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
17955
18023
  }
17956
18024
  get el() { return getElement(this); }
17957
18025
  static get watchers() { return {
@@ -18054,7 +18122,7 @@ class MenuButton {
18054
18122
  type: this.type,
18055
18123
  };
18056
18124
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18057
- return (hAsync(Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18125
+ return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18058
18126
  [mode]: true,
18059
18127
  button: true, // ion-buttons target .button
18060
18128
  'menu-button-hidden': hidden,
@@ -18063,7 +18131,7 @@ class MenuButton {
18063
18131
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18064
18132
  'ion-activatable': true,
18065
18133
  'ion-focusable': true,
18066
- }) }, 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" }))));
18134
+ }) }, 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" }))));
18067
18135
  }
18068
18136
  get el() { return getElement(this); }
18069
18137
  static get style() { return {
@@ -18112,10 +18180,10 @@ class MenuToggle {
18112
18180
  render() {
18113
18181
  const mode = getIonMode$1(this);
18114
18182
  const hidden = this.autoHide && !this.visible;
18115
- return (hAsync(Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18183
+ return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18116
18184
  [mode]: true,
18117
18185
  'menu-toggle-hidden': hidden,
18118
- } }, hAsync("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
18186
+ } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18119
18187
  }
18120
18188
  static get style() { return IonMenuToggleStyle0; }
18121
18189
  static get cmpMeta() { return {
@@ -20119,18 +20187,18 @@ class Modal {
20119
20187
  const mode = getIonMode$1(this);
20120
20188
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20121
20189
  const isHandleCycle = handleBehavior === 'cycle';
20122
- return (hAsync(Host, Object.assign({ key: '013ba4864ca4d2c1052c512f6a4b0732b8decff7', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20190
+ return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20123
20191
  zIndex: `${20000 + this.overlayIndex}`,
20124
- }, 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: '498b1c0a03836d6799dcf3b8e9315805c70f6480', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'ce22e4caf1096e87248926fe2477f0d5a4c8a5cf', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '540e47b15d8290166c39b022c725182114a75682',
20192
+ }, 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: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
20125
20193
  /*
20126
20194
  role and aria-modal must be used on the
20127
20195
  same element. They must also be set inside the
20128
20196
  shadow DOM otherwise ion-button will not be highlighted
20129
20197
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20130
20198
  */
20131
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'f3b352ec9a63a7ec801462aacfd8295b4302d115', class: "modal-handle",
20199
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
20132
20200
  // Prevents the handle from receiving keyboard focus when it does not cycle
20133
- 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: '31a3f58f4c733ffdf736523c154200874a96b1d0' }))));
20201
+ 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: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
20134
20202
  }
20135
20203
  get el() { return getElement(this); }
20136
20204
  static get watchers() { return {
@@ -21079,7 +21147,7 @@ class Nav {
21079
21147
  }
21080
21148
  }
21081
21149
  render() {
21082
- return hAsync("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
21150
+ return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21083
21151
  }
21084
21152
  get el() { return getElement(this); }
21085
21153
  static get watchers() { return {
@@ -21152,7 +21220,7 @@ class NavLink {
21152
21220
  this.routerAnimation = undefined;
21153
21221
  }
21154
21222
  render() {
21155
- return hAsync(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
21223
+ return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21156
21224
  }
21157
21225
  get el() { return getElement(this); }
21158
21226
  static get cmpMeta() { return {
@@ -21186,9 +21254,9 @@ class Note {
21186
21254
  }
21187
21255
  render() {
21188
21256
  const mode = getIonMode$1(this);
21189
- return (hAsync(Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: createColorClasses$1(this.color, {
21257
+ return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21190
21258
  [mode]: true,
21191
- }) }, hAsync("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
21259
+ }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21192
21260
  }
21193
21261
  static get style() { return {
21194
21262
  ios: IonNoteIosStyle0,
@@ -21685,7 +21753,7 @@ class Picker$1 {
21685
21753
  this.emitInputModeChange();
21686
21754
  }
21687
21755
  render() {
21688
- 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) => {
21756
+ 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) => {
21689
21757
  var _a;
21690
21758
  /**
21691
21759
  * The "Enter" key represents
@@ -21700,7 +21768,7 @@ class Picker$1 {
21700
21768
  if (ev.key === 'Enter') {
21701
21769
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
21702
21770
  }
21703
- }, 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' })));
21771
+ }, 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' })));
21704
21772
  }
21705
21773
  get el() { return getElement(this); }
21706
21774
  static get style() { return {
@@ -21953,11 +22021,11 @@ class Picker {
21953
22021
  render() {
21954
22022
  const { htmlAttributes } = this;
21955
22023
  const mode = getIonMode$1(this);
21956
- return (hAsync(Host, Object.assign({ key: '3b163ca87354a3a4f302ff016d5affd0dc97bccc', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22024
+ return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21957
22025
  zIndex: `${20000 + this.overlayIndex}`,
21958
22026
  }, class: Object.assign({ [mode]: true,
21959
22027
  // Used internally for styling
21960
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'da4224447bdbcfbadd1bd63ebe7a7bfdb8aa3129', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '65eba425990a21be00fdac90de20a630d284cf97', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'd78ada360801b2c051baa030751f3d83ac81e697', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: 'd5bd9ddfbdbdaf42048a1496e7939eb3aee6da65', 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: '96ee1e3ec77c57174b1a93135b66bea6b7002555', class: "picker-columns" }, hAsync("div", { key: 'e11b1c238f350e65bde2ee67eee9d71c830e74e7', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '4d5fc7c723185111ec01fd34ef95a897c301238d', class: "picker-below-highlight" }))), hAsync("div", { key: '899bcad97609c1d971c1b886551db5ba0248a9f4', tabindex: "0", "aria-hidden": "true" })));
22028
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'c997632ef0488698739664012de5a6494de438b6', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '20045054a76cca997b410835fa6b305af22dcb12', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'a73a6ac20b685ed9694d4fa95ea236ce5d63fdbf', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '1221cdcc2ff013deeba12170129c8fe78308330c', 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: '45038a58430a4251100797b902e7034243137564', class: "picker-columns" }, hAsync("div", { key: 'c579bb69cddd4090912855ffd7f59536280f34b9', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '978c6632d82a97d053b729c9de65dd3af4c4cee2', class: "picker-below-highlight" }))), hAsync("div", { key: 'e7e9dc437a3cf6d559e2cb0df71af69047a2ae31', tabindex: "0", "aria-hidden": "true" })));
21961
22029
  }
21962
22030
  get el() { return getElement(this); }
21963
22031
  static get watchers() { return {
@@ -22539,12 +22607,12 @@ class PickerColumn {
22539
22607
  render() {
22540
22608
  const { color, disabled, isActive, numericInput } = this;
22541
22609
  const mode = getIonMode$1(this);
22542
- return (hAsync(Host, { key: 'd60736ce74c0e8c774a163272b78fbad32993ec2', class: createColorClasses$1(color, {
22610
+ return (hAsync(Host, { key: 'a221dc10f1eb7c41637a16d2c7167c16939822fd', class: createColorClasses$1(color, {
22543
22611
  [mode]: true,
22544
22612
  ['picker-column-active']: isActive,
22545
22613
  ['picker-column-numeric-input']: numericInput,
22546
22614
  ['picker-column-disabled']: disabled,
22547
- }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '74611112ef154b343ae29a773f8cd8a01cc1447d', name: "prefix" }), hAsync("div", { key: 'af772d2b61b7eb41a567593d290b80a50b7caa72', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22615
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '81b0656f606856f3dc0a657bf167d81a5011405e', name: "prefix" }), hAsync("div", { key: '71b9de67c04150255dd66592601c9d926db0c31c', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22548
22616
  this.scrollEl = el;
22549
22617
  },
22550
22618
  /**
@@ -22565,7 +22633,7 @@ class PickerColumn {
22565
22633
  * To prevent this, we set the tabIndex to -1. This
22566
22634
  * will match the behavior of the other browsers.
22567
22635
  */
22568
- tabIndex: -1 }, hAsync("div", { key: '4b646ee97bcf8ed541b9798c91dff189eec41dd1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'a44d1a10d20a13aeb47f9871b09e291aa7f216bd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '6a481715bd68fa68dc2a76c2e867ce771ea680b0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '23236e731b1ad432c104761ebeec91697a6b7643' }), hAsync("div", { key: '58a6c1f35a3ff0b26acaceebfd477d74b6dcfd6d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'ea864872dec6dc363406d1bd9101b1bf21944db6', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '28cc4c570d0dd59f491eef2b15a5ed706d28b7bb', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'cff1cc0bea732a5ce22bb451c5ea404a84af1993', name: "suffix" })));
22636
+ tabIndex: -1 }, hAsync("div", { key: 'ebdc2f08c83db0cf17b4be29f28fcb00f529601e', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '04ab56fcb8e6a7d6af00204c4560feb99ff34a56', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '6cf8f538903faf0fe1e4130f3eaf7b4e2e17cb52', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '1cc392307b70c576be5b81b5226ceba735957f0f' }), hAsync("div", { key: '23e3f28e2a99b9aa8b7c8f68ad9583e3ca63e9e2', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8a0563f09780c3116af0caebe4f40587ec1f041f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '13207e248fc0009f37e0c90a3ee2bac2f130b856', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '55ecf2ab5f214f936c2468cbdb7952daf89416b8', name: "suffix" })));
22569
22637
  }
22570
22638
  get el() { return getElement(this); }
22571
22639
  static get watchers() { return {
@@ -22932,9 +23000,9 @@ class PickerColumnCmp {
22932
23000
  render() {
22933
23001
  const col = this.col;
22934
23002
  const mode = getIonMode$1(this);
22935
- 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: {
23003
+ 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: {
22936
23004
  'max-width': this.col.columnWidth,
22937
- } }, 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))));
23005
+ } }, 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))));
22938
23006
  }
22939
23007
  get el() { return getElement(this); }
22940
23008
  static get watchers() { return {
@@ -23038,10 +23106,10 @@ class PickerColumnOption {
23038
23106
  render() {
23039
23107
  const { color, disabled, ariaLabel } = this;
23040
23108
  const mode = getIonMode$1(this);
23041
- return (hAsync(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses$1(color, {
23109
+ return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23042
23110
  [mode]: true,
23043
23111
  ['option-disabled']: disabled,
23044
- }) }, hAsync("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
23112
+ }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23045
23113
  }
23046
23114
  get el() { return getElement(this); }
23047
23115
  static get watchers() { return {
@@ -24355,9 +24423,9 @@ class Popover {
24355
24423
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24356
24424
  const desktop = isPlatform('desktop');
24357
24425
  const enableArrow = arrow && !parentPopover;
24358
- return (hAsync(Host, Object.assign({ key: '3a7c4c39384bab1447c4bd6b9b06d7837a09353b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24426
+ return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24359
24427
  zIndex: `${20000 + this.overlayIndex}`,
24360
- }, 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: '38a1c4ad29238d1e81cab407f099121fa4947cce', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'f825494c5e3be89d7fcf0229e29b405bccb13edb', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '3acae5a0106389c776c8ffe5bf10f3ff006e0346', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '2aa73e9f06b1d2ac4c0d36c23186b9164f395079', class: "popover-content", part: "content" }, hAsync("slot", { key: '62f5713414aae47dde6a8aef1f9b69af287534ae' })))));
24428
+ }, 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: '12b3ffa3928b4d56a4f09c3d2f5d493d47b45255', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '2c2862d5c7e75b637973c712b4982bf4978c0cdf', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '0cfacc52afaa7abc28c1b7742889d7a1c23a37ad', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '3ef570c44d4fe7f063dd419008c92c8c40d3cd22', class: "popover-content", part: "content" }, hAsync("slot", { key: '6fc5dfdce20fee1642bc1f05d41b5bf7d1034457' })))));
24361
24429
  }
24362
24430
  get el() { return getElement(this); }
24363
24431
  static get watchers() { return {
@@ -24449,7 +24517,7 @@ class ProgressBar {
24449
24517
  const mode = getIonMode$1(this);
24450
24518
  // If the progress is displayed as a solid bar.
24451
24519
  const progressSolid = buffer === 1;
24452
- return (hAsync(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24520
+ return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24453
24521
  [mode]: true,
24454
24522
  [`progress-bar-${type}`]: true,
24455
24523
  'progress-paused': paused,
@@ -24582,8 +24650,10 @@ class Radio {
24582
24650
  }
24583
24651
  /** @internal */
24584
24652
  async setFocus(ev) {
24585
- ev.stopPropagation();
24586
- ev.preventDefault();
24653
+ if (ev !== undefined) {
24654
+ ev.stopPropagation();
24655
+ ev.preventDefault();
24656
+ }
24587
24657
  this.el.focus();
24588
24658
  }
24589
24659
  /** @internal */
@@ -24617,7 +24687,7 @@ class Radio {
24617
24687
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24618
24688
  const mode = getIonMode$1(this);
24619
24689
  const inItem = hostContext('ion-item', el);
24620
- return (hAsync(Host, { key: 'd6d9525eea9dadc3ea7060eb9b8cbb919e1d7091', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24690
+ return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24621
24691
  [mode]: true,
24622
24692
  'in-item': inItem,
24623
24693
  'radio-checked': checked,
@@ -24628,10 +24698,10 @@ class Radio {
24628
24698
  // Focus and active styling should not apply when the radio is in an item
24629
24699
  'ion-activatable': !inItem,
24630
24700
  'ion-focusable': !inItem,
24631
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '3ec73512bac8feb651c66e544899c6a4330d504c', class: "radio-wrapper" }, hAsync("div", { key: '9ae7ecb19c7bafe0ce3d0f717af0338251964ebf', class: {
24701
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'f5673a798e6d87868339f046445f707e1d93b7b6', class: "radio-wrapper" }, hAsync("div", { key: 'e9190c06f75a171cab63e3f74ccf771c3ed87005', class: {
24632
24702
  'label-text-wrapper': true,
24633
24703
  'label-text-wrapper-hidden': !hasLabel,
24634
- }, part: "label" }, hAsync("slot", { key: '2950f1579a22d4a06f9c903fd462c2b46f43bfd7' })), hAsync("div", { key: '8b19ce30b39066744108a6de2da42a7ce8ffdbec', class: "native-wrapper" }, this.renderRadioControl()))));
24704
+ }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24635
24705
  }
24636
24706
  get el() { return getElement(this); }
24637
24707
  static get watchers() { return {
@@ -24763,7 +24833,9 @@ class RadioGroup {
24763
24833
  this.ionChange.emit({ value, event });
24764
24834
  }
24765
24835
  onKeydown(ev) {
24766
- const inSelectPopover = !!this.el.closest('ion-select-popover');
24836
+ // We don't want the value to automatically change/emit when the radio group is part of a select interface
24837
+ // as this will cause the interface to close when navigating through the radio group options
24838
+ const inSelectInterface = !!this.el.closest('ion-select-popover') || !!this.el.closest('ion-select-modal');
24767
24839
  if (ev.target && !this.el.contains(ev.target)) {
24768
24840
  return;
24769
24841
  }
@@ -24787,7 +24859,7 @@ class RadioGroup {
24787
24859
  }
24788
24860
  if (next && radios.includes(next)) {
24789
24861
  next.setFocus(ev);
24790
- if (!inSelectPopover) {
24862
+ if (!inSelectInterface) {
24791
24863
  this.value = next.value;
24792
24864
  this.emitValueChange(ev);
24793
24865
  }
@@ -24812,11 +24884,16 @@ class RadioGroup {
24812
24884
  }
24813
24885
  }
24814
24886
  }
24887
+ /** @internal */
24888
+ async setFocus() {
24889
+ const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24890
+ radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24891
+ }
24815
24892
  render() {
24816
24893
  const { label, labelId, el, name, value } = this;
24817
24894
  const mode = getIonMode$1(this);
24818
24895
  renderHiddenInput(true, el, name, value, false);
24819
- return hAsync(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24896
+ return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24820
24897
  }
24821
24898
  get el() { return getElement(this); }
24822
24899
  static get watchers() { return {
@@ -24829,7 +24906,8 @@ class RadioGroup {
24829
24906
  "allowEmptySelection": [4, "allow-empty-selection"],
24830
24907
  "compareWith": [1, "compare-with"],
24831
24908
  "name": [1],
24832
- "value": [1032]
24909
+ "value": [1032],
24910
+ "setFocus": [64]
24833
24911
  },
24834
24912
  "$listeners$": [[4, "keydown", "onKeydown"]],
24835
24913
  "$lazyBundleId$": "-",
@@ -25448,7 +25526,7 @@ class Range {
25448
25526
  const needsEndAdjustment = inItem && !hasEndContent;
25449
25527
  const mode = getIonMode$1(this);
25450
25528
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25451
- return (hAsync(Host, { key: '877c9f15e62fadb184f9da82dc19898227521e07', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25529
+ return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25452
25530
  [mode]: true,
25453
25531
  'in-item': inItem,
25454
25532
  'range-disabled': disabled,
@@ -25457,10 +25535,10 @@ class Range {
25457
25535
  [`range-label-placement-${labelPlacement}`]: true,
25458
25536
  'range-item-start-adjustment': needsStartAdjustment,
25459
25537
  'range-item-end-adjustment': needsEndAdjustment,
25460
- }) }, hAsync("label", { key: '2ae9088349a65e09b0e33c53442190ef563b2345', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'c3d0ca96ceb1e57fbd383e9c7e4da14d931771b8', class: {
25538
+ }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25461
25539
  'label-text-wrapper': true,
25462
25540
  'label-text-wrapper-hidden': !hasLabel,
25463
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '25d20fd5e015931f60a8ecc5374a1c84d167af9c', class: "native-wrapper" }, hAsync("slot", { key: 'ae9f9fd92eed35b81ca97a81caa56332d8b6b2b2', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '74b7dede566a959c9b05a6de68426c7e339d18c8', name: "end" })))));
25541
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '87df1037b6b3337bd1fab05d33a26bf658c57914', class: "native-wrapper" }, hAsync("slot", { key: '2cb88f101da49b70aeae29b0bf5445fac241bb2f', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '17b835cfb2bd9b8e1957afd425543ff02b913d83', name: "end" })))));
25464
25542
  }
25465
25543
  get el() { return getElement(this); }
25466
25544
  static get watchers() { return {
@@ -26361,7 +26439,7 @@ class Refresher {
26361
26439
  }
26362
26440
  render() {
26363
26441
  const mode = getIonMode$1(this);
26364
- return (hAsync(Host, { key: '3270f181a5141e7d886ec554a3e892974446b90e', slot: "fixed", class: {
26442
+ return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26365
26443
  [mode]: true,
26366
26444
  // Used internally for styling
26367
26445
  [`refresher-${mode}`]: true,
@@ -26589,7 +26667,7 @@ class RefresherContent {
26589
26667
  const pullingIcon = this.pullingIcon;
26590
26668
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26591
26669
  const mode = getIonMode$1(this);
26592
- 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())));
26670
+ 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())));
26593
26671
  }
26594
26672
  get el() { return getElement(this); }
26595
26673
  static get cmpMeta() { return {
@@ -26632,7 +26710,7 @@ class Reorder {
26632
26710
  render() {
26633
26711
  const mode = getIonMode$1(this);
26634
26712
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26635
- 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" }))));
26713
+ 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" }))));
26636
26714
  }
26637
26715
  get el() { return getElement(this); }
26638
26716
  static get style() { return {
@@ -26886,7 +26964,7 @@ class ReorderGroup {
26886
26964
  }
26887
26965
  render() {
26888
26966
  const mode = getIonMode$1(this);
26889
- return (hAsync(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
26967
+ return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
26890
26968
  [mode]: true,
26891
26969
  'reorder-enabled': !this.disabled,
26892
26970
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -26994,7 +27072,7 @@ class RippleEffect {
26994
27072
  }
26995
27073
  render() {
26996
27074
  const mode = getIonMode$1(this);
26997
- return (hAsync(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
27075
+ return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
26998
27076
  [mode]: true,
26999
27077
  unbounded: this.unbounded,
27000
27078
  } }));
@@ -27936,10 +28014,10 @@ class RouterLink {
27936
28014
  rel: this.rel,
27937
28015
  target: this.target,
27938
28016
  };
27939
- return (hAsync(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses$1(this.color, {
28017
+ return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
27940
28018
  [mode]: true,
27941
28019
  'ion-activatable': true,
27942
- }) }, hAsync("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), hAsync("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
28020
+ }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
27943
28021
  }
27944
28022
  static get style() { return IonRouterLinkStyle0; }
27945
28023
  static get cmpMeta() { return {
@@ -28135,7 +28213,7 @@ class RouterOutlet {
28135
28213
  return true;
28136
28214
  }
28137
28215
  render() {
28138
- return hAsync("slot", { key: 'dac9120f5ffa628b16c04e5fdd44ea8e560c97e6' });
28216
+ return hAsync("slot", { key: '44a7798b8574966f7fd699564b6006411a98a805' });
28139
28217
  }
28140
28218
  get el() { return getElement(this); }
28141
28219
  static get watchers() { return {
@@ -28169,7 +28247,7 @@ class Row {
28169
28247
  registerInstance(this, hostRef);
28170
28248
  }
28171
28249
  render() {
28172
- return (hAsync(Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: getIonMode$1(this) }, hAsync("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
28250
+ return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28173
28251
  }
28174
28252
  static get style() { return IonRowStyle0; }
28175
28253
  static get cmpMeta() { return {
@@ -28563,8 +28641,8 @@ class Searchbar {
28563
28641
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28564
28642
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28565
28643
  const shouldShowCancelButton = this.shouldShowCancelButton();
28566
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '20b2d0f2e3425eede725dbe3323c7c29cdb66f4e', "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: '3a516c3fdd35256eb79639fd340afcdd92cfd7aa', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28567
- return (hAsync(Host, { key: '34878db21f63a9bdffca0446d8ad5619ff04cac3', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28644
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '0ef595eb1628928d4c7fdb166b8e41768700fa6e', "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: 'ea2c9b36d991acf5af7662059cb6b045f683ca94', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28645
+ return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28568
28646
  [mode]: true,
28569
28647
  'searchbar-animated': animated,
28570
28648
  'searchbar-disabled': this.disabled,
@@ -28574,14 +28652,14 @@ class Searchbar {
28574
28652
  'searchbar-has-focus': this.focused,
28575
28653
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28576
28654
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28577
- }) }, hAsync("div", { key: 'faa7b011206a8359b1963368c65988e506b260cb', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '732d3e5a2b258da6f136a14472ac872816a9853b', "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: '767dca971849f221dde220deae728b41bf764b98', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '9941b5de1ed9ebcf3e81de8e0731c09dea5a89d9', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28655
+ }) }, hAsync("div", { key: 'f67c2124e70c24eef0a271516e9c4bdaf7e98ceb', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '8c7f7ccc6809cca30ccc8c4e98e349d3f916321d', "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: 'f06524d3163b3883bbde937862aa1e0e8f49f6e1', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '9f7ba2bec93412ecb674b197be13db1de308bb57', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28578
28656
  /**
28579
28657
  * This prevents mobile browsers from
28580
28658
  * blurring the input when the clear
28581
28659
  * button is activated.
28582
28660
  */
28583
28661
  ev.preventDefault();
28584
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: 'cb2b543d286373a84e2c6c2a959f92b045bbd7dd', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28662
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '19fc3dbc722acc47ff7eb3c94ad4de8aed38dff4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28585
28663
  }
28586
28664
  get el() { return getElement(this); }
28587
28665
  static get watchers() { return {
@@ -28648,6 +28726,7 @@ class Segment {
28648
28726
  this.ionChange = createEvent(this, "ionChange", 7);
28649
28727
  this.ionSelect = createEvent(this, "ionSelect", 7);
28650
28728
  this.ionStyle = createEvent(this, "ionStyle", 7);
28729
+ this.segmentViewEl = null;
28651
28730
  this.onClick = (ev) => {
28652
28731
  const current = ev.target;
28653
28732
  const previous = this.checked;
@@ -28662,7 +28741,13 @@ class Segment {
28662
28741
  if (current !== previous) {
28663
28742
  this.emitValueChange();
28664
28743
  }
28665
- if (this.scrollable || !this.swipeGesture) {
28744
+ if (this.segmentViewEl) {
28745
+ this.updateSegmentView();
28746
+ if (this.scrollable && previous) {
28747
+ this.checkButton(previous, current);
28748
+ }
28749
+ }
28750
+ else if (this.scrollable || !this.swipeGesture) {
28666
28751
  if (previous) {
28667
28752
  this.checkButton(previous, current);
28668
28753
  }
@@ -28718,19 +28803,49 @@ class Segment {
28718
28803
  swipeGestureChanged() {
28719
28804
  this.gestureChanged();
28720
28805
  }
28721
- valueChanged(value) {
28806
+ valueChanged(value, oldValue) {
28807
+ // Force a value to exist if we're using a segment view
28808
+ if (this.segmentViewEl && value === undefined) {
28809
+ this.value = this.getButtons()[0].value;
28810
+ return;
28811
+ }
28812
+ if (oldValue !== undefined && value !== undefined) {
28813
+ const buttons = this.getButtons();
28814
+ const previous = buttons.find((button) => button.value === oldValue);
28815
+ const current = buttons.find((button) => button.value === value);
28816
+ if (previous && current) {
28817
+ if (!this.segmentViewEl) {
28818
+ this.checkButton(previous, current);
28819
+ }
28820
+ else if (this.triggerScrollOnValueChange !== false) {
28821
+ this.updateSegmentView();
28822
+ }
28823
+ }
28824
+ }
28825
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
28826
+ this.updateSegmentView();
28827
+ }
28722
28828
  /**
28723
28829
  * `ionSelect` is emitted every time the value changes (internal or external changes).
28724
28830
  * Used by `ion-segment-button` to determine if the button should be checked.
28725
28831
  */
28726
28832
  this.ionSelect.emit({ value });
28727
- this.scrollActiveButtonIntoView();
28833
+ // The scroll listener should handle scrolling the active button into view as needed
28834
+ if (!this.segmentViewEl) {
28835
+ this.scrollActiveButtonIntoView();
28836
+ }
28837
+ this.triggerScrollOnValueChange = undefined;
28728
28838
  }
28729
28839
  disabledChanged() {
28730
28840
  this.gestureChanged();
28731
- const buttons = this.getButtons();
28732
- for (const button of buttons) {
28733
- button.disabled = this.disabled;
28841
+ if (!this.segmentViewEl) {
28842
+ const buttons = this.getButtons();
28843
+ for (const button of buttons) {
28844
+ button.disabled = this.disabled;
28845
+ }
28846
+ }
28847
+ else {
28848
+ this.segmentViewEl.disabled = this.disabled;
28734
28849
  }
28735
28850
  }
28736
28851
  gestureChanged() {
@@ -28740,6 +28855,10 @@ class Segment {
28740
28855
  }
28741
28856
  connectedCallback() {
28742
28857
  this.emitStyle();
28858
+ this.segmentViewEl = this.getSegmentView();
28859
+ }
28860
+ disconnectedCallback() {
28861
+ this.segmentViewEl = null;
28743
28862
  }
28744
28863
  componentWillLoad() {
28745
28864
  this.emitStyle();
@@ -28773,6 +28892,9 @@ class Segment {
28773
28892
  if (this.disabled) {
28774
28893
  this.disabledChanged();
28775
28894
  }
28895
+ // Update segment view based on the initial value,
28896
+ // but do not animate the scroll
28897
+ this.updateSegmentView(false);
28776
28898
  }
28777
28899
  onStart(detail) {
28778
28900
  this.valueBeforeGesture = this.value;
@@ -28789,6 +28911,7 @@ class Segment {
28789
28911
  if (value !== undefined) {
28790
28912
  if (this.valueBeforeGesture !== value) {
28791
28913
  this.emitValueChange();
28914
+ this.updateSegmentView();
28792
28915
  }
28793
28916
  }
28794
28917
  this.valueBeforeGesture = undefined;
@@ -28816,12 +28939,7 @@ class Segment {
28816
28939
  setActivated(activated) {
28817
28940
  const buttons = this.getButtons();
28818
28941
  buttons.forEach((button) => {
28819
- if (activated) {
28820
- button.classList.add('segment-button-activated');
28821
- }
28822
- else {
28823
- button.classList.remove('segment-button-activated');
28824
- }
28942
+ button.classList.toggle('segment-button-activated', activated);
28825
28943
  });
28826
28944
  this.activated = activated;
28827
28945
  }
@@ -28872,6 +28990,7 @@ class Segment {
28872
28990
  currentIndicator.classList.add('segment-button-indicator-animated');
28873
28991
  // Remove the transform to slide the indicator back to the button clicked
28874
28992
  currentIndicator.style.setProperty('transform', '');
28993
+ this.scrollActiveButtonIntoView(true);
28875
28994
  });
28876
28995
  this.value = current.value;
28877
28996
  this.setCheckedClasses();
@@ -28887,6 +29006,60 @@ class Segment {
28887
29006
  buttons[next].classList.add('segment-button-after-checked');
28888
29007
  }
28889
29008
  }
29009
+ getSegmentView() {
29010
+ const buttons = this.getButtons();
29011
+ // Get the first button with a contentId
29012
+ const firstContentId = buttons.find((button) => button.contentId);
29013
+ // Get the segment content with an id matching the button's contentId
29014
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
29015
+ // Return the segment view for that matching segment content
29016
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
29017
+ }
29018
+ handleSegmentViewScroll(ev) {
29019
+ const { scrollRatio, isManualScroll } = ev.detail;
29020
+ if (!isManualScroll) {
29021
+ return;
29022
+ }
29023
+ const dispatchedFrom = ev.target;
29024
+ const segmentViewEl = this.segmentViewEl;
29025
+ const segmentEl = this.el;
29026
+ // Only update the indicator if the event was dispatched from the correct segment view
29027
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
29028
+ const buttons = this.getButtons();
29029
+ // If no buttons are found or there is no value set then do nothing
29030
+ if (!buttons.length)
29031
+ return;
29032
+ const index = buttons.findIndex((button) => button.value === this.value);
29033
+ const current = buttons[index];
29034
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
29035
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
29036
+ this.lastNextIndex = nextIndex;
29037
+ this.triggerScrollOnValueChange = false;
29038
+ this.checkButton(current, buttons[nextIndex]);
29039
+ this.emitValueChange();
29040
+ }
29041
+ }
29042
+ }
29043
+ /**
29044
+ * Finds the related segment view and sets its current content
29045
+ * based on the selected segment button. This method
29046
+ * should be called on initial load of the segment,
29047
+ * after the gesture is completed (if dragging between segments)
29048
+ * and when a segment button is clicked directly.
29049
+ */
29050
+ updateSegmentView(smoothScroll = true) {
29051
+ const buttons = this.getButtons();
29052
+ const button = buttons.find((btn) => btn.value === this.value);
29053
+ // If the button does not have a contentId then there is
29054
+ // no associated segment view to update
29055
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
29056
+ return;
29057
+ }
29058
+ const segmentView = this.segmentViewEl;
29059
+ if (segmentView) {
29060
+ segmentView.setContent(button.contentId, smoothScroll);
29061
+ }
29062
+ }
28890
29063
  scrollActiveButtonIntoView(smoothScroll = true) {
28891
29064
  const { scrollable, value, el } = this;
28892
29065
  if (scrollable) {
@@ -29069,14 +29242,14 @@ class Segment {
29069
29242
  }
29070
29243
  render() {
29071
29244
  const mode = getIonMode$1(this);
29072
- return (hAsync(Host, { key: 'f1f7103b4c298e037df850ac809a1a7c6e9987a7', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29245
+ return (hAsync(Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29073
29246
  [mode]: true,
29074
29247
  'in-toolbar': hostContext('ion-toolbar', this.el),
29075
29248
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29076
29249
  'segment-activated': this.activated,
29077
29250
  'segment-disabled': this.disabled,
29078
29251
  'segment-scrollable': this.scrollable,
29079
- }) }, hAsync("slot", { key: '6efdb318b13da8d21687084aa0761728fdf12579', onSlotchange: this.onSlottedItemsChange })));
29252
+ }) }, hAsync("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
29080
29253
  }
29081
29254
  get el() { return getElement(this); }
29082
29255
  static get watchers() { return {
@@ -29101,7 +29274,7 @@ class Segment {
29101
29274
  "selectOnFocus": [4, "select-on-focus"],
29102
29275
  "activated": [32]
29103
29276
  },
29104
- "$listeners$": [[0, "keydown", "onKeyDown"]],
29277
+ "$listeners$": [[16, "ionSegmentViewScroll", "handleSegmentViewScroll"], [0, "keydown", "onKeyDown"]],
29105
29278
  "$lazyBundleId$": "-",
29106
29279
  "$attrsToReflect$": [["color", "color"]]
29107
29280
  }; }
@@ -29138,6 +29311,7 @@ class SegmentButton {
29138
29311
  }
29139
29312
  };
29140
29313
  this.checked = false;
29314
+ this.contentId = undefined;
29141
29315
  this.disabled = false;
29142
29316
  this.layout = 'icon-top';
29143
29317
  this.type = 'button';
@@ -29153,6 +29327,26 @@ class SegmentButton {
29153
29327
  addEventListener$1(segmentEl, 'ionSelect', this.updateState);
29154
29328
  addEventListener$1(segmentEl, 'ionStyle', this.updateStyle);
29155
29329
  }
29330
+ // Return if there is no contentId defined
29331
+ if (!this.contentId)
29332
+ return;
29333
+ // Attempt to find the Segment Content by its contentId
29334
+ const segmentContent = document.getElementById(this.contentId);
29335
+ // If no associated Segment Content exists, log an error and return
29336
+ if (!segmentContent) {
29337
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29338
+ return;
29339
+ }
29340
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
29341
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
29342
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
29343
+ return;
29344
+ }
29345
+ // Prevent buttons from being disabled when associated with segment content
29346
+ if (this.disabled) {
29347
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
29348
+ this.disabled = false;
29349
+ }
29156
29350
  }
29157
29351
  disconnectedCallback() {
29158
29352
  const segmentEl = this.segmentEl;
@@ -29186,7 +29380,7 @@ class SegmentButton {
29186
29380
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29187
29381
  const mode = getIonMode$1(this);
29188
29382
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29189
- return (hAsync(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
29383
+ return (hAsync(Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
29190
29384
  [mode]: true,
29191
29385
  'in-toolbar': hostContext('ion-toolbar', this.el),
29192
29386
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29202,10 +29396,7 @@ class SegmentButton {
29202
29396
  'ion-activatable': true,
29203
29397
  'ion-activatable-instant': true,
29204
29398
  'ion-focusable': true,
29205
- } }, 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: {
29206
- 'segment-button-indicator': true,
29207
- 'segment-button-indicator-animated': true,
29208
- } }, hAsync("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
29399
+ } }, hAsync("button", Object.assign({ key: 'b4f6f145286ba8ab79669e11035b906daa85ae7e', "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: '67965996c9ffe70553875e00d3da0ae5b2b1d814', class: "button-inner" }, hAsync("slot", { key: '5087988fe45a8fdf388ec44c395d0b745b207806' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b24858de0750bbc769b3183fac0077dfe817ba27' })), hAsync("div", { key: '97b4359432acd1c9da0816360cd1df9472e183f7', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: '0561738ea15b0986f4ed3d8276d5e6f2d13f7e51', part: "indicator-background", class: "segment-button-indicator-background" }))));
29209
29400
  }
29210
29401
  get el() { return getElement(this); }
29211
29402
  static get watchers() { return {
@@ -29219,6 +29410,7 @@ class SegmentButton {
29219
29410
  "$flags$": 41,
29220
29411
  "$tagName$": "ion-segment-button",
29221
29412
  "$members$": {
29413
+ "contentId": [513, "content-id"],
29222
29414
  "disabled": [1028],
29223
29415
  "layout": [1],
29224
29416
  "type": [1],
@@ -29228,6 +29420,151 @@ class SegmentButton {
29228
29420
  },
29229
29421
  "$listeners$": undefined,
29230
29422
  "$lazyBundleId$": "-",
29423
+ "$attrsToReflect$": [["contentId", "content-id"]]
29424
+ }; }
29425
+ }
29426
+
29427
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
29428
+ var IonSegmentContentStyle0 = segmentContentCss;
29429
+
29430
+ class SegmentContent {
29431
+ constructor(hostRef) {
29432
+ registerInstance(this, hostRef);
29433
+ }
29434
+ render() {
29435
+ return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29436
+ }
29437
+ static get style() { return IonSegmentContentStyle0; }
29438
+ static get cmpMeta() { return {
29439
+ "$flags$": 9,
29440
+ "$tagName$": "ion-segment-content",
29441
+ "$members$": undefined,
29442
+ "$listeners$": undefined,
29443
+ "$lazyBundleId$": "-",
29444
+ "$attrsToReflect$": []
29445
+ }; }
29446
+ }
29447
+
29448
+ const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
29449
+ var IonSegmentViewIosStyle0 = segmentViewIosCss;
29450
+
29451
+ const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
29452
+ var IonSegmentViewMdStyle0 = segmentViewMdCss;
29453
+
29454
+ class SegmentView {
29455
+ constructor(hostRef) {
29456
+ registerInstance(this, hostRef);
29457
+ this.ionSegmentViewScroll = createEvent(this, "ionSegmentViewScroll", 7);
29458
+ this.scrollEndTimeout = null;
29459
+ this.isTouching = false;
29460
+ this.disabled = false;
29461
+ this.isManualScroll = undefined;
29462
+ }
29463
+ handleScroll(ev) {
29464
+ var _a;
29465
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
29466
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
29467
+ this.ionSegmentViewScroll.emit({
29468
+ scrollRatio,
29469
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
29470
+ });
29471
+ // Reset the timeout to check for scroll end
29472
+ this.resetScrollEndTimeout();
29473
+ }
29474
+ /**
29475
+ * Handle touch start event to know when the user is actively dragging the segment view.
29476
+ */
29477
+ handleScrollStart() {
29478
+ if (this.scrollEndTimeout) {
29479
+ clearTimeout(this.scrollEndTimeout);
29480
+ this.scrollEndTimeout = null;
29481
+ }
29482
+ this.isTouching = true;
29483
+ }
29484
+ /**
29485
+ * Handle touch end event to know when the user is no longer dragging the segment view.
29486
+ */
29487
+ handleTouchEnd() {
29488
+ this.isTouching = false;
29489
+ }
29490
+ /**
29491
+ * Reset the scroll end detection timer. This is called on every scroll event.
29492
+ */
29493
+ resetScrollEndTimeout() {
29494
+ if (this.scrollEndTimeout) {
29495
+ clearTimeout(this.scrollEndTimeout);
29496
+ this.scrollEndTimeout = null;
29497
+ }
29498
+ this.scrollEndTimeout = setTimeout(() => {
29499
+ this.checkForScrollEnd();
29500
+ },
29501
+ // Setting this to a lower value may result in inconsistencies in behavior
29502
+ // across browsers (particularly Firefox).
29503
+ // Ideally, all of this logic is removed once the scroll end event is
29504
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
29505
+ 100);
29506
+ }
29507
+ /**
29508
+ * Check if the scroll has ended and the user is not actively touching.
29509
+ * If the conditions are met (active content is enabled and no active touch),
29510
+ * reset the scroll position and emit the scroll end event.
29511
+ */
29512
+ checkForScrollEnd() {
29513
+ // Only emit scroll end event if the active content is not disabled and
29514
+ // the user is not touching the segment view
29515
+ if (!this.isTouching) {
29516
+ this.isManualScroll = undefined;
29517
+ }
29518
+ }
29519
+ /**
29520
+ * @internal
29521
+ *
29522
+ * This method is used to programmatically set the displayed segment content
29523
+ * in the segment view. Calling this method will update the `value` of the
29524
+ * corresponding segment button.
29525
+ *
29526
+ * @param id: The id of the segment content to display.
29527
+ * @param smoothScroll: Whether to animate the scroll transition.
29528
+ */
29529
+ async setContent(id, smoothScroll = true) {
29530
+ const contents = this.getSegmentContents();
29531
+ const index = contents.findIndex((content) => content.id === id);
29532
+ if (index === -1)
29533
+ return;
29534
+ this.isManualScroll = false;
29535
+ this.resetScrollEndTimeout();
29536
+ const contentWidth = this.el.offsetWidth;
29537
+ this.el.scrollTo({
29538
+ top: 0,
29539
+ left: index * contentWidth,
29540
+ behavior: smoothScroll ? 'smooth' : 'instant',
29541
+ });
29542
+ }
29543
+ getSegmentContents() {
29544
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
29545
+ }
29546
+ render() {
29547
+ const { disabled, isManualScroll } = this;
29548
+ return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29549
+ 'segment-view-disabled': disabled,
29550
+ 'segment-view-scroll-disabled': isManualScroll === false,
29551
+ } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29552
+ }
29553
+ get el() { return getElement(this); }
29554
+ static get style() { return {
29555
+ ios: IonSegmentViewIosStyle0,
29556
+ md: IonSegmentViewMdStyle0
29557
+ }; }
29558
+ static get cmpMeta() { return {
29559
+ "$flags$": 41,
29560
+ "$tagName$": "ion-segment-view",
29561
+ "$members$": {
29562
+ "disabled": [4],
29563
+ "isManualScroll": [32],
29564
+ "setContent": [64]
29565
+ },
29566
+ "$listeners$": [[1, "scroll", "handleScroll"], [1, "touchstart", "handleScrollStart"], [1, "touchend", "handleTouchEnd"]],
29567
+ "$lazyBundleId$": "-",
29231
29568
  "$attrsToReflect$": []
29232
29569
  }; }
29233
29570
  }
@@ -29388,13 +29725,12 @@ class Select {
29388
29725
  this.setFocus();
29389
29726
  });
29390
29727
  await overlay.present();
29391
- // focus selected option for popovers
29392
- if (this.interface === 'popover') {
29393
- const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
29728
+ // focus selected option for popovers and modals
29729
+ if (this.interface === 'popover' || this.interface === 'modal') {
29730
+ const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
29394
29731
  if (indexOfSelected > -1) {
29395
29732
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
29396
29733
  if (selectedItem) {
29397
- focusVisibleElement(selectedItem);
29398
29734
  /**
29399
29735
  * Browsers such as Firefox do not
29400
29736
  * correctly delegate focus when manually
@@ -29408,8 +29744,11 @@ class Select {
29408
29744
  */
29409
29745
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
29410
29746
  if (interactiveEl) {
29411
- interactiveEl.focus();
29747
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29748
+ // and removing `ion-focused` style
29749
+ interactiveEl.setFocus();
29412
29750
  }
29751
+ focusVisibleElement(selectedItem);
29413
29752
  }
29414
29753
  }
29415
29754
  else {
@@ -29418,11 +29757,14 @@ class Select {
29418
29757
  */
29419
29758
  const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
29420
29759
  if (firstEnabledOption) {
29421
- focusVisibleElement(firstEnabledOption.closest('ion-item'));
29422
29760
  /**
29423
29761
  * Focus the option for the same reason as we do above.
29762
+ *
29763
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29764
+ * and removing `ion-focused` style
29424
29765
  */
29425
- firstEnabledOption.focus();
29766
+ firstEnabledOption.setFocus();
29767
+ focusVisibleElement(firstEnabledOption.closest('ion-item'));
29426
29768
  }
29427
29769
  }
29428
29770
  }
@@ -29444,6 +29786,9 @@ class Select {
29444
29786
  if (selectInterface === 'popover') {
29445
29787
  return this.openPopover(ev);
29446
29788
  }
29789
+ if (selectInterface === 'modal') {
29790
+ return this.openModal();
29791
+ }
29447
29792
  return this.openAlert();
29448
29793
  }
29449
29794
  updateOverlayOptions() {
@@ -29460,7 +29805,13 @@ class Select {
29460
29805
  case 'popover':
29461
29806
  const popover = overlay.querySelector('ion-select-popover');
29462
29807
  if (popover) {
29463
- popover.options = this.createPopoverOptions(childOpts, value);
29808
+ popover.options = this.createOverlaySelectOptions(childOpts, value);
29809
+ }
29810
+ break;
29811
+ case 'modal':
29812
+ const modal = overlay.querySelector('ion-select-modal');
29813
+ if (modal) {
29814
+ modal.options = this.createOverlaySelectOptions(childOpts, value);
29464
29815
  }
29465
29816
  break;
29466
29817
  case 'alert':
@@ -29515,7 +29866,7 @@ class Select {
29515
29866
  });
29516
29867
  return alertInputs;
29517
29868
  }
29518
- createPopoverOptions(data, selectValue) {
29869
+ createOverlaySelectOptions(data, selectValue) {
29519
29870
  const popoverOptions = data.map((option) => {
29520
29871
  const value = getOptionValue(option);
29521
29872
  // Remove hydrated before copying over classes
@@ -29575,7 +29926,7 @@ class Select {
29575
29926
  message: interfaceOptions.message,
29576
29927
  multiple,
29577
29928
  value,
29578
- options: this.createPopoverOptions(this.childOpts, value),
29929
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29579
29930
  } });
29580
29931
  return popoverController.create(popoverOpts);
29581
29932
  }
@@ -29610,6 +29961,17 @@ class Select {
29610
29961
  ] });
29611
29962
  return alertController.create(alertOpts);
29612
29963
  }
29964
+ openModal() {
29965
+ const { multiple, value, interfaceOptions } = this;
29966
+ const mode = getIonMode$1(this);
29967
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
29968
+ header: interfaceOptions.header,
29969
+ multiple,
29970
+ value,
29971
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29972
+ } });
29973
+ return modalController.create(modalOpts);
29974
+ }
29613
29975
  /**
29614
29976
  * Close the select interface.
29615
29977
  */
@@ -29817,7 +30179,7 @@ class Select {
29817
30179
  * TODO(FW-5592): Remove hasStartEndSlots condition
29818
30180
  */
29819
30181
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
29820
- return (hAsync(Host, { key: '73c571c1f8468e1c3f4fe02fbbb33ba9cbc8e989', onClick: this.onClick, class: createColorClasses$1(this.color, {
30182
+ return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
29821
30183
  [mode]: true,
29822
30184
  'in-item': inItem,
29823
30185
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -29833,7 +30195,7 @@ class Select {
29833
30195
  [`select-justify-${justify}`]: justifyEnabled,
29834
30196
  [`select-shape-${shape}`]: shape !== undefined,
29835
30197
  [`select-label-placement-${labelPlacement}`]: true,
29836
- }) }, hAsync("label", { key: '2b08538cba0b9f747541d57ac18fb6a1ea658878', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '33f54373bcb02c72a9d0af2efffebc27ee2c69fe', class: "select-wrapper-inner" }, hAsync("slot", { key: 'd1c93aec99dc1cd6410f93309cef615fe04b541b', name: "start" }), hAsync("div", { key: '493d1a3cad9565516f855bef75685b020785ffd3', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '353a3ee5635f8a8f3be411efd6caef6c2ad74a89', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'fd5f85555db02affe954f9f4f2876ac8fe676234', class: "select-highlight" }))));
30198
+ }) }, hAsync("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, hAsync("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), hAsync("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
29837
30199
  }
29838
30200
  get el() { return getElement(this); }
29839
30201
  static get watchers() { return {
@@ -29913,6 +30275,108 @@ const textForValue = (opts, value, compareWith) => {
29913
30275
  let selectIds = 0;
29914
30276
  const OPTION_CLASS = 'select-interface-option';
29915
30277
 
30278
+ const ionicSelectModalMdCss = ".sc-ion-select-modal-ionic-h{height:100%}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(container){display:none}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(label){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-ionic{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-ionic{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-modal-ionic{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}";
30279
+ var IonSelectModalIonicStyle0 = ionicSelectModalMdCss;
30280
+
30281
+ const selectModalIosCss = ".sc-ion-select-modal-ios-h{height:100%}";
30282
+ var IonSelectModalIosStyle0 = selectModalIosCss;
30283
+
30284
+ const selectModalMdCss = ".sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(container){display:none}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(label){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-md{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-modal-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}";
30285
+ var IonSelectModalMdStyle0 = selectModalMdCss;
30286
+
30287
+ class SelectModal {
30288
+ constructor(hostRef) {
30289
+ registerInstance(this, hostRef);
30290
+ this.header = undefined;
30291
+ this.multiple = undefined;
30292
+ this.options = [];
30293
+ }
30294
+ closeModal() {
30295
+ const modal = this.el.closest('ion-modal');
30296
+ if (modal) {
30297
+ modal.dismiss();
30298
+ }
30299
+ }
30300
+ findOptionFromEvent(ev) {
30301
+ const { options } = this;
30302
+ return options.find((o) => o.value === ev.target.value);
30303
+ }
30304
+ getValues(ev) {
30305
+ const { multiple, options } = this;
30306
+ if (multiple) {
30307
+ // this is a modal with checkboxes (multiple value select)
30308
+ // return an array of all the checked values
30309
+ return options.filter((o) => o.checked).map((o) => o.value);
30310
+ }
30311
+ // this is a modal with radio buttons (single value select)
30312
+ // return the value that was clicked, otherwise undefined
30313
+ const option = ev ? this.findOptionFromEvent(ev) : null;
30314
+ return option ? option.value : undefined;
30315
+ }
30316
+ callOptionHandler(ev) {
30317
+ const option = this.findOptionFromEvent(ev);
30318
+ const values = this.getValues(ev);
30319
+ if (option === null || option === void 0 ? void 0 : option.handler) {
30320
+ safeCall(option.handler, values);
30321
+ }
30322
+ }
30323
+ setChecked(ev) {
30324
+ const { multiple } = this;
30325
+ const option = this.findOptionFromEvent(ev);
30326
+ // this is a modal with checkboxes (multiple value select)
30327
+ // we need to set the checked value for this option
30328
+ if (multiple && option) {
30329
+ option.checked = ev.detail.checked;
30330
+ }
30331
+ }
30332
+ renderRadioOptions() {
30333
+ const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
30334
+ return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30335
+ // TODO FW-4784
30336
+ 'item-radio-checked': option.value === checked
30337
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
30338
+ if (ev.key === ' ') {
30339
+ /**
30340
+ * Selecting a radio option with keyboard navigation,
30341
+ * either through the Enter or Space keys, should
30342
+ * dismiss the modal.
30343
+ */
30344
+ this.closeModal();
30345
+ }
30346
+ } }, option.text))))));
30347
+ }
30348
+ renderCheckboxOptions() {
30349
+ return this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30350
+ // TODO FW-4784
30351
+ 'item-checkbox-checked': option.checked
30352
+ }, getClassMap(option.cssClass)) }, hAsync("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
30353
+ this.setChecked(ev);
30354
+ this.callOptionHandler(ev);
30355
+ } }, option.text))));
30356
+ }
30357
+ render() {
30358
+ return (hAsync(Host, { key: 'f4b92f4fc3d646f9a327e43a9622abaf69659c28', class: getIonMode$1(this) }, hAsync("ion-header", { key: '11232ef496e7abd69e55cef988963a4869a7b01e' }, hAsync("ion-toolbar", { key: 'e7c41878691a504d44c658db02807867df542588' }, this.header !== undefined && hAsync("ion-title", { key: 'fcf9d33e0f3e0076ff14805de68848f9ef199cca' }, this.header), hAsync("ion-buttons", { key: '748a967ae0ce68bc2fd018a6b9ebe0e4b810f6ac', slot: "end" }, hAsync("ion-button", { key: 'f5e60791870b5085a31b7af70ed4bb3fb83eb185', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: '159797957b6f788a9b393d91864c18db34481c68' }, hAsync("ion-list", { key: '4124554fe8b2411637cbf02f08e50e0d8f804175' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30359
+ }
30360
+ get el() { return getElement(this); }
30361
+ static get style() { return {
30362
+ ionic: IonSelectModalIonicStyle0,
30363
+ ios: IonSelectModalIosStyle0,
30364
+ md: IonSelectModalMdStyle0
30365
+ }; }
30366
+ static get cmpMeta() { return {
30367
+ "$flags$": 34,
30368
+ "$tagName$": "ion-select-modal",
30369
+ "$members$": {
30370
+ "header": [1],
30371
+ "multiple": [4],
30372
+ "options": [16]
30373
+ },
30374
+ "$listeners$": undefined,
30375
+ "$lazyBundleId$": "-",
30376
+ "$attrsToReflect$": []
30377
+ }; }
30378
+ }
30379
+
29916
30380
  const selectOptionCss = ":host{display:none}";
29917
30381
  var IonSelectOptionStyle0 = selectOptionCss;
29918
30382
 
@@ -29924,7 +30388,7 @@ class SelectOption {
29924
30388
  this.value = undefined;
29925
30389
  }
29926
30390
  render() {
29927
- return hAsync(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode$1(this) });
30391
+ return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
29928
30392
  }
29929
30393
  get el() { return getElement(this); }
29930
30394
  static get style() { return IonSelectOptionStyle0; }
@@ -30044,7 +30508,7 @@ class SelectPopover {
30044
30508
  render() {
30045
30509
  const { header, message, options, subHeader } = this;
30046
30510
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30047
- 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))));
30511
+ return (hAsync(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode$1(this) }, hAsync("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && hAsync("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, hAsync("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && hAsync("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
30048
30512
  }
30049
30513
  get el() { return getElement(this); }
30050
30514
  static get style() { return {
@@ -30092,11 +30556,11 @@ class SkeletonText {
30092
30556
  const animated = this.animated && config.getBoolean('animated', true);
30093
30557
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30094
30558
  const mode = getIonMode$1(this);
30095
- return (hAsync(Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
30559
+ return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30096
30560
  [mode]: true,
30097
30561
  'skeleton-text-animated': animated,
30098
30562
  'in-media': inMedia,
30099
- } }, hAsync("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
30563
+ } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30100
30564
  }
30101
30565
  get el() { return getElement(this); }
30102
30566
  static get style() { return IonSkeletonTextStyle0; }
@@ -30149,7 +30613,7 @@ class Spinner {
30149
30613
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30150
30614
  }
30151
30615
  }
30152
- return (hAsync(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses$1(self.color, {
30616
+ return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30153
30617
  [mode]: true,
30154
30618
  [`spinner-${spinnerName}`]: true,
30155
30619
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30249,12 +30713,12 @@ class SplitPane {
30249
30713
  }
30250
30714
  render() {
30251
30715
  const mode = getIonMode$1(this);
30252
- return (hAsync(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
30716
+ return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30253
30717
  [mode]: true,
30254
30718
  // Used internally for styling
30255
30719
  [`split-pane-${mode}`]: true,
30256
30720
  'split-pane-visible': this.visible,
30257
- } }, hAsync("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
30721
+ } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30258
30722
  }
30259
30723
  get el() { return getElement(this); }
30260
30724
  static get watchers() { return {
@@ -30323,10 +30787,10 @@ class Tab {
30323
30787
  }
30324
30788
  render() {
30325
30789
  const { tab, active, component } = this;
30326
- return (hAsync(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30790
+ return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30327
30791
  'ion-page': component === undefined,
30328
30792
  'tab-hidden': !active,
30329
- } }, hAsync("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
30793
+ } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
30330
30794
  }
30331
30795
  get el() { return getElement(this); }
30332
30796
  static get watchers() { return {
@@ -30404,11 +30868,11 @@ class TabBar {
30404
30868
  const { color, translucent, keyboardVisible } = this;
30405
30869
  const mode = getIonMode$1(this);
30406
30870
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30407
- return (hAsync(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30871
+ return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30408
30872
  [mode]: true,
30409
30873
  'tab-bar-translucent': translucent,
30410
30874
  'tab-bar-hidden': shouldHide,
30411
- }) }, hAsync("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
30875
+ }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
30412
30876
  }
30413
30877
  get el() { return getElement(this); }
30414
30878
  static get watchers() { return {
@@ -30506,7 +30970,7 @@ class TabButton {
30506
30970
  rel,
30507
30971
  target,
30508
30972
  };
30509
- return (hAsync(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30973
+ return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30510
30974
  [mode]: true,
30511
30975
  'tab-selected': selected,
30512
30976
  'tab-disabled': disabled,
@@ -30518,7 +30982,7 @@ class TabButton {
30518
30982
  'ion-activatable': true,
30519
30983
  'ion-selectable': true,
30520
30984
  'ion-focusable': true,
30521
- } }, 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" }))));
30985
+ } }, hAsync("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, 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: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, hAsync("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
30522
30986
  }
30523
30987
  get el() { return getElement(this); }
30524
30988
  static get style() { return {
@@ -30694,7 +31158,7 @@ class Tabs {
30694
31158
  return Array.from(this.el.querySelectorAll('ion-tab'));
30695
31159
  }
30696
31160
  render() {
30697
- return (hAsync(Host, { key: 'eb094c9bd15b7777c53bd0bd6d225784fa472849', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'a516ca6915bf26e77eeeb0ff684c4fcc7d4420a7', name: "top" }), hAsync("div", { key: 'dd2a32a072d77afe216abc4958c1d686405fb780', class: "tabs-inner" }, hAsync("slot", { key: '222c20ba862068f5c78e7bbef4fa213499fb2fa5' })), hAsync("slot", { key: '3e76dcb1b21873aa137d095c56131514054ead3a', name: "bottom" })));
31161
+ return (hAsync(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), hAsync("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, hAsync("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), hAsync("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
30698
31162
  }
30699
31163
  get el() { return getElement(this); }
30700
31164
  static get style() { return IonTabsStyle0; }
@@ -30736,9 +31200,9 @@ class Text {
30736
31200
  }
30737
31201
  render() {
30738
31202
  const mode = getIonMode$1(this);
30739
- return (hAsync(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses$1(this.color, {
31203
+ return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
30740
31204
  [mode]: true,
30741
- }) }, hAsync("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
31205
+ }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
30742
31206
  }
30743
31207
  static get style() { return IonTextStyle0; }
30744
31208
  static get cmpMeta() { return {
@@ -31120,7 +31584,7 @@ class Textarea {
31120
31584
  * TODO(FW-5592): Remove hasStartEndSlots condition
31121
31585
  */
31122
31586
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31123
- return (hAsync(Host, { key: 'e8a5b5727c6a018bbd6f5507b690bc5f0959e352', class: createColorClasses$1(this.color, {
31587
+ return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31124
31588
  [mode]: true,
31125
31589
  'has-value': hasValue,
31126
31590
  'has-focus': hasFocus,
@@ -31129,7 +31593,7 @@ class Textarea {
31129
31593
  [`textarea-shape-${shape}`]: shape !== undefined,
31130
31594
  [`textarea-label-placement-${labelPlacement}`]: true,
31131
31595
  'textarea-disabled': disabled,
31132
- }) }, hAsync("label", { key: '48e889571e2d3e7e150b038e4b4b15862b418288', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '6c6c7872ae4d351d8b8d772ad18ce3ba7a0e9a87', class: "textarea-wrapper-inner" }, hAsync("div", { key: '03aef5dfa59af0fa78a3e5c92e0ed72396717d72', class: "start-slot-wrapper" }, hAsync("slot", { key: '39aee9faebb0f1d10de5a5817fd9d9771b074b96', name: "start" })), hAsync("div", { key: '738e8ff603f4c9b9083b3139db861f4b7ec20f79', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '7763fb4f8ffe94635167331c70d21d661544c4f8', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), hAsync("div", { key: 'b3af9ec0982c6dbd381afaa02df153d7e90471be', class: "end-slot-wrapper" }, hAsync("slot", { key: '60f99bcd49a5ec2e1fa6e3e77809aefeb9d2d0d6', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '6a7f45639ba027f4da573adae53f1197a6dec383', class: "textarea-highlight" })), this.renderBottomContent()));
31596
+ }) }, hAsync("label", { key: 'f840a5be2b776a4b9c18c6da24e0b7d3d4838fee', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '979461fc0d4684926d79d75759c63c6867b7622b', class: "textarea-wrapper-inner" }, hAsync("div", { key: '88f0d5d4bac29597cc2588e5b2ed72fb4fbe153d', class: "start-slot-wrapper" }, hAsync("slot", { key: '21dcca0e59c1260e3d0d1e126c1c590de15c4bad', name: "start" })), hAsync("div", { key: '3c48a4bb3d763a389d3429123e7c110064b9b8d4', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '1550599ad15b3f215c104c014e90711f073ace8b', 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, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), hAsync("div", { key: '4f01ab4d2994a6de6f49eb9ed2e310d00daf21b2', class: "end-slot-wrapper" }, hAsync("slot", { key: '501e288b6807e039972bb4f0b63906114255518a', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'd3008eed34494aa9f8e98a28eac3b465dc4c2bd0', class: "textarea-highlight" })), this.renderBottomContent()));
31133
31597
  }
31134
31598
  get el() { return getElement(this); }
31135
31599
  static get watchers() { return {
@@ -31191,7 +31655,7 @@ class Thumbnail {
31191
31655
  registerInstance(this, hostRef);
31192
31656
  }
31193
31657
  render() {
31194
- return (hAsync(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode$1(this) }, hAsync("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
31658
+ return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31195
31659
  }
31196
31660
  static get style() { return IonThumbnailStyle0; }
31197
31661
  static get cmpMeta() { return {
@@ -31638,10 +32102,10 @@ const createSwipeToDismissGesture = (el, toastPosition, onDismiss) => {
31638
32102
  return gesture;
31639
32103
  };
31640
32104
 
31641
- const toastIosCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}:host{inset-inline-start:0}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}.toast-wrapper.toast-top{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}.toast-wrapper.toast-bottom{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-radius:14px;--button-color:var(--ion-color-primary, #0054e9);--color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--max-width:700px;--max-height:478px;--start:10px;--end:10px;font-size:clamp(14px, 0.875rem, 43.4px)}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;z-index:10}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.toast-translucent) .toast-wrapper{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}:host(.ion-color.toast-translucent) .toast-wrapper{background:rgba(var(--ion-color-base-rgb), 0.8)}}.toast-wrapper.toast-middle{opacity:0.01}.toast-content{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:15px;padding-bottom:15px}.toast-header{margin-bottom:2px;font-weight:500}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;min-height:44px;-webkit-transition:background-color, opacity 100ms linear;transition:background-color, opacity 100ms linear;border:0;background-color:transparent;font-family:var(--ion-font-family);font-size:clamp(17px, 1.0625rem, 21.998px);font-weight:500;overflow:hidden}.toast-button.ion-activated{opacity:0.4}@media (any-hover: hover){.toast-button:hover{opacity:0.6}}";
32105
+ const toastIosCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}:host{inset-inline-start:0}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);pointer-events:auto}.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}.toast-wrapper.toast-top{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}.toast-wrapper.toast-bottom{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-radius:14px;--button-color:var(--ion-color-primary, #0054e9);--color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--max-width:700px;--max-height:478px;--start:10px;--end:10px;font-size:clamp(14px, 0.875rem, 43.4px)}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;z-index:10}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.toast-translucent) .toast-wrapper{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}:host(.ion-color.toast-translucent) .toast-wrapper{background:rgba(var(--ion-color-base-rgb), 0.8)}}.toast-wrapper.toast-middle{opacity:0.01}.toast-content{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:15px;padding-bottom:15px}.toast-header{margin-bottom:2px;font-weight:500}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;min-height:44px;-webkit-transition:background-color, opacity 100ms linear;transition:background-color, opacity 100ms linear;border:0;background-color:transparent;font-family:var(--ion-font-family);font-size:clamp(17px, 1.0625rem, 21.998px);font-weight:500;overflow:hidden}.toast-button.ion-activated{opacity:0.4}@media (any-hover: hover){.toast-button:hover{opacity:0.6}}";
31642
32106
  var IonToastIosStyle0 = toastIosCss;
31643
32107
 
31644
- const toastMdCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}:host{inset-inline-start:0}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}.toast-wrapper.toast-top{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}.toast-wrapper.toast-bottom{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-800, var(--ion-background-color-step-800, #333333));--border-radius:4px;--box-shadow:0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);--button-color:var(--ion-color-primary, #0054e9);--color:var(--ion-color-step-50, var(--ion-text-color-step-950, #f2f2f2));--max-width:700px;--start:8px;--end:8px;font-size:0.875rem}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;opacity:0.01;z-index:10}.toast-content{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:14px;padding-bottom:14px}.toast-header{margin-bottom:2px;font-weight:500;line-height:1.25rem}.toast-message{line-height:1.25rem}.toast-layout-baseline .toast-button-group-start{-webkit-margin-start:8px;margin-inline-start:8px}.toast-layout-stacked .toast-button-group-start{-webkit-margin-end:8px;margin-inline-end:8px;margin-top:8px}.toast-layout-baseline .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px}.toast-layout-stacked .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px;margin-bottom:8px}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;font-family:var(--ion-font-family);font-size:0.875rem;font-weight:500;letter-spacing:0.84px;text-transform:uppercase;overflow:hidden}.toast-button-cancel{color:var(--ion-color-step-100, var(--ion-text-color-step-900, #e6e6e6))}.toast-button-icon-only{border-radius:50%;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:9px;padding-bottom:9px;width:36px;height:36px}@media (any-hover: hover){.toast-button:hover{background-color:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08)}.toast-button-cancel:hover{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08)}}";
32108
+ const toastMdCss = ":host{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}:host{inset-inline-start:0}:host(.overlay-hidden){display:none}:host(.ion-color){--button-color:inherit;color:var(--ion-color-contrast)}:host(.ion-color) .toast-button-cancel{color:inherit}:host(.ion-color) .toast-wrapper{background:var(--ion-color-base)}.toast-wrapper{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);pointer-events:auto}.toast-wrapper{inset-inline-start:var(--start);inset-inline-end:var(--end)}.toast-wrapper.toast-top{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}.toast-wrapper.toast-bottom{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}.toast-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:inherit;min-height:inherit;max-height:inherit;contain:content}.toast-layout-stacked .toast-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.toast-layout-baseline .toast-content{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}.toast-icon{-webkit-margin-start:16px;margin-inline-start:16px}.toast-content{min-width:0}.toast-message{-ms-flex:1;flex:1;white-space:var(--white-space)}.toast-button-group{display:-ms-flexbox;display:flex}.toast-layout-stacked .toast-button-group{-ms-flex-pack:end;justify-content:end;width:100%}.toast-button{border:0;outline:none;color:var(--button-color);z-index:0}.toast-icon,.toast-button-icon{font-size:1.4em}.toast-button-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){.toast-button:hover{cursor:pointer}}:host{--background:var(--ion-color-step-800, var(--ion-background-color-step-800, #333333));--border-radius:4px;--box-shadow:0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);--button-color:var(--ion-color-primary, #0054e9);--color:var(--ion-color-step-50, var(--ion-text-color-step-950, #f2f2f2));--max-width:700px;--start:8px;--end:8px;font-size:0.875rem}.toast-wrapper{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;opacity:0.01;z-index:10}.toast-content{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:14px;padding-bottom:14px}.toast-header{margin-bottom:2px;font-weight:500;line-height:1.25rem}.toast-message{line-height:1.25rem}.toast-layout-baseline .toast-button-group-start{-webkit-margin-start:8px;margin-inline-start:8px}.toast-layout-stacked .toast-button-group-start{-webkit-margin-end:8px;margin-inline-end:8px;margin-top:8px}.toast-layout-baseline .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px}.toast-layout-stacked .toast-button-group-end{-webkit-margin-end:8px;margin-inline-end:8px;margin-bottom:8px}.toast-button{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;font-family:var(--ion-font-family);font-size:0.875rem;font-weight:500;letter-spacing:0.84px;text-transform:uppercase;overflow:hidden}.toast-button-cancel{color:var(--ion-color-step-100, var(--ion-text-color-step-900, #e6e6e6))}.toast-button-icon-only{border-radius:50%;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:9px;padding-bottom:9px;width:36px;height:36px}@media (any-hover: hover){.toast-button:hover{background-color:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08)}.toast-button-cancel:hover{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08)}}";
31645
32109
  var IonToastMdStyle0 = toastMdCss;
31646
32110
 
31647
32111
  // TODO(FW-2832): types
@@ -32027,9 +32491,9 @@ class Toast {
32027
32491
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32028
32492
  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);
32029
32493
  }
32030
- return (hAsync(Host, Object.assign({ key: '68c336f80af04ba484ca9899bae8f40c0d9b7691', tabindex: "-1" }, this.htmlAttributes, { style: {
32494
+ return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32031
32495
  zIndex: `${60000 + this.overlayIndex}`,
32032
- }, 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: '3483b188f14b700964a123997a60a43a2023a1b6', class: wrapperClass }, hAsync("div", { key: '1b88544a9b87253b364cbec6285625388979b560', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: 'bd1c42e3b14af66b880dfe283e3ae910075c0f70', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'a5ef6cdabc1f7c70d11a5f2a0abf8737fe7550e8', 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')))));
32496
+ }, 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: '9393ead4de1bf28529661d6f64049d34e18d725c', class: wrapperClass }, hAsync("div", { key: '3e9dd73c17c337849c3f26e8d0f395b3e5ee20a7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '5d15b18364301ad55e44e9f601014ac33181590b', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'f6dd164502637a882c5caf18445d8509b85ad6f9', 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')))));
32033
32497
  }
32034
32498
  get el() { return getElement(this); }
32035
32499
  static get watchers() { return {
@@ -32249,7 +32713,7 @@ class Toggle {
32249
32713
  const value = this.getValue();
32250
32714
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32251
32715
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32252
- return (hAsync(Host, { key: '8f024fb0fbc2d4442be0574b03450426e8e4fc9e', onClick: this.onClick, class: createColorClasses$1(color, {
32716
+ return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32253
32717
  [mode]: true,
32254
32718
  'in-item': hostContext('ion-item', el),
32255
32719
  'toggle-activated': activated,
@@ -32259,10 +32723,10 @@ class Toggle {
32259
32723
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32260
32724
  [`toggle-label-placement-${labelPlacement}`]: true,
32261
32725
  [`toggle-${rtl}`]: true,
32262
- }) }, hAsync("label", { key: '0492f009cd89755adf41f60925028002df0e67b1', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'fd98b23e8adfa2630878eddc30607a0b1bf9e798', 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: 'bcbde055ad9450319ae41e8956a1e8cc0a7796a4', class: {
32726
+ }) }, hAsync("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f387b1ea840737a9737917e516834c887be99c09', 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: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
32263
32727
  'label-text-wrapper': true,
32264
32728
  'label-text-wrapper-hidden': !this.hasLabel,
32265
- }, part: "label" }, hAsync("slot", { key: '7a6ea9515d454d80615f0622f361c5f91b41345c' })), hAsync("div", { key: '6d3670b81b8f809092c98b3f3b8e483ddf6a7cac', class: "native-wrapper" }, this.renderToggleControl()))));
32729
+ }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32266
32730
  }
32267
32731
  get el() { return getElement(this); }
32268
32732
  static get watchers() { return {
@@ -32366,10 +32830,10 @@ class Toolbar {
32366
32830
  this.childrenStyles.forEach((value) => {
32367
32831
  Object.assign(childStyles, value);
32368
32832
  });
32369
- return (hAsync(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32833
+ return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32370
32834
  [mode]: true,
32371
32835
  'in-toolbar': hostContext('ion-toolbar', this.el),
32372
- })) }, 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" }))));
32836
+ })) }, hAsync("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), hAsync("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, hAsync("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), hAsync("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), hAsync("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, hAsync("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), hAsync("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), hAsync("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
32373
32837
  }
32374
32838
  get el() { return getElement(this); }
32375
32839
  static get style() { return {
@@ -32419,11 +32883,11 @@ class ToolbarTitle {
32419
32883
  render() {
32420
32884
  const mode = getIonMode$1(this);
32421
32885
  const size = this.getSize();
32422
- return (hAsync(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses$1(this.color, {
32886
+ return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
32423
32887
  [mode]: true,
32424
32888
  [`title-${size}`]: true,
32425
32889
  'title-rtl': document.dir === 'rtl',
32426
- }) }, hAsync("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, hAsync("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
32890
+ }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
32427
32891
  }
32428
32892
  get el() { return getElement(this); }
32429
32893
  static get watchers() { return {
@@ -32524,7 +32988,10 @@ registerComponents([
32524
32988
  Searchbar,
32525
32989
  Segment,
32526
32990
  SegmentButton,
32991
+ SegmentContent,
32992
+ SegmentView,
32527
32993
  Select,
32994
+ SelectModal,
32528
32995
  SelectOption,
32529
32996
  SelectPopover,
32530
32997
  SkeletonText,