@ionic/core 8.4.4-dev.11741050043.10a3c31a → 8.4.4-dev.11741101920.155e1c29

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 (756) hide show
  1. package/components/checkbox.js +6 -4
  2. package/components/helpers.js +29 -11
  3. package/components/index6.js +11 -3
  4. package/components/index7.js +2 -2
  5. package/components/index9.js +1 -1
  6. package/components/ion-item-divider.js +2 -2
  7. package/components/ion-item-group.js +1 -1
  8. package/components/ion-item-option.js +2 -2
  9. package/components/ion-item-options.js +1 -1
  10. package/components/ion-item-sliding.js +1 -1
  11. package/components/ion-loading.js +2 -2
  12. package/components/ion-menu-button.js +2 -2
  13. package/components/ion-menu-toggle.js +2 -2
  14. package/components/ion-menu.js +2 -2
  15. package/components/ion-nav-link.js +1 -1
  16. package/components/ion-nav.js +1 -1
  17. package/components/ion-note.js +2 -2
  18. package/components/ion-picker-legacy.js +2 -2
  19. package/components/ion-progress-bar.js +1 -1
  20. package/components/ion-range.js +3 -3
  21. package/components/ion-refresher-content.js +1 -1
  22. package/components/ion-refresher.js +1 -1
  23. package/components/ion-reorder-group.js +1 -1
  24. package/components/ion-reorder.js +1 -1
  25. package/components/ion-router-link.js +2 -2
  26. package/components/ion-router-outlet.js +1 -1
  27. package/components/ion-row.js +1 -1
  28. package/components/ion-searchbar.js +4 -4
  29. package/components/ion-segment-button.js +9 -40
  30. package/components/ion-segment-content.js +1 -1
  31. package/components/ion-segment-view.js +2 -2
  32. package/components/ion-segment.js +2 -2
  33. package/components/ion-select-option.js +1 -1
  34. package/components/ion-select.js +16 -41
  35. package/components/ion-skeleton-text.js +2 -2
  36. package/components/ion-split-pane.js +2 -2
  37. package/components/ion-tab-bar.js +2 -2
  38. package/components/ion-tab-button.js +2 -2
  39. package/components/ion-tab.js +2 -2
  40. package/components/ion-tabs.js +1 -1
  41. package/components/ion-text.js +2 -2
  42. package/components/ion-textarea.js +2 -2
  43. package/components/ion-thumbnail.js +1 -1
  44. package/components/ion-toast.js +2 -2
  45. package/components/ion-toggle.js +6 -4
  46. package/components/ionic-global.js +12 -1
  47. package/components/label.js +2 -2
  48. package/components/list-header.js +2 -2
  49. package/components/modal.js +259 -35
  50. package/components/picker-column-option.js +2 -2
  51. package/components/picker-column2.js +2 -2
  52. package/components/popover.js +2 -2
  53. package/components/radio-group.js +39 -2
  54. package/components/radio.js +3 -3
  55. package/components/ripple-effect.js +1 -1
  56. package/components/select-modal.js +1 -1
  57. package/components/select-popover.js +1 -1
  58. package/components/spinner.js +1 -1
  59. package/components/title.js +2 -2
  60. package/components/toolbar.js +2 -2
  61. package/css/core.css +1 -1
  62. package/css/core.css.map +1 -1
  63. package/css/global.bundle.css +1 -1
  64. package/css/global.bundle.css.map +1 -1
  65. package/css/ionic.bundle.css +1 -1
  66. package/css/ionic.bundle.css.map +1 -1
  67. package/css/palettes/dark.always.css +1 -1
  68. package/css/palettes/dark.always.css.map +1 -1
  69. package/css/palettes/dark.class.css +1 -1
  70. package/css/palettes/dark.class.css.map +1 -1
  71. package/css/palettes/dark.system.css +1 -1
  72. package/css/palettes/dark.system.css.map +1 -1
  73. package/css/palettes/high-contrast-dark.always.css +1 -1
  74. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  75. package/css/palettes/high-contrast-dark.class.css +1 -1
  76. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  77. package/css/palettes/high-contrast-dark.system.css +1 -1
  78. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  79. package/css/palettes/high-contrast.always.css +1 -1
  80. package/css/palettes/high-contrast.always.css.map +1 -1
  81. package/css/palettes/high-contrast.class.css +1 -1
  82. package/css/palettes/high-contrast.class.css.map +1 -1
  83. package/css/palettes/high-contrast.system.css +1 -1
  84. package/css/palettes/high-contrast.system.css.map +1 -1
  85. package/css/structure.css +1 -1
  86. package/css/structure.css.map +1 -1
  87. package/css/typography.css +1 -1
  88. package/css/typography.css.map +1 -1
  89. package/dist/cjs/{app-globals-247c7281.js → app-globals-21afee77.js} +1 -1
  90. package/dist/cjs/{button-active-43e2b419.js → button-active-3f2f60b4.js} +1 -1
  91. package/dist/cjs/{data-21dc0f81.js → data-108e531d.js} +1 -1
  92. package/dist/cjs/{framework-delegate-2a11ff27.js → framework-delegate-55f5683a.js} +1 -1
  93. package/dist/cjs/{hardware-back-button-25324112.js → hardware-back-button-9e8a2c4f.js} +2 -2
  94. package/dist/cjs/{helpers-06f744d7.js → helpers-afaa9001.js} +28 -11
  95. package/dist/cjs/{index-0e360e93.js → index-073c7cdc.js} +2 -2
  96. package/dist/cjs/{index-5235cd7a.js → index-0d762bba.js} +2 -2
  97. package/dist/cjs/{index-5915f9b3.js → index-2a46a047.js} +11 -3
  98. package/dist/cjs/{index-17772b90.js → index-3652c918.js} +4 -4
  99. package/dist/cjs/{index-2e236a04.js → index-73f75efb.js} +4 -0
  100. package/dist/cjs/{index-d36529a6.js → index-9509ecad.js} +1 -1
  101. package/dist/cjs/{index-a9253094.js → index-e975c92b.js} +6 -6
  102. package/dist/cjs/index.cjs.js +11 -11
  103. package/dist/cjs/{input-shims-a1181384.js → input-shims-cd05268a.js} +5 -3
  104. package/dist/cjs/{input.utils-693b953e.js → input.utils-ffb2f81b.js} +2 -2
  105. package/dist/cjs/ion-accordion_2.cjs.entry.js +5 -5
  106. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  107. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  108. package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
  109. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  110. package/dist/cjs/ion-back-button.cjs.entry.js +4 -4
  111. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +4 -4
  113. package/dist/cjs/ion-button_2.cjs.entry.js +4 -4
  114. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  115. package/dist/cjs/ion-checkbox.cjs.entry.js +8 -7
  116. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  117. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  118. package/dist/cjs/ion-datetime-button.cjs.entry.js +5 -5
  119. package/dist/cjs/ion-datetime_3.cjs.entry.js +13 -13
  120. package/dist/cjs/ion-fab_3.cjs.entry.js +4 -4
  121. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  122. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  123. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +4 -4
  124. package/dist/cjs/ion-input.cjs.entry.js +7 -7
  125. package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
  126. package/dist/cjs/ion-item_8.cjs.entry.js +15 -15
  127. package/dist/cjs/ion-loading.cjs.entry.js +9 -9
  128. package/dist/cjs/ion-menu_3.cjs.entry.js +15 -15
  129. package/dist/cjs/ion-modal.cjs.entry.js +267 -44
  130. package/dist/cjs/ion-nav_2.cjs.entry.js +9 -9
  131. package/dist/cjs/ion-picker-column-option.cjs.entry.js +5 -5
  132. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  133. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  134. package/dist/cjs/ion-popover.cjs.entry.js +10 -10
  135. package/dist/cjs/ion-progress-bar.cjs.entry.js +4 -4
  136. package/dist/cjs/ion-radio_2.cjs.entry.js +42 -7
  137. package/dist/cjs/ion-range.cjs.entry.js +8 -8
  138. package/dist/cjs/ion-refresher_2.cjs.entry.js +8 -8
  139. package/dist/cjs/ion-reorder_2.cjs.entry.js +8 -8
  140. package/dist/cjs/ion-ripple-effect.cjs.entry.js +3 -3
  141. package/dist/cjs/ion-route_4.cjs.entry.js +5 -5
  142. package/dist/cjs/ion-searchbar.cjs.entry.js +8 -8
  143. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  144. package/dist/cjs/ion-segment-view.cjs.entry.js +3 -3
  145. package/dist/cjs/ion-segment_2.cjs.entry.js +13 -44
  146. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
  147. package/dist/cjs/ion-select_3.cjs.entry.js +25 -51
  148. package/dist/cjs/ion-spinner.cjs.entry.js +3 -3
  149. package/dist/cjs/ion-split-pane.cjs.entry.js +4 -4
  150. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -7
  151. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -6
  152. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  153. package/dist/cjs/ion-textarea.cjs.entry.js +8 -8
  154. package/dist/cjs/ion-toast.cjs.entry.js +9 -9
  155. package/dist/cjs/ion-toggle.cjs.entry.js +9 -8
  156. package/dist/cjs/{ionic-global-20cee824.js → ionic-global-d9a8bb5b.js} +12 -1
  157. package/dist/cjs/ionic.cjs.js +4 -4
  158. package/dist/cjs/{ios.transition-c3e3b768.js → ios.transition-0e664e88.js} +5 -5
  159. package/dist/cjs/loader.cjs.js +4 -4
  160. package/dist/cjs/{md.transition-91d9b2db.js → md.transition-2e8aef2c.js} +5 -5
  161. package/dist/cjs/{notch-controller-57bae241.js → notch-controller-d69150f5.js} +1 -1
  162. package/dist/cjs/{overlays-93c1a579.js → overlays-65fdaff6.js} +5 -5
  163. package/dist/cjs/{status-tap-ede4c3df.js → status-tap-d74f1429.js} +5 -4
  164. package/dist/cjs/{swipe-back-2aee5ac9.js → swipe-back-0303a5e4.js} +1 -1
  165. package/dist/collection/components/checkbox/checkbox.js +23 -4
  166. package/dist/collection/components/item-divider/item-divider.js +2 -2
  167. package/dist/collection/components/item-group/item-group.js +1 -1
  168. package/dist/collection/components/item-option/item-option.js +2 -2
  169. package/dist/collection/components/item-options/item-options.js +1 -1
  170. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  171. package/dist/collection/components/label/label.js +2 -2
  172. package/dist/collection/components/list-header/list-header.js +2 -2
  173. package/dist/collection/components/loading/loading.js +2 -2
  174. package/dist/collection/components/menu/menu.js +2 -2
  175. package/dist/collection/components/menu-button/menu-button.js +2 -2
  176. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  177. package/dist/collection/components/modal/animations/ios.enter.js +50 -4
  178. package/dist/collection/components/modal/animations/ios.leave.js +24 -2
  179. package/dist/collection/components/modal/animations/md.enter.js +52 -5
  180. package/dist/collection/components/modal/animations/md.leave.js +26 -3
  181. package/dist/collection/components/modal/animations/sheet.js +11 -2
  182. package/dist/collection/components/modal/gestures/sheet.js +79 -10
  183. package/dist/collection/components/modal/modal.ios.css +16 -0
  184. package/dist/collection/components/modal/modal.js +32 -7
  185. package/dist/collection/components/modal/modal.md.css +6 -0
  186. package/dist/collection/components/nav/nav.js +1 -1
  187. package/dist/collection/components/nav-link/nav-link.js +1 -1
  188. package/dist/collection/components/note/note.js +2 -2
  189. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  190. package/dist/collection/components/picker-legacy/picker.js +2 -2
  191. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  192. package/dist/collection/components/popover/popover.js +2 -2
  193. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  194. package/dist/collection/components/radio/radio.js +3 -3
  195. package/dist/collection/components/radio-group/radio-group.ios.css +206 -0
  196. package/dist/collection/components/radio-group/radio-group.js +72 -1
  197. package/dist/collection/components/radio-group/radio-group.md.css +206 -0
  198. package/dist/collection/components/range/range.js +3 -3
  199. package/dist/collection/components/refresher/refresher.js +1 -1
  200. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  201. package/dist/collection/components/reorder/reorder.js +1 -1
  202. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  203. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  204. package/dist/collection/components/router-link/router-link.js +2 -2
  205. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  206. package/dist/collection/components/row/row.js +1 -1
  207. package/dist/collection/components/searchbar/searchbar.js +4 -4
  208. package/dist/collection/components/segment/segment.js +2 -2
  209. package/dist/collection/components/segment-button/segment-button.js +9 -40
  210. package/dist/collection/components/segment-content/segment-content.js +1 -1
  211. package/dist/collection/components/segment-view/segment-view.js +2 -2
  212. package/dist/collection/components/select/select.js +32 -40
  213. package/dist/collection/components/select-modal/select-modal.js +1 -1
  214. package/dist/collection/components/select-option/select-option.js +1 -1
  215. package/dist/collection/components/select-popover/select-popover.js +1 -1
  216. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  217. package/dist/collection/components/spinner/spinner.js +1 -1
  218. package/dist/collection/components/split-pane/split-pane.js +2 -2
  219. package/dist/collection/components/tab/tab.js +2 -2
  220. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  221. package/dist/collection/components/tab-button/tab-button.js +2 -2
  222. package/dist/collection/components/tabs/tabs.js +1 -1
  223. package/dist/collection/components/text/text.js +2 -2
  224. package/dist/collection/components/textarea/textarea.js +2 -2
  225. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  226. package/dist/collection/components/title/title.js +2 -2
  227. package/dist/collection/components/toast/toast.js +2 -2
  228. package/dist/collection/components/toggle/toggle.js +23 -4
  229. package/dist/collection/components/toolbar/toolbar.js +6 -2
  230. package/dist/collection/global/ionic-global.js +12 -1
  231. package/dist/collection/utils/helpers.js +28 -10
  232. package/dist/collection/utils/logging/index.js +10 -3
  233. package/dist/docs.json +163 -2
  234. package/dist/esm/{app-globals-0aadb3a9.js → app-globals-5dbb61a5.js} +1 -1
  235. package/dist/esm/{button-active-90f1dbc4.js → button-active-f6503382.js} +1 -1
  236. package/dist/esm/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
  237. package/dist/esm/{framework-delegate-3e745cc0.js → framework-delegate-63d1a679.js} +1 -1
  238. package/dist/esm/{hardware-back-button-d58e8ab6.js → hardware-back-button-06ef3c3e.js} +2 -2
  239. package/dist/esm/{helpers-16b36a2b.js → helpers-da915de8.js} +29 -11
  240. package/dist/esm/{index-527b9e34.js → index-28849c61.js} +4 -1
  241. package/dist/esm/{index-ae5421cc.js → index-2f7fde3d.js} +6 -6
  242. package/dist/esm/{index-9b0d46f4.js → index-6ad967f3.js} +11 -3
  243. package/dist/esm/{index-299c3a24.js → index-79b30591.js} +1 -1
  244. package/dist/esm/{index-a94537d9.js → index-cb21eccb.js} +4 -4
  245. package/dist/esm/{index-10f4ed65.js → index-e2cf2ceb.js} +2 -2
  246. package/dist/esm/{index-d312d755.js → index-efb8ecdf.js} +2 -2
  247. package/dist/esm/index.js +11 -11
  248. package/dist/esm/{input-shims-7761bb89.js → input-shims-2fd7c6ef.js} +5 -3
  249. package/dist/esm/{input.utils-005c974b.js → input.utils-961c9f17.js} +2 -2
  250. package/dist/esm/ion-accordion_2.entry.js +5 -5
  251. package/dist/esm/ion-action-sheet.entry.js +8 -8
  252. package/dist/esm/ion-alert.entry.js +8 -8
  253. package/dist/esm/ion-app_8.entry.js +18 -18
  254. package/dist/esm/ion-avatar_3.entry.js +3 -3
  255. package/dist/esm/ion-back-button.entry.js +4 -4
  256. package/dist/esm/ion-backdrop.entry.js +2 -2
  257. package/dist/esm/ion-breadcrumb_2.entry.js +4 -4
  258. package/dist/esm/ion-button_2.entry.js +4 -4
  259. package/dist/esm/ion-card_5.entry.js +3 -3
  260. package/dist/esm/ion-checkbox.entry.js +8 -7
  261. package/dist/esm/ion-chip.entry.js +2 -2
  262. package/dist/esm/ion-col_3.entry.js +3 -3
  263. package/dist/esm/ion-datetime-button.entry.js +5 -5
  264. package/dist/esm/ion-datetime_3.entry.js +13 -13
  265. package/dist/esm/ion-fab_3.entry.js +4 -4
  266. package/dist/esm/ion-img.entry.js +3 -3
  267. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  268. package/dist/esm/ion-input-password-toggle.entry.js +4 -4
  269. package/dist/esm/ion-input.entry.js +7 -7
  270. package/dist/esm/ion-item-option_3.entry.js +9 -9
  271. package/dist/esm/ion-item_8.entry.js +15 -15
  272. package/dist/esm/ion-loading.entry.js +9 -9
  273. package/dist/esm/ion-menu_3.entry.js +15 -15
  274. package/dist/esm/ion-modal.entry.js +267 -44
  275. package/dist/esm/ion-nav_2.entry.js +9 -9
  276. package/dist/esm/ion-picker-column-option.entry.js +5 -5
  277. package/dist/esm/ion-picker-column.entry.js +3 -3
  278. package/dist/esm/ion-picker.entry.js +2 -2
  279. package/dist/esm/ion-popover.entry.js +10 -10
  280. package/dist/esm/ion-progress-bar.entry.js +4 -4
  281. package/dist/esm/ion-radio_2.entry.js +42 -7
  282. package/dist/esm/ion-range.entry.js +8 -8
  283. package/dist/esm/ion-refresher_2.entry.js +8 -8
  284. package/dist/esm/ion-reorder_2.entry.js +8 -8
  285. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  286. package/dist/esm/ion-route_4.entry.js +5 -5
  287. package/dist/esm/ion-searchbar.entry.js +8 -8
  288. package/dist/esm/ion-segment-content.entry.js +2 -2
  289. package/dist/esm/ion-segment-view.entry.js +3 -3
  290. package/dist/esm/ion-segment_2.entry.js +13 -44
  291. package/dist/esm/ion-select-modal.entry.js +8 -8
  292. package/dist/esm/ion-select_3.entry.js +25 -51
  293. package/dist/esm/ion-spinner.entry.js +3 -3
  294. package/dist/esm/ion-split-pane.entry.js +4 -4
  295. package/dist/esm/ion-tab-bar_2.entry.js +7 -7
  296. package/dist/esm/ion-tab_2.entry.js +6 -6
  297. package/dist/esm/ion-text.entry.js +4 -4
  298. package/dist/esm/ion-textarea.entry.js +8 -8
  299. package/dist/esm/ion-toast.entry.js +9 -9
  300. package/dist/esm/ion-toggle.entry.js +9 -8
  301. package/dist/esm/{ionic-global-33560a0a.js → ionic-global-c81d82ab.js} +12 -1
  302. package/dist/esm/ionic.js +5 -5
  303. package/dist/esm/{ios.transition-ee25fba4.js → ios.transition-b1da3753.js} +5 -5
  304. package/dist/esm/loader.js +5 -5
  305. package/dist/esm/{md.transition-76353fd3.js → md.transition-571b3859.js} +5 -5
  306. package/dist/esm/{notch-controller-b94a6b7b.js → notch-controller-55b09e11.js} +1 -1
  307. package/dist/esm/{overlays-87b6aa7c.js → overlays-5deab4de.js} +5 -5
  308. package/dist/esm/{status-tap-c5dd83b2.js → status-tap-79eac0ac.js} +5 -4
  309. package/dist/esm/{swipe-back-6e381b00.js → swipe-back-e5394307.js} +1 -1
  310. package/dist/esm-es5/app-globals-5dbb61a5.js +4 -0
  311. package/dist/esm-es5/{button-active-90f1dbc4.js → button-active-f6503382.js} +1 -1
  312. package/dist/esm-es5/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
  313. package/dist/esm-es5/{framework-delegate-3e745cc0.js → framework-delegate-63d1a679.js} +1 -1
  314. package/dist/esm-es5/{hardware-back-button-d58e8ab6.js → hardware-back-button-06ef3c3e.js} +1 -1
  315. package/dist/esm-es5/helpers-da915de8.js +4 -0
  316. package/dist/esm-es5/index-28849c61.js +5 -0
  317. package/dist/esm-es5/{index-ae5421cc.js → index-2f7fde3d.js} +1 -1
  318. package/dist/esm-es5/index-6ad967f3.js +4 -0
  319. package/dist/esm-es5/{index-299c3a24.js → index-79b30591.js} +1 -1
  320. package/dist/esm-es5/{index-a94537d9.js → index-cb21eccb.js} +1 -1
  321. package/dist/esm-es5/{index-10f4ed65.js → index-e2cf2ceb.js} +1 -1
  322. package/dist/esm-es5/{index-d312d755.js → index-efb8ecdf.js} +1 -1
  323. package/dist/esm-es5/index.js +1 -1
  324. package/dist/esm-es5/input-shims-2fd7c6ef.js +4 -0
  325. package/dist/esm-es5/{input.utils-005c974b.js → input.utils-961c9f17.js} +1 -1
  326. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  327. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  328. package/dist/esm-es5/ion-alert.entry.js +1 -1
  329. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  330. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  331. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  332. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  333. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  334. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  335. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  336. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  337. package/dist/esm-es5/ion-chip.entry.js +1 -1
  338. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  339. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  340. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  341. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  342. package/dist/esm-es5/ion-img.entry.js +1 -1
  343. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  344. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  345. package/dist/esm-es5/ion-input.entry.js +1 -1
  346. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  347. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  348. package/dist/esm-es5/ion-loading.entry.js +1 -1
  349. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  350. package/dist/esm-es5/ion-modal.entry.js +1 -1
  351. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  352. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  353. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  354. package/dist/esm-es5/ion-picker.entry.js +1 -1
  355. package/dist/esm-es5/ion-popover.entry.js +1 -1
  356. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  357. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  358. package/dist/esm-es5/ion-range.entry.js +1 -1
  359. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  360. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  361. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  362. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  363. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  364. package/dist/esm-es5/ion-segment-content.entry.js +1 -1
  365. package/dist/esm-es5/ion-segment-view.entry.js +1 -1
  366. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  367. package/dist/esm-es5/ion-select-modal.entry.js +1 -1
  368. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  369. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  370. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  371. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  372. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  373. package/dist/esm-es5/ion-text.entry.js +1 -1
  374. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  375. package/dist/esm-es5/ion-toast.entry.js +1 -1
  376. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  377. package/dist/esm-es5/ionic-global-c81d82ab.js +4 -0
  378. package/dist/esm-es5/ionic.js +1 -1
  379. package/dist/esm-es5/{ios.transition-ee25fba4.js → ios.transition-b1da3753.js} +1 -1
  380. package/dist/esm-es5/loader.js +1 -1
  381. package/dist/esm-es5/md.transition-571b3859.js +4 -0
  382. package/dist/esm-es5/{notch-controller-b94a6b7b.js → notch-controller-55b09e11.js} +1 -1
  383. package/dist/esm-es5/{overlays-87b6aa7c.js → overlays-5deab4de.js} +1 -1
  384. package/dist/esm-es5/status-tap-79eac0ac.js +4 -0
  385. package/dist/esm-es5/{swipe-back-6e381b00.js → swipe-back-e5394307.js} +1 -1
  386. package/dist/html.html-data.json +24 -0
  387. package/dist/ionic/index.esm.js +1 -1
  388. package/dist/ionic/ionic.esm.js +1 -1
  389. package/dist/ionic/ionic.js +1 -1
  390. package/dist/ionic/{p-50eb95ba.system.entry.js → p-01186920.system.entry.js} +1 -1
  391. package/dist/ionic/{p-734de30f.system.entry.js → p-01af2109.system.entry.js} +1 -1
  392. package/dist/ionic/p-0574e87e.js +4 -0
  393. package/dist/ionic/{p-4bcc2581.system.entry.js → p-05b74e45.system.entry.js} +1 -1
  394. package/dist/ionic/p-081a4ce4.entry.js +4 -0
  395. package/dist/ionic/p-0af823e1.js +4 -0
  396. package/dist/ionic/p-0b7112fc.entry.js +4 -0
  397. package/dist/ionic/{p-07cf4028.system.js → p-0eb35a7f.system.js} +1 -1
  398. package/dist/ionic/{p-a9de8117.system.entry.js → p-0ef6abb0.system.entry.js} +1 -1
  399. package/dist/ionic/p-109cae7d.entry.js +4 -0
  400. package/dist/ionic/p-120fb79a.entry.js +4 -0
  401. package/dist/ionic/{p-037621ad.entry.js → p-15d18206.entry.js} +1 -1
  402. package/dist/ionic/{p-3711b93e.entry.js → p-15e76dd1.entry.js} +1 -1
  403. package/dist/ionic/{p-56358500.system.js → p-19ea7bff.system.js} +1 -1
  404. package/dist/ionic/{p-d60342e3.js → p-1a5bc5f7.js} +1 -1
  405. package/dist/ionic/{p-1828fde5.js → p-1ab13b2b.js} +1 -1
  406. package/dist/ionic/{p-fa8b0bbd.entry.js → p-1c934892.entry.js} +1 -1
  407. package/dist/ionic/{p-67f4233a.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  408. package/dist/ionic/{p-6724b6ce.entry.js → p-1e6d7da3.entry.js} +1 -1
  409. package/dist/ionic/{p-32be7b07.system.js → p-1e955a45.system.js} +1 -1
  410. package/dist/ionic/{p-1fa70a4d.system.entry.js → p-1fbc571c.system.entry.js} +1 -1
  411. package/dist/ionic/{p-37344c74.system.entry.js → p-2346ab53.system.entry.js} +2 -2
  412. package/dist/ionic/{p-82028789.system.entry.js → p-248318e0.system.entry.js} +1 -1
  413. package/dist/ionic/p-25180df3.system.js +5 -0
  414. package/dist/ionic/{p-c9f32d38.entry.js → p-27d29df8.entry.js} +1 -1
  415. package/dist/ionic/{p-e9336870.js → p-28706c6f.js} +1 -1
  416. package/dist/ionic/p-2b048a95.system.entry.js +4 -0
  417. package/dist/ionic/{p-2fa83e88.entry.js → p-2d1d8a25.entry.js} +1 -1
  418. package/dist/ionic/{p-ced5d9b6.system.entry.js → p-31c37f38.system.entry.js} +1 -1
  419. package/dist/ionic/p-322c5fb4.system.js +4 -0
  420. package/dist/ionic/{p-7341f38d.entry.js → p-33a8a71b.entry.js} +1 -1
  421. package/dist/ionic/{p-71235698.system.entry.js → p-33c9f005.system.entry.js} +2 -2
  422. package/dist/ionic/{p-f687573e.system.js → p-343b6b1d.system.js} +1 -1
  423. package/dist/ionic/{p-fb4ae485.js → p-34b11c24.js} +1 -1
  424. package/dist/ionic/{p-a4866e3e.system.js → p-372ae7f4.system.js} +1 -1
  425. package/dist/ionic/{p-741f94fe.system.entry.js → p-37495da1.system.entry.js} +1 -1
  426. package/dist/ionic/{p-ca27d793.system.entry.js → p-39164acf.system.entry.js} +1 -1
  427. package/dist/ionic/p-3ad285e3.system.js +4 -0
  428. package/dist/ionic/{p-c23b3d05.entry.js → p-3b33b7d3.entry.js} +1 -1
  429. package/dist/ionic/{p-f99425b1.system.js → p-3c8e5c23.system.js} +1 -1
  430. package/dist/ionic/{p-9f85d4b1.js → p-3cc276f4.js} +1 -1
  431. package/dist/ionic/p-3e6be709.entry.js +4 -0
  432. package/dist/ionic/{p-a9740e59.entry.js → p-40b5455f.entry.js} +1 -1
  433. package/dist/ionic/{p-9e5d5e43.entry.js → p-4b4f4a4c.entry.js} +1 -1
  434. package/dist/ionic/p-4c2d5b80.system.js +4 -0
  435. package/dist/ionic/p-4c98e2cf.system.js +4 -0
  436. package/dist/ionic/p-4e6a6eca.entry.js +4 -0
  437. package/dist/ionic/{p-5f8c7f64.entry.js → p-51030d96.entry.js} +1 -1
  438. package/dist/ionic/{p-93ee5b02.entry.js → p-52d7a191.entry.js} +1 -1
  439. package/dist/ionic/{p-86189afd.system.entry.js → p-542a569d.system.entry.js} +1 -1
  440. package/dist/ionic/{p-2be04f09.system.entry.js → p-55d16109.system.entry.js} +1 -1
  441. package/dist/ionic/{p-685e9613.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  442. package/dist/ionic/{p-09aa088e.system.js → p-5c08627a.system.js} +1 -1
  443. package/dist/ionic/{p-c8c27ae7.system.entry.js → p-5cc9314d.system.entry.js} +1 -1
  444. package/dist/ionic/{p-ed1a1717.system.entry.js → p-5d0c6c4d.system.entry.js} +1 -1
  445. package/dist/ionic/{p-17088ca0.entry.js → p-5d93d251.entry.js} +1 -1
  446. package/dist/ionic/{p-db8a02a0.system.entry.js → p-5e0df4c8.system.entry.js} +1 -1
  447. package/dist/ionic/{p-67d24f70.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
  448. package/dist/ionic/{p-6b0c686e.system.entry.js → p-62f648c8.system.entry.js} +1 -1
  449. package/dist/ionic/{p-64c76f26.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  450. package/dist/ionic/p-67222c16.system.js +4 -0
  451. package/dist/ionic/{p-21891ead.js → p-69066a53.js} +1 -1
  452. package/dist/ionic/p-6c95736e.entry.js +4 -0
  453. package/dist/ionic/p-71c9d1fe.entry.js +4 -0
  454. package/dist/ionic/{p-9dfcac21.js → p-72812e99.js} +1 -1
  455. package/dist/ionic/{p-5faf0879.js → p-72bc8a1c.js} +1 -1
  456. package/dist/ionic/{p-81a4c94d.system.entry.js → p-744b2484.system.entry.js} +1 -1
  457. package/dist/ionic/p-7513b0c4.js +4 -0
  458. package/dist/ionic/{p-4ea83104.entry.js → p-7895d719.entry.js} +1 -1
  459. package/dist/ionic/{p-22336c85.entry.js → p-7a6eaf9e.entry.js} +1 -1
  460. package/dist/ionic/p-7af3d1e8.system.entry.js +4 -0
  461. package/dist/ionic/p-7b9a2b23.entry.js +4 -0
  462. package/dist/ionic/{p-57de65cb.system.js → p-7de1e42c.system.js} +1 -1
  463. package/dist/ionic/{p-5216f047.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  464. package/dist/ionic/{p-caafaec4.system.js → p-8635f5e6.system.js} +1 -1
  465. package/dist/ionic/p-870ae33b.system.entry.js +4 -0
  466. package/dist/ionic/p-87479c71.entry.js +4 -0
  467. package/dist/ionic/{p-b42d475d.entry.js → p-89bf08c7.entry.js} +1 -1
  468. package/dist/ionic/{p-2bc0c8cf.entry.js → p-89cc9270.entry.js} +1 -1
  469. package/dist/ionic/{p-e5a3b38b.system.entry.js → p-8ac07653.system.entry.js} +2 -2
  470. package/dist/ionic/{p-43fe4853.system.entry.js → p-8cfba7e9.system.entry.js} +1 -1
  471. package/dist/ionic/p-8e35b472.entry.js +4 -0
  472. package/dist/ionic/p-8e5dbf2b.entry.js +4 -0
  473. package/dist/ionic/p-8f4361a8.system.entry.js +4 -0
  474. package/dist/ionic/p-9135153b.entry.js +4 -0
  475. package/dist/ionic/p-922daa9f.entry.js +4 -0
  476. package/dist/ionic/{p-f4af839e.system.entry.js → p-933727f9.system.entry.js} +1 -1
  477. package/dist/ionic/p-9343a445.js +4 -0
  478. package/dist/ionic/{p-f0e14400.entry.js → p-948e6c6a.entry.js} +1 -1
  479. package/dist/ionic/{p-a0a5c0db.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  480. package/dist/ionic/p-9f3008d4.system.js +4 -0
  481. package/dist/ionic/{p-68327266.system.entry.js → p-a090bce8.system.entry.js} +1 -1
  482. package/dist/ionic/{p-1fed4470.system.js → p-a15ddedb.system.js} +1 -1
  483. package/dist/ionic/{p-87570c71.system.entry.js → p-a3a1d721.system.entry.js} +1 -1
  484. package/dist/ionic/p-a3db8ee3.js +4 -0
  485. package/dist/ionic/{p-e4cc4565.system.entry.js → p-a4a2420e.system.entry.js} +1 -1
  486. package/dist/ionic/p-a69b9fc5.system.js +4 -0
  487. package/dist/ionic/{p-d1410529.system.js → p-a88dec0d.system.js} +2 -2
  488. package/dist/ionic/p-a8f2c254.entry.js +4 -0
  489. package/dist/ionic/{p-9bcc9444.entry.js → p-abf549eb.entry.js} +1 -1
  490. package/dist/ionic/{p-89d3401f.system.js → p-ada36597.system.js} +1 -1
  491. package/dist/ionic/{p-ad4cca47.system.entry.js → p-b0c7b12b.system.entry.js} +1 -1
  492. package/dist/ionic/{p-fae7cdef.entry.js → p-b1eb86fd.entry.js} +1 -1
  493. package/dist/ionic/{p-ecc26ede.entry.js → p-b1f885df.entry.js} +1 -1
  494. package/dist/ionic/{p-3a993e5c.system.js → p-b3c60433.system.js} +1 -1
  495. package/dist/ionic/p-b51e4004.js +4 -0
  496. package/dist/ionic/{p-37c85d40.js → p-b6efeab8.js} +1 -1
  497. package/dist/ionic/{p-e9cd554c.system.entry.js → p-b7329612.system.entry.js} +1 -1
  498. package/dist/ionic/p-b9d7015f.entry.js +4 -0
  499. package/dist/ionic/p-ba3f918e.entry.js +4 -0
  500. package/dist/ionic/{p-82acef74.system.entry.js → p-bc68c7cf.system.entry.js} +1 -1
  501. package/dist/ionic/{p-e80fc48f.entry.js → p-bd5f29ea.entry.js} +1 -1
  502. package/dist/ionic/{p-841c4879.entry.js → p-bdad26e3.entry.js} +1 -1
  503. package/dist/ionic/{p-6752a057.entry.js → p-bf63d4b2.entry.js} +1 -1
  504. package/dist/ionic/{p-48e13c51.entry.js → p-c41ac815.entry.js} +1 -1
  505. package/dist/ionic/{p-7d2357da.system.js → p-c4238c12.system.js} +1 -1
  506. package/dist/ionic/{p-235edda0.entry.js → p-c4d86289.entry.js} +1 -1
  507. package/dist/ionic/{p-b480d2b1.entry.js → p-c51dc7fe.entry.js} +1 -1
  508. package/dist/ionic/{p-b22a0644.system.entry.js → p-c7ab2908.system.entry.js} +1 -1
  509. package/dist/ionic/{p-135d546a.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  510. package/dist/ionic/p-cb13696c.js +4 -0
  511. package/dist/ionic/{p-0892f0a1.system.entry.js → p-cb6954d4.system.entry.js} +1 -1
  512. package/dist/ionic/{p-bdcfdf25.system.entry.js → p-cd7ffa67.system.entry.js} +1 -1
  513. package/dist/ionic/p-d1c5b60e.system.js +4 -0
  514. package/dist/ionic/{p-e4c8444f.system.entry.js → p-d2203d60.system.entry.js} +1 -1
  515. package/dist/ionic/{p-4ba8de87.system.js → p-d22e2a38.system.js} +1 -1
  516. package/dist/ionic/{p-06260d68.system.entry.js → p-d341d412.system.entry.js} +1 -1
  517. package/dist/ionic/{p-ff861eb0.js → p-d743e981.js} +1 -1
  518. package/dist/ionic/{p-d7e6cd7e.entry.js → p-d7aa6b00.entry.js} +1 -1
  519. package/dist/ionic/p-d836d43e.js +5 -0
  520. package/dist/ionic/{p-84746494.system.entry.js → p-d8d15f9b.system.entry.js} +2 -2
  521. package/dist/ionic/{p-e6200d13.js → p-da2b833b.js} +1 -1
  522. package/dist/ionic/p-da7e1bc4.entry.js +4 -0
  523. package/dist/ionic/{p-80a4f5a4.system.entry.js → p-e09d6392.system.entry.js} +1 -1
  524. package/dist/ionic/{p-e78844bd.system.entry.js → p-e0a6dc45.system.entry.js} +1 -1
  525. package/dist/ionic/{p-695c3921.entry.js → p-e75295c8.entry.js} +1 -1
  526. package/dist/ionic/p-e76dae93.entry.js +4 -0
  527. package/dist/ionic/p-e8d56122.js +4 -0
  528. package/dist/ionic/{p-d7811e30.system.entry.js → p-e9ddf8fe.system.entry.js} +1 -1
  529. package/dist/ionic/{p-8f6d68b7.js → p-ecceeb90.js} +1 -1
  530. package/dist/ionic/p-f1c4dcd4.js +4 -0
  531. package/dist/ionic/{p-4cfb0dc8.entry.js → p-f2a72b24.entry.js} +1 -1
  532. package/dist/ionic/{p-f93eb347.system.entry.js → p-f3102647.system.entry.js} +1 -1
  533. package/dist/ionic/{p-e31c0092.system.entry.js → p-f658c74e.system.entry.js} +1 -1
  534. package/dist/ionic/{p-2664778b.system.entry.js → p-f8e37d24.system.entry.js} +1 -1
  535. package/dist/ionic/{p-7b091122.entry.js → p-f907406b.entry.js} +1 -1
  536. package/dist/ionic/{p-fd01cb8a.system.entry.js → p-fd4e25b5.system.entry.js} +1 -1
  537. package/dist/ionic/{p-644cfb0d.entry.js → p-fd6cff12.entry.js} +1 -1
  538. package/dist/ionic/svg/accessibility-outline.svg +1 -1
  539. package/dist/ionic/svg/accessibility-sharp.svg +1 -1
  540. package/dist/ionic/svg/accessibility.svg +1 -1
  541. package/dist/ionic/svg/bag-add-outline.svg +1 -1
  542. package/dist/ionic/svg/bag-add-sharp.svg +1 -1
  543. package/dist/ionic/svg/bag-add.svg +1 -1
  544. package/dist/ionic/svg/bag-check-outline.svg +1 -1
  545. package/dist/ionic/svg/bag-check-sharp.svg +1 -1
  546. package/dist/ionic/svg/bag-check.svg +1 -1
  547. package/dist/ionic/svg/bag-handle-outline.svg +1 -1
  548. package/dist/ionic/svg/bag-handle-sharp.svg +1 -1
  549. package/dist/ionic/svg/bag-handle.svg +1 -1
  550. package/dist/ionic/svg/bag-outline.svg +1 -1
  551. package/dist/ionic/svg/bag-remove-outline.svg +1 -1
  552. package/dist/ionic/svg/bag-remove-sharp.svg +1 -1
  553. package/dist/ionic/svg/bag-remove.svg +1 -1
  554. package/dist/ionic/svg/bag-sharp.svg +1 -1
  555. package/dist/ionic/svg/bag.svg +1 -1
  556. package/dist/ionic/svg/balloon-outline.svg +1 -1
  557. package/dist/ionic/svg/balloon-sharp.svg +1 -1
  558. package/dist/ionic/svg/balloon.svg +1 -1
  559. package/dist/ionic/svg/ban-outline.svg +1 -1
  560. package/dist/ionic/svg/ban-sharp.svg +1 -1
  561. package/dist/ionic/svg/ban.svg +1 -1
  562. package/dist/ionic/svg/body-outline.svg +1 -1
  563. package/dist/ionic/svg/bowling-ball-outline.svg +1 -1
  564. package/dist/ionic/svg/bowling-ball-sharp.svg +1 -1
  565. package/dist/ionic/svg/bowling-ball.svg +1 -1
  566. package/dist/ionic/svg/calendar-clear-outline.svg +1 -1
  567. package/dist/ionic/svg/calendar-clear-sharp.svg +1 -1
  568. package/dist/ionic/svg/calendar-clear.svg +1 -1
  569. package/dist/ionic/svg/calendar-number-outline.svg +1 -1
  570. package/dist/ionic/svg/calendar-number-sharp.svg +1 -1
  571. package/dist/ionic/svg/calendar-number.svg +1 -1
  572. package/dist/ionic/svg/calendar-outline.svg +1 -1
  573. package/dist/ionic/svg/calendar-sharp.svg +1 -1
  574. package/dist/ionic/svg/calendar.svg +1 -1
  575. package/dist/ionic/svg/chevron-collapse-outline.svg +1 -1
  576. package/dist/ionic/svg/chevron-collapse-sharp.svg +1 -1
  577. package/dist/ionic/svg/chevron-collapse.svg +1 -1
  578. package/dist/ionic/svg/chevron-expand-outline.svg +1 -1
  579. package/dist/ionic/svg/chevron-expand-sharp.svg +1 -1
  580. package/dist/ionic/svg/chevron-expand.svg +1 -1
  581. package/dist/ionic/svg/color-wand-outline.svg +1 -1
  582. package/dist/ionic/svg/color-wand.svg +1 -1
  583. package/dist/ionic/svg/diamond-outline.svg +1 -1
  584. package/dist/ionic/svg/diamond-sharp.svg +1 -1
  585. package/dist/ionic/svg/diamond.svg +1 -1
  586. package/dist/ionic/svg/dice-outline.svg +1 -1
  587. package/dist/ionic/svg/dice-sharp.svg +1 -1
  588. package/dist/ionic/svg/dice.svg +1 -1
  589. package/dist/ionic/svg/document-lock-outline.svg +1 -1
  590. package/dist/ionic/svg/document-lock-sharp.svg +1 -1
  591. package/dist/ionic/svg/document-lock.svg +1 -1
  592. package/dist/ionic/svg/extension-puzzle-outline.svg +1 -1
  593. package/dist/ionic/svg/extension-puzzle-sharp.svg +1 -1
  594. package/dist/ionic/svg/extension-puzzle.svg +1 -1
  595. package/dist/ionic/svg/filter-circle-outline.svg +1 -1
  596. package/dist/ionic/svg/filter-circle-sharp.svg +1 -1
  597. package/dist/ionic/svg/filter-circle.svg +1 -1
  598. package/dist/ionic/svg/fish-outline.svg +1 -1
  599. package/dist/ionic/svg/fish-sharp.svg +1 -1
  600. package/dist/ionic/svg/fish.svg +1 -1
  601. package/dist/ionic/svg/footsteps-outline.svg +1 -1
  602. package/dist/ionic/svg/footsteps-sharp.svg +1 -1
  603. package/dist/ionic/svg/footsteps.svg +1 -1
  604. package/dist/ionic/svg/id-card-outline.svg +1 -1
  605. package/dist/ionic/svg/id-card-sharp.svg +1 -1
  606. package/dist/ionic/svg/id-card.svg +1 -1
  607. package/dist/ionic/svg/invert-mode-outline.svg +1 -1
  608. package/dist/ionic/svg/invert-mode-sharp.svg +1 -1
  609. package/dist/ionic/svg/invert-mode.svg +1 -1
  610. package/dist/ionic/svg/logo-alipay.svg +1 -1
  611. package/dist/ionic/svg/logo-android.svg +1 -1
  612. package/dist/ionic/svg/logo-apple-ar.svg +1 -1
  613. package/dist/ionic/svg/logo-behance.svg +1 -1
  614. package/dist/ionic/svg/logo-bitbucket.svg +1 -1
  615. package/dist/ionic/svg/logo-deviantart.svg +1 -1
  616. package/dist/ionic/svg/logo-discord.svg +1 -1
  617. package/dist/ionic/svg/logo-docker.svg +1 -1
  618. package/dist/ionic/svg/logo-edge.svg +1 -1
  619. package/dist/ionic/svg/logo-facebook.svg +1 -1
  620. package/dist/ionic/svg/logo-figma.svg +1 -1
  621. package/dist/ionic/svg/logo-firebase.svg +1 -1
  622. package/dist/ionic/svg/logo-gitlab.svg +1 -1
  623. package/dist/ionic/svg/logo-ionic.svg +1 -1
  624. package/dist/ionic/svg/logo-mastodon.svg +1 -1
  625. package/dist/ionic/svg/logo-medium.svg +1 -1
  626. package/dist/ionic/svg/logo-microsoft.svg +1 -1
  627. package/dist/ionic/svg/logo-npm.svg +1 -1
  628. package/dist/ionic/svg/logo-paypal.svg +1 -1
  629. package/dist/ionic/svg/logo-soundcloud.svg +1 -1
  630. package/dist/ionic/svg/logo-tableau.svg +1 -1
  631. package/dist/ionic/svg/logo-tiktok.svg +1 -1
  632. package/dist/ionic/svg/logo-venmo.svg +1 -1
  633. package/dist/ionic/svg/logo-vercel.svg +1 -1
  634. package/dist/ionic/svg/logo-wechat.svg +1 -1
  635. package/dist/ionic/svg/logo-yahoo.svg +1 -1
  636. package/dist/ionic/svg/prism-outline.svg +1 -1
  637. package/dist/ionic/svg/prism-sharp.svg +1 -1
  638. package/dist/ionic/svg/prism.svg +1 -1
  639. package/dist/ionic/svg/scale-outline.svg +1 -1
  640. package/dist/ionic/svg/scale-sharp.svg +1 -1
  641. package/dist/ionic/svg/scale.svg +1 -1
  642. package/dist/ionic/svg/server-outline.svg +1 -1
  643. package/dist/ionic/svg/server-sharp.svg +1 -1
  644. package/dist/ionic/svg/server.svg +1 -1
  645. package/dist/ionic/svg/shield-half-outline.svg +1 -1
  646. package/dist/ionic/svg/shield-half-sharp.svg +1 -1
  647. package/dist/ionic/svg/shield-half.svg +1 -1
  648. package/dist/ionic/svg/sparkles-outline.svg +1 -1
  649. package/dist/ionic/svg/sparkles-sharp.svg +1 -1
  650. package/dist/ionic/svg/sparkles.svg +1 -1
  651. package/dist/ionic/svg/storefront-outline.svg +1 -1
  652. package/dist/ionic/svg/storefront-sharp.svg +1 -1
  653. package/dist/ionic/svg/storefront.svg +1 -1
  654. package/dist/ionic/svg/telescope-outline.svg +1 -1
  655. package/dist/ionic/svg/telescope-sharp.svg +1 -1
  656. package/dist/ionic/svg/telescope.svg +1 -1
  657. package/dist/ionic/svg/ticket-outline.svg +1 -1
  658. package/dist/ionic/svg/ticket-sharp.svg +1 -1
  659. package/dist/ionic/svg/ticket.svg +1 -1
  660. package/dist/ionic/svg/today-outline.svg +1 -1
  661. package/dist/ionic/svg/today-sharp.svg +1 -1
  662. package/dist/ionic/svg/today.svg +1 -1
  663. package/dist/ionic/svg/unlink-outline.svg +1 -1
  664. package/dist/ionic/svg/unlink-sharp.svg +1 -1
  665. package/dist/ionic/svg/unlink.svg +1 -1
  666. package/dist/ionic/svg/videocam-off-outline.svg +1 -1
  667. package/dist/ionic/svg/videocam-off-sharp.svg +1 -1
  668. package/dist/ionic/svg/videocam-off.svg +1 -1
  669. package/dist/ionic/svg/wifi-outline.svg +1 -1
  670. package/dist/ionic/svg/wifi-sharp.svg +1 -1
  671. package/dist/ionic/svg/wifi.svg +1 -1
  672. package/dist/types/components/checkbox/checkbox.d.ts +6 -0
  673. package/dist/types/components/modal/animations/sheet.d.ts +1 -0
  674. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  675. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  676. package/dist/types/components/modal/modal.d.ts +11 -0
  677. package/dist/types/components/radio-group/radio-group.d.ts +15 -0
  678. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  679. package/dist/types/components/select/select.d.ts +6 -0
  680. package/dist/types/components/toggle/toggle.d.ts +6 -0
  681. package/dist/types/components/toolbar/toolbar.d.ts +4 -0
  682. package/dist/types/components.d.ts +48 -0
  683. package/dist/types/utils/config.d.ts +12 -0
  684. package/dist/types/utils/helpers.d.ts +0 -1
  685. package/dist/types/utils/logging/index.d.ts +13 -1
  686. package/hydrate/index.js +458 -221
  687. package/hydrate/index.mjs +458 -221
  688. package/package.json +5 -5
  689. package/dist/esm-es5/app-globals-0aadb3a9.js +0 -4
  690. package/dist/esm-es5/helpers-16b36a2b.js +0 -4
  691. package/dist/esm-es5/index-527b9e34.js +0 -5
  692. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  693. package/dist/esm-es5/input-shims-7761bb89.js +0 -4
  694. package/dist/esm-es5/ionic-global-33560a0a.js +0 -4
  695. package/dist/esm-es5/md.transition-76353fd3.js +0 -4
  696. package/dist/esm-es5/status-tap-c5dd83b2.js +0 -4
  697. package/dist/ionic/p-0612c7c3.entry.js +0 -4
  698. package/dist/ionic/p-06fee233.js +0 -4
  699. package/dist/ionic/p-0a47a1fb.entry.js +0 -4
  700. package/dist/ionic/p-0caec68d.entry.js +0 -4
  701. package/dist/ionic/p-14e6a33e.entry.js +0 -4
  702. package/dist/ionic/p-1fadb8b9.js +0 -4
  703. package/dist/ionic/p-248ff024.system.js +0 -4
  704. package/dist/ionic/p-32ab7c59.entry.js +0 -4
  705. package/dist/ionic/p-39f6077e.js +0 -4
  706. package/dist/ionic/p-41dc2b36.system.js +0 -4
  707. package/dist/ionic/p-5406a48a.system.entry.js +0 -4
  708. package/dist/ionic/p-5430a6da.entry.js +0 -4
  709. package/dist/ionic/p-5b73e74c.js +0 -4
  710. package/dist/ionic/p-60666514.entry.js +0 -4
  711. package/dist/ionic/p-61153ec9.entry.js +0 -4
  712. package/dist/ionic/p-637c868c.entry.js +0 -4
  713. package/dist/ionic/p-66a5d6a8.js +0 -5
  714. package/dist/ionic/p-6d969696.system.js +0 -4
  715. package/dist/ionic/p-71062ade.system.js +0 -4
  716. package/dist/ionic/p-73d6a80d.entry.js +0 -4
  717. package/dist/ionic/p-75098ab5.system.js +0 -4
  718. package/dist/ionic/p-8fdfd686.system.entry.js +0 -4
  719. package/dist/ionic/p-93ce49e8.entry.js +0 -4
  720. package/dist/ionic/p-a25c4e5d.js +0 -4
  721. package/dist/ionic/p-a8a9c283.system.js +0 -4
  722. package/dist/ionic/p-b28ea018.entry.js +0 -4
  723. package/dist/ionic/p-bd92a627.system.js +0 -4
  724. package/dist/ionic/p-be685cdb.entry.js +0 -4
  725. package/dist/ionic/p-bfe78c18.entry.js +0 -4
  726. package/dist/ionic/p-c566c4ac.js +0 -4
  727. package/dist/ionic/p-c98f1186.entry.js +0 -4
  728. package/dist/ionic/p-d6251c7e.system.entry.js +0 -4
  729. package/dist/ionic/p-dbac4f3e.system.entry.js +0 -4
  730. package/dist/ionic/p-e13a0a45.entry.js +0 -4
  731. package/dist/ionic/p-e530e6e3.entry.js +0 -4
  732. package/dist/ionic/p-e6e2ff13.entry.js +0 -4
  733. package/dist/ionic/p-ece761b3.js +0 -4
  734. package/dist/ionic/p-f11a9436.system.js +0 -5
  735. package/dist/ionic/p-f70935ed.js +0 -4
  736. package/dist/ionic/p-fd579866.js +0 -4
  737. package/dist/ionic/p-ff4b7e40.system.js +0 -4
  738. package/dist/ionic/p-ff57f33a.entry.js +0 -4
  739. package/dist/ionic/svg/arrow-down-left-box-outline.svg +0 -1
  740. package/dist/ionic/svg/arrow-down-left-box-sharp.svg +0 -1
  741. package/dist/ionic/svg/arrow-down-left-box.svg +0 -1
  742. package/dist/ionic/svg/arrow-down-right-box-outline.svg +0 -1
  743. package/dist/ionic/svg/arrow-down-right-box-sharp.svg +0 -1
  744. package/dist/ionic/svg/arrow-down-right-box.svg +0 -1
  745. package/dist/ionic/svg/arrow-up-left-box-outline.svg +0 -1
  746. package/dist/ionic/svg/arrow-up-left-box-sharp.svg +0 -1
  747. package/dist/ionic/svg/arrow-up-left-box.svg +0 -1
  748. package/dist/ionic/svg/arrow-up-right-box-outline.svg +0 -1
  749. package/dist/ionic/svg/arrow-up-right-box-sharp.svg +0 -1
  750. package/dist/ionic/svg/arrow-up-right-box.svg +0 -1
  751. package/dist/ionic/svg/binoculars-outline.svg +0 -1
  752. package/dist/ionic/svg/binoculars-sharp.svg +0 -1
  753. package/dist/ionic/svg/binoculars.svg +0 -1
  754. package/dist/ionic/svg/logo-appflow.svg +0 -1
  755. package/dist/ionic/svg/logo-trapeze.svg +0 -1
  756. package/dist/ionic/svg/logo-x.svg +0 -1
package/hydrate/index.js CHANGED
@@ -2536,9 +2536,37 @@ const inheritAriaAttributes = (el, ignoreList) => {
2536
2536
  return inheritAttributes$1(el, attributesToInherit);
2537
2537
  };
2538
2538
  const addEventListener$1 = (el, eventName, callback, opts) => {
2539
+ var _a;
2540
+ if (typeof window !== 'undefined') {
2541
+ const win = window;
2542
+ const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
2543
+ if (config) {
2544
+ const ael = config.get('_ael');
2545
+ if (ael) {
2546
+ return ael(el, eventName, callback, opts);
2547
+ }
2548
+ else if (config._ael) {
2549
+ return config._ael(el, eventName, callback, opts);
2550
+ }
2551
+ }
2552
+ }
2539
2553
  return el.addEventListener(eventName, callback, opts);
2540
2554
  };
2541
2555
  const removeEventListener = (el, eventName, callback, opts) => {
2556
+ var _a;
2557
+ if (typeof window !== 'undefined') {
2558
+ const win = window;
2559
+ const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
2560
+ if (config) {
2561
+ const rel = config.get('_rel');
2562
+ if (rel) {
2563
+ return rel(el, eventName, callback, opts);
2564
+ }
2565
+ else if (config._rel) {
2566
+ return config._rel(el, eventName, callback, opts);
2567
+ }
2568
+ }
2569
+ }
2542
2570
  return el.removeEventListener(eventName, callback, opts);
2543
2571
  };
2544
2572
  /**
@@ -2682,18 +2710,8 @@ const shallowEqualStringMap = (map1, map2) => {
2682
2710
  }
2683
2711
  return true;
2684
2712
  };
2685
- const getNextSiblingOfType = (element) => {
2686
- let sibling = element.nextSibling;
2687
- while (sibling) {
2688
- if (sibling.nodeType === Node.ELEMENT_NODE && sibling !== null) {
2689
- return sibling;
2690
- }
2691
- sibling = sibling.nextSibling;
2692
- }
2693
- return null;
2694
- };
2695
2713
 
2696
- /* Ionicons v7.4.0, ES Modules */
2714
+ /* Ionicons v7.2.2, ES Modules */
2697
2715
  const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
2698
2716
  const arrowDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>";
2699
2717
  const caretBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M368 64L144 256l224 192V64z'/></svg>";
@@ -2702,7 +2720,7 @@ const caretUpSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000
2702
2720
  const checkmarkOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' d='M416 128L192 384l-96-96' class='ionicon-fill-none ionicon-stroke-width'/></svg>";
2703
2721
  const chevronBack = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M328 112L184 256l144 144' class='ionicon-fill-none'/></svg>";
2704
2722
  const chevronDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 184l144 144 144-144' class='ionicon-fill-none'/></svg>";
2705
- const chevronExpand = "data:image/svg+xml;utf8,<svg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg' class='ionicon'><path d='M136 208l120-104 120 104M136 304l120 104 120-104' stroke-width='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none'/></svg>";
2723
+ const chevronExpand = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M136 208l120-104 120 104M136 304l120 104 120-104' stroke-width='48' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none'/></svg>";
2706
2724
  const chevronForward = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>";
2707
2725
  const chevronForwardOutline = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M184 112l144 144-144 144' class='ionicon-fill-none'/></svg>";
2708
2726
  const close = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M289.94 256l95-95A24 24 0 00351 127l-95 95-95-95a24 24 0 00-34 34l95 95-95 95a24 24 0 1034 34l95-95 95 95a24 24 0 0034-34z'/></svg>";
@@ -3199,9 +3217,12 @@ let accordionIds = 0;
3199
3217
  * @param message - The string message to be logged to the console.
3200
3218
  */
3201
3219
  const printIonWarning = (message, ...params) => {
3202
- return console.warn(`[Ionic Warning]: ${message}`, ...params);
3220
+ const logLevel = config.get('logLevel', "WARN" /* LogLevel.WARN */);
3221
+ if (["WARN" /* LogLevel.WARN */].includes(logLevel)) {
3222
+ return console.warn(`[Ionic Warning]: ${message}`, ...params);
3223
+ }
3203
3224
  };
3204
- /*
3225
+ /**
3205
3226
  * Logs an error to the console with an Ionic prefix
3206
3227
  * to indicate the library that is warning the developer.
3207
3228
  *
@@ -3209,7 +3230,10 @@ const printIonWarning = (message, ...params) => {
3209
3230
  * @param params - Additional arguments to supply to the console.error.
3210
3231
  */
3211
3232
  const printIonError = (message, ...params) => {
3212
- return console.error(`[Ionic Error]: ${message}`, ...params);
3233
+ const logLevel = config.get('logLevel', "ERROR" /* LogLevel.ERROR */);
3234
+ if (["ERROR" /* LogLevel.ERROR */, "WARN" /* LogLevel.WARN */].includes(logLevel)) {
3235
+ return console.error(`[Ionic Error]: ${message}`, ...params);
3236
+ }
3213
3237
  };
3214
3238
  /**
3215
3239
  * Prints an error informing developers that an implementation requires an element to be used
@@ -8473,6 +8497,7 @@ class Checkbox {
8473
8497
  this.labelPlacement = 'start';
8474
8498
  this.justify = undefined;
8475
8499
  this.alignment = undefined;
8500
+ this.required = false;
8476
8501
  }
8477
8502
  componentWillLoad() {
8478
8503
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
@@ -8484,11 +8509,11 @@ class Checkbox {
8484
8509
  }
8485
8510
  }
8486
8511
  render() {
8487
- const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
8512
+ const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
8488
8513
  const mode = getIonMode$1(this);
8489
8514
  const path = getSVGPath(mode, indeterminate);
8490
8515
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8491
- return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8516
+ return (hAsync(Host, { key: '07a5884062dd256b570e856270c74a5a09d2f2a5', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8492
8517
  [mode]: true,
8493
8518
  'in-item': hostContext('ion-item', el),
8494
8519
  'checkbox-checked': checked,
@@ -8498,10 +8523,10 @@ class Checkbox {
8498
8523
  [`checkbox-justify-${justify}`]: justify !== undefined,
8499
8524
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8500
8525
  [`checkbox-label-placement-${labelPlacement}`]: true,
8501
- }), 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: {
8526
+ }), onClick: this.onClick }, hAsync("label", { key: '3439d546e8b60187421db698eab63a0bdd31c973', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: '9f45cf7dbdedcf01ec132c11e16979adb1aa102f', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: '4e882f98939cc4b7c7ab7459c751d3f4bb2023fe', class: {
8502
8527
  'label-text-wrapper': true,
8503
8528
  'label-text-wrapper-hidden': el.textContent === '',
8504
- }, 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)))));
8529
+ }, part: "label" }, hAsync("slot", { key: '0abda81297a086d02c4a56af75005547971dfcfe' })), hAsync("div", { key: '36489ea3f48a7d0ec46b77c243f9f253ef5c2b3b', class: "native-wrapper" }, hAsync("svg", { key: '4c53b52f5e93752672a34eb6f180b75fa9af9046', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8505
8530
  }
8506
8531
  getSVGPath(mode, indeterminate) {
8507
8532
  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" }));
@@ -8528,6 +8553,7 @@ class Checkbox {
8528
8553
  "labelPlacement": [1, "label-placement"],
8529
8554
  "justify": [1],
8530
8555
  "alignment": [1],
8556
+ "required": [4],
8531
8557
  "setFocus": [64]
8532
8558
  },
8533
8559
  "$listeners$": undefined,
@@ -15875,11 +15901,11 @@ class ItemDivider {
15875
15901
  }
15876
15902
  render() {
15877
15903
  const mode = getIonMode$1(this);
15878
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15904
+ return (hAsync(Host, { key: '7150b1a3a881c3c312db40821acb9830c2885ccf', class: createColorClasses$1(this.color, {
15879
15905
  [mode]: true,
15880
15906
  'item-divider-sticky': this.sticky,
15881
15907
  item: true,
15882
- }) }, 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" }))));
15908
+ }) }, hAsync("slot", { key: '6e9d9615f475392a81177bc49b4b01dbdab67925', name: "start" }), hAsync("div", { key: '12fe6b840ad1a1897cc34529e488207b2df448f7', class: "item-divider-inner" }, hAsync("div", { key: '626776a8c9887dd2df5ecf3b7861beb742b41e03', class: "item-divider-wrapper" }, hAsync("slot", { key: '90379dd99914e24ae45c9571c8d390f9b6622fd4' })), hAsync("slot", { key: '105644332c08530155b9cd8e8c6fa9e332072a63', name: "end" }))));
15883
15909
  }
15884
15910
  get el() { return getElement(this); }
15885
15911
  static get style() { return {
@@ -15911,7 +15937,7 @@ class ItemGroup {
15911
15937
  }
15912
15938
  render() {
15913
15939
  const mode = getIonMode$1(this);
15914
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15940
+ return (hAsync(Host, { key: 'de2a969ed0dda880bc560a325848b28d0287fdb9', role: "group", class: {
15915
15941
  [mode]: true,
15916
15942
  // Used internally for styling
15917
15943
  [`item-group-${mode}`]: true,
@@ -15979,12 +16005,12 @@ class ItemOption {
15979
16005
  href: this.href,
15980
16006
  target: this.target,
15981
16007
  };
15982
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
16008
+ return (hAsync(Host, { key: '1b7708dd178dc2c9280652ca3da38c84ba7b767f', onClick: this.onClick, class: createColorClasses$1(this.color, {
15983
16009
  [mode]: true,
15984
16010
  'item-option-disabled': disabled,
15985
16011
  'item-option-expandable': expandable,
15986
16012
  'ion-activatable': true,
15987
- }) }, 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' }))));
16013
+ }) }, hAsync(TagType, Object.assign({ key: 'd9f899f5425ad6b97071494485aa3ca90bc89d30' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: 'adc2cf72b4363be9b9eeb3584723e2bfc862af20', class: "button-inner" }, hAsync("slot", { key: 'e668fe8e655a74e6a35e979e0cd488506b962dbf', name: "top" }), hAsync("div", { key: '2ddcdb92b6b19c3cc549a7aee2400d1a6eeb51f1', class: "horizontal-wrapper" }, hAsync("slot", { key: '441f13df18b72e5ed6bb51b157722e065b5847d2', name: "start" }), hAsync("slot", { key: '425d815874b49e1628880160d7175ed3ca36ca39', name: "icon-only" }), hAsync("slot", { key: '27437d3fa3365b12bc030704e18481fdfb14aebb' }), hAsync("slot", { key: 'bd39330771c7f85c6df10f7f9050335ee7f14ff0', name: "end" })), hAsync("slot", { key: '440cb6dc7743d50b261d4bf61d2c24e24b89e58c', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '29632941464bbb34551cf64961187643f62bf755' }))));
15988
16014
  }
15989
16015
  get el() { return getElement(this); }
15990
16016
  static get style() { return {
@@ -16031,7 +16057,7 @@ class ItemOptions {
16031
16057
  render() {
16032
16058
  const mode = getIonMode$1(this);
16033
16059
  const isEnd = isEndSide(this.side);
16034
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16060
+ return (hAsync(Host, { key: '7df4b71547524bf359c48e1b40ccbc44e850f632', class: {
16035
16061
  [mode]: true,
16036
16062
  // Used internally for styling
16037
16063
  [`item-options-${mode}`]: true,
@@ -16493,7 +16519,7 @@ class ItemSliding {
16493
16519
  }
16494
16520
  render() {
16495
16521
  const mode = getIonMode$1(this);
16496
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16522
+ return (hAsync(Host, { key: '22f83febcbc1bc27e4ddbd7fcbe590de60a10e89', class: {
16497
16523
  [mode]: true,
16498
16524
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16499
16525
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16602,13 +16628,13 @@ class Label {
16602
16628
  render() {
16603
16629
  const position = this.position;
16604
16630
  const mode = getIonMode$1(this);
16605
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16631
+ return (hAsync(Host, { key: '4da84c95351a74b547f8224ecfa66924d21398c5', class: createColorClasses$1(this.color, {
16606
16632
  [mode]: true,
16607
16633
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16608
16634
  [`label-${position}`]: position !== undefined,
16609
16635
  [`label-no-animate`]: this.noAnimate,
16610
16636
  'label-rtl': document.dir === 'rtl',
16611
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16637
+ }) }, hAsync("slot", { key: 'ea158ebb620275e5492965234d0ab925d391f919' })));
16612
16638
  }
16613
16639
  get el() { return getElement(this); }
16614
16640
  static get watchers() { return {
@@ -16710,10 +16736,10 @@ class ListHeader {
16710
16736
  render() {
16711
16737
  const { lines } = this;
16712
16738
  const mode = getIonMode$1(this);
16713
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16739
+ return (hAsync(Host, { key: '95ce2135e2b1ad4d7d6020b0fb9bc6e02b3c0851', class: createColorClasses$1(this.color, {
16714
16740
  [mode]: true,
16715
16741
  [`list-header-lines-${lines}`]: lines !== undefined,
16716
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16742
+ }) }, hAsync("div", { key: '3065b0a094bc31a90518898a5126a813c8a33816', class: "list-header-inner" }, hAsync("slot", { key: 'fe15c87d7867f3e5d8185645c49c0228496697b8' }))));
16717
16743
  }
16718
16744
  static get style() { return {
16719
16745
  ios: IonListHeaderIosStyle0,
@@ -16982,9 +17008,9 @@ class Loading {
16982
17008
  * Otherwise, don't set aria-labelledby.
16983
17009
  */
16984
17010
  const ariaLabelledBy = message !== undefined ? msgId : null;
16985
- return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17011
+ return (hAsync(Host, Object.assign({ key: 'd6066c8b56b1fe4b597a243a7dab191ef0d21286', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16986
17012
  zIndex: `${40000 + this.overlayIndex}`,
16987
- }, 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" })));
17013
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '2431eda00a2a3f510f5dfc39b7c7d47c056dfa3d', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'cf210aaf5e754e4eccdb49cf7ead4647b3f9b2d1', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'fa9375143d391656d70e181d25b952c77c2fc6ec', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '8e4a4ed994f7f62df86b03696ac95162df41f52d', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'e5b323c272d365853ba92bd211e390b4fd4751d2', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'cae35ec8c34800477bff3ebcec8010e632158233', tabindex: "0", "aria-hidden": "true" })));
16988
17014
  }
16989
17015
  get el() { return getElement(this); }
16990
17016
  static get watchers() { return {
@@ -17992,14 +18018,14 @@ class Menu {
17992
18018
  * the ionBackButton listener in the menu controller
17993
18019
  * will handle closing the menu when Escape is pressed.
17994
18020
  */
17995
- return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18021
+ return (hAsync(Host, { key: '342db8551d26604128b29b21d2d8c37593972ed9', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17996
18022
  [mode]: true,
17997
18023
  [`menu-type-${type}`]: true,
17998
18024
  'menu-enabled': !disabled,
17999
18025
  [`menu-side-${side}`]: true,
18000
18026
  'menu-pane-visible': isPaneVisible,
18001
18027
  'split-pane-side': hostContext('ion-split-pane', el),
18002
- } }, hAsync("div", { key: '894e680fe227534711128c7aca980964ddb5a08a', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'e9f5934518dc0cceaeadf1f2820614595fec6bc9' })), hAsync("ion-backdrop", { key: '7282077817657b1bb6c155f1404c0a519fece993', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
18028
+ } }, hAsync("div", { key: '3c9bec2862b7fb9d88de66b1600be01f6735e3dd', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '76283b4b2a65c78646f92c3b273eea021eda499c' })), hAsync("ion-backdrop", { key: '121c395bc4873542a1b6ae2c9e23f2e881e75d93', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
18003
18029
  }
18004
18030
  get el() { return getElement(this); }
18005
18031
  static get watchers() { return {
@@ -18102,7 +18128,7 @@ class MenuButton {
18102
18128
  type: this.type,
18103
18129
  };
18104
18130
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18105
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18131
+ return (hAsync(Host, { key: '3cde3704f28eb275f4a5ff2985bbb68c1024e79c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18106
18132
  [mode]: true,
18107
18133
  button: true, // ion-buttons target .button
18108
18134
  'menu-button-hidden': hidden,
@@ -18111,7 +18137,7 @@ class MenuButton {
18111
18137
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18112
18138
  'ion-activatable': true,
18113
18139
  'ion-focusable': true,
18114
- }) }, 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" }))));
18140
+ }) }, hAsync("button", Object.assign({ key: 'a02a3374288bd1759b6e352ada8eab0d45c6422f' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: 'ba699f2277a4e7b27ce5e42faeefc53d8805bb43', class: "button-inner" }, hAsync("slot", { key: '829fe6cbdeb173f50d1a670389d1565baa6273e4' }, hAsync("ion-icon", { key: 'a9a9f7b8dcffc648a8429fe0adbe766869de72fd', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '48deca9a771a249f2fc76eaa8b9741c8d66d8355', type: "unbounded" }))));
18115
18141
  }
18116
18142
  get el() { return getElement(this); }
18117
18143
  static get style() { return {
@@ -18160,10 +18186,10 @@ class MenuToggle {
18160
18186
  render() {
18161
18187
  const mode = getIonMode$1(this);
18162
18188
  const hidden = this.autoHide && !this.visible;
18163
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18189
+ return (hAsync(Host, { key: '88e88fa13ac7f10ba3acfe378bd11cda0c7e2749', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18164
18190
  [mode]: true,
18165
18191
  'menu-toggle-hidden': hidden,
18166
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18192
+ } }, hAsync("slot", { key: '0a14c7b63eda64702d2fd1b4bc7db4809892842d' })));
18167
18193
  }
18168
18194
  static get style() { return IonMenuToggleStyle0; }
18169
18195
  static get cmpMeta() { return {
@@ -19003,7 +19029,7 @@ const computeDuration = (remaining, velocity) => {
19003
19029
  };
19004
19030
 
19005
19031
  const createSheetEnterAnimation = (opts) => {
19006
- const { currentBreakpoint, backdropBreakpoint } = opts;
19032
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
19007
19033
  /**
19008
19034
  * If the backdropBreakpoint is undefined, then the backdrop
19009
19035
  * should always fade in. If the backdropBreakpoint came before the
@@ -19023,7 +19049,16 @@ const createSheetEnterAnimation = (opts) => {
19023
19049
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
19024
19050
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
19025
19051
  ]);
19026
- return { wrapperAnimation, backdropAnimation };
19052
+ /**
19053
+ * This allows the content to be scrollable at any breakpoint.
19054
+ */
19055
+ const contentAnimation = !expandToScroll
19056
+ ? createAnimation('contentAnimation').keyframes([
19057
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
19058
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
19059
+ ])
19060
+ : undefined;
19061
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
19027
19062
  };
19028
19063
  const createSheetLeaveAnimation = (opts) => {
19029
19064
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -19058,22 +19093,68 @@ const createEnterAnimation$1 = () => {
19058
19093
  })
19059
19094
  .afterClearStyles(['pointer-events']);
19060
19095
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
19061
- return { backdropAnimation, wrapperAnimation };
19096
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19062
19097
  };
19063
19098
  /**
19064
19099
  * iOS Modal Enter Animation for the Card presentation style
19065
19100
  */
19066
19101
  const iosEnterAnimation$3 = (baseEl, opts) => {
19067
- const { presentingEl, currentBreakpoint } = opts;
19102
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19068
19103
  const root = getElementRoot(baseEl);
19069
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19104
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19070
19105
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19071
19106
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
19107
+ // The content animation is only added if scrolling is enabled for
19108
+ // all the breakpoints.
19109
+ !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19072
19110
  const baseAnimation = createAnimation('entering-base')
19073
19111
  .addElement(baseEl)
19074
19112
  .easing('cubic-bezier(0.32,0.72,0,1)')
19075
19113
  .duration(500)
19076
- .addAnimation(wrapperAnimation);
19114
+ .addAnimation([wrapperAnimation])
19115
+ .beforeAddWrite(() => {
19116
+ if (expandToScroll) {
19117
+ // Scroll can only be done when the modal is fully expanded.
19118
+ return;
19119
+ }
19120
+ /**
19121
+ * There are some browsers that causes flickering when
19122
+ * dragging the content when scroll is enabled at every
19123
+ * breakpoint. This is due to the wrapper element being
19124
+ * transformed off the screen and having a snap animation.
19125
+ *
19126
+ * A workaround is to clone the footer element and append
19127
+ * it outside of the wrapper element. This way, the footer
19128
+ * is still visible and the drag can be done without
19129
+ * flickering. The original footer is hidden until the modal
19130
+ * is dismissed. This maintains the animation of the footer
19131
+ * when the modal is dismissed.
19132
+ *
19133
+ * The workaround needs to be done before the animation starts
19134
+ * so there are no flickering issues.
19135
+ */
19136
+ const ionFooter = baseEl.querySelector('ion-footer');
19137
+ /**
19138
+ * This check is needed to prevent more than one footer
19139
+ * from being appended to the shadow root.
19140
+ * Otherwise, iOS and MD enter animations would append
19141
+ * the footer twice.
19142
+ */
19143
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19144
+ if (ionFooter && !ionFooterAlreadyAppended) {
19145
+ const footerHeight = ionFooter.clientHeight;
19146
+ const clonedFooter = ionFooter.cloneNode(true);
19147
+ baseEl.shadowRoot.appendChild(clonedFooter);
19148
+ ionFooter.style.setProperty('display', 'none');
19149
+ ionFooter.setAttribute('aria-hidden', 'true');
19150
+ // Padding is added to prevent some content from being hidden.
19151
+ const page = baseEl.querySelector('.ion-page');
19152
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19153
+ }
19154
+ });
19155
+ if (contentAnimation) {
19156
+ baseAnimation.addAnimation(contentAnimation);
19157
+ }
19077
19158
  if (presentingEl) {
19078
19159
  const isMobile = window.innerWidth < 768;
19079
19160
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19151,7 +19232,7 @@ const createLeaveAnimation$1 = () => {
19151
19232
  * iOS Modal Leave Animation
19152
19233
  */
19153
19234
  const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19154
- const { presentingEl, currentBreakpoint } = opts;
19235
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19155
19236
  const root = getElementRoot(baseEl);
19156
19237
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
19157
19238
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -19160,7 +19241,29 @@ const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19160
19241
  .addElement(baseEl)
19161
19242
  .easing('cubic-bezier(0.32,0.72,0,1)')
19162
19243
  .duration(duration)
19163
- .addAnimation(wrapperAnimation);
19244
+ .addAnimation(wrapperAnimation)
19245
+ .beforeAddWrite(() => {
19246
+ if (expandToScroll) {
19247
+ // Scroll can only be done when the modal is fully expanded.
19248
+ return;
19249
+ }
19250
+ /**
19251
+ * If expandToScroll is disabled, we need to swap
19252
+ * the visibility to the original, so the footer
19253
+ * dismisses with the modal and doesn't stay
19254
+ * until the modal is removed from the DOM.
19255
+ */
19256
+ const ionFooter = baseEl.querySelector('ion-footer');
19257
+ if (ionFooter) {
19258
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19259
+ ionFooter.style.removeProperty('display');
19260
+ ionFooter.removeAttribute('aria-hidden');
19261
+ clonedFooter.style.setProperty('display', 'none');
19262
+ clonedFooter.setAttribute('aria-hidden', 'true');
19263
+ const page = baseEl.querySelector('.ion-page');
19264
+ page.style.removeProperty('padding-bottom');
19265
+ }
19266
+ });
19164
19267
  if (presentingEl) {
19165
19268
  const isMobile = window.innerWidth < 768;
19166
19269
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19238,22 +19341,69 @@ const createEnterAnimation = () => {
19238
19341
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
19239
19342
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
19240
19343
  ]);
19241
- return { backdropAnimation, wrapperAnimation };
19344
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19242
19345
  };
19243
19346
  /**
19244
19347
  * Md Modal Enter Animation
19245
19348
  */
19246
19349
  const mdEnterAnimation$2 = (baseEl, opts) => {
19247
- const { currentBreakpoint } = opts;
19350
+ const { currentBreakpoint, expandToScroll } = opts;
19248
19351
  const root = getElementRoot(baseEl);
19249
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19352
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19250
19353
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19251
19354
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19252
- return createAnimation()
19355
+ // The content animation is only added if scrolling is enabled for
19356
+ // all the breakpoints.
19357
+ expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19358
+ const baseAnimation = createAnimation()
19253
19359
  .addElement(baseEl)
19254
19360
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
19255
19361
  .duration(280)
19256
- .addAnimation([backdropAnimation, wrapperAnimation]);
19362
+ .addAnimation([backdropAnimation, wrapperAnimation])
19363
+ .beforeAddWrite(() => {
19364
+ if (expandToScroll) {
19365
+ // Scroll can only be done when the modal is fully expanded.
19366
+ return;
19367
+ }
19368
+ /**
19369
+ * There are some browsers that causes flickering when
19370
+ * dragging the content when scroll is enabled at every
19371
+ * breakpoint. This is due to the wrapper element being
19372
+ * transformed off the screen and having a snap animation.
19373
+ *
19374
+ * A workaround is to clone the footer element and append
19375
+ * it outside of the wrapper element. This way, the footer
19376
+ * is still visible and the drag can be done without
19377
+ * flickering. The original footer is hidden until the modal
19378
+ * is dismissed. This maintains the animation of the footer
19379
+ * when the modal is dismissed.
19380
+ *
19381
+ * The workaround needs to be done before the animation starts
19382
+ * so there are no flickering issues.
19383
+ */
19384
+ const ionFooter = baseEl.querySelector('ion-footer');
19385
+ /**
19386
+ * This check is needed to prevent more than one footer
19387
+ * from being appended to the shadow root.
19388
+ * Otherwise, iOS and MD enter animations would append
19389
+ * the footer twice.
19390
+ */
19391
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19392
+ if (ionFooter && !ionFooterAlreadyAppended) {
19393
+ const footerHeight = ionFooter.clientHeight;
19394
+ const clonedFooter = ionFooter.cloneNode(true);
19395
+ baseEl.shadowRoot.appendChild(clonedFooter);
19396
+ ionFooter.style.setProperty('display', 'none');
19397
+ ionFooter.setAttribute('aria-hidden', 'true');
19398
+ // Padding is added to prevent some content from being hidden.
19399
+ const page = baseEl.querySelector('.ion-page');
19400
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19401
+ }
19402
+ });
19403
+ if (contentAnimation) {
19404
+ baseAnimation.addAnimation(contentAnimation);
19405
+ }
19406
+ return baseAnimation;
19257
19407
  };
19258
19408
 
19259
19409
  const createLeaveAnimation = () => {
@@ -19268,18 +19418,41 @@ const createLeaveAnimation = () => {
19268
19418
  * Md Modal Leave Animation
19269
19419
  */
19270
19420
  const mdLeaveAnimation$2 = (baseEl, opts) => {
19271
- const { currentBreakpoint } = opts;
19421
+ const { currentBreakpoint, expandToScroll } = opts;
19272
19422
  const root = getElementRoot(baseEl);
19273
19423
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
19274
19424
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19275
19425
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19276
- return createAnimation()
19426
+ const baseAnimation = createAnimation()
19277
19427
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
19278
19428
  .duration(200)
19279
- .addAnimation([backdropAnimation, wrapperAnimation]);
19429
+ .addAnimation([backdropAnimation, wrapperAnimation])
19430
+ .beforeAddWrite(() => {
19431
+ if (expandToScroll) {
19432
+ // Scroll can only be done when the modal is fully expanded.
19433
+ return;
19434
+ }
19435
+ /**
19436
+ * If expandToScroll is disabled, we need to swap
19437
+ * the visibility to the original, so the footer
19438
+ * dismisses with the modal and doesn't stay
19439
+ * until the modal is removed from the DOM.
19440
+ */
19441
+ const ionFooter = baseEl.querySelector('ion-footer');
19442
+ if (ionFooter) {
19443
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19444
+ ionFooter.style.removeProperty('display');
19445
+ ionFooter.removeAttribute('aria-hidden');
19446
+ clonedFooter.style.setProperty('display', 'none');
19447
+ clonedFooter.setAttribute('aria-hidden', 'true');
19448
+ const page = baseEl.querySelector('.ion-page');
19449
+ page.style.removeProperty('padding-bottom');
19450
+ }
19451
+ });
19452
+ return baseAnimation;
19280
19453
  };
19281
19454
 
19282
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19455
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19283
19456
  // Defaults for the sheet swipe animation
19284
19457
  const defaultBackdrop = [
19285
19458
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -19296,6 +19469,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19296
19469
  { offset: 1, transform: 'translateY(100%)' },
19297
19470
  ],
19298
19471
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
19472
+ CONTENT_KEYFRAMES: [
19473
+ { offset: 0, maxHeight: '100%' },
19474
+ { offset: 1, maxHeight: '0%' },
19475
+ ],
19299
19476
  };
19300
19477
  const contentEl = baseEl.querySelector('ion-content');
19301
19478
  const height = wrapperEl.clientHeight;
@@ -19303,10 +19480,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19303
19480
  let offset = 0;
19304
19481
  let canDismissBlocksGesture = false;
19305
19482
  const canDismissMaxStep = 0.95;
19306
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19307
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19308
19483
  const maxBreakpoint = breakpoints[breakpoints.length - 1];
19309
19484
  const minBreakpoint = breakpoints[0];
19485
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19486
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19487
+ const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
19310
19488
  const enableBackdrop = () => {
19311
19489
  baseEl.style.setProperty('pointer-events', 'auto');
19312
19490
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -19329,6 +19507,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19329
19507
  */
19330
19508
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
19331
19509
  };
19510
+ /**
19511
+ * Toggles the visible modal footer when `expandToScroll` is disabled.
19512
+ * @param footer The footer to show.
19513
+ */
19514
+ const swapFooterVisibility = (footer) => {
19515
+ const originalFooter = baseEl.querySelector('ion-footer');
19516
+ if (!originalFooter) {
19517
+ return;
19518
+ }
19519
+ const clonedFooter = wrapperEl.nextElementSibling;
19520
+ const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
19521
+ const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
19522
+ footerToShow.style.removeProperty('display');
19523
+ footerToShow.removeAttribute('aria-hidden');
19524
+ const page = baseEl.querySelector('.ion-page');
19525
+ if (footer === 'original') {
19526
+ page.style.removeProperty('padding-bottom');
19527
+ }
19528
+ else {
19529
+ const pagePadding = footerToShow.clientHeight;
19530
+ page.style.setProperty('padding-bottom', `${pagePadding}px`);
19531
+ }
19532
+ footerToHide.style.setProperty('display', 'none');
19533
+ footerToHide.setAttribute('aria-hidden', 'true');
19534
+ };
19332
19535
  /**
19333
19536
  * After the entering animation completes,
19334
19537
  * we need to set the animation to go from
@@ -19340,6 +19543,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19340
19543
  if (wrapperAnimation && backdropAnimation) {
19341
19544
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19342
19545
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19546
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19343
19547
  animation.progressStart(true, 1 - currentBreakpoint);
19344
19548
  /**
19345
19549
  * If backdrop is not enabled, then content
@@ -19356,7 +19560,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19356
19560
  disableBackdrop();
19357
19561
  }
19358
19562
  }
19359
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
19563
+ if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
19360
19564
  contentEl.scrollY = false;
19361
19565
  }
19362
19566
  const canStart = (detail) => {
@@ -19370,6 +19574,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19370
19574
  */
19371
19575
  const contentEl = findClosestIonContent(detail.event.target);
19372
19576
  currentBreakpoint = getCurrentBreakpoint();
19577
+ /**
19578
+ * If we have expandToScroll disabled, we should not allow the swipe gesture to start
19579
+ * if the content is being swiped.
19580
+ */
19581
+ if (!expandToScroll && contentEl) {
19582
+ return false;
19583
+ }
19373
19584
  if (currentBreakpoint === 1 && contentEl) {
19374
19585
  /**
19375
19586
  * The modal should never swipe to close on the content with a refresher.
@@ -19400,6 +19611,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19400
19611
  * Remove undefined check
19401
19612
  */
19402
19613
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
19614
+ /**
19615
+ * If expandToScroll is disabled, we need to swap
19616
+ * the footer visibility to the original, so if the modal
19617
+ * is dismissed, the footer dismisses with the modal
19618
+ * and doesn't stay on the screen after the modal is gone.
19619
+ */
19620
+ if (!expandToScroll) {
19621
+ swapFooterVisibility('original');
19622
+ }
19403
19623
  /**
19404
19624
  * If we are pulling down, then it is possible we are pulling on the content.
19405
19625
  * We do not want scrolling to happen at the same time as the gesture.
@@ -19515,6 +19735,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19515
19735
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
19516
19736
  },
19517
19737
  ]);
19738
+ if (contentAnimation) {
19739
+ /**
19740
+ * The modal content should scroll at any breakpoint when expandToScroll
19741
+ * is disabled. In order to do this, the content needs to be completely
19742
+ * viewable so scrolling can access everything. Otherwise, the default
19743
+ * behavior would show the content off the screen and only allow
19744
+ * scrolling when the sheet is fully expanded.
19745
+ */
19746
+ contentAnimation.keyframes([
19747
+ { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
19748
+ { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
19749
+ ]);
19750
+ }
19518
19751
  animation.progressStep(0);
19519
19752
  }
19520
19753
  /**
@@ -19522,6 +19755,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19522
19755
  * snapping animation completes.
19523
19756
  */
19524
19757
  gesture.enable(false);
19758
+ /**
19759
+ * If expandToScroll is disabled, we need to swap
19760
+ * the footer visibility to the cloned one so the footer
19761
+ * doesn't flicker when the sheet's height is animated.
19762
+ */
19763
+ if (!expandToScroll && shouldRemainOpen) {
19764
+ swapFooterVisibility('cloned');
19765
+ }
19525
19766
  if (shouldPreventDismiss) {
19526
19767
  handleCanDismiss(baseEl, animation);
19527
19768
  }
@@ -19529,13 +19770,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19529
19770
  onDismiss();
19530
19771
  }
19531
19772
  /**
19532
- * If the sheet is going to be fully expanded then we should enable
19533
- * scrolling immediately. The sheet modal animation takes ~500ms to finish
19534
- * so if we wait until then there is a visible delay for when scrolling is
19535
- * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
19536
- * as the gesture is released, so we align with that.
19773
+ * Enables scrolling immediately if the sheet is about to fully expand
19774
+ * or if it allows scrolling at any breakpoint. Without this, there would
19775
+ * be a ~500ms delay while the modal animation completes, causing a
19776
+ * noticeable lag. Native iOS allows scrolling as soon as the gesture is
19777
+ * released, so we align with that behavior.
19537
19778
  */
19538
- if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
19779
+ if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
19539
19780
  contentEl.scrollY = true;
19540
19781
  }
19541
19782
  return new Promise((resolve) => {
@@ -19553,6 +19794,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19553
19794
  raf(() => {
19554
19795
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19555
19796
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19797
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19556
19798
  animation.progressStart(true, 1 - snapToBreakpoint);
19557
19799
  currentBreakpoint = snapToBreakpoint;
19558
19800
  onBreakpointChange(currentBreakpoint);
@@ -19605,10 +19847,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19605
19847
  };
19606
19848
  };
19607
19849
 
19608
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
19850
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
19609
19851
  var IonModalIosStyle0 = modalIosCss;
19610
19852
 
19611
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19853
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19612
19854
  var IonModalMdStyle0 = modalMdCss;
19613
19855
 
19614
19856
  // TODO(FW-2832): types
@@ -19687,6 +19929,7 @@ class Modal {
19687
19929
  this.enterAnimation = undefined;
19688
19930
  this.leaveAnimation = undefined;
19689
19931
  this.breakpoints = undefined;
19932
+ this.expandToScroll = true;
19690
19933
  this.initialBreakpoint = undefined;
19691
19934
  this.backdropBreakpoint = 0;
19692
19935
  this.handle = undefined;
@@ -19902,6 +20145,7 @@ class Modal {
19902
20145
  presentingEl: presentingElement,
19903
20146
  currentBreakpoint: this.initialBreakpoint,
19904
20147
  backdropBreakpoint: this.backdropBreakpoint,
20148
+ expandToScroll: this.expandToScroll,
19905
20149
  });
19906
20150
  /* tslint:disable-next-line */
19907
20151
  if (typeof window !== 'undefined') {
@@ -19952,7 +20196,10 @@ class Modal {
19952
20196
  // should be in the DOM and referenced by now, except
19953
20197
  // for the presenting el
19954
20198
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
19955
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
20199
+ const ani = (this.animation = animationBuilder(el, {
20200
+ presentingEl: this.presentingElement,
20201
+ expandToScroll: this.expandToScroll,
20202
+ }));
19956
20203
  const contentEl = findIonContent(el);
19957
20204
  if (!contentEl) {
19958
20205
  printIonContentErrorMsg(el);
@@ -19997,9 +20244,10 @@ class Modal {
19997
20244
  presentingEl: this.presentingElement,
19998
20245
  currentBreakpoint: initialBreakpoint,
19999
20246
  backdropBreakpoint,
20247
+ expandToScroll: this.expandToScroll,
20000
20248
  }));
20001
20249
  ani.progressStart(true, 1);
20002
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20250
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20003
20251
  if (this.currentBreakpoint !== breakpoint) {
20004
20252
  this.currentBreakpoint = breakpoint;
20005
20253
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -20077,6 +20325,7 @@ class Modal {
20077
20325
  presentingEl: presentingElement,
20078
20326
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
20079
20327
  backdropBreakpoint: this.backdropBreakpoint,
20328
+ expandToScroll: this.expandToScroll,
20080
20329
  });
20081
20330
  if (dismissed) {
20082
20331
  const { delegate } = this.getDelegate();
@@ -20162,23 +20411,23 @@ class Modal {
20162
20411
  return true;
20163
20412
  }
20164
20413
  render() {
20165
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
20414
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
20166
20415
  const showHandle = handle !== false && isSheetModal;
20167
20416
  const mode = getIonMode$1(this);
20168
20417
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20169
20418
  const isHandleCycle = handleBehavior === 'cycle';
20170
- return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20419
+ return (hAsync(Host, Object.assign({ key: '8b74b6fa151995ab86cdeb989e338ee45c687f6d', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20171
20420
  zIndex: `${20000 + this.overlayIndex}`,
20172
- }, 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',
20421
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, '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: '1b264a356f792492fe5ece24928b701152be3d7f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '14590998fd2e87ebfb08c06bec795d122165ae09', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '73e4d6c4eb342d48dfcb7bfbfae7c020931aa36f',
20173
20422
  /*
20174
20423
  role and aria-modal must be used on the
20175
20424
  same element. They must also be set inside the
20176
20425
  shadow DOM otherwise ion-button will not be highlighted
20177
20426
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20178
20427
  */
20179
- 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",
20428
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '52c4949baf5b7c0639a9a58f06cd4e0cad662b23', class: "modal-handle",
20180
20429
  // Prevents the handle from receiving keyboard focus when it does not cycle
20181
- 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' }))));
20430
+ 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: '0620b3f2e7cfef42f6c602211c4cdcaf4e646546' }))));
20182
20431
  }
20183
20432
  get el() { return getElement(this); }
20184
20433
  static get watchers() { return {
@@ -20200,6 +20449,7 @@ class Modal {
20200
20449
  "enterAnimation": [16],
20201
20450
  "leaveAnimation": [16],
20202
20451
  "breakpoints": [16],
20452
+ "expandToScroll": [4, "expand-to-scroll"],
20203
20453
  "initialBreakpoint": [2, "initial-breakpoint"],
20204
20454
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
20205
20455
  "handle": [4],
@@ -21127,7 +21377,7 @@ class Nav {
21127
21377
  }
21128
21378
  }
21129
21379
  render() {
21130
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21380
+ return hAsync("slot", { key: '71e9b5d07fc90ca5534197a63a003a4154aabd59' });
21131
21381
  }
21132
21382
  get el() { return getElement(this); }
21133
21383
  static get watchers() { return {
@@ -21200,7 +21450,7 @@ class NavLink {
21200
21450
  this.routerAnimation = undefined;
21201
21451
  }
21202
21452
  render() {
21203
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21453
+ return hAsync(Host, { key: '9ba170d1b10e08e8a6b5e6a30d363871d455a0a9', onClick: this.onClick });
21204
21454
  }
21205
21455
  get el() { return getElement(this); }
21206
21456
  static get cmpMeta() { return {
@@ -21234,9 +21484,9 @@ class Note {
21234
21484
  }
21235
21485
  render() {
21236
21486
  const mode = getIonMode$1(this);
21237
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21487
+ return (hAsync(Host, { key: '3c3d9b2aa805c0bc1fdc6270a2bbf4dcc1b96c5b', class: createColorClasses$1(this.color, {
21238
21488
  [mode]: true,
21239
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21489
+ }) }, hAsync("slot", { key: '39e34682009fcb705ecafe51825162734bdf14d3' })));
21240
21490
  }
21241
21491
  static get style() { return {
21242
21492
  ios: IonNoteIosStyle0,
@@ -22001,11 +22251,11 @@ class Picker {
22001
22251
  render() {
22002
22252
  const { htmlAttributes } = this;
22003
22253
  const mode = getIonMode$1(this);
22004
- return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22254
+ return (hAsync(Host, Object.assign({ key: 'dc03f252e3b59a94bc7132c953d2d3b36b62237e', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22005
22255
  zIndex: `${20000 + this.overlayIndex}`,
22006
22256
  }, class: Object.assign({ [mode]: true,
22007
22257
  // Used internally for styling
22008
- [`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" })));
22258
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'bdabe9c82c41f96da5dafb1a0aa0854fa7e7ec93', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '1380e0c8989153b425674753764f12f253f4a738', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'edec769bbc0993d003852d0bf1123e6e2332ebbe', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: 'b82c67ff47aa9412a6ff8f3b2e6230b855e92c51', 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: '76485b643387f36b6b3d5f85e4d072fa18e68552', class: "picker-columns" }, hAsync("div", { key: '99268217263feb5285db1b1acd48fd0e4d5f0e7b', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '2dd7e488bc4e9695094f0758567e626e0bb5979d', class: "picker-below-highlight" }))), hAsync("div", { key: '8b2f3ae798a4ddcdd4e2716ebba1de797e446ac4', tabindex: "0", "aria-hidden": "true" })));
22009
22259
  }
22010
22260
  get el() { return getElement(this); }
22011
22261
  static get watchers() { return {
@@ -22980,9 +23230,9 @@ class PickerColumnCmp {
22980
23230
  render() {
22981
23231
  const col = this.col;
22982
23232
  const mode = getIonMode$1(this);
22983
- 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: {
23233
+ return (hAsync(Host, { key: '88a3c9397c9ac92dd814074c8ae6ecf8e3420a2c', 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: {
22984
23234
  'max-width': this.col.columnWidth,
22985
- } }, 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))));
23235
+ } }, col.prefix && (hAsync("div", { key: '4491a705d15337e6f45f3cf6fd21af5242474729', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: 'b0dd4b7a7a4c1edc4b73e7fb134ac85264072365', 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: 'c16419ce6481d60fc3ba6b8d102a4edf0ede02aa', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
22986
23236
  }
22987
23237
  get el() { return getElement(this); }
22988
23238
  static get watchers() { return {
@@ -23086,10 +23336,10 @@ class PickerColumnOption {
23086
23336
  render() {
23087
23337
  const { color, disabled, ariaLabel } = this;
23088
23338
  const mode = getIonMode$1(this);
23089
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23339
+ return (hAsync(Host, { key: 'c1353e99c2aa19c0e3ddbe433557ed18e72e1c66', class: createColorClasses$1(color, {
23090
23340
  [mode]: true,
23091
23341
  ['option-disabled']: disabled,
23092
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23342
+ }) }, hAsync("button", { key: 'b4ee62ecf7458a07a56e8aa494485766a87a3fcb', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '9ab1e4700c27103b676670a4b3521c183c6ab83d' }))));
23093
23343
  }
23094
23344
  get el() { return getElement(this); }
23095
23345
  static get watchers() { return {
@@ -24403,9 +24653,9 @@ class Popover {
24403
24653
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24404
24654
  const desktop = isPlatform('desktop');
24405
24655
  const enableArrow = arrow && !parentPopover;
24406
- return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24656
+ return (hAsync(Host, Object.assign({ key: '48f108a9b74f121559626889dd5a1fcccf38fc3d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24407
24657
  zIndex: `${20000 + this.overlayIndex}`,
24408
- }, 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' })))));
24658
+ }, 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: '580c14ab48472534f59eedc5ba7fa486df25ed4e', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '9bcf47893e8d3053e2baa40511785d84feb4038c', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '4d47f2bdc01a546a88190c07f8f4700f21de6715', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '70018c088654c1996e305b7b6b114419e97824ef', class: "popover-content", part: "content" }, hAsync("slot", { key: '3de8e1959b8facba2fbe694947704832200d8276' })))));
24409
24659
  }
24410
24660
  get el() { return getElement(this); }
24411
24661
  static get watchers() { return {
@@ -24497,7 +24747,7 @@ class ProgressBar {
24497
24747
  const mode = getIonMode$1(this);
24498
24748
  // If the progress is displayed as a solid bar.
24499
24749
  const progressSolid = buffer === 1;
24500
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24750
+ return (hAsync(Host, { key: 'd60eeaa18aaee607e083c0ef9d0de8178d47c4cd', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24501
24751
  [mode]: true,
24502
24752
  [`progress-bar-${type}`]: true,
24503
24753
  'progress-paused': paused,
@@ -24667,7 +24917,7 @@ class Radio {
24667
24917
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24668
24918
  const mode = getIonMode$1(this);
24669
24919
  const inItem = hostContext('ion-item', el);
24670
- return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24920
+ return (hAsync(Host, { key: '8badd4aec277addc0793e14df21f73bb345e99b7', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24671
24921
  [mode]: true,
24672
24922
  'in-item': inItem,
24673
24923
  'radio-checked': checked,
@@ -24678,10 +24928,10 @@ class Radio {
24678
24928
  // Focus and active styling should not apply when the radio is in an item
24679
24929
  'ion-activatable': !inItem,
24680
24930
  'ion-focusable': !inItem,
24681
- }), 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: {
24931
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '8765b847edc93a1b5a16506e155ed03da807bb10', class: "radio-wrapper" }, hAsync("div", { key: '3d568a0192a32d4f0b8a920019c79ff02639b5c9', class: {
24682
24932
  'label-text-wrapper': true,
24683
24933
  'label-text-wrapper-hidden': !hasLabel,
24684
- }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24934
+ }, part: "label" }, hAsync("slot", { key: '331f3dc2ce5f6ed8f124fc4560f92e0f7c668a85' })), hAsync("div", { key: '473bd4aaf448753e385f2dda3fddc9f56379aa19', class: "native-wrapper" }, this.renderRadioControl()))));
24685
24935
  }
24686
24936
  get el() { return getElement(this); }
24687
24937
  static get watchers() { return {
@@ -24714,12 +24964,20 @@ class Radio {
24714
24964
  }
24715
24965
  let radioButtonIds = 0;
24716
24966
 
24967
+ const radioGroupIosCss = "ion-radio-group{vertical-align:top}.radio-group-wrapper{display:inline}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
24968
+ var IonRadioGroupIosStyle0 = radioGroupIosCss;
24969
+
24970
+ const radioGroupMdCss = "ion-radio-group{vertical-align:top}.radio-group-wrapper{display:inline}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
24971
+ var IonRadioGroupMdStyle0 = radioGroupMdCss;
24972
+
24717
24973
  class RadioGroup {
24718
24974
  constructor(hostRef) {
24719
24975
  registerInstance(this, hostRef);
24720
24976
  this.ionChange = createEvent(this, "ionChange", 7);
24721
24977
  this.ionValueChange = createEvent(this, "ionValueChange", 7);
24722
24978
  this.inputId = `ion-rg-${radioGroupIds++}`;
24979
+ this.helperTextId = `${this.inputId}-helper-text`;
24980
+ this.errorTextId = `${this.inputId}-error-text`;
24723
24981
  this.labelId = `${this.inputId}-lbl`;
24724
24982
  this.setRadioTabindex = (value) => {
24725
24983
  const radios = this.getRadios();
@@ -24771,6 +25029,8 @@ class RadioGroup {
24771
25029
  this.compareWith = undefined;
24772
25030
  this.name = this.inputId;
24773
25031
  this.value = undefined;
25032
+ this.helperText = undefined;
25033
+ this.errorText = undefined;
24774
25034
  }
24775
25035
  valueChanged(value) {
24776
25036
  this.setRadioTabindex(value);
@@ -24869,24 +25129,51 @@ class RadioGroup {
24869
25129
  const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24870
25130
  radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24871
25131
  }
25132
+ /**
25133
+ * Renders the helper text or error text values
25134
+ */
25135
+ renderHintText() {
25136
+ const { helperText, errorText, helperTextId, errorTextId } = this;
25137
+ const hasHintText = !!helperText || !!errorText;
25138
+ if (!hasHintText) {
25139
+ return;
25140
+ }
25141
+ return (hAsync("div", { class: "radio-group-top" }, hAsync("div", { id: helperTextId, class: "helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text" }, errorText)));
25142
+ }
25143
+ getHintTextID() {
25144
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
25145
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
25146
+ return errorTextId;
25147
+ }
25148
+ if (helperText) {
25149
+ return helperTextId;
25150
+ }
25151
+ return undefined;
25152
+ }
24872
25153
  render() {
24873
25154
  const { label, labelId, el, name, value } = this;
24874
25155
  const mode = getIonMode$1(this);
24875
25156
  renderHiddenInput(true, el, name, value, false);
24876
- return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
25157
+ return (hAsync(Host, { key: 'cac92777297029d7fd1b6af264d92850e35dfbba', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("div", { key: '3e7ec0fc7b90d635b84201e006eb5622df2ed191', class: "radio-group-wrapper" }, hAsync("slot", { key: '6b3aaa635597017f961fa895973a0ee174944dcf' }))));
24877
25158
  }
24878
25159
  get el() { return getElement(this); }
24879
25160
  static get watchers() { return {
24880
25161
  "value": ["valueChanged"]
24881
25162
  }; }
25163
+ static get style() { return {
25164
+ ios: IonRadioGroupIosStyle0,
25165
+ md: IonRadioGroupMdStyle0
25166
+ }; }
24882
25167
  static get cmpMeta() { return {
24883
- "$flags$": 0,
25168
+ "$flags$": 36,
24884
25169
  "$tagName$": "ion-radio-group",
24885
25170
  "$members$": {
24886
25171
  "allowEmptySelection": [4, "allow-empty-selection"],
24887
25172
  "compareWith": [1, "compare-with"],
24888
25173
  "name": [1],
24889
25174
  "value": [1032],
25175
+ "helperText": [1, "helper-text"],
25176
+ "errorText": [1, "error-text"],
24890
25177
  "setFocus": [64]
24891
25178
  },
24892
25179
  "$listeners$": [[4, "keydown", "onKeydown"]],
@@ -25506,7 +25793,7 @@ class Range {
25506
25793
  const needsEndAdjustment = inItem && !hasEndContent;
25507
25794
  const mode = getIonMode$1(this);
25508
25795
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25509
- return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25796
+ return (hAsync(Host, { key: 'efb8663a61f36a9db4ef69ece3a22e1424acbc28', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25510
25797
  [mode]: true,
25511
25798
  'in-item': inItem,
25512
25799
  'range-disabled': disabled,
@@ -25515,10 +25802,10 @@ class Range {
25515
25802
  [`range-label-placement-${labelPlacement}`]: true,
25516
25803
  'range-item-start-adjustment': needsStartAdjustment,
25517
25804
  'range-item-end-adjustment': needsEndAdjustment,
25518
- }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25805
+ }) }, hAsync("label", { key: '040be16d5a2b4c1dded852d45a82e7505dc8fb30', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'd2ba909a1177dd27c1789f0d3f8f012a39f216c6', class: {
25519
25806
  'label-text-wrapper': true,
25520
25807
  'label-text-wrapper-hidden': !hasLabel,
25521
- }, 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" })))));
25808
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: 'eeaa70230c5adfac60468a8ff52a54eaf804c030', class: "native-wrapper" }, hAsync("slot", { key: '1d78f55bb32bb05950dff7dfcc6bfdbef1cddb81', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '2dab4e2894ed7c036871a209419a92f1b6cf6059', name: "end" })))));
25522
25809
  }
25523
25810
  get el() { return getElement(this); }
25524
25811
  static get watchers() { return {
@@ -26419,7 +26706,7 @@ class Refresher {
26419
26706
  }
26420
26707
  render() {
26421
26708
  const mode = getIonMode$1(this);
26422
- return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26709
+ return (hAsync(Host, { key: '4c36bffbfa32ef1bd28a60f4455c125842880659', slot: "fixed", class: {
26423
26710
  [mode]: true,
26424
26711
  // Used internally for styling
26425
26712
  [`refresher-${mode}`]: true,
@@ -26647,7 +26934,7 @@ class RefresherContent {
26647
26934
  const pullingIcon = this.pullingIcon;
26648
26935
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26649
26936
  const mode = getIonMode$1(this);
26650
- 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())));
26937
+ return (hAsync(Host, { key: 'fb78d7e31f8feb31025e58903eb9de85cb928dbd', class: mode }, hAsync("div", { key: '23f67800f09765ef8fde8cf85a843e19e667f337', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '5a08d3b69762f8b51dcd3dcfbaf3fddb707257fa', class: "refresher-pulling-icon" }, hAsync("div", { key: '42a613b029e092acdff7fe613a429375d89f157e', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '2f9cdc75938c4d306de7a717ed67901daef71c2c', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '1f8a6347b4a46417ba55286a79f1a41f04bf9c91', class: "arrow-container" }, hAsync("ion-icon", { key: '326713d11d482d420ba5a739ff4528400a37e9ca', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'ab18c7cbea7bcbfa034f90f317652af4d93660ed', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'f488acd54acc8a61b6c5a279f0d7f9a437c370c0', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: '914ad6139442dac53af47120ea821fa11c309a38', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: '7eba732f5e2d72b90399d68a3e89617d8979b3d1', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '838d66d8bef6f56622c62b1068e7fed29e094302', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26651
26938
  }
26652
26939
  get el() { return getElement(this); }
26653
26940
  static get cmpMeta() { return {
@@ -26690,7 +26977,7 @@ class Reorder {
26690
26977
  render() {
26691
26978
  const mode = getIonMode$1(this);
26692
26979
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26693
- 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" }))));
26980
+ return (hAsync(Host, { key: '17adf3165f4e09283d5d6434d7cd47bd23519048', class: mode }, hAsync("slot", { key: 'd00d1cd97c689fc5c7b7175a2051cf697fe22871' }, hAsync("ion-icon", { key: 'eec219aebde6083de98358be3e75965c5a5dc3d0', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26694
26981
  }
26695
26982
  get el() { return getElement(this); }
26696
26983
  static get style() { return {
@@ -26944,7 +27231,7 @@ class ReorderGroup {
26944
27231
  }
26945
27232
  render() {
26946
27233
  const mode = getIonMode$1(this);
26947
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
27234
+ return (hAsync(Host, { key: '6ca009dd65302a914d459aec638e62977440db20', class: {
26948
27235
  [mode]: true,
26949
27236
  'reorder-enabled': !this.disabled,
26950
27237
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -27052,7 +27339,7 @@ class RippleEffect {
27052
27339
  }
27053
27340
  render() {
27054
27341
  const mode = getIonMode$1(this);
27055
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
27342
+ return (hAsync(Host, { key: '40c7f73e7f5f67e29f83e1236a61c6e1c9943c42', role: "presentation", class: {
27056
27343
  [mode]: true,
27057
27344
  unbounded: this.unbounded,
27058
27345
  } }));
@@ -27994,10 +28281,10 @@ class RouterLink {
27994
28281
  rel: this.rel,
27995
28282
  target: this.target,
27996
28283
  };
27997
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
28284
+ return (hAsync(Host, { key: '11183264fb6ae0db9a7a47c71b6862d60001b834', onClick: this.onClick, class: createColorClasses$1(this.color, {
27998
28285
  [mode]: true,
27999
28286
  'ion-activatable': true,
28000
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
28287
+ }) }, hAsync("a", Object.assign({ key: '3e0e5242161cb0df593d6d573e51b8ba750065a1' }, attrs), hAsync("slot", { key: '5bd808e98a4627bb1236f0d955f4b32971355417' }))));
28001
28288
  }
28002
28289
  static get style() { return IonRouterLinkStyle0; }
28003
28290
  static get cmpMeta() { return {
@@ -28192,7 +28479,7 @@ class RouterOutlet {
28192
28479
  return true;
28193
28480
  }
28194
28481
  render() {
28195
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
28482
+ return hAsync("slot", { key: '8d0c163c5f63158e16ef2db7cc3c756cf597461d' });
28196
28483
  }
28197
28484
  get el() { return getElement(this); }
28198
28485
  static get watchers() { return {
@@ -28226,7 +28513,7 @@ class Row {
28226
28513
  registerInstance(this, hostRef);
28227
28514
  }
28228
28515
  render() {
28229
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28516
+ return (hAsync(Host, { key: 'a690022e2abdce6946d24264574e4aa0886a8ea5', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1a0e831dd1dbfe7877d3ad01d0a3045a5fb29e3' })));
28230
28517
  }
28231
28518
  static get style() { return IonRowStyle0; }
28232
28519
  static get cmpMeta() { return {
@@ -28620,8 +28907,8 @@ class Searchbar {
28620
28907
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28621
28908
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28622
28909
  const shouldShowCancelButton = this.shouldShowCancelButton();
28623
- 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))));
28624
- return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28910
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '989f3e84c472ada6e66dd9b249d0d268bf17ce26', "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: '7d335d4fde33822dc79d26b748ba2e98db7494bb', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28911
+ return (hAsync(Host, { key: 'd1a1972725e949fb102c91487aaa7b9d10c2d718', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28625
28912
  [mode]: true,
28626
28913
  'searchbar-animated': animated,
28627
28914
  'searchbar-disabled': this.disabled,
@@ -28631,14 +28918,14 @@ class Searchbar {
28631
28918
  'searchbar-has-focus': this.focused,
28632
28919
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28633
28920
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28634
- }) }, 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) => {
28921
+ }) }, hAsync("div", { key: 'add53640b2994cb6b2bf02792dafe51aba6b1684', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '160cc36459a4a652e7f41ccd14dcdc782278779e', "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: '8825fd13af0d2dea451ccc0e00ae7b5021dc01c4', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '8a7b56da278b9ca5c4f5a4ee9c01924fd5ae29d8', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28635
28922
  /**
28636
28923
  * This prevents mobile browsers from
28637
28924
  * blurring the input when the clear
28638
28925
  * button is activated.
28639
28926
  */
28640
28927
  ev.preventDefault();
28641
- }, 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));
28928
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '24c55274516ab012d8c25f03525c6cdb9409e52f', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28642
28929
  }
28643
28930
  get el() { return getElement(this); }
28644
28931
  static get watchers() { return {
@@ -29222,14 +29509,14 @@ class Segment {
29222
29509
  }
29223
29510
  render() {
29224
29511
  const mode = getIonMode$1(this);
29225
- return (hAsync(Host, { key: 'b1eb4a6e4f953f6c4882395585799503735bbc6b', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29512
+ return (hAsync(Host, { key: 'a64e39352050b516f7dc82ce95a4bcff8431d1d0', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29226
29513
  [mode]: true,
29227
29514
  'in-toolbar': hostContext('ion-toolbar', this.el),
29228
29515
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29229
29516
  'segment-activated': this.activated,
29230
29517
  'segment-disabled': this.disabled,
29231
29518
  'segment-scrollable': this.scrollable,
29232
- }) }, hAsync("slot", { key: 'e7df6b017d154f30eb8021bc965f2e6c8e6480bf', onSlotchange: this.onSlottedItemsChange })));
29519
+ }) }, hAsync("slot", { key: 'bb3f3ec30e59e0461fa620d8961ab730cc802a4e', onSlotchange: this.onSlottedItemsChange })));
29233
29520
  }
29234
29521
  get el() { return getElement(this); }
29235
29522
  static get watchers() { return {
@@ -29300,35 +29587,7 @@ class SegmentButton {
29300
29587
  valueChanged() {
29301
29588
  this.updateState();
29302
29589
  }
29303
- waitForSegmentContent(ionSegment, contentId) {
29304
- return new Promise((resolve, reject) => {
29305
- let timeoutId = undefined;
29306
- let animationFrameId;
29307
- const check = () => {
29308
- if (!ionSegment) {
29309
- reject(new Error(`Segment not found when looking for Segment Content`));
29310
- return;
29311
- }
29312
- const segmentView = getNextSiblingOfType(ionSegment); // Skip the text nodes
29313
- const segmentContent = segmentView === null || segmentView === void 0 ? void 0 : segmentView.querySelector(`ion-segment-content[id="${contentId}"]`);
29314
- if (segmentContent && timeoutId) {
29315
- clearTimeout(timeoutId); // Clear the timeout if the segmentContent is found
29316
- cancelAnimationFrame(animationFrameId);
29317
- resolve(segmentContent);
29318
- }
29319
- else {
29320
- animationFrameId = requestAnimationFrame(check); // Keep checking on the next animation frame
29321
- }
29322
- };
29323
- check();
29324
- // Set a timeout to reject the promise
29325
- timeoutId = setTimeout(() => {
29326
- cancelAnimationFrame(animationFrameId);
29327
- reject(new Error(`Unable to find Segment Content with id="${contentId} within 1000 ms`));
29328
- }, 1000);
29329
- });
29330
- }
29331
- async connectedCallback() {
29590
+ connectedCallback() {
29332
29591
  const segmentEl = (this.segmentEl = this.el.closest('ion-segment'));
29333
29592
  if (segmentEl) {
29334
29593
  this.updateState();
@@ -29338,14 +29597,11 @@ class SegmentButton {
29338
29597
  // Return if there is no contentId defined
29339
29598
  if (!this.contentId)
29340
29599
  return;
29341
- let segmentContent;
29342
- try {
29343
- // Attempt to find the Segment Content by its contentId
29344
- segmentContent = await this.waitForSegmentContent(segmentEl, this.contentId);
29345
- }
29346
- catch (error) {
29347
- // If no associated Segment Content exists, log an error and return
29348
- console.error('Segment Button: ', error.message);
29600
+ // Attempt to find the Segment Content by its contentId
29601
+ const segmentContent = document.getElementById(this.contentId);
29602
+ // If no associated Segment Content exists, log an error and return
29603
+ if (!segmentContent) {
29604
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29349
29605
  return;
29350
29606
  }
29351
29607
  // Ensure the found element is a valid ION-SEGMENT-CONTENT
@@ -29391,7 +29647,7 @@ class SegmentButton {
29391
29647
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29392
29648
  const mode = getIonMode$1(this);
29393
29649
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29394
- return (hAsync(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
29650
+ return (hAsync(Host, { key: '79518fc8c0d1c72604397a281bdcfdcf4e070395', class: {
29395
29651
  [mode]: true,
29396
29652
  'in-toolbar': hostContext('ion-toolbar', this.el),
29397
29653
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29407,7 +29663,7 @@ class SegmentButton {
29407
29663
  'ion-activatable': true,
29408
29664
  'ion-activatable-instant': true,
29409
29665
  'ion-focusable': true,
29410
- } }, hAsync("button", Object.assign({ key: '00dbcdbd81cd74abdd39803f6840a6e477cc7b0c', "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: '5200c082a9c4788010c4fc33fe75e2b2ad28364a', class: "button-inner" }, hAsync("slot", { key: 'cf3fce2b5d22436b84cd4367a5885df7d6a2715f' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'f1a2816465f4c2c06644be07315bff2da77e2342' })), hAsync("div", { key: 'aaf31c0ed39641fca698ee98d0773131f4eea6bd', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'fc556651361b7ac305aaedd25ea4afe3173abd20', part: "indicator-background", class: "segment-button-indicator-background" }))));
29666
+ } }, hAsync("button", Object.assign({ key: '07acbd21d0c8b89f40160b396115dfaf65235f71', "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: '03d28f57d195e36ed5512dfe5d62c7395c06dba7', class: "button-inner" }, hAsync("slot", { key: '9040099c71aafd9e9491b268f9f2c55773de1542' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'd3ab01738ea620b1e6ebbf5a06fb7028072ac3dc' })), hAsync("div", { key: 'b4e0dd212c824f6b77f9cd7fd51c581710922c3b', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'd693d0f0b628771375c5bf9d4ac6da19d8930303', part: "indicator-background", class: "segment-button-indicator-background" }))));
29411
29667
  }
29412
29668
  get el() { return getElement(this); }
29413
29669
  static get watchers() { return {
@@ -29443,7 +29699,7 @@ class SegmentContent {
29443
29699
  registerInstance(this, hostRef);
29444
29700
  }
29445
29701
  render() {
29446
- return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29702
+ return (hAsync(Host, { key: '64b3965b14c749e77e9ce13b59f349d971e245c8' }, hAsync("slot", { key: '2d0bed34f9bc93f92e713cb51e42220f3cecd8f5' })));
29447
29703
  }
29448
29704
  static get style() { return IonSegmentContentStyle0; }
29449
29705
  static get cmpMeta() { return {
@@ -29556,10 +29812,10 @@ class SegmentView {
29556
29812
  }
29557
29813
  render() {
29558
29814
  const { disabled, isManualScroll } = this;
29559
- return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29815
+ return (hAsync(Host, { key: 'fa528d2d9ae0f00fc3067defe2a047dce77c814a', class: {
29560
29816
  'segment-view-disabled': disabled,
29561
29817
  'segment-view-scroll-disabled': isManualScroll === false,
29562
- } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29818
+ } }, hAsync("slot", { key: '74dc8b4d073caeff1bab272d11b9ea3e1a215954' })));
29563
29819
  }
29564
29820
  get el() { return getElement(this); }
29565
29821
  static get style() { return {
@@ -29674,6 +29930,7 @@ class Select {
29674
29930
  this.expandedIcon = undefined;
29675
29931
  this.shape = undefined;
29676
29932
  this.value = undefined;
29933
+ this.required = false;
29677
29934
  }
29678
29935
  styleChanged() {
29679
29936
  this.emitStyle();
@@ -29729,8 +29986,15 @@ class Select {
29729
29986
  }
29730
29987
  this.isExpanded = true;
29731
29988
  const overlay = (this.overlay = await this.createOverlay(event));
29732
- // Add logic to scroll selected item into view before presenting
29733
- const scrollSelectedIntoView = () => {
29989
+ overlay.onDidDismiss().then(() => {
29990
+ this.overlay = undefined;
29991
+ this.isExpanded = false;
29992
+ this.ionDismiss.emit();
29993
+ this.setFocus();
29994
+ });
29995
+ await overlay.present();
29996
+ // focus selected option for popovers and modals
29997
+ if (this.interface === 'popover' || this.interface === 'modal') {
29734
29998
  const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
29735
29999
  if (indexOfSelected > -1) {
29736
30000
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
@@ -29748,7 +30012,6 @@ class Select {
29748
30012
  */
29749
30013
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
29750
30014
  if (interactiveEl) {
29751
- selectedItem.scrollIntoView({ block: 'nearest' });
29752
30015
  // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29753
30016
  // and removing `ion-focused` style
29754
30017
  interactiveEl.setFocus();
@@ -29772,40 +30035,7 @@ class Select {
29772
30035
  focusVisibleElement(firstEnabledOption.closest('ion-item'));
29773
30036
  }
29774
30037
  }
29775
- };
29776
- // For modals and popovers, we can scroll before they're visible
29777
- if (this.interface === 'modal') {
29778
- overlay.addEventListener('ionModalWillPresent', scrollSelectedIntoView, { once: true });
29779
- }
29780
- else if (this.interface === 'popover') {
29781
- overlay.addEventListener('ionPopoverWillPresent', scrollSelectedIntoView, { once: true });
29782
30038
  }
29783
- else {
29784
- /**
29785
- * For alerts and action sheets, we need to wait a frame after willPresent
29786
- * because these overlays don't have their content in the DOM immediately
29787
- * when willPresent fires. By waiting a frame, we ensure the content is
29788
- * rendered and can be properly scrolled into view.
29789
- */
29790
- const scrollAfterRender = () => {
29791
- requestAnimationFrame(() => {
29792
- scrollSelectedIntoView();
29793
- });
29794
- };
29795
- if (this.interface === 'alert') {
29796
- overlay.addEventListener('ionAlertWillPresent', scrollAfterRender, { once: true });
29797
- }
29798
- else if (this.interface === 'action-sheet') {
29799
- overlay.addEventListener('ionActionSheetWillPresent', scrollAfterRender, { once: true });
29800
- }
29801
- }
29802
- overlay.onDidDismiss().then(() => {
29803
- this.overlay = undefined;
29804
- this.isExpanded = false;
29805
- this.ionDismiss.emit();
29806
- this.setFocus();
29807
- });
29808
- await overlay.present();
29809
30039
  return overlay;
29810
30040
  }
29811
30041
  createOverlay(ev) {
@@ -30185,8 +30415,8 @@ class Select {
30185
30415
  return renderedLabel;
30186
30416
  }
30187
30417
  renderListbox() {
30188
- const { disabled, inputId, isExpanded } = this;
30189
- return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30418
+ const { disabled, inputId, isExpanded, required } = this;
30419
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30190
30420
  }
30191
30421
  render() {
30192
30422
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -30217,7 +30447,7 @@ class Select {
30217
30447
  * TODO(FW-5592): Remove hasStartEndSlots condition
30218
30448
  */
30219
30449
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
30220
- return (hAsync(Host, { key: 'b2dca9ae25d88e4d9fdb55003041a66be5668fcf', onClick: this.onClick, class: createColorClasses$1(this.color, {
30450
+ return (hAsync(Host, { key: '457f1130a291ff1f6fdb8a112f6c32b53efdad7a', onClick: this.onClick, class: createColorClasses$1(this.color, {
30221
30451
  [mode]: true,
30222
30452
  'in-item': inItem,
30223
30453
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -30233,7 +30463,7 @@ class Select {
30233
30463
  [`select-justify-${justify}`]: justifyEnabled,
30234
30464
  [`select-shape-${shape}`]: shape !== undefined,
30235
30465
  [`select-label-placement-${labelPlacement}`]: true,
30236
- }) }, hAsync("label", { key: 'c22fe9aee8cd448223497ef143e89529fcef8af6', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '601972df4579f4fa6a9c2c12865593e807decb72', class: "select-wrapper-inner" }, hAsync("slot", { key: '5f7b1261862f74b978b26f026533e3fd1cc666ba', name: "start" }), hAsync("div", { key: '39616da89f4b4b78432f6da85116a7de2ca589e7', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '1d7b3601b73af7c05b3627cfc8e5147ea379bb03', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'b0344f0ac15003e22fee66d3d7ed03a07da7e8b7', class: "select-highlight" }))));
30466
+ }) }, hAsync("label", { key: '4a66b0da8142d5e83f061308ccaece0737bc1d30', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '62c964f75bca42d8ec0d5026b701b0848c14f701', class: "select-wrapper-inner" }, hAsync("slot", { key: '1c59f789706d5308763465c6bbca218e14774c81', name: "start" }), hAsync("div", { key: '22dc110d2fe3215bc23867eb1453192d2aed547e', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '13e05653f277726ea4cd1c48318c182bd106e69b', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'eab497a5e69bb956884bd0522c1503f654651226', class: "select-highlight" }))));
30237
30467
  }
30238
30468
  get el() { return getElement(this); }
30239
30469
  static get watchers() { return {
@@ -30269,6 +30499,7 @@ class Select {
30269
30499
  "expandedIcon": [1, "expanded-icon"],
30270
30500
  "shape": [1],
30271
30501
  "value": [1032],
30502
+ "required": [4],
30272
30503
  "isExpanded": [32],
30273
30504
  "open": [64]
30274
30505
  },
@@ -30393,7 +30624,7 @@ class SelectModal {
30393
30624
  } }, option.text))));
30394
30625
  }
30395
30626
  render() {
30396
- return (hAsync(Host, { key: '4df42c447b4026d09d9231f09dc4bdae9a8cfe4a', class: getIonMode$1(this) }, hAsync("ion-header", { key: '211c4e869b858867f3d60637e570aeb01de41de7' }, hAsync("ion-toolbar", { key: 'dc4b151331aecbaaaafb460802ee9b689493601d' }, this.header !== undefined && hAsync("ion-title", { key: 'ba1347a59ae0a5c6770c239b5ec02a536a445bd1' }, this.header), hAsync("ion-buttons", { key: '43c98fd25d7e7f54b94b24e53535c6d5ba599892', slot: "end" }, hAsync("ion-button", { key: '51b2b3f3eed42637b2cfc213c95d0bcf10e4b89d', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'fe721b09f80555856211f7e40dbfc31a533acae1' }, hAsync("ion-list", { key: 'd0b932d137136958d896408fb2fa571023775b92' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30627
+ return (hAsync(Host, { key: '885198a9f21884e3bfb9bf0af53e0ee3ae37b231', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'd8b63726869747ac711e4fda78a50ce46f72970c' }, hAsync("ion-toolbar", { key: '9ab2a4c1480dd74eeae38d7b580a2e87fb71270e' }, this.header !== undefined && hAsync("ion-title", { key: '87a7034385ef57f55cefdd0371dbb66a64827290' }, this.header), hAsync("ion-buttons", { key: '0a35424ea13ca002abc9a43b6138730254f187d0', slot: "end" }, hAsync("ion-button", { key: '238bf40b47128d9aa995d14d9ff9ebcae4f79492', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: '4a256f3381f8cabbc7194337b8ae4aa1c3ab1066' }, hAsync("ion-list", { key: 'acd38fc52024632176467ed6a84106a454021544' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30397
30628
  }
30398
30629
  get el() { return getElement(this); }
30399
30630
  static get style() { return {
@@ -30426,7 +30657,7 @@ class SelectOption {
30426
30657
  this.value = undefined;
30427
30658
  }
30428
30659
  render() {
30429
- return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
30660
+ return hAsync(Host, { key: '8c96c199ce3a3065de3fe446500f567236e0610a', role: "option", id: this.inputId, class: getIonMode$1(this) });
30430
30661
  }
30431
30662
  get el() { return getElement(this); }
30432
30663
  static get style() { return IonSelectOptionStyle0; }
@@ -30546,7 +30777,7 @@ class SelectPopover {
30546
30777
  render() {
30547
30778
  const { header, message, options, subHeader } = this;
30548
30779
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30549
- 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))));
30780
+ return (hAsync(Host, { key: '542367ab8fb72bfebf7e65630b91017d68827fd6', class: getIonMode$1(this) }, hAsync("ion-list", { key: 'f2f0f37e1365cd7780b02de1a1698700d0df48a7' }, header !== undefined && hAsync("ion-list-header", { key: '4b8800a68e800f19277a44b7074ca24b70218daf' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: '932b7903daf97d5a57d289b7ee49e868bb9b0cf5' }, hAsync("ion-label", { key: 'fc3f1b69aa2a0bc6125d35692dcad3a8a99fd160', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'eceab2f47afa95f04b138342b0bdbfa1f50919a8' }, subHeader), message !== undefined && hAsync("p", { key: '70f4e27ad1316318efd0c17efce31e5e45c8fa02' }, message)))), this.renderOptions(options))));
30550
30781
  }
30551
30782
  get el() { return getElement(this); }
30552
30783
  static get style() { return {
@@ -30594,11 +30825,11 @@ class SkeletonText {
30594
30825
  const animated = this.animated && config.getBoolean('animated', true);
30595
30826
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30596
30827
  const mode = getIonMode$1(this);
30597
- return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30828
+ return (hAsync(Host, { key: 'c193f9a8e8efab5139544f047bdae4b6d421aa86', class: {
30598
30829
  [mode]: true,
30599
30830
  'skeleton-text-animated': animated,
30600
30831
  'in-media': inMedia,
30601
- } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30832
+ } }, hAsync("span", { key: 'e15db679bd3c359b4df5123efd2f92e5b380fde3' }, "\u00A0")));
30602
30833
  }
30603
30834
  get el() { return getElement(this); }
30604
30835
  static get style() { return IonSkeletonTextStyle0; }
@@ -30651,7 +30882,7 @@ class Spinner {
30651
30882
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30652
30883
  }
30653
30884
  }
30654
- return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30885
+ return (hAsync(Host, { key: 'e0dfa8a3ee2a0469eb31323f506750bd77d65797', class: createColorClasses$1(self.color, {
30655
30886
  [mode]: true,
30656
30887
  [`spinner-${spinnerName}`]: true,
30657
30888
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30751,12 +30982,12 @@ class SplitPane {
30751
30982
  }
30752
30983
  render() {
30753
30984
  const mode = getIonMode$1(this);
30754
- return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30985
+ return (hAsync(Host, { key: '76be70d7fbebc52646a5851f47accc1006615b85', class: {
30755
30986
  [mode]: true,
30756
30987
  // Used internally for styling
30757
30988
  [`split-pane-${mode}`]: true,
30758
30989
  'split-pane-visible': this.visible,
30759
- } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30990
+ } }, hAsync("slot", { key: '9a859530f4fb18aff43255bc3940feb9aca625d7' })));
30760
30991
  }
30761
30992
  get el() { return getElement(this); }
30762
30993
  static get watchers() { return {
@@ -30825,10 +31056,10 @@ class Tab {
30825
31056
  }
30826
31057
  render() {
30827
31058
  const { tab, active, component } = this;
30828
- return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
31059
+ return (hAsync(Host, { key: '2107ece2f1ebdf748bac8adb78a9ad67e7fc9057', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30829
31060
  'ion-page': component === undefined,
30830
31061
  'tab-hidden': !active,
30831
- } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
31062
+ } }, hAsync("slot", { key: 'b4a1bc1aa79f6b82b8f77b544bcb74e65229b541' })));
30832
31063
  }
30833
31064
  get el() { return getElement(this); }
30834
31065
  static get watchers() { return {
@@ -30906,11 +31137,11 @@ class TabBar {
30906
31137
  const { color, translucent, keyboardVisible } = this;
30907
31138
  const mode = getIonMode$1(this);
30908
31139
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30909
- return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
31140
+ return (hAsync(Host, { key: '62303a7f9d8c98ffab51a5900c144c5117b9c543', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30910
31141
  [mode]: true,
30911
31142
  'tab-bar-translucent': translucent,
30912
31143
  'tab-bar-hidden': shouldHide,
30913
- }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
31144
+ }) }, hAsync("slot", { key: '5771a9828f748c2bd6b5e26758b9723c6b3de5ff' })));
30914
31145
  }
30915
31146
  get el() { return getElement(this); }
30916
31147
  static get watchers() { return {
@@ -31008,7 +31239,7 @@ class TabButton {
31008
31239
  rel,
31009
31240
  target,
31010
31241
  };
31011
- return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31242
+ return (hAsync(Host, { key: 'a86d441d8df350fe991f2f948fc6b6ad007728f7', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31012
31243
  [mode]: true,
31013
31244
  'tab-selected': selected,
31014
31245
  'tab-disabled': disabled,
@@ -31020,7 +31251,7 @@ class TabButton {
31020
31251
  'ion-activatable': true,
31021
31252
  'ion-selectable': true,
31022
31253
  'ion-focusable': true,
31023
- } }, 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" }))));
31254
+ } }, hAsync("a", Object.assign({ key: '8dfe1ccff2cf21601c5aea7f7f877c0fbe384e09' }, 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: '3f557cf6e96e22b9318b4aee19ede810eb7fb720', class: "button-inner" }, hAsync("slot", { key: '836dd090dbe3c2ea97dc263fca7d01dea6ea0eb6' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '488a924fd04602c1b23e03d1a4c84dfa0f2ca03d', type: "unbounded" }))));
31024
31255
  }
31025
31256
  get el() { return getElement(this); }
31026
31257
  static get style() { return {
@@ -31196,7 +31427,7 @@ class Tabs {
31196
31427
  return Array.from(this.el.querySelectorAll('ion-tab'));
31197
31428
  }
31198
31429
  render() {
31199
- 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" })));
31430
+ return (hAsync(Host, { key: 'd357c4607cfc89fb88404fe12ea7ef5b397fe6bf', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '18661896589a4ab3c74164f448b928abec9b4db0', name: "top" }), hAsync("div", { key: '3bf30ea2540a196e868a78a861824b4b5d933afd', class: "tabs-inner" }, hAsync("slot", { key: '7cfc154d4d6c1642188ab6508a6be72c8234585e' })), hAsync("slot", { key: '8057679c959195cbdfae156b8ae0cbfd978c5037', name: "bottom" })));
31200
31431
  }
31201
31432
  get el() { return getElement(this); }
31202
31433
  static get style() { return IonTabsStyle0; }
@@ -31238,9 +31469,9 @@ class Text {
31238
31469
  }
31239
31470
  render() {
31240
31471
  const mode = getIonMode$1(this);
31241
- return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
31472
+ return (hAsync(Host, { key: '0c2546ea3f24b0a6bfd606199441d0a4edfa4ca1', class: createColorClasses$1(this.color, {
31242
31473
  [mode]: true,
31243
- }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
31474
+ }) }, hAsync("slot", { key: 'b7623ccb06f9461090a1f33e9f85886c7a4d5eff' })));
31244
31475
  }
31245
31476
  static get style() { return IonTextStyle0; }
31246
31477
  static get cmpMeta() { return {
@@ -31622,7 +31853,7 @@ class Textarea {
31622
31853
  * TODO(FW-5592): Remove hasStartEndSlots condition
31623
31854
  */
31624
31855
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31625
- return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31856
+ return (hAsync(Host, { key: 'c0dabc66193c41188c817799e45b36abbf097ba1', class: createColorClasses$1(this.color, {
31626
31857
  [mode]: true,
31627
31858
  'has-value': hasValue,
31628
31859
  'has-focus': hasFocus,
@@ -31631,7 +31862,7 @@ class Textarea {
31631
31862
  [`textarea-shape-${shape}`]: shape !== undefined,
31632
31863
  [`textarea-label-placement-${labelPlacement}`]: true,
31633
31864
  'textarea-disabled': disabled,
31634
- }) }, 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()));
31865
+ }) }, hAsync("label", { key: 'dce1ce6794b914975d93f16f4e1a5721a5f3fc73', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '361ce31a9a22d8d87fb2bbd134fda3d6c66ba0fe', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e7a7e439d0e723c029951f9ee67adba1694b33d2', class: "start-slot-wrapper" }, hAsync("slot", { key: 'efe797a88b0c2d6067217f7b32fea7526beed90f', name: "start" })), hAsync("div", { key: '21375f64876bc68e25d2de13299a9f3acde2c370', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '3771fc6c31a61f7d9ba41f69fa12987aa2ec0c61', 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: 'd81dfd5d6947c3b4ee1bff367080419b9e3ed81c', class: "end-slot-wrapper" }, hAsync("slot", { key: '2b6ab3f6bb66652e6b31ad11bc849bd386014721', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'd37ad4cc35eb7fef873ab41ee164165d18703919', class: "textarea-highlight" })), this.renderBottomContent()));
31635
31866
  }
31636
31867
  get el() { return getElement(this); }
31637
31868
  static get watchers() { return {
@@ -31693,7 +31924,7 @@ class Thumbnail {
31693
31924
  registerInstance(this, hostRef);
31694
31925
  }
31695
31926
  render() {
31696
- return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31927
+ return (hAsync(Host, { key: '7f5fd6c056da2d82feb2c3c33f3e6dec898787f5', class: getIonMode$1(this) }, hAsync("slot", { key: 'd15fd2b6cdc03777edc1930be95ad838e1b376c8' })));
31697
31928
  }
31698
31929
  static get style() { return IonThumbnailStyle0; }
31699
31930
  static get cmpMeta() { return {
@@ -32529,9 +32760,9 @@ class Toast {
32529
32760
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32530
32761
  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);
32531
32762
  }
32532
- return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32763
+ return (hAsync(Host, Object.assign({ key: '34036afc0701173d51c9c11ea4a2e1d65685ba41', tabindex: "-1" }, this.htmlAttributes, { style: {
32533
32764
  zIndex: `${60000 + this.overlayIndex}`,
32534
- }, 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')))));
32765
+ }, 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: 'd927e43957f47888ce4e64f1e99c935d55757af7', class: wrapperClass }, hAsync("div", { key: 'ca43bc42478181acdf8cdea6601a85fa95d12216', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: 'fdd6fb8f6e947ed002bd2e63fdc8ec7e764f4a7d', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '37c16c81ee3e4304379dfbcabdffe73db73e4653', 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')))));
32535
32766
  }
32536
32767
  get el() { return getElement(this); }
32537
32768
  static get watchers() { return {
@@ -32665,6 +32896,7 @@ class Toggle {
32665
32896
  this.labelPlacement = 'start';
32666
32897
  this.justify = undefined;
32667
32898
  this.alignment = undefined;
32899
+ this.required = false;
32668
32900
  }
32669
32901
  disabledChanged() {
32670
32902
  if (this.gesture) {
@@ -32746,12 +32978,12 @@ class Toggle {
32746
32978
  return this.el.textContent !== '';
32747
32979
  }
32748
32980
  render() {
32749
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
32981
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this;
32750
32982
  const mode = getIonMode$1(this);
32751
32983
  const value = this.getValue();
32752
32984
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32753
32985
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32754
- return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32986
+ return (hAsync(Host, { key: '381632cf12ef5d27d729e0d59efcb14efad12a51', onClick: this.onClick, class: createColorClasses$1(color, {
32755
32987
  [mode]: true,
32756
32988
  'in-item': hostContext('ion-item', el),
32757
32989
  'toggle-activated': activated,
@@ -32761,10 +32993,10 @@ class Toggle {
32761
32993
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32762
32994
  [`toggle-label-placement-${labelPlacement}`]: true,
32763
32995
  [`toggle-${rtl}`]: true,
32764
- }) }, 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: {
32996
+ }) }, hAsync("label", { key: '73f2bd13ccfc4a1efc68781155f603e665be3d7e', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '0c4b7663ddbf3b1ce94b5fd4c7c21e51db907d71', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, this.inheritedAttributes)), hAsync("div", { key: 'ef1e73bee832bf9ab58d1e47eb037c50b609c0ee', class: {
32765
32997
  'label-text-wrapper': true,
32766
32998
  'label-text-wrapper-hidden': !this.hasLabel,
32767
- }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32999
+ }, part: "label" }, hAsync("slot", { key: '67b7e20dc96503cb76dd5e31c5579752de465dcc' })), hAsync("div", { key: '17f89960bcc3302ef8e0c0d4e10513241744e232', class: "native-wrapper" }, this.renderToggleControl()))));
32768
33000
  }
32769
33001
  get el() { return getElement(this); }
32770
33002
  static get watchers() { return {
@@ -32787,6 +33019,7 @@ class Toggle {
32787
33019
  "labelPlacement": [1, "label-placement"],
32788
33020
  "justify": [1],
32789
33021
  "alignment": [1],
33022
+ "required": [4],
32790
33023
  "activated": [32]
32791
33024
  },
32792
33025
  "$listeners$": undefined,
@@ -32818,6 +33051,10 @@ var IonToolbarMdStyle0 = toolbarMdCss;
32818
33051
  * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.
32819
33052
  * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.
32820
33053
  * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.
33054
+ *
33055
+ * @part background - The background of the toolbar, covering the entire area behind the toolbar content.
33056
+ * @part container - The container that wraps all toolbar content, including the default slot and named slot content.
33057
+ * @part content - The container for the default slot, wrapping content provided without a named slot.
32821
33058
  */
32822
33059
  class Toolbar {
32823
33060
  constructor(hostRef) {
@@ -32868,10 +33105,10 @@ class Toolbar {
32868
33105
  this.childrenStyles.forEach((value) => {
32869
33106
  Object.assign(childStyles, value);
32870
33107
  });
32871
- return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
33108
+ return (hAsync(Host, { key: '402afe7ce0c97883cedd0e48a5a0492a9bfe76ae', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32872
33109
  [mode]: true,
32873
33110
  'in-toolbar': hostContext('ion-toolbar', this.el),
32874
- })) }, 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" }))));
33111
+ })) }, hAsync("div", { key: '2465a6dc8d507ec650538378d1be2abd399c58ad', class: "toolbar-background", part: "background" }), hAsync("div", { key: '6075096afd12303b961e4fe9ad345ef2887573af', class: "toolbar-container", part: "container" }, hAsync("slot", { key: '8b7eec1148cfeb339d87cdf9273f2104703e7601', name: "start" }), hAsync("slot", { key: 'b102d3926cade24faf78b7af78ad5e192c4c0308', name: "secondary" }), hAsync("div", { key: 'c6ab2e978328324c6f9e7892024cbcd8b8987067', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '86f8952c4355a9df5b4bbb95e9d0cafefd272d5b' })), hAsync("slot", { key: '501e43431da6b9dd35b47b79222f948d445f7a78', name: "primary" }), hAsync("slot", { key: '84bf1a15a5e52e8e94df9f479c4ce18004f5ab57', name: "end" }))));
32875
33112
  }
32876
33113
  get el() { return getElement(this); }
32877
33114
  static get style() { return {
@@ -32921,11 +33158,11 @@ class ToolbarTitle {
32921
33158
  render() {
32922
33159
  const mode = getIonMode$1(this);
32923
33160
  const size = this.getSize();
32924
- return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
33161
+ return (hAsync(Host, { key: '3f7b19c99961dbb86c0a925218332528b22e6880', class: createColorClasses$1(this.color, {
32925
33162
  [mode]: true,
32926
33163
  [`title-${size}`]: true,
32927
33164
  'title-rtl': document.dir === 'rtl',
32928
- }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
33165
+ }) }, hAsync("div", { key: '12054fbdd60e40a15875e442c20143766fc34fc3', class: "toolbar-title" }, hAsync("slot", { key: '9f14fb14a67d4bd1e4536a4d64a637fbe5a151c7' }))));
32929
33166
  }
32930
33167
  get el() { return getElement(this); }
32931
33168
  static get watchers() { return {