@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.mjs CHANGED
@@ -2532,9 +2532,37 @@ const inheritAriaAttributes = (el, ignoreList) => {
2532
2532
  return inheritAttributes$1(el, attributesToInherit);
2533
2533
  };
2534
2534
  const addEventListener$1 = (el, eventName, callback, opts) => {
2535
+ var _a;
2536
+ if (typeof window !== 'undefined') {
2537
+ const win = window;
2538
+ const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
2539
+ if (config) {
2540
+ const ael = config.get('_ael');
2541
+ if (ael) {
2542
+ return ael(el, eventName, callback, opts);
2543
+ }
2544
+ else if (config._ael) {
2545
+ return config._ael(el, eventName, callback, opts);
2546
+ }
2547
+ }
2548
+ }
2535
2549
  return el.addEventListener(eventName, callback, opts);
2536
2550
  };
2537
2551
  const removeEventListener = (el, eventName, callback, opts) => {
2552
+ var _a;
2553
+ if (typeof window !== 'undefined') {
2554
+ const win = window;
2555
+ const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
2556
+ if (config) {
2557
+ const rel = config.get('_rel');
2558
+ if (rel) {
2559
+ return rel(el, eventName, callback, opts);
2560
+ }
2561
+ else if (config._rel) {
2562
+ return config._rel(el, eventName, callback, opts);
2563
+ }
2564
+ }
2565
+ }
2538
2566
  return el.removeEventListener(eventName, callback, opts);
2539
2567
  };
2540
2568
  /**
@@ -2678,18 +2706,8 @@ const shallowEqualStringMap = (map1, map2) => {
2678
2706
  }
2679
2707
  return true;
2680
2708
  };
2681
- const getNextSiblingOfType = (element) => {
2682
- let sibling = element.nextSibling;
2683
- while (sibling) {
2684
- if (sibling.nodeType === Node.ELEMENT_NODE && sibling !== null) {
2685
- return sibling;
2686
- }
2687
- sibling = sibling.nextSibling;
2688
- }
2689
- return null;
2690
- };
2691
2709
 
2692
- /* Ionicons v7.4.0, ES Modules */
2710
+ /* Ionicons v7.2.2, ES Modules */
2693
2711
  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>";
2694
2712
  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>";
2695
2713
  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>";
@@ -2698,7 +2716,7 @@ const caretUpSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000
2698
2716
  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>";
2699
2717
  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>";
2700
2718
  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>";
2701
- 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>";
2719
+ 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>";
2702
2720
  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>";
2703
2721
  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>";
2704
2722
  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>";
@@ -3195,9 +3213,12 @@ let accordionIds = 0;
3195
3213
  * @param message - The string message to be logged to the console.
3196
3214
  */
3197
3215
  const printIonWarning = (message, ...params) => {
3198
- return console.warn(`[Ionic Warning]: ${message}`, ...params);
3216
+ const logLevel = config.get('logLevel', "WARN" /* LogLevel.WARN */);
3217
+ if (["WARN" /* LogLevel.WARN */].includes(logLevel)) {
3218
+ return console.warn(`[Ionic Warning]: ${message}`, ...params);
3219
+ }
3199
3220
  };
3200
- /*
3221
+ /**
3201
3222
  * Logs an error to the console with an Ionic prefix
3202
3223
  * to indicate the library that is warning the developer.
3203
3224
  *
@@ -3205,7 +3226,10 @@ const printIonWarning = (message, ...params) => {
3205
3226
  * @param params - Additional arguments to supply to the console.error.
3206
3227
  */
3207
3228
  const printIonError = (message, ...params) => {
3208
- return console.error(`[Ionic Error]: ${message}`, ...params);
3229
+ const logLevel = config.get('logLevel', "ERROR" /* LogLevel.ERROR */);
3230
+ if (["ERROR" /* LogLevel.ERROR */, "WARN" /* LogLevel.WARN */].includes(logLevel)) {
3231
+ return console.error(`[Ionic Error]: ${message}`, ...params);
3232
+ }
3209
3233
  };
3210
3234
  /**
3211
3235
  * Prints an error informing developers that an implementation requires an element to be used
@@ -8469,6 +8493,7 @@ class Checkbox {
8469
8493
  this.labelPlacement = 'start';
8470
8494
  this.justify = undefined;
8471
8495
  this.alignment = undefined;
8496
+ this.required = false;
8472
8497
  }
8473
8498
  componentWillLoad() {
8474
8499
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
@@ -8480,11 +8505,11 @@ class Checkbox {
8480
8505
  }
8481
8506
  }
8482
8507
  render() {
8483
- const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
8508
+ const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
8484
8509
  const mode = getIonMode$1(this);
8485
8510
  const path = getSVGPath(mode, indeterminate);
8486
8511
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8487
- return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8512
+ return (hAsync(Host, { key: '07a5884062dd256b570e856270c74a5a09d2f2a5', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8488
8513
  [mode]: true,
8489
8514
  'in-item': hostContext('ion-item', el),
8490
8515
  'checkbox-checked': checked,
@@ -8494,10 +8519,10 @@ class Checkbox {
8494
8519
  [`checkbox-justify-${justify}`]: justify !== undefined,
8495
8520
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8496
8521
  [`checkbox-label-placement-${labelPlacement}`]: true,
8497
- }), 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: {
8522
+ }), 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: {
8498
8523
  'label-text-wrapper': true,
8499
8524
  'label-text-wrapper-hidden': el.textContent === '',
8500
- }, 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)))));
8525
+ }, 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)))));
8501
8526
  }
8502
8527
  getSVGPath(mode, indeterminate) {
8503
8528
  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" }));
@@ -8524,6 +8549,7 @@ class Checkbox {
8524
8549
  "labelPlacement": [1, "label-placement"],
8525
8550
  "justify": [1],
8526
8551
  "alignment": [1],
8552
+ "required": [4],
8527
8553
  "setFocus": [64]
8528
8554
  },
8529
8555
  "$listeners$": undefined,
@@ -15871,11 +15897,11 @@ class ItemDivider {
15871
15897
  }
15872
15898
  render() {
15873
15899
  const mode = getIonMode$1(this);
15874
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15900
+ return (hAsync(Host, { key: '7150b1a3a881c3c312db40821acb9830c2885ccf', class: createColorClasses$1(this.color, {
15875
15901
  [mode]: true,
15876
15902
  'item-divider-sticky': this.sticky,
15877
15903
  item: true,
15878
- }) }, 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" }))));
15904
+ }) }, 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" }))));
15879
15905
  }
15880
15906
  get el() { return getElement(this); }
15881
15907
  static get style() { return {
@@ -15907,7 +15933,7 @@ class ItemGroup {
15907
15933
  }
15908
15934
  render() {
15909
15935
  const mode = getIonMode$1(this);
15910
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15936
+ return (hAsync(Host, { key: 'de2a969ed0dda880bc560a325848b28d0287fdb9', role: "group", class: {
15911
15937
  [mode]: true,
15912
15938
  // Used internally for styling
15913
15939
  [`item-group-${mode}`]: true,
@@ -15975,12 +16001,12 @@ class ItemOption {
15975
16001
  href: this.href,
15976
16002
  target: this.target,
15977
16003
  };
15978
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
16004
+ return (hAsync(Host, { key: '1b7708dd178dc2c9280652ca3da38c84ba7b767f', onClick: this.onClick, class: createColorClasses$1(this.color, {
15979
16005
  [mode]: true,
15980
16006
  'item-option-disabled': disabled,
15981
16007
  'item-option-expandable': expandable,
15982
16008
  'ion-activatable': true,
15983
- }) }, 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' }))));
16009
+ }) }, 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' }))));
15984
16010
  }
15985
16011
  get el() { return getElement(this); }
15986
16012
  static get style() { return {
@@ -16027,7 +16053,7 @@ class ItemOptions {
16027
16053
  render() {
16028
16054
  const mode = getIonMode$1(this);
16029
16055
  const isEnd = isEndSide(this.side);
16030
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16056
+ return (hAsync(Host, { key: '7df4b71547524bf359c48e1b40ccbc44e850f632', class: {
16031
16057
  [mode]: true,
16032
16058
  // Used internally for styling
16033
16059
  [`item-options-${mode}`]: true,
@@ -16489,7 +16515,7 @@ class ItemSliding {
16489
16515
  }
16490
16516
  render() {
16491
16517
  const mode = getIonMode$1(this);
16492
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16518
+ return (hAsync(Host, { key: '22f83febcbc1bc27e4ddbd7fcbe590de60a10e89', class: {
16493
16519
  [mode]: true,
16494
16520
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16495
16521
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16598,13 +16624,13 @@ class Label {
16598
16624
  render() {
16599
16625
  const position = this.position;
16600
16626
  const mode = getIonMode$1(this);
16601
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16627
+ return (hAsync(Host, { key: '4da84c95351a74b547f8224ecfa66924d21398c5', class: createColorClasses$1(this.color, {
16602
16628
  [mode]: true,
16603
16629
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16604
16630
  [`label-${position}`]: position !== undefined,
16605
16631
  [`label-no-animate`]: this.noAnimate,
16606
16632
  'label-rtl': document.dir === 'rtl',
16607
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16633
+ }) }, hAsync("slot", { key: 'ea158ebb620275e5492965234d0ab925d391f919' })));
16608
16634
  }
16609
16635
  get el() { return getElement(this); }
16610
16636
  static get watchers() { return {
@@ -16706,10 +16732,10 @@ class ListHeader {
16706
16732
  render() {
16707
16733
  const { lines } = this;
16708
16734
  const mode = getIonMode$1(this);
16709
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16735
+ return (hAsync(Host, { key: '95ce2135e2b1ad4d7d6020b0fb9bc6e02b3c0851', class: createColorClasses$1(this.color, {
16710
16736
  [mode]: true,
16711
16737
  [`list-header-lines-${lines}`]: lines !== undefined,
16712
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16738
+ }) }, hAsync("div", { key: '3065b0a094bc31a90518898a5126a813c8a33816', class: "list-header-inner" }, hAsync("slot", { key: 'fe15c87d7867f3e5d8185645c49c0228496697b8' }))));
16713
16739
  }
16714
16740
  static get style() { return {
16715
16741
  ios: IonListHeaderIosStyle0,
@@ -16978,9 +17004,9 @@ class Loading {
16978
17004
  * Otherwise, don't set aria-labelledby.
16979
17005
  */
16980
17006
  const ariaLabelledBy = message !== undefined ? msgId : null;
16981
- return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17007
+ return (hAsync(Host, Object.assign({ key: 'd6066c8b56b1fe4b597a243a7dab191ef0d21286', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
16982
17008
  zIndex: `${40000 + this.overlayIndex}`,
16983
- }, 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" })));
17009
+ }, 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" })));
16984
17010
  }
16985
17011
  get el() { return getElement(this); }
16986
17012
  static get watchers() { return {
@@ -17988,14 +18014,14 @@ class Menu {
17988
18014
  * the ionBackButton listener in the menu controller
17989
18015
  * will handle closing the menu when Escape is pressed.
17990
18016
  */
17991
- return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18017
+ return (hAsync(Host, { key: '342db8551d26604128b29b21d2d8c37593972ed9', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
17992
18018
  [mode]: true,
17993
18019
  [`menu-type-${type}`]: true,
17994
18020
  'menu-enabled': !disabled,
17995
18021
  [`menu-side-${side}`]: true,
17996
18022
  'menu-pane-visible': isPaneVisible,
17997
18023
  'split-pane-side': hostContext('ion-split-pane', el),
17998
- } }, 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" })));
18024
+ } }, 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" })));
17999
18025
  }
18000
18026
  get el() { return getElement(this); }
18001
18027
  static get watchers() { return {
@@ -18098,7 +18124,7 @@ class MenuButton {
18098
18124
  type: this.type,
18099
18125
  };
18100
18126
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18101
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18127
+ return (hAsync(Host, { key: '3cde3704f28eb275f4a5ff2985bbb68c1024e79c', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18102
18128
  [mode]: true,
18103
18129
  button: true, // ion-buttons target .button
18104
18130
  'menu-button-hidden': hidden,
@@ -18107,7 +18133,7 @@ class MenuButton {
18107
18133
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18108
18134
  'ion-activatable': true,
18109
18135
  'ion-focusable': true,
18110
- }) }, 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" }))));
18136
+ }) }, 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" }))));
18111
18137
  }
18112
18138
  get el() { return getElement(this); }
18113
18139
  static get style() { return {
@@ -18156,10 +18182,10 @@ class MenuToggle {
18156
18182
  render() {
18157
18183
  const mode = getIonMode$1(this);
18158
18184
  const hidden = this.autoHide && !this.visible;
18159
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18185
+ return (hAsync(Host, { key: '88e88fa13ac7f10ba3acfe378bd11cda0c7e2749', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18160
18186
  [mode]: true,
18161
18187
  'menu-toggle-hidden': hidden,
18162
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18188
+ } }, hAsync("slot", { key: '0a14c7b63eda64702d2fd1b4bc7db4809892842d' })));
18163
18189
  }
18164
18190
  static get style() { return IonMenuToggleStyle0; }
18165
18191
  static get cmpMeta() { return {
@@ -18999,7 +19025,7 @@ const computeDuration = (remaining, velocity) => {
18999
19025
  };
19000
19026
 
19001
19027
  const createSheetEnterAnimation = (opts) => {
19002
- const { currentBreakpoint, backdropBreakpoint } = opts;
19028
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
19003
19029
  /**
19004
19030
  * If the backdropBreakpoint is undefined, then the backdrop
19005
19031
  * should always fade in. If the backdropBreakpoint came before the
@@ -19019,7 +19045,16 @@ const createSheetEnterAnimation = (opts) => {
19019
19045
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
19020
19046
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
19021
19047
  ]);
19022
- return { wrapperAnimation, backdropAnimation };
19048
+ /**
19049
+ * This allows the content to be scrollable at any breakpoint.
19050
+ */
19051
+ const contentAnimation = !expandToScroll
19052
+ ? createAnimation('contentAnimation').keyframes([
19053
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
19054
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
19055
+ ])
19056
+ : undefined;
19057
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
19023
19058
  };
19024
19059
  const createSheetLeaveAnimation = (opts) => {
19025
19060
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -19054,22 +19089,68 @@ const createEnterAnimation$1 = () => {
19054
19089
  })
19055
19090
  .afterClearStyles(['pointer-events']);
19056
19091
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
19057
- return { backdropAnimation, wrapperAnimation };
19092
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19058
19093
  };
19059
19094
  /**
19060
19095
  * iOS Modal Enter Animation for the Card presentation style
19061
19096
  */
19062
19097
  const iosEnterAnimation$3 = (baseEl, opts) => {
19063
- const { presentingEl, currentBreakpoint } = opts;
19098
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19064
19099
  const root = getElementRoot(baseEl);
19065
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19100
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19066
19101
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19067
19102
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
19103
+ // The content animation is only added if scrolling is enabled for
19104
+ // all the breakpoints.
19105
+ !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19068
19106
  const baseAnimation = createAnimation('entering-base')
19069
19107
  .addElement(baseEl)
19070
19108
  .easing('cubic-bezier(0.32,0.72,0,1)')
19071
19109
  .duration(500)
19072
- .addAnimation(wrapperAnimation);
19110
+ .addAnimation([wrapperAnimation])
19111
+ .beforeAddWrite(() => {
19112
+ if (expandToScroll) {
19113
+ // Scroll can only be done when the modal is fully expanded.
19114
+ return;
19115
+ }
19116
+ /**
19117
+ * There are some browsers that causes flickering when
19118
+ * dragging the content when scroll is enabled at every
19119
+ * breakpoint. This is due to the wrapper element being
19120
+ * transformed off the screen and having a snap animation.
19121
+ *
19122
+ * A workaround is to clone the footer element and append
19123
+ * it outside of the wrapper element. This way, the footer
19124
+ * is still visible and the drag can be done without
19125
+ * flickering. The original footer is hidden until the modal
19126
+ * is dismissed. This maintains the animation of the footer
19127
+ * when the modal is dismissed.
19128
+ *
19129
+ * The workaround needs to be done before the animation starts
19130
+ * so there are no flickering issues.
19131
+ */
19132
+ const ionFooter = baseEl.querySelector('ion-footer');
19133
+ /**
19134
+ * This check is needed to prevent more than one footer
19135
+ * from being appended to the shadow root.
19136
+ * Otherwise, iOS and MD enter animations would append
19137
+ * the footer twice.
19138
+ */
19139
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19140
+ if (ionFooter && !ionFooterAlreadyAppended) {
19141
+ const footerHeight = ionFooter.clientHeight;
19142
+ const clonedFooter = ionFooter.cloneNode(true);
19143
+ baseEl.shadowRoot.appendChild(clonedFooter);
19144
+ ionFooter.style.setProperty('display', 'none');
19145
+ ionFooter.setAttribute('aria-hidden', 'true');
19146
+ // Padding is added to prevent some content from being hidden.
19147
+ const page = baseEl.querySelector('.ion-page');
19148
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19149
+ }
19150
+ });
19151
+ if (contentAnimation) {
19152
+ baseAnimation.addAnimation(contentAnimation);
19153
+ }
19073
19154
  if (presentingEl) {
19074
19155
  const isMobile = window.innerWidth < 768;
19075
19156
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19147,7 +19228,7 @@ const createLeaveAnimation$1 = () => {
19147
19228
  * iOS Modal Leave Animation
19148
19229
  */
19149
19230
  const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19150
- const { presentingEl, currentBreakpoint } = opts;
19231
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19151
19232
  const root = getElementRoot(baseEl);
19152
19233
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
19153
19234
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -19156,7 +19237,29 @@ const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19156
19237
  .addElement(baseEl)
19157
19238
  .easing('cubic-bezier(0.32,0.72,0,1)')
19158
19239
  .duration(duration)
19159
- .addAnimation(wrapperAnimation);
19240
+ .addAnimation(wrapperAnimation)
19241
+ .beforeAddWrite(() => {
19242
+ if (expandToScroll) {
19243
+ // Scroll can only be done when the modal is fully expanded.
19244
+ return;
19245
+ }
19246
+ /**
19247
+ * If expandToScroll is disabled, we need to swap
19248
+ * the visibility to the original, so the footer
19249
+ * dismisses with the modal and doesn't stay
19250
+ * until the modal is removed from the DOM.
19251
+ */
19252
+ const ionFooter = baseEl.querySelector('ion-footer');
19253
+ if (ionFooter) {
19254
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19255
+ ionFooter.style.removeProperty('display');
19256
+ ionFooter.removeAttribute('aria-hidden');
19257
+ clonedFooter.style.setProperty('display', 'none');
19258
+ clonedFooter.setAttribute('aria-hidden', 'true');
19259
+ const page = baseEl.querySelector('.ion-page');
19260
+ page.style.removeProperty('padding-bottom');
19261
+ }
19262
+ });
19160
19263
  if (presentingEl) {
19161
19264
  const isMobile = window.innerWidth < 768;
19162
19265
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19234,22 +19337,69 @@ const createEnterAnimation = () => {
19234
19337
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
19235
19338
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
19236
19339
  ]);
19237
- return { backdropAnimation, wrapperAnimation };
19340
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19238
19341
  };
19239
19342
  /**
19240
19343
  * Md Modal Enter Animation
19241
19344
  */
19242
19345
  const mdEnterAnimation$2 = (baseEl, opts) => {
19243
- const { currentBreakpoint } = opts;
19346
+ const { currentBreakpoint, expandToScroll } = opts;
19244
19347
  const root = getElementRoot(baseEl);
19245
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19348
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19246
19349
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19247
19350
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19248
- return createAnimation()
19351
+ // The content animation is only added if scrolling is enabled for
19352
+ // all the breakpoints.
19353
+ expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19354
+ const baseAnimation = createAnimation()
19249
19355
  .addElement(baseEl)
19250
19356
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
19251
19357
  .duration(280)
19252
- .addAnimation([backdropAnimation, wrapperAnimation]);
19358
+ .addAnimation([backdropAnimation, wrapperAnimation])
19359
+ .beforeAddWrite(() => {
19360
+ if (expandToScroll) {
19361
+ // Scroll can only be done when the modal is fully expanded.
19362
+ return;
19363
+ }
19364
+ /**
19365
+ * There are some browsers that causes flickering when
19366
+ * dragging the content when scroll is enabled at every
19367
+ * breakpoint. This is due to the wrapper element being
19368
+ * transformed off the screen and having a snap animation.
19369
+ *
19370
+ * A workaround is to clone the footer element and append
19371
+ * it outside of the wrapper element. This way, the footer
19372
+ * is still visible and the drag can be done without
19373
+ * flickering. The original footer is hidden until the modal
19374
+ * is dismissed. This maintains the animation of the footer
19375
+ * when the modal is dismissed.
19376
+ *
19377
+ * The workaround needs to be done before the animation starts
19378
+ * so there are no flickering issues.
19379
+ */
19380
+ const ionFooter = baseEl.querySelector('ion-footer');
19381
+ /**
19382
+ * This check is needed to prevent more than one footer
19383
+ * from being appended to the shadow root.
19384
+ * Otherwise, iOS and MD enter animations would append
19385
+ * the footer twice.
19386
+ */
19387
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19388
+ if (ionFooter && !ionFooterAlreadyAppended) {
19389
+ const footerHeight = ionFooter.clientHeight;
19390
+ const clonedFooter = ionFooter.cloneNode(true);
19391
+ baseEl.shadowRoot.appendChild(clonedFooter);
19392
+ ionFooter.style.setProperty('display', 'none');
19393
+ ionFooter.setAttribute('aria-hidden', 'true');
19394
+ // Padding is added to prevent some content from being hidden.
19395
+ const page = baseEl.querySelector('.ion-page');
19396
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19397
+ }
19398
+ });
19399
+ if (contentAnimation) {
19400
+ baseAnimation.addAnimation(contentAnimation);
19401
+ }
19402
+ return baseAnimation;
19253
19403
  };
19254
19404
 
19255
19405
  const createLeaveAnimation = () => {
@@ -19264,18 +19414,41 @@ const createLeaveAnimation = () => {
19264
19414
  * Md Modal Leave Animation
19265
19415
  */
19266
19416
  const mdLeaveAnimation$2 = (baseEl, opts) => {
19267
- const { currentBreakpoint } = opts;
19417
+ const { currentBreakpoint, expandToScroll } = opts;
19268
19418
  const root = getElementRoot(baseEl);
19269
19419
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
19270
19420
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19271
19421
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19272
- return createAnimation()
19422
+ const baseAnimation = createAnimation()
19273
19423
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
19274
19424
  .duration(200)
19275
- .addAnimation([backdropAnimation, wrapperAnimation]);
19425
+ .addAnimation([backdropAnimation, wrapperAnimation])
19426
+ .beforeAddWrite(() => {
19427
+ if (expandToScroll) {
19428
+ // Scroll can only be done when the modal is fully expanded.
19429
+ return;
19430
+ }
19431
+ /**
19432
+ * If expandToScroll is disabled, we need to swap
19433
+ * the visibility to the original, so the footer
19434
+ * dismisses with the modal and doesn't stay
19435
+ * until the modal is removed from the DOM.
19436
+ */
19437
+ const ionFooter = baseEl.querySelector('ion-footer');
19438
+ if (ionFooter) {
19439
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19440
+ ionFooter.style.removeProperty('display');
19441
+ ionFooter.removeAttribute('aria-hidden');
19442
+ clonedFooter.style.setProperty('display', 'none');
19443
+ clonedFooter.setAttribute('aria-hidden', 'true');
19444
+ const page = baseEl.querySelector('.ion-page');
19445
+ page.style.removeProperty('padding-bottom');
19446
+ }
19447
+ });
19448
+ return baseAnimation;
19276
19449
  };
19277
19450
 
19278
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19451
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19279
19452
  // Defaults for the sheet swipe animation
19280
19453
  const defaultBackdrop = [
19281
19454
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -19292,6 +19465,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19292
19465
  { offset: 1, transform: 'translateY(100%)' },
19293
19466
  ],
19294
19467
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
19468
+ CONTENT_KEYFRAMES: [
19469
+ { offset: 0, maxHeight: '100%' },
19470
+ { offset: 1, maxHeight: '0%' },
19471
+ ],
19295
19472
  };
19296
19473
  const contentEl = baseEl.querySelector('ion-content');
19297
19474
  const height = wrapperEl.clientHeight;
@@ -19299,10 +19476,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19299
19476
  let offset = 0;
19300
19477
  let canDismissBlocksGesture = false;
19301
19478
  const canDismissMaxStep = 0.95;
19302
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19303
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19304
19479
  const maxBreakpoint = breakpoints[breakpoints.length - 1];
19305
19480
  const minBreakpoint = breakpoints[0];
19481
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19482
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19483
+ const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
19306
19484
  const enableBackdrop = () => {
19307
19485
  baseEl.style.setProperty('pointer-events', 'auto');
19308
19486
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -19325,6 +19503,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19325
19503
  */
19326
19504
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
19327
19505
  };
19506
+ /**
19507
+ * Toggles the visible modal footer when `expandToScroll` is disabled.
19508
+ * @param footer The footer to show.
19509
+ */
19510
+ const swapFooterVisibility = (footer) => {
19511
+ const originalFooter = baseEl.querySelector('ion-footer');
19512
+ if (!originalFooter) {
19513
+ return;
19514
+ }
19515
+ const clonedFooter = wrapperEl.nextElementSibling;
19516
+ const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
19517
+ const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
19518
+ footerToShow.style.removeProperty('display');
19519
+ footerToShow.removeAttribute('aria-hidden');
19520
+ const page = baseEl.querySelector('.ion-page');
19521
+ if (footer === 'original') {
19522
+ page.style.removeProperty('padding-bottom');
19523
+ }
19524
+ else {
19525
+ const pagePadding = footerToShow.clientHeight;
19526
+ page.style.setProperty('padding-bottom', `${pagePadding}px`);
19527
+ }
19528
+ footerToHide.style.setProperty('display', 'none');
19529
+ footerToHide.setAttribute('aria-hidden', 'true');
19530
+ };
19328
19531
  /**
19329
19532
  * After the entering animation completes,
19330
19533
  * we need to set the animation to go from
@@ -19336,6 +19539,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19336
19539
  if (wrapperAnimation && backdropAnimation) {
19337
19540
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19338
19541
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19542
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19339
19543
  animation.progressStart(true, 1 - currentBreakpoint);
19340
19544
  /**
19341
19545
  * If backdrop is not enabled, then content
@@ -19352,7 +19556,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19352
19556
  disableBackdrop();
19353
19557
  }
19354
19558
  }
19355
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
19559
+ if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
19356
19560
  contentEl.scrollY = false;
19357
19561
  }
19358
19562
  const canStart = (detail) => {
@@ -19366,6 +19570,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19366
19570
  */
19367
19571
  const contentEl = findClosestIonContent(detail.event.target);
19368
19572
  currentBreakpoint = getCurrentBreakpoint();
19573
+ /**
19574
+ * If we have expandToScroll disabled, we should not allow the swipe gesture to start
19575
+ * if the content is being swiped.
19576
+ */
19577
+ if (!expandToScroll && contentEl) {
19578
+ return false;
19579
+ }
19369
19580
  if (currentBreakpoint === 1 && contentEl) {
19370
19581
  /**
19371
19582
  * The modal should never swipe to close on the content with a refresher.
@@ -19396,6 +19607,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19396
19607
  * Remove undefined check
19397
19608
  */
19398
19609
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
19610
+ /**
19611
+ * If expandToScroll is disabled, we need to swap
19612
+ * the footer visibility to the original, so if the modal
19613
+ * is dismissed, the footer dismisses with the modal
19614
+ * and doesn't stay on the screen after the modal is gone.
19615
+ */
19616
+ if (!expandToScroll) {
19617
+ swapFooterVisibility('original');
19618
+ }
19399
19619
  /**
19400
19620
  * If we are pulling down, then it is possible we are pulling on the content.
19401
19621
  * We do not want scrolling to happen at the same time as the gesture.
@@ -19511,6 +19731,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19511
19731
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
19512
19732
  },
19513
19733
  ]);
19734
+ if (contentAnimation) {
19735
+ /**
19736
+ * The modal content should scroll at any breakpoint when expandToScroll
19737
+ * is disabled. In order to do this, the content needs to be completely
19738
+ * viewable so scrolling can access everything. Otherwise, the default
19739
+ * behavior would show the content off the screen and only allow
19740
+ * scrolling when the sheet is fully expanded.
19741
+ */
19742
+ contentAnimation.keyframes([
19743
+ { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
19744
+ { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
19745
+ ]);
19746
+ }
19514
19747
  animation.progressStep(0);
19515
19748
  }
19516
19749
  /**
@@ -19518,6 +19751,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19518
19751
  * snapping animation completes.
19519
19752
  */
19520
19753
  gesture.enable(false);
19754
+ /**
19755
+ * If expandToScroll is disabled, we need to swap
19756
+ * the footer visibility to the cloned one so the footer
19757
+ * doesn't flicker when the sheet's height is animated.
19758
+ */
19759
+ if (!expandToScroll && shouldRemainOpen) {
19760
+ swapFooterVisibility('cloned');
19761
+ }
19521
19762
  if (shouldPreventDismiss) {
19522
19763
  handleCanDismiss(baseEl, animation);
19523
19764
  }
@@ -19525,13 +19766,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19525
19766
  onDismiss();
19526
19767
  }
19527
19768
  /**
19528
- * If the sheet is going to be fully expanded then we should enable
19529
- * scrolling immediately. The sheet modal animation takes ~500ms to finish
19530
- * so if we wait until then there is a visible delay for when scrolling is
19531
- * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
19532
- * as the gesture is released, so we align with that.
19769
+ * Enables scrolling immediately if the sheet is about to fully expand
19770
+ * or if it allows scrolling at any breakpoint. Without this, there would
19771
+ * be a ~500ms delay while the modal animation completes, causing a
19772
+ * noticeable lag. Native iOS allows scrolling as soon as the gesture is
19773
+ * released, so we align with that behavior.
19533
19774
  */
19534
- if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
19775
+ if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
19535
19776
  contentEl.scrollY = true;
19536
19777
  }
19537
19778
  return new Promise((resolve) => {
@@ -19549,6 +19790,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19549
19790
  raf(() => {
19550
19791
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19551
19792
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19793
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19552
19794
  animation.progressStart(true, 1 - snapToBreakpoint);
19553
19795
  currentBreakpoint = snapToBreakpoint;
19554
19796
  onBreakpointChange(currentBreakpoint);
@@ -19601,10 +19843,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19601
19843
  };
19602
19844
  };
19603
19845
 
19604
- 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}";
19846
+ 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}";
19605
19847
  var IonModalIosStyle0 = modalIosCss;
19606
19848
 
19607
- 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}";
19849
+ 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}";
19608
19850
  var IonModalMdStyle0 = modalMdCss;
19609
19851
 
19610
19852
  // TODO(FW-2832): types
@@ -19683,6 +19925,7 @@ class Modal {
19683
19925
  this.enterAnimation = undefined;
19684
19926
  this.leaveAnimation = undefined;
19685
19927
  this.breakpoints = undefined;
19928
+ this.expandToScroll = true;
19686
19929
  this.initialBreakpoint = undefined;
19687
19930
  this.backdropBreakpoint = 0;
19688
19931
  this.handle = undefined;
@@ -19898,6 +20141,7 @@ class Modal {
19898
20141
  presentingEl: presentingElement,
19899
20142
  currentBreakpoint: this.initialBreakpoint,
19900
20143
  backdropBreakpoint: this.backdropBreakpoint,
20144
+ expandToScroll: this.expandToScroll,
19901
20145
  });
19902
20146
  /* tslint:disable-next-line */
19903
20147
  if (typeof window !== 'undefined') {
@@ -19948,7 +20192,10 @@ class Modal {
19948
20192
  // should be in the DOM and referenced by now, except
19949
20193
  // for the presenting el
19950
20194
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
19951
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
20195
+ const ani = (this.animation = animationBuilder(el, {
20196
+ presentingEl: this.presentingElement,
20197
+ expandToScroll: this.expandToScroll,
20198
+ }));
19952
20199
  const contentEl = findIonContent(el);
19953
20200
  if (!contentEl) {
19954
20201
  printIonContentErrorMsg(el);
@@ -19993,9 +20240,10 @@ class Modal {
19993
20240
  presentingEl: this.presentingElement,
19994
20241
  currentBreakpoint: initialBreakpoint,
19995
20242
  backdropBreakpoint,
20243
+ expandToScroll: this.expandToScroll,
19996
20244
  }));
19997
20245
  ani.progressStart(true, 1);
19998
- 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) => {
20246
+ 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) => {
19999
20247
  if (this.currentBreakpoint !== breakpoint) {
20000
20248
  this.currentBreakpoint = breakpoint;
20001
20249
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -20073,6 +20321,7 @@ class Modal {
20073
20321
  presentingEl: presentingElement,
20074
20322
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
20075
20323
  backdropBreakpoint: this.backdropBreakpoint,
20324
+ expandToScroll: this.expandToScroll,
20076
20325
  });
20077
20326
  if (dismissed) {
20078
20327
  const { delegate } = this.getDelegate();
@@ -20158,23 +20407,23 @@ class Modal {
20158
20407
  return true;
20159
20408
  }
20160
20409
  render() {
20161
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
20410
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
20162
20411
  const showHandle = handle !== false && isSheetModal;
20163
20412
  const mode = getIonMode$1(this);
20164
20413
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20165
20414
  const isHandleCycle = handleBehavior === 'cycle';
20166
- return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20415
+ return (hAsync(Host, Object.assign({ key: '8b74b6fa151995ab86cdeb989e338ee45c687f6d', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20167
20416
  zIndex: `${20000 + this.overlayIndex}`,
20168
- }, 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',
20417
+ }, 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',
20169
20418
  /*
20170
20419
  role and aria-modal must be used on the
20171
20420
  same element. They must also be set inside the
20172
20421
  shadow DOM otherwise ion-button will not be highlighted
20173
20422
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20174
20423
  */
20175
- 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",
20424
+ 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",
20176
20425
  // Prevents the handle from receiving keyboard focus when it does not cycle
20177
- 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' }))));
20426
+ 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' }))));
20178
20427
  }
20179
20428
  get el() { return getElement(this); }
20180
20429
  static get watchers() { return {
@@ -20196,6 +20445,7 @@ class Modal {
20196
20445
  "enterAnimation": [16],
20197
20446
  "leaveAnimation": [16],
20198
20447
  "breakpoints": [16],
20448
+ "expandToScroll": [4, "expand-to-scroll"],
20199
20449
  "initialBreakpoint": [2, "initial-breakpoint"],
20200
20450
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
20201
20451
  "handle": [4],
@@ -21123,7 +21373,7 @@ class Nav {
21123
21373
  }
21124
21374
  }
21125
21375
  render() {
21126
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21376
+ return hAsync("slot", { key: '71e9b5d07fc90ca5534197a63a003a4154aabd59' });
21127
21377
  }
21128
21378
  get el() { return getElement(this); }
21129
21379
  static get watchers() { return {
@@ -21196,7 +21446,7 @@ class NavLink {
21196
21446
  this.routerAnimation = undefined;
21197
21447
  }
21198
21448
  render() {
21199
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21449
+ return hAsync(Host, { key: '9ba170d1b10e08e8a6b5e6a30d363871d455a0a9', onClick: this.onClick });
21200
21450
  }
21201
21451
  get el() { return getElement(this); }
21202
21452
  static get cmpMeta() { return {
@@ -21230,9 +21480,9 @@ class Note {
21230
21480
  }
21231
21481
  render() {
21232
21482
  const mode = getIonMode$1(this);
21233
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21483
+ return (hAsync(Host, { key: '3c3d9b2aa805c0bc1fdc6270a2bbf4dcc1b96c5b', class: createColorClasses$1(this.color, {
21234
21484
  [mode]: true,
21235
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21485
+ }) }, hAsync("slot", { key: '39e34682009fcb705ecafe51825162734bdf14d3' })));
21236
21486
  }
21237
21487
  static get style() { return {
21238
21488
  ios: IonNoteIosStyle0,
@@ -21997,11 +22247,11 @@ class Picker {
21997
22247
  render() {
21998
22248
  const { htmlAttributes } = this;
21999
22249
  const mode = getIonMode$1(this);
22000
- return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22250
+ return (hAsync(Host, Object.assign({ key: 'dc03f252e3b59a94bc7132c953d2d3b36b62237e', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22001
22251
  zIndex: `${20000 + this.overlayIndex}`,
22002
22252
  }, class: Object.assign({ [mode]: true,
22003
22253
  // Used internally for styling
22004
- [`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" })));
22254
+ [`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" })));
22005
22255
  }
22006
22256
  get el() { return getElement(this); }
22007
22257
  static get watchers() { return {
@@ -22976,9 +23226,9 @@ class PickerColumnCmp {
22976
23226
  render() {
22977
23227
  const col = this.col;
22978
23228
  const mode = getIonMode$1(this);
22979
- 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: {
23229
+ 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: {
22980
23230
  'max-width': this.col.columnWidth,
22981
- } }, 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))));
23231
+ } }, 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))));
22982
23232
  }
22983
23233
  get el() { return getElement(this); }
22984
23234
  static get watchers() { return {
@@ -23082,10 +23332,10 @@ class PickerColumnOption {
23082
23332
  render() {
23083
23333
  const { color, disabled, ariaLabel } = this;
23084
23334
  const mode = getIonMode$1(this);
23085
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23335
+ return (hAsync(Host, { key: 'c1353e99c2aa19c0e3ddbe433557ed18e72e1c66', class: createColorClasses$1(color, {
23086
23336
  [mode]: true,
23087
23337
  ['option-disabled']: disabled,
23088
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23338
+ }) }, hAsync("button", { key: 'b4ee62ecf7458a07a56e8aa494485766a87a3fcb', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '9ab1e4700c27103b676670a4b3521c183c6ab83d' }))));
23089
23339
  }
23090
23340
  get el() { return getElement(this); }
23091
23341
  static get watchers() { return {
@@ -24399,9 +24649,9 @@ class Popover {
24399
24649
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24400
24650
  const desktop = isPlatform('desktop');
24401
24651
  const enableArrow = arrow && !parentPopover;
24402
- return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24652
+ return (hAsync(Host, Object.assign({ key: '48f108a9b74f121559626889dd5a1fcccf38fc3d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24403
24653
  zIndex: `${20000 + this.overlayIndex}`,
24404
- }, 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' })))));
24654
+ }, 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' })))));
24405
24655
  }
24406
24656
  get el() { return getElement(this); }
24407
24657
  static get watchers() { return {
@@ -24493,7 +24743,7 @@ class ProgressBar {
24493
24743
  const mode = getIonMode$1(this);
24494
24744
  // If the progress is displayed as a solid bar.
24495
24745
  const progressSolid = buffer === 1;
24496
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24746
+ return (hAsync(Host, { key: 'd60eeaa18aaee607e083c0ef9d0de8178d47c4cd', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24497
24747
  [mode]: true,
24498
24748
  [`progress-bar-${type}`]: true,
24499
24749
  'progress-paused': paused,
@@ -24663,7 +24913,7 @@ class Radio {
24663
24913
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24664
24914
  const mode = getIonMode$1(this);
24665
24915
  const inItem = hostContext('ion-item', el);
24666
- return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24916
+ return (hAsync(Host, { key: '8badd4aec277addc0793e14df21f73bb345e99b7', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24667
24917
  [mode]: true,
24668
24918
  'in-item': inItem,
24669
24919
  'radio-checked': checked,
@@ -24674,10 +24924,10 @@ class Radio {
24674
24924
  // Focus and active styling should not apply when the radio is in an item
24675
24925
  'ion-activatable': !inItem,
24676
24926
  'ion-focusable': !inItem,
24677
- }), 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: {
24927
+ }), 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: {
24678
24928
  'label-text-wrapper': true,
24679
24929
  'label-text-wrapper-hidden': !hasLabel,
24680
- }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24930
+ }, part: "label" }, hAsync("slot", { key: '331f3dc2ce5f6ed8f124fc4560f92e0f7c668a85' })), hAsync("div", { key: '473bd4aaf448753e385f2dda3fddc9f56379aa19', class: "native-wrapper" }, this.renderRadioControl()))));
24681
24931
  }
24682
24932
  get el() { return getElement(this); }
24683
24933
  static get watchers() { return {
@@ -24710,12 +24960,20 @@ class Radio {
24710
24960
  }
24711
24961
  let radioButtonIds = 0;
24712
24962
 
24963
+ 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}";
24964
+ var IonRadioGroupIosStyle0 = radioGroupIosCss;
24965
+
24966
+ 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}";
24967
+ var IonRadioGroupMdStyle0 = radioGroupMdCss;
24968
+
24713
24969
  class RadioGroup {
24714
24970
  constructor(hostRef) {
24715
24971
  registerInstance(this, hostRef);
24716
24972
  this.ionChange = createEvent(this, "ionChange", 7);
24717
24973
  this.ionValueChange = createEvent(this, "ionValueChange", 7);
24718
24974
  this.inputId = `ion-rg-${radioGroupIds++}`;
24975
+ this.helperTextId = `${this.inputId}-helper-text`;
24976
+ this.errorTextId = `${this.inputId}-error-text`;
24719
24977
  this.labelId = `${this.inputId}-lbl`;
24720
24978
  this.setRadioTabindex = (value) => {
24721
24979
  const radios = this.getRadios();
@@ -24767,6 +25025,8 @@ class RadioGroup {
24767
25025
  this.compareWith = undefined;
24768
25026
  this.name = this.inputId;
24769
25027
  this.value = undefined;
25028
+ this.helperText = undefined;
25029
+ this.errorText = undefined;
24770
25030
  }
24771
25031
  valueChanged(value) {
24772
25032
  this.setRadioTabindex(value);
@@ -24865,24 +25125,51 @@ class RadioGroup {
24865
25125
  const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24866
25126
  radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24867
25127
  }
25128
+ /**
25129
+ * Renders the helper text or error text values
25130
+ */
25131
+ renderHintText() {
25132
+ const { helperText, errorText, helperTextId, errorTextId } = this;
25133
+ const hasHintText = !!helperText || !!errorText;
25134
+ if (!hasHintText) {
25135
+ return;
25136
+ }
25137
+ return (hAsync("div", { class: "radio-group-top" }, hAsync("div", { id: helperTextId, class: "helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text" }, errorText)));
25138
+ }
25139
+ getHintTextID() {
25140
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
25141
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
25142
+ return errorTextId;
25143
+ }
25144
+ if (helperText) {
25145
+ return helperTextId;
25146
+ }
25147
+ return undefined;
25148
+ }
24868
25149
  render() {
24869
25150
  const { label, labelId, el, name, value } = this;
24870
25151
  const mode = getIonMode$1(this);
24871
25152
  renderHiddenInput(true, el, name, value, false);
24872
- return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
25153
+ 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' }))));
24873
25154
  }
24874
25155
  get el() { return getElement(this); }
24875
25156
  static get watchers() { return {
24876
25157
  "value": ["valueChanged"]
24877
25158
  }; }
25159
+ static get style() { return {
25160
+ ios: IonRadioGroupIosStyle0,
25161
+ md: IonRadioGroupMdStyle0
25162
+ }; }
24878
25163
  static get cmpMeta() { return {
24879
- "$flags$": 0,
25164
+ "$flags$": 36,
24880
25165
  "$tagName$": "ion-radio-group",
24881
25166
  "$members$": {
24882
25167
  "allowEmptySelection": [4, "allow-empty-selection"],
24883
25168
  "compareWith": [1, "compare-with"],
24884
25169
  "name": [1],
24885
25170
  "value": [1032],
25171
+ "helperText": [1, "helper-text"],
25172
+ "errorText": [1, "error-text"],
24886
25173
  "setFocus": [64]
24887
25174
  },
24888
25175
  "$listeners$": [[4, "keydown", "onKeydown"]],
@@ -25502,7 +25789,7 @@ class Range {
25502
25789
  const needsEndAdjustment = inItem && !hasEndContent;
25503
25790
  const mode = getIonMode$1(this);
25504
25791
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25505
- return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25792
+ return (hAsync(Host, { key: 'efb8663a61f36a9db4ef69ece3a22e1424acbc28', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25506
25793
  [mode]: true,
25507
25794
  'in-item': inItem,
25508
25795
  'range-disabled': disabled,
@@ -25511,10 +25798,10 @@ class Range {
25511
25798
  [`range-label-placement-${labelPlacement}`]: true,
25512
25799
  'range-item-start-adjustment': needsStartAdjustment,
25513
25800
  'range-item-end-adjustment': needsEndAdjustment,
25514
- }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25801
+ }) }, hAsync("label", { key: '040be16d5a2b4c1dded852d45a82e7505dc8fb30', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'd2ba909a1177dd27c1789f0d3f8f012a39f216c6', class: {
25515
25802
  'label-text-wrapper': true,
25516
25803
  'label-text-wrapper-hidden': !hasLabel,
25517
- }, 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" })))));
25804
+ }, 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" })))));
25518
25805
  }
25519
25806
  get el() { return getElement(this); }
25520
25807
  static get watchers() { return {
@@ -26415,7 +26702,7 @@ class Refresher {
26415
26702
  }
26416
26703
  render() {
26417
26704
  const mode = getIonMode$1(this);
26418
- return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26705
+ return (hAsync(Host, { key: '4c36bffbfa32ef1bd28a60f4455c125842880659', slot: "fixed", class: {
26419
26706
  [mode]: true,
26420
26707
  // Used internally for styling
26421
26708
  [`refresher-${mode}`]: true,
@@ -26643,7 +26930,7 @@ class RefresherContent {
26643
26930
  const pullingIcon = this.pullingIcon;
26644
26931
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26645
26932
  const mode = getIonMode$1(this);
26646
- 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())));
26933
+ 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())));
26647
26934
  }
26648
26935
  get el() { return getElement(this); }
26649
26936
  static get cmpMeta() { return {
@@ -26686,7 +26973,7 @@ class Reorder {
26686
26973
  render() {
26687
26974
  const mode = getIonMode$1(this);
26688
26975
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26689
- 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" }))));
26976
+ 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" }))));
26690
26977
  }
26691
26978
  get el() { return getElement(this); }
26692
26979
  static get style() { return {
@@ -26940,7 +27227,7 @@ class ReorderGroup {
26940
27227
  }
26941
27228
  render() {
26942
27229
  const mode = getIonMode$1(this);
26943
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
27230
+ return (hAsync(Host, { key: '6ca009dd65302a914d459aec638e62977440db20', class: {
26944
27231
  [mode]: true,
26945
27232
  'reorder-enabled': !this.disabled,
26946
27233
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -27048,7 +27335,7 @@ class RippleEffect {
27048
27335
  }
27049
27336
  render() {
27050
27337
  const mode = getIonMode$1(this);
27051
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
27338
+ return (hAsync(Host, { key: '40c7f73e7f5f67e29f83e1236a61c6e1c9943c42', role: "presentation", class: {
27052
27339
  [mode]: true,
27053
27340
  unbounded: this.unbounded,
27054
27341
  } }));
@@ -27990,10 +28277,10 @@ class RouterLink {
27990
28277
  rel: this.rel,
27991
28278
  target: this.target,
27992
28279
  };
27993
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
28280
+ return (hAsync(Host, { key: '11183264fb6ae0db9a7a47c71b6862d60001b834', onClick: this.onClick, class: createColorClasses$1(this.color, {
27994
28281
  [mode]: true,
27995
28282
  'ion-activatable': true,
27996
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
28283
+ }) }, hAsync("a", Object.assign({ key: '3e0e5242161cb0df593d6d573e51b8ba750065a1' }, attrs), hAsync("slot", { key: '5bd808e98a4627bb1236f0d955f4b32971355417' }))));
27997
28284
  }
27998
28285
  static get style() { return IonRouterLinkStyle0; }
27999
28286
  static get cmpMeta() { return {
@@ -28188,7 +28475,7 @@ class RouterOutlet {
28188
28475
  return true;
28189
28476
  }
28190
28477
  render() {
28191
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
28478
+ return hAsync("slot", { key: '8d0c163c5f63158e16ef2db7cc3c756cf597461d' });
28192
28479
  }
28193
28480
  get el() { return getElement(this); }
28194
28481
  static get watchers() { return {
@@ -28222,7 +28509,7 @@ class Row {
28222
28509
  registerInstance(this, hostRef);
28223
28510
  }
28224
28511
  render() {
28225
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28512
+ return (hAsync(Host, { key: 'a690022e2abdce6946d24264574e4aa0886a8ea5', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1a0e831dd1dbfe7877d3ad01d0a3045a5fb29e3' })));
28226
28513
  }
28227
28514
  static get style() { return IonRowStyle0; }
28228
28515
  static get cmpMeta() { return {
@@ -28616,8 +28903,8 @@ class Searchbar {
28616
28903
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28617
28904
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28618
28905
  const shouldShowCancelButton = this.shouldShowCancelButton();
28619
- 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))));
28620
- return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28906
+ 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))));
28907
+ return (hAsync(Host, { key: 'd1a1972725e949fb102c91487aaa7b9d10c2d718', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28621
28908
  [mode]: true,
28622
28909
  'searchbar-animated': animated,
28623
28910
  'searchbar-disabled': this.disabled,
@@ -28627,14 +28914,14 @@ class Searchbar {
28627
28914
  'searchbar-has-focus': this.focused,
28628
28915
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28629
28916
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28630
- }) }, 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) => {
28917
+ }) }, 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) => {
28631
28918
  /**
28632
28919
  * This prevents mobile browsers from
28633
28920
  * blurring the input when the clear
28634
28921
  * button is activated.
28635
28922
  */
28636
28923
  ev.preventDefault();
28637
- }, 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));
28924
+ }, 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));
28638
28925
  }
28639
28926
  get el() { return getElement(this); }
28640
28927
  static get watchers() { return {
@@ -29218,14 +29505,14 @@ class Segment {
29218
29505
  }
29219
29506
  render() {
29220
29507
  const mode = getIonMode$1(this);
29221
- return (hAsync(Host, { key: 'b1eb4a6e4f953f6c4882395585799503735bbc6b', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29508
+ return (hAsync(Host, { key: 'a64e39352050b516f7dc82ce95a4bcff8431d1d0', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29222
29509
  [mode]: true,
29223
29510
  'in-toolbar': hostContext('ion-toolbar', this.el),
29224
29511
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29225
29512
  'segment-activated': this.activated,
29226
29513
  'segment-disabled': this.disabled,
29227
29514
  'segment-scrollable': this.scrollable,
29228
- }) }, hAsync("slot", { key: 'e7df6b017d154f30eb8021bc965f2e6c8e6480bf', onSlotchange: this.onSlottedItemsChange })));
29515
+ }) }, hAsync("slot", { key: 'bb3f3ec30e59e0461fa620d8961ab730cc802a4e', onSlotchange: this.onSlottedItemsChange })));
29229
29516
  }
29230
29517
  get el() { return getElement(this); }
29231
29518
  static get watchers() { return {
@@ -29296,35 +29583,7 @@ class SegmentButton {
29296
29583
  valueChanged() {
29297
29584
  this.updateState();
29298
29585
  }
29299
- waitForSegmentContent(ionSegment, contentId) {
29300
- return new Promise((resolve, reject) => {
29301
- let timeoutId = undefined;
29302
- let animationFrameId;
29303
- const check = () => {
29304
- if (!ionSegment) {
29305
- reject(new Error(`Segment not found when looking for Segment Content`));
29306
- return;
29307
- }
29308
- const segmentView = getNextSiblingOfType(ionSegment); // Skip the text nodes
29309
- const segmentContent = segmentView === null || segmentView === void 0 ? void 0 : segmentView.querySelector(`ion-segment-content[id="${contentId}"]`);
29310
- if (segmentContent && timeoutId) {
29311
- clearTimeout(timeoutId); // Clear the timeout if the segmentContent is found
29312
- cancelAnimationFrame(animationFrameId);
29313
- resolve(segmentContent);
29314
- }
29315
- else {
29316
- animationFrameId = requestAnimationFrame(check); // Keep checking on the next animation frame
29317
- }
29318
- };
29319
- check();
29320
- // Set a timeout to reject the promise
29321
- timeoutId = setTimeout(() => {
29322
- cancelAnimationFrame(animationFrameId);
29323
- reject(new Error(`Unable to find Segment Content with id="${contentId} within 1000 ms`));
29324
- }, 1000);
29325
- });
29326
- }
29327
- async connectedCallback() {
29586
+ connectedCallback() {
29328
29587
  const segmentEl = (this.segmentEl = this.el.closest('ion-segment'));
29329
29588
  if (segmentEl) {
29330
29589
  this.updateState();
@@ -29334,14 +29593,11 @@ class SegmentButton {
29334
29593
  // Return if there is no contentId defined
29335
29594
  if (!this.contentId)
29336
29595
  return;
29337
- let segmentContent;
29338
- try {
29339
- // Attempt to find the Segment Content by its contentId
29340
- segmentContent = await this.waitForSegmentContent(segmentEl, this.contentId);
29341
- }
29342
- catch (error) {
29343
- // If no associated Segment Content exists, log an error and return
29344
- console.error('Segment Button: ', error.message);
29596
+ // Attempt to find the Segment Content by its contentId
29597
+ const segmentContent = document.getElementById(this.contentId);
29598
+ // If no associated Segment Content exists, log an error and return
29599
+ if (!segmentContent) {
29600
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29345
29601
  return;
29346
29602
  }
29347
29603
  // Ensure the found element is a valid ION-SEGMENT-CONTENT
@@ -29387,7 +29643,7 @@ class SegmentButton {
29387
29643
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29388
29644
  const mode = getIonMode$1(this);
29389
29645
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29390
- return (hAsync(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
29646
+ return (hAsync(Host, { key: '79518fc8c0d1c72604397a281bdcfdcf4e070395', class: {
29391
29647
  [mode]: true,
29392
29648
  'in-toolbar': hostContext('ion-toolbar', this.el),
29393
29649
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29403,7 +29659,7 @@ class SegmentButton {
29403
29659
  'ion-activatable': true,
29404
29660
  'ion-activatable-instant': true,
29405
29661
  'ion-focusable': true,
29406
- } }, 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" }))));
29662
+ } }, 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" }))));
29407
29663
  }
29408
29664
  get el() { return getElement(this); }
29409
29665
  static get watchers() { return {
@@ -29439,7 +29695,7 @@ class SegmentContent {
29439
29695
  registerInstance(this, hostRef);
29440
29696
  }
29441
29697
  render() {
29442
- return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29698
+ return (hAsync(Host, { key: '64b3965b14c749e77e9ce13b59f349d971e245c8' }, hAsync("slot", { key: '2d0bed34f9bc93f92e713cb51e42220f3cecd8f5' })));
29443
29699
  }
29444
29700
  static get style() { return IonSegmentContentStyle0; }
29445
29701
  static get cmpMeta() { return {
@@ -29552,10 +29808,10 @@ class SegmentView {
29552
29808
  }
29553
29809
  render() {
29554
29810
  const { disabled, isManualScroll } = this;
29555
- return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29811
+ return (hAsync(Host, { key: 'fa528d2d9ae0f00fc3067defe2a047dce77c814a', class: {
29556
29812
  'segment-view-disabled': disabled,
29557
29813
  'segment-view-scroll-disabled': isManualScroll === false,
29558
- } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29814
+ } }, hAsync("slot", { key: '74dc8b4d073caeff1bab272d11b9ea3e1a215954' })));
29559
29815
  }
29560
29816
  get el() { return getElement(this); }
29561
29817
  static get style() { return {
@@ -29670,6 +29926,7 @@ class Select {
29670
29926
  this.expandedIcon = undefined;
29671
29927
  this.shape = undefined;
29672
29928
  this.value = undefined;
29929
+ this.required = false;
29673
29930
  }
29674
29931
  styleChanged() {
29675
29932
  this.emitStyle();
@@ -29725,8 +29982,15 @@ class Select {
29725
29982
  }
29726
29983
  this.isExpanded = true;
29727
29984
  const overlay = (this.overlay = await this.createOverlay(event));
29728
- // Add logic to scroll selected item into view before presenting
29729
- const scrollSelectedIntoView = () => {
29985
+ overlay.onDidDismiss().then(() => {
29986
+ this.overlay = undefined;
29987
+ this.isExpanded = false;
29988
+ this.ionDismiss.emit();
29989
+ this.setFocus();
29990
+ });
29991
+ await overlay.present();
29992
+ // focus selected option for popovers and modals
29993
+ if (this.interface === 'popover' || this.interface === 'modal') {
29730
29994
  const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
29731
29995
  if (indexOfSelected > -1) {
29732
29996
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
@@ -29744,7 +30008,6 @@ class Select {
29744
30008
  */
29745
30009
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
29746
30010
  if (interactiveEl) {
29747
- selectedItem.scrollIntoView({ block: 'nearest' });
29748
30011
  // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
29749
30012
  // and removing `ion-focused` style
29750
30013
  interactiveEl.setFocus();
@@ -29768,40 +30031,7 @@ class Select {
29768
30031
  focusVisibleElement(firstEnabledOption.closest('ion-item'));
29769
30032
  }
29770
30033
  }
29771
- };
29772
- // For modals and popovers, we can scroll before they're visible
29773
- if (this.interface === 'modal') {
29774
- overlay.addEventListener('ionModalWillPresent', scrollSelectedIntoView, { once: true });
29775
- }
29776
- else if (this.interface === 'popover') {
29777
- overlay.addEventListener('ionPopoverWillPresent', scrollSelectedIntoView, { once: true });
29778
30034
  }
29779
- else {
29780
- /**
29781
- * For alerts and action sheets, we need to wait a frame after willPresent
29782
- * because these overlays don't have their content in the DOM immediately
29783
- * when willPresent fires. By waiting a frame, we ensure the content is
29784
- * rendered and can be properly scrolled into view.
29785
- */
29786
- const scrollAfterRender = () => {
29787
- requestAnimationFrame(() => {
29788
- scrollSelectedIntoView();
29789
- });
29790
- };
29791
- if (this.interface === 'alert') {
29792
- overlay.addEventListener('ionAlertWillPresent', scrollAfterRender, { once: true });
29793
- }
29794
- else if (this.interface === 'action-sheet') {
29795
- overlay.addEventListener('ionActionSheetWillPresent', scrollAfterRender, { once: true });
29796
- }
29797
- }
29798
- overlay.onDidDismiss().then(() => {
29799
- this.overlay = undefined;
29800
- this.isExpanded = false;
29801
- this.ionDismiss.emit();
29802
- this.setFocus();
29803
- });
29804
- await overlay.present();
29805
30035
  return overlay;
29806
30036
  }
29807
30037
  createOverlay(ev) {
@@ -30181,8 +30411,8 @@ class Select {
30181
30411
  return renderedLabel;
30182
30412
  }
30183
30413
  renderListbox() {
30184
- const { disabled, inputId, isExpanded } = this;
30185
- 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) }));
30414
+ const { disabled, inputId, isExpanded, required } = this;
30415
+ 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) }));
30186
30416
  }
30187
30417
  render() {
30188
30418
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -30213,7 +30443,7 @@ class Select {
30213
30443
  * TODO(FW-5592): Remove hasStartEndSlots condition
30214
30444
  */
30215
30445
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
30216
- return (hAsync(Host, { key: 'b2dca9ae25d88e4d9fdb55003041a66be5668fcf', onClick: this.onClick, class: createColorClasses$1(this.color, {
30446
+ return (hAsync(Host, { key: '457f1130a291ff1f6fdb8a112f6c32b53efdad7a', onClick: this.onClick, class: createColorClasses$1(this.color, {
30217
30447
  [mode]: true,
30218
30448
  'in-item': inItem,
30219
30449
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -30229,7 +30459,7 @@ class Select {
30229
30459
  [`select-justify-${justify}`]: justifyEnabled,
30230
30460
  [`select-shape-${shape}`]: shape !== undefined,
30231
30461
  [`select-label-placement-${labelPlacement}`]: true,
30232
- }) }, 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" }))));
30462
+ }) }, 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" }))));
30233
30463
  }
30234
30464
  get el() { return getElement(this); }
30235
30465
  static get watchers() { return {
@@ -30265,6 +30495,7 @@ class Select {
30265
30495
  "expandedIcon": [1, "expanded-icon"],
30266
30496
  "shape": [1],
30267
30497
  "value": [1032],
30498
+ "required": [4],
30268
30499
  "isExpanded": [32],
30269
30500
  "open": [64]
30270
30501
  },
@@ -30389,7 +30620,7 @@ class SelectModal {
30389
30620
  } }, option.text))));
30390
30621
  }
30391
30622
  render() {
30392
- 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()))));
30623
+ 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()))));
30393
30624
  }
30394
30625
  get el() { return getElement(this); }
30395
30626
  static get style() { return {
@@ -30422,7 +30653,7 @@ class SelectOption {
30422
30653
  this.value = undefined;
30423
30654
  }
30424
30655
  render() {
30425
- return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
30656
+ return hAsync(Host, { key: '8c96c199ce3a3065de3fe446500f567236e0610a', role: "option", id: this.inputId, class: getIonMode$1(this) });
30426
30657
  }
30427
30658
  get el() { return getElement(this); }
30428
30659
  static get style() { return IonSelectOptionStyle0; }
@@ -30542,7 +30773,7 @@ class SelectPopover {
30542
30773
  render() {
30543
30774
  const { header, message, options, subHeader } = this;
30544
30775
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30545
- 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))));
30776
+ 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))));
30546
30777
  }
30547
30778
  get el() { return getElement(this); }
30548
30779
  static get style() { return {
@@ -30590,11 +30821,11 @@ class SkeletonText {
30590
30821
  const animated = this.animated && config.getBoolean('animated', true);
30591
30822
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30592
30823
  const mode = getIonMode$1(this);
30593
- return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30824
+ return (hAsync(Host, { key: 'c193f9a8e8efab5139544f047bdae4b6d421aa86', class: {
30594
30825
  [mode]: true,
30595
30826
  'skeleton-text-animated': animated,
30596
30827
  'in-media': inMedia,
30597
- } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30828
+ } }, hAsync("span", { key: 'e15db679bd3c359b4df5123efd2f92e5b380fde3' }, "\u00A0")));
30598
30829
  }
30599
30830
  get el() { return getElement(this); }
30600
30831
  static get style() { return IonSkeletonTextStyle0; }
@@ -30647,7 +30878,7 @@ class Spinner {
30647
30878
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30648
30879
  }
30649
30880
  }
30650
- return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30881
+ return (hAsync(Host, { key: 'e0dfa8a3ee2a0469eb31323f506750bd77d65797', class: createColorClasses$1(self.color, {
30651
30882
  [mode]: true,
30652
30883
  [`spinner-${spinnerName}`]: true,
30653
30884
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30747,12 +30978,12 @@ class SplitPane {
30747
30978
  }
30748
30979
  render() {
30749
30980
  const mode = getIonMode$1(this);
30750
- return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30981
+ return (hAsync(Host, { key: '76be70d7fbebc52646a5851f47accc1006615b85', class: {
30751
30982
  [mode]: true,
30752
30983
  // Used internally for styling
30753
30984
  [`split-pane-${mode}`]: true,
30754
30985
  'split-pane-visible': this.visible,
30755
- } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30986
+ } }, hAsync("slot", { key: '9a859530f4fb18aff43255bc3940feb9aca625d7' })));
30756
30987
  }
30757
30988
  get el() { return getElement(this); }
30758
30989
  static get watchers() { return {
@@ -30821,10 +31052,10 @@ class Tab {
30821
31052
  }
30822
31053
  render() {
30823
31054
  const { tab, active, component } = this;
30824
- return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
31055
+ return (hAsync(Host, { key: '2107ece2f1ebdf748bac8adb78a9ad67e7fc9057', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30825
31056
  'ion-page': component === undefined,
30826
31057
  'tab-hidden': !active,
30827
- } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
31058
+ } }, hAsync("slot", { key: 'b4a1bc1aa79f6b82b8f77b544bcb74e65229b541' })));
30828
31059
  }
30829
31060
  get el() { return getElement(this); }
30830
31061
  static get watchers() { return {
@@ -30902,11 +31133,11 @@ class TabBar {
30902
31133
  const { color, translucent, keyboardVisible } = this;
30903
31134
  const mode = getIonMode$1(this);
30904
31135
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30905
- return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
31136
+ return (hAsync(Host, { key: '62303a7f9d8c98ffab51a5900c144c5117b9c543', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30906
31137
  [mode]: true,
30907
31138
  'tab-bar-translucent': translucent,
30908
31139
  'tab-bar-hidden': shouldHide,
30909
- }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
31140
+ }) }, hAsync("slot", { key: '5771a9828f748c2bd6b5e26758b9723c6b3de5ff' })));
30910
31141
  }
30911
31142
  get el() { return getElement(this); }
30912
31143
  static get watchers() { return {
@@ -31004,7 +31235,7 @@ class TabButton {
31004
31235
  rel,
31005
31236
  target,
31006
31237
  };
31007
- return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31238
+ return (hAsync(Host, { key: 'a86d441d8df350fe991f2f948fc6b6ad007728f7', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31008
31239
  [mode]: true,
31009
31240
  'tab-selected': selected,
31010
31241
  'tab-disabled': disabled,
@@ -31016,7 +31247,7 @@ class TabButton {
31016
31247
  'ion-activatable': true,
31017
31248
  'ion-selectable': true,
31018
31249
  'ion-focusable': true,
31019
- } }, 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" }))));
31250
+ } }, 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" }))));
31020
31251
  }
31021
31252
  get el() { return getElement(this); }
31022
31253
  static get style() { return {
@@ -31192,7 +31423,7 @@ class Tabs {
31192
31423
  return Array.from(this.el.querySelectorAll('ion-tab'));
31193
31424
  }
31194
31425
  render() {
31195
- 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" })));
31426
+ 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" })));
31196
31427
  }
31197
31428
  get el() { return getElement(this); }
31198
31429
  static get style() { return IonTabsStyle0; }
@@ -31234,9 +31465,9 @@ class Text {
31234
31465
  }
31235
31466
  render() {
31236
31467
  const mode = getIonMode$1(this);
31237
- return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
31468
+ return (hAsync(Host, { key: '0c2546ea3f24b0a6bfd606199441d0a4edfa4ca1', class: createColorClasses$1(this.color, {
31238
31469
  [mode]: true,
31239
- }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
31470
+ }) }, hAsync("slot", { key: 'b7623ccb06f9461090a1f33e9f85886c7a4d5eff' })));
31240
31471
  }
31241
31472
  static get style() { return IonTextStyle0; }
31242
31473
  static get cmpMeta() { return {
@@ -31618,7 +31849,7 @@ class Textarea {
31618
31849
  * TODO(FW-5592): Remove hasStartEndSlots condition
31619
31850
  */
31620
31851
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31621
- return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31852
+ return (hAsync(Host, { key: 'c0dabc66193c41188c817799e45b36abbf097ba1', class: createColorClasses$1(this.color, {
31622
31853
  [mode]: true,
31623
31854
  'has-value': hasValue,
31624
31855
  'has-focus': hasFocus,
@@ -31627,7 +31858,7 @@ class Textarea {
31627
31858
  [`textarea-shape-${shape}`]: shape !== undefined,
31628
31859
  [`textarea-label-placement-${labelPlacement}`]: true,
31629
31860
  'textarea-disabled': disabled,
31630
- }) }, 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()));
31861
+ }) }, 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()));
31631
31862
  }
31632
31863
  get el() { return getElement(this); }
31633
31864
  static get watchers() { return {
@@ -31689,7 +31920,7 @@ class Thumbnail {
31689
31920
  registerInstance(this, hostRef);
31690
31921
  }
31691
31922
  render() {
31692
- return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31923
+ return (hAsync(Host, { key: '7f5fd6c056da2d82feb2c3c33f3e6dec898787f5', class: getIonMode$1(this) }, hAsync("slot", { key: 'd15fd2b6cdc03777edc1930be95ad838e1b376c8' })));
31693
31924
  }
31694
31925
  static get style() { return IonThumbnailStyle0; }
31695
31926
  static get cmpMeta() { return {
@@ -32525,9 +32756,9 @@ class Toast {
32525
32756
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32526
32757
  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);
32527
32758
  }
32528
- return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32759
+ return (hAsync(Host, Object.assign({ key: '34036afc0701173d51c9c11ea4a2e1d65685ba41', tabindex: "-1" }, this.htmlAttributes, { style: {
32529
32760
  zIndex: `${60000 + this.overlayIndex}`,
32530
- }, 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')))));
32761
+ }, 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')))));
32531
32762
  }
32532
32763
  get el() { return getElement(this); }
32533
32764
  static get watchers() { return {
@@ -32661,6 +32892,7 @@ class Toggle {
32661
32892
  this.labelPlacement = 'start';
32662
32893
  this.justify = undefined;
32663
32894
  this.alignment = undefined;
32895
+ this.required = false;
32664
32896
  }
32665
32897
  disabledChanged() {
32666
32898
  if (this.gesture) {
@@ -32742,12 +32974,12 @@ class Toggle {
32742
32974
  return this.el.textContent !== '';
32743
32975
  }
32744
32976
  render() {
32745
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
32977
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this;
32746
32978
  const mode = getIonMode$1(this);
32747
32979
  const value = this.getValue();
32748
32980
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32749
32981
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32750
- return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32982
+ return (hAsync(Host, { key: '381632cf12ef5d27d729e0d59efcb14efad12a51', onClick: this.onClick, class: createColorClasses$1(color, {
32751
32983
  [mode]: true,
32752
32984
  'in-item': hostContext('ion-item', el),
32753
32985
  'toggle-activated': activated,
@@ -32757,10 +32989,10 @@ class Toggle {
32757
32989
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32758
32990
  [`toggle-label-placement-${labelPlacement}`]: true,
32759
32991
  [`toggle-${rtl}`]: true,
32760
- }) }, 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: {
32992
+ }) }, 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: {
32761
32993
  'label-text-wrapper': true,
32762
32994
  'label-text-wrapper-hidden': !this.hasLabel,
32763
- }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32995
+ }, part: "label" }, hAsync("slot", { key: '67b7e20dc96503cb76dd5e31c5579752de465dcc' })), hAsync("div", { key: '17f89960bcc3302ef8e0c0d4e10513241744e232', class: "native-wrapper" }, this.renderToggleControl()))));
32764
32996
  }
32765
32997
  get el() { return getElement(this); }
32766
32998
  static get watchers() { return {
@@ -32783,6 +33015,7 @@ class Toggle {
32783
33015
  "labelPlacement": [1, "label-placement"],
32784
33016
  "justify": [1],
32785
33017
  "alignment": [1],
33018
+ "required": [4],
32786
33019
  "activated": [32]
32787
33020
  },
32788
33021
  "$listeners$": undefined,
@@ -32814,6 +33047,10 @@ var IonToolbarMdStyle0 = toolbarMdCss;
32814
33047
  * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.
32815
33048
  * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.
32816
33049
  * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.
33050
+ *
33051
+ * @part background - The background of the toolbar, covering the entire area behind the toolbar content.
33052
+ * @part container - The container that wraps all toolbar content, including the default slot and named slot content.
33053
+ * @part content - The container for the default slot, wrapping content provided without a named slot.
32817
33054
  */
32818
33055
  class Toolbar {
32819
33056
  constructor(hostRef) {
@@ -32864,10 +33101,10 @@ class Toolbar {
32864
33101
  this.childrenStyles.forEach((value) => {
32865
33102
  Object.assign(childStyles, value);
32866
33103
  });
32867
- return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
33104
+ return (hAsync(Host, { key: '402afe7ce0c97883cedd0e48a5a0492a9bfe76ae', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32868
33105
  [mode]: true,
32869
33106
  'in-toolbar': hostContext('ion-toolbar', this.el),
32870
- })) }, 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" }))));
33107
+ })) }, 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" }))));
32871
33108
  }
32872
33109
  get el() { return getElement(this); }
32873
33110
  static get style() { return {
@@ -32917,11 +33154,11 @@ class ToolbarTitle {
32917
33154
  render() {
32918
33155
  const mode = getIonMode$1(this);
32919
33156
  const size = this.getSize();
32920
- return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
33157
+ return (hAsync(Host, { key: '3f7b19c99961dbb86c0a925218332528b22e6880', class: createColorClasses$1(this.color, {
32921
33158
  [mode]: true,
32922
33159
  [`title-${size}`]: true,
32923
33160
  'title-rtl': document.dir === 'rtl',
32924
- }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
33161
+ }) }, hAsync("div", { key: '12054fbdd60e40a15875e442c20143766fc34fc3', class: "toolbar-title" }, hAsync("slot", { key: '9f14fb14a67d4bd1e4536a4d64a637fbe5a151c7' }))));
32925
33162
  }
32926
33163
  get el() { return getElement(this); }
32927
33164
  static get watchers() { return {