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.mjs CHANGED
@@ -4388,7 +4388,7 @@ const createLockController = () => {
4388
4388
  * Note: We need this distinction because `disabled="false"` is
4389
4389
  * valid usage for the disabled property on ion-button.
4390
4390
  */
4391
- 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])';
4391
+ 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])';
4392
4392
  /**
4393
4393
  * Focuses the first descendant in a context
4394
4394
  * that can receive focus. If none exists,
@@ -4443,7 +4443,13 @@ const focusElementInContext = (hostToFocus, fallbackElement) => {
4443
4443
  elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
4444
4444
  }
4445
4445
  if (elementToFocus) {
4446
- focusVisibleElement(elementToFocus);
4446
+ const radioGroup = elementToFocus.closest('ion-radio-group');
4447
+ if (radioGroup) {
4448
+ radioGroup.setFocus();
4449
+ }
4450
+ else {
4451
+ focusVisibleElement(elementToFocus);
4452
+ }
4447
4453
  }
4448
4454
  else {
4449
4455
  // Focus fallback element instead of letting focus escape
@@ -4619,6 +4625,7 @@ const createController = (tagName) => {
4619
4625
  };
4620
4626
  const alertController = /*@__PURE__*/ createController('ion-alert');
4621
4627
  const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
4628
+ const modalController = /*@__PURE__*/ createController('ion-modal');
4622
4629
  const popoverController = /*@__PURE__*/ createController('ion-popover');
4623
4630
  /**
4624
4631
  * Prepares the overlay element to be presented.
@@ -5393,21 +5400,30 @@ const createTriggerController = () => {
5393
5400
  * like TalkBack do not announce or interact with the content until the
5394
5401
  * animation is complete, avoiding confusion for users.
5395
5402
  *
5396
- * If the overlay is being presented, it prevents focus rings from appearing
5397
- * in incorrect positions due to the transition (specifically `transform`
5398
- * styles), ensuring that when aria-hidden is removed, the focus rings are
5399
- * correctly displayed in the final location of the elements.
5403
+ * When the overlay is presented on an Android device, TalkBack's focus rings
5404
+ * may appear in the wrong position due to the transition (specifically
5405
+ * `transform` styles). This occurs because the focus rings are initially
5406
+ * displayed at the starting position of the elements before the transition
5407
+ * begins. This workaround ensures the focus rings do not appear in the
5408
+ * incorrect location.
5409
+ *
5410
+ * If this solution is applied to iOS devices, then it leads to a bug where
5411
+ * the overlays cannot be accessed by screen readers. This is due to
5412
+ * VoiceOver not being able to update the accessibility tree when the
5413
+ * `aria-hidden` is removed.
5400
5414
  *
5401
5415
  * @param overlay - The overlay that is being animated.
5402
5416
  */
5403
5417
  const hideAnimatingOverlayFromScreenReaders = (overlay) => {
5404
5418
  if (doc === undefined)
5405
5419
  return;
5406
- /**
5407
- * Once the animation is complete, this attribute will be removed.
5408
- * This is done at the end of the `present` method.
5409
- */
5410
- overlay.setAttribute('aria-hidden', 'true');
5420
+ if (isPlatform('android')) {
5421
+ /**
5422
+ * Once the animation is complete, this attribute will be removed.
5423
+ * This is done at the end of the `present` method.
5424
+ */
5425
+ overlay.setAttribute('aria-hidden', 'true');
5426
+ }
5411
5427
  };
5412
5428
  /**
5413
5429
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
@@ -7287,13 +7303,15 @@ class Alert {
7287
7303
  const msgId = `alert-${overlayIndex}-msg`;
7288
7304
  const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';
7289
7305
  /**
7290
- * If the header is defined, use that. Otherwise, fall back to the subHeader.
7291
- * If neither is defined, don't set aria-labelledby.
7306
+ * Use both the header and subHeader ids if they are defined.
7307
+ * If only the header is defined, use the header id.
7308
+ * If only the subHeader is defined, use the subHeader id.
7309
+ * If neither are defined, do not set aria-labelledby.
7292
7310
  */
7293
- const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
7294
- 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: {
7311
+ const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
7312
+ 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: {
7295
7313
  zIndex: `${20000 + overlayIndex}`,
7296
- }, 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" })));
7314
+ }, 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" })));
7297
7315
  }
7298
7316
  get el() { return getElement(this); }
7299
7317
  static get watchers() { return {
@@ -7371,7 +7389,7 @@ class App {
7371
7389
  }
7372
7390
  render() {
7373
7391
  const mode = getIonMode$1(this);
7374
- return (hAsync(Host, { key: 'e95cdeb2709edbc74f4e6ebf77cb110154605b72', class: {
7392
+ return (hAsync(Host, { key: '96715520fd05d6f0e6fa26a8ba78792cfccd4c0a', class: {
7375
7393
  [mode]: true,
7376
7394
  'ion-page': true,
7377
7395
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -7402,7 +7420,7 @@ class Avatar {
7402
7420
  registerInstance(this, hostRef);
7403
7421
  }
7404
7422
  render() {
7405
- return (hAsync(Host, { key: 'dc1e3cd535e419eebe5599574fd2393ebfde8bbc', class: getIonMode$1(this) }, hAsync("slot", { key: 'edb8441c063ea592b41345ea97d88ecd90cb3052' })));
7423
+ return (hAsync(Host, { key: '998217066084f966bf5d356fed85bcbd451f675a', class: getIonMode$1(this) }, hAsync("slot", { key: '1a6f7c9d4dc6a875f86b5b3cda6d59cb39587f22' })));
7406
7424
  }
7407
7425
  static get style() { return {
7408
7426
  ios: IonAvatarIosStyle0,
@@ -7490,7 +7508,7 @@ class BackButton {
7490
7508
  const showBackButton = defaultHref !== undefined;
7491
7509
  const mode = getIonMode$1(this);
7492
7510
  const ariaLabel = inheritedAttributes['aria-label'] || backButtonText || 'back';
7493
- return (hAsync(Host, { key: '8351c93a1812c94c979fb115f07a9ad7b3152188', onClick: this.onClick, class: createColorClasses$1(color, {
7511
+ return (hAsync(Host, { key: '5466624a10f1ab56f5469e6dc07080303880f2fe', onClick: this.onClick, class: createColorClasses$1(color, {
7494
7512
  [mode]: true,
7495
7513
  button: true, // ion-buttons target .button
7496
7514
  'back-button-disabled': disabled,
@@ -7500,7 +7518,7 @@ class BackButton {
7500
7518
  'ion-activatable': true,
7501
7519
  'ion-focusable': true,
7502
7520
  'show-back-button': showBackButton,
7503
- }) }, 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 }))));
7521
+ }) }, 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 }))));
7504
7522
  }
7505
7523
  get el() { return getElement(this); }
7506
7524
  static get style() { return {
@@ -7553,7 +7571,7 @@ class Backdrop {
7553
7571
  }
7554
7572
  render() {
7555
7573
  const mode = getIonMode$1(this);
7556
- return (hAsync(Host, { key: 'fe191068e2aaadfdbe7a463c08d227a1b36d7a98', "aria-hidden": "true", class: {
7574
+ return (hAsync(Host, { key: '7abaf2c310aa399607451b14063265e8a5846938', "aria-hidden": "true", class: {
7557
7575
  [mode]: true,
7558
7576
  'backdrop-hide': !this.visible,
7559
7577
  'backdrop-no-tappable': !this.tappable,
@@ -7593,9 +7611,9 @@ class Badge {
7593
7611
  }
7594
7612
  render() {
7595
7613
  const mode = getIonMode$1(this);
7596
- return (hAsync(Host, { key: '1253618692342bcf9487188402dc3d49ae0de480', class: createColorClasses$1(this.color, {
7614
+ return (hAsync(Host, { key: '1a2d39c5deec771a2f2196447627b62a7d4c8389', class: createColorClasses$1(this.color, {
7597
7615
  [mode]: true,
7598
- }) }, hAsync("slot", { key: '71d65e203965ea37b94504a8a0a96beb52d4e356' })));
7616
+ }) }, hAsync("slot", { key: 'fc1b6587f1ed24715748eb6785e7fb7a57cdd5cd' })));
7599
7617
  }
7600
7618
  static get style() { return {
7601
7619
  ios: IonBadgeIosStyle0,
@@ -7681,7 +7699,7 @@ class Breadcrumb {
7681
7699
  // to show the separator as long as it isn't also the last breadcrumb
7682
7700
  // otherwise if not collapsed use the value in separator
7683
7701
  const showSeparator = last ? false : collapsed ? (showCollapsedIndicator && !last ? true : false) : separator;
7684
- return (hAsync(Host, { key: 'dfe55ad57f23e5da5f2e2c51fea99964812472e3', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7702
+ return (hAsync(Host, { key: '32ca61c83721dff52b5e97171ed449dce3584a55', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7685
7703
  [mode]: true,
7686
7704
  'breadcrumb-active': active,
7687
7705
  'breadcrumb-collapsed': collapsed,
@@ -7691,15 +7709,15 @@ class Breadcrumb {
7691
7709
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7692
7710
  'ion-activatable': clickable,
7693
7711
  'ion-focusable': clickable,
7694
- }) }, 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: {
7712
+ }) }, 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: {
7695
7713
  'breadcrumbs-collapsed-indicator': true,
7696
- } }, hAsync("ion-icon", { key: '957d8851af9c99dda263f34eff0b35a0fc212c32', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7714
+ } }, hAsync("ion-icon", { key: 'a849e1142a86f06f207cf11662fa2a560ab7fc6a', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7697
7715
  /**
7698
7716
  * Separators should not be announced by narrators.
7699
7717
  * We add aria-hidden on the span so that this applies
7700
7718
  * to any custom separators too.
7701
7719
  */
7702
- 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, "/")))))));
7720
+ 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, "/")))))));
7703
7721
  }
7704
7722
  get el() { return getElement(this); }
7705
7723
  static get style() { return {
@@ -7839,12 +7857,12 @@ class Breadcrumbs {
7839
7857
  render() {
7840
7858
  const { color, collapsed } = this;
7841
7859
  const mode = getIonMode$1(this);
7842
- return (hAsync(Host, { key: '18ffba1642f10cc2bc31440e84f23aa6f042e501', class: createColorClasses$1(color, {
7860
+ return (hAsync(Host, { key: 'fe64e9cdf597ede2db140bf5fa05a0359d82db57', class: createColorClasses$1(color, {
7843
7861
  [mode]: true,
7844
7862
  'in-toolbar': hostContext('ion-toolbar', this.el),
7845
7863
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7846
7864
  'breadcrumbs-collapsed': collapsed,
7847
- }) }, hAsync("slot", { key: '3db6d31590e3047889ce554d57d155c8ea2e1455', onSlotchange: this.slotChanged })));
7865
+ }) }, hAsync("slot", { key: 'a2c99b579e339055c50a613d5c6b61032f5ddffe', onSlotchange: this.slotChanged })));
7848
7866
  }
7849
7867
  get el() { return getElement(this); }
7850
7868
  static get watchers() { return {
@@ -8087,7 +8105,7 @@ class Button {
8087
8105
  {
8088
8106
  type !== 'button' && this.renderHiddenButton();
8089
8107
  }
8090
- return (hAsync(Host, { key: '8f3a0363d46ef888d22b0b0812c70cb4f79e6efa', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8108
+ return (hAsync(Host, { key: '340a809d85698741bb36e796355cae89a970655f', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8091
8109
  [mode]: true,
8092
8110
  [buttonType]: true,
8093
8111
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -8102,7 +8120,7 @@ class Button {
8102
8120
  'button-disabled': disabled,
8103
8121
  'ion-activatable': true,
8104
8122
  'ion-focusable': true,
8105
- }) }, 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 }))));
8123
+ }) }, 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 }))));
8106
8124
  }
8107
8125
  get el() { return getElement(this); }
8108
8126
  static get watchers() { return {
@@ -8153,10 +8171,10 @@ class Buttons {
8153
8171
  }
8154
8172
  render() {
8155
8173
  const mode = getIonMode$1(this);
8156
- return (hAsync(Host, { key: '4e5ce9abb3f56e8c91e3eb58c2819300e61eba24', class: {
8174
+ return (hAsync(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
8157
8175
  [mode]: true,
8158
8176
  ['buttons-collapse']: this.collapse,
8159
- } }, hAsync("slot", { key: 'f2f360ec888b6e946b512fed07431fab47c61482' })));
8177
+ } }, hAsync("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
8160
8178
  }
8161
8179
  static get style() { return {
8162
8180
  ios: IonButtonsIosStyle0,
@@ -8225,7 +8243,7 @@ class Card {
8225
8243
  }
8226
8244
  render() {
8227
8245
  const mode = getIonMode$1(this);
8228
- return (hAsync(Host, { key: '8584300522f382ee8891c039d71da82533dfa36a', class: createColorClasses$1(this.color, {
8246
+ return (hAsync(Host, { key: '85e9b30bd81e79a0c7ac75cb3664bdcf9e4afc4d', class: createColorClasses$1(this.color, {
8229
8247
  [mode]: true,
8230
8248
  'card-disabled': this.disabled,
8231
8249
  'ion-activatable': this.isClickable(),
@@ -8272,7 +8290,7 @@ class CardContent {
8272
8290
  }
8273
8291
  render() {
8274
8292
  const mode = getIonMode$1(this);
8275
- return (hAsync(Host, { key: '2a2d0b48aad4b83990a1748fce60e772514eb223', class: {
8293
+ return (hAsync(Host, { key: 'd98e4d1fc6ad3237549f9bc17e4c67ec5059b1b3', class: {
8276
8294
  [mode]: true,
8277
8295
  // Used internally for styling
8278
8296
  [`card-content-${mode}`]: true,
@@ -8309,11 +8327,11 @@ class CardHeader {
8309
8327
  }
8310
8328
  render() {
8311
8329
  const mode = getIonMode$1(this);
8312
- return (hAsync(Host, { key: '18d12507ec6e650a72d721e9d0f4128b5e86df1d', class: createColorClasses$1(this.color, {
8330
+ return (hAsync(Host, { key: '64246b81931203a64d553c788cd736f41e23f37b', class: createColorClasses$1(this.color, {
8313
8331
  'card-header-translucent': this.translucent,
8314
8332
  'ion-inherit-color': true,
8315
8333
  [mode]: true,
8316
- }) }, hAsync("slot", { key: '3374c087d8c3f014082787e255432e7a335ef44f' })));
8334
+ }) }, hAsync("slot", { key: 'af2da2dfe266889afeb57fac25c6a730558dbba4' })));
8317
8335
  }
8318
8336
  static get style() { return {
8319
8337
  ios: IonCardHeaderIosStyle0,
@@ -8348,10 +8366,10 @@ class CardSubtitle {
8348
8366
  }
8349
8367
  render() {
8350
8368
  const mode = getIonMode$1(this);
8351
- return (hAsync(Host, { key: 'cbcb01bd01cf6de64a0b04fb626e42b07ceb8f53', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8369
+ return (hAsync(Host, { key: '84d820a19d9074f9c8bc61ccba1ca40062a60b73', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8352
8370
  'ion-inherit-color': true,
8353
8371
  [mode]: true,
8354
- }) }, hAsync("slot", { key: 'cbcaa73aa5799882c48d6c0aabfb13651bcc91c0' })));
8372
+ }) }, hAsync("slot", { key: 'e4d07d395a1f4469a90847636083101b32b776a1' })));
8355
8373
  }
8356
8374
  static get style() { return {
8357
8375
  ios: IonCardSubtitleIosStyle0,
@@ -8385,10 +8403,10 @@ class CardTitle {
8385
8403
  }
8386
8404
  render() {
8387
8405
  const mode = getIonMode$1(this);
8388
- return (hAsync(Host, { key: 'f904a0ca6489f147d03c9c5f9f2c5549cdb38d1a', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8406
+ return (hAsync(Host, { key: 'fca001a86396e83718d5211cd71912fdf40dea2f', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8389
8407
  'ion-inherit-color': true,
8390
8408
  [mode]: true,
8391
- }) }, hAsync("slot", { key: 'effb921de4ad8dfbbe318b3f692f4005812da7b1' })));
8409
+ }) }, hAsync("slot", { key: '2ba416aed488b2ff462fa75fb3b70373a6dd7da6' })));
8392
8410
  }
8393
8411
  static get style() { return {
8394
8412
  ios: IonCardTitleIosStyle0,
@@ -8473,7 +8491,8 @@ class Checkbox {
8473
8491
  componentWillLoad() {
8474
8492
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
8475
8493
  }
8476
- setFocus() {
8494
+ /** @internal */
8495
+ async setFocus() {
8477
8496
  if (this.focusEl) {
8478
8497
  this.focusEl.focus();
8479
8498
  }
@@ -8483,7 +8502,7 @@ class Checkbox {
8483
8502
  const mode = getIonMode$1(this);
8484
8503
  const path = getSVGPath(mode, indeterminate);
8485
8504
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8486
- return (hAsync(Host, { key: 'd7a07fbf130413eaa4622c07786e8a00723113eb', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8505
+ return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8487
8506
  [mode]: true,
8488
8507
  'in-item': hostContext('ion-item', el),
8489
8508
  'checkbox-checked': checked,
@@ -8493,10 +8512,10 @@ class Checkbox {
8493
8512
  [`checkbox-justify-${justify}`]: justify !== undefined,
8494
8513
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8495
8514
  [`checkbox-label-placement-${labelPlacement}`]: true,
8496
- }), 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: {
8515
+ }), 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: {
8497
8516
  'label-text-wrapper': true,
8498
8517
  'label-text-wrapper-hidden': el.textContent === '',
8499
- }, 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)))));
8518
+ }, 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)))));
8500
8519
  }
8501
8520
  getSVGPath(mode, indeterminate) {
8502
8521
  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" }));
@@ -8522,7 +8541,8 @@ class Checkbox {
8522
8541
  "value": [8],
8523
8542
  "labelPlacement": [1, "label-placement"],
8524
8543
  "justify": [1],
8525
- "alignment": [1]
8544
+ "alignment": [1],
8545
+ "setFocus": [64]
8526
8546
  },
8527
8547
  "$listeners$": undefined,
8528
8548
  "$lazyBundleId$": "-",
@@ -8549,12 +8569,12 @@ class Chip {
8549
8569
  }
8550
8570
  render() {
8551
8571
  const mode = getIonMode$1(this);
8552
- return (hAsync(Host, { key: '7dd923c1b28d1eb1efa348f66f49cec067645af9', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8572
+ return (hAsync(Host, { key: 'fa2e9a4837ef87a17ef10f388e8caa7f604d9145', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8553
8573
  [mode]: true,
8554
8574
  'chip-outline': this.outline,
8555
8575
  'chip-disabled': this.disabled,
8556
8576
  'ion-activatable': true,
8557
- }) }, hAsync("slot", { key: '7ede838bf109dc27a898ee2dcdeabc3f439c8e6f' }), mode === 'md' && hAsync("ion-ripple-effect", { key: '5acb073029544e73fcc0db4cc4e661ec1df4d231' })));
8577
+ }) }, hAsync("slot", { key: '3793fbd9d915cef7241fb101e2bc64c08b9ba482' }), mode === 'md' && hAsync("ion-ripple-effect", { key: 'd3b95b53918611dec095a50f2aaaab65617947a4' })));
8558
8578
  }
8559
8579
  static get style() { return {
8560
8580
  ios: IonChipIosStyle0,
@@ -8705,9 +8725,9 @@ class Col {
8705
8725
  render() {
8706
8726
  const isRTL = document.dir === 'rtl';
8707
8727
  const mode = getIonMode$1(this);
8708
- return (hAsync(Host, { key: 'c37fa4c4c993385ccbb6f4e89b2f390b140507a0', class: {
8728
+ return (hAsync(Host, { key: '32ed75d81dd09d9bc8999f6d42e5b3cb99c84d91', class: {
8709
8729
  [mode]: true,
8710
- }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '6a5296ff0b9dee6600c2dafe7363a065d053bac2' })));
8730
+ }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '38f8d0440c20cc6d1b1d6a654d07f16de61d8134' })));
8711
8731
  }
8712
8732
  static get style() { return IonColStyle0; }
8713
8733
  static get cmpMeta() { return {
@@ -9081,7 +9101,7 @@ class Content {
9081
9101
  const forceOverscroll = this.shouldForceOverscroll();
9082
9102
  const transitionShadow = mode === 'ios';
9083
9103
  this.resize();
9084
- return (hAsync(Host, Object.assign({ key: '92a7cbc2e9c812930f4231bd846411933a5dded6', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9104
+ return (hAsync(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9085
9105
  [mode]: true,
9086
9106
  'content-sizing': hostContext('ion-popover', this.el),
9087
9107
  overscroll: forceOverscroll,
@@ -9089,12 +9109,12 @@ class Content {
9089
9109
  }), style: {
9090
9110
  '--offset-top': `${this.cTop}px`,
9091
9111
  '--offset-bottom': `${this.cBottom}px`,
9092
- } }, 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: {
9112
+ } }, 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: {
9093
9113
  'inner-scroll': true,
9094
9114
  'scroll-x': scrollX,
9095
9115
  'scroll-y': scrollY,
9096
9116
  overscroll: (scrollX || scrollY) && forceOverscroll,
9097
- }, 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));
9117
+ }, 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));
9098
9118
  }
9099
9119
  get el() { return getElement(this); }
9100
9120
  static get style() { return IonContentStyle0; }
@@ -12615,7 +12635,7 @@ class Datetime {
12615
12635
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
12616
12636
  const hasWheelVariant = hasDatePresentation && preferWheel;
12617
12637
  renderHiddenInput(true, el, name, formatValue(value), disabled);
12618
- return (hAsync(Host, { key: '2933ce5caaeb21a633b1ec4d936e86b0f0890807', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12638
+ return (hAsync(Host, { key: '7afbb1a7e6c78389b4588999779e5c90e010e85d', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12619
12639
  [mode]: true,
12620
12640
  ['datetime-readonly']: readonly,
12621
12641
  ['datetime-disabled']: disabled,
@@ -12625,7 +12645,7 @@ class Datetime {
12625
12645
  [`datetime-size-${size}`]: true,
12626
12646
  [`datetime-prefer-wheel`]: hasWheelVariant,
12627
12647
  [`datetime-grid`]: isGridStyle,
12628
- })) }, hAsync("div", { key: '0efc9ef0aa1a29234412b2eddf5d7ff899b7543f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12648
+ })) }, hAsync("div", { key: '297c458d4d17154cb297e2ef5926505bcb2d1fce', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12629
12649
  }
12630
12650
  get el() { return getElement(this); }
12631
12651
  static get watchers() { return {
@@ -13033,11 +13053,11 @@ class DatetimeButton {
13033
13053
  render() {
13034
13054
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
13035
13055
  const mode = getIonMode$1(this);
13036
- return (hAsync(Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: createColorClasses$1(color, {
13056
+ return (hAsync(Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: createColorClasses$1(color, {
13037
13057
  [mode]: true,
13038
13058
  [`${selectedButton}-active`]: datetimeActive,
13039
13059
  ['datetime-button-disabled']: disabled,
13040
- }) }, 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' })))));
13060
+ }) }, 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' })))));
13041
13061
  }
13042
13062
  get el() { return getElement(this); }
13043
13063
  static get style() { return {
@@ -13111,12 +13131,12 @@ class Fab {
13111
13131
  render() {
13112
13132
  const { horizontal, vertical, edge } = this;
13113
13133
  const mode = getIonMode$1(this);
13114
- return (hAsync(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
13134
+ return (hAsync(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
13115
13135
  [mode]: true,
13116
13136
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
13117
13137
  [`fab-vertical-${vertical}`]: vertical !== undefined,
13118
13138
  'fab-edge': edge,
13119
- } }, hAsync("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
13139
+ } }, hAsync("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
13120
13140
  }
13121
13141
  get el() { return getElement(this); }
13122
13142
  static get watchers() { return {
@@ -13206,7 +13226,7 @@ class FabButton {
13206
13226
  rel: this.rel,
13207
13227
  target: this.target,
13208
13228
  };
13209
- return (hAsync(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13229
+ return (hAsync(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13210
13230
  [mode]: true,
13211
13231
  'fab-button-in-list': inList,
13212
13232
  'fab-button-translucent-in-list': inList && translucent,
@@ -13217,7 +13237,7 @@ class FabButton {
13217
13237
  'ion-activatable': true,
13218
13238
  'ion-focusable': true,
13219
13239
  [`fab-button-${size}`]: size !== undefined,
13220
- }) }, 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' }))));
13240
+ }) }, 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' }))));
13221
13241
  }
13222
13242
  get el() { return getElement(this); }
13223
13243
  static get style() { return {
@@ -13268,11 +13288,11 @@ class FabList {
13268
13288
  }
13269
13289
  render() {
13270
13290
  const mode = getIonMode$1(this);
13271
- return (hAsync(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
13291
+ return (hAsync(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
13272
13292
  [mode]: true,
13273
13293
  'fab-list-active': this.activated,
13274
13294
  [`fab-list-side-${this.side}`]: true,
13275
- } }, hAsync("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
13295
+ } }, hAsync("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
13276
13296
  }
13277
13297
  get el() { return getElement(this); }
13278
13298
  static get watchers() { return {
@@ -13724,7 +13744,7 @@ class Footer {
13724
13744
  const mode = getIonMode$1(this);
13725
13745
  const tabs = this.el.closest('ion-tabs');
13726
13746
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
13727
- return (hAsync(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
13747
+ return (hAsync(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
13728
13748
  [mode]: true,
13729
13749
  // Used internally for styling
13730
13750
  [`footer-${mode}`]: true,
@@ -13732,7 +13752,7 @@ class Footer {
13732
13752
  [`footer-translucent-${mode}`]: translucent,
13733
13753
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
13734
13754
  [`footer-collapse-${collapse}`]: collapse !== undefined,
13735
- } }, mode === 'ios' && translucent && hAsync("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), hAsync("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
13755
+ } }, mode === 'ios' && translucent && hAsync("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), hAsync("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
13736
13756
  }
13737
13757
  get el() { return getElement(this); }
13738
13758
  static get style() { return {
@@ -13763,10 +13783,10 @@ class Grid {
13763
13783
  }
13764
13784
  render() {
13765
13785
  const mode = getIonMode$1(this);
13766
- return (hAsync(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
13786
+ return (hAsync(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
13767
13787
  [mode]: true,
13768
13788
  'grid-fixed': this.fixed,
13769
- } }, hAsync("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
13789
+ } }, hAsync("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
13770
13790
  }
13771
13791
  static get style() { return IonGridStyle0; }
13772
13792
  static get cmpMeta() { return {
@@ -13905,13 +13925,32 @@ mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
13905
13925
  };
13906
13926
  const setHeaderActive = (headerIndex, active = true) => {
13907
13927
  const headerEl = headerIndex.el;
13928
+ const toolbars = headerIndex.toolbars;
13929
+ const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl);
13908
13930
  if (active) {
13909
13931
  headerEl.classList.remove('header-collapse-condense-inactive');
13910
- headerEl.removeAttribute('aria-hidden');
13932
+ ionTitles.forEach((ionTitle) => {
13933
+ if (ionTitle) {
13934
+ ionTitle.removeAttribute('aria-hidden');
13935
+ }
13936
+ });
13911
13937
  }
13912
13938
  else {
13913
13939
  headerEl.classList.add('header-collapse-condense-inactive');
13914
- headerEl.setAttribute('aria-hidden', 'true');
13940
+ /**
13941
+ * The small title should only be accessed by screen readers
13942
+ * when the large title collapses into the small title due
13943
+ * to scrolling.
13944
+ *
13945
+ * Originally, the header was given `aria-hidden="true"`
13946
+ * but this caused issues with screen readers not being
13947
+ * able to access any focusable elements within the header.
13948
+ */
13949
+ ionTitles.forEach((ionTitle) => {
13950
+ if (ionTitle) {
13951
+ ionTitle.setAttribute('aria-hidden', 'true');
13952
+ }
13953
+ });
13915
13954
  }
13916
13955
  };
13917
13956
  const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
@@ -14097,14 +14136,14 @@ class Header {
14097
14136
  const collapse = this.collapse || 'none';
14098
14137
  // banner role must be at top level, so remove role if inside a menu
14099
14138
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
14100
- return (hAsync(Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
14139
+ return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
14101
14140
  [mode]: true,
14102
14141
  // Used internally for styling
14103
14142
  [`header-${mode}`]: true,
14104
14143
  [`header-translucent`]: this.translucent,
14105
14144
  [`header-collapse-${collapse}`]: true,
14106
14145
  [`header-translucent-${mode}`]: this.translucent,
14107
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), hAsync("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
14146
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
14108
14147
  }
14109
14148
  get el() { return getElement(this); }
14110
14149
  static get style() { return {
@@ -14383,7 +14422,7 @@ class Img {
14383
14422
  render() {
14384
14423
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
14385
14424
  const { draggable } = inheritedAttributes;
14386
- 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) })));
14425
+ 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) })));
14387
14426
  }
14388
14427
  get el() { return getElement(this); }
14389
14428
  static get watchers() { return {
@@ -14590,7 +14629,7 @@ class InfiniteScroll {
14590
14629
  render() {
14591
14630
  const mode = getIonMode$1(this);
14592
14631
  const disabled = this.disabled;
14593
- return (hAsync(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
14632
+ return (hAsync(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
14594
14633
  [mode]: true,
14595
14634
  'infinite-scroll-loading': this.isLoading,
14596
14635
  'infinite-scroll-enabled': !disabled,
@@ -14646,11 +14685,11 @@ class InfiniteScrollContent {
14646
14685
  }
14647
14686
  render() {
14648
14687
  const mode = getIonMode$1(this);
14649
- return (hAsync(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
14688
+ return (hAsync(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
14650
14689
  [mode]: true,
14651
14690
  // Used internally for styling
14652
14691
  [`infinite-scroll-content-${mode}`]: true,
14653
- } }, 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())));
14692
+ } }, 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())));
14654
14693
  }
14655
14694
  static get style() { return {
14656
14695
  ios: IonInfiniteScrollContentIosStyle0,
@@ -15397,7 +15436,7 @@ class Input {
15397
15436
  * TODO(FW-5592): Remove hasStartEndSlots condition
15398
15437
  */
15399
15438
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
15400
- return (hAsync(Host, { key: 'cdde9963d71685e6a4f3f3b3bc52e75d022435cb', class: createColorClasses$1(this.color, {
15439
+ return (hAsync(Host, { key: '54b5662d9a7f011a85e4119650c92b9af275bf96', class: createColorClasses$1(this.color, {
15401
15440
  [mode]: true,
15402
15441
  'has-value': hasValue,
15403
15442
  'has-focus': hasFocus,
@@ -15408,7 +15447,7 @@ class Input {
15408
15447
  'in-item': inItem,
15409
15448
  'in-item-color': hostContext('ion-item.ion-color', this.el),
15410
15449
  'input-disabled': disabled,
15411
- }) }, 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) => {
15450
+ }) }, 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) => {
15412
15451
  /**
15413
15452
  * This prevents mobile browsers from
15414
15453
  * blurring the input when the clear
@@ -15423,7 +15462,7 @@ class Input {
15423
15462
  * for screen readers as it means users would be unable to swipe past the clear button.
15424
15463
  */
15425
15464
  ev.stopPropagation();
15426
- }, 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()));
15465
+ }, 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()));
15427
15466
  }
15428
15467
  get el() { return getElement(this); }
15429
15468
  static get watchers() { return {
@@ -15545,16 +15584,16 @@ class InputPasswordToggle {
15545
15584
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
15546
15585
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
15547
15586
  const isPasswordVisible = type === 'text';
15548
- return (hAsync(Host, { key: 'ed1c29726ce0c91548f0e2ada61e3f8b5c813d2d', class: createColorClasses$1(color, {
15587
+ return (hAsync(Host, { key: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses$1(color, {
15549
15588
  [mode]: true,
15550
- }) }, 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) => {
15589
+ }) }, 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) => {
15551
15590
  /**
15552
15591
  * This prevents mobile browsers from
15553
15592
  * blurring the input when the password toggle
15554
15593
  * button is activated.
15555
15594
  */
15556
15595
  ev.preventDefault();
15557
- }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '1f2119c30b56c800d9af44e6499445a0ebb466cf', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15596
+ }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '9c88de8f4631d9bde222ce2edf6950d639e04773', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15558
15597
  }
15559
15598
  get el() { return getElement(this); }
15560
15599
  static get watchers() { return {
@@ -15850,11 +15889,11 @@ class ItemDivider {
15850
15889
  }
15851
15890
  render() {
15852
15891
  const mode = getIonMode$1(this);
15853
- return (hAsync(Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: createColorClasses$1(this.color, {
15892
+ return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15854
15893
  [mode]: true,
15855
15894
  'item-divider-sticky': this.sticky,
15856
15895
  item: true,
15857
- }) }, 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" }))));
15896
+ }) }, 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" }))));
15858
15897
  }
15859
15898
  get el() { return getElement(this); }
15860
15899
  static get style() { return {
@@ -15886,7 +15925,7 @@ class ItemGroup {
15886
15925
  }
15887
15926
  render() {
15888
15927
  const mode = getIonMode$1(this);
15889
- return (hAsync(Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
15928
+ return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15890
15929
  [mode]: true,
15891
15930
  // Used internally for styling
15892
15931
  [`item-group-${mode}`]: true,
@@ -15954,12 +15993,12 @@ class ItemOption {
15954
15993
  href: this.href,
15955
15994
  target: this.target,
15956
15995
  };
15957
- return (hAsync(Host, { key: '1900e015f593fefd710478a2088e052399c957eb', onClick: this.onClick, class: createColorClasses$1(this.color, {
15996
+ return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
15958
15997
  [mode]: true,
15959
15998
  'item-option-disabled': disabled,
15960
15999
  'item-option-expandable': expandable,
15961
16000
  'ion-activatable': true,
15962
- }) }, 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' }))));
16001
+ }) }, 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' }))));
15963
16002
  }
15964
16003
  get el() { return getElement(this); }
15965
16004
  static get style() { return {
@@ -16006,7 +16045,7 @@ class ItemOptions {
16006
16045
  render() {
16007
16046
  const mode = getIonMode$1(this);
16008
16047
  const isEnd = isEndSide(this.side);
16009
- return (hAsync(Host, { key: 'e28cd6a236323b5cc203c9b96782aa81024da924', class: {
16048
+ return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16010
16049
  [mode]: true,
16011
16050
  // Used internally for styling
16012
16051
  [`item-options-${mode}`]: true,
@@ -16354,6 +16393,8 @@ class ItemSliding {
16354
16393
  optsWidth = -this.optsWidthLeftSide;
16355
16394
  openAmount = optsWidth + (openAmount - optsWidth) * ELASTIC_FACTOR;
16356
16395
  }
16396
+ if (openAmount === 0)
16397
+ return;
16357
16398
  this.setOpenAmount(openAmount, false);
16358
16399
  }
16359
16400
  onEnd(gesture) {
@@ -16468,7 +16509,7 @@ class ItemSliding {
16468
16509
  }
16469
16510
  render() {
16470
16511
  const mode = getIonMode$1(this);
16471
- return (hAsync(Host, { key: '99f87c8bd794ae69830b407ba55013ac44793c26', class: {
16512
+ return (hAsync(Host, { key: 'a5216b11d92a1e1afed09d139212e0df81fdab79', class: {
16472
16513
  [mode]: true,
16473
16514
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16474
16515
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16577,13 +16618,13 @@ class Label {
16577
16618
  render() {
16578
16619
  const position = this.position;
16579
16620
  const mode = getIonMode$1(this);
16580
- return (hAsync(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses$1(this.color, {
16621
+ return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16581
16622
  [mode]: true,
16582
16623
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16583
16624
  [`label-${position}`]: position !== undefined,
16584
16625
  [`label-no-animate`]: this.noAnimate,
16585
16626
  'label-rtl': document.dir === 'rtl',
16586
- }) }, hAsync("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
16627
+ }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16587
16628
  }
16588
16629
  get el() { return getElement(this); }
16589
16630
  static get watchers() { return {
@@ -16639,7 +16680,7 @@ class List {
16639
16680
  render() {
16640
16681
  const mode = getIonMode$1(this);
16641
16682
  const { lines, inset } = this;
16642
- return (hAsync(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
16683
+ return (hAsync(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
16643
16684
  [mode]: true,
16644
16685
  // Used internally for styling
16645
16686
  [`list-${mode}`]: true,
@@ -16685,10 +16726,10 @@ class ListHeader {
16685
16726
  render() {
16686
16727
  const { lines } = this;
16687
16728
  const mode = getIonMode$1(this);
16688
- return (hAsync(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses$1(this.color, {
16729
+ return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16689
16730
  [mode]: true,
16690
16731
  [`list-header-lines-${lines}`]: lines !== undefined,
16691
- }) }, hAsync("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, hAsync("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
16732
+ }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16692
16733
  }
16693
16734
  static get style() { return {
16694
16735
  ios: IonListHeaderIosStyle0,
@@ -16957,9 +16998,9 @@ class Loading {
16957
16998
  * Otherwise, don't set aria-labelledby.
16958
16999
  */
16959
17000
  const ariaLabelledBy = message !== undefined ? msgId : null;
16960
- return (hAsync(Host, Object.assign({ key: 'fb3d2cd7cd0539ed6540d8be50e243c7916b3ca2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17001
+ return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16961
17002
  zIndex: `${40000 + this.overlayIndex}`,
16962
- }, 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" })));
17003
+ }, 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" })));
16963
17004
  }
16964
17005
  get el() { return getElement(this); }
16965
17006
  static get watchers() { return {
@@ -17311,7 +17352,7 @@ const createMenuController = () => {
17311
17352
  menus.splice(index, 1);
17312
17353
  }
17313
17354
  };
17314
- const _setOpen = async (menu, shouldOpen, animated) => {
17355
+ const _setOpen = async (menu, shouldOpen, animated, role) => {
17315
17356
  if (isAnimatingSync()) {
17316
17357
  return false;
17317
17358
  }
@@ -17321,7 +17362,7 @@ const createMenuController = () => {
17321
17362
  await openedMenu.setOpen(false, false);
17322
17363
  }
17323
17364
  }
17324
- return menu._setOpen(shouldOpen, animated);
17365
+ return menu._setOpen(shouldOpen, animated, role);
17325
17366
  };
17326
17367
  const _createAnimation = (type, menuCmp) => {
17327
17368
  const animationBuilder = menuAnimations.get(type); // TODO(FW-2832): type
@@ -17555,13 +17596,13 @@ class Menu {
17555
17596
  if (shouldClose) {
17556
17597
  ev.preventDefault();
17557
17598
  ev.stopPropagation();
17558
- this.close();
17599
+ this.close(undefined, BACKDROP);
17559
17600
  }
17560
17601
  }
17561
17602
  }
17562
17603
  onKeydown(ev) {
17563
17604
  if (ev.key === 'Escape') {
17564
- this.close();
17605
+ this.close(undefined, BACKDROP);
17565
17606
  }
17566
17607
  }
17567
17608
  /**
@@ -17590,8 +17631,8 @@ class Menu {
17590
17631
  * Closes the menu. If the menu is already closed or it can't be closed,
17591
17632
  * it returns `false`.
17592
17633
  */
17593
- close(animated = true) {
17594
- return this.setOpen(false, animated);
17634
+ close(animated = true, role) {
17635
+ return this.setOpen(false, animated, role);
17595
17636
  }
17596
17637
  /**
17597
17638
  * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.
@@ -17604,8 +17645,8 @@ class Menu {
17604
17645
  * Opens or closes the button.
17605
17646
  * If the operation can't be completed successfully, it returns `false`.
17606
17647
  */
17607
- setOpen(shouldOpen, animated = true) {
17608
- return menuController._setOpen(this, shouldOpen, animated);
17648
+ setOpen(shouldOpen, animated = true, role) {
17649
+ return menuController._setOpen(this, shouldOpen, animated, role);
17609
17650
  }
17610
17651
  trapKeyboardFocus(ev, doc) {
17611
17652
  const target = ev.target;
@@ -17643,12 +17684,12 @@ class Menu {
17643
17684
  }
17644
17685
  }
17645
17686
  }
17646
- async _setOpen(shouldOpen, animated = true) {
17687
+ async _setOpen(shouldOpen, animated = true, role) {
17647
17688
  // If the menu is disabled or it is currently being animated, let's do nothing
17648
17689
  if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {
17649
17690
  return false;
17650
17691
  }
17651
- this.beforeAnimation(shouldOpen);
17692
+ this.beforeAnimation(shouldOpen, role);
17652
17693
  await this.loadAnimation();
17653
17694
  await this.startAnimation(shouldOpen, animated);
17654
17695
  /**
@@ -17660,7 +17701,7 @@ class Menu {
17660
17701
  this.operationCancelled = false;
17661
17702
  return false;
17662
17703
  }
17663
- this.afterAnimation(shouldOpen);
17704
+ this.afterAnimation(shouldOpen, role);
17664
17705
  return true;
17665
17706
  }
17666
17707
  async loadAnimation() {
@@ -17735,7 +17776,7 @@ class Menu {
17735
17776
  return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);
17736
17777
  }
17737
17778
  onWillStart() {
17738
- this.beforeAnimation(!this._isOpen);
17779
+ this.beforeAnimation(!this._isOpen, GESTURE);
17739
17780
  return this.loadAnimation();
17740
17781
  }
17741
17782
  onStart() {
@@ -17802,11 +17843,27 @@ class Menu {
17802
17843
  const playTo = this._isOpen ? !shouldComplete : shouldComplete;
17803
17844
  this.animation
17804
17845
  .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')
17805
- .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })
17846
+ .onFinish(() => this.afterAnimation(shouldOpen, GESTURE), { oneTimeCallback: true })
17806
17847
  .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);
17807
17848
  }
17808
- beforeAnimation(shouldOpen) {
17849
+ beforeAnimation(shouldOpen, role) {
17809
17850
  assert(!this.isAnimating, '_before() should not be called while animating');
17851
+ /**
17852
+ * When the menu is presented on an Android device, TalkBack's focus rings
17853
+ * may appear in the wrong position due to the transition (specifically
17854
+ * `transform` styles). This occurs because the focus rings are initially
17855
+ * displayed at the starting position of the elements before the transition
17856
+ * begins. This workaround ensures the focus rings do not appear in the
17857
+ * incorrect location.
17858
+ *
17859
+ * If this solution is applied to iOS devices, then it leads to a bug where
17860
+ * the overlays cannot be accessed by screen readers. This is due to
17861
+ * VoiceOver not being able to update the accessibility tree when the
17862
+ * `aria-hidden` is removed.
17863
+ */
17864
+ if (isPlatform('android')) {
17865
+ this.el.setAttribute('aria-hidden', 'true');
17866
+ }
17810
17867
  // this places the menu into the correct location before it animates in
17811
17868
  // this css class doesn't actually kick off any animations
17812
17869
  this.el.classList.add(SHOW_MENU);
@@ -17844,10 +17901,10 @@ class Menu {
17844
17901
  this.ionWillOpen.emit();
17845
17902
  }
17846
17903
  else {
17847
- this.ionWillClose.emit();
17904
+ this.ionWillClose.emit({ role });
17848
17905
  }
17849
17906
  }
17850
- afterAnimation(isOpen) {
17907
+ afterAnimation(isOpen, role) {
17851
17908
  var _a;
17852
17909
  // keep opening/closing the menu disabled for a touch more yet
17853
17910
  // only add listeners/css if it's enabled and isOpen
@@ -17859,6 +17916,16 @@ class Menu {
17859
17916
  this.blocker.unblock();
17860
17917
  }
17861
17918
  if (isOpen) {
17919
+ /**
17920
+ * When the menu is presented on an Android device, TalkBack's focus rings
17921
+ * may appear in the wrong position due to the transition (specifically
17922
+ * `transform` styles). The menu is hidden from screen readers during the
17923
+ * transition to prevent this. Once the transition is complete, the menu
17924
+ * is shown again.
17925
+ */
17926
+ if (isPlatform('android')) {
17927
+ this.el.removeAttribute('aria-hidden');
17928
+ }
17862
17929
  // emit open event
17863
17930
  this.ionDidOpen.emit();
17864
17931
  /**
@@ -17874,6 +17941,7 @@ class Menu {
17874
17941
  document.addEventListener('focus', this.handleFocus, true);
17875
17942
  }
17876
17943
  else {
17944
+ this.el.removeAttribute('aria-hidden');
17877
17945
  // remove css classes and unhide content from screen readers
17878
17946
  this.el.classList.remove(SHOW_MENU);
17879
17947
  /**
@@ -17897,7 +17965,7 @@ class Menu {
17897
17965
  this.animation.stop();
17898
17966
  }
17899
17967
  // emit close event
17900
- this.ionDidClose.emit();
17968
+ this.ionDidClose.emit({ role });
17901
17969
  // undo focus trapping so multiple menus don't collide
17902
17970
  document.removeEventListener('focus', this.handleFocus, true);
17903
17971
  }
@@ -17929,7 +17997,7 @@ class Menu {
17929
17997
  * If the menu is disabled then we should
17930
17998
  * forcibly close the menu even if it is open.
17931
17999
  */
17932
- this.afterAnimation(false);
18000
+ this.afterAnimation(false, GESTURE);
17933
18001
  }
17934
18002
  }
17935
18003
  render() {
@@ -17940,14 +18008,14 @@ class Menu {
17940
18008
  * the ionBackButton listener in the menu controller
17941
18009
  * will handle closing the menu when Escape is pressed.
17942
18010
  */
17943
- return (hAsync(Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18011
+ return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17944
18012
  [mode]: true,
17945
18013
  [`menu-type-${type}`]: true,
17946
18014
  'menu-enabled': !disabled,
17947
18015
  [`menu-side-${side}`]: true,
17948
18016
  'menu-pane-visible': isPaneVisible,
17949
18017
  'split-pane-side': hostContext('ion-split-pane', el),
17950
- } }, 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" })));
18018
+ } }, 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" })));
17951
18019
  }
17952
18020
  get el() { return getElement(this); }
17953
18021
  static get watchers() { return {
@@ -18050,7 +18118,7 @@ class MenuButton {
18050
18118
  type: this.type,
18051
18119
  };
18052
18120
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18053
- return (hAsync(Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18121
+ return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18054
18122
  [mode]: true,
18055
18123
  button: true, // ion-buttons target .button
18056
18124
  'menu-button-hidden': hidden,
@@ -18059,7 +18127,7 @@ class MenuButton {
18059
18127
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18060
18128
  'ion-activatable': true,
18061
18129
  'ion-focusable': true,
18062
- }) }, 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" }))));
18130
+ }) }, 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" }))));
18063
18131
  }
18064
18132
  get el() { return getElement(this); }
18065
18133
  static get style() { return {
@@ -18108,10 +18176,10 @@ class MenuToggle {
18108
18176
  render() {
18109
18177
  const mode = getIonMode$1(this);
18110
18178
  const hidden = this.autoHide && !this.visible;
18111
- return (hAsync(Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18179
+ return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18112
18180
  [mode]: true,
18113
18181
  'menu-toggle-hidden': hidden,
18114
- } }, hAsync("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
18182
+ } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18115
18183
  }
18116
18184
  static get style() { return IonMenuToggleStyle0; }
18117
18185
  static get cmpMeta() { return {
@@ -20115,18 +20183,18 @@ class Modal {
20115
20183
  const mode = getIonMode$1(this);
20116
20184
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20117
20185
  const isHandleCycle = handleBehavior === 'cycle';
20118
- return (hAsync(Host, Object.assign({ key: '013ba4864ca4d2c1052c512f6a4b0732b8decff7', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20186
+ return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20119
20187
  zIndex: `${20000 + this.overlayIndex}`,
20120
- }, 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',
20188
+ }, 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',
20121
20189
  /*
20122
20190
  role and aria-modal must be used on the
20123
20191
  same element. They must also be set inside the
20124
20192
  shadow DOM otherwise ion-button will not be highlighted
20125
20193
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20126
20194
  */
20127
- 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",
20195
+ 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",
20128
20196
  // Prevents the handle from receiving keyboard focus when it does not cycle
20129
- 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' }))));
20197
+ 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' }))));
20130
20198
  }
20131
20199
  get el() { return getElement(this); }
20132
20200
  static get watchers() { return {
@@ -21075,7 +21143,7 @@ class Nav {
21075
21143
  }
21076
21144
  }
21077
21145
  render() {
21078
- return hAsync("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
21146
+ return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21079
21147
  }
21080
21148
  get el() { return getElement(this); }
21081
21149
  static get watchers() { return {
@@ -21148,7 +21216,7 @@ class NavLink {
21148
21216
  this.routerAnimation = undefined;
21149
21217
  }
21150
21218
  render() {
21151
- return hAsync(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
21219
+ return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21152
21220
  }
21153
21221
  get el() { return getElement(this); }
21154
21222
  static get cmpMeta() { return {
@@ -21182,9 +21250,9 @@ class Note {
21182
21250
  }
21183
21251
  render() {
21184
21252
  const mode = getIonMode$1(this);
21185
- return (hAsync(Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: createColorClasses$1(this.color, {
21253
+ return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21186
21254
  [mode]: true,
21187
- }) }, hAsync("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
21255
+ }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21188
21256
  }
21189
21257
  static get style() { return {
21190
21258
  ios: IonNoteIosStyle0,
@@ -21681,7 +21749,7 @@ class Picker$1 {
21681
21749
  this.emitInputModeChange();
21682
21750
  }
21683
21751
  render() {
21684
- 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) => {
21752
+ 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) => {
21685
21753
  var _a;
21686
21754
  /**
21687
21755
  * The "Enter" key represents
@@ -21696,7 +21764,7 @@ class Picker$1 {
21696
21764
  if (ev.key === 'Enter') {
21697
21765
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
21698
21766
  }
21699
- }, 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' })));
21767
+ }, 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' })));
21700
21768
  }
21701
21769
  get el() { return getElement(this); }
21702
21770
  static get style() { return {
@@ -21949,11 +22017,11 @@ class Picker {
21949
22017
  render() {
21950
22018
  const { htmlAttributes } = this;
21951
22019
  const mode = getIonMode$1(this);
21952
- return (hAsync(Host, Object.assign({ key: '3b163ca87354a3a4f302ff016d5affd0dc97bccc', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22020
+ return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21953
22021
  zIndex: `${20000 + this.overlayIndex}`,
21954
22022
  }, class: Object.assign({ [mode]: true,
21955
22023
  // Used internally for styling
21956
- [`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" })));
22024
+ [`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" })));
21957
22025
  }
21958
22026
  get el() { return getElement(this); }
21959
22027
  static get watchers() { return {
@@ -22535,12 +22603,12 @@ class PickerColumn {
22535
22603
  render() {
22536
22604
  const { color, disabled, isActive, numericInput } = this;
22537
22605
  const mode = getIonMode$1(this);
22538
- return (hAsync(Host, { key: 'd60736ce74c0e8c774a163272b78fbad32993ec2', class: createColorClasses$1(color, {
22606
+ return (hAsync(Host, { key: 'a221dc10f1eb7c41637a16d2c7167c16939822fd', class: createColorClasses$1(color, {
22539
22607
  [mode]: true,
22540
22608
  ['picker-column-active']: isActive,
22541
22609
  ['picker-column-numeric-input']: numericInput,
22542
22610
  ['picker-column-disabled']: disabled,
22543
- }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '74611112ef154b343ae29a773f8cd8a01cc1447d', name: "prefix" }), hAsync("div", { key: 'af772d2b61b7eb41a567593d290b80a50b7caa72', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22611
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '81b0656f606856f3dc0a657bf167d81a5011405e', name: "prefix" }), hAsync("div", { key: '71b9de67c04150255dd66592601c9d926db0c31c', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22544
22612
  this.scrollEl = el;
22545
22613
  },
22546
22614
  /**
@@ -22561,7 +22629,7 @@ class PickerColumn {
22561
22629
  * To prevent this, we set the tabIndex to -1. This
22562
22630
  * will match the behavior of the other browsers.
22563
22631
  */
22564
- 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" })));
22632
+ 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" })));
22565
22633
  }
22566
22634
  get el() { return getElement(this); }
22567
22635
  static get watchers() { return {
@@ -22928,9 +22996,9 @@ class PickerColumnCmp {
22928
22996
  render() {
22929
22997
  const col = this.col;
22930
22998
  const mode = getIonMode$1(this);
22931
- 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: {
22999
+ 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: {
22932
23000
  'max-width': this.col.columnWidth,
22933
- } }, 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))));
23001
+ } }, 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))));
22934
23002
  }
22935
23003
  get el() { return getElement(this); }
22936
23004
  static get watchers() { return {
@@ -23034,10 +23102,10 @@ class PickerColumnOption {
23034
23102
  render() {
23035
23103
  const { color, disabled, ariaLabel } = this;
23036
23104
  const mode = getIonMode$1(this);
23037
- return (hAsync(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses$1(color, {
23105
+ return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23038
23106
  [mode]: true,
23039
23107
  ['option-disabled']: disabled,
23040
- }) }, hAsync("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
23108
+ }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23041
23109
  }
23042
23110
  get el() { return getElement(this); }
23043
23111
  static get watchers() { return {
@@ -24351,9 +24419,9 @@ class Popover {
24351
24419
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24352
24420
  const desktop = isPlatform('desktop');
24353
24421
  const enableArrow = arrow && !parentPopover;
24354
- return (hAsync(Host, Object.assign({ key: '3a7c4c39384bab1447c4bd6b9b06d7837a09353b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24422
+ return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24355
24423
  zIndex: `${20000 + this.overlayIndex}`,
24356
- }, 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' })))));
24424
+ }, 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' })))));
24357
24425
  }
24358
24426
  get el() { return getElement(this); }
24359
24427
  static get watchers() { return {
@@ -24445,7 +24513,7 @@ class ProgressBar {
24445
24513
  const mode = getIonMode$1(this);
24446
24514
  // If the progress is displayed as a solid bar.
24447
24515
  const progressSolid = buffer === 1;
24448
- return (hAsync(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24516
+ return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24449
24517
  [mode]: true,
24450
24518
  [`progress-bar-${type}`]: true,
24451
24519
  'progress-paused': paused,
@@ -24578,8 +24646,10 @@ class Radio {
24578
24646
  }
24579
24647
  /** @internal */
24580
24648
  async setFocus(ev) {
24581
- ev.stopPropagation();
24582
- ev.preventDefault();
24649
+ if (ev !== undefined) {
24650
+ ev.stopPropagation();
24651
+ ev.preventDefault();
24652
+ }
24583
24653
  this.el.focus();
24584
24654
  }
24585
24655
  /** @internal */
@@ -24613,7 +24683,7 @@ class Radio {
24613
24683
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24614
24684
  const mode = getIonMode$1(this);
24615
24685
  const inItem = hostContext('ion-item', el);
24616
- return (hAsync(Host, { key: 'd6d9525eea9dadc3ea7060eb9b8cbb919e1d7091', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24686
+ return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24617
24687
  [mode]: true,
24618
24688
  'in-item': inItem,
24619
24689
  'radio-checked': checked,
@@ -24624,10 +24694,10 @@ class Radio {
24624
24694
  // Focus and active styling should not apply when the radio is in an item
24625
24695
  'ion-activatable': !inItem,
24626
24696
  'ion-focusable': !inItem,
24627
- }), 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: {
24697
+ }), 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: {
24628
24698
  'label-text-wrapper': true,
24629
24699
  'label-text-wrapper-hidden': !hasLabel,
24630
- }, part: "label" }, hAsync("slot", { key: '2950f1579a22d4a06f9c903fd462c2b46f43bfd7' })), hAsync("div", { key: '8b19ce30b39066744108a6de2da42a7ce8ffdbec', class: "native-wrapper" }, this.renderRadioControl()))));
24700
+ }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24631
24701
  }
24632
24702
  get el() { return getElement(this); }
24633
24703
  static get watchers() { return {
@@ -24759,7 +24829,9 @@ class RadioGroup {
24759
24829
  this.ionChange.emit({ value, event });
24760
24830
  }
24761
24831
  onKeydown(ev) {
24762
- const inSelectPopover = !!this.el.closest('ion-select-popover');
24832
+ // We don't want the value to automatically change/emit when the radio group is part of a select interface
24833
+ // as this will cause the interface to close when navigating through the radio group options
24834
+ const inSelectInterface = !!this.el.closest('ion-select-popover') || !!this.el.closest('ion-select-modal');
24763
24835
  if (ev.target && !this.el.contains(ev.target)) {
24764
24836
  return;
24765
24837
  }
@@ -24783,7 +24855,7 @@ class RadioGroup {
24783
24855
  }
24784
24856
  if (next && radios.includes(next)) {
24785
24857
  next.setFocus(ev);
24786
- if (!inSelectPopover) {
24858
+ if (!inSelectInterface) {
24787
24859
  this.value = next.value;
24788
24860
  this.emitValueChange(ev);
24789
24861
  }
@@ -24808,11 +24880,16 @@ class RadioGroup {
24808
24880
  }
24809
24881
  }
24810
24882
  }
24883
+ /** @internal */
24884
+ async setFocus() {
24885
+ const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24886
+ radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24887
+ }
24811
24888
  render() {
24812
24889
  const { label, labelId, el, name, value } = this;
24813
24890
  const mode = getIonMode$1(this);
24814
24891
  renderHiddenInput(true, el, name, value, false);
24815
- return hAsync(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24892
+ return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24816
24893
  }
24817
24894
  get el() { return getElement(this); }
24818
24895
  static get watchers() { return {
@@ -24825,7 +24902,8 @@ class RadioGroup {
24825
24902
  "allowEmptySelection": [4, "allow-empty-selection"],
24826
24903
  "compareWith": [1, "compare-with"],
24827
24904
  "name": [1],
24828
- "value": [1032]
24905
+ "value": [1032],
24906
+ "setFocus": [64]
24829
24907
  },
24830
24908
  "$listeners$": [[4, "keydown", "onKeydown"]],
24831
24909
  "$lazyBundleId$": "-",
@@ -25444,7 +25522,7 @@ class Range {
25444
25522
  const needsEndAdjustment = inItem && !hasEndContent;
25445
25523
  const mode = getIonMode$1(this);
25446
25524
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25447
- return (hAsync(Host, { key: '877c9f15e62fadb184f9da82dc19898227521e07', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25525
+ return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25448
25526
  [mode]: true,
25449
25527
  'in-item': inItem,
25450
25528
  'range-disabled': disabled,
@@ -25453,10 +25531,10 @@ class Range {
25453
25531
  [`range-label-placement-${labelPlacement}`]: true,
25454
25532
  'range-item-start-adjustment': needsStartAdjustment,
25455
25533
  'range-item-end-adjustment': needsEndAdjustment,
25456
- }) }, hAsync("label", { key: '2ae9088349a65e09b0e33c53442190ef563b2345', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'c3d0ca96ceb1e57fbd383e9c7e4da14d931771b8', class: {
25534
+ }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25457
25535
  'label-text-wrapper': true,
25458
25536
  'label-text-wrapper-hidden': !hasLabel,
25459
- }, 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" })))));
25537
+ }, 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" })))));
25460
25538
  }
25461
25539
  get el() { return getElement(this); }
25462
25540
  static get watchers() { return {
@@ -26357,7 +26435,7 @@ class Refresher {
26357
26435
  }
26358
26436
  render() {
26359
26437
  const mode = getIonMode$1(this);
26360
- return (hAsync(Host, { key: '3270f181a5141e7d886ec554a3e892974446b90e', slot: "fixed", class: {
26438
+ return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26361
26439
  [mode]: true,
26362
26440
  // Used internally for styling
26363
26441
  [`refresher-${mode}`]: true,
@@ -26585,7 +26663,7 @@ class RefresherContent {
26585
26663
  const pullingIcon = this.pullingIcon;
26586
26664
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26587
26665
  const mode = getIonMode$1(this);
26588
- 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())));
26666
+ 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())));
26589
26667
  }
26590
26668
  get el() { return getElement(this); }
26591
26669
  static get cmpMeta() { return {
@@ -26628,7 +26706,7 @@ class Reorder {
26628
26706
  render() {
26629
26707
  const mode = getIonMode$1(this);
26630
26708
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26631
- 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" }))));
26709
+ 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" }))));
26632
26710
  }
26633
26711
  get el() { return getElement(this); }
26634
26712
  static get style() { return {
@@ -26882,7 +26960,7 @@ class ReorderGroup {
26882
26960
  }
26883
26961
  render() {
26884
26962
  const mode = getIonMode$1(this);
26885
- return (hAsync(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
26963
+ return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
26886
26964
  [mode]: true,
26887
26965
  'reorder-enabled': !this.disabled,
26888
26966
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -26990,7 +27068,7 @@ class RippleEffect {
26990
27068
  }
26991
27069
  render() {
26992
27070
  const mode = getIonMode$1(this);
26993
- return (hAsync(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
27071
+ return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
26994
27072
  [mode]: true,
26995
27073
  unbounded: this.unbounded,
26996
27074
  } }));
@@ -27932,10 +28010,10 @@ class RouterLink {
27932
28010
  rel: this.rel,
27933
28011
  target: this.target,
27934
28012
  };
27935
- return (hAsync(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses$1(this.color, {
28013
+ return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
27936
28014
  [mode]: true,
27937
28015
  'ion-activatable': true,
27938
- }) }, hAsync("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), hAsync("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
28016
+ }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
27939
28017
  }
27940
28018
  static get style() { return IonRouterLinkStyle0; }
27941
28019
  static get cmpMeta() { return {
@@ -28131,7 +28209,7 @@ class RouterOutlet {
28131
28209
  return true;
28132
28210
  }
28133
28211
  render() {
28134
- return hAsync("slot", { key: 'dac9120f5ffa628b16c04e5fdd44ea8e560c97e6' });
28212
+ return hAsync("slot", { key: '44a7798b8574966f7fd699564b6006411a98a805' });
28135
28213
  }
28136
28214
  get el() { return getElement(this); }
28137
28215
  static get watchers() { return {
@@ -28165,7 +28243,7 @@ class Row {
28165
28243
  registerInstance(this, hostRef);
28166
28244
  }
28167
28245
  render() {
28168
- return (hAsync(Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: getIonMode$1(this) }, hAsync("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
28246
+ return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28169
28247
  }
28170
28248
  static get style() { return IonRowStyle0; }
28171
28249
  static get cmpMeta() { return {
@@ -28559,8 +28637,8 @@ class Searchbar {
28559
28637
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28560
28638
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28561
28639
  const shouldShowCancelButton = this.shouldShowCancelButton();
28562
- 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))));
28563
- return (hAsync(Host, { key: '34878db21f63a9bdffca0446d8ad5619ff04cac3', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28640
+ 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))));
28641
+ return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28564
28642
  [mode]: true,
28565
28643
  'searchbar-animated': animated,
28566
28644
  'searchbar-disabled': this.disabled,
@@ -28570,14 +28648,14 @@ class Searchbar {
28570
28648
  'searchbar-has-focus': this.focused,
28571
28649
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28572
28650
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28573
- }) }, 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) => {
28651
+ }) }, 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) => {
28574
28652
  /**
28575
28653
  * This prevents mobile browsers from
28576
28654
  * blurring the input when the clear
28577
28655
  * button is activated.
28578
28656
  */
28579
28657
  ev.preventDefault();
28580
- }, 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));
28658
+ }, 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));
28581
28659
  }
28582
28660
  get el() { return getElement(this); }
28583
28661
  static get watchers() { return {
@@ -28644,6 +28722,7 @@ class Segment {
28644
28722
  this.ionChange = createEvent(this, "ionChange", 7);
28645
28723
  this.ionSelect = createEvent(this, "ionSelect", 7);
28646
28724
  this.ionStyle = createEvent(this, "ionStyle", 7);
28725
+ this.segmentViewEl = null;
28647
28726
  this.onClick = (ev) => {
28648
28727
  const current = ev.target;
28649
28728
  const previous = this.checked;
@@ -28658,7 +28737,13 @@ class Segment {
28658
28737
  if (current !== previous) {
28659
28738
  this.emitValueChange();
28660
28739
  }
28661
- if (this.scrollable || !this.swipeGesture) {
28740
+ if (this.segmentViewEl) {
28741
+ this.updateSegmentView();
28742
+ if (this.scrollable && previous) {
28743
+ this.checkButton(previous, current);
28744
+ }
28745
+ }
28746
+ else if (this.scrollable || !this.swipeGesture) {
28662
28747
  if (previous) {
28663
28748
  this.checkButton(previous, current);
28664
28749
  }
@@ -28714,19 +28799,49 @@ class Segment {
28714
28799
  swipeGestureChanged() {
28715
28800
  this.gestureChanged();
28716
28801
  }
28717
- valueChanged(value) {
28802
+ valueChanged(value, oldValue) {
28803
+ // Force a value to exist if we're using a segment view
28804
+ if (this.segmentViewEl && value === undefined) {
28805
+ this.value = this.getButtons()[0].value;
28806
+ return;
28807
+ }
28808
+ if (oldValue !== undefined && value !== undefined) {
28809
+ const buttons = this.getButtons();
28810
+ const previous = buttons.find((button) => button.value === oldValue);
28811
+ const current = buttons.find((button) => button.value === value);
28812
+ if (previous && current) {
28813
+ if (!this.segmentViewEl) {
28814
+ this.checkButton(previous, current);
28815
+ }
28816
+ else if (this.triggerScrollOnValueChange !== false) {
28817
+ this.updateSegmentView();
28818
+ }
28819
+ }
28820
+ }
28821
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
28822
+ this.updateSegmentView();
28823
+ }
28718
28824
  /**
28719
28825
  * `ionSelect` is emitted every time the value changes (internal or external changes).
28720
28826
  * Used by `ion-segment-button` to determine if the button should be checked.
28721
28827
  */
28722
28828
  this.ionSelect.emit({ value });
28723
- this.scrollActiveButtonIntoView();
28829
+ // The scroll listener should handle scrolling the active button into view as needed
28830
+ if (!this.segmentViewEl) {
28831
+ this.scrollActiveButtonIntoView();
28832
+ }
28833
+ this.triggerScrollOnValueChange = undefined;
28724
28834
  }
28725
28835
  disabledChanged() {
28726
28836
  this.gestureChanged();
28727
- const buttons = this.getButtons();
28728
- for (const button of buttons) {
28729
- button.disabled = this.disabled;
28837
+ if (!this.segmentViewEl) {
28838
+ const buttons = this.getButtons();
28839
+ for (const button of buttons) {
28840
+ button.disabled = this.disabled;
28841
+ }
28842
+ }
28843
+ else {
28844
+ this.segmentViewEl.disabled = this.disabled;
28730
28845
  }
28731
28846
  }
28732
28847
  gestureChanged() {
@@ -28736,6 +28851,10 @@ class Segment {
28736
28851
  }
28737
28852
  connectedCallback() {
28738
28853
  this.emitStyle();
28854
+ this.segmentViewEl = this.getSegmentView();
28855
+ }
28856
+ disconnectedCallback() {
28857
+ this.segmentViewEl = null;
28739
28858
  }
28740
28859
  componentWillLoad() {
28741
28860
  this.emitStyle();
@@ -28769,6 +28888,9 @@ class Segment {
28769
28888
  if (this.disabled) {
28770
28889
  this.disabledChanged();
28771
28890
  }
28891
+ // Update segment view based on the initial value,
28892
+ // but do not animate the scroll
28893
+ this.updateSegmentView(false);
28772
28894
  }
28773
28895
  onStart(detail) {
28774
28896
  this.valueBeforeGesture = this.value;
@@ -28785,6 +28907,7 @@ class Segment {
28785
28907
  if (value !== undefined) {
28786
28908
  if (this.valueBeforeGesture !== value) {
28787
28909
  this.emitValueChange();
28910
+ this.updateSegmentView();
28788
28911
  }
28789
28912
  }
28790
28913
  this.valueBeforeGesture = undefined;
@@ -28812,12 +28935,7 @@ class Segment {
28812
28935
  setActivated(activated) {
28813
28936
  const buttons = this.getButtons();
28814
28937
  buttons.forEach((button) => {
28815
- if (activated) {
28816
- button.classList.add('segment-button-activated');
28817
- }
28818
- else {
28819
- button.classList.remove('segment-button-activated');
28820
- }
28938
+ button.classList.toggle('segment-button-activated', activated);
28821
28939
  });
28822
28940
  this.activated = activated;
28823
28941
  }
@@ -28868,6 +28986,7 @@ class Segment {
28868
28986
  currentIndicator.classList.add('segment-button-indicator-animated');
28869
28987
  // Remove the transform to slide the indicator back to the button clicked
28870
28988
  currentIndicator.style.setProperty('transform', '');
28989
+ this.scrollActiveButtonIntoView(true);
28871
28990
  });
28872
28991
  this.value = current.value;
28873
28992
  this.setCheckedClasses();
@@ -28883,6 +29002,60 @@ class Segment {
28883
29002
  buttons[next].classList.add('segment-button-after-checked');
28884
29003
  }
28885
29004
  }
29005
+ getSegmentView() {
29006
+ const buttons = this.getButtons();
29007
+ // Get the first button with a contentId
29008
+ const firstContentId = buttons.find((button) => button.contentId);
29009
+ // Get the segment content with an id matching the button's contentId
29010
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
29011
+ // Return the segment view for that matching segment content
29012
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
29013
+ }
29014
+ handleSegmentViewScroll(ev) {
29015
+ const { scrollRatio, isManualScroll } = ev.detail;
29016
+ if (!isManualScroll) {
29017
+ return;
29018
+ }
29019
+ const dispatchedFrom = ev.target;
29020
+ const segmentViewEl = this.segmentViewEl;
29021
+ const segmentEl = this.el;
29022
+ // Only update the indicator if the event was dispatched from the correct segment view
29023
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
29024
+ const buttons = this.getButtons();
29025
+ // If no buttons are found or there is no value set then do nothing
29026
+ if (!buttons.length)
29027
+ return;
29028
+ const index = buttons.findIndex((button) => button.value === this.value);
29029
+ const current = buttons[index];
29030
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
29031
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
29032
+ this.lastNextIndex = nextIndex;
29033
+ this.triggerScrollOnValueChange = false;
29034
+ this.checkButton(current, buttons[nextIndex]);
29035
+ this.emitValueChange();
29036
+ }
29037
+ }
29038
+ }
29039
+ /**
29040
+ * Finds the related segment view and sets its current content
29041
+ * based on the selected segment button. This method
29042
+ * should be called on initial load of the segment,
29043
+ * after the gesture is completed (if dragging between segments)
29044
+ * and when a segment button is clicked directly.
29045
+ */
29046
+ updateSegmentView(smoothScroll = true) {
29047
+ const buttons = this.getButtons();
29048
+ const button = buttons.find((btn) => btn.value === this.value);
29049
+ // If the button does not have a contentId then there is
29050
+ // no associated segment view to update
29051
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
29052
+ return;
29053
+ }
29054
+ const segmentView = this.segmentViewEl;
29055
+ if (segmentView) {
29056
+ segmentView.setContent(button.contentId, smoothScroll);
29057
+ }
29058
+ }
28886
29059
  scrollActiveButtonIntoView(smoothScroll = true) {
28887
29060
  const { scrollable, value, el } = this;
28888
29061
  if (scrollable) {
@@ -29065,14 +29238,14 @@ class Segment {
29065
29238
  }
29066
29239
  render() {
29067
29240
  const mode = getIonMode$1(this);
29068
- return (hAsync(Host, { key: 'f1f7103b4c298e037df850ac809a1a7c6e9987a7', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29241
+ return (hAsync(Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29069
29242
  [mode]: true,
29070
29243
  'in-toolbar': hostContext('ion-toolbar', this.el),
29071
29244
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29072
29245
  'segment-activated': this.activated,
29073
29246
  'segment-disabled': this.disabled,
29074
29247
  'segment-scrollable': this.scrollable,
29075
- }) }, hAsync("slot", { key: '6efdb318b13da8d21687084aa0761728fdf12579', onSlotchange: this.onSlottedItemsChange })));
29248
+ }) }, hAsync("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
29076
29249
  }
29077
29250
  get el() { return getElement(this); }
29078
29251
  static get watchers() { return {
@@ -29097,7 +29270,7 @@ class Segment {
29097
29270
  "selectOnFocus": [4, "select-on-focus"],
29098
29271
  "activated": [32]
29099
29272
  },
29100
- "$listeners$": [[0, "keydown", "onKeyDown"]],
29273
+ "$listeners$": [[16, "ionSegmentViewScroll", "handleSegmentViewScroll"], [0, "keydown", "onKeyDown"]],
29101
29274
  "$lazyBundleId$": "-",
29102
29275
  "$attrsToReflect$": [["color", "color"]]
29103
29276
  }; }
@@ -29134,6 +29307,7 @@ class SegmentButton {
29134
29307
  }
29135
29308
  };
29136
29309
  this.checked = false;
29310
+ this.contentId = undefined;
29137
29311
  this.disabled = false;
29138
29312
  this.layout = 'icon-top';
29139
29313
  this.type = 'button';
@@ -29149,6 +29323,26 @@ class SegmentButton {
29149
29323
  addEventListener$1(segmentEl, 'ionSelect', this.updateState);
29150
29324
  addEventListener$1(segmentEl, 'ionStyle', this.updateStyle);
29151
29325
  }
29326
+ // Return if there is no contentId defined
29327
+ if (!this.contentId)
29328
+ return;
29329
+ // Attempt to find the Segment Content by its contentId
29330
+ const segmentContent = document.getElementById(this.contentId);
29331
+ // If no associated Segment Content exists, log an error and return
29332
+ if (!segmentContent) {
29333
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29334
+ return;
29335
+ }
29336
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
29337
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
29338
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
29339
+ return;
29340
+ }
29341
+ // Prevent buttons from being disabled when associated with segment content
29342
+ if (this.disabled) {
29343
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
29344
+ this.disabled = false;
29345
+ }
29152
29346
  }
29153
29347
  disconnectedCallback() {
29154
29348
  const segmentEl = this.segmentEl;
@@ -29182,7 +29376,7 @@ class SegmentButton {
29182
29376
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29183
29377
  const mode = getIonMode$1(this);
29184
29378
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29185
- return (hAsync(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
29379
+ return (hAsync(Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
29186
29380
  [mode]: true,
29187
29381
  'in-toolbar': hostContext('ion-toolbar', this.el),
29188
29382
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29198,10 +29392,7 @@ class SegmentButton {
29198
29392
  'ion-activatable': true,
29199
29393
  'ion-activatable-instant': true,
29200
29394
  'ion-focusable': true,
29201
- } }, 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: {
29202
- 'segment-button-indicator': true,
29203
- 'segment-button-indicator-animated': true,
29204
- } }, hAsync("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
29395
+ } }, 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" }))));
29205
29396
  }
29206
29397
  get el() { return getElement(this); }
29207
29398
  static get watchers() { return {
@@ -29215,6 +29406,7 @@ class SegmentButton {
29215
29406
  "$flags$": 41,
29216
29407
  "$tagName$": "ion-segment-button",
29217
29408
  "$members$": {
29409
+ "contentId": [513, "content-id"],
29218
29410
  "disabled": [1028],
29219
29411
  "layout": [1],
29220
29412
  "type": [1],
@@ -29224,6 +29416,151 @@ class SegmentButton {
29224
29416
  },
29225
29417
  "$listeners$": undefined,
29226
29418
  "$lazyBundleId$": "-",
29419
+ "$attrsToReflect$": [["contentId", "content-id"]]
29420
+ }; }
29421
+ }
29422
+
29423
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
29424
+ var IonSegmentContentStyle0 = segmentContentCss;
29425
+
29426
+ class SegmentContent {
29427
+ constructor(hostRef) {
29428
+ registerInstance(this, hostRef);
29429
+ }
29430
+ render() {
29431
+ return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29432
+ }
29433
+ static get style() { return IonSegmentContentStyle0; }
29434
+ static get cmpMeta() { return {
29435
+ "$flags$": 9,
29436
+ "$tagName$": "ion-segment-content",
29437
+ "$members$": undefined,
29438
+ "$listeners$": undefined,
29439
+ "$lazyBundleId$": "-",
29440
+ "$attrsToReflect$": []
29441
+ }; }
29442
+ }
29443
+
29444
+ 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}";
29445
+ var IonSegmentViewIosStyle0 = segmentViewIosCss;
29446
+
29447
+ 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}";
29448
+ var IonSegmentViewMdStyle0 = segmentViewMdCss;
29449
+
29450
+ class SegmentView {
29451
+ constructor(hostRef) {
29452
+ registerInstance(this, hostRef);
29453
+ this.ionSegmentViewScroll = createEvent(this, "ionSegmentViewScroll", 7);
29454
+ this.scrollEndTimeout = null;
29455
+ this.isTouching = false;
29456
+ this.disabled = false;
29457
+ this.isManualScroll = undefined;
29458
+ }
29459
+ handleScroll(ev) {
29460
+ var _a;
29461
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
29462
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
29463
+ this.ionSegmentViewScroll.emit({
29464
+ scrollRatio,
29465
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
29466
+ });
29467
+ // Reset the timeout to check for scroll end
29468
+ this.resetScrollEndTimeout();
29469
+ }
29470
+ /**
29471
+ * Handle touch start event to know when the user is actively dragging the segment view.
29472
+ */
29473
+ handleScrollStart() {
29474
+ if (this.scrollEndTimeout) {
29475
+ clearTimeout(this.scrollEndTimeout);
29476
+ this.scrollEndTimeout = null;
29477
+ }
29478
+ this.isTouching = true;
29479
+ }
29480
+ /**
29481
+ * Handle touch end event to know when the user is no longer dragging the segment view.
29482
+ */
29483
+ handleTouchEnd() {
29484
+ this.isTouching = false;
29485
+ }
29486
+ /**
29487
+ * Reset the scroll end detection timer. This is called on every scroll event.
29488
+ */
29489
+ resetScrollEndTimeout() {
29490
+ if (this.scrollEndTimeout) {
29491
+ clearTimeout(this.scrollEndTimeout);
29492
+ this.scrollEndTimeout = null;
29493
+ }
29494
+ this.scrollEndTimeout = setTimeout(() => {
29495
+ this.checkForScrollEnd();
29496
+ },
29497
+ // Setting this to a lower value may result in inconsistencies in behavior
29498
+ // across browsers (particularly Firefox).
29499
+ // Ideally, all of this logic is removed once the scroll end event is
29500
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
29501
+ 100);
29502
+ }
29503
+ /**
29504
+ * Check if the scroll has ended and the user is not actively touching.
29505
+ * If the conditions are met (active content is enabled and no active touch),
29506
+ * reset the scroll position and emit the scroll end event.
29507
+ */
29508
+ checkForScrollEnd() {
29509
+ // Only emit scroll end event if the active content is not disabled and
29510
+ // the user is not touching the segment view
29511
+ if (!this.isTouching) {
29512
+ this.isManualScroll = undefined;
29513
+ }
29514
+ }
29515
+ /**
29516
+ * @internal
29517
+ *
29518
+ * This method is used to programmatically set the displayed segment content
29519
+ * in the segment view. Calling this method will update the `value` of the
29520
+ * corresponding segment button.
29521
+ *
29522
+ * @param id: The id of the segment content to display.
29523
+ * @param smoothScroll: Whether to animate the scroll transition.
29524
+ */
29525
+ async setContent(id, smoothScroll = true) {
29526
+ const contents = this.getSegmentContents();
29527
+ const index = contents.findIndex((content) => content.id === id);
29528
+ if (index === -1)
29529
+ return;
29530
+ this.isManualScroll = false;
29531
+ this.resetScrollEndTimeout();
29532
+ const contentWidth = this.el.offsetWidth;
29533
+ this.el.scrollTo({
29534
+ top: 0,
29535
+ left: index * contentWidth,
29536
+ behavior: smoothScroll ? 'smooth' : 'instant',
29537
+ });
29538
+ }
29539
+ getSegmentContents() {
29540
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
29541
+ }
29542
+ render() {
29543
+ const { disabled, isManualScroll } = this;
29544
+ return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29545
+ 'segment-view-disabled': disabled,
29546
+ 'segment-view-scroll-disabled': isManualScroll === false,
29547
+ } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29548
+ }
29549
+ get el() { return getElement(this); }
29550
+ static get style() { return {
29551
+ ios: IonSegmentViewIosStyle0,
29552
+ md: IonSegmentViewMdStyle0
29553
+ }; }
29554
+ static get cmpMeta() { return {
29555
+ "$flags$": 41,
29556
+ "$tagName$": "ion-segment-view",
29557
+ "$members$": {
29558
+ "disabled": [4],
29559
+ "isManualScroll": [32],
29560
+ "setContent": [64]
29561
+ },
29562
+ "$listeners$": [[1, "scroll", "handleScroll"], [1, "touchstart", "handleScrollStart"], [1, "touchend", "handleTouchEnd"]],
29563
+ "$lazyBundleId$": "-",
29227
29564
  "$attrsToReflect$": []
29228
29565
  }; }
29229
29566
  }
@@ -29384,13 +29721,12 @@ class Select {
29384
29721
  this.setFocus();
29385
29722
  });
29386
29723
  await overlay.present();
29387
- // focus selected option for popovers
29388
- if (this.interface === 'popover') {
29389
- const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
29724
+ // focus selected option for popovers and modals
29725
+ if (this.interface === 'popover' || this.interface === 'modal') {
29726
+ const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
29390
29727
  if (indexOfSelected > -1) {
29391
29728
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
29392
29729
  if (selectedItem) {
29393
- focusVisibleElement(selectedItem);
29394
29730
  /**
29395
29731
  * Browsers such as Firefox do not
29396
29732
  * correctly delegate focus when manually
@@ -29404,8 +29740,11 @@ class Select {
29404
29740
  */
29405
29741
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
29406
29742
  if (interactiveEl) {
29407
- interactiveEl.focus();
29743
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29744
+ // and removing `ion-focused` style
29745
+ interactiveEl.setFocus();
29408
29746
  }
29747
+ focusVisibleElement(selectedItem);
29409
29748
  }
29410
29749
  }
29411
29750
  else {
@@ -29414,11 +29753,14 @@ class Select {
29414
29753
  */
29415
29754
  const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
29416
29755
  if (firstEnabledOption) {
29417
- focusVisibleElement(firstEnabledOption.closest('ion-item'));
29418
29756
  /**
29419
29757
  * Focus the option for the same reason as we do above.
29758
+ *
29759
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29760
+ * and removing `ion-focused` style
29420
29761
  */
29421
- firstEnabledOption.focus();
29762
+ firstEnabledOption.setFocus();
29763
+ focusVisibleElement(firstEnabledOption.closest('ion-item'));
29422
29764
  }
29423
29765
  }
29424
29766
  }
@@ -29440,6 +29782,9 @@ class Select {
29440
29782
  if (selectInterface === 'popover') {
29441
29783
  return this.openPopover(ev);
29442
29784
  }
29785
+ if (selectInterface === 'modal') {
29786
+ return this.openModal();
29787
+ }
29443
29788
  return this.openAlert();
29444
29789
  }
29445
29790
  updateOverlayOptions() {
@@ -29456,7 +29801,13 @@ class Select {
29456
29801
  case 'popover':
29457
29802
  const popover = overlay.querySelector('ion-select-popover');
29458
29803
  if (popover) {
29459
- popover.options = this.createPopoverOptions(childOpts, value);
29804
+ popover.options = this.createOverlaySelectOptions(childOpts, value);
29805
+ }
29806
+ break;
29807
+ case 'modal':
29808
+ const modal = overlay.querySelector('ion-select-modal');
29809
+ if (modal) {
29810
+ modal.options = this.createOverlaySelectOptions(childOpts, value);
29460
29811
  }
29461
29812
  break;
29462
29813
  case 'alert':
@@ -29511,7 +29862,7 @@ class Select {
29511
29862
  });
29512
29863
  return alertInputs;
29513
29864
  }
29514
- createPopoverOptions(data, selectValue) {
29865
+ createOverlaySelectOptions(data, selectValue) {
29515
29866
  const popoverOptions = data.map((option) => {
29516
29867
  const value = getOptionValue(option);
29517
29868
  // Remove hydrated before copying over classes
@@ -29571,7 +29922,7 @@ class Select {
29571
29922
  message: interfaceOptions.message,
29572
29923
  multiple,
29573
29924
  value,
29574
- options: this.createPopoverOptions(this.childOpts, value),
29925
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29575
29926
  } });
29576
29927
  return popoverController.create(popoverOpts);
29577
29928
  }
@@ -29606,6 +29957,17 @@ class Select {
29606
29957
  ] });
29607
29958
  return alertController.create(alertOpts);
29608
29959
  }
29960
+ openModal() {
29961
+ const { multiple, value, interfaceOptions } = this;
29962
+ const mode = getIonMode$1(this);
29963
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
29964
+ header: interfaceOptions.header,
29965
+ multiple,
29966
+ value,
29967
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29968
+ } });
29969
+ return modalController.create(modalOpts);
29970
+ }
29609
29971
  /**
29610
29972
  * Close the select interface.
29611
29973
  */
@@ -29813,7 +30175,7 @@ class Select {
29813
30175
  * TODO(FW-5592): Remove hasStartEndSlots condition
29814
30176
  */
29815
30177
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
29816
- return (hAsync(Host, { key: '73c571c1f8468e1c3f4fe02fbbb33ba9cbc8e989', onClick: this.onClick, class: createColorClasses$1(this.color, {
30178
+ return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
29817
30179
  [mode]: true,
29818
30180
  'in-item': inItem,
29819
30181
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -29829,7 +30191,7 @@ class Select {
29829
30191
  [`select-justify-${justify}`]: justifyEnabled,
29830
30192
  [`select-shape-${shape}`]: shape !== undefined,
29831
30193
  [`select-label-placement-${labelPlacement}`]: true,
29832
- }) }, 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" }))));
30194
+ }) }, 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" }))));
29833
30195
  }
29834
30196
  get el() { return getElement(this); }
29835
30197
  static get watchers() { return {
@@ -29909,6 +30271,108 @@ const textForValue = (opts, value, compareWith) => {
29909
30271
  let selectIds = 0;
29910
30272
  const OPTION_CLASS = 'select-interface-option';
29911
30273
 
30274
+ 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)}";
30275
+ var IonSelectModalIonicStyle0 = ionicSelectModalMdCss;
30276
+
30277
+ const selectModalIosCss = ".sc-ion-select-modal-ios-h{height:100%}";
30278
+ var IonSelectModalIosStyle0 = selectModalIosCss;
30279
+
30280
+ 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)}";
30281
+ var IonSelectModalMdStyle0 = selectModalMdCss;
30282
+
30283
+ class SelectModal {
30284
+ constructor(hostRef) {
30285
+ registerInstance(this, hostRef);
30286
+ this.header = undefined;
30287
+ this.multiple = undefined;
30288
+ this.options = [];
30289
+ }
30290
+ closeModal() {
30291
+ const modal = this.el.closest('ion-modal');
30292
+ if (modal) {
30293
+ modal.dismiss();
30294
+ }
30295
+ }
30296
+ findOptionFromEvent(ev) {
30297
+ const { options } = this;
30298
+ return options.find((o) => o.value === ev.target.value);
30299
+ }
30300
+ getValues(ev) {
30301
+ const { multiple, options } = this;
30302
+ if (multiple) {
30303
+ // this is a modal with checkboxes (multiple value select)
30304
+ // return an array of all the checked values
30305
+ return options.filter((o) => o.checked).map((o) => o.value);
30306
+ }
30307
+ // this is a modal with radio buttons (single value select)
30308
+ // return the value that was clicked, otherwise undefined
30309
+ const option = ev ? this.findOptionFromEvent(ev) : null;
30310
+ return option ? option.value : undefined;
30311
+ }
30312
+ callOptionHandler(ev) {
30313
+ const option = this.findOptionFromEvent(ev);
30314
+ const values = this.getValues(ev);
30315
+ if (option === null || option === void 0 ? void 0 : option.handler) {
30316
+ safeCall(option.handler, values);
30317
+ }
30318
+ }
30319
+ setChecked(ev) {
30320
+ const { multiple } = this;
30321
+ const option = this.findOptionFromEvent(ev);
30322
+ // this is a modal with checkboxes (multiple value select)
30323
+ // we need to set the checked value for this option
30324
+ if (multiple && option) {
30325
+ option.checked = ev.detail.checked;
30326
+ }
30327
+ }
30328
+ renderRadioOptions() {
30329
+ const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
30330
+ return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30331
+ // TODO FW-4784
30332
+ 'item-radio-checked': option.value === checked
30333
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
30334
+ if (ev.key === ' ') {
30335
+ /**
30336
+ * Selecting a radio option with keyboard navigation,
30337
+ * either through the Enter or Space keys, should
30338
+ * dismiss the modal.
30339
+ */
30340
+ this.closeModal();
30341
+ }
30342
+ } }, option.text))))));
30343
+ }
30344
+ renderCheckboxOptions() {
30345
+ return this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30346
+ // TODO FW-4784
30347
+ 'item-checkbox-checked': option.checked
30348
+ }, getClassMap(option.cssClass)) }, hAsync("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
30349
+ this.setChecked(ev);
30350
+ this.callOptionHandler(ev);
30351
+ } }, option.text))));
30352
+ }
30353
+ render() {
30354
+ 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()))));
30355
+ }
30356
+ get el() { return getElement(this); }
30357
+ static get style() { return {
30358
+ ionic: IonSelectModalIonicStyle0,
30359
+ ios: IonSelectModalIosStyle0,
30360
+ md: IonSelectModalMdStyle0
30361
+ }; }
30362
+ static get cmpMeta() { return {
30363
+ "$flags$": 34,
30364
+ "$tagName$": "ion-select-modal",
30365
+ "$members$": {
30366
+ "header": [1],
30367
+ "multiple": [4],
30368
+ "options": [16]
30369
+ },
30370
+ "$listeners$": undefined,
30371
+ "$lazyBundleId$": "-",
30372
+ "$attrsToReflect$": []
30373
+ }; }
30374
+ }
30375
+
29912
30376
  const selectOptionCss = ":host{display:none}";
29913
30377
  var IonSelectOptionStyle0 = selectOptionCss;
29914
30378
 
@@ -29920,7 +30384,7 @@ class SelectOption {
29920
30384
  this.value = undefined;
29921
30385
  }
29922
30386
  render() {
29923
- return hAsync(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode$1(this) });
30387
+ return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
29924
30388
  }
29925
30389
  get el() { return getElement(this); }
29926
30390
  static get style() { return IonSelectOptionStyle0; }
@@ -30040,7 +30504,7 @@ class SelectPopover {
30040
30504
  render() {
30041
30505
  const { header, message, options, subHeader } = this;
30042
30506
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30043
- 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))));
30507
+ 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))));
30044
30508
  }
30045
30509
  get el() { return getElement(this); }
30046
30510
  static get style() { return {
@@ -30088,11 +30552,11 @@ class SkeletonText {
30088
30552
  const animated = this.animated && config.getBoolean('animated', true);
30089
30553
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30090
30554
  const mode = getIonMode$1(this);
30091
- return (hAsync(Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
30555
+ return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30092
30556
  [mode]: true,
30093
30557
  'skeleton-text-animated': animated,
30094
30558
  'in-media': inMedia,
30095
- } }, hAsync("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
30559
+ } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30096
30560
  }
30097
30561
  get el() { return getElement(this); }
30098
30562
  static get style() { return IonSkeletonTextStyle0; }
@@ -30145,7 +30609,7 @@ class Spinner {
30145
30609
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30146
30610
  }
30147
30611
  }
30148
- return (hAsync(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses$1(self.color, {
30612
+ return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30149
30613
  [mode]: true,
30150
30614
  [`spinner-${spinnerName}`]: true,
30151
30615
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30245,12 +30709,12 @@ class SplitPane {
30245
30709
  }
30246
30710
  render() {
30247
30711
  const mode = getIonMode$1(this);
30248
- return (hAsync(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
30712
+ return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30249
30713
  [mode]: true,
30250
30714
  // Used internally for styling
30251
30715
  [`split-pane-${mode}`]: true,
30252
30716
  'split-pane-visible': this.visible,
30253
- } }, hAsync("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
30717
+ } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30254
30718
  }
30255
30719
  get el() { return getElement(this); }
30256
30720
  static get watchers() { return {
@@ -30319,10 +30783,10 @@ class Tab {
30319
30783
  }
30320
30784
  render() {
30321
30785
  const { tab, active, component } = this;
30322
- return (hAsync(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30786
+ return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30323
30787
  'ion-page': component === undefined,
30324
30788
  'tab-hidden': !active,
30325
- } }, hAsync("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
30789
+ } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
30326
30790
  }
30327
30791
  get el() { return getElement(this); }
30328
30792
  static get watchers() { return {
@@ -30400,11 +30864,11 @@ class TabBar {
30400
30864
  const { color, translucent, keyboardVisible } = this;
30401
30865
  const mode = getIonMode$1(this);
30402
30866
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30403
- return (hAsync(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30867
+ return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30404
30868
  [mode]: true,
30405
30869
  'tab-bar-translucent': translucent,
30406
30870
  'tab-bar-hidden': shouldHide,
30407
- }) }, hAsync("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
30871
+ }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
30408
30872
  }
30409
30873
  get el() { return getElement(this); }
30410
30874
  static get watchers() { return {
@@ -30502,7 +30966,7 @@ class TabButton {
30502
30966
  rel,
30503
30967
  target,
30504
30968
  };
30505
- return (hAsync(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30969
+ return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30506
30970
  [mode]: true,
30507
30971
  'tab-selected': selected,
30508
30972
  'tab-disabled': disabled,
@@ -30514,7 +30978,7 @@ class TabButton {
30514
30978
  'ion-activatable': true,
30515
30979
  'ion-selectable': true,
30516
30980
  'ion-focusable': true,
30517
- } }, 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" }))));
30981
+ } }, 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" }))));
30518
30982
  }
30519
30983
  get el() { return getElement(this); }
30520
30984
  static get style() { return {
@@ -30690,7 +31154,7 @@ class Tabs {
30690
31154
  return Array.from(this.el.querySelectorAll('ion-tab'));
30691
31155
  }
30692
31156
  render() {
30693
- 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" })));
31157
+ 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" })));
30694
31158
  }
30695
31159
  get el() { return getElement(this); }
30696
31160
  static get style() { return IonTabsStyle0; }
@@ -30732,9 +31196,9 @@ class Text {
30732
31196
  }
30733
31197
  render() {
30734
31198
  const mode = getIonMode$1(this);
30735
- return (hAsync(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses$1(this.color, {
31199
+ return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
30736
31200
  [mode]: true,
30737
- }) }, hAsync("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
31201
+ }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
30738
31202
  }
30739
31203
  static get style() { return IonTextStyle0; }
30740
31204
  static get cmpMeta() { return {
@@ -31116,7 +31580,7 @@ class Textarea {
31116
31580
  * TODO(FW-5592): Remove hasStartEndSlots condition
31117
31581
  */
31118
31582
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31119
- return (hAsync(Host, { key: 'e8a5b5727c6a018bbd6f5507b690bc5f0959e352', class: createColorClasses$1(this.color, {
31583
+ return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31120
31584
  [mode]: true,
31121
31585
  'has-value': hasValue,
31122
31586
  'has-focus': hasFocus,
@@ -31125,7 +31589,7 @@ class Textarea {
31125
31589
  [`textarea-shape-${shape}`]: shape !== undefined,
31126
31590
  [`textarea-label-placement-${labelPlacement}`]: true,
31127
31591
  'textarea-disabled': disabled,
31128
- }) }, 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()));
31592
+ }) }, 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()));
31129
31593
  }
31130
31594
  get el() { return getElement(this); }
31131
31595
  static get watchers() { return {
@@ -31187,7 +31651,7 @@ class Thumbnail {
31187
31651
  registerInstance(this, hostRef);
31188
31652
  }
31189
31653
  render() {
31190
- return (hAsync(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode$1(this) }, hAsync("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
31654
+ return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31191
31655
  }
31192
31656
  static get style() { return IonThumbnailStyle0; }
31193
31657
  static get cmpMeta() { return {
@@ -31634,10 +32098,10 @@ const createSwipeToDismissGesture = (el, toastPosition, onDismiss) => {
31634
32098
  return gesture;
31635
32099
  };
31636
32100
 
31637
- 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}}";
32101
+ 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}}";
31638
32102
  var IonToastIosStyle0 = toastIosCss;
31639
32103
 
31640
- 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)}}";
32104
+ 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)}}";
31641
32105
  var IonToastMdStyle0 = toastMdCss;
31642
32106
 
31643
32107
  // TODO(FW-2832): types
@@ -32023,9 +32487,9 @@ class Toast {
32023
32487
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32024
32488
  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);
32025
32489
  }
32026
- return (hAsync(Host, Object.assign({ key: '68c336f80af04ba484ca9899bae8f40c0d9b7691', tabindex: "-1" }, this.htmlAttributes, { style: {
32490
+ return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32027
32491
  zIndex: `${60000 + this.overlayIndex}`,
32028
- }, 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')))));
32492
+ }, 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')))));
32029
32493
  }
32030
32494
  get el() { return getElement(this); }
32031
32495
  static get watchers() { return {
@@ -32245,7 +32709,7 @@ class Toggle {
32245
32709
  const value = this.getValue();
32246
32710
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32247
32711
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32248
- return (hAsync(Host, { key: '8f024fb0fbc2d4442be0574b03450426e8e4fc9e', onClick: this.onClick, class: createColorClasses$1(color, {
32712
+ return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32249
32713
  [mode]: true,
32250
32714
  'in-item': hostContext('ion-item', el),
32251
32715
  'toggle-activated': activated,
@@ -32255,10 +32719,10 @@ class Toggle {
32255
32719
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32256
32720
  [`toggle-label-placement-${labelPlacement}`]: true,
32257
32721
  [`toggle-${rtl}`]: true,
32258
- }) }, 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: {
32722
+ }) }, 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: {
32259
32723
  'label-text-wrapper': true,
32260
32724
  'label-text-wrapper-hidden': !this.hasLabel,
32261
- }, part: "label" }, hAsync("slot", { key: '7a6ea9515d454d80615f0622f361c5f91b41345c' })), hAsync("div", { key: '6d3670b81b8f809092c98b3f3b8e483ddf6a7cac', class: "native-wrapper" }, this.renderToggleControl()))));
32725
+ }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32262
32726
  }
32263
32727
  get el() { return getElement(this); }
32264
32728
  static get watchers() { return {
@@ -32362,10 +32826,10 @@ class Toolbar {
32362
32826
  this.childrenStyles.forEach((value) => {
32363
32827
  Object.assign(childStyles, value);
32364
32828
  });
32365
- return (hAsync(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32829
+ return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32366
32830
  [mode]: true,
32367
32831
  'in-toolbar': hostContext('ion-toolbar', this.el),
32368
- })) }, 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" }))));
32832
+ })) }, 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" }))));
32369
32833
  }
32370
32834
  get el() { return getElement(this); }
32371
32835
  static get style() { return {
@@ -32415,11 +32879,11 @@ class ToolbarTitle {
32415
32879
  render() {
32416
32880
  const mode = getIonMode$1(this);
32417
32881
  const size = this.getSize();
32418
- return (hAsync(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses$1(this.color, {
32882
+ return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
32419
32883
  [mode]: true,
32420
32884
  [`title-${size}`]: true,
32421
32885
  'title-rtl': document.dir === 'rtl',
32422
- }) }, hAsync("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, hAsync("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
32886
+ }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
32423
32887
  }
32424
32888
  get el() { return getElement(this); }
32425
32889
  static get watchers() { return {
@@ -32520,7 +32984,10 @@ registerComponents([
32520
32984
  Searchbar,
32521
32985
  Segment,
32522
32986
  SegmentButton,
32987
+ SegmentContent,
32988
+ SegmentView,
32523
32989
  Select,
32990
+ SelectModal,
32524
32991
  SelectOption,
32525
32992
  SelectPopover,
32526
32993
  SkeletonText,