voyager-ionic-core 8.3.3 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +7 -5
  3. package/components/backdrop.js +1 -1
  4. package/components/button.js +2 -2
  5. package/components/buttons.js +2 -2
  6. package/components/checkbox.js +7 -5
  7. package/components/content.js +446 -0
  8. package/components/header.js +356 -0
  9. package/components/index4.js +2 -2
  10. package/components/ion-app.js +1 -1
  11. package/components/ion-avatar.js +1 -1
  12. package/components/ion-back-button.js +2 -2
  13. package/components/ion-badge.js +2 -2
  14. package/components/ion-breadcrumb.js +4 -4
  15. package/components/ion-breadcrumbs.js +2 -2
  16. package/components/ion-card-content.js +1 -1
  17. package/components/ion-card-header.js +2 -2
  18. package/components/ion-card-subtitle.js +2 -2
  19. package/components/ion-card-title.js +2 -2
  20. package/components/ion-card.js +1 -1
  21. package/components/ion-chip.js +2 -2
  22. package/components/ion-col.js +2 -2
  23. package/components/ion-content.js +1 -441
  24. package/components/ion-datetime-button.js +2 -2
  25. package/components/ion-datetime.js +2 -2
  26. package/components/ion-fab-button.js +2 -2
  27. package/components/ion-fab-list.js +2 -2
  28. package/components/ion-fab.js +2 -2
  29. package/components/ion-footer.js +2 -2
  30. package/components/ion-grid.js +2 -2
  31. package/components/ion-header.js +1 -351
  32. package/components/ion-img.js +1 -1
  33. package/components/ion-infinite-scroll-content.js +2 -2
  34. package/components/ion-infinite-scroll.js +1 -1
  35. package/components/ion-input-password-toggle.js +3 -3
  36. package/components/ion-input.js +20 -5
  37. package/components/ion-item-divider.js +2 -2
  38. package/components/ion-item-group.js +1 -1
  39. package/components/ion-item-option.js +2 -2
  40. package/components/ion-item-options.js +1 -1
  41. package/components/ion-item-sliding.js +1 -1
  42. package/components/ion-loading.js +2 -2
  43. package/components/ion-menu-button.js +2 -2
  44. package/components/ion-menu-toggle.js +2 -2
  45. package/components/ion-menu.js +19 -19
  46. package/components/ion-modal.js +1 -1737
  47. package/components/ion-nav-link.js +1 -1
  48. package/components/ion-nav.js +1 -1
  49. package/components/ion-note.js +2 -2
  50. package/components/ion-picker-legacy.js +2 -2
  51. package/components/ion-progress-bar.js +1 -1
  52. package/components/ion-range.js +3 -3
  53. package/components/ion-refresher-content.js +1 -1
  54. package/components/ion-refresher.js +1 -1
  55. package/components/ion-reorder-group.js +1 -1
  56. package/components/ion-reorder.js +1 -1
  57. package/components/ion-router-link.js +2 -2
  58. package/components/ion-router-outlet.js +1 -1
  59. package/components/ion-row.js +1 -1
  60. package/components/ion-searchbar.js +4 -4
  61. package/components/ion-segment-button.js +24 -5
  62. package/components/ion-segment-content.d.ts +11 -0
  63. package/components/ion-segment-content.js +37 -0
  64. package/components/ion-segment-view.d.ts +11 -0
  65. package/components/ion-segment-view.js +140 -0
  66. package/components/ion-segment.js +110 -15
  67. package/components/ion-select-modal.d.ts +11 -0
  68. package/components/ion-select-modal.js +9 -0
  69. package/components/ion-select-option.js +1 -1
  70. package/components/ion-select.js +114 -41
  71. package/components/ion-skeleton-text.js +2 -2
  72. package/components/ion-split-pane.js +2 -2
  73. package/components/ion-tab-bar.js +2 -2
  74. package/components/ion-tab-button.js +2 -2
  75. package/components/ion-tab.js +2 -2
  76. package/components/ion-tabs.js +1 -1
  77. package/components/ion-text.js +2 -2
  78. package/components/ion-textarea.js +19 -4
  79. package/components/ion-thumbnail.js +1 -1
  80. package/components/ion-title.js +1 -70
  81. package/components/ion-toast.js +2 -2
  82. package/components/ion-toggle.js +3 -3
  83. package/components/ion-toolbar.js +1 -88
  84. package/components/label.js +2 -2
  85. package/components/list-header.js +2 -2
  86. package/components/list.js +1 -1
  87. package/components/modal.js +1742 -0
  88. package/components/overlays.js +62 -7
  89. package/components/picker-column-option.js +2 -2
  90. package/components/picker-column.js +3 -3
  91. package/components/picker-column2.js +2 -2
  92. package/components/picker.js +2 -2
  93. package/components/popover.js +2 -2
  94. package/components/radio-group.js +5 -3
  95. package/components/radio.js +7 -5
  96. package/components/ripple-effect.js +1 -1
  97. package/components/select-modal.js +197 -0
  98. package/components/select-popover.js +1 -1
  99. package/components/spinner.js +1 -1
  100. package/components/title.js +75 -0
  101. package/components/toolbar.js +93 -0
  102. package/dist/cjs/{index-9cd00dc3.js → index-8e789962.js} +2 -2
  103. package/dist/cjs/index.cjs.js +2 -2
  104. package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
  105. package/dist/cjs/ion-alert.cjs.entry.js +8 -6
  106. package/dist/cjs/ion-app_8.cjs.entry.js +15 -15
  107. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
  108. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
  110. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +6 -6
  111. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-card_5.cjs.entry.js +8 -8
  113. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -4
  114. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  115. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  116. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  117. package/dist/cjs/ion-datetime_3.cjs.entry.js +7 -7
  118. package/dist/cjs/ion-fab_3.cjs.entry.js +6 -6
  119. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  120. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  121. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  122. package/dist/cjs/ion-input.cjs.entry.js +20 -5
  123. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  124. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  125. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  126. package/dist/cjs/ion-menu_3.cjs.entry.js +24 -24
  127. package/dist/cjs/ion-modal.cjs.entry.js +5 -5
  128. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  129. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  130. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  131. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  132. package/dist/cjs/ion-popover.cjs.entry.js +3 -3
  133. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  134. package/dist/cjs/ion-radio_2.cjs.entry.js +12 -8
  135. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  136. package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  138. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  139. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  140. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  141. package/dist/cjs/ion-segment-content.cjs.entry.js +23 -0
  142. package/dist/cjs/ion-segment-view.cjs.entry.js +122 -0
  143. package/dist/cjs/ion-segment_2.cjs.entry.js +132 -19
  144. package/dist/cjs/ion-select-modal.cjs.entry.js +111 -0
  145. package/dist/cjs/ion-select_3.cjs.entry.js +40 -15
  146. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  147. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  148. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  149. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  150. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  151. package/dist/cjs/ion-textarea.cjs.entry.js +19 -4
  152. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  153. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  154. package/dist/cjs/ionic.cjs.js +1 -1
  155. package/dist/cjs/loader.cjs.js +1 -1
  156. package/dist/cjs/{overlays-0123d7d4.js → overlays-ba0f6986.js} +62 -7
  157. package/dist/collection/collection-manifest.json +3 -0
  158. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  159. package/dist/collection/components/alert/alert.js +7 -5
  160. package/dist/collection/components/app/app.js +1 -1
  161. package/dist/collection/components/avatar/avatar.js +1 -1
  162. package/dist/collection/components/back-button/back-button.js +2 -2
  163. package/dist/collection/components/backdrop/backdrop.js +1 -1
  164. package/dist/collection/components/badge/badge.js +2 -2
  165. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -4
  166. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -2
  167. package/dist/collection/components/button/button.js +2 -2
  168. package/dist/collection/components/buttons/buttons.js +2 -2
  169. package/dist/collection/components/card/card.js +1 -1
  170. package/dist/collection/components/card-content/card-content.js +1 -1
  171. package/dist/collection/components/card-header/card-header.js +2 -2
  172. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  173. package/dist/collection/components/card-title/card-title.js +2 -2
  174. package/dist/collection/components/checkbox/checkbox.js +29 -4
  175. package/dist/collection/components/chip/chip.js +2 -2
  176. package/dist/collection/components/col/col.js +2 -2
  177. package/dist/collection/components/content/content.js +3 -3
  178. package/dist/collection/components/datetime/datetime.js +2 -2
  179. package/dist/collection/components/datetime-button/datetime-button.js +2 -2
  180. package/dist/collection/components/fab/fab.js +2 -2
  181. package/dist/collection/components/fab-button/fab-button.js +2 -2
  182. package/dist/collection/components/fab-list/fab-list.js +2 -2
  183. package/dist/collection/components/footer/footer.js +2 -2
  184. package/dist/collection/components/grid/grid.js +2 -2
  185. package/dist/collection/components/header/header.js +2 -2
  186. package/dist/collection/components/img/img.js +1 -1
  187. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  188. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  189. package/dist/collection/components/input/input.js +20 -5
  190. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  191. package/dist/collection/components/item-divider/item-divider.js +2 -2
  192. package/dist/collection/components/item-group/item-group.js +1 -1
  193. package/dist/collection/components/item-option/item-option.js +2 -2
  194. package/dist/collection/components/item-options/item-options.js +1 -1
  195. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  196. package/dist/collection/components/label/label.js +2 -2
  197. package/dist/collection/components/list/list.js +1 -1
  198. package/dist/collection/components/list-header/list-header.js +2 -2
  199. package/dist/collection/components/loading/loading.js +2 -2
  200. package/dist/collection/components/menu/menu.js +47 -27
  201. package/dist/collection/components/menu-button/menu-button.js +2 -2
  202. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  203. package/dist/collection/components/modal/modal.js +4 -4
  204. package/dist/collection/components/nav/nav.js +1 -1
  205. package/dist/collection/components/nav-link/nav-link.js +1 -1
  206. package/dist/collection/components/note/note.js +2 -2
  207. package/dist/collection/components/picker/picker.js +2 -2
  208. package/dist/collection/components/picker-column/picker-column.js +3 -3
  209. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  210. package/dist/collection/components/picker-legacy/picker.js +2 -2
  211. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  212. package/dist/collection/components/popover/popover.js +2 -2
  213. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  214. package/dist/collection/components/radio/radio.js +9 -7
  215. package/dist/collection/components/radio-group/radio-group.js +5 -3
  216. package/dist/collection/components/range/range.js +3 -3
  217. package/dist/collection/components/refresher/refresher.js +1 -1
  218. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  219. package/dist/collection/components/reorder/reorder.js +1 -1
  220. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  221. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  222. package/dist/collection/components/router-link/router-link.js +2 -2
  223. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  224. package/dist/collection/components/row/row.js +1 -1
  225. package/dist/collection/components/searchbar/searchbar.js +4 -4
  226. package/dist/collection/components/segment/segment.js +115 -14
  227. package/dist/collection/components/segment-button/segment-button.js +40 -5
  228. package/dist/collection/components/segment-content/segment-content.css +6 -0
  229. package/dist/collection/components/segment-content/segment-content.js +21 -0
  230. package/dist/collection/components/segment-view/segment-view-interface.js +1 -0
  231. package/dist/collection/components/segment-view/segment-view.ios.css +83 -0
  232. package/dist/collection/components/segment-view/segment-view.js +227 -0
  233. package/dist/collection/components/segment-view/segment-view.md.css +83 -0
  234. package/dist/collection/components/select/select.js +61 -16
  235. package/dist/collection/components/select-modal/select-modal-interface.js +1 -0
  236. package/dist/collection/components/select-modal/select-modal.ios.css +3 -0
  237. package/dist/collection/components/select-modal/select-modal.js +159 -0
  238. package/dist/collection/components/select-modal/select-modal.md.css +110 -0
  239. package/dist/collection/components/select-modal/test/fixtures.js +48 -0
  240. package/dist/collection/components/select-option/select-option.js +1 -1
  241. package/dist/collection/components/select-popover/select-popover.js +1 -1
  242. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  243. package/dist/collection/components/spinner/spinner.js +1 -1
  244. package/dist/collection/components/split-pane/split-pane.js +2 -2
  245. package/dist/collection/components/tab/tab.js +2 -2
  246. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  247. package/dist/collection/components/tab-button/tab-button.js +2 -2
  248. package/dist/collection/components/tabs/tabs.js +1 -1
  249. package/dist/collection/components/text/text.js +2 -2
  250. package/dist/collection/components/textarea/textarea.js +19 -4
  251. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  252. package/dist/collection/components/title/title.js +2 -2
  253. package/dist/collection/components/toast/toast.js +2 -2
  254. package/dist/collection/components/toggle/toggle.js +3 -3
  255. package/dist/collection/components/toolbar/toolbar.js +2 -2
  256. package/dist/collection/utils/menu-controller/index.js +2 -2
  257. package/dist/collection/utils/overlays.js +62 -7
  258. package/dist/docs.json +426 -29
  259. package/dist/esm/{index-fe1782b1.js → index-24b48b06.js} +2 -2
  260. package/dist/esm/index.js +2 -2
  261. package/dist/esm/ion-action-sheet.entry.js +3 -3
  262. package/dist/esm/ion-alert.entry.js +8 -6
  263. package/dist/esm/ion-app_8.entry.js +15 -15
  264. package/dist/esm/ion-avatar_3.entry.js +4 -4
  265. package/dist/esm/ion-back-button.entry.js +2 -2
  266. package/dist/esm/ion-backdrop.entry.js +1 -1
  267. package/dist/esm/ion-breadcrumb_2.entry.js +6 -6
  268. package/dist/esm/ion-button_2.entry.js +2 -2
  269. package/dist/esm/ion-card_5.entry.js +8 -8
  270. package/dist/esm/ion-checkbox.entry.js +5 -4
  271. package/dist/esm/ion-chip.entry.js +2 -2
  272. package/dist/esm/ion-col_3.entry.js +5 -5
  273. package/dist/esm/ion-datetime-button.entry.js +2 -2
  274. package/dist/esm/ion-datetime_3.entry.js +7 -7
  275. package/dist/esm/ion-fab_3.entry.js +6 -6
  276. package/dist/esm/ion-img.entry.js +1 -1
  277. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  278. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  279. package/dist/esm/ion-input.entry.js +20 -5
  280. package/dist/esm/ion-item-option_3.entry.js +4 -4
  281. package/dist/esm/ion-item_8.entry.js +12 -12
  282. package/dist/esm/ion-loading.entry.js +3 -3
  283. package/dist/esm/ion-menu_3.entry.js +24 -24
  284. package/dist/esm/ion-modal.entry.js +5 -5
  285. package/dist/esm/ion-nav_2.entry.js +2 -2
  286. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  287. package/dist/esm/ion-picker-column.entry.js +3 -3
  288. package/dist/esm/ion-picker.entry.js +2 -2
  289. package/dist/esm/ion-popover.entry.js +3 -3
  290. package/dist/esm/ion-progress-bar.entry.js +1 -1
  291. package/dist/esm/ion-radio_2.entry.js +12 -8
  292. package/dist/esm/ion-range.entry.js +3 -3
  293. package/dist/esm/ion-refresher_2.entry.js +2 -2
  294. package/dist/esm/ion-reorder_2.entry.js +2 -2
  295. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  296. package/dist/esm/ion-route_4.entry.js +2 -2
  297. package/dist/esm/ion-searchbar.entry.js +4 -4
  298. package/dist/esm/ion-segment-content.entry.js +19 -0
  299. package/dist/esm/ion-segment-view.entry.js +118 -0
  300. package/dist/esm/ion-segment_2.entry.js +132 -19
  301. package/dist/esm/ion-select-modal.entry.js +107 -0
  302. package/dist/esm/ion-select_3.entry.js +40 -15
  303. package/dist/esm/ion-spinner.entry.js +1 -1
  304. package/dist/esm/ion-split-pane.entry.js +2 -2
  305. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  306. package/dist/esm/ion-tab_2.entry.js +3 -3
  307. package/dist/esm/ion-text.entry.js +2 -2
  308. package/dist/esm/ion-textarea.entry.js +19 -4
  309. package/dist/esm/ion-toast.entry.js +3 -3
  310. package/dist/esm/ion-toggle.entry.js +3 -3
  311. package/dist/esm/ionic.js +1 -1
  312. package/dist/esm/loader.js +1 -1
  313. package/dist/esm/{overlays-9c75ec54.js → overlays-ae10d43d.js} +62 -7
  314. package/dist/esm-es5/{index-fe1782b1.js → index-24b48b06.js} +1 -1
  315. package/dist/esm-es5/index.js +1 -1
  316. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  317. package/dist/esm-es5/ion-alert.entry.js +1 -1
  318. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  319. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  320. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  321. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  322. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  323. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  324. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  325. package/dist/esm-es5/ion-checkbox.entry.js +2 -2
  326. package/dist/esm-es5/ion-chip.entry.js +1 -1
  327. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  328. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  329. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  330. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  331. package/dist/esm-es5/ion-img.entry.js +1 -1
  332. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  333. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  334. package/dist/esm-es5/ion-input.entry.js +1 -1
  335. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  336. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  337. package/dist/esm-es5/ion-loading.entry.js +1 -1
  338. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  339. package/dist/esm-es5/ion-modal.entry.js +1 -1
  340. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  341. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  342. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  343. package/dist/esm-es5/ion-picker.entry.js +1 -1
  344. package/dist/esm-es5/ion-popover.entry.js +1 -1
  345. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  346. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  347. package/dist/esm-es5/ion-range.entry.js +1 -1
  348. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  349. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  350. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  351. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  352. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  353. package/dist/esm-es5/ion-segment-content.entry.js +4 -0
  354. package/dist/esm-es5/ion-segment-view.entry.js +4 -0
  355. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  356. package/dist/esm-es5/ion-select-modal.entry.js +4 -0
  357. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  358. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  359. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  360. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  361. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  362. package/dist/esm-es5/ion-text.entry.js +1 -1
  363. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  364. package/dist/esm-es5/ion-toast.entry.js +1 -1
  365. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  366. package/dist/esm-es5/ionic.js +1 -1
  367. package/dist/esm-es5/loader.js +1 -1
  368. package/dist/esm-es5/overlays-ae10d43d.js +4 -0
  369. package/dist/html.html-data.json +65 -2
  370. package/dist/ionic/index.esm.js +1 -1
  371. package/dist/ionic/ionic.esm.js +1 -1
  372. package/dist/ionic/{p-313ccc01.system.entry.js → p-01186920.system.entry.js} +1 -1
  373. package/dist/ionic/{p-ecb57d24.system.entry.js → p-0161caf9.system.entry.js} +1 -1
  374. package/dist/ionic/p-0437ace4.system.entry.js +4 -0
  375. package/dist/ionic/p-04fc24ee.system.js +4 -0
  376. package/dist/ionic/{p-e3e1e3de.entry.js → p-081a4ce4.entry.js} +1 -1
  377. package/dist/ionic/p-09cf2394.entry.js +4 -0
  378. package/dist/ionic/p-14be4015.entry.js +4 -0
  379. package/dist/ionic/p-15e76dd1.entry.js +4 -0
  380. package/dist/ionic/{p-003eecb9.entry.js → p-16188af7.entry.js} +1 -1
  381. package/dist/ionic/p-16799667.system.entry.js +4 -0
  382. package/dist/ionic/p-16bfb979.system.entry.js +4 -0
  383. package/dist/ionic/{p-b54fc1ae.entry.js → p-19ec4f42.entry.js} +1 -1
  384. package/dist/ionic/p-1b7605a7.system.entry.js +4 -0
  385. package/dist/ionic/p-1c1b8e1f.entry.js +4 -0
  386. package/dist/ionic/{p-8b6232a6.system.entry.js → p-1e010627.system.entry.js} +2 -2
  387. package/dist/ionic/{p-f50ae0d5.system.entry.js → p-1e41f2aa.system.entry.js} +1 -1
  388. package/dist/ionic/{p-cdb11938.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  389. package/dist/ionic/{p-bd25d639.system.entry.js → p-1ebd1e27.system.entry.js} +1 -1
  390. package/dist/ionic/{p-836d39d4.system.entry.js → p-2172893e.system.entry.js} +1 -1
  391. package/dist/ionic/{p-4a0a4204.system.entry.js → p-2507278c.system.entry.js} +1 -1
  392. package/dist/ionic/{p-75c0dc65.system.entry.js → p-2799c6d3.system.entry.js} +1 -1
  393. package/dist/ionic/{p-a879ecb7.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
  394. package/dist/ionic/{p-293ed6ac.system.entry.js → p-2b838f86.system.entry.js} +1 -1
  395. package/dist/ionic/{p-4a82bd1c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
  396. package/dist/ionic/p-2fc0dafe.entry.js +4 -0
  397. package/dist/ionic/p-322c5fb4.system.js +2 -2
  398. package/dist/ionic/p-33a8a71b.entry.js +4 -0
  399. package/dist/ionic/{p-4b0fedb7.system.entry.js → p-37cb43bd.system.entry.js} +1 -1
  400. package/dist/ionic/{p-ad9b5007.system.entry.js → p-3b419d79.system.entry.js} +1 -1
  401. package/dist/ionic/p-424eb140.system.entry.js +4 -0
  402. package/dist/ionic/{p-b7657e8d.entry.js → p-4439fc2a.entry.js} +1 -1
  403. package/dist/ionic/{p-ed6962d3.system.entry.js → p-4561cd09.system.entry.js} +1 -1
  404. package/dist/ionic/{p-c34659b9.entry.js → p-45693d7e.entry.js} +1 -1
  405. package/dist/ionic/p-49a0e74c.entry.js +4 -0
  406. package/dist/ionic/{p-9fef1364.entry.js → p-4a274c89.entry.js} +1 -1
  407. package/dist/ionic/{p-d57661a1.entry.js → p-4b000207.entry.js} +1 -1
  408. package/dist/ionic/{p-fd0cb4ef.entry.js → p-4ec778aa.entry.js} +1 -1
  409. package/dist/ionic/{p-f559ac5b.entry.js → p-51796b2d.entry.js} +1 -1
  410. package/dist/ionic/{p-9ece8dcf.entry.js → p-52d7a191.entry.js} +1 -1
  411. package/dist/ionic/{p-8ed31163.system.entry.js → p-5393e8bb.system.entry.js} +1 -1
  412. package/dist/ionic/{p-ce705aac.system.entry.js → p-567de071.system.entry.js} +1 -1
  413. package/dist/ionic/{p-95823c62.system.entry.js → p-5823babc.system.entry.js} +2 -2
  414. package/dist/ionic/{p-baffaf8d.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  415. package/dist/ionic/{p-521eca2e.entry.js → p-5ab1b709.entry.js} +1 -1
  416. package/dist/ionic/{p-cff5585e.system.entry.js → p-5b5c1505.system.entry.js} +1 -1
  417. package/dist/ionic/{p-8d44cf1f.entry.js → p-5b932840.entry.js} +1 -1
  418. package/dist/ionic/{p-9cc3bcc5.system.entry.js → p-5bd39e5e.system.entry.js} +2 -2
  419. package/dist/ionic/p-5c831f49.js +4 -0
  420. package/dist/ionic/{p-5800e441.entry.js → p-5f79d8c5.entry.js} +1 -1
  421. package/dist/ionic/{p-772dacba.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
  422. package/dist/ionic/{p-233e6c93.entry.js → p-62af944c.entry.js} +1 -1
  423. package/dist/ionic/{p-00b01a55.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  424. package/dist/ionic/p-6734db42.system.entry.js +4 -0
  425. package/dist/ionic/p-69666e8a.system.entry.js +4 -0
  426. package/dist/ionic/{p-5e842258.entry.js → p-6d32975a.entry.js} +1 -1
  427. package/dist/ionic/p-73dc4950.entry.js +4 -0
  428. package/dist/ionic/{p-fcd71204.system.entry.js → p-7458862e.system.entry.js} +1 -1
  429. package/dist/ionic/{p-a3711608.system.entry.js → p-797eeea8.system.entry.js} +1 -1
  430. package/dist/ionic/{p-f8c8b9ba.entry.js → p-7b9a2b23.entry.js} +1 -1
  431. package/dist/ionic/{p-6817cf42.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  432. package/dist/ionic/{p-22c020db.system.entry.js → p-857ca696.system.entry.js} +1 -1
  433. package/dist/ionic/{p-a4d51b8d.system.js → p-8f05ba3b.system.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-4c8fceb0.entry.js → p-95775830.entry.js} +1 -1
  437. package/dist/ionic/{p-973f0b15.system.entry.js → p-98231c01.system.entry.js} +1 -1
  438. package/dist/ionic/{p-25928b83.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  439. package/dist/ionic/{p-e3a5da9d.entry.js → p-98ff6b32.entry.js} +1 -1
  440. package/dist/ionic/p-9910f786.entry.js +4 -0
  441. package/dist/ionic/{p-6e85e450.entry.js → p-9df2c6fb.entry.js} +1 -1
  442. package/dist/ionic/{p-7251fed5.entry.js → p-9ee1e8a6.entry.js} +1 -1
  443. package/dist/ionic/{p-da263d8e.entry.js → p-9fa07aec.entry.js} +1 -1
  444. package/dist/ionic/{p-a41699db.entry.js → p-a1051806.entry.js} +1 -1
  445. package/dist/ionic/p-a1b9a163.entry.js +4 -0
  446. package/dist/ionic/p-a34b4d94.entry.js +4 -0
  447. package/dist/ionic/{p-8836d0eb.system.entry.js → p-a49378bb.system.entry.js} +1 -1
  448. package/dist/ionic/{p-6b8893dd.entry.js → p-a61cba41.entry.js} +1 -1
  449. package/dist/ionic/p-adbc4bdf.entry.js +4 -0
  450. package/dist/ionic/{p-49bc6544.entry.js → p-afecb188.entry.js} +1 -1
  451. package/dist/ionic/{p-755b27f0.system.entry.js → p-b335ffed.system.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-5417b9bb.entry.js → p-c9f3a539.entry.js} +1 -1
  461. package/dist/ionic/{p-2ea1ca4f.system.entry.js → p-ca065903.system.entry.js} +1 -1
  462. package/dist/ionic/{p-2ca6eac2.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  463. package/dist/ionic/{p-3c968c7f.system.entry.js → p-d18ab582.system.entry.js} +2 -2
  464. package/dist/ionic/{p-92d7a3d1.entry.js → p-d7aa6b00.entry.js} +1 -1
  465. package/dist/ionic/{p-21cfd4de.entry.js → p-da074ff7.entry.js} +1 -1
  466. package/dist/ionic/{p-5e66bcf2.entry.js → p-db0c8e7d.entry.js} +1 -1
  467. package/dist/ionic/{p-89a0a446.entry.js → p-de930745.entry.js} +1 -1
  468. package/dist/ionic/p-e2252ad6.entry.js +4 -0
  469. package/dist/ionic/{p-960803fc.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
  470. package/dist/ionic/p-e563a35c.entry.js +4 -0
  471. package/dist/ionic/{p-7740e32c.system.js → p-e7ed4a7f.system.js} +1 -1
  472. package/dist/ionic/{p-0373d924.system.entry.js → p-ebf042e0.system.entry.js} +1 -1
  473. package/dist/ionic/{p-9b6c6302.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
  474. package/dist/ionic/p-f10b70a1.entry.js +4 -0
  475. package/dist/ionic/{p-01503bbd.system.entry.js → p-f3102647.system.entry.js} +1 -1
  476. package/dist/ionic/{p-6562e0a9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
  477. package/dist/ionic/{p-b0180ce1.system.entry.js → p-ffd131f9.system.entry.js} +1 -1
  478. package/dist/types/components/checkbox/checkbox.d.ts +2 -1
  479. package/dist/types/components/input/input.d.ts +3 -0
  480. package/dist/types/components/menu/menu-interface.d.ts +5 -2
  481. package/dist/types/components/menu/menu.d.ts +6 -6
  482. package/dist/types/components/radio/radio.d.ts +1 -1
  483. package/dist/types/components/segment/segment.d.ts +21 -1
  484. package/dist/types/components/segment-button/segment-button.d.ts +4 -0
  485. package/dist/types/components/segment-content/segment-content.d.ts +4 -0
  486. package/dist/types/components/segment-view/segment-view-interface.d.ts +4 -0
  487. package/dist/types/components/segment-view/segment-view.d.ts +55 -0
  488. package/dist/types/components/select/select-interface.d.ts +1 -1
  489. package/dist/types/components/select/select.d.ts +5 -4
  490. package/dist/types/components/select-modal/select-modal-interface.d.ts +10 -0
  491. package/dist/types/components/select-modal/select-modal.d.ts +16 -0
  492. package/dist/types/components/select-modal/test/fixtures.d.ts +16 -0
  493. package/dist/types/components/textarea/textarea.d.ts +3 -0
  494. package/dist/types/components.d.ts +103 -13
  495. package/dist/types/utils/overlays-interface.d.ts +1 -1
  496. package/hydrate/index.js +708 -225
  497. package/hydrate/index.mjs +708 -225
  498. package/package.json +1 -1
  499. package/dist/esm-es5/overlays-9c75ec54.js +0 -4
  500. package/dist/ionic/p-0fa0c92b.entry.js +0 -4
  501. package/dist/ionic/p-100b83fd.system.entry.js +0 -4
  502. package/dist/ionic/p-2200e26b.entry.js +0 -4
  503. package/dist/ionic/p-2b7c93b4.entry.js +0 -4
  504. package/dist/ionic/p-2c4bdd9d.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-72ffd137.system.entry.js +0 -4
  508. package/dist/ionic/p-82ab7ccb.entry.js +0 -4
  509. package/dist/ionic/p-9172535c.entry.js +0 -4
  510. package/dist/ionic/p-93f37ceb.system.entry.js +0 -4
  511. package/dist/ionic/p-98871496.system.js +0 -4
  512. package/dist/ionic/p-9c23044d.entry.js +0 -4
  513. package/dist/ionic/p-a0c88dc2.system.entry.js +0 -4
  514. package/dist/ionic/p-a440397c.js +0 -4
  515. package/dist/ionic/p-a72fb8a1.system.entry.js +0 -4
  516. package/dist/ionic/p-ab8a2ff1.entry.js +0 -4
  517. package/dist/ionic/p-b4c950f8.entry.js +0 -4
  518. package/dist/ionic/p-bfa2e81c.entry.js +0 -4
  519. package/dist/ionic/p-d77e12ca.entry.js +0 -4
  520. package/dist/ionic/p-f88ebc36.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -4619,6 +4619,7 @@ const createController = (tagName) => {
4619
4619
  };
4620
4620
  const alertController = /*@__PURE__*/ createController('ion-alert');
4621
4621
  const actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
4622
+ const modalController = /*@__PURE__*/ createController('ion-modal');
4622
4623
  const popoverController = /*@__PURE__*/ createController('ion-popover');
4623
4624
  /**
4624
4625
  * Prepares the overlay element to be presented.
@@ -5010,9 +5011,19 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
5010
5011
  if (overlay.presented) {
5011
5012
  return;
5012
5013
  }
5013
- setRootAriaHidden(true);
5014
+ /**
5015
+ * Due to accessibility guidelines, toasts do not have
5016
+ * focus traps.
5017
+ *
5018
+ * All other overlays should have focus traps to prevent
5019
+ * the keyboard focus from leaving the overlay.
5020
+ */
5021
+ if (overlay.el.tagName !== 'ION-TOAST') {
5022
+ setRootAriaHidden(true);
5023
+ }
5014
5024
  document.body.classList.add(BACKDROP_NO_SCROLL);
5015
- hideOverlaysFromScreenReaders(overlay.el);
5025
+ hideUnderlyingOverlaysFromScreenReaders(overlay.el);
5026
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
5016
5027
  overlay.presented = true;
5017
5028
  overlay.willPresent.emit();
5018
5029
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -5052,6 +5063,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
5052
5063
  * it would still have aria-hidden on being presented again.
5053
5064
  * Removing it here ensures the overlay is visible to screen
5054
5065
  * readers.
5066
+ *
5067
+ * If this overlay was being presented, then it was hidden
5068
+ * from screen readers during the animation. Now that the
5069
+ * animation is complete, we can reveal the overlay to
5070
+ * screen readers.
5055
5071
  */
5056
5072
  overlay.el.removeAttribute('aria-hidden');
5057
5073
  };
@@ -5109,17 +5125,35 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
5109
5125
  if (!overlay.presented) {
5110
5126
  return false;
5111
5127
  }
5112
- const lastOverlay = doc !== undefined && getPresentedOverlays(doc).length === 1;
5113
5128
  /**
5114
- * If this is the last visible overlay then
5115
- * we want to re-add the root to the accessibility tree.
5129
+ * For accessibility, toasts lack focus traps and don’t receive
5130
+ * `aria-hidden` on the root element when presented.
5131
+ *
5132
+ * All other overlays use focus traps to keep keyboard focus
5133
+ * within the overlay, setting `aria-hidden` on the root element
5134
+ * to enhance accessibility.
5135
+ *
5136
+ * Therefore, we must remove `aria-hidden` from the root element
5137
+ * when the last non-toast overlay is dismissed.
5138
+ */
5139
+ const overlaysNotToast = doc !== undefined ? getPresentedOverlays(doc).filter((o) => o.tagName !== 'ION-TOAST') : [];
5140
+ const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
5141
+ /**
5142
+ * If this is the last visible overlay that is not a toast
5143
+ * then we want to re-add the root to the accessibility tree.
5116
5144
  */
5117
- if (lastOverlay) {
5145
+ if (lastOverlayNotToast) {
5118
5146
  setRootAriaHidden(false);
5119
5147
  document.body.classList.remove(BACKDROP_NO_SCROLL);
5120
5148
  }
5121
5149
  overlay.presented = false;
5122
5150
  try {
5151
+ /**
5152
+ * There is no need to show the overlay to screen readers during
5153
+ * the dismiss animation. This is because the overlay will be removed
5154
+ * from the DOM after the animation is complete.
5155
+ */
5156
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
5123
5157
  // Overlay contents should not be clickable during dismiss
5124
5158
  overlay.el.style.setProperty('pointer-events', 'none');
5125
5159
  overlay.willDismiss.emit({ data, role });
@@ -5354,6 +5388,28 @@ const createTriggerController = () => {
5354
5388
  removeClickListener,
5355
5389
  };
5356
5390
  };
5391
+ /**
5392
+ * The overlay that is being animated also needs to hide from screen
5393
+ * readers during its animation. This ensures that assistive technologies
5394
+ * like TalkBack do not announce or interact with the content until the
5395
+ * animation is complete, avoiding confusion for users.
5396
+ *
5397
+ * If the overlay is being presented, it prevents focus rings from appearing
5398
+ * in incorrect positions due to the transition (specifically `transform`
5399
+ * styles), ensuring that when aria-hidden is removed, the focus rings are
5400
+ * correctly displayed in the final location of the elements.
5401
+ *
5402
+ * @param overlay - The overlay that is being animated.
5403
+ */
5404
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
5405
+ if (doc === undefined)
5406
+ return;
5407
+ /**
5408
+ * Once the animation is complete, this attribute will be removed.
5409
+ * This is done at the end of the `present` method.
5410
+ */
5411
+ overlay.setAttribute('aria-hidden', 'true');
5412
+ };
5357
5413
  /**
5358
5414
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
5359
5415
  * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
@@ -5364,7 +5420,7 @@ const createTriggerController = () => {
5364
5420
  * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
5365
5421
  * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
5366
5422
  */
5367
- const hideOverlaysFromScreenReaders = (newTopMostOverlay) => {
5423
+ const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
5368
5424
  var _a;
5369
5425
  if (doc === undefined)
5370
5426
  return;
@@ -6547,10 +6603,10 @@ class ActionSheet {
6547
6603
  const headerID = `action-sheet-${overlayIndex}-header`;
6548
6604
  return (hAsync(Host, Object.assign({ key: '7bbd202ca9e19727e7514abbe073687d982f80c3', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
6549
6605
  zIndex: `${20000 + this.overlayIndex}`,
6550
- }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), hAsync("div", { key: 'd46361bb5cdc32a7922dcf76b566f358a6174bfa', tabindex: "0" }), hAsync("div", { key: '136c3f2e77c8a2eac8e9ae4bb13d735e1d62598d', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '6168ea8b2be42020b2edeb8ff3a0f3d1254be37a', class: "action-sheet-container" }, hAsync("div", { key: '29b9e6619dc54574733a704d6bf885839151bd84', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (hAsync("div", { key: '536ce764bfddb3816ea3512d90f4acef2ccb8589', id: headerID, class: {
6606
+ }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '23344a9221a2e6720d7b9de5249dc37256cafa7b', tappable: this.backdropDismiss }), hAsync("div", { key: 'fbc2ba15549c2ab04e759e82df6e177fd80cc0a6', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '748ee5235d0b4cb26d6f1b7589f77af2e37ad28a', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '7ce5fa236cf75e9b1e49c4725c9a811078706554', class: "action-sheet-container" }, hAsync("div", { key: 'dc2251f3bcee4a93e3449f09621cbd2b65d329e9', class: "action-sheet-group", ref: (el) => (this.groupEl = el) }, header !== undefined && (hAsync("div", { key: '48d325c8a852f56ed57a9ada1a6709d05ba32ee2', id: headerID, class: {
6551
6607
  'action-sheet-title': true,
6552
6608
  'action-sheet-has-sub-title': this.subHeader !== undefined,
6553
- } }, header, this.subHeader && hAsync("div", { key: '6d888219145824fd36cdfe0d3c8388bbf2769777', class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (hAsync("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass$3(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && hAsync("ion-ripple-effect", null))))), cancelButton && (hAsync("div", { key: '46f98f0ed5a9bdb3e35feb9ae71c4489c17b7d77', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'e3c457bced8ad5f692e48de26e65f731fd631b4f' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '4cba6dc559f734ecc852e024959210cd0dd25354', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '9df64989aad1b4d1e75edf4d37ab208965cfe37f', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '558089275a29177cefdb2e38eefc9b5c8b62872b' })))))), hAsync("div", { key: 'fa4df6e043b00a6e4126dbc71cb344cfc2b2e7bc', tabindex: "0" })));
6609
+ } }, header, this.subHeader && hAsync("div", { key: '66093728052eb67f37a35f3232761ce4a08896f3', class: "action-sheet-sub-title" }, this.subHeader))), buttons.map((b) => (hAsync("button", Object.assign({}, b.htmlAttributes, { type: "button", id: b.id, class: buttonClass$3(b), onClick: () => this.buttonClick(b), disabled: b.disabled }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && hAsync("ion-ripple-effect", null))))), cancelButton && (hAsync("div", { key: 'f4eb8e3e2885b85af5080df18d0de0bdd1d719de', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: '169f4eb09255aba85062baad49ceb151239fbfb7' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '25fb8a466dd67ea94c79cfb4f9965527e1ce6d42', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: 'eb5b071e120a2c86afdf967af6a763a43044d1ca', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '452ad7e1052b2c681e2d98de8193949755ad4d54' })))))), hAsync("div", { key: 'e1cecf280c987c050d9445e2c458b903f153089b', tabindex: "0", "aria-hidden": "true" })));
6554
6610
  }
6555
6611
  get el() { return getElement(this); }
6556
6612
  static get watchers() { return {
@@ -7232,13 +7288,15 @@ class Alert {
7232
7288
  const msgId = `alert-${overlayIndex}-msg`;
7233
7289
  const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';
7234
7290
  /**
7235
- * If the header is defined, use that. Otherwise, fall back to the subHeader.
7236
- * If neither is defined, don't set aria-labelledby.
7291
+ * Use both the header and subHeader ids if they are defined.
7292
+ * If only the header is defined, use the header id.
7293
+ * If only the subHeader is defined, use the subHeader id.
7294
+ * If neither are defined, do not set aria-labelledby.
7237
7295
  */
7238
- const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;
7239
- 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: {
7296
+ const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
7297
+ 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: {
7240
7298
  zIndex: `${20000 + overlayIndex}`,
7241
- }, 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: 'e35e1a4b81286976c8a6bab570c986f3196b21f4', tabindex: "0" }), hAsync("div", { key: '9089864c80d96ed834bf723f3de863cf1c4a5b97', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: 'dd600f02c84352059c6cdf98821b9c9a831bcdcb', class: "alert-head" }, header && (hAsync("h2", { key: '11afb605e1ccefc889fbdd2533d491bea8fbf183', id: hdrId, class: "alert-title" }, header)), subHeader && (hAsync("h2", { key: 'e53b0613d09d26e5a2cd7c9c6e63ec2535625ce5', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'cef60ec8b34c9aec8bc698f16f55324d1ce67c72', tabindex: "0" })));
7299
+ }, 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" })));
7242
7300
  }
7243
7301
  get el() { return getElement(this); }
7244
7302
  static get watchers() { return {
@@ -7316,7 +7374,7 @@ class App {
7316
7374
  }
7317
7375
  render() {
7318
7376
  const mode = getIonMode$1(this);
7319
- return (hAsync(Host, { key: 'e95cdeb2709edbc74f4e6ebf77cb110154605b72', class: {
7377
+ return (hAsync(Host, { key: '96715520fd05d6f0e6fa26a8ba78792cfccd4c0a', class: {
7320
7378
  [mode]: true,
7321
7379
  'ion-page': true,
7322
7380
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
@@ -7347,7 +7405,7 @@ class Avatar {
7347
7405
  registerInstance(this, hostRef);
7348
7406
  }
7349
7407
  render() {
7350
- return (hAsync(Host, { key: 'dc1e3cd535e419eebe5599574fd2393ebfde8bbc', class: getIonMode$1(this) }, hAsync("slot", { key: 'edb8441c063ea592b41345ea97d88ecd90cb3052' })));
7408
+ return (hAsync(Host, { key: '998217066084f966bf5d356fed85bcbd451f675a', class: getIonMode$1(this) }, hAsync("slot", { key: '1a6f7c9d4dc6a875f86b5b3cda6d59cb39587f22' })));
7351
7409
  }
7352
7410
  static get style() { return {
7353
7411
  ios: IonAvatarIosStyle0,
@@ -7435,7 +7493,7 @@ class BackButton {
7435
7493
  const showBackButton = defaultHref !== undefined;
7436
7494
  const mode = getIonMode$1(this);
7437
7495
  const ariaLabel = inheritedAttributes['aria-label'] || backButtonText || 'back';
7438
- return (hAsync(Host, { key: '8351c93a1812c94c979fb115f07a9ad7b3152188', onClick: this.onClick, class: createColorClasses$1(color, {
7496
+ return (hAsync(Host, { key: '5466624a10f1ab56f5469e6dc07080303880f2fe', onClick: this.onClick, class: createColorClasses$1(color, {
7439
7497
  [mode]: true,
7440
7498
  button: true, // ion-buttons target .button
7441
7499
  'back-button-disabled': disabled,
@@ -7445,7 +7503,7 @@ class BackButton {
7445
7503
  'ion-activatable': true,
7446
7504
  'ion-focusable': true,
7447
7505
  'show-back-button': showBackButton,
7448
- }) }, 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 }))));
7506
+ }) }, 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 }))));
7449
7507
  }
7450
7508
  get el() { return getElement(this); }
7451
7509
  static get style() { return {
@@ -7498,7 +7556,7 @@ class Backdrop {
7498
7556
  }
7499
7557
  render() {
7500
7558
  const mode = getIonMode$1(this);
7501
- return (hAsync(Host, { key: 'c803b4302c8e722064feb03dafe3cb6e190b4f2b', tabindex: "-1", "aria-hidden": "true", class: {
7559
+ return (hAsync(Host, { key: '7abaf2c310aa399607451b14063265e8a5846938', "aria-hidden": "true", class: {
7502
7560
  [mode]: true,
7503
7561
  'backdrop-hide': !this.visible,
7504
7562
  'backdrop-no-tappable': !this.tappable,
@@ -7538,9 +7596,9 @@ class Badge {
7538
7596
  }
7539
7597
  render() {
7540
7598
  const mode = getIonMode$1(this);
7541
- return (hAsync(Host, { key: '1253618692342bcf9487188402dc3d49ae0de480', class: createColorClasses$1(this.color, {
7599
+ return (hAsync(Host, { key: '1a2d39c5deec771a2f2196447627b62a7d4c8389', class: createColorClasses$1(this.color, {
7542
7600
  [mode]: true,
7543
- }) }, hAsync("slot", { key: '71d65e203965ea37b94504a8a0a96beb52d4e356' })));
7601
+ }) }, hAsync("slot", { key: 'fc1b6587f1ed24715748eb6785e7fb7a57cdd5cd' })));
7544
7602
  }
7545
7603
  static get style() { return {
7546
7604
  ios: IonBadgeIosStyle0,
@@ -7626,7 +7684,7 @@ class Breadcrumb {
7626
7684
  // to show the separator as long as it isn't also the last breadcrumb
7627
7685
  // otherwise if not collapsed use the value in separator
7628
7686
  const showSeparator = last ? false : collapsed ? (showCollapsedIndicator && !last ? true : false) : separator;
7629
- return (hAsync(Host, { key: 'dfe55ad57f23e5da5f2e2c51fea99964812472e3', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7687
+ return (hAsync(Host, { key: '32ca61c83721dff52b5e97171ed449dce3584a55', onClick: (ev) => openURL(href, ev, routerDirection, routerAnimation), "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
7630
7688
  [mode]: true,
7631
7689
  'breadcrumb-active': active,
7632
7690
  'breadcrumb-collapsed': collapsed,
@@ -7636,15 +7694,15 @@ class Breadcrumb {
7636
7694
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7637
7695
  'ion-activatable': clickable,
7638
7696
  'ion-focusable': clickable,
7639
- }) }, 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: {
7697
+ }) }, 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: {
7640
7698
  'breadcrumbs-collapsed-indicator': true,
7641
- } }, hAsync("ion-icon", { key: '957d8851af9c99dda263f34eff0b35a0fc212c32', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7699
+ } }, hAsync("ion-icon", { key: 'a849e1142a86f06f207cf11662fa2a560ab7fc6a', "aria-hidden": "true", icon: ellipsisHorizontal, lazy: false }))), showSeparator && (
7642
7700
  /**
7643
7701
  * Separators should not be announced by narrators.
7644
7702
  * We add aria-hidden on the span so that this applies
7645
7703
  * to any custom separators too.
7646
7704
  */
7647
- 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, "/")))))));
7705
+ 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, "/")))))));
7648
7706
  }
7649
7707
  get el() { return getElement(this); }
7650
7708
  static get style() { return {
@@ -7784,12 +7842,12 @@ class Breadcrumbs {
7784
7842
  render() {
7785
7843
  const { color, collapsed } = this;
7786
7844
  const mode = getIonMode$1(this);
7787
- return (hAsync(Host, { key: '18ffba1642f10cc2bc31440e84f23aa6f042e501', class: createColorClasses$1(color, {
7845
+ return (hAsync(Host, { key: 'fe64e9cdf597ede2db140bf5fa05a0359d82db57', class: createColorClasses$1(color, {
7788
7846
  [mode]: true,
7789
7847
  'in-toolbar': hostContext('ion-toolbar', this.el),
7790
7848
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
7791
7849
  'breadcrumbs-collapsed': collapsed,
7792
- }) }, hAsync("slot", { key: '3db6d31590e3047889ce554d57d155c8ea2e1455', onSlotchange: this.slotChanged })));
7850
+ }) }, hAsync("slot", { key: 'a2c99b579e339055c50a613d5c6b61032f5ddffe', onSlotchange: this.slotChanged })));
7793
7851
  }
7794
7852
  get el() { return getElement(this); }
7795
7853
  static get watchers() { return {
@@ -8032,7 +8090,7 @@ class Button {
8032
8090
  {
8033
8091
  type !== 'button' && this.renderHiddenButton();
8034
8092
  }
8035
- return (hAsync(Host, { key: '8f3a0363d46ef888d22b0b0812c70cb4f79e6efa', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8093
+ return (hAsync(Host, { key: '340a809d85698741bb36e796355cae89a970655f', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
8036
8094
  [mode]: true,
8037
8095
  [buttonType]: true,
8038
8096
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -8047,7 +8105,7 @@ class Button {
8047
8105
  'button-disabled': disabled,
8048
8106
  'ion-activatable': true,
8049
8107
  'ion-focusable': true,
8050
- }) }, 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 }))));
8108
+ }) }, 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 }))));
8051
8109
  }
8052
8110
  get el() { return getElement(this); }
8053
8111
  static get watchers() { return {
@@ -8098,10 +8156,10 @@ class Buttons {
8098
8156
  }
8099
8157
  render() {
8100
8158
  const mode = getIonMode$1(this);
8101
- return (hAsync(Host, { key: '4e5ce9abb3f56e8c91e3eb58c2819300e61eba24', class: {
8159
+ return (hAsync(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
8102
8160
  [mode]: true,
8103
8161
  ['buttons-collapse']: this.collapse,
8104
- } }, hAsync("slot", { key: 'f2f360ec888b6e946b512fed07431fab47c61482' })));
8162
+ } }, hAsync("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
8105
8163
  }
8106
8164
  static get style() { return {
8107
8165
  ios: IonButtonsIosStyle0,
@@ -8170,7 +8228,7 @@ class Card {
8170
8228
  }
8171
8229
  render() {
8172
8230
  const mode = getIonMode$1(this);
8173
- return (hAsync(Host, { key: '8584300522f382ee8891c039d71da82533dfa36a', class: createColorClasses$1(this.color, {
8231
+ return (hAsync(Host, { key: '85e9b30bd81e79a0c7ac75cb3664bdcf9e4afc4d', class: createColorClasses$1(this.color, {
8174
8232
  [mode]: true,
8175
8233
  'card-disabled': this.disabled,
8176
8234
  'ion-activatable': this.isClickable(),
@@ -8217,7 +8275,7 @@ class CardContent {
8217
8275
  }
8218
8276
  render() {
8219
8277
  const mode = getIonMode$1(this);
8220
- return (hAsync(Host, { key: '2a2d0b48aad4b83990a1748fce60e772514eb223', class: {
8278
+ return (hAsync(Host, { key: 'd98e4d1fc6ad3237549f9bc17e4c67ec5059b1b3', class: {
8221
8279
  [mode]: true,
8222
8280
  // Used internally for styling
8223
8281
  [`card-content-${mode}`]: true,
@@ -8254,11 +8312,11 @@ class CardHeader {
8254
8312
  }
8255
8313
  render() {
8256
8314
  const mode = getIonMode$1(this);
8257
- return (hAsync(Host, { key: '18d12507ec6e650a72d721e9d0f4128b5e86df1d', class: createColorClasses$1(this.color, {
8315
+ return (hAsync(Host, { key: '64246b81931203a64d553c788cd736f41e23f37b', class: createColorClasses$1(this.color, {
8258
8316
  'card-header-translucent': this.translucent,
8259
8317
  'ion-inherit-color': true,
8260
8318
  [mode]: true,
8261
- }) }, hAsync("slot", { key: '3374c087d8c3f014082787e255432e7a335ef44f' })));
8319
+ }) }, hAsync("slot", { key: 'af2da2dfe266889afeb57fac25c6a730558dbba4' })));
8262
8320
  }
8263
8321
  static get style() { return {
8264
8322
  ios: IonCardHeaderIosStyle0,
@@ -8293,10 +8351,10 @@ class CardSubtitle {
8293
8351
  }
8294
8352
  render() {
8295
8353
  const mode = getIonMode$1(this);
8296
- return (hAsync(Host, { key: 'cbcb01bd01cf6de64a0b04fb626e42b07ceb8f53', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8354
+ return (hAsync(Host, { key: '84d820a19d9074f9c8bc61ccba1ca40062a60b73', role: "heading", "aria-level": "3", class: createColorClasses$1(this.color, {
8297
8355
  'ion-inherit-color': true,
8298
8356
  [mode]: true,
8299
- }) }, hAsync("slot", { key: 'cbcaa73aa5799882c48d6c0aabfb13651bcc91c0' })));
8357
+ }) }, hAsync("slot", { key: 'e4d07d395a1f4469a90847636083101b32b776a1' })));
8300
8358
  }
8301
8359
  static get style() { return {
8302
8360
  ios: IonCardSubtitleIosStyle0,
@@ -8330,10 +8388,10 @@ class CardTitle {
8330
8388
  }
8331
8389
  render() {
8332
8390
  const mode = getIonMode$1(this);
8333
- return (hAsync(Host, { key: 'f904a0ca6489f147d03c9c5f9f2c5549cdb38d1a', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8391
+ return (hAsync(Host, { key: 'fca001a86396e83718d5211cd71912fdf40dea2f', role: "heading", "aria-level": "2", class: createColorClasses$1(this.color, {
8334
8392
  'ion-inherit-color': true,
8335
8393
  [mode]: true,
8336
- }) }, hAsync("slot", { key: 'effb921de4ad8dfbbe318b3f692f4005812da7b1' })));
8394
+ }) }, hAsync("slot", { key: '2ba416aed488b2ff462fa75fb3b70373a6dd7da6' })));
8337
8395
  }
8338
8396
  static get style() { return {
8339
8397
  ios: IonCardTitleIosStyle0,
@@ -8418,7 +8476,8 @@ class Checkbox {
8418
8476
  componentWillLoad() {
8419
8477
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
8420
8478
  }
8421
- setFocus() {
8479
+ /** @internal */
8480
+ async setFocus() {
8422
8481
  if (this.focusEl) {
8423
8482
  this.focusEl.focus();
8424
8483
  }
@@ -8428,7 +8487,7 @@ class Checkbox {
8428
8487
  const mode = getIonMode$1(this);
8429
8488
  const path = getSVGPath(mode, indeterminate);
8430
8489
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8431
- return (hAsync(Host, { key: 'd7a07fbf130413eaa4622c07786e8a00723113eb', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8490
+ return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8432
8491
  [mode]: true,
8433
8492
  'in-item': hostContext('ion-item', el),
8434
8493
  'checkbox-checked': checked,
@@ -8438,10 +8497,10 @@ class Checkbox {
8438
8497
  [`checkbox-justify-${justify}`]: justify !== undefined,
8439
8498
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8440
8499
  [`checkbox-label-placement-${labelPlacement}`]: true,
8441
- }), 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: {
8500
+ }), 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: {
8442
8501
  'label-text-wrapper': true,
8443
8502
  'label-text-wrapper-hidden': el.textContent === '',
8444
- }, 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)))));
8503
+ }, 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)))));
8445
8504
  }
8446
8505
  getSVGPath(mode, indeterminate) {
8447
8506
  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" }));
@@ -8467,7 +8526,8 @@ class Checkbox {
8467
8526
  "value": [8],
8468
8527
  "labelPlacement": [1, "label-placement"],
8469
8528
  "justify": [1],
8470
- "alignment": [1]
8529
+ "alignment": [1],
8530
+ "setFocus": [64]
8471
8531
  },
8472
8532
  "$listeners$": undefined,
8473
8533
  "$lazyBundleId$": "-",
@@ -8494,12 +8554,12 @@ class Chip {
8494
8554
  }
8495
8555
  render() {
8496
8556
  const mode = getIonMode$1(this);
8497
- return (hAsync(Host, { key: '7dd923c1b28d1eb1efa348f66f49cec067645af9', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8557
+ return (hAsync(Host, { key: 'fa2e9a4837ef87a17ef10f388e8caa7f604d9145', "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
8498
8558
  [mode]: true,
8499
8559
  'chip-outline': this.outline,
8500
8560
  'chip-disabled': this.disabled,
8501
8561
  'ion-activatable': true,
8502
- }) }, hAsync("slot", { key: '7ede838bf109dc27a898ee2dcdeabc3f439c8e6f' }), mode === 'md' && hAsync("ion-ripple-effect", { key: '5acb073029544e73fcc0db4cc4e661ec1df4d231' })));
8562
+ }) }, hAsync("slot", { key: '3793fbd9d915cef7241fb101e2bc64c08b9ba482' }), mode === 'md' && hAsync("ion-ripple-effect", { key: 'd3b95b53918611dec095a50f2aaaab65617947a4' })));
8503
8563
  }
8504
8564
  static get style() { return {
8505
8565
  ios: IonChipIosStyle0,
@@ -8650,9 +8710,9 @@ class Col {
8650
8710
  render() {
8651
8711
  const isRTL = document.dir === 'rtl';
8652
8712
  const mode = getIonMode$1(this);
8653
- return (hAsync(Host, { key: 'c37fa4c4c993385ccbb6f4e89b2f390b140507a0', class: {
8713
+ return (hAsync(Host, { key: '32ed75d81dd09d9bc8999f6d42e5b3cb99c84d91', class: {
8654
8714
  [mode]: true,
8655
- }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '6a5296ff0b9dee6600c2dafe7363a065d053bac2' })));
8715
+ }, style: Object.assign(Object.assign(Object.assign(Object.assign({}, this.calculateOffset(isRTL)), this.calculatePull(isRTL)), this.calculatePush(isRTL)), this.calculateSize()) }, hAsync("slot", { key: '38f8d0440c20cc6d1b1d6a654d07f16de61d8134' })));
8656
8716
  }
8657
8717
  static get style() { return IonColStyle0; }
8658
8718
  static get cmpMeta() { return {
@@ -9026,7 +9086,7 @@ class Content {
9026
9086
  const forceOverscroll = this.shouldForceOverscroll();
9027
9087
  const transitionShadow = mode === 'ios';
9028
9088
  this.resize();
9029
- return (hAsync(Host, Object.assign({ key: '92a7cbc2e9c812930f4231bd846411933a5dded6', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9089
+ return (hAsync(Host, Object.assign({ key: 'f2a24aa66dbf5c76f9d4b06f708eb73cadc239df', role: isMainContent ? 'main' : undefined, class: createColorClasses$1(this.color, {
9030
9090
  [mode]: true,
9031
9091
  'content-sizing': hostContext('ion-popover', this.el),
9032
9092
  overscroll: forceOverscroll,
@@ -9034,12 +9094,12 @@ class Content {
9034
9094
  }), style: {
9035
9095
  '--offset-top': `${this.cTop}px`,
9036
9096
  '--offset-bottom': `${this.cBottom}px`,
9037
- } }, 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: {
9097
+ } }, 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: {
9038
9098
  'inner-scroll': true,
9039
9099
  'scroll-x': scrollX,
9040
9100
  'scroll-y': scrollY,
9041
9101
  overscroll: (scrollX || scrollY) && forceOverscroll,
9042
- }, 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));
9102
+ }, 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));
9043
9103
  }
9044
9104
  get el() { return getElement(this); }
9045
9105
  static get style() { return IonContentStyle0; }
@@ -12560,7 +12620,7 @@ class Datetime {
12560
12620
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
12561
12621
  const hasWheelVariant = hasDatePresentation && preferWheel;
12562
12622
  renderHiddenInput(true, el, name, formatValue(value), disabled);
12563
- return (hAsync(Host, { key: '2933ce5caaeb21a633b1ec4d936e86b0f0890807', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12623
+ return (hAsync(Host, { key: '7afbb1a7e6c78389b4588999779e5c90e010e85d', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
12564
12624
  [mode]: true,
12565
12625
  ['datetime-readonly']: readonly,
12566
12626
  ['datetime-disabled']: disabled,
@@ -12570,7 +12630,7 @@ class Datetime {
12570
12630
  [`datetime-size-${size}`]: true,
12571
12631
  [`datetime-prefer-wheel`]: hasWheelVariant,
12572
12632
  [`datetime-grid`]: isGridStyle,
12573
- })) }, hAsync("div", { key: '0efc9ef0aa1a29234412b2eddf5d7ff899b7543f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12633
+ })) }, hAsync("div", { key: '297c458d4d17154cb297e2ef5926505bcb2d1fce', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
12574
12634
  }
12575
12635
  get el() { return getElement(this); }
12576
12636
  static get watchers() { return {
@@ -12978,11 +13038,11 @@ class DatetimeButton {
12978
13038
  render() {
12979
13039
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
12980
13040
  const mode = getIonMode$1(this);
12981
- return (hAsync(Host, { key: '0be955404133adbb31ae16a6599014bb29765f19', class: createColorClasses$1(color, {
13041
+ return (hAsync(Host, { key: '26e606af6f067a5774db37ed41387ffebb941777', class: createColorClasses$1(color, {
12982
13042
  [mode]: true,
12983
13043
  [`${selectedButton}-active`]: datetimeActive,
12984
13044
  ['datetime-button-disabled']: disabled,
12985
- }) }, 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' })))));
13045
+ }) }, 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' })))));
12986
13046
  }
12987
13047
  get el() { return getElement(this); }
12988
13048
  static get style() { return {
@@ -13056,12 +13116,12 @@ class Fab {
13056
13116
  render() {
13057
13117
  const { horizontal, vertical, edge } = this;
13058
13118
  const mode = getIonMode$1(this);
13059
- return (hAsync(Host, { key: 'cb44cf6486b0a6439b99da87c065b0b52e2514f4', class: {
13119
+ return (hAsync(Host, { key: '8a310806d0e748d7ebb0ed3d9a2652038e0f2960', class: {
13060
13120
  [mode]: true,
13061
13121
  [`fab-horizontal-${horizontal}`]: horizontal !== undefined,
13062
13122
  [`fab-vertical-${vertical}`]: vertical !== undefined,
13063
13123
  'fab-edge': edge,
13064
- } }, hAsync("slot", { key: '1ed484c7ecb10cd81fbca9a4f5c4049bf82f9f8a' })));
13124
+ } }, hAsync("slot", { key: '9394ef6d6e5b0410fa6ba212171f687fb178ce2d' })));
13065
13125
  }
13066
13126
  get el() { return getElement(this); }
13067
13127
  static get watchers() { return {
@@ -13151,7 +13211,7 @@ class FabButton {
13151
13211
  rel: this.rel,
13152
13212
  target: this.target,
13153
13213
  };
13154
- return (hAsync(Host, { key: 'eb347f7d6749c40637540d84778eb8d1b667a947', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13214
+ return (hAsync(Host, { key: '4eee204d20b0e2ffed49a88f6cb3e04b6697965c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
13155
13215
  [mode]: true,
13156
13216
  'fab-button-in-list': inList,
13157
13217
  'fab-button-translucent-in-list': inList && translucent,
@@ -13162,7 +13222,7 @@ class FabButton {
13162
13222
  'ion-activatable': true,
13163
13223
  'ion-focusable': true,
13164
13224
  [`fab-button-${size}`]: size !== undefined,
13165
- }) }, 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' }))));
13225
+ }) }, 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' }))));
13166
13226
  }
13167
13227
  get el() { return getElement(this); }
13168
13228
  static get style() { return {
@@ -13213,11 +13273,11 @@ class FabList {
13213
13273
  }
13214
13274
  render() {
13215
13275
  const mode = getIonMode$1(this);
13216
- return (hAsync(Host, { key: 'fa1d195b9950654ba0e984bf61d981c977d05275', class: {
13276
+ return (hAsync(Host, { key: '64b33366447f66c7f979cfac56307fbb1a6fac1c', class: {
13217
13277
  [mode]: true,
13218
13278
  'fab-list-active': this.activated,
13219
13279
  [`fab-list-side-${this.side}`]: true,
13220
- } }, hAsync("slot", { key: '2ec738c66c05112e1e2521155d6adfc36d2fd1db' })));
13280
+ } }, hAsync("slot", { key: 'd9f474f7f20fd7e813db358fddc720534ca05bb6' })));
13221
13281
  }
13222
13282
  get el() { return getElement(this); }
13223
13283
  static get watchers() { return {
@@ -13669,7 +13729,7 @@ class Footer {
13669
13729
  const mode = getIonMode$1(this);
13670
13730
  const tabs = this.el.closest('ion-tabs');
13671
13731
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
13672
- return (hAsync(Host, { key: '5da19dc38ba73e1ddfd1bef3ebd485105d77c751', role: "contentinfo", class: {
13732
+ return (hAsync(Host, { key: 'ddc228f1a1e7fa4f707dccf74db2490ca3241137', role: "contentinfo", class: {
13673
13733
  [mode]: true,
13674
13734
  // Used internally for styling
13675
13735
  [`footer-${mode}`]: true,
@@ -13677,7 +13737,7 @@ class Footer {
13677
13737
  [`footer-translucent-${mode}`]: translucent,
13678
13738
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
13679
13739
  [`footer-collapse-${collapse}`]: collapse !== undefined,
13680
- } }, mode === 'ios' && translucent && hAsync("div", { key: 'fafad08090a33d8c4e8a5b63d61929dcb89aab47', class: "footer-background" }), hAsync("slot", { key: 'e0a443d346afa55e4317c0bc1263fdbe3c619559' })));
13740
+ } }, mode === 'ios' && translucent && hAsync("div", { key: 'e16ed4963ff94e06de77eb8038201820af73937c', class: "footer-background" }), hAsync("slot", { key: 'f186934febf85d37133d9351a96c1a64b0a4b203' })));
13681
13741
  }
13682
13742
  get el() { return getElement(this); }
13683
13743
  static get style() { return {
@@ -13708,10 +13768,10 @@ class Grid {
13708
13768
  }
13709
13769
  render() {
13710
13770
  const mode = getIonMode$1(this);
13711
- return (hAsync(Host, { key: '930ce78b02f8360fbca08a35d364d2c09128c6c8', class: {
13771
+ return (hAsync(Host, { key: '617127ecfabf9bf615bef1dda1be3fed5a065949', class: {
13712
13772
  [mode]: true,
13713
13773
  'grid-fixed': this.fixed,
13714
- } }, hAsync("slot", { key: 'c47bf7ef2197f5ebc42d3e2c55044276fb0db393' })));
13774
+ } }, hAsync("slot", { key: 'c781fff853b093d8f44bdb7943bbc4f17c903803' })));
13715
13775
  }
13716
13776
  static get style() { return IonGridStyle0; }
13717
13777
  static get cmpMeta() { return {
@@ -14042,14 +14102,14 @@ class Header {
14042
14102
  const collapse = this.collapse || 'none';
14043
14103
  // banner role must be at top level, so remove role if inside a menu
14044
14104
  const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
14045
- return (hAsync(Host, Object.assign({ key: 'c687314ef290793a9d633ad20cfc5eeb47621e31', role: roleType, class: {
14105
+ return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
14046
14106
  [mode]: true,
14047
14107
  // Used internally for styling
14048
14108
  [`header-${mode}`]: true,
14049
14109
  [`header-translucent`]: this.translucent,
14050
14110
  [`header-collapse-${collapse}`]: true,
14051
14111
  [`header-translucent-${mode}`]: this.translucent,
14052
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: 'b429996046082405a91e7c23f95516db0b736f12', class: "header-background" }), hAsync("slot", { key: 'e17a8965f8d3a33c1bfcb056c153d8242e5229fa' })));
14112
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
14053
14113
  }
14054
14114
  get el() { return getElement(this); }
14055
14115
  static get style() { return {
@@ -14328,7 +14388,7 @@ class Img {
14328
14388
  render() {
14329
14389
  const { loadSrc, alt, onLoad, loadError, inheritedAttributes } = this;
14330
14390
  const { draggable } = inheritedAttributes;
14331
- 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) })));
14391
+ 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) })));
14332
14392
  }
14333
14393
  get el() { return getElement(this); }
14334
14394
  static get watchers() { return {
@@ -14535,7 +14595,7 @@ class InfiniteScroll {
14535
14595
  render() {
14536
14596
  const mode = getIonMode$1(this);
14537
14597
  const disabled = this.disabled;
14538
- return (hAsync(Host, { key: '1444429a86950c449953cbf578436cc8cabf40ec', class: {
14598
+ return (hAsync(Host, { key: 'e844956795f69be33396ce4480aa7a54ad01b28c', class: {
14539
14599
  [mode]: true,
14540
14600
  'infinite-scroll-loading': this.isLoading,
14541
14601
  'infinite-scroll-enabled': !disabled,
@@ -14591,11 +14651,11 @@ class InfiniteScrollContent {
14591
14651
  }
14592
14652
  render() {
14593
14653
  const mode = getIonMode$1(this);
14594
- return (hAsync(Host, { key: '060278bf9cb0321e182352f9613be4ebbb028259', class: {
14654
+ return (hAsync(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
14595
14655
  [mode]: true,
14596
14656
  // Used internally for styling
14597
14657
  [`infinite-scroll-content-${mode}`]: true,
14598
- } }, 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())));
14658
+ } }, 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())));
14599
14659
  }
14600
14660
  static get style() { return {
14601
14661
  ios: IonInfiniteScrollContentIosStyle0,
@@ -14957,6 +15017,8 @@ class Input {
14957
15017
  this.ionBlur = createEvent(this, "ionBlur", 7);
14958
15018
  this.ionFocus = createEvent(this, "ionFocus", 7);
14959
15019
  this.inputId = `ion-input-${inputIds++}`;
15020
+ this.helperTextId = `${this.inputId}-helper-text`;
15021
+ this.errorTextId = `${this.inputId}-error-text`;
14960
15022
  this.inheritedAttributes = {};
14961
15023
  this.isComposing = false;
14962
15024
  /**
@@ -15219,8 +15281,21 @@ class Input {
15219
15281
  * Renders the helper text or error text values
15220
15282
  */
15221
15283
  renderHintText() {
15222
- const { helperText, errorText } = this;
15223
- return [hAsync("div", { class: "helper-text" }, helperText), hAsync("div", { class: "error-text" }, errorText)];
15284
+ const { helperText, errorText, helperTextId, errorTextId } = this;
15285
+ return [
15286
+ hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
15287
+ hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
15288
+ ];
15289
+ }
15290
+ getHintTextID() {
15291
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
15292
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
15293
+ return errorTextId;
15294
+ }
15295
+ if (helperText) {
15296
+ return helperTextId;
15297
+ }
15298
+ return undefined;
15224
15299
  }
15225
15300
  renderCounter() {
15226
15301
  const { counter, maxlength, counterFormatter, value } = this;
@@ -15327,7 +15402,7 @@ class Input {
15327
15402
  * TODO(FW-5592): Remove hasStartEndSlots condition
15328
15403
  */
15329
15404
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
15330
- return (hAsync(Host, { key: '907ce98a82b5cfae5a08504cd79e00a2330b7444', class: createColorClasses$1(this.color, {
15405
+ return (hAsync(Host, { key: '54b5662d9a7f011a85e4119650c92b9af275bf96', class: createColorClasses$1(this.color, {
15331
15406
  [mode]: true,
15332
15407
  'has-value': hasValue,
15333
15408
  'has-focus': hasFocus,
@@ -15338,7 +15413,7 @@ class Input {
15338
15413
  'in-item': inItem,
15339
15414
  'in-item-color': hostContext('ion-item.ion-color', this.el),
15340
15415
  'input-disabled': disabled,
15341
- }) }, hAsync("label", { key: '59d5bb45d2a5b828bba0ed8687a632a551e2f4d8', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'f93f129d08246d0e9a601c100d718534d6403853', class: "native-wrapper" }, hAsync("slot", { key: '54eeb1a6bace662b7eb0d7e27180ea3d7e3a3729', name: "start" }), hAsync("input", Object.assign({ key: 'b3e0be55bc1a4a539ae3b0fdcf7fc078723cca16', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '5f6373504a6d0d074bfbf875c794d45ea2748175', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
15416
+ }) }, 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) => {
15342
15417
  /**
15343
15418
  * This prevents mobile browsers from
15344
15419
  * blurring the input when the clear
@@ -15353,7 +15428,7 @@ class Input {
15353
15428
  * for screen readers as it means users would be unable to swipe past the clear button.
15354
15429
  */
15355
15430
  ev.stopPropagation();
15356
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '230d77973aa83458ceb32bf52e3abe9bc322cfe6', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '9d69ac6e8a3c4b2b303dba2478f82695d5755ed2', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'ac61f16237ce731e0745ab72d0fc3f066252464a', class: "input-highlight" })), this.renderBottomContent()));
15431
+ }, 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()));
15357
15432
  }
15358
15433
  get el() { return getElement(this); }
15359
15434
  static get watchers() { return {
@@ -15475,16 +15550,16 @@ class InputPasswordToggle {
15475
15550
  const showPasswordIcon = (_a = this.showIcon) !== null && _a !== void 0 ? _a : eye;
15476
15551
  const hidePasswordIcon = (_b = this.hideIcon) !== null && _b !== void 0 ? _b : eyeOff;
15477
15552
  const isPasswordVisible = type === 'text';
15478
- return (hAsync(Host, { key: 'ed1c29726ce0c91548f0e2ada61e3f8b5c813d2d', class: createColorClasses$1(color, {
15553
+ return (hAsync(Host, { key: 'd9811e25bfeb2aa197352bb9be852e9e420739d5', class: createColorClasses$1(color, {
15479
15554
  [mode]: true,
15480
- }) }, 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) => {
15555
+ }) }, 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) => {
15481
15556
  /**
15482
15557
  * This prevents mobile browsers from
15483
15558
  * blurring the input when the password toggle
15484
15559
  * button is activated.
15485
15560
  */
15486
15561
  ev.preventDefault();
15487
- }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '1f2119c30b56c800d9af44e6499445a0ebb466cf', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15562
+ }, onClick: this.togglePasswordVisibility }, hAsync("ion-icon", { key: '9c88de8f4631d9bde222ce2edf6950d639e04773', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? hidePasswordIcon : showPasswordIcon }))));
15488
15563
  }
15489
15564
  get el() { return getElement(this); }
15490
15565
  static get watchers() { return {
@@ -15780,11 +15855,11 @@ class ItemDivider {
15780
15855
  }
15781
15856
  render() {
15782
15857
  const mode = getIonMode$1(this);
15783
- return (hAsync(Host, { key: '60fda1dab7dbc0038ec7ff68a661896430f7d5c5', class: createColorClasses$1(this.color, {
15858
+ return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15784
15859
  [mode]: true,
15785
15860
  'item-divider-sticky': this.sticky,
15786
15861
  item: true,
15787
- }) }, 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" }))));
15862
+ }) }, 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" }))));
15788
15863
  }
15789
15864
  get el() { return getElement(this); }
15790
15865
  static get style() { return {
@@ -15816,7 +15891,7 @@ class ItemGroup {
15816
15891
  }
15817
15892
  render() {
15818
15893
  const mode = getIonMode$1(this);
15819
- return (hAsync(Host, { key: '24ff047b7c45f963f0dad072c65d38a230c2bc97', role: "group", class: {
15894
+ return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15820
15895
  [mode]: true,
15821
15896
  // Used internally for styling
15822
15897
  [`item-group-${mode}`]: true,
@@ -15884,12 +15959,12 @@ class ItemOption {
15884
15959
  href: this.href,
15885
15960
  target: this.target,
15886
15961
  };
15887
- return (hAsync(Host, { key: '1900e015f593fefd710478a2088e052399c957eb', onClick: this.onClick, class: createColorClasses$1(this.color, {
15962
+ return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
15888
15963
  [mode]: true,
15889
15964
  'item-option-disabled': disabled,
15890
15965
  'item-option-expandable': expandable,
15891
15966
  'ion-activatable': true,
15892
- }) }, 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' }))));
15967
+ }) }, 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' }))));
15893
15968
  }
15894
15969
  get el() { return getElement(this); }
15895
15970
  static get style() { return {
@@ -15936,7 +16011,7 @@ class ItemOptions {
15936
16011
  render() {
15937
16012
  const mode = getIonMode$1(this);
15938
16013
  const isEnd = isEndSide(this.side);
15939
- return (hAsync(Host, { key: 'e28cd6a236323b5cc203c9b96782aa81024da924', class: {
16014
+ return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
15940
16015
  [mode]: true,
15941
16016
  // Used internally for styling
15942
16017
  [`item-options-${mode}`]: true,
@@ -16398,7 +16473,7 @@ class ItemSliding {
16398
16473
  }
16399
16474
  render() {
16400
16475
  const mode = getIonMode$1(this);
16401
- return (hAsync(Host, { key: '99f87c8bd794ae69830b407ba55013ac44793c26', class: {
16476
+ return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16402
16477
  [mode]: true,
16403
16478
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16404
16479
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16507,13 +16582,13 @@ class Label {
16507
16582
  render() {
16508
16583
  const position = this.position;
16509
16584
  const mode = getIonMode$1(this);
16510
- return (hAsync(Host, { key: 'c2c0f388dab910d294efb9fbb409ee4ef829c1ed', class: createColorClasses$1(this.color, {
16585
+ return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16511
16586
  [mode]: true,
16512
16587
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16513
16588
  [`label-${position}`]: position !== undefined,
16514
16589
  [`label-no-animate`]: this.noAnimate,
16515
16590
  'label-rtl': document.dir === 'rtl',
16516
- }) }, hAsync("slot", { key: '4de6b69950f417873a13c851018ec31ea2686f0a' })));
16591
+ }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16517
16592
  }
16518
16593
  get el() { return getElement(this); }
16519
16594
  static get watchers() { return {
@@ -16569,7 +16644,7 @@ class List {
16569
16644
  render() {
16570
16645
  const mode = getIonMode$1(this);
16571
16646
  const { lines, inset } = this;
16572
- return (hAsync(Host, { key: '8bde220025a7eeca6da075379c6487c4c9bdddc1', role: "list", class: {
16647
+ return (hAsync(Host, { key: '5ff2b0b3989cc99ce17abb8bcd7ec1847940d1ec', role: "list", class: {
16573
16648
  [mode]: true,
16574
16649
  // Used internally for styling
16575
16650
  [`list-${mode}`]: true,
@@ -16615,10 +16690,10 @@ class ListHeader {
16615
16690
  render() {
16616
16691
  const { lines } = this;
16617
16692
  const mode = getIonMode$1(this);
16618
- return (hAsync(Host, { key: '7e2e050f13722f2b870a2415d99a9e631e9ca267', class: createColorClasses$1(this.color, {
16693
+ return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16619
16694
  [mode]: true,
16620
16695
  [`list-header-lines-${lines}`]: lines !== undefined,
16621
- }) }, hAsync("div", { key: '6117bebc45800d874e9b75355476fbced5cc8398', class: "list-header-inner" }, hAsync("slot", { key: '9165fb274cd2c45a5a65c271d8b1f30e8a00c890' }))));
16696
+ }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16622
16697
  }
16623
16698
  static get style() { return {
16624
16699
  ios: IonListHeaderIosStyle0,
@@ -16887,9 +16962,9 @@ class Loading {
16887
16962
  * Otherwise, don't set aria-labelledby.
16888
16963
  */
16889
16964
  const ariaLabelledBy = message !== undefined ? msgId : null;
16890
- return (hAsync(Host, Object.assign({ key: 'fb3d2cd7cd0539ed6540d8be50e243c7916b3ca2', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16965
+ return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16891
16966
  zIndex: `${40000 + this.overlayIndex}`,
16892
- }, 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: '4ebfbb67c92e8eb56c27dd7c199b35bf6be1cf63', tabindex: "0" }), hAsync("div", { key: '9492723cd87f1ef75534e449d4bc2b2deb0cb3cc', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'd9eb42454e48c82704d974a68b80ceb4de990417', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'cdb046bad89872f4208ae466979315652766bf3a', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '412d1bb537dafa6e6863d07ddc15f5969fe0617d', tabindex: "0" })));
16967
+ }, 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" })));
16893
16968
  }
16894
16969
  get el() { return getElement(this); }
16895
16970
  static get watchers() { return {
@@ -17241,7 +17316,7 @@ const createMenuController = () => {
17241
17316
  menus.splice(index, 1);
17242
17317
  }
17243
17318
  };
17244
- const _setOpen = async (menu, shouldOpen, animated) => {
17319
+ const _setOpen = async (menu, shouldOpen, animated, role) => {
17245
17320
  if (isAnimatingSync()) {
17246
17321
  return false;
17247
17322
  }
@@ -17251,7 +17326,7 @@ const createMenuController = () => {
17251
17326
  await openedMenu.setOpen(false, false);
17252
17327
  }
17253
17328
  }
17254
- return menu._setOpen(shouldOpen, animated);
17329
+ return menu._setOpen(shouldOpen, animated, role);
17255
17330
  };
17256
17331
  const _createAnimation = (type, menuCmp) => {
17257
17332
  const animationBuilder = menuAnimations.get(type); // TODO(FW-2832): type
@@ -17485,13 +17560,13 @@ class Menu {
17485
17560
  if (shouldClose) {
17486
17561
  ev.preventDefault();
17487
17562
  ev.stopPropagation();
17488
- this.close();
17563
+ this.close(undefined, BACKDROP);
17489
17564
  }
17490
17565
  }
17491
17566
  }
17492
17567
  onKeydown(ev) {
17493
17568
  if (ev.key === 'Escape') {
17494
- this.close();
17569
+ this.close(undefined, BACKDROP);
17495
17570
  }
17496
17571
  }
17497
17572
  /**
@@ -17520,8 +17595,8 @@ class Menu {
17520
17595
  * Closes the menu. If the menu is already closed or it can't be closed,
17521
17596
  * it returns `false`.
17522
17597
  */
17523
- close(animated = true) {
17524
- return this.setOpen(false, animated);
17598
+ close(animated = true, role) {
17599
+ return this.setOpen(false, animated, role);
17525
17600
  }
17526
17601
  /**
17527
17602
  * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.
@@ -17534,8 +17609,8 @@ class Menu {
17534
17609
  * Opens or closes the button.
17535
17610
  * If the operation can't be completed successfully, it returns `false`.
17536
17611
  */
17537
- setOpen(shouldOpen, animated = true) {
17538
- return menuController._setOpen(this, shouldOpen, animated);
17612
+ setOpen(shouldOpen, animated = true, role) {
17613
+ return menuController._setOpen(this, shouldOpen, animated, role);
17539
17614
  }
17540
17615
  trapKeyboardFocus(ev, doc) {
17541
17616
  const target = ev.target;
@@ -17573,12 +17648,12 @@ class Menu {
17573
17648
  }
17574
17649
  }
17575
17650
  }
17576
- async _setOpen(shouldOpen, animated = true) {
17651
+ async _setOpen(shouldOpen, animated = true, role) {
17577
17652
  // If the menu is disabled or it is currently being animated, let's do nothing
17578
17653
  if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {
17579
17654
  return false;
17580
17655
  }
17581
- this.beforeAnimation(shouldOpen);
17656
+ this.beforeAnimation(shouldOpen, role);
17582
17657
  await this.loadAnimation();
17583
17658
  await this.startAnimation(shouldOpen, animated);
17584
17659
  /**
@@ -17590,7 +17665,7 @@ class Menu {
17590
17665
  this.operationCancelled = false;
17591
17666
  return false;
17592
17667
  }
17593
- this.afterAnimation(shouldOpen);
17668
+ this.afterAnimation(shouldOpen, role);
17594
17669
  return true;
17595
17670
  }
17596
17671
  async loadAnimation() {
@@ -17665,7 +17740,7 @@ class Menu {
17665
17740
  return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);
17666
17741
  }
17667
17742
  onWillStart() {
17668
- this.beforeAnimation(!this._isOpen);
17743
+ this.beforeAnimation(!this._isOpen, GESTURE);
17669
17744
  return this.loadAnimation();
17670
17745
  }
17671
17746
  onStart() {
@@ -17732,10 +17807,10 @@ class Menu {
17732
17807
  const playTo = this._isOpen ? !shouldComplete : shouldComplete;
17733
17808
  this.animation
17734
17809
  .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')
17735
- .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })
17810
+ .onFinish(() => this.afterAnimation(shouldOpen, GESTURE), { oneTimeCallback: true })
17736
17811
  .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);
17737
17812
  }
17738
- beforeAnimation(shouldOpen) {
17813
+ beforeAnimation(shouldOpen, role) {
17739
17814
  assert(!this.isAnimating, '_before() should not be called while animating');
17740
17815
  // this places the menu into the correct location before it animates in
17741
17816
  // this css class doesn't actually kick off any animations
@@ -17774,10 +17849,10 @@ class Menu {
17774
17849
  this.ionWillOpen.emit();
17775
17850
  }
17776
17851
  else {
17777
- this.ionWillClose.emit();
17852
+ this.ionWillClose.emit({ role });
17778
17853
  }
17779
17854
  }
17780
- afterAnimation(isOpen) {
17855
+ afterAnimation(isOpen, role) {
17781
17856
  var _a;
17782
17857
  // keep opening/closing the menu disabled for a touch more yet
17783
17858
  // only add listeners/css if it's enabled and isOpen
@@ -17827,7 +17902,7 @@ class Menu {
17827
17902
  this.animation.stop();
17828
17903
  }
17829
17904
  // emit close event
17830
- this.ionDidClose.emit();
17905
+ this.ionDidClose.emit({ role });
17831
17906
  // undo focus trapping so multiple menus don't collide
17832
17907
  document.removeEventListener('focus', this.handleFocus, true);
17833
17908
  }
@@ -17859,7 +17934,7 @@ class Menu {
17859
17934
  * If the menu is disabled then we should
17860
17935
  * forcibly close the menu even if it is open.
17861
17936
  */
17862
- this.afterAnimation(false);
17937
+ this.afterAnimation(false, GESTURE);
17863
17938
  }
17864
17939
  }
17865
17940
  render() {
@@ -17870,14 +17945,14 @@ class Menu {
17870
17945
  * the ionBackButton listener in the menu controller
17871
17946
  * will handle closing the menu when Escape is pressed.
17872
17947
  */
17873
- return (hAsync(Host, { key: '30c0c9bfb8973e4a6feb658f8c4ee8e362f464ed', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17948
+ return (hAsync(Host, { key: '5aaea91873d0885b97304372223b2a6ed16ca28b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17874
17949
  [mode]: true,
17875
17950
  [`menu-type-${type}`]: true,
17876
17951
  'menu-enabled': !disabled,
17877
17952
  [`menu-side-${side}`]: true,
17878
17953
  'menu-pane-visible': isPaneVisible,
17879
17954
  'split-pane-side': hostContext('ion-split-pane', el),
17880
- } }, 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" })));
17955
+ } }, hAsync("div", { key: '3ba822411ad11eff52c518fecf1b2a5b47e0b678', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'd28a78e98493b21d43ea8b19e96b21547adf1916' })), hAsync("ion-backdrop", { key: '0468c15d111737f5cb646918dcfacedadf907a8f', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
17881
17956
  }
17882
17957
  get el() { return getElement(this); }
17883
17958
  static get watchers() { return {
@@ -17980,7 +18055,7 @@ class MenuButton {
17980
18055
  type: this.type,
17981
18056
  };
17982
18057
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
17983
- return (hAsync(Host, { key: '95a8b9f09c7fae9713a8dc003ed277f6f31403da', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18058
+ return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
17984
18059
  [mode]: true,
17985
18060
  button: true, // ion-buttons target .button
17986
18061
  'menu-button-hidden': hidden,
@@ -17989,7 +18064,7 @@ class MenuButton {
17989
18064
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
17990
18065
  'ion-activatable': true,
17991
18066
  'ion-focusable': true,
17992
- }) }, 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" }))));
18067
+ }) }, 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" }))));
17993
18068
  }
17994
18069
  get el() { return getElement(this); }
17995
18070
  static get style() { return {
@@ -18038,10 +18113,10 @@ class MenuToggle {
18038
18113
  render() {
18039
18114
  const mode = getIonMode$1(this);
18040
18115
  const hidden = this.autoHide && !this.visible;
18041
- return (hAsync(Host, { key: '90e621f09792383f1badcc1b402b1ac7d08c5f98', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18116
+ return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18042
18117
  [mode]: true,
18043
18118
  'menu-toggle-hidden': hidden,
18044
- } }, hAsync("slot", { key: 'c0abdd1d91e9d80ee3704e3e374ebe1f29078460' })));
18119
+ } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18045
18120
  }
18046
18121
  static get style() { return IonMenuToggleStyle0; }
18047
18122
  static get cmpMeta() { return {
@@ -20045,18 +20120,18 @@ class Modal {
20045
20120
  const mode = getIonMode$1(this);
20046
20121
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20047
20122
  const isHandleCycle = handleBehavior === 'cycle';
20048
- return (hAsync(Host, Object.assign({ key: '013ba4864ca4d2c1052c512f6a4b0732b8decff7', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20123
+ return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20049
20124
  zIndex: `${20000 + this.overlayIndex}`,
20050
- }, 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',
20125
+ }, 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',
20051
20126
  /*
20052
20127
  role and aria-modal must be used on the
20053
20128
  same element. They must also be set inside the
20054
20129
  shadow DOM otherwise ion-button will not be highlighted
20055
20130
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20056
20131
  */
20057
- 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",
20132
+ 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",
20058
20133
  // Prevents the handle from receiving keyboard focus when it does not cycle
20059
- 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' }))));
20134
+ 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' }))));
20060
20135
  }
20061
20136
  get el() { return getElement(this); }
20062
20137
  static get watchers() { return {
@@ -21005,7 +21080,7 @@ class Nav {
21005
21080
  }
21006
21081
  }
21007
21082
  render() {
21008
- return hAsync("slot", { key: 'e9d99a8a0b84f02f9964d8143cd5e647e43334f9' });
21083
+ return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21009
21084
  }
21010
21085
  get el() { return getElement(this); }
21011
21086
  static get watchers() { return {
@@ -21078,7 +21153,7 @@ class NavLink {
21078
21153
  this.routerAnimation = undefined;
21079
21154
  }
21080
21155
  render() {
21081
- return hAsync(Host, { key: '42c23dcdec5fdb25defebaf6e8a9fa75754ff8eb', onClick: this.onClick });
21156
+ return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21082
21157
  }
21083
21158
  get el() { return getElement(this); }
21084
21159
  static get cmpMeta() { return {
@@ -21112,9 +21187,9 @@ class Note {
21112
21187
  }
21113
21188
  render() {
21114
21189
  const mode = getIonMode$1(this);
21115
- return (hAsync(Host, { key: '90ec2fe8c9487608ed8c0bdc32c2e80a6a0890b3', class: createColorClasses$1(this.color, {
21190
+ return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21116
21191
  [mode]: true,
21117
- }) }, hAsync("slot", { key: '115ee3f79e6c526b0644443aad468e99385d0eda' })));
21192
+ }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21118
21193
  }
21119
21194
  static get style() { return {
21120
21195
  ios: IonNoteIosStyle0,
@@ -21611,7 +21686,7 @@ class Picker$1 {
21611
21686
  this.emitInputModeChange();
21612
21687
  }
21613
21688
  render() {
21614
- 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) => {
21689
+ 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) => {
21615
21690
  var _a;
21616
21691
  /**
21617
21692
  * The "Enter" key represents
@@ -21626,7 +21701,7 @@ class Picker$1 {
21626
21701
  if (ev.key === 'Enter') {
21627
21702
  (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.blur();
21628
21703
  }
21629
- }, 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' })));
21704
+ }, 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' })));
21630
21705
  }
21631
21706
  get el() { return getElement(this); }
21632
21707
  static get style() { return {
@@ -21879,11 +21954,11 @@ class Picker {
21879
21954
  render() {
21880
21955
  const { htmlAttributes } = this;
21881
21956
  const mode = getIonMode$1(this);
21882
- return (hAsync(Host, Object.assign({ key: '3b163ca87354a3a4f302ff016d5affd0dc97bccc', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21957
+ return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
21883
21958
  zIndex: `${20000 + this.overlayIndex}`,
21884
21959
  }, class: Object.assign({ [mode]: true,
21885
21960
  // Used internally for styling
21886
- [`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: '211475c859b7acf4d64556905c45993201d92d43', tabindex: "0" }), hAsync("div", { key: 'c3b3674038155809caea84ae6348ff0d66897a64', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: 'a21757da70dc7864945a5751d9da3ca4bf87897b', 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: '0220da1854d09ef22d2d9a32eaa3c3b222be5a0a', class: "picker-columns" }, hAsync("div", { key: '55757c165ba9e38e56b4dee76a9b13d3ff8b21e6', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '160092a46a48287bf75e5dfe3502f1755a2d0c70', class: "picker-below-highlight" }))), hAsync("div", { key: 'e212db6cca7d75fc0eda0baf4312dd51b9b7a4ef', tabindex: "0" })));
21961
+ [`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" })));
21887
21962
  }
21888
21963
  get el() { return getElement(this); }
21889
21964
  static get watchers() { return {
@@ -22465,12 +22540,12 @@ class PickerColumn {
22465
22540
  render() {
22466
22541
  const { color, disabled, isActive, numericInput } = this;
22467
22542
  const mode = getIonMode$1(this);
22468
- return (hAsync(Host, { key: 'd60736ce74c0e8c774a163272b78fbad32993ec2', class: createColorClasses$1(color, {
22543
+ return (hAsync(Host, { key: 'a221dc10f1eb7c41637a16d2c7167c16939822fd', class: createColorClasses$1(color, {
22469
22544
  [mode]: true,
22470
22545
  ['picker-column-active']: isActive,
22471
22546
  ['picker-column-numeric-input']: numericInput,
22472
22547
  ['picker-column-disabled']: disabled,
22473
- }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '74611112ef154b343ae29a773f8cd8a01cc1447d', name: "prefix" }), hAsync("div", { key: 'af772d2b61b7eb41a567593d290b80a50b7caa72', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22548
+ }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '81b0656f606856f3dc0a657bf167d81a5011405e', name: "prefix" }), hAsync("div", { key: '71b9de67c04150255dd66592601c9d926db0c31c', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
22474
22549
  this.scrollEl = el;
22475
22550
  },
22476
22551
  /**
@@ -22491,7 +22566,7 @@ class PickerColumn {
22491
22566
  * To prevent this, we set the tabIndex to -1. This
22492
22567
  * will match the behavior of the other browsers.
22493
22568
  */
22494
- 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" })));
22569
+ 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" })));
22495
22570
  }
22496
22571
  get el() { return getElement(this); }
22497
22572
  static get watchers() { return {
@@ -22858,9 +22933,9 @@ class PickerColumnCmp {
22858
22933
  render() {
22859
22934
  const col = this.col;
22860
22935
  const mode = getIonMode$1(this);
22861
- 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: {
22936
+ 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: {
22862
22937
  'max-width': this.col.columnWidth,
22863
- } }, 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))));
22938
+ } }, 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))));
22864
22939
  }
22865
22940
  get el() { return getElement(this); }
22866
22941
  static get watchers() { return {
@@ -22964,10 +23039,10 @@ class PickerColumnOption {
22964
23039
  render() {
22965
23040
  const { color, disabled, ariaLabel } = this;
22966
23041
  const mode = getIonMode$1(this);
22967
- return (hAsync(Host, { key: 'cc4435a0ce0e55be1321bcabaf342ed68cf5ba1e', class: createColorClasses$1(color, {
23042
+ return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
22968
23043
  [mode]: true,
22969
23044
  ['option-disabled']: disabled,
22970
- }) }, hAsync("button", { key: '0187fb967771e0787807a8538dce4e59f6a98565', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'dbe52552f3f27332816748c12d929cc81060841d' }))));
23045
+ }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
22971
23046
  }
22972
23047
  get el() { return getElement(this); }
22973
23048
  static get watchers() { return {
@@ -24281,9 +24356,9 @@ class Popover {
24281
24356
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24282
24357
  const desktop = isPlatform('desktop');
24283
24358
  const enableArrow = arrow && !parentPopover;
24284
- return (hAsync(Host, Object.assign({ key: '3a7c4c39384bab1447c4bd6b9b06d7837a09353b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24359
+ return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24285
24360
  zIndex: `${20000 + this.overlayIndex}`,
24286
- }, 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' })))));
24361
+ }, 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' })))));
24287
24362
  }
24288
24363
  get el() { return getElement(this); }
24289
24364
  static get watchers() { return {
@@ -24375,7 +24450,7 @@ class ProgressBar {
24375
24450
  const mode = getIonMode$1(this);
24376
24451
  // If the progress is displayed as a solid bar.
24377
24452
  const progressSolid = buffer === 1;
24378
- return (hAsync(Host, { key: 'b293f4475bcdaa7851b41ebfda659037f0365120', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24453
+ return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24379
24454
  [mode]: true,
24380
24455
  [`progress-bar-${type}`]: true,
24381
24456
  'progress-paused': paused,
@@ -24508,8 +24583,10 @@ class Radio {
24508
24583
  }
24509
24584
  /** @internal */
24510
24585
  async setFocus(ev) {
24511
- ev.stopPropagation();
24512
- ev.preventDefault();
24586
+ if (ev !== undefined) {
24587
+ ev.stopPropagation();
24588
+ ev.preventDefault();
24589
+ }
24513
24590
  this.el.focus();
24514
24591
  }
24515
24592
  /** @internal */
@@ -24543,7 +24620,7 @@ class Radio {
24543
24620
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24544
24621
  const mode = getIonMode$1(this);
24545
24622
  const inItem = hostContext('ion-item', el);
24546
- return (hAsync(Host, { key: 'd6d9525eea9dadc3ea7060eb9b8cbb919e1d7091', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24623
+ return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24547
24624
  [mode]: true,
24548
24625
  'in-item': inItem,
24549
24626
  'radio-checked': checked,
@@ -24554,10 +24631,10 @@ class Radio {
24554
24631
  // Focus and active styling should not apply when the radio is in an item
24555
24632
  'ion-activatable': !inItem,
24556
24633
  'ion-focusable': !inItem,
24557
- }), 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: {
24634
+ }), 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: {
24558
24635
  'label-text-wrapper': true,
24559
24636
  'label-text-wrapper-hidden': !hasLabel,
24560
- }, part: "label" }, hAsync("slot", { key: '2950f1579a22d4a06f9c903fd462c2b46f43bfd7' })), hAsync("div", { key: '8b19ce30b39066744108a6de2da42a7ce8ffdbec', class: "native-wrapper" }, this.renderRadioControl()))));
24637
+ }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24561
24638
  }
24562
24639
  get el() { return getElement(this); }
24563
24640
  static get watchers() { return {
@@ -24689,7 +24766,9 @@ class RadioGroup {
24689
24766
  this.ionChange.emit({ value, event });
24690
24767
  }
24691
24768
  onKeydown(ev) {
24692
- const inSelectPopover = !!this.el.closest('ion-select-popover');
24769
+ // We don't want the value to automatically change/emit when the radio group is part of a select interface
24770
+ // as this will cause the interface to close when navigating through the radio group options
24771
+ const inSelectInterface = !!this.el.closest('ion-select-popover') || !!this.el.closest('ion-select-modal');
24693
24772
  if (ev.target && !this.el.contains(ev.target)) {
24694
24773
  return;
24695
24774
  }
@@ -24713,7 +24792,7 @@ class RadioGroup {
24713
24792
  }
24714
24793
  if (next && radios.includes(next)) {
24715
24794
  next.setFocus(ev);
24716
- if (!inSelectPopover) {
24795
+ if (!inSelectInterface) {
24717
24796
  this.value = next.value;
24718
24797
  this.emitValueChange(ev);
24719
24798
  }
@@ -24742,7 +24821,7 @@ class RadioGroup {
24742
24821
  const { label, labelId, el, name, value } = this;
24743
24822
  const mode = getIonMode$1(this);
24744
24823
  renderHiddenInput(true, el, name, value, false);
24745
- return hAsync(Host, { key: '7a8ad7eb6a05c6f96a348dcf30fd0c610a95688c', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24824
+ return hAsync(Host, { key: '99f543b9caa8e2d30a80e7ea7ecf6b6fdacc76eb', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
24746
24825
  }
24747
24826
  get el() { return getElement(this); }
24748
24827
  static get watchers() { return {
@@ -25374,7 +25453,7 @@ class Range {
25374
25453
  const needsEndAdjustment = inItem && !hasEndContent;
25375
25454
  const mode = getIonMode$1(this);
25376
25455
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25377
- return (hAsync(Host, { key: '877c9f15e62fadb184f9da82dc19898227521e07', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25456
+ return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25378
25457
  [mode]: true,
25379
25458
  'in-item': inItem,
25380
25459
  'range-disabled': disabled,
@@ -25383,10 +25462,10 @@ class Range {
25383
25462
  [`range-label-placement-${labelPlacement}`]: true,
25384
25463
  'range-item-start-adjustment': needsStartAdjustment,
25385
25464
  'range-item-end-adjustment': needsEndAdjustment,
25386
- }) }, hAsync("label", { key: '2ae9088349a65e09b0e33c53442190ef563b2345', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'c3d0ca96ceb1e57fbd383e9c7e4da14d931771b8', class: {
25465
+ }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25387
25466
  'label-text-wrapper': true,
25388
25467
  'label-text-wrapper-hidden': !hasLabel,
25389
- }, 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" })))));
25468
+ }, 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" })))));
25390
25469
  }
25391
25470
  get el() { return getElement(this); }
25392
25471
  static get watchers() { return {
@@ -26287,7 +26366,7 @@ class Refresher {
26287
26366
  }
26288
26367
  render() {
26289
26368
  const mode = getIonMode$1(this);
26290
- return (hAsync(Host, { key: '3270f181a5141e7d886ec554a3e892974446b90e', slot: "fixed", class: {
26369
+ return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26291
26370
  [mode]: true,
26292
26371
  // Used internally for styling
26293
26372
  [`refresher-${mode}`]: true,
@@ -26515,7 +26594,7 @@ class RefresherContent {
26515
26594
  const pullingIcon = this.pullingIcon;
26516
26595
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26517
26596
  const mode = getIonMode$1(this);
26518
- 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())));
26597
+ 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())));
26519
26598
  }
26520
26599
  get el() { return getElement(this); }
26521
26600
  static get cmpMeta() { return {
@@ -26558,7 +26637,7 @@ class Reorder {
26558
26637
  render() {
26559
26638
  const mode = getIonMode$1(this);
26560
26639
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26561
- 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" }))));
26640
+ 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" }))));
26562
26641
  }
26563
26642
  get el() { return getElement(this); }
26564
26643
  static get style() { return {
@@ -26812,7 +26891,7 @@ class ReorderGroup {
26812
26891
  }
26813
26892
  render() {
26814
26893
  const mode = getIonMode$1(this);
26815
- return (hAsync(Host, { key: '491f3e5843cf728ff4589e58bd86b8ce6709b293', class: {
26894
+ return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
26816
26895
  [mode]: true,
26817
26896
  'reorder-enabled': !this.disabled,
26818
26897
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -26920,7 +26999,7 @@ class RippleEffect {
26920
26999
  }
26921
27000
  render() {
26922
27001
  const mode = getIonMode$1(this);
26923
- return (hAsync(Host, { key: '2302f087ab1c6755355736e4ca77309c5fdcf185', role: "presentation", class: {
27002
+ return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
26924
27003
  [mode]: true,
26925
27004
  unbounded: this.unbounded,
26926
27005
  } }));
@@ -27862,10 +27941,10 @@ class RouterLink {
27862
27941
  rel: this.rel,
27863
27942
  target: this.target,
27864
27943
  };
27865
- return (hAsync(Host, { key: 'f876442cab5b14b7e83c6d6ad2c2d878a9c57439', onClick: this.onClick, class: createColorClasses$1(this.color, {
27944
+ return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
27866
27945
  [mode]: true,
27867
27946
  'ion-activatable': true,
27868
- }) }, hAsync("a", Object.assign({ key: 'c44b78ec1fd10a40c23bfe548860ac2b346646a8' }, attrs), hAsync("slot", { key: 'd32180a567613f79f89885135bd0d776ffc1eb8e' }))));
27947
+ }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
27869
27948
  }
27870
27949
  static get style() { return IonRouterLinkStyle0; }
27871
27950
  static get cmpMeta() { return {
@@ -28061,7 +28140,7 @@ class RouterOutlet {
28061
28140
  return true;
28062
28141
  }
28063
28142
  render() {
28064
- return hAsync("slot", { key: 'dac9120f5ffa628b16c04e5fdd44ea8e560c97e6' });
28143
+ return hAsync("slot", { key: '44a7798b8574966f7fd699564b6006411a98a805' });
28065
28144
  }
28066
28145
  get el() { return getElement(this); }
28067
28146
  static get watchers() { return {
@@ -28095,7 +28174,7 @@ class Row {
28095
28174
  registerInstance(this, hostRef);
28096
28175
  }
28097
28176
  render() {
28098
- return (hAsync(Host, { key: '813c9a7f6782d2cf8eb27f30d3ab28e6f3122868', class: getIonMode$1(this) }, hAsync("slot", { key: '356bec4d4d408ea63d6b431b06465d5b7bcbff71' })));
28177
+ return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28099
28178
  }
28100
28179
  static get style() { return IonRowStyle0; }
28101
28180
  static get cmpMeta() { return {
@@ -28489,8 +28568,8 @@ class Searchbar {
28489
28568
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28490
28569
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28491
28570
  const shouldShowCancelButton = this.shouldShowCancelButton();
28492
- 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))));
28493
- return (hAsync(Host, { key: '34878db21f63a9bdffca0446d8ad5619ff04cac3', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28571
+ 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))));
28572
+ return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28494
28573
  [mode]: true,
28495
28574
  'searchbar-animated': animated,
28496
28575
  'searchbar-disabled': this.disabled,
@@ -28500,14 +28579,14 @@ class Searchbar {
28500
28579
  'searchbar-has-focus': this.focused,
28501
28580
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28502
28581
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28503
- }) }, 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) => {
28582
+ }) }, 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) => {
28504
28583
  /**
28505
28584
  * This prevents mobile browsers from
28506
28585
  * blurring the input when the clear
28507
28586
  * button is activated.
28508
28587
  */
28509
28588
  ev.preventDefault();
28510
- }, 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));
28589
+ }, 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));
28511
28590
  }
28512
28591
  get el() { return getElement(this); }
28513
28592
  static get watchers() { return {
@@ -28574,6 +28653,7 @@ class Segment {
28574
28653
  this.ionChange = createEvent(this, "ionChange", 7);
28575
28654
  this.ionSelect = createEvent(this, "ionSelect", 7);
28576
28655
  this.ionStyle = createEvent(this, "ionStyle", 7);
28656
+ this.segmentViewEl = null;
28577
28657
  this.onClick = (ev) => {
28578
28658
  const current = ev.target;
28579
28659
  const previous = this.checked;
@@ -28588,7 +28668,13 @@ class Segment {
28588
28668
  if (current !== previous) {
28589
28669
  this.emitValueChange();
28590
28670
  }
28591
- if (this.scrollable || !this.swipeGesture) {
28671
+ if (this.segmentViewEl) {
28672
+ this.updateSegmentView();
28673
+ if (this.scrollable && previous) {
28674
+ this.checkButton(previous, current);
28675
+ }
28676
+ }
28677
+ else if (this.scrollable || !this.swipeGesture) {
28592
28678
  if (previous) {
28593
28679
  this.checkButton(previous, current);
28594
28680
  }
@@ -28644,19 +28730,49 @@ class Segment {
28644
28730
  swipeGestureChanged() {
28645
28731
  this.gestureChanged();
28646
28732
  }
28647
- valueChanged(value) {
28733
+ valueChanged(value, oldValue) {
28734
+ // Force a value to exist if we're using a segment view
28735
+ if (this.segmentViewEl && value === undefined) {
28736
+ this.value = this.getButtons()[0].value;
28737
+ return;
28738
+ }
28739
+ if (oldValue !== undefined && value !== undefined) {
28740
+ const buttons = this.getButtons();
28741
+ const previous = buttons.find((button) => button.value === oldValue);
28742
+ const current = buttons.find((button) => button.value === value);
28743
+ if (previous && current) {
28744
+ if (!this.segmentViewEl) {
28745
+ this.checkButton(previous, current);
28746
+ }
28747
+ else if (this.triggerScrollOnValueChange !== false) {
28748
+ this.updateSegmentView();
28749
+ }
28750
+ }
28751
+ }
28752
+ else if (value !== undefined && oldValue === undefined && this.segmentViewEl) {
28753
+ this.updateSegmentView();
28754
+ }
28648
28755
  /**
28649
28756
  * `ionSelect` is emitted every time the value changes (internal or external changes).
28650
28757
  * Used by `ion-segment-button` to determine if the button should be checked.
28651
28758
  */
28652
28759
  this.ionSelect.emit({ value });
28653
- this.scrollActiveButtonIntoView();
28760
+ // The scroll listener should handle scrolling the active button into view as needed
28761
+ if (!this.segmentViewEl) {
28762
+ this.scrollActiveButtonIntoView();
28763
+ }
28764
+ this.triggerScrollOnValueChange = undefined;
28654
28765
  }
28655
28766
  disabledChanged() {
28656
28767
  this.gestureChanged();
28657
- const buttons = this.getButtons();
28658
- for (const button of buttons) {
28659
- button.disabled = this.disabled;
28768
+ if (!this.segmentViewEl) {
28769
+ const buttons = this.getButtons();
28770
+ for (const button of buttons) {
28771
+ button.disabled = this.disabled;
28772
+ }
28773
+ }
28774
+ else {
28775
+ this.segmentViewEl.disabled = this.disabled;
28660
28776
  }
28661
28777
  }
28662
28778
  gestureChanged() {
@@ -28666,6 +28782,10 @@ class Segment {
28666
28782
  }
28667
28783
  connectedCallback() {
28668
28784
  this.emitStyle();
28785
+ this.segmentViewEl = this.getSegmentView();
28786
+ }
28787
+ disconnectedCallback() {
28788
+ this.segmentViewEl = null;
28669
28789
  }
28670
28790
  componentWillLoad() {
28671
28791
  this.emitStyle();
@@ -28699,6 +28819,9 @@ class Segment {
28699
28819
  if (this.disabled) {
28700
28820
  this.disabledChanged();
28701
28821
  }
28822
+ // Update segment view based on the initial value,
28823
+ // but do not animate the scroll
28824
+ this.updateSegmentView(false);
28702
28825
  }
28703
28826
  onStart(detail) {
28704
28827
  this.valueBeforeGesture = this.value;
@@ -28715,6 +28838,7 @@ class Segment {
28715
28838
  if (value !== undefined) {
28716
28839
  if (this.valueBeforeGesture !== value) {
28717
28840
  this.emitValueChange();
28841
+ this.updateSegmentView();
28718
28842
  }
28719
28843
  }
28720
28844
  this.valueBeforeGesture = undefined;
@@ -28742,12 +28866,7 @@ class Segment {
28742
28866
  setActivated(activated) {
28743
28867
  const buttons = this.getButtons();
28744
28868
  buttons.forEach((button) => {
28745
- if (activated) {
28746
- button.classList.add('segment-button-activated');
28747
- }
28748
- else {
28749
- button.classList.remove('segment-button-activated');
28750
- }
28869
+ button.classList.toggle('segment-button-activated', activated);
28751
28870
  });
28752
28871
  this.activated = activated;
28753
28872
  }
@@ -28798,6 +28917,7 @@ class Segment {
28798
28917
  currentIndicator.classList.add('segment-button-indicator-animated');
28799
28918
  // Remove the transform to slide the indicator back to the button clicked
28800
28919
  currentIndicator.style.setProperty('transform', '');
28920
+ this.scrollActiveButtonIntoView(true);
28801
28921
  });
28802
28922
  this.value = current.value;
28803
28923
  this.setCheckedClasses();
@@ -28813,6 +28933,60 @@ class Segment {
28813
28933
  buttons[next].classList.add('segment-button-after-checked');
28814
28934
  }
28815
28935
  }
28936
+ getSegmentView() {
28937
+ const buttons = this.getButtons();
28938
+ // Get the first button with a contentId
28939
+ const firstContentId = buttons.find((button) => button.contentId);
28940
+ // Get the segment content with an id matching the button's contentId
28941
+ const segmentContent = document.querySelector(`ion-segment-content[id="${firstContentId === null || firstContentId === void 0 ? void 0 : firstContentId.contentId}"]`);
28942
+ // Return the segment view for that matching segment content
28943
+ return segmentContent === null || segmentContent === void 0 ? void 0 : segmentContent.closest('ion-segment-view');
28944
+ }
28945
+ handleSegmentViewScroll(ev) {
28946
+ const { scrollRatio, isManualScroll } = ev.detail;
28947
+ if (!isManualScroll) {
28948
+ return;
28949
+ }
28950
+ const dispatchedFrom = ev.target;
28951
+ const segmentViewEl = this.segmentViewEl;
28952
+ const segmentEl = this.el;
28953
+ // Only update the indicator if the event was dispatched from the correct segment view
28954
+ if (ev.composedPath().includes(segmentViewEl) || (dispatchedFrom === null || dispatchedFrom === void 0 ? void 0 : dispatchedFrom.contains(segmentEl))) {
28955
+ const buttons = this.getButtons();
28956
+ // If no buttons are found or there is no value set then do nothing
28957
+ if (!buttons.length)
28958
+ return;
28959
+ const index = buttons.findIndex((button) => button.value === this.value);
28960
+ const current = buttons[index];
28961
+ const nextIndex = Math.round(scrollRatio * (buttons.length - 1));
28962
+ if (this.lastNextIndex === undefined || this.lastNextIndex !== nextIndex) {
28963
+ this.lastNextIndex = nextIndex;
28964
+ this.triggerScrollOnValueChange = false;
28965
+ this.checkButton(current, buttons[nextIndex]);
28966
+ this.emitValueChange();
28967
+ }
28968
+ }
28969
+ }
28970
+ /**
28971
+ * Finds the related segment view and sets its current content
28972
+ * based on the selected segment button. This method
28973
+ * should be called on initial load of the segment,
28974
+ * after the gesture is completed (if dragging between segments)
28975
+ * and when a segment button is clicked directly.
28976
+ */
28977
+ updateSegmentView(smoothScroll = true) {
28978
+ const buttons = this.getButtons();
28979
+ const button = buttons.find((btn) => btn.value === this.value);
28980
+ // If the button does not have a contentId then there is
28981
+ // no associated segment view to update
28982
+ if (!(button === null || button === void 0 ? void 0 : button.contentId)) {
28983
+ return;
28984
+ }
28985
+ const segmentView = this.segmentViewEl;
28986
+ if (segmentView) {
28987
+ segmentView.setContent(button.contentId, smoothScroll);
28988
+ }
28989
+ }
28816
28990
  scrollActiveButtonIntoView(smoothScroll = true) {
28817
28991
  const { scrollable, value, el } = this;
28818
28992
  if (scrollable) {
@@ -28995,14 +29169,14 @@ class Segment {
28995
29169
  }
28996
29170
  render() {
28997
29171
  const mode = getIonMode$1(this);
28998
- return (hAsync(Host, { key: 'f1f7103b4c298e037df850ac809a1a7c6e9987a7', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29172
+ return (hAsync(Host, { key: '66bd7a565ba73540b3bbe56dd23b95e59bcef9bc', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
28999
29173
  [mode]: true,
29000
29174
  'in-toolbar': hostContext('ion-toolbar', this.el),
29001
29175
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29002
29176
  'segment-activated': this.activated,
29003
29177
  'segment-disabled': this.disabled,
29004
29178
  'segment-scrollable': this.scrollable,
29005
- }) }, hAsync("slot", { key: '6efdb318b13da8d21687084aa0761728fdf12579', onSlotchange: this.onSlottedItemsChange })));
29179
+ }) }, hAsync("slot", { key: '782c521b1a33729b8eab1c4b879bc3f2ff48ae1b', onSlotchange: this.onSlottedItemsChange })));
29006
29180
  }
29007
29181
  get el() { return getElement(this); }
29008
29182
  static get watchers() { return {
@@ -29027,7 +29201,7 @@ class Segment {
29027
29201
  "selectOnFocus": [4, "select-on-focus"],
29028
29202
  "activated": [32]
29029
29203
  },
29030
- "$listeners$": [[0, "keydown", "onKeyDown"]],
29204
+ "$listeners$": [[16, "ionSegmentViewScroll", "handleSegmentViewScroll"], [0, "keydown", "onKeyDown"]],
29031
29205
  "$lazyBundleId$": "-",
29032
29206
  "$attrsToReflect$": [["color", "color"]]
29033
29207
  }; }
@@ -29064,6 +29238,7 @@ class SegmentButton {
29064
29238
  }
29065
29239
  };
29066
29240
  this.checked = false;
29241
+ this.contentId = undefined;
29067
29242
  this.disabled = false;
29068
29243
  this.layout = 'icon-top';
29069
29244
  this.type = 'button';
@@ -29079,6 +29254,26 @@ class SegmentButton {
29079
29254
  addEventListener$1(segmentEl, 'ionSelect', this.updateState);
29080
29255
  addEventListener$1(segmentEl, 'ionStyle', this.updateStyle);
29081
29256
  }
29257
+ // Return if there is no contentId defined
29258
+ if (!this.contentId)
29259
+ return;
29260
+ // Attempt to find the Segment Content by its contentId
29261
+ const segmentContent = document.getElementById(this.contentId);
29262
+ // If no associated Segment Content exists, log an error and return
29263
+ if (!segmentContent) {
29264
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29265
+ return;
29266
+ }
29267
+ // Ensure the found element is a valid ION-SEGMENT-CONTENT
29268
+ if (segmentContent.tagName !== 'ION-SEGMENT-CONTENT') {
29269
+ console.error(`Segment Button: Element with id="${this.contentId}" is not an <ion-segment-content> element.`);
29270
+ return;
29271
+ }
29272
+ // Prevent buttons from being disabled when associated with segment content
29273
+ if (this.disabled) {
29274
+ console.warn(`Segment Button: Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
29275
+ this.disabled = false;
29276
+ }
29082
29277
  }
29083
29278
  disconnectedCallback() {
29084
29279
  const segmentEl = this.segmentEl;
@@ -29112,7 +29307,7 @@ class SegmentButton {
29112
29307
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29113
29308
  const mode = getIonMode$1(this);
29114
29309
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29115
- return (hAsync(Host, { key: '70cf5c7a3ae2620222c5250c644faf3cfc3b3e4e', class: {
29310
+ return (hAsync(Host, { key: 'd50a5d5e2f6206e8523598f258d8217d2903f69b', class: {
29116
29311
  [mode]: true,
29117
29312
  'in-toolbar': hostContext('ion-toolbar', this.el),
29118
29313
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29128,10 +29323,7 @@ class SegmentButton {
29128
29323
  'ion-activatable': true,
29129
29324
  'ion-activatable-instant': true,
29130
29325
  'ion-focusable': true,
29131
- } }, 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: {
29132
- 'segment-button-indicator': true,
29133
- 'segment-button-indicator-animated': true,
29134
- } }, hAsync("div", { key: '65c72a151080998c1e548c87d4d4ebd5c7dda72f', part: "indicator-background", class: "segment-button-indicator-background" }))));
29326
+ } }, 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" }))));
29135
29327
  }
29136
29328
  get el() { return getElement(this); }
29137
29329
  static get watchers() { return {
@@ -29145,6 +29337,7 @@ class SegmentButton {
29145
29337
  "$flags$": 41,
29146
29338
  "$tagName$": "ion-segment-button",
29147
29339
  "$members$": {
29340
+ "contentId": [513, "content-id"],
29148
29341
  "disabled": [1028],
29149
29342
  "layout": [1],
29150
29343
  "type": [1],
@@ -29154,6 +29347,151 @@ class SegmentButton {
29154
29347
  },
29155
29348
  "$listeners$": undefined,
29156
29349
  "$lazyBundleId$": "-",
29350
+ "$attrsToReflect$": [["contentId", "content-id"]]
29351
+ }; }
29352
+ }
29353
+
29354
+ const segmentContentCss = ":host{scroll-snap-align:center;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}";
29355
+ var IonSegmentContentStyle0 = segmentContentCss;
29356
+
29357
+ class SegmentContent {
29358
+ constructor(hostRef) {
29359
+ registerInstance(this, hostRef);
29360
+ }
29361
+ render() {
29362
+ return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29363
+ }
29364
+ static get style() { return IonSegmentContentStyle0; }
29365
+ static get cmpMeta() { return {
29366
+ "$flags$": 9,
29367
+ "$tagName$": "ion-segment-content",
29368
+ "$members$": undefined,
29369
+ "$listeners$": undefined,
29370
+ "$lazyBundleId$": "-",
29371
+ "$attrsToReflect$": []
29372
+ }; }
29373
+ }
29374
+
29375
+ 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}";
29376
+ var IonSegmentViewIosStyle0 = segmentViewIosCss;
29377
+
29378
+ 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}";
29379
+ var IonSegmentViewMdStyle0 = segmentViewMdCss;
29380
+
29381
+ class SegmentView {
29382
+ constructor(hostRef) {
29383
+ registerInstance(this, hostRef);
29384
+ this.ionSegmentViewScroll = createEvent(this, "ionSegmentViewScroll", 7);
29385
+ this.scrollEndTimeout = null;
29386
+ this.isTouching = false;
29387
+ this.disabled = false;
29388
+ this.isManualScroll = undefined;
29389
+ }
29390
+ handleScroll(ev) {
29391
+ var _a;
29392
+ const { scrollLeft, scrollWidth, clientWidth } = ev.target;
29393
+ const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
29394
+ this.ionSegmentViewScroll.emit({
29395
+ scrollRatio,
29396
+ isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
29397
+ });
29398
+ // Reset the timeout to check for scroll end
29399
+ this.resetScrollEndTimeout();
29400
+ }
29401
+ /**
29402
+ * Handle touch start event to know when the user is actively dragging the segment view.
29403
+ */
29404
+ handleScrollStart() {
29405
+ if (this.scrollEndTimeout) {
29406
+ clearTimeout(this.scrollEndTimeout);
29407
+ this.scrollEndTimeout = null;
29408
+ }
29409
+ this.isTouching = true;
29410
+ }
29411
+ /**
29412
+ * Handle touch end event to know when the user is no longer dragging the segment view.
29413
+ */
29414
+ handleTouchEnd() {
29415
+ this.isTouching = false;
29416
+ }
29417
+ /**
29418
+ * Reset the scroll end detection timer. This is called on every scroll event.
29419
+ */
29420
+ resetScrollEndTimeout() {
29421
+ if (this.scrollEndTimeout) {
29422
+ clearTimeout(this.scrollEndTimeout);
29423
+ this.scrollEndTimeout = null;
29424
+ }
29425
+ this.scrollEndTimeout = setTimeout(() => {
29426
+ this.checkForScrollEnd();
29427
+ },
29428
+ // Setting this to a lower value may result in inconsistencies in behavior
29429
+ // across browsers (particularly Firefox).
29430
+ // Ideally, all of this logic is removed once the scroll end event is
29431
+ // supported on all browsers (https://caniuse.com/?search=scrollend)
29432
+ 100);
29433
+ }
29434
+ /**
29435
+ * Check if the scroll has ended and the user is not actively touching.
29436
+ * If the conditions are met (active content is enabled and no active touch),
29437
+ * reset the scroll position and emit the scroll end event.
29438
+ */
29439
+ checkForScrollEnd() {
29440
+ // Only emit scroll end event if the active content is not disabled and
29441
+ // the user is not touching the segment view
29442
+ if (!this.isTouching) {
29443
+ this.isManualScroll = undefined;
29444
+ }
29445
+ }
29446
+ /**
29447
+ * @internal
29448
+ *
29449
+ * This method is used to programmatically set the displayed segment content
29450
+ * in the segment view. Calling this method will update the `value` of the
29451
+ * corresponding segment button.
29452
+ *
29453
+ * @param id: The id of the segment content to display.
29454
+ * @param smoothScroll: Whether to animate the scroll transition.
29455
+ */
29456
+ async setContent(id, smoothScroll = true) {
29457
+ const contents = this.getSegmentContents();
29458
+ const index = contents.findIndex((content) => content.id === id);
29459
+ if (index === -1)
29460
+ return;
29461
+ this.isManualScroll = false;
29462
+ this.resetScrollEndTimeout();
29463
+ const contentWidth = this.el.offsetWidth;
29464
+ this.el.scrollTo({
29465
+ top: 0,
29466
+ left: index * contentWidth,
29467
+ behavior: smoothScroll ? 'smooth' : 'instant',
29468
+ });
29469
+ }
29470
+ getSegmentContents() {
29471
+ return Array.from(this.el.querySelectorAll('ion-segment-content'));
29472
+ }
29473
+ render() {
29474
+ const { disabled, isManualScroll } = this;
29475
+ return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29476
+ 'segment-view-disabled': disabled,
29477
+ 'segment-view-scroll-disabled': isManualScroll === false,
29478
+ } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29479
+ }
29480
+ get el() { return getElement(this); }
29481
+ static get style() { return {
29482
+ ios: IonSegmentViewIosStyle0,
29483
+ md: IonSegmentViewMdStyle0
29484
+ }; }
29485
+ static get cmpMeta() { return {
29486
+ "$flags$": 41,
29487
+ "$tagName$": "ion-segment-view",
29488
+ "$members$": {
29489
+ "disabled": [4],
29490
+ "isManualScroll": [32],
29491
+ "setContent": [64]
29492
+ },
29493
+ "$listeners$": [[1, "scroll", "handleScroll"], [1, "touchstart", "handleScrollStart"], [1, "touchend", "handleTouchEnd"]],
29494
+ "$lazyBundleId$": "-",
29157
29495
  "$attrsToReflect$": []
29158
29496
  }; }
29159
29497
  }
@@ -29314,13 +29652,12 @@ class Select {
29314
29652
  this.setFocus();
29315
29653
  });
29316
29654
  await overlay.present();
29317
- // focus selected option for popovers
29318
- if (this.interface === 'popover') {
29319
- const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
29655
+ // focus selected option for popovers and modals
29656
+ if (this.interface === 'popover' || this.interface === 'modal') {
29657
+ const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
29320
29658
  if (indexOfSelected > -1) {
29321
29659
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
29322
29660
  if (selectedItem) {
29323
- focusVisibleElement(selectedItem);
29324
29661
  /**
29325
29662
  * Browsers such as Firefox do not
29326
29663
  * correctly delegate focus when manually
@@ -29334,8 +29671,11 @@ class Select {
29334
29671
  */
29335
29672
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
29336
29673
  if (interactiveEl) {
29337
- interactiveEl.focus();
29674
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29675
+ // and removing `ion-focused` style
29676
+ interactiveEl.setFocus();
29338
29677
  }
29678
+ focusVisibleElement(selectedItem);
29339
29679
  }
29340
29680
  }
29341
29681
  else {
@@ -29344,11 +29684,14 @@ class Select {
29344
29684
  */
29345
29685
  const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
29346
29686
  if (firstEnabledOption) {
29347
- focusVisibleElement(firstEnabledOption.closest('ion-item'));
29348
29687
  /**
29349
29688
  * Focus the option for the same reason as we do above.
29689
+ *
29690
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29691
+ * and removing `ion-focused` style
29350
29692
  */
29351
- firstEnabledOption.focus();
29693
+ firstEnabledOption.setFocus();
29694
+ focusVisibleElement(firstEnabledOption.closest('ion-item'));
29352
29695
  }
29353
29696
  }
29354
29697
  }
@@ -29370,6 +29713,9 @@ class Select {
29370
29713
  if (selectInterface === 'popover') {
29371
29714
  return this.openPopover(ev);
29372
29715
  }
29716
+ if (selectInterface === 'modal') {
29717
+ return this.openModal();
29718
+ }
29373
29719
  return this.openAlert();
29374
29720
  }
29375
29721
  updateOverlayOptions() {
@@ -29386,7 +29732,13 @@ class Select {
29386
29732
  case 'popover':
29387
29733
  const popover = overlay.querySelector('ion-select-popover');
29388
29734
  if (popover) {
29389
- popover.options = this.createPopoverOptions(childOpts, value);
29735
+ popover.options = this.createOverlaySelectOptions(childOpts, value);
29736
+ }
29737
+ break;
29738
+ case 'modal':
29739
+ const modal = overlay.querySelector('ion-select-modal');
29740
+ if (modal) {
29741
+ modal.options = this.createOverlaySelectOptions(childOpts, value);
29390
29742
  }
29391
29743
  break;
29392
29744
  case 'alert':
@@ -29441,7 +29793,7 @@ class Select {
29441
29793
  });
29442
29794
  return alertInputs;
29443
29795
  }
29444
- createPopoverOptions(data, selectValue) {
29796
+ createOverlaySelectOptions(data, selectValue) {
29445
29797
  const popoverOptions = data.map((option) => {
29446
29798
  const value = getOptionValue(option);
29447
29799
  // Remove hydrated before copying over classes
@@ -29501,7 +29853,7 @@ class Select {
29501
29853
  message: interfaceOptions.message,
29502
29854
  multiple,
29503
29855
  value,
29504
- options: this.createPopoverOptions(this.childOpts, value),
29856
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29505
29857
  } });
29506
29858
  return popoverController.create(popoverOpts);
29507
29859
  }
@@ -29536,6 +29888,17 @@ class Select {
29536
29888
  ] });
29537
29889
  return alertController.create(alertOpts);
29538
29890
  }
29891
+ openModal() {
29892
+ const { multiple, value, interfaceOptions } = this;
29893
+ const mode = getIonMode$1(this);
29894
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
29895
+ header: interfaceOptions.header,
29896
+ multiple,
29897
+ value,
29898
+ options: this.createOverlaySelectOptions(this.childOpts, value),
29899
+ } });
29900
+ return modalController.create(modalOpts);
29901
+ }
29539
29902
  /**
29540
29903
  * Close the select interface.
29541
29904
  */
@@ -29743,7 +30106,7 @@ class Select {
29743
30106
  * TODO(FW-5592): Remove hasStartEndSlots condition
29744
30107
  */
29745
30108
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
29746
- return (hAsync(Host, { key: '73c571c1f8468e1c3f4fe02fbbb33ba9cbc8e989', onClick: this.onClick, class: createColorClasses$1(this.color, {
30109
+ return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
29747
30110
  [mode]: true,
29748
30111
  'in-item': inItem,
29749
30112
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -29759,7 +30122,7 @@ class Select {
29759
30122
  [`select-justify-${justify}`]: justifyEnabled,
29760
30123
  [`select-shape-${shape}`]: shape !== undefined,
29761
30124
  [`select-label-placement-${labelPlacement}`]: true,
29762
- }) }, 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" }))));
30125
+ }) }, 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" }))));
29763
30126
  }
29764
30127
  get el() { return getElement(this); }
29765
30128
  static get watchers() { return {
@@ -29839,6 +30202,108 @@ const textForValue = (opts, value, compareWith) => {
29839
30202
  let selectIds = 0;
29840
30203
  const OPTION_CLASS = 'select-interface-option';
29841
30204
 
30205
+ 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)}";
30206
+ var IonSelectModalIonicStyle0 = ionicSelectModalMdCss;
30207
+
30208
+ const selectModalIosCss = ".sc-ion-select-modal-ios-h{height:100%}";
30209
+ var IonSelectModalIosStyle0 = selectModalIosCss;
30210
+
30211
+ 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)}";
30212
+ var IonSelectModalMdStyle0 = selectModalMdCss;
30213
+
30214
+ class SelectModal {
30215
+ constructor(hostRef) {
30216
+ registerInstance(this, hostRef);
30217
+ this.header = undefined;
30218
+ this.multiple = undefined;
30219
+ this.options = [];
30220
+ }
30221
+ closeModal() {
30222
+ const modal = this.el.closest('ion-modal');
30223
+ if (modal) {
30224
+ modal.dismiss();
30225
+ }
30226
+ }
30227
+ findOptionFromEvent(ev) {
30228
+ const { options } = this;
30229
+ return options.find((o) => o.value === ev.target.value);
30230
+ }
30231
+ getValues(ev) {
30232
+ const { multiple, options } = this;
30233
+ if (multiple) {
30234
+ // this is a modal with checkboxes (multiple value select)
30235
+ // return an array of all the checked values
30236
+ return options.filter((o) => o.checked).map((o) => o.value);
30237
+ }
30238
+ // this is a modal with radio buttons (single value select)
30239
+ // return the value that was clicked, otherwise undefined
30240
+ const option = ev ? this.findOptionFromEvent(ev) : null;
30241
+ return option ? option.value : undefined;
30242
+ }
30243
+ callOptionHandler(ev) {
30244
+ const option = this.findOptionFromEvent(ev);
30245
+ const values = this.getValues(ev);
30246
+ if (option === null || option === void 0 ? void 0 : option.handler) {
30247
+ safeCall(option.handler, values);
30248
+ }
30249
+ }
30250
+ setChecked(ev) {
30251
+ const { multiple } = this;
30252
+ const option = this.findOptionFromEvent(ev);
30253
+ // this is a modal with checkboxes (multiple value select)
30254
+ // we need to set the checked value for this option
30255
+ if (multiple && option) {
30256
+ option.checked = ev.detail.checked;
30257
+ }
30258
+ }
30259
+ renderRadioOptions() {
30260
+ const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
30261
+ return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30262
+ // TODO FW-4784
30263
+ 'item-radio-checked': option.value === checked
30264
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyUp: (ev) => {
30265
+ if (ev.key === ' ') {
30266
+ /**
30267
+ * Selecting a radio option with keyboard navigation,
30268
+ * either through the Enter or Space keys, should
30269
+ * dismiss the modal.
30270
+ */
30271
+ this.closeModal();
30272
+ }
30273
+ } }, option.text))))));
30274
+ }
30275
+ renderCheckboxOptions() {
30276
+ return this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
30277
+ // TODO FW-4784
30278
+ 'item-checkbox-checked': option.checked
30279
+ }, getClassMap(option.cssClass)) }, hAsync("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
30280
+ this.setChecked(ev);
30281
+ this.callOptionHandler(ev);
30282
+ } }, option.text))));
30283
+ }
30284
+ render() {
30285
+ 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()))));
30286
+ }
30287
+ get el() { return getElement(this); }
30288
+ static get style() { return {
30289
+ ionic: IonSelectModalIonicStyle0,
30290
+ ios: IonSelectModalIosStyle0,
30291
+ md: IonSelectModalMdStyle0
30292
+ }; }
30293
+ static get cmpMeta() { return {
30294
+ "$flags$": 34,
30295
+ "$tagName$": "ion-select-modal",
30296
+ "$members$": {
30297
+ "header": [1],
30298
+ "multiple": [4],
30299
+ "options": [16]
30300
+ },
30301
+ "$listeners$": undefined,
30302
+ "$lazyBundleId$": "-",
30303
+ "$attrsToReflect$": []
30304
+ }; }
30305
+ }
30306
+
29842
30307
  const selectOptionCss = ":host{display:none}";
29843
30308
  var IonSelectOptionStyle0 = selectOptionCss;
29844
30309
 
@@ -29850,7 +30315,7 @@ class SelectOption {
29850
30315
  this.value = undefined;
29851
30316
  }
29852
30317
  render() {
29853
- return hAsync(Host, { key: 'ba5a9c695c53fe0802af11a49f4305a9b8f71773', role: "option", id: this.inputId, class: getIonMode$1(this) });
30318
+ return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
29854
30319
  }
29855
30320
  get el() { return getElement(this); }
29856
30321
  static get style() { return IonSelectOptionStyle0; }
@@ -29970,7 +30435,7 @@ class SelectPopover {
29970
30435
  render() {
29971
30436
  const { header, message, options, subHeader } = this;
29972
30437
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
29973
- 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))));
30438
+ 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))));
29974
30439
  }
29975
30440
  get el() { return getElement(this); }
29976
30441
  static get style() { return {
@@ -30018,11 +30483,11 @@ class SkeletonText {
30018
30483
  const animated = this.animated && config.getBoolean('animated', true);
30019
30484
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30020
30485
  const mode = getIonMode$1(this);
30021
- return (hAsync(Host, { key: '1a3e78e9a6f740d609d1f0b7a16cb6eff4a2d617', class: {
30486
+ return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30022
30487
  [mode]: true,
30023
30488
  'skeleton-text-animated': animated,
30024
30489
  'in-media': inMedia,
30025
- } }, hAsync("span", { key: 'be3eabe196ec6e8ec19857375ba30f4c8aa58e7f' }, "\u00A0")));
30490
+ } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30026
30491
  }
30027
30492
  get el() { return getElement(this); }
30028
30493
  static get style() { return IonSkeletonTextStyle0; }
@@ -30075,7 +30540,7 @@ class Spinner {
30075
30540
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30076
30541
  }
30077
30542
  }
30078
- return (hAsync(Host, { key: '50cbaed55eeab15292447d106a80b93db4cb40de', class: createColorClasses$1(self.color, {
30543
+ return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30079
30544
  [mode]: true,
30080
30545
  [`spinner-${spinnerName}`]: true,
30081
30546
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30175,12 +30640,12 @@ class SplitPane {
30175
30640
  }
30176
30641
  render() {
30177
30642
  const mode = getIonMode$1(this);
30178
- return (hAsync(Host, { key: 'd54c356cd4bff7e55325160882dea8249f47f388', class: {
30643
+ return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30179
30644
  [mode]: true,
30180
30645
  // Used internally for styling
30181
30646
  [`split-pane-${mode}`]: true,
30182
30647
  'split-pane-visible': this.visible,
30183
- } }, hAsync("slot", { key: 'af62690d0fd686cfbd29d888c79eda9001f13e2f' })));
30648
+ } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30184
30649
  }
30185
30650
  get el() { return getElement(this); }
30186
30651
  static get watchers() { return {
@@ -30249,10 +30714,10 @@ class Tab {
30249
30714
  }
30250
30715
  render() {
30251
30716
  const { tab, active, component } = this;
30252
- return (hAsync(Host, { key: '46d5498418f5379861c3d7465e8021dec45f1200', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30717
+ return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30253
30718
  'ion-page': component === undefined,
30254
30719
  'tab-hidden': !active,
30255
- } }, hAsync("slot", { key: 'b45045dccb87dfe75e3f5a5a474bb48b6c98e922' })));
30720
+ } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
30256
30721
  }
30257
30722
  get el() { return getElement(this); }
30258
30723
  static get watchers() { return {
@@ -30330,11 +30795,11 @@ class TabBar {
30330
30795
  const { color, translucent, keyboardVisible } = this;
30331
30796
  const mode = getIonMode$1(this);
30332
30797
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30333
- return (hAsync(Host, { key: '3a8595dd83f89e8319471a7a7f9f64b2565b384c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30798
+ return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30334
30799
  [mode]: true,
30335
30800
  'tab-bar-translucent': translucent,
30336
30801
  'tab-bar-hidden': shouldHide,
30337
- }) }, hAsync("slot", { key: '8b65eceb922f6abfa15f41046261586fb94b981f' })));
30802
+ }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
30338
30803
  }
30339
30804
  get el() { return getElement(this); }
30340
30805
  static get watchers() { return {
@@ -30432,7 +30897,7 @@ class TabButton {
30432
30897
  rel,
30433
30898
  target,
30434
30899
  };
30435
- return (hAsync(Host, { key: '4b528ce31f67e10ad849e0c99bd034bba675c227', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30900
+ return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
30436
30901
  [mode]: true,
30437
30902
  'tab-selected': selected,
30438
30903
  'tab-disabled': disabled,
@@ -30444,7 +30909,7 @@ class TabButton {
30444
30909
  'ion-activatable': true,
30445
30910
  'ion-selectable': true,
30446
30911
  'ion-focusable': true,
30447
- } }, 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" }))));
30912
+ } }, 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" }))));
30448
30913
  }
30449
30914
  get el() { return getElement(this); }
30450
30915
  static get style() { return {
@@ -30620,7 +31085,7 @@ class Tabs {
30620
31085
  return Array.from(this.el.querySelectorAll('ion-tab'));
30621
31086
  }
30622
31087
  render() {
30623
- 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" })));
31088
+ 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" })));
30624
31089
  }
30625
31090
  get el() { return getElement(this); }
30626
31091
  static get style() { return IonTabsStyle0; }
@@ -30662,9 +31127,9 @@ class Text {
30662
31127
  }
30663
31128
  render() {
30664
31129
  const mode = getIonMode$1(this);
30665
- return (hAsync(Host, { key: '4b76333b1ea5cab134b9dc1f5670c0d5a253fc32', class: createColorClasses$1(this.color, {
31130
+ return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
30666
31131
  [mode]: true,
30667
- }) }, hAsync("slot", { key: '3dee5f16bc58b3d92547d910bd4f441a00ce2039' })));
31132
+ }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
30668
31133
  }
30669
31134
  static get style() { return IonTextStyle0; }
30670
31135
  static get cmpMeta() { return {
@@ -30700,6 +31165,8 @@ class Textarea {
30700
31165
  this.ionBlur = createEvent(this, "ionBlur", 7);
30701
31166
  this.ionFocus = createEvent(this, "ionFocus", 7);
30702
31167
  this.inputId = `ion-textarea-${textareaIds++}`;
31168
+ this.helperTextId = `${this.inputId}-helper-text`;
31169
+ this.errorTextId = `${this.inputId}-error-text`;
30703
31170
  /**
30704
31171
  * `true` if the textarea was cleared as a result of the user typing
30705
31172
  * with `clearOnEdit` enabled.
@@ -30977,8 +31444,21 @@ class Textarea {
30977
31444
  * Renders the helper text or error text values
30978
31445
  */
30979
31446
  renderHintText() {
30980
- const { helperText, errorText } = this;
30981
- return [hAsync("div", { class: "helper-text" }, helperText), hAsync("div", { class: "error-text" }, errorText)];
31447
+ const { helperText, errorText, helperTextId, errorTextId } = this;
31448
+ return [
31449
+ hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
31450
+ hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
31451
+ ];
31452
+ }
31453
+ getHintTextID() {
31454
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
31455
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
31456
+ return errorTextId;
31457
+ }
31458
+ if (helperText) {
31459
+ return helperTextId;
31460
+ }
31461
+ return undefined;
30982
31462
  }
30983
31463
  renderCounter() {
30984
31464
  const { counter, maxlength, counterFormatter, value } = this;
@@ -31031,7 +31511,7 @@ class Textarea {
31031
31511
  * TODO(FW-5592): Remove hasStartEndSlots condition
31032
31512
  */
31033
31513
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31034
- return (hAsync(Host, { key: '37595a18d77dea1a337ac1c672e5f08a4128111d', class: createColorClasses$1(this.color, {
31514
+ return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31035
31515
  [mode]: true,
31036
31516
  'has-value': hasValue,
31037
31517
  'has-focus': hasFocus,
@@ -31040,7 +31520,7 @@ class Textarea {
31040
31520
  [`textarea-shape-${shape}`]: shape !== undefined,
31041
31521
  [`textarea-label-placement-${labelPlacement}`]: true,
31042
31522
  'textarea-disabled': disabled,
31043
- }) }, hAsync("label", { key: '67342758743e5a40448a32ff695876d39778621f', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: 'a994be8264bf5652811cf816d79a04178954e83f', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e09c93ebcd5b3d227d51e682ca23dfc7fd7027ad', class: "start-slot-wrapper" }, hAsync("slot", { key: 'd39758f21f19ae70aea21e9a9a7b7c20991fe593', name: "start" })), hAsync("div", { key: '6a4e10e53de4bb235ee30def4c9ae5bdee888816', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '9e254e551f124d972e9bc6b09ef0f2bb55890be5', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), hAsync("div", { key: 'a66aa2d2bc4778a0bec56a8b9ec9052a832eb3b2', class: "end-slot-wrapper" }, hAsync("slot", { key: '8e6a90b4475de32e23afc593da4108610dcca663', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '6da03205a8daff45581b20f0af3938634a9d5f8c', class: "textarea-highlight" })), this.renderBottomContent()));
31523
+ }) }, 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()));
31044
31524
  }
31045
31525
  get el() { return getElement(this); }
31046
31526
  static get watchers() { return {
@@ -31102,7 +31582,7 @@ class Thumbnail {
31102
31582
  registerInstance(this, hostRef);
31103
31583
  }
31104
31584
  render() {
31105
- return (hAsync(Host, { key: 'ea55000055f941b0c79561e8934be6242ec8e114', class: getIonMode$1(this) }, hAsync("slot", { key: 'a4f934f442797f5c66a77e0ef8920fdd07c204f2' })));
31585
+ return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31106
31586
  }
31107
31587
  static get style() { return IonThumbnailStyle0; }
31108
31588
  static get cmpMeta() { return {
@@ -31938,9 +32418,9 @@ class Toast {
31938
32418
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
31939
32419
  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);
31940
32420
  }
31941
- return (hAsync(Host, Object.assign({ key: '68c336f80af04ba484ca9899bae8f40c0d9b7691', tabindex: "-1" }, this.htmlAttributes, { style: {
32421
+ return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
31942
32422
  zIndex: `${60000 + this.overlayIndex}`,
31943
- }, 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')))));
32423
+ }, 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')))));
31944
32424
  }
31945
32425
  get el() { return getElement(this); }
31946
32426
  static get watchers() { return {
@@ -32160,7 +32640,7 @@ class Toggle {
32160
32640
  const value = this.getValue();
32161
32641
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32162
32642
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32163
- return (hAsync(Host, { key: '8f024fb0fbc2d4442be0574b03450426e8e4fc9e', onClick: this.onClick, class: createColorClasses$1(color, {
32643
+ return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32164
32644
  [mode]: true,
32165
32645
  'in-item': hostContext('ion-item', el),
32166
32646
  'toggle-activated': activated,
@@ -32170,10 +32650,10 @@ class Toggle {
32170
32650
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32171
32651
  [`toggle-label-placement-${labelPlacement}`]: true,
32172
32652
  [`toggle-${rtl}`]: true,
32173
- }) }, 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: {
32653
+ }) }, 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: {
32174
32654
  'label-text-wrapper': true,
32175
32655
  'label-text-wrapper-hidden': !this.hasLabel,
32176
- }, part: "label" }, hAsync("slot", { key: '7a6ea9515d454d80615f0622f361c5f91b41345c' })), hAsync("div", { key: '6d3670b81b8f809092c98b3f3b8e483ddf6a7cac', class: "native-wrapper" }, this.renderToggleControl()))));
32656
+ }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32177
32657
  }
32178
32658
  get el() { return getElement(this); }
32179
32659
  static get watchers() { return {
@@ -32277,10 +32757,10 @@ class Toolbar {
32277
32757
  this.childrenStyles.forEach((value) => {
32278
32758
  Object.assign(childStyles, value);
32279
32759
  });
32280
- return (hAsync(Host, { key: '4bb3a55001408a3bdf033af76b9196cb96c07c09', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32760
+ return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32281
32761
  [mode]: true,
32282
32762
  'in-toolbar': hostContext('ion-toolbar', this.el),
32283
- })) }, 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" }))));
32763
+ })) }, 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" }))));
32284
32764
  }
32285
32765
  get el() { return getElement(this); }
32286
32766
  static get style() { return {
@@ -32330,11 +32810,11 @@ class ToolbarTitle {
32330
32810
  render() {
32331
32811
  const mode = getIonMode$1(this);
32332
32812
  const size = this.getSize();
32333
- return (hAsync(Host, { key: '5a58dc437a6f4257244bbdd7e9a682a17d8c9a6b', class: createColorClasses$1(this.color, {
32813
+ return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
32334
32814
  [mode]: true,
32335
32815
  [`title-${size}`]: true,
32336
32816
  'title-rtl': document.dir === 'rtl',
32337
- }) }, hAsync("div", { key: '58682ea7b8f47a08adfad419b5c76b34784c6501', class: "toolbar-title" }, hAsync("slot", { key: '8a9248534e4c3076f5e2dfda38ef86069796851c' }))));
32817
+ }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
32338
32818
  }
32339
32819
  get el() { return getElement(this); }
32340
32820
  static get watchers() { return {
@@ -32435,7 +32915,10 @@ registerComponents([
32435
32915
  Searchbar,
32436
32916
  Segment,
32437
32917
  SegmentButton,
32918
+ SegmentContent,
32919
+ SegmentView,
32438
32920
  Select,
32921
+ SelectModal,
32439
32922
  SelectOption,
32440
32923
  SelectPopover,
32441
32924
  SkeletonText,