@ionic/core 8.4.4-dev.11740674215.19381153 → 8.4.4-dev.11740685209.1c1ac2bf

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 (513) hide show
  1. package/components/alert.js +12 -26
  2. package/components/checkbox.js +6 -4
  3. package/components/helpers.js +1 -11
  4. package/components/index6.js +11 -3
  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 +6 -4
  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/label.js +2 -2
  47. package/components/list-header.js +2 -2
  48. package/components/modal.js +259 -35
  49. package/components/picker-column-option.js +2 -2
  50. package/components/picker-column2.js +2 -2
  51. package/components/popover.js +2 -2
  52. package/components/radio-group.js +39 -2
  53. package/components/radio.js +3 -3
  54. package/components/ripple-effect.js +1 -1
  55. package/components/select-modal.js +1 -1
  56. package/components/select-popover.js +1 -1
  57. package/components/spinner.js +1 -1
  58. package/components/title.js +2 -2
  59. package/components/toolbar.js +2 -2
  60. package/css/core.css.map +1 -1
  61. package/css/ionic.bundle.css.map +1 -1
  62. package/dist/cjs/{data-21dc0f81.js → data-108e531d.js} +1 -1
  63. package/dist/cjs/{framework-delegate-05579976.js → framework-delegate-55f5683a.js} +1 -1
  64. package/dist/cjs/{helpers-4be3f90d.js → helpers-afaa9001.js} +0 -11
  65. package/dist/cjs/{index-c441c903.js → index-0d762bba.js} +2 -2
  66. package/dist/cjs/{index-5915f9b3.js → index-2a46a047.js} +11 -3
  67. package/dist/cjs/{index-1ae3f40a.js → index-3652c918.js} +2 -2
  68. package/dist/cjs/{index-ad7a712e.js → index-9509ecad.js} +1 -1
  69. package/dist/cjs/{index-4e14a46e.js → index-e975c92b.js} +4 -4
  70. package/dist/cjs/index.cjs.js +8 -8
  71. package/dist/cjs/{input-shims-e748a364.js → input-shims-cd05268a.js} +5 -3
  72. package/dist/cjs/{input.utils-74e4ec28.js → input.utils-ffb2f81b.js} +2 -2
  73. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
  75. package/dist/cjs/ion-alert.cjs.entry.js +16 -30
  76. package/dist/cjs/ion-app_8.cjs.entry.js +14 -14
  77. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  78. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  79. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  81. package/dist/cjs/ion-card_5.cjs.entry.js +1 -1
  82. package/dist/cjs/ion-checkbox.cjs.entry.js +6 -5
  83. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  84. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
  85. package/dist/cjs/ion-datetime_3.cjs.entry.js +9 -9
  86. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  87. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  88. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  89. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +1 -1
  90. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  91. package/dist/cjs/ion-item-option_3.cjs.entry.js +7 -7
  92. package/dist/cjs/ion-item_8.cjs.entry.js +12 -12
  93. package/dist/cjs/ion-loading.cjs.entry.js +6 -6
  94. package/dist/cjs/ion-menu_3.cjs.entry.js +11 -11
  95. package/dist/cjs/ion-modal.cjs.entry.js +264 -41
  96. package/dist/cjs/ion-nav_2.cjs.entry.js +7 -7
  97. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  98. package/dist/cjs/ion-picker-column.cjs.entry.js +1 -1
  99. package/dist/cjs/ion-picker.cjs.entry.js +1 -1
  100. package/dist/cjs/ion-popover.cjs.entry.js +7 -7
  101. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  102. package/dist/cjs/ion-radio_2.cjs.entry.js +40 -5
  103. package/dist/cjs/ion-range.cjs.entry.js +6 -6
  104. package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
  105. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  106. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  107. package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
  108. package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
  109. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  110. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-segment_2.cjs.entry.js +11 -42
  112. package/dist/cjs/ion-select-modal.cjs.entry.js +5 -5
  113. package/dist/cjs/ion-select_3.cjs.entry.js +12 -11
  114. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  115. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  116. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +5 -5
  117. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  118. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-textarea.cjs.entry.js +6 -6
  120. package/dist/cjs/ion-toast.cjs.entry.js +6 -6
  121. package/dist/cjs/ion-toggle.cjs.entry.js +6 -5
  122. package/dist/cjs/ionic.cjs.js +1 -1
  123. package/dist/cjs/{ios.transition-afdec89f.js → ios.transition-0e664e88.js} +3 -3
  124. package/dist/cjs/loader.cjs.js +1 -1
  125. package/dist/cjs/{md.transition-9f0d3db5.js → md.transition-2e8aef2c.js} +3 -3
  126. package/dist/cjs/{notch-controller-a0c464d1.js → notch-controller-d69150f5.js} +1 -1
  127. package/dist/cjs/{overlays-76b29cd4.js → overlays-65fdaff6.js} +3 -3
  128. package/dist/cjs/{status-tap-fb807fad.js → status-tap-d74f1429.js} +4 -3
  129. package/dist/cjs/{swipe-back-47a52b83.js → swipe-back-0303a5e4.js} +1 -1
  130. package/dist/collection/components/alert/alert.js +12 -30
  131. package/dist/collection/components/checkbox/checkbox.js +23 -4
  132. package/dist/collection/components/item-divider/item-divider.js +2 -2
  133. package/dist/collection/components/item-group/item-group.js +1 -1
  134. package/dist/collection/components/item-option/item-option.js +2 -2
  135. package/dist/collection/components/item-options/item-options.js +1 -1
  136. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  137. package/dist/collection/components/label/label.js +2 -2
  138. package/dist/collection/components/list-header/list-header.js +2 -2
  139. package/dist/collection/components/loading/loading.js +2 -2
  140. package/dist/collection/components/menu/menu.js +2 -2
  141. package/dist/collection/components/menu-button/menu-button.js +2 -2
  142. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  143. package/dist/collection/components/modal/animations/ios.enter.js +50 -4
  144. package/dist/collection/components/modal/animations/ios.leave.js +24 -2
  145. package/dist/collection/components/modal/animations/md.enter.js +52 -5
  146. package/dist/collection/components/modal/animations/md.leave.js +26 -3
  147. package/dist/collection/components/modal/animations/sheet.js +11 -2
  148. package/dist/collection/components/modal/gestures/sheet.js +79 -10
  149. package/dist/collection/components/modal/modal.ios.css +16 -0
  150. package/dist/collection/components/modal/modal.js +32 -7
  151. package/dist/collection/components/modal/modal.md.css +6 -0
  152. package/dist/collection/components/nav/nav.js +1 -1
  153. package/dist/collection/components/nav-link/nav-link.js +1 -1
  154. package/dist/collection/components/note/note.js +2 -2
  155. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  156. package/dist/collection/components/picker-legacy/picker.js +2 -2
  157. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  158. package/dist/collection/components/popover/popover.js +2 -2
  159. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  160. package/dist/collection/components/radio/radio.js +3 -3
  161. package/dist/collection/components/radio-group/radio-group.ios.css +202 -0
  162. package/dist/collection/components/radio-group/radio-group.js +72 -1
  163. package/dist/collection/components/radio-group/radio-group.md.css +202 -0
  164. package/dist/collection/components/range/range.js +3 -3
  165. package/dist/collection/components/refresher/refresher.js +1 -1
  166. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  167. package/dist/collection/components/reorder/reorder.js +1 -1
  168. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  169. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  170. package/dist/collection/components/router-link/router-link.js +2 -2
  171. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  172. package/dist/collection/components/row/row.js +1 -1
  173. package/dist/collection/components/searchbar/searchbar.js +4 -4
  174. package/dist/collection/components/segment/segment.js +2 -2
  175. package/dist/collection/components/segment-button/segment-button.js +9 -40
  176. package/dist/collection/components/segment-content/segment-content.js +1 -1
  177. package/dist/collection/components/segment-view/segment-view.js +2 -2
  178. package/dist/collection/components/select/select.js +23 -4
  179. package/dist/collection/components/select-modal/select-modal.js +1 -1
  180. package/dist/collection/components/select-option/select-option.js +1 -1
  181. package/dist/collection/components/select-popover/select-popover.js +1 -1
  182. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  183. package/dist/collection/components/spinner/spinner.js +1 -1
  184. package/dist/collection/components/split-pane/split-pane.js +2 -2
  185. package/dist/collection/components/tab/tab.js +2 -2
  186. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  187. package/dist/collection/components/tab-button/tab-button.js +2 -2
  188. package/dist/collection/components/tabs/tabs.js +1 -1
  189. package/dist/collection/components/text/text.js +2 -2
  190. package/dist/collection/components/textarea/textarea.js +2 -2
  191. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  192. package/dist/collection/components/title/title.js +2 -2
  193. package/dist/collection/components/toast/toast.js +2 -2
  194. package/dist/collection/components/toggle/toggle.js +23 -4
  195. package/dist/collection/components/toolbar/toolbar.js +6 -2
  196. package/dist/collection/utils/helpers.js +0 -10
  197. package/dist/collection/utils/logging/index.js +10 -3
  198. package/dist/docs.json +163 -6
  199. package/dist/esm/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
  200. package/dist/esm/{framework-delegate-f683816e.js → framework-delegate-63d1a679.js} +1 -1
  201. package/dist/esm/{helpers-9b49d7d2.js → helpers-da915de8.js} +1 -11
  202. package/dist/esm/{index-7ec5519a.js → index-2f7fde3d.js} +4 -4
  203. package/dist/esm/{index-9b0d46f4.js → index-6ad967f3.js} +11 -3
  204. package/dist/esm/{index-5a0f5fd0.js → index-79b30591.js} +1 -1
  205. package/dist/esm/{index-8785a9c6.js → index-cb21eccb.js} +2 -2
  206. package/dist/esm/{index-33f7e3ff.js → index-efb8ecdf.js} +2 -2
  207. package/dist/esm/index.js +8 -8
  208. package/dist/esm/{input-shims-0e65111b.js → input-shims-2fd7c6ef.js} +5 -3
  209. package/dist/esm/{input.utils-1ad8dafc.js → input.utils-961c9f17.js} +2 -2
  210. package/dist/esm/ion-accordion_2.entry.js +2 -2
  211. package/dist/esm/ion-action-sheet.entry.js +4 -4
  212. package/dist/esm/ion-alert.entry.js +16 -30
  213. package/dist/esm/ion-app_8.entry.js +14 -14
  214. package/dist/esm/ion-avatar_3.entry.js +1 -1
  215. package/dist/esm/ion-back-button.entry.js +1 -1
  216. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  217. package/dist/esm/ion-button_2.entry.js +2 -2
  218. package/dist/esm/ion-card_5.entry.js +1 -1
  219. package/dist/esm/ion-checkbox.entry.js +6 -5
  220. package/dist/esm/ion-col_3.entry.js +1 -1
  221. package/dist/esm/ion-datetime-button.entry.js +3 -3
  222. package/dist/esm/ion-datetime_3.entry.js +9 -9
  223. package/dist/esm/ion-fab_3.entry.js +1 -1
  224. package/dist/esm/ion-img.entry.js +1 -1
  225. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  226. package/dist/esm/ion-input-password-toggle.entry.js +1 -1
  227. package/dist/esm/ion-input.entry.js +4 -4
  228. package/dist/esm/ion-item-option_3.entry.js +7 -7
  229. package/dist/esm/ion-item_8.entry.js +12 -12
  230. package/dist/esm/ion-loading.entry.js +6 -6
  231. package/dist/esm/ion-menu_3.entry.js +11 -11
  232. package/dist/esm/ion-modal.entry.js +264 -41
  233. package/dist/esm/ion-nav_2.entry.js +7 -7
  234. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  235. package/dist/esm/ion-picker-column.entry.js +1 -1
  236. package/dist/esm/ion-picker.entry.js +1 -1
  237. package/dist/esm/ion-popover.entry.js +7 -7
  238. package/dist/esm/ion-progress-bar.entry.js +2 -2
  239. package/dist/esm/ion-radio_2.entry.js +40 -5
  240. package/dist/esm/ion-range.entry.js +6 -6
  241. package/dist/esm/ion-refresher_2.entry.js +5 -5
  242. package/dist/esm/ion-reorder_2.entry.js +5 -5
  243. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  244. package/dist/esm/ion-route_4.entry.js +3 -3
  245. package/dist/esm/ion-searchbar.entry.js +5 -5
  246. package/dist/esm/ion-segment-content.entry.js +1 -1
  247. package/dist/esm/ion-segment-view.entry.js +2 -2
  248. package/dist/esm/ion-segment_2.entry.js +11 -42
  249. package/dist/esm/ion-select-modal.entry.js +5 -5
  250. package/dist/esm/ion-select_3.entry.js +12 -11
  251. package/dist/esm/ion-spinner.entry.js +1 -1
  252. package/dist/esm/ion-split-pane.entry.js +2 -2
  253. package/dist/esm/ion-tab-bar_2.entry.js +5 -5
  254. package/dist/esm/ion-tab_2.entry.js +5 -5
  255. package/dist/esm/ion-text.entry.js +2 -2
  256. package/dist/esm/ion-textarea.entry.js +6 -6
  257. package/dist/esm/ion-toast.entry.js +6 -6
  258. package/dist/esm/ion-toggle.entry.js +6 -5
  259. package/dist/esm/ionic.js +1 -1
  260. package/dist/esm/{ios.transition-085853ff.js → ios.transition-b1da3753.js} +3 -3
  261. package/dist/esm/loader.js +1 -1
  262. package/dist/esm/{md.transition-33826623.js → md.transition-571b3859.js} +3 -3
  263. package/dist/esm/{notch-controller-3dc61260.js → notch-controller-55b09e11.js} +1 -1
  264. package/dist/esm/{overlays-e3d0d356.js → overlays-5deab4de.js} +3 -3
  265. package/dist/esm/{status-tap-163e8128.js → status-tap-79eac0ac.js} +4 -3
  266. package/dist/esm/{swipe-back-23ee7ab1.js → swipe-back-e5394307.js} +1 -1
  267. package/dist/esm-es5/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
  268. package/dist/esm-es5/{framework-delegate-f683816e.js → framework-delegate-63d1a679.js} +1 -1
  269. package/dist/esm-es5/{helpers-9b49d7d2.js → helpers-da915de8.js} +1 -1
  270. package/dist/esm-es5/{index-7ec5519a.js → index-2f7fde3d.js} +1 -1
  271. package/dist/esm-es5/index-6ad967f3.js +4 -0
  272. package/dist/esm-es5/{index-5a0f5fd0.js → index-79b30591.js} +1 -1
  273. package/dist/esm-es5/{index-8785a9c6.js → index-cb21eccb.js} +1 -1
  274. package/dist/esm-es5/{index-33f7e3ff.js → index-efb8ecdf.js} +1 -1
  275. package/dist/esm-es5/index.js +1 -1
  276. package/dist/esm-es5/input-shims-2fd7c6ef.js +4 -0
  277. package/dist/esm-es5/{input.utils-1ad8dafc.js → input.utils-961c9f17.js} +1 -1
  278. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  279. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  280. package/dist/esm-es5/ion-alert.entry.js +1 -1
  281. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  282. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  283. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  284. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  285. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  286. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  287. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  288. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  289. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  290. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  291. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  292. package/dist/esm-es5/ion-img.entry.js +1 -1
  293. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  294. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  295. package/dist/esm-es5/ion-input.entry.js +1 -1
  296. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  297. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  298. package/dist/esm-es5/ion-loading.entry.js +1 -1
  299. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  300. package/dist/esm-es5/ion-modal.entry.js +1 -1
  301. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  302. package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
  303. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  304. package/dist/esm-es5/ion-picker.entry.js +1 -1
  305. package/dist/esm-es5/ion-popover.entry.js +1 -1
  306. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  307. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  308. package/dist/esm-es5/ion-range.entry.js +1 -1
  309. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  310. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  311. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  312. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  313. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  314. package/dist/esm-es5/ion-segment-content.entry.js +1 -1
  315. package/dist/esm-es5/ion-segment-view.entry.js +1 -1
  316. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  317. package/dist/esm-es5/ion-select-modal.entry.js +1 -1
  318. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  319. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  320. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  321. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  322. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  323. package/dist/esm-es5/ion-text.entry.js +1 -1
  324. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  325. package/dist/esm-es5/ion-toast.entry.js +1 -1
  326. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  327. package/dist/esm-es5/ionic.js +1 -1
  328. package/dist/esm-es5/{ios.transition-085853ff.js → ios.transition-b1da3753.js} +1 -1
  329. package/dist/esm-es5/loader.js +1 -1
  330. package/dist/esm-es5/md.transition-571b3859.js +4 -0
  331. package/dist/esm-es5/{notch-controller-3dc61260.js → notch-controller-55b09e11.js} +1 -1
  332. package/dist/esm-es5/{overlays-e3d0d356.js → overlays-5deab4de.js} +1 -1
  333. package/dist/esm-es5/status-tap-79eac0ac.js +4 -0
  334. package/dist/esm-es5/{swipe-back-23ee7ab1.js → swipe-back-e5394307.js} +1 -1
  335. package/dist/html.html-data.json +24 -0
  336. package/dist/ionic/index.esm.js +1 -1
  337. package/dist/ionic/ionic.esm.js +1 -1
  338. package/dist/ionic/{p-a9e24ae2.system.entry.js → p-01186920.system.entry.js} +1 -1
  339. package/dist/ionic/{p-f78af648.system.entry.js → p-03692b8d.system.entry.js} +1 -1
  340. package/dist/ionic/{p-e265ae18.system.entry.js → p-0445f081.system.entry.js} +1 -1
  341. package/dist/ionic/{p-3eaf1444.system.entry.js → p-05b74e45.system.entry.js} +1 -1
  342. package/dist/ionic/p-073b47c8.system.entry.js +4 -0
  343. package/dist/ionic/{p-bb2a6761.entry.js → p-081a4ce4.entry.js} +1 -1
  344. package/dist/ionic/{p-2ef3c7ee.system.entry.js → p-08f8804f.system.entry.js} +1 -1
  345. package/dist/ionic/p-0af823e1.js +4 -0
  346. package/dist/ionic/{p-aa63b365.system.js → p-0eb35a7f.system.js} +1 -1
  347. package/dist/ionic/{p-9a1f985d.system.entry.js → p-102e55aa.system.entry.js} +1 -1
  348. package/dist/ionic/p-116f21ad.entry.js +4 -0
  349. package/dist/ionic/{p-203633d1.entry.js → p-120fb79a.entry.js} +1 -1
  350. package/dist/ionic/p-13966709.entry.js +4 -0
  351. package/dist/ionic/{p-3df889b3.system.entry.js → p-14350389.system.entry.js} +2 -2
  352. package/dist/ionic/{p-5cde8ef3.entry.js → p-15d18206.entry.js} +1 -1
  353. package/dist/ionic/{p-e8f34871.entry.js → p-15e76dd1.entry.js} +1 -1
  354. package/dist/ionic/{p-9be5f3ee.system.entry.js → p-1854b62d.system.entry.js} +2 -2
  355. package/dist/ionic/{p-5126cf1e.system.js → p-19ea7bff.system.js} +1 -1
  356. package/dist/ionic/{p-d60342e3.js → p-1a5bc5f7.js} +1 -1
  357. package/dist/ionic/{p-42808996.js → p-1ab13b2b.js} +1 -1
  358. package/dist/ionic/{p-84d08aae.system.entry.js → p-1e67b266.system.entry.js} +1 -1
  359. package/dist/ionic/{p-92365bc1.system.entry.js → p-1eb2e3bc.system.entry.js} +1 -1
  360. package/dist/ionic/{p-d06601eb.system.entry.js → p-1fdf3d2e.system.entry.js} +1 -1
  361. package/dist/ionic/{p-41780810.entry.js → p-2034ff3e.entry.js} +1 -1
  362. package/dist/ionic/{p-0c9b6d3a.system.entry.js → p-2346ab53.system.entry.js} +1 -1
  363. package/dist/ionic/{p-162c8d0c.system.entry.js → p-248318e0.system.entry.js} +1 -1
  364. package/dist/ionic/{p-f5035354.js → p-28706c6f.js} +1 -1
  365. package/dist/ionic/{p-83e68c71.entry.js → p-2b0ce71f.entry.js} +1 -1
  366. package/dist/ionic/{p-16799667.system.entry.js → p-2f43663c.system.entry.js} +1 -1
  367. package/dist/ionic/{p-6b1bd0c1.entry.js → p-308d9b4c.entry.js} +1 -1
  368. package/dist/ionic/p-322c5fb4.system.js +1 -1
  369. package/dist/ionic/{p-f2b8c349.system.entry.js → p-34093a29.system.entry.js} +1 -1
  370. package/dist/ionic/{p-f687573e.system.js → p-343b6b1d.system.js} +1 -1
  371. package/dist/ionic/{p-2bc73fb5.js → p-34b11c24.js} +1 -1
  372. package/dist/ionic/{p-b3680e2f.system.js → p-3ad285e3.system.js} +1 -1
  373. package/dist/ionic/{p-d4ca0475.js → p-3cc276f4.js} +1 -1
  374. package/dist/ionic/{p-afecb188.entry.js → p-442e3021.entry.js} +1 -1
  375. package/dist/ionic/{p-424eb140.system.entry.js → p-468b7fe5.system.entry.js} +1 -1
  376. package/dist/ionic/{p-4c252070.entry.js → p-46d78904.entry.js} +1 -1
  377. package/dist/ionic/{p-6d32975a.entry.js → p-48d2c8e3.entry.js} +1 -1
  378. package/dist/ionic/p-4c2d5b80.system.js +4 -0
  379. package/dist/ionic/p-4c98e2cf.system.js +4 -0
  380. package/dist/ionic/{p-2515cb4d.system.entry.js → p-4fb8b6f8.system.entry.js} +1 -1
  381. package/dist/ionic/{p-4ad78edc.entry.js → p-52d7a191.entry.js} +1 -1
  382. package/dist/ionic/{p-5b932840.entry.js → p-571f7efd.entry.js} +1 -1
  383. package/dist/ionic/{p-da8ef548.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
  384. package/dist/ionic/p-58fff30e.entry.js +4 -0
  385. package/dist/ionic/{p-6190d0d6.entry.js → p-59a63a7f.entry.js} +1 -1
  386. package/dist/ionic/{p-32e99b0a.entry.js → p-5a064906.entry.js} +1 -1
  387. package/dist/ionic/{p-9eee4de1.system.js → p-5c08627a.system.js} +1 -1
  388. package/dist/ionic/{p-7b96e5c1.system.entry.js → p-6270042b.system.entry.js} +1 -1
  389. package/dist/ionic/{p-f89cf011.system.entry.js → p-63b0abde.system.entry.js} +1 -1
  390. package/dist/ionic/{p-7458862e.system.entry.js → p-65493214.system.entry.js} +1 -1
  391. package/dist/ionic/p-67222c16.system.js +4 -0
  392. package/dist/ionic/{p-f301a694.system.entry.js → p-6b888f65.system.entry.js} +1 -1
  393. package/dist/ionic/p-6c95736e.entry.js +4 -0
  394. package/dist/ionic/{p-02e23f26.entry.js → p-6f0f433c.entry.js} +1 -1
  395. package/dist/ionic/p-702bc67d.entry.js +4 -0
  396. package/dist/ionic/{p-a4575db1.system.entry.js → p-71c66f13.system.entry.js} +1 -1
  397. package/dist/ionic/{p-7a1766d6.js → p-72812e99.js} +1 -1
  398. package/dist/ionic/p-72bc8a1c.js +4 -0
  399. package/dist/ionic/p-7513b0c4.js +4 -0
  400. package/dist/ionic/{p-803f0bc2.entry.js → p-766477e0.entry.js} +1 -1
  401. package/dist/ionic/{p-0397811d.entry.js → p-797204e3.entry.js} +1 -1
  402. package/dist/ionic/{p-14143257.entry.js → p-7a6eaf9e.entry.js} +1 -1
  403. package/dist/ionic/{p-fca17935.entry.js → p-7b9a2b23.entry.js} +1 -1
  404. package/dist/ionic/{p-95775830.entry.js → p-7d6d8f1f.entry.js} +1 -1
  405. package/dist/ionic/{p-a2b6dd57.system.js → p-7de1e42c.system.js} +1 -1
  406. package/dist/ionic/{p-0eb2553a.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
  407. package/dist/ionic/{p-95da3ae2.system.js → p-8635f5e6.system.js} +1 -1
  408. package/dist/ionic/{p-da074ff7.entry.js → p-89bf08c7.entry.js} +1 -1
  409. package/dist/ionic/{p-48a8d9b4.system.entry.js → p-8ac07653.system.entry.js} +2 -2
  410. package/dist/ionic/{p-c29f8157.system.entry.js → p-8cfba7e9.system.entry.js} +1 -1
  411. package/dist/ionic/{p-561ddcd4.system.entry.js → p-933727f9.system.entry.js} +2 -2
  412. package/dist/ionic/p-9343a445.js +4 -0
  413. package/dist/ionic/{p-57379000.entry.js → p-948e6c6a.entry.js} +1 -1
  414. package/dist/ionic/{p-265939f0.entry.js → p-959886ca.entry.js} +1 -1
  415. package/dist/ionic/{p-2507278c.system.entry.js → p-9659caca.system.entry.js} +1 -1
  416. package/dist/ionic/{p-dc146a2a.system.entry.js → p-985a7e17.system.entry.js} +1 -1
  417. package/dist/ionic/p-9fd14430.system.entry.js +4 -0
  418. package/dist/ionic/{p-3572f86a.system.entry.js → p-a090bce8.system.entry.js} +1 -1
  419. package/dist/ionic/{p-4452a8ac.system.js → p-a15ddedb.system.js} +1 -1
  420. package/dist/ionic/{p-a3c78186.system.entry.js → p-a2cc2247.system.entry.js} +1 -1
  421. package/dist/ionic/p-a3db8ee3.js +4 -0
  422. package/dist/ionic/{p-a0a4fc48.system.entry.js → p-a4a2420e.system.entry.js} +1 -1
  423. package/dist/ionic/{p-1a790eef.system.js → p-a88dec0d.system.js} +2 -2
  424. package/dist/ionic/p-a8f2c254.entry.js +4 -0
  425. package/dist/ionic/{p-4346c79d.system.entry.js → p-a9b68560.system.entry.js} +1 -1
  426. package/dist/ionic/{p-7b98cebe.entry.js → p-aacfc8f1.entry.js} +1 -1
  427. package/dist/ionic/{p-c1b51537.system.js → p-ada36597.system.js} +1 -1
  428. package/dist/ionic/{p-e2e19375.system.entry.js → p-b0dce4ab.system.entry.js} +1 -1
  429. package/dist/ionic/{p-45de8d2a.entry.js → p-b1eb86fd.entry.js} +1 -1
  430. package/dist/ionic/{p-e8232807.system.js → p-b3c60433.system.js} +1 -1
  431. package/dist/ionic/{p-bb11d9fb.js → p-b51e4004.js} +1 -1
  432. package/dist/ionic/{p-13dc21b0.js → p-b6efeab8.js} +1 -1
  433. package/dist/ionic/{p-af09741c.entry.js → p-b8427d77.entry.js} +1 -1
  434. package/dist/ionic/{p-9b3bb24e.entry.js → p-b9d7015f.entry.js} +1 -1
  435. package/dist/ionic/{p-d192fdf7.system.entry.js → p-bac6d8b8.system.entry.js} +1 -1
  436. package/dist/ionic/{p-2abae1cc.system.entry.js → p-c078a25d.system.entry.js} +1 -1
  437. package/dist/ionic/{p-c8d645b3.entry.js → p-c41ac815.entry.js} +1 -1
  438. package/dist/ionic/{p-340e3f24.system.js → p-c4238c12.system.js} +1 -1
  439. package/dist/ionic/p-c5d5571d.system.entry.js +4 -0
  440. package/dist/ionic/{p-57ceead7.entry.js → p-c8c015fa.entry.js} +1 -1
  441. package/dist/ionic/{p-dd0c9350.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
  442. package/dist/ionic/{p-51dec25d.js → p-cb13696c.js} +1 -1
  443. package/dist/ionic/{p-73dc4950.entry.js → p-d12c8b7c.entry.js} +1 -1
  444. package/dist/ionic/{p-76446a85.entry.js → p-d1918f92.entry.js} +1 -1
  445. package/dist/ionic/p-d1c5b60e.system.js +4 -0
  446. package/dist/ionic/{p-e1bbacb7.entry.js → p-d1d88a4a.entry.js} +1 -1
  447. package/dist/ionic/{p-881d9e52.system.js → p-d22e2a38.system.js} +1 -1
  448. package/dist/ionic/{p-c32644d7.entry.js → p-d3a4e061.entry.js} +1 -1
  449. package/dist/ionic/{p-1bbe8665.system.entry.js → p-d4c9f8f6.system.entry.js} +2 -2
  450. package/dist/ionic/{p-955c3eb8.entry.js → p-d7aa6b00.entry.js} +1 -1
  451. package/dist/ionic/{p-ed75fcfb.system.entry.js → p-d8a385f2.system.entry.js} +1 -1
  452. package/dist/ionic/{p-91f17b25.system.entry.js → p-e09d6392.system.entry.js} +2 -2
  453. package/dist/ionic/{p-b91acf8d.system.entry.js → p-e1ebcbb2.system.entry.js} +1 -1
  454. package/dist/ionic/{p-70ccc275.system.entry.js → p-e3e4ac8f.system.entry.js} +2 -2
  455. package/dist/ionic/{p-f42743d1.entry.js → p-e76dae93.entry.js} +1 -1
  456. package/dist/ionic/{p-77e7b7b6.system.entry.js → p-e7bfd50d.system.entry.js} +1 -1
  457. package/dist/ionic/p-e8d56122.js +4 -0
  458. package/dist/ionic/p-eb027b33.entry.js +4 -0
  459. package/dist/ionic/{p-26194519.entry.js → p-eb86eafb.entry.js} +1 -1
  460. package/dist/ionic/{p-fca6ef5f.system.entry.js → p-ed059cb7.system.entry.js} +1 -1
  461. package/dist/ionic/p-edbf38cf.entry.js +4 -0
  462. package/dist/ionic/{p-e97a3f44.entry.js → p-ef2b566d.entry.js} +1 -1
  463. package/dist/ionic/p-ef67a752.entry.js +4 -0
  464. package/dist/ionic/p-efe06d98.entry.js +4 -0
  465. package/dist/ionic/{p-82b931e2.entry.js → p-f0270b8c.entry.js} +1 -1
  466. package/dist/ionic/{p-ffc48bc5.system.entry.js → p-f03b3a76.system.entry.js} +1 -1
  467. package/dist/ionic/{p-02e1ebd9.js → p-f1c4dcd4.js} +1 -1
  468. package/dist/ionic/{p-62af944c.entry.js → p-f200c0f2.entry.js} +1 -1
  469. package/dist/ionic/{p-1bc65aec.system.entry.js → p-fd257e86.system.entry.js} +1 -1
  470. package/dist/types/components/checkbox/checkbox.d.ts +6 -0
  471. package/dist/types/components/modal/animations/sheet.d.ts +1 -0
  472. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  473. package/dist/types/components/modal/modal-interface.d.ts +1 -0
  474. package/dist/types/components/modal/modal.d.ts +11 -0
  475. package/dist/types/components/radio-group/radio-group.d.ts +15 -0
  476. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  477. package/dist/types/components/select/select.d.ts +6 -0
  478. package/dist/types/components/toggle/toggle.d.ts +6 -0
  479. package/dist/types/components/toolbar/toolbar.d.ts +4 -0
  480. package/dist/types/components.d.ts +48 -0
  481. package/dist/types/utils/config.d.ts +9 -0
  482. package/dist/types/utils/helpers.d.ts +0 -1
  483. package/dist/types/utils/logging/index.d.ts +13 -1
  484. package/hydrate/index.js +431 -209
  485. package/hydrate/index.mjs +431 -209
  486. package/package.json +2 -2
  487. package/dist/esm-es5/index-9b0d46f4.js +0 -4
  488. package/dist/esm-es5/input-shims-0e65111b.js +0 -4
  489. package/dist/esm-es5/md.transition-33826623.js +0 -4
  490. package/dist/esm-es5/status-tap-163e8128.js +0 -4
  491. package/dist/ionic/p-06fee233.js +0 -4
  492. package/dist/ionic/p-075a94bd.js +0 -4
  493. package/dist/ionic/p-0a59f4fa.entry.js +0 -4
  494. package/dist/ionic/p-0e43be1b.entry.js +0 -4
  495. package/dist/ionic/p-0ee3b5a2.system.js +0 -4
  496. package/dist/ionic/p-135e5731.js +0 -4
  497. package/dist/ionic/p-14be4015.entry.js +0 -4
  498. package/dist/ionic/p-16bfb979.system.entry.js +0 -4
  499. package/dist/ionic/p-1f405274.js +0 -4
  500. package/dist/ionic/p-25fa1d30.system.entry.js +0 -4
  501. package/dist/ionic/p-2c8798d0.entry.js +0 -4
  502. package/dist/ionic/p-2c9eb774.system.js +0 -4
  503. package/dist/ionic/p-49a0e74c.entry.js +0 -4
  504. package/dist/ionic/p-56da53ad.system.entry.js +0 -4
  505. package/dist/ionic/p-61d044b4.entry.js +0 -4
  506. package/dist/ionic/p-68dc53a5.js +0 -4
  507. package/dist/ionic/p-8a836849.entry.js +0 -4
  508. package/dist/ionic/p-b7433d7d.js +0 -4
  509. package/dist/ionic/p-cc700b6b.entry.js +0 -4
  510. package/dist/ionic/p-df862603.entry.js +0 -4
  511. package/dist/ionic/p-e308de5b.system.js +0 -4
  512. package/dist/ionic/p-fe7544d7.entry.js +0 -4
  513. package/dist/ionic/p-ff4b7e40.system.js +0 -4
package/hydrate/index.js CHANGED
@@ -2710,16 +2710,6 @@ const shallowEqualStringMap = (map1, map2) => {
2710
2710
  }
2711
2711
  return true;
2712
2712
  };
2713
- const getNextSiblingOfType = (element) => {
2714
- let sibling = element.nextSibling;
2715
- while (sibling) {
2716
- if (sibling.nodeType === Node.ELEMENT_NODE && sibling !== null) {
2717
- return sibling;
2718
- }
2719
- sibling = sibling.nextSibling;
2720
- }
2721
- return null;
2722
- };
2723
2713
 
2724
2714
  /* Ionicons v7.2.2, ES Modules */
2725
2715
  const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
@@ -3227,9 +3217,12 @@ let accordionIds = 0;
3227
3217
  * @param message - The string message to be logged to the console.
3228
3218
  */
3229
3219
  const printIonWarning = (message, ...params) => {
3230
- return console.warn(`[Ionic Warning]: ${message}`, ...params);
3220
+ const logLevel = config.get('logLevel', "WARN" /* LogLevel.WARN */);
3221
+ if (["WARN" /* LogLevel.WARN */].includes(logLevel)) {
3222
+ return console.warn(`[Ionic Warning]: ${message}`, ...params);
3223
+ }
3231
3224
  };
3232
- /*
3225
+ /**
3233
3226
  * Logs an error to the console with an Ionic prefix
3234
3227
  * to indicate the library that is warning the developer.
3235
3228
  *
@@ -3237,7 +3230,10 @@ const printIonWarning = (message, ...params) => {
3237
3230
  * @param params - Additional arguments to supply to the console.error.
3238
3231
  */
3239
3232
  const printIonError = (message, ...params) => {
3240
- return console.error(`[Ionic Error]: ${message}`, ...params);
3233
+ const logLevel = config.get('logLevel', "ERROR" /* LogLevel.ERROR */);
3234
+ if (["ERROR" /* LogLevel.ERROR */, "WARN" /* LogLevel.WARN */].includes(logLevel)) {
3235
+ return console.error(`[Ionic Error]: ${message}`, ...params);
3236
+ }
3241
3237
  };
3242
3238
  /**
3243
3239
  * Prints an error informing developers that an implementation requires an element to be used
@@ -7001,7 +6997,6 @@ class Alert {
7001
6997
  }
7002
6998
  }
7003
6999
  onKeydown(ev) {
7004
- var _a;
7005
7000
  const inputTypes = new Set(this.processedInputs.map((i) => i.type));
7006
7001
  /**
7007
7002
  * Based on keyboard navigation requirements, the
@@ -7011,17 +7006,6 @@ class Alert {
7011
7006
  ev.preventDefault();
7012
7007
  return;
7013
7008
  }
7014
- /**
7015
- * Ensure when alert container is being focused, and the user presses the tab + shift keys, the focus will be set to the last alert button.
7016
- */
7017
- if (ev.target.classList.contains('alert-wrapper')) {
7018
- if (ev.key === 'Tab' && ev.shiftKey) {
7019
- ev.preventDefault();
7020
- const lastChildBtn = (_a = this.wrapperEl) === null || _a === void 0 ? void 0 : _a.querySelector('.alert-button:last-child');
7021
- lastChildBtn.focus();
7022
- return;
7023
- }
7024
- }
7025
7009
  // The only inputs we want to navigate between using arrow keys are the radios
7026
7010
  // ignore the keydown event if it is not on a radio button
7027
7011
  if (!inputTypes.has('radio') ||
@@ -7153,16 +7137,7 @@ class Alert {
7153
7137
  async present() {
7154
7138
  const unlock = await this.lockController.lock();
7155
7139
  await this.delegateController.attachViewToDom();
7156
- await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4).then(() => {
7157
- var _a, _b;
7158
- if (this.buttons.length === 1 && this.inputs.length === 0) {
7159
- const queryBtn = (_a = this.wrapperEl) === null || _a === void 0 ? void 0 : _a.querySelector('.alert-button');
7160
- queryBtn.focus();
7161
- }
7162
- else {
7163
- (_b = this.wrapperEl) === null || _b === void 0 ? void 0 : _b.focus();
7164
- }
7165
- });
7140
+ await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4);
7166
7141
  unlock();
7167
7142
  }
7168
7143
  /**
@@ -7331,15 +7306,22 @@ class Alert {
7331
7306
  return (hAsync("div", { id: msgId, class: "alert-message" }, message));
7332
7307
  }
7333
7308
  render() {
7334
- const { overlayIndex, header, subHeader, htmlAttributes } = this;
7309
+ const { overlayIndex, header, subHeader, message, htmlAttributes } = this;
7335
7310
  const mode = getIonMode$1(this);
7336
7311
  const hdrId = `alert-${overlayIndex}-hdr`;
7337
- const msgId = `alert-${overlayIndex}-msg`;
7338
7312
  const subHdrId = `alert-${overlayIndex}-sub-hdr`;
7313
+ const msgId = `alert-${overlayIndex}-msg`;
7339
7314
  const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';
7340
- return (hAsync(Host, { key: 'cfdec302a5a41e0be269893f2779950224febde0', tabindex: "-1", style: {
7315
+ /**
7316
+ * Use both the header and subHeader ids if they are defined.
7317
+ * If only the header is defined, use the header id.
7318
+ * If only the subHeader is defined, use the subHeader id.
7319
+ * If neither are defined, do not set aria-labelledby.
7320
+ */
7321
+ const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
7322
+ return (hAsync(Host, Object.assign({ key: 'ad7e14b4f92a09387aa80abfb718a755e4e889d6', role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "-1" }, htmlAttributes, { style: {
7341
7323
  zIndex: `${20000 + overlayIndex}`,
7342
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '61e4f63c2e175307fb308fd261ef8d743ac1acc9', tappable: this.backdropDismiss }), hAsync("div", { key: '4a46c8e273a9aae7ffd6b271d40d929b15761427', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '159bb81330bfc3c1cd5ffbe805d7b13cb756bf28', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '49693b1422a4ff466a4a9c0861969baf6b8434e9', class: "alert-head" }, header && (hAsync("h2", { key: '23ab085efe070f789a6d85ec37854bde9fca3d41', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '51da5b75684b71eead8b7a19126a387a1bcfe733', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: 'f628a2b3cd58ade872b8716c051b529d614e5b41', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '9fe6e598de6a7d79f84d5d1d4efad595c773e082', tabindex: "0", "aria-hidden": "true" })));
7324
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '4b4693dca3c910aa9a61c4d90295d785ec6cbe3d', tappable: this.backdropDismiss }), hAsync("div", { key: '64fd19b8f1d8246dcc869053f858bc33506def4b', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'e61ba6f339c3a02cecd37d8b641ee5043018eb29', class: "alert-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '044e00667ffcb74aa2c5e0d0b42669c4004dbb4f', class: "alert-head" }, header && (hAsync("h2", { key: '1aaae8d58722c4cf5debb1f00415ab7ed0a52bbd', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '9c9854dc3b0ad40f1861a49b76d5636afcae9c74', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '19aaca9912f77cde4ae8079be210eda697ed8de1', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'a85d27c516f7cdbc85b19f40d2f0bd865490b6a7', tabindex: "0", "aria-hidden": "true" })));
7343
7325
  }
7344
7326
  get el() { return getElement(this); }
7345
7327
  static get watchers() { return {
@@ -8515,6 +8497,7 @@ class Checkbox {
8515
8497
  this.labelPlacement = 'start';
8516
8498
  this.justify = undefined;
8517
8499
  this.alignment = undefined;
8500
+ this.required = false;
8518
8501
  }
8519
8502
  componentWillLoad() {
8520
8503
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
@@ -8526,11 +8509,11 @@ class Checkbox {
8526
8509
  }
8527
8510
  }
8528
8511
  render() {
8529
- const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
8512
+ const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
8530
8513
  const mode = getIonMode$1(this);
8531
8514
  const path = getSVGPath(mode, indeterminate);
8532
8515
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8533
- return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8516
+ return (hAsync(Host, { key: '07a5884062dd256b570e856270c74a5a09d2f2a5', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8534
8517
  [mode]: true,
8535
8518
  'in-item': hostContext('ion-item', el),
8536
8519
  'checkbox-checked': checked,
@@ -8540,10 +8523,10 @@ class Checkbox {
8540
8523
  [`checkbox-justify-${justify}`]: justify !== undefined,
8541
8524
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8542
8525
  [`checkbox-label-placement-${labelPlacement}`]: true,
8543
- }), onClick: this.onClick }, hAsync("label", { key: '68222fb736a5ec3f2e488649b0e2ce0417dcb224', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: 'f12962d7e9b19c744cfdbdeccc67ae7f5d080281', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), hAsync("div", { key: 'c72df2699414b1e5a41a1bc267bc634f0c93dcff', class: {
8526
+ }), onClick: this.onClick }, hAsync("label", { key: '3439d546e8b60187421db698eab63a0bdd31c973', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: '9f45cf7dbdedcf01ec132c11e16979adb1aa102f', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: '4e882f98939cc4b7c7ab7459c751d3f4bb2023fe', class: {
8544
8527
  'label-text-wrapper': true,
8545
8528
  'label-text-wrapper-hidden': el.textContent === '',
8546
- }, part: "label" }, hAsync("slot", { key: 'a2a80285178a7e0e3b536fc9ca26b8b444aa4307' })), hAsync("div", { key: 'c2b05e0d1fe8df5dcd72858220b5ff51ecaee4cc', class: "native-wrapper" }, hAsync("svg", { key: 'ee24913fded72258ebd9713654a6dba92a18fcf7', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8529
+ }, part: "label" }, hAsync("slot", { key: '0abda81297a086d02c4a56af75005547971dfcfe' })), hAsync("div", { key: '36489ea3f48a7d0ec46b77c243f9f253ef5c2b3b', class: "native-wrapper" }, hAsync("svg", { key: '4c53b52f5e93752672a34eb6f180b75fa9af9046', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8547
8530
  }
8548
8531
  getSVGPath(mode, indeterminate) {
8549
8532
  let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -8570,6 +8553,7 @@ class Checkbox {
8570
8553
  "labelPlacement": [1, "label-placement"],
8571
8554
  "justify": [1],
8572
8555
  "alignment": [1],
8556
+ "required": [4],
8573
8557
  "setFocus": [64]
8574
8558
  },
8575
8559
  "$listeners$": undefined,
@@ -15917,11 +15901,11 @@ class ItemDivider {
15917
15901
  }
15918
15902
  render() {
15919
15903
  const mode = getIonMode$1(this);
15920
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15904
+ return (hAsync(Host, { key: '7cb307fb16d74eac6138460aad469d8aa2cb44aa', class: createColorClasses$1(this.color, {
15921
15905
  [mode]: true,
15922
15906
  'item-divider-sticky': this.sticky,
15923
15907
  item: true,
15924
- }) }, hAsync("slot", { key: 'eb50dfab74ab0fd13697db17ecd60e8fa0bf1750', name: "start" }), hAsync("div", { key: '2806efd89d086f4fb844a479d9c095e1e0775713', class: "item-divider-inner" }, hAsync("div", { key: '77b7d5fa987e5f1c26d8023cd1f974a8a263a3de', class: "item-divider-wrapper" }, hAsync("slot", { key: 'dbafb0deb140a19a2a9748fd5b48760c39c6fd2e' })), hAsync("slot", { key: 'ef9a848fe21e84ef21cd273b8a4d9f95f558175b', name: "end" }))));
15908
+ }) }, hAsync("slot", { key: '0f3e94dfa849350b9863d7fc4b68cb5cf1b3e205', name: "start" }), hAsync("div", { key: '3a806bbd2a569890a91c54fec6fe9cd6e69ec924', class: "item-divider-inner" }, hAsync("div", { key: '41df8574ba468669dd136a282195f281c4d181ff', class: "item-divider-wrapper" }, hAsync("slot", { key: '1e30568d695bc42595a71232a1baac6d9e8a598d' })), hAsync("slot", { key: '6f8e6b6fb3216bb1f1ac738931e3ba16654ca8d7', name: "end" }))));
15925
15909
  }
15926
15910
  get el() { return getElement(this); }
15927
15911
  static get style() { return {
@@ -15953,7 +15937,7 @@ class ItemGroup {
15953
15937
  }
15954
15938
  render() {
15955
15939
  const mode = getIonMode$1(this);
15956
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15940
+ return (hAsync(Host, { key: 'a95b74fed5ce0888eca195ed718f7bfaa53fa86c', role: "group", class: {
15957
15941
  [mode]: true,
15958
15942
  // Used internally for styling
15959
15943
  [`item-group-${mode}`]: true,
@@ -16021,12 +16005,12 @@ class ItemOption {
16021
16005
  href: this.href,
16022
16006
  target: this.target,
16023
16007
  };
16024
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
16008
+ return (hAsync(Host, { key: 'a5acf613ba8d0906abfb08a5865df845f7c82373', onClick: this.onClick, class: createColorClasses$1(this.color, {
16025
16009
  [mode]: true,
16026
16010
  'item-option-disabled': disabled,
16027
16011
  'item-option-expandable': expandable,
16028
16012
  'ion-activatable': true,
16029
- }) }, hAsync(TagType, Object.assign({ key: 'e4dfbb3048eed03a7f7e84c6f75545e0ca9b45fb' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: 'dffcf437fbdc15f2e7a19e60a015e90c73c8377d', class: "button-inner" }, hAsync("slot", { key: '48a23512e0601e062118d8b2c46c8bb96f25509f', name: "top" }), hAsync("div", { key: '952a9a9aa3a476aa1f4408d7e208bf9e916b8c30', class: "horizontal-wrapper" }, hAsync("slot", { key: 'f8d18a61c1ecec4a22a55443cf72bbc51383b64f', name: "start" }), hAsync("slot", { key: '1f9f219e6f879d2e0bf6d80cf0d3f518eb14ce0e', name: "icon-only" }), hAsync("slot", { key: 'a55adcdbe68131e5b1855c2dd45dd9454ab544fb' }), hAsync("slot", { key: '3c4c85a4fbb7efc797d8bc5adf6d238da022ff9f', name: "end" })), hAsync("slot", { key: '503c7e4b306745c523f57f24399ea06ba9b1e21d', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b0e270b0c4f3ff9f9b6d74bad12a9278d7633226' }))));
16013
+ }) }, hAsync(TagType, Object.assign({ key: 'cc0100d587cc4ba680d926d4754511c40a7b41be' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: 'bf2409257aec9994e5dd8e31ec40ada61970dd46', class: "button-inner" }, hAsync("slot", { key: 'c8cc3a3ffa5d586978860c3a6744232d8cb209c8', name: "top" }), hAsync("div", { key: '09fd76f4e25bb174540c68e67617b1676ea3039a', class: "horizontal-wrapper" }, hAsync("slot", { key: 'c9228eb1219a3130825bce989fb9ed40f3b4060b', name: "start" }), hAsync("slot", { key: '5afa4950062d8dafbe07073ecb49a3f3bb9ef840', name: "icon-only" }), hAsync("slot", { key: '25a2b5c35c83e617cfeba3d261c00505af5eb10c' }), hAsync("slot", { key: 'ac11cc02e44a335288d8f7d8ad4a7f09156f57b8', name: "end" })), hAsync("slot", { key: '45b086ba9a8ba1ee3e8f2f1b581120cabca80dc4', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '4def7e98ac861c98da78e3b47c9cdb17f1126a68' }))));
16030
16014
  }
16031
16015
  get el() { return getElement(this); }
16032
16016
  static get style() { return {
@@ -16073,7 +16057,7 @@ class ItemOptions {
16073
16057
  render() {
16074
16058
  const mode = getIonMode$1(this);
16075
16059
  const isEnd = isEndSide(this.side);
16076
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16060
+ return (hAsync(Host, { key: 'e73d542ea800d953373c478b287f90bac63c4a29', class: {
16077
16061
  [mode]: true,
16078
16062
  // Used internally for styling
16079
16063
  [`item-options-${mode}`]: true,
@@ -16535,7 +16519,7 @@ class ItemSliding {
16535
16519
  }
16536
16520
  render() {
16537
16521
  const mode = getIonMode$1(this);
16538
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16522
+ return (hAsync(Host, { key: 'b88f1f7cd0a5625dbccc0ee0f771c79a1338c5c8', class: {
16539
16523
  [mode]: true,
16540
16524
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16541
16525
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16644,13 +16628,13 @@ class Label {
16644
16628
  render() {
16645
16629
  const position = this.position;
16646
16630
  const mode = getIonMode$1(this);
16647
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16631
+ return (hAsync(Host, { key: 'aa8cda765cf7813b02adbc39cff7dec21fc2d730', class: createColorClasses$1(this.color, {
16648
16632
  [mode]: true,
16649
16633
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16650
16634
  [`label-${position}`]: position !== undefined,
16651
16635
  [`label-no-animate`]: this.noAnimate,
16652
16636
  'label-rtl': document.dir === 'rtl',
16653
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16637
+ }) }, hAsync("slot", { key: '297af5559f2ccb3b2d06ea00e074aa96c3e5235c' })));
16654
16638
  }
16655
16639
  get el() { return getElement(this); }
16656
16640
  static get watchers() { return {
@@ -16752,10 +16736,10 @@ class ListHeader {
16752
16736
  render() {
16753
16737
  const { lines } = this;
16754
16738
  const mode = getIonMode$1(this);
16755
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16739
+ return (hAsync(Host, { key: 'f6e2de02ec55e3c64d129a52fb154e9d4e36ea98', class: createColorClasses$1(this.color, {
16756
16740
  [mode]: true,
16757
16741
  [`list-header-lines-${lines}`]: lines !== undefined,
16758
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16742
+ }) }, hAsync("div", { key: 'a38b47618205ccdd76bb8e406e37522b1c087780', class: "list-header-inner" }, hAsync("slot", { key: '5afd06a7fbdf06bef5b7b27723515133fae66004' }))));
16759
16743
  }
16760
16744
  static get style() { return {
16761
16745
  ios: IonListHeaderIosStyle0,
@@ -17024,9 +17008,9 @@ class Loading {
17024
17008
  * Otherwise, don't set aria-labelledby.
17025
17009
  */
17026
17010
  const ariaLabelledBy = message !== undefined ? msgId : null;
17027
- return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17011
+ return (hAsync(Host, Object.assign({ key: '016c85ddadecf0f7e50912d42301e2b4ba940709', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17028
17012
  zIndex: `${40000 + this.overlayIndex}`,
17029
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '6cd39bd7912fd080ab59d041644054c96d238ea9', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'c14ca5a9308844f11bcb010257e15208a75b39bc', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '118bceefa8e1cf8b225a858f224e6d919cf03c26', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '490d6e8ae4433835fe273162d7b90deab944fb39', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'c5cf6549c43df4cb23814b3e62ec4d9e7ea2b64f', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '2b888362122d3b66b0492d53b0c21bd6a2a97501', tabindex: "0", "aria-hidden": "true" })));
17013
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'ffe727b8b32d635d21c625681b6048c42db9976b', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '0945a45abe13968854ead32235522a6f7d60ac28', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '0c0fd2a371250e0b49781c76147ee7a9c455dc9b', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'f78773f16ae5fbfdc1c7a98d70ac8eb1f71c7526', class: "loading-spinner" }, hAsync("ion-spinner", { key: '6381b30b3bde40f8bf39719f231679a72c2058ef', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '1d3ae05e6bb80756655c110c3332150c721963c3', tabindex: "0", "aria-hidden": "true" })));
17030
17014
  }
17031
17015
  get el() { return getElement(this); }
17032
17016
  static get watchers() { return {
@@ -18034,14 +18018,14 @@ class Menu {
18034
18018
  * the ionBackButton listener in the menu controller
18035
18019
  * will handle closing the menu when Escape is pressed.
18036
18020
  */
18037
- return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18021
+ return (hAsync(Host, { key: 'e67a2f0596e27d7ddf9ef4b65b14cc1b6d1572d2', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18038
18022
  [mode]: true,
18039
18023
  [`menu-type-${type}`]: true,
18040
18024
  'menu-enabled': !disabled,
18041
18025
  [`menu-side-${side}`]: true,
18042
18026
  'menu-pane-visible': isPaneVisible,
18043
18027
  'split-pane-side': hostContext('ion-split-pane', el),
18044
- } }, hAsync("div", { key: '894e680fe227534711128c7aca980964ddb5a08a', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'e9f5934518dc0cceaeadf1f2820614595fec6bc9' })), hAsync("ion-backdrop", { key: '7282077817657b1bb6c155f1404c0a519fece993', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
18028
+ } }, hAsync("div", { key: '976d3e7f93bc7946e835ddedc1645f2f83544c6c', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'e26aea346260736210604815139138f1c602add7' })), hAsync("ion-backdrop", { key: '7d27b0d2f01b2bd3dc3b3342e79c9207c82b1356', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
18045
18029
  }
18046
18030
  get el() { return getElement(this); }
18047
18031
  static get watchers() { return {
@@ -18144,7 +18128,7 @@ class MenuButton {
18144
18128
  type: this.type,
18145
18129
  };
18146
18130
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18147
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18131
+ return (hAsync(Host, { key: 'a2b925ae91161c18e95d2cb94f32ae7f9df60186', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18148
18132
  [mode]: true,
18149
18133
  button: true, // ion-buttons target .button
18150
18134
  'menu-button-hidden': hidden,
@@ -18153,7 +18137,7 @@ class MenuButton {
18153
18137
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18154
18138
  'ion-activatable': true,
18155
18139
  'ion-focusable': true,
18156
- }) }, hAsync("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, hAsync("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, hAsync("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
18140
+ }) }, hAsync("button", Object.assign({ key: '50335dd8aec7567cc9f7132a8583f3cd82398880' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '9f2ec8f6c7994c0fb5441ee104e42efde0795f38', class: "button-inner" }, hAsync("slot", { key: '00c044e0a9fb96761e8cff59cd0dbf5e4440f8e9' }, hAsync("ion-icon", { key: 'dc7c8c15f3a483c78dbf831dc9cd1bfd0c418ca2', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '733f0a1e0d6a145cfe405b73ebc68e1b0522aca5', type: "unbounded" }))));
18157
18141
  }
18158
18142
  get el() { return getElement(this); }
18159
18143
  static get style() { return {
@@ -18202,10 +18186,10 @@ class MenuToggle {
18202
18186
  render() {
18203
18187
  const mode = getIonMode$1(this);
18204
18188
  const hidden = this.autoHide && !this.visible;
18205
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18189
+ return (hAsync(Host, { key: 'bc1dfcc3a4d677e31d5b962567122c1912354dd3', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18206
18190
  [mode]: true,
18207
18191
  'menu-toggle-hidden': hidden,
18208
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18192
+ } }, hAsync("slot", { key: '4b2c290cbe8fd222249ea1e85c5f93fb9ab368f8' })));
18209
18193
  }
18210
18194
  static get style() { return IonMenuToggleStyle0; }
18211
18195
  static get cmpMeta() { return {
@@ -19045,7 +19029,7 @@ const computeDuration = (remaining, velocity) => {
19045
19029
  };
19046
19030
 
19047
19031
  const createSheetEnterAnimation = (opts) => {
19048
- const { currentBreakpoint, backdropBreakpoint } = opts;
19032
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
19049
19033
  /**
19050
19034
  * If the backdropBreakpoint is undefined, then the backdrop
19051
19035
  * should always fade in. If the backdropBreakpoint came before the
@@ -19065,7 +19049,16 @@ const createSheetEnterAnimation = (opts) => {
19065
19049
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
19066
19050
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
19067
19051
  ]);
19068
- return { wrapperAnimation, backdropAnimation };
19052
+ /**
19053
+ * This allows the content to be scrollable at any breakpoint.
19054
+ */
19055
+ const contentAnimation = !expandToScroll
19056
+ ? createAnimation('contentAnimation').keyframes([
19057
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
19058
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
19059
+ ])
19060
+ : undefined;
19061
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
19069
19062
  };
19070
19063
  const createSheetLeaveAnimation = (opts) => {
19071
19064
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -19100,22 +19093,68 @@ const createEnterAnimation$1 = () => {
19100
19093
  })
19101
19094
  .afterClearStyles(['pointer-events']);
19102
19095
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
19103
- return { backdropAnimation, wrapperAnimation };
19096
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19104
19097
  };
19105
19098
  /**
19106
19099
  * iOS Modal Enter Animation for the Card presentation style
19107
19100
  */
19108
19101
  const iosEnterAnimation$3 = (baseEl, opts) => {
19109
- const { presentingEl, currentBreakpoint } = opts;
19102
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19110
19103
  const root = getElementRoot(baseEl);
19111
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19104
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19112
19105
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19113
19106
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
19107
+ // The content animation is only added if scrolling is enabled for
19108
+ // all the breakpoints.
19109
+ !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19114
19110
  const baseAnimation = createAnimation('entering-base')
19115
19111
  .addElement(baseEl)
19116
19112
  .easing('cubic-bezier(0.32,0.72,0,1)')
19117
19113
  .duration(500)
19118
- .addAnimation(wrapperAnimation);
19114
+ .addAnimation([wrapperAnimation])
19115
+ .beforeAddWrite(() => {
19116
+ if (expandToScroll) {
19117
+ // Scroll can only be done when the modal is fully expanded.
19118
+ return;
19119
+ }
19120
+ /**
19121
+ * There are some browsers that causes flickering when
19122
+ * dragging the content when scroll is enabled at every
19123
+ * breakpoint. This is due to the wrapper element being
19124
+ * transformed off the screen and having a snap animation.
19125
+ *
19126
+ * A workaround is to clone the footer element and append
19127
+ * it outside of the wrapper element. This way, the footer
19128
+ * is still visible and the drag can be done without
19129
+ * flickering. The original footer is hidden until the modal
19130
+ * is dismissed. This maintains the animation of the footer
19131
+ * when the modal is dismissed.
19132
+ *
19133
+ * The workaround needs to be done before the animation starts
19134
+ * so there are no flickering issues.
19135
+ */
19136
+ const ionFooter = baseEl.querySelector('ion-footer');
19137
+ /**
19138
+ * This check is needed to prevent more than one footer
19139
+ * from being appended to the shadow root.
19140
+ * Otherwise, iOS and MD enter animations would append
19141
+ * the footer twice.
19142
+ */
19143
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19144
+ if (ionFooter && !ionFooterAlreadyAppended) {
19145
+ const footerHeight = ionFooter.clientHeight;
19146
+ const clonedFooter = ionFooter.cloneNode(true);
19147
+ baseEl.shadowRoot.appendChild(clonedFooter);
19148
+ ionFooter.style.setProperty('display', 'none');
19149
+ ionFooter.setAttribute('aria-hidden', 'true');
19150
+ // Padding is added to prevent some content from being hidden.
19151
+ const page = baseEl.querySelector('.ion-page');
19152
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19153
+ }
19154
+ });
19155
+ if (contentAnimation) {
19156
+ baseAnimation.addAnimation(contentAnimation);
19157
+ }
19119
19158
  if (presentingEl) {
19120
19159
  const isMobile = window.innerWidth < 768;
19121
19160
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19193,7 +19232,7 @@ const createLeaveAnimation$1 = () => {
19193
19232
  * iOS Modal Leave Animation
19194
19233
  */
19195
19234
  const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19196
- const { presentingEl, currentBreakpoint } = opts;
19235
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19197
19236
  const root = getElementRoot(baseEl);
19198
19237
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
19199
19238
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -19202,7 +19241,29 @@ const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19202
19241
  .addElement(baseEl)
19203
19242
  .easing('cubic-bezier(0.32,0.72,0,1)')
19204
19243
  .duration(duration)
19205
- .addAnimation(wrapperAnimation);
19244
+ .addAnimation(wrapperAnimation)
19245
+ .beforeAddWrite(() => {
19246
+ if (expandToScroll) {
19247
+ // Scroll can only be done when the modal is fully expanded.
19248
+ return;
19249
+ }
19250
+ /**
19251
+ * If expandToScroll is disabled, we need to swap
19252
+ * the visibility to the original, so the footer
19253
+ * dismisses with the modal and doesn't stay
19254
+ * until the modal is removed from the DOM.
19255
+ */
19256
+ const ionFooter = baseEl.querySelector('ion-footer');
19257
+ if (ionFooter) {
19258
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19259
+ ionFooter.style.removeProperty('display');
19260
+ ionFooter.removeAttribute('aria-hidden');
19261
+ clonedFooter.style.setProperty('display', 'none');
19262
+ clonedFooter.setAttribute('aria-hidden', 'true');
19263
+ const page = baseEl.querySelector('.ion-page');
19264
+ page.style.removeProperty('padding-bottom');
19265
+ }
19266
+ });
19206
19267
  if (presentingEl) {
19207
19268
  const isMobile = window.innerWidth < 768;
19208
19269
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19280,22 +19341,69 @@ const createEnterAnimation = () => {
19280
19341
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
19281
19342
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
19282
19343
  ]);
19283
- return { backdropAnimation, wrapperAnimation };
19344
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19284
19345
  };
19285
19346
  /**
19286
19347
  * Md Modal Enter Animation
19287
19348
  */
19288
19349
  const mdEnterAnimation$2 = (baseEl, opts) => {
19289
- const { currentBreakpoint } = opts;
19350
+ const { currentBreakpoint, expandToScroll } = opts;
19290
19351
  const root = getElementRoot(baseEl);
19291
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19352
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19292
19353
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19293
19354
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19294
- return createAnimation()
19355
+ // The content animation is only added if scrolling is enabled for
19356
+ // all the breakpoints.
19357
+ expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19358
+ const baseAnimation = createAnimation()
19295
19359
  .addElement(baseEl)
19296
19360
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
19297
19361
  .duration(280)
19298
- .addAnimation([backdropAnimation, wrapperAnimation]);
19362
+ .addAnimation([backdropAnimation, wrapperAnimation])
19363
+ .beforeAddWrite(() => {
19364
+ if (expandToScroll) {
19365
+ // Scroll can only be done when the modal is fully expanded.
19366
+ return;
19367
+ }
19368
+ /**
19369
+ * There are some browsers that causes flickering when
19370
+ * dragging the content when scroll is enabled at every
19371
+ * breakpoint. This is due to the wrapper element being
19372
+ * transformed off the screen and having a snap animation.
19373
+ *
19374
+ * A workaround is to clone the footer element and append
19375
+ * it outside of the wrapper element. This way, the footer
19376
+ * is still visible and the drag can be done without
19377
+ * flickering. The original footer is hidden until the modal
19378
+ * is dismissed. This maintains the animation of the footer
19379
+ * when the modal is dismissed.
19380
+ *
19381
+ * The workaround needs to be done before the animation starts
19382
+ * so there are no flickering issues.
19383
+ */
19384
+ const ionFooter = baseEl.querySelector('ion-footer');
19385
+ /**
19386
+ * This check is needed to prevent more than one footer
19387
+ * from being appended to the shadow root.
19388
+ * Otherwise, iOS and MD enter animations would append
19389
+ * the footer twice.
19390
+ */
19391
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19392
+ if (ionFooter && !ionFooterAlreadyAppended) {
19393
+ const footerHeight = ionFooter.clientHeight;
19394
+ const clonedFooter = ionFooter.cloneNode(true);
19395
+ baseEl.shadowRoot.appendChild(clonedFooter);
19396
+ ionFooter.style.setProperty('display', 'none');
19397
+ ionFooter.setAttribute('aria-hidden', 'true');
19398
+ // Padding is added to prevent some content from being hidden.
19399
+ const page = baseEl.querySelector('.ion-page');
19400
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19401
+ }
19402
+ });
19403
+ if (contentAnimation) {
19404
+ baseAnimation.addAnimation(contentAnimation);
19405
+ }
19406
+ return baseAnimation;
19299
19407
  };
19300
19408
 
19301
19409
  const createLeaveAnimation = () => {
@@ -19310,18 +19418,41 @@ const createLeaveAnimation = () => {
19310
19418
  * Md Modal Leave Animation
19311
19419
  */
19312
19420
  const mdLeaveAnimation$2 = (baseEl, opts) => {
19313
- const { currentBreakpoint } = opts;
19421
+ const { currentBreakpoint, expandToScroll } = opts;
19314
19422
  const root = getElementRoot(baseEl);
19315
19423
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
19316
19424
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19317
19425
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19318
- return createAnimation()
19426
+ const baseAnimation = createAnimation()
19319
19427
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
19320
19428
  .duration(200)
19321
- .addAnimation([backdropAnimation, wrapperAnimation]);
19429
+ .addAnimation([backdropAnimation, wrapperAnimation])
19430
+ .beforeAddWrite(() => {
19431
+ if (expandToScroll) {
19432
+ // Scroll can only be done when the modal is fully expanded.
19433
+ return;
19434
+ }
19435
+ /**
19436
+ * If expandToScroll is disabled, we need to swap
19437
+ * the visibility to the original, so the footer
19438
+ * dismisses with the modal and doesn't stay
19439
+ * until the modal is removed from the DOM.
19440
+ */
19441
+ const ionFooter = baseEl.querySelector('ion-footer');
19442
+ if (ionFooter) {
19443
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19444
+ ionFooter.style.removeProperty('display');
19445
+ ionFooter.removeAttribute('aria-hidden');
19446
+ clonedFooter.style.setProperty('display', 'none');
19447
+ clonedFooter.setAttribute('aria-hidden', 'true');
19448
+ const page = baseEl.querySelector('.ion-page');
19449
+ page.style.removeProperty('padding-bottom');
19450
+ }
19451
+ });
19452
+ return baseAnimation;
19322
19453
  };
19323
19454
 
19324
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19455
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19325
19456
  // Defaults for the sheet swipe animation
19326
19457
  const defaultBackdrop = [
19327
19458
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -19338,6 +19469,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19338
19469
  { offset: 1, transform: 'translateY(100%)' },
19339
19470
  ],
19340
19471
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
19472
+ CONTENT_KEYFRAMES: [
19473
+ { offset: 0, maxHeight: '100%' },
19474
+ { offset: 1, maxHeight: '0%' },
19475
+ ],
19341
19476
  };
19342
19477
  const contentEl = baseEl.querySelector('ion-content');
19343
19478
  const height = wrapperEl.clientHeight;
@@ -19345,10 +19480,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19345
19480
  let offset = 0;
19346
19481
  let canDismissBlocksGesture = false;
19347
19482
  const canDismissMaxStep = 0.95;
19348
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19349
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19350
19483
  const maxBreakpoint = breakpoints[breakpoints.length - 1];
19351
19484
  const minBreakpoint = breakpoints[0];
19485
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19486
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19487
+ const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
19352
19488
  const enableBackdrop = () => {
19353
19489
  baseEl.style.setProperty('pointer-events', 'auto');
19354
19490
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -19371,6 +19507,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19371
19507
  */
19372
19508
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
19373
19509
  };
19510
+ /**
19511
+ * Toggles the visible modal footer when `expandToScroll` is disabled.
19512
+ * @param footer The footer to show.
19513
+ */
19514
+ const swapFooterVisibility = (footer) => {
19515
+ const originalFooter = baseEl.querySelector('ion-footer');
19516
+ if (!originalFooter) {
19517
+ return;
19518
+ }
19519
+ const clonedFooter = wrapperEl.nextElementSibling;
19520
+ const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
19521
+ const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
19522
+ footerToShow.style.removeProperty('display');
19523
+ footerToShow.removeAttribute('aria-hidden');
19524
+ const page = baseEl.querySelector('.ion-page');
19525
+ if (footer === 'original') {
19526
+ page.style.removeProperty('padding-bottom');
19527
+ }
19528
+ else {
19529
+ const pagePadding = footerToShow.clientHeight;
19530
+ page.style.setProperty('padding-bottom', `${pagePadding}px`);
19531
+ }
19532
+ footerToHide.style.setProperty('display', 'none');
19533
+ footerToHide.setAttribute('aria-hidden', 'true');
19534
+ };
19374
19535
  /**
19375
19536
  * After the entering animation completes,
19376
19537
  * we need to set the animation to go from
@@ -19382,6 +19543,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19382
19543
  if (wrapperAnimation && backdropAnimation) {
19383
19544
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19384
19545
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19546
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19385
19547
  animation.progressStart(true, 1 - currentBreakpoint);
19386
19548
  /**
19387
19549
  * If backdrop is not enabled, then content
@@ -19398,7 +19560,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19398
19560
  disableBackdrop();
19399
19561
  }
19400
19562
  }
19401
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
19563
+ if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
19402
19564
  contentEl.scrollY = false;
19403
19565
  }
19404
19566
  const canStart = (detail) => {
@@ -19412,6 +19574,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19412
19574
  */
19413
19575
  const contentEl = findClosestIonContent(detail.event.target);
19414
19576
  currentBreakpoint = getCurrentBreakpoint();
19577
+ /**
19578
+ * If we have expandToScroll disabled, we should not allow the swipe gesture to start
19579
+ * if the content is being swiped.
19580
+ */
19581
+ if (!expandToScroll && contentEl) {
19582
+ return false;
19583
+ }
19415
19584
  if (currentBreakpoint === 1 && contentEl) {
19416
19585
  /**
19417
19586
  * The modal should never swipe to close on the content with a refresher.
@@ -19442,6 +19611,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19442
19611
  * Remove undefined check
19443
19612
  */
19444
19613
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
19614
+ /**
19615
+ * If expandToScroll is disabled, we need to swap
19616
+ * the footer visibility to the original, so if the modal
19617
+ * is dismissed, the footer dismisses with the modal
19618
+ * and doesn't stay on the screen after the modal is gone.
19619
+ */
19620
+ if (!expandToScroll) {
19621
+ swapFooterVisibility('original');
19622
+ }
19445
19623
  /**
19446
19624
  * If we are pulling down, then it is possible we are pulling on the content.
19447
19625
  * We do not want scrolling to happen at the same time as the gesture.
@@ -19557,6 +19735,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19557
19735
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
19558
19736
  },
19559
19737
  ]);
19738
+ if (contentAnimation) {
19739
+ /**
19740
+ * The modal content should scroll at any breakpoint when expandToScroll
19741
+ * is disabled. In order to do this, the content needs to be completely
19742
+ * viewable so scrolling can access everything. Otherwise, the default
19743
+ * behavior would show the content off the screen and only allow
19744
+ * scrolling when the sheet is fully expanded.
19745
+ */
19746
+ contentAnimation.keyframes([
19747
+ { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
19748
+ { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
19749
+ ]);
19750
+ }
19560
19751
  animation.progressStep(0);
19561
19752
  }
19562
19753
  /**
@@ -19564,6 +19755,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19564
19755
  * snapping animation completes.
19565
19756
  */
19566
19757
  gesture.enable(false);
19758
+ /**
19759
+ * If expandToScroll is disabled, we need to swap
19760
+ * the footer visibility to the cloned one so the footer
19761
+ * doesn't flicker when the sheet's height is animated.
19762
+ */
19763
+ if (!expandToScroll && shouldRemainOpen) {
19764
+ swapFooterVisibility('cloned');
19765
+ }
19567
19766
  if (shouldPreventDismiss) {
19568
19767
  handleCanDismiss(baseEl, animation);
19569
19768
  }
@@ -19571,13 +19770,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19571
19770
  onDismiss();
19572
19771
  }
19573
19772
  /**
19574
- * If the sheet is going to be fully expanded then we should enable
19575
- * scrolling immediately. The sheet modal animation takes ~500ms to finish
19576
- * so if we wait until then there is a visible delay for when scrolling is
19577
- * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
19578
- * as the gesture is released, so we align with that.
19773
+ * Enables scrolling immediately if the sheet is about to fully expand
19774
+ * or if it allows scrolling at any breakpoint. Without this, there would
19775
+ * be a ~500ms delay while the modal animation completes, causing a
19776
+ * noticeable lag. Native iOS allows scrolling as soon as the gesture is
19777
+ * released, so we align with that behavior.
19579
19778
  */
19580
- if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
19779
+ if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
19581
19780
  contentEl.scrollY = true;
19582
19781
  }
19583
19782
  return new Promise((resolve) => {
@@ -19595,6 +19794,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19595
19794
  raf(() => {
19596
19795
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19597
19796
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19797
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19598
19798
  animation.progressStart(true, 1 - snapToBreakpoint);
19599
19799
  currentBreakpoint = snapToBreakpoint;
19600
19800
  onBreakpointChange(currentBreakpoint);
@@ -19647,10 +19847,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19647
19847
  };
19648
19848
  };
19649
19849
 
19650
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
19850
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
19651
19851
  var IonModalIosStyle0 = modalIosCss;
19652
19852
 
19653
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19853
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19654
19854
  var IonModalMdStyle0 = modalMdCss;
19655
19855
 
19656
19856
  // TODO(FW-2832): types
@@ -19729,6 +19929,7 @@ class Modal {
19729
19929
  this.enterAnimation = undefined;
19730
19930
  this.leaveAnimation = undefined;
19731
19931
  this.breakpoints = undefined;
19932
+ this.expandToScroll = true;
19732
19933
  this.initialBreakpoint = undefined;
19733
19934
  this.backdropBreakpoint = 0;
19734
19935
  this.handle = undefined;
@@ -19944,6 +20145,7 @@ class Modal {
19944
20145
  presentingEl: presentingElement,
19945
20146
  currentBreakpoint: this.initialBreakpoint,
19946
20147
  backdropBreakpoint: this.backdropBreakpoint,
20148
+ expandToScroll: this.expandToScroll,
19947
20149
  });
19948
20150
  /* tslint:disable-next-line */
19949
20151
  if (typeof window !== 'undefined') {
@@ -19994,7 +20196,10 @@ class Modal {
19994
20196
  // should be in the DOM and referenced by now, except
19995
20197
  // for the presenting el
19996
20198
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
19997
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
20199
+ const ani = (this.animation = animationBuilder(el, {
20200
+ presentingEl: this.presentingElement,
20201
+ expandToScroll: this.expandToScroll,
20202
+ }));
19998
20203
  const contentEl = findIonContent(el);
19999
20204
  if (!contentEl) {
20000
20205
  printIonContentErrorMsg(el);
@@ -20039,9 +20244,10 @@ class Modal {
20039
20244
  presentingEl: this.presentingElement,
20040
20245
  currentBreakpoint: initialBreakpoint,
20041
20246
  backdropBreakpoint,
20247
+ expandToScroll: this.expandToScroll,
20042
20248
  }));
20043
20249
  ani.progressStart(true, 1);
20044
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20250
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20045
20251
  if (this.currentBreakpoint !== breakpoint) {
20046
20252
  this.currentBreakpoint = breakpoint;
20047
20253
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -20119,6 +20325,7 @@ class Modal {
20119
20325
  presentingEl: presentingElement,
20120
20326
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
20121
20327
  backdropBreakpoint: this.backdropBreakpoint,
20328
+ expandToScroll: this.expandToScroll,
20122
20329
  });
20123
20330
  if (dismissed) {
20124
20331
  const { delegate } = this.getDelegate();
@@ -20204,23 +20411,23 @@ class Modal {
20204
20411
  return true;
20205
20412
  }
20206
20413
  render() {
20207
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
20414
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
20208
20415
  const showHandle = handle !== false && isSheetModal;
20209
20416
  const mode = getIonMode$1(this);
20210
20417
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20211
20418
  const isHandleCycle = handleBehavior === 'cycle';
20212
- return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20419
+ return (hAsync(Host, Object.assign({ key: 'b58b683d13292c390c480a374a26995052914f94', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20213
20420
  zIndex: `${20000 + this.overlayIndex}`,
20214
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), hAsync("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
20421
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), hAsync("ion-backdrop", { key: '5e89f1e24ab04c68e517941a9b1fbda8bf9cb4cc', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '807f6b6fce3792a2b1e1b0e18c3de96954477f58', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'd3dbe8e9a297fef87a6dc155211b6be0cb9f249c',
20215
20422
  /*
20216
20423
  role and aria-modal must be used on the
20217
20424
  same element. They must also be set inside the
20218
20425
  shadow DOM otherwise ion-button will not be highlighted
20219
20426
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20220
20427
  */
20221
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
20428
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '12964306d8e911a0777bb87c2e3ea906a85596c2', class: "modal-handle",
20222
20429
  // Prevents the handle from receiving keyboard focus when it does not cycle
20223
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
20430
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: 'c59a436723e37414b686763a73fa89b174f9bb39' }))));
20224
20431
  }
20225
20432
  get el() { return getElement(this); }
20226
20433
  static get watchers() { return {
@@ -20242,6 +20449,7 @@ class Modal {
20242
20449
  "enterAnimation": [16],
20243
20450
  "leaveAnimation": [16],
20244
20451
  "breakpoints": [16],
20452
+ "expandToScroll": [4, "expand-to-scroll"],
20245
20453
  "initialBreakpoint": [2, "initial-breakpoint"],
20246
20454
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
20247
20455
  "handle": [4],
@@ -21169,7 +21377,7 @@ class Nav {
21169
21377
  }
21170
21378
  }
21171
21379
  render() {
21172
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21380
+ return hAsync("slot", { key: 'bd958b6ade20eaadbfc9df2bd39629e3f85a1128' });
21173
21381
  }
21174
21382
  get el() { return getElement(this); }
21175
21383
  static get watchers() { return {
@@ -21242,7 +21450,7 @@ class NavLink {
21242
21450
  this.routerAnimation = undefined;
21243
21451
  }
21244
21452
  render() {
21245
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21453
+ return hAsync(Host, { key: 'c43e6b9325e3a38452f0eded9d77a58ee57104e4', onClick: this.onClick });
21246
21454
  }
21247
21455
  get el() { return getElement(this); }
21248
21456
  static get cmpMeta() { return {
@@ -21276,9 +21484,9 @@ class Note {
21276
21484
  }
21277
21485
  render() {
21278
21486
  const mode = getIonMode$1(this);
21279
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21487
+ return (hAsync(Host, { key: 'c9a8080cca174d0e5604940507d99e7d45f54e54', class: createColorClasses$1(this.color, {
21280
21488
  [mode]: true,
21281
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21489
+ }) }, hAsync("slot", { key: '9f2a060467de809c4da1882cdcc219a0328d3b7d' })));
21282
21490
  }
21283
21491
  static get style() { return {
21284
21492
  ios: IonNoteIosStyle0,
@@ -22043,11 +22251,11 @@ class Picker {
22043
22251
  render() {
22044
22252
  const { htmlAttributes } = this;
22045
22253
  const mode = getIonMode$1(this);
22046
- return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22254
+ return (hAsync(Host, Object.assign({ key: 'c823f926c4d2b82628024346646fceca1191cdef', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22047
22255
  zIndex: `${20000 + this.overlayIndex}`,
22048
22256
  }, class: Object.assign({ [mode]: true,
22049
22257
  // Used internally for styling
22050
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'c997632ef0488698739664012de5a6494de438b6', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '20045054a76cca997b410835fa6b305af22dcb12', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'a73a6ac20b685ed9694d4fa95ea236ce5d63fdbf', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '1221cdcc2ff013deeba12170129c8fe78308330c', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '45038a58430a4251100797b902e7034243137564', class: "picker-columns" }, hAsync("div", { key: 'c579bb69cddd4090912855ffd7f59536280f34b9', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '978c6632d82a97d053b729c9de65dd3af4c4cee2', class: "picker-below-highlight" }))), hAsync("div", { key: 'e7e9dc437a3cf6d559e2cb0df71af69047a2ae31', tabindex: "0", "aria-hidden": "true" })));
22258
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '03200d82bd8449103fb7c2ee2b6d6e57db0b5559', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '0d5542240826b2525a32496ad4d1070466ba884b', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '66cccbda315bbb64c52b81aa88d3169456cf8883', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: 'd077c6376c7576723ea9a1137a975aae891d037b', 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: 'fd5157aface1ee5530e11e36fdbc861d4365b184', class: "picker-columns" }, hAsync("div", { key: '477638622d52c3d340f841b29c9e36997b95e2f4', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '50a6646f5d3d0a864c2061f461d03143b0ee4aec', class: "picker-below-highlight" }))), hAsync("div", { key: '10952d6729077f9e68523a6a77f89297acf6fc47', tabindex: "0", "aria-hidden": "true" })));
22051
22259
  }
22052
22260
  get el() { return getElement(this); }
22053
22261
  static get watchers() { return {
@@ -23022,9 +23230,9 @@ class PickerColumnCmp {
23022
23230
  render() {
23023
23231
  const col = this.col;
23024
23232
  const mode = getIonMode$1(this);
23025
- return (hAsync(Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
23233
+ return (hAsync(Host, { key: '93b0e0ed5bef792e165fd710996ae83ec99e0f49', 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: {
23026
23234
  'max-width': this.col.columnWidth,
23027
- } }, col.prefix && (hAsync("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
23235
+ } }, col.prefix && (hAsync("div", { key: 'd9ed2d7bef6bcfd04afe865c929148beaf2957d9', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '1e423c0781f299fc64419d593e1ed56540f0bd36', 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: '87a522206a6e8303ca889216c48b113d5c49ed9a', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
23028
23236
  }
23029
23237
  get el() { return getElement(this); }
23030
23238
  static get watchers() { return {
@@ -23128,10 +23336,10 @@ class PickerColumnOption {
23128
23336
  render() {
23129
23337
  const { color, disabled, ariaLabel } = this;
23130
23338
  const mode = getIonMode$1(this);
23131
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23339
+ return (hAsync(Host, { key: '19dec7c5fa1f464ff09fa97451c94c11ef1432a4', class: createColorClasses$1(color, {
23132
23340
  [mode]: true,
23133
23341
  ['option-disabled']: disabled,
23134
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23342
+ }) }, hAsync("button", { key: 'c8363bb865cdcafac7fef0970ba64ebe17f82fb6', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0ed822ecb983dcb88c0fa4e9d2d6970566d9b55' }))));
23135
23343
  }
23136
23344
  get el() { return getElement(this); }
23137
23345
  static get watchers() { return {
@@ -24445,9 +24653,9 @@ class Popover {
24445
24653
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24446
24654
  const desktop = isPlatform('desktop');
24447
24655
  const enableArrow = arrow && !parentPopover;
24448
- return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24656
+ return (hAsync(Host, Object.assign({ key: '135246fb813a5040e13225706eeee1310b212ff0', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24449
24657
  zIndex: `${20000 + this.overlayIndex}`,
24450
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: '12b3ffa3928b4d56a4f09c3d2f5d493d47b45255', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '2c2862d5c7e75b637973c712b4982bf4978c0cdf', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '0cfacc52afaa7abc28c1b7742889d7a1c23a37ad', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '3ef570c44d4fe7f063dd419008c92c8c40d3cd22', class: "popover-content", part: "content" }, hAsync("slot", { key: '6fc5dfdce20fee1642bc1f05d41b5bf7d1034457' })))));
24658
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: '2d7b7658b01cc68073d601bfc60223c11e7ac17a', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'ca01271efd4fe554f32a489fbcdfa86c3bc272da', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '65567194726f62e74c3af77611230616b239cd64', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '89321d71a93ea3849edcde9c763690523d1358c8', class: "popover-content", part: "content" }, hAsync("slot", { key: '765b44ef54d422572fef6e119c115ee20623a292' })))));
24451
24659
  }
24452
24660
  get el() { return getElement(this); }
24453
24661
  static get watchers() { return {
@@ -24539,7 +24747,7 @@ class ProgressBar {
24539
24747
  const mode = getIonMode$1(this);
24540
24748
  // If the progress is displayed as a solid bar.
24541
24749
  const progressSolid = buffer === 1;
24542
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24750
+ return (hAsync(Host, { key: 'd92ae727ceb9849199fb949ab831bb6833a68085', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24543
24751
  [mode]: true,
24544
24752
  [`progress-bar-${type}`]: true,
24545
24753
  'progress-paused': paused,
@@ -24709,7 +24917,7 @@ class Radio {
24709
24917
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24710
24918
  const mode = getIonMode$1(this);
24711
24919
  const inItem = hostContext('ion-item', el);
24712
- return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24920
+ return (hAsync(Host, { key: 'c9c6410852560d664372af5ff28e778fc82748f1', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24713
24921
  [mode]: true,
24714
24922
  'in-item': inItem,
24715
24923
  'radio-checked': checked,
@@ -24720,10 +24928,10 @@ class Radio {
24720
24928
  // Focus and active styling should not apply when the radio is in an item
24721
24929
  'ion-activatable': !inItem,
24722
24930
  'ion-focusable': !inItem,
24723
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'f5673a798e6d87868339f046445f707e1d93b7b6', class: "radio-wrapper" }, hAsync("div", { key: 'e9190c06f75a171cab63e3f74ccf771c3ed87005', class: {
24931
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'b7483c1bd096942d3f14fc6d13c7c0bb3b367e42', class: "radio-wrapper" }, hAsync("div", { key: '3b978fa691b0ec49c8d04bf6c966cc7c034b111c', class: {
24724
24932
  'label-text-wrapper': true,
24725
24933
  'label-text-wrapper-hidden': !hasLabel,
24726
- }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24934
+ }, part: "label" }, hAsync("slot", { key: 'c1553adfaf6ed22261654fd04491ea18dc727144' })), hAsync("div", { key: '2defa43821d151d8130683b6b9859aca6ed944d1', class: "native-wrapper" }, this.renderRadioControl()))));
24727
24935
  }
24728
24936
  get el() { return getElement(this); }
24729
24937
  static get watchers() { return {
@@ -24756,12 +24964,20 @@ class Radio {
24756
24964
  }
24757
24965
  let radioButtonIds = 0;
24758
24966
 
24967
+ const radioGroupIosCss = "ion-radio-group{display:block}.supporting-text{line-height:1.5}.error-text{display:none;color:var(--ion-color-danger, #eb445a)}.helper-text{display:block;color:var(--ion-color-step-550, #737373)}.ion-touched.ion-invalid .error-text{display:block}.ion-touched.ion-invalid .helper-text{display:none}ion-list .supporting-text{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
24968
+ var IonRadioGroupIosStyle0 = radioGroupIosCss;
24969
+
24970
+ const radioGroupMdCss = "ion-radio-group{display:block}.supporting-text{line-height:1.5}.error-text{display:none;color:var(--ion-color-danger, #eb445a)}.helper-text{display:block;color:var(--ion-color-step-550, #737373)}.ion-touched.ion-invalid .error-text{display:block}.ion-touched.ion-invalid .helper-text{display:none}ion-list .supporting-text{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
24971
+ var IonRadioGroupMdStyle0 = radioGroupMdCss;
24972
+
24759
24973
  class RadioGroup {
24760
24974
  constructor(hostRef) {
24761
24975
  registerInstance(this, hostRef);
24762
24976
  this.ionChange = createEvent(this, "ionChange", 7);
24763
24977
  this.ionValueChange = createEvent(this, "ionValueChange", 7);
24764
24978
  this.inputId = `ion-rg-${radioGroupIds++}`;
24979
+ this.helperTextId = `${this.inputId}-helper-text`;
24980
+ this.errorTextId = `${this.inputId}-error-text`;
24765
24981
  this.labelId = `${this.inputId}-lbl`;
24766
24982
  this.setRadioTabindex = (value) => {
24767
24983
  const radios = this.getRadios();
@@ -24813,6 +25029,8 @@ class RadioGroup {
24813
25029
  this.compareWith = undefined;
24814
25030
  this.name = this.inputId;
24815
25031
  this.value = undefined;
25032
+ this.helperText = undefined;
25033
+ this.errorText = undefined;
24816
25034
  }
24817
25035
  valueChanged(value) {
24818
25036
  this.setRadioTabindex(value);
@@ -24911,24 +25129,51 @@ class RadioGroup {
24911
25129
  const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24912
25130
  radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24913
25131
  }
25132
+ /**
25133
+ * Renders the helper text or error text values
25134
+ */
25135
+ renderHintText() {
25136
+ const { helperText, errorText, helperTextId, errorTextId } = this;
25137
+ const hasHintText = !!helperText || !!errorText;
25138
+ if (!hasHintText) {
25139
+ return;
25140
+ }
25141
+ return (hAsync("div", { class: "supporting-text" }, hAsync("div", { id: helperTextId, class: "helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text" }, errorText)));
25142
+ }
25143
+ getHintTextID() {
25144
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
25145
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
25146
+ return errorTextId;
25147
+ }
25148
+ if (helperText) {
25149
+ return helperTextId;
25150
+ }
25151
+ return undefined;
25152
+ }
24914
25153
  render() {
24915
25154
  const { label, labelId, el, name, value } = this;
24916
25155
  const mode = getIonMode$1(this);
24917
25156
  renderHiddenInput(true, el, name, value, false);
24918
- return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
25157
+ return (hAsync(Host, { key: 'cac92777297029d7fd1b6af264d92850e35dfbba', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("slot", { key: '7f9bd643f5e29ca4b7dee8abd65da88118740192' })));
24919
25158
  }
24920
25159
  get el() { return getElement(this); }
24921
25160
  static get watchers() { return {
24922
25161
  "value": ["valueChanged"]
24923
25162
  }; }
25163
+ static get style() { return {
25164
+ ios: IonRadioGroupIosStyle0,
25165
+ md: IonRadioGroupMdStyle0
25166
+ }; }
24924
25167
  static get cmpMeta() { return {
24925
- "$flags$": 0,
25168
+ "$flags$": 36,
24926
25169
  "$tagName$": "ion-radio-group",
24927
25170
  "$members$": {
24928
25171
  "allowEmptySelection": [4, "allow-empty-selection"],
24929
25172
  "compareWith": [1, "compare-with"],
24930
25173
  "name": [1],
24931
25174
  "value": [1032],
25175
+ "helperText": [1, "helper-text"],
25176
+ "errorText": [1, "error-text"],
24932
25177
  "setFocus": [64]
24933
25178
  },
24934
25179
  "$listeners$": [[4, "keydown", "onKeydown"]],
@@ -25548,7 +25793,7 @@ class Range {
25548
25793
  const needsEndAdjustment = inItem && !hasEndContent;
25549
25794
  const mode = getIonMode$1(this);
25550
25795
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25551
- return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25796
+ return (hAsync(Host, { key: '657e59ea74a41a279f96f3fe50752541941b3d00', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25552
25797
  [mode]: true,
25553
25798
  'in-item': inItem,
25554
25799
  'range-disabled': disabled,
@@ -25557,10 +25802,10 @@ class Range {
25557
25802
  [`range-label-placement-${labelPlacement}`]: true,
25558
25803
  'range-item-start-adjustment': needsStartAdjustment,
25559
25804
  'range-item-end-adjustment': needsEndAdjustment,
25560
- }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25805
+ }) }, hAsync("label", { key: '96ad0cfec290bd25456925927e7638a0659a00c9', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'ca61076e921551c5de35c9d23262326a94c90ec5', class: {
25561
25806
  'label-text-wrapper': true,
25562
25807
  'label-text-wrapper-hidden': !hasLabel,
25563
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '87df1037b6b3337bd1fab05d33a26bf658c57914', class: "native-wrapper" }, hAsync("slot", { key: '2cb88f101da49b70aeae29b0bf5445fac241bb2f', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '17b835cfb2bd9b8e1957afd425543ff02b913d83', name: "end" })))));
25808
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '8f0f832bff583f68d65a25d3c8e92559edd5c134', class: "native-wrapper" }, hAsync("slot", { key: '4faaa86fd7e912f10ce19fc4ae47ed3407240585', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'a78d24ceb84ea094a37dc45f912bc457de3ee3e3', name: "end" })))));
25564
25809
  }
25565
25810
  get el() { return getElement(this); }
25566
25811
  static get watchers() { return {
@@ -26461,7 +26706,7 @@ class Refresher {
26461
26706
  }
26462
26707
  render() {
26463
26708
  const mode = getIonMode$1(this);
26464
- return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26709
+ return (hAsync(Host, { key: 'a3ef3ff131f96f85b27a3aba05aa6d5341e7abf8', slot: "fixed", class: {
26465
26710
  [mode]: true,
26466
26711
  // Used internally for styling
26467
26712
  [`refresher-${mode}`]: true,
@@ -26689,7 +26934,7 @@ class RefresherContent {
26689
26934
  const pullingIcon = this.pullingIcon;
26690
26935
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26691
26936
  const mode = getIonMode$1(this);
26692
- return (hAsync(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, hAsync("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, hAsync("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, hAsync("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26937
+ return (hAsync(Host, { key: '3f39dbc86521bbbe306cabeb2173fc50a2608650', class: mode }, hAsync("div", { key: '854c88a15d009d50b671c462d06a71dd328b29b7', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'a7ca7d3a4fad085ea52fd50b9a603562582b01f8', class: "refresher-pulling-icon" }, hAsync("div", { key: '0a9233c62be54d7fe9d9fc149dc980853ce70e30', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '799dcda1fbe21384eb1b71adacd77fc6e572dd97', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '6fd197609d90f3588206d6c37c7d4629d6d95158', class: "arrow-container" }, hAsync("ion-icon", { key: '2ed5ed7934cd34d655bb9decd490a02629ece58a', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'abcab0502dd83fd7804f6046e0218744e028747d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: '4c1c52856bd9a1730cd911b111a20a8a4bb2f8a5', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: '4bea8d0f376c246ff967bd42a67d083e424bc4b8', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: '887c40075bb7b9867b7dd75c87ef56076a1004fa', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: 'd631774dd81cd16254f1d50eb90069f952db3e13', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26693
26938
  }
26694
26939
  get el() { return getElement(this); }
26695
26940
  static get cmpMeta() { return {
@@ -26732,7 +26977,7 @@ class Reorder {
26732
26977
  render() {
26733
26978
  const mode = getIonMode$1(this);
26734
26979
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26735
- return (hAsync(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, hAsync("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, hAsync("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26980
+ return (hAsync(Host, { key: 'b99138409354d1d74f62005ed067ef2edcb5167f', class: mode }, hAsync("slot", { key: 'dcd6d99f8103414767458b3eb4aac8bb6e2eebab' }, hAsync("ion-icon", { key: 'ec70966b5b489e5604f3e1e25aba1916953b27ba', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26736
26981
  }
26737
26982
  get el() { return getElement(this); }
26738
26983
  static get style() { return {
@@ -26986,7 +27231,7 @@ class ReorderGroup {
26986
27231
  }
26987
27232
  render() {
26988
27233
  const mode = getIonMode$1(this);
26989
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
27234
+ return (hAsync(Host, { key: '7c2a33e57dff31ad71bab015eb086a5348453ba5', class: {
26990
27235
  [mode]: true,
26991
27236
  'reorder-enabled': !this.disabled,
26992
27237
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -27094,7 +27339,7 @@ class RippleEffect {
27094
27339
  }
27095
27340
  render() {
27096
27341
  const mode = getIonMode$1(this);
27097
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
27342
+ return (hAsync(Host, { key: '17c87440165ecda9c2e6fb93e48eb252dcc25a96', role: "presentation", class: {
27098
27343
  [mode]: true,
27099
27344
  unbounded: this.unbounded,
27100
27345
  } }));
@@ -28036,10 +28281,10 @@ class RouterLink {
28036
28281
  rel: this.rel,
28037
28282
  target: this.target,
28038
28283
  };
28039
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
28284
+ return (hAsync(Host, { key: '369e9502b2a95159b162d85bd498c7ae5f04a27a', onClick: this.onClick, class: createColorClasses$1(this.color, {
28040
28285
  [mode]: true,
28041
28286
  'ion-activatable': true,
28042
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
28287
+ }) }, hAsync("a", Object.assign({ key: 'f479cde56291938b5ca7bba6891d2cbf21f82c81' }, attrs), hAsync("slot", { key: '7f46ea35e0c4ac19f0ccfe593ef3706dec0e3b2e' }))));
28043
28288
  }
28044
28289
  static get style() { return IonRouterLinkStyle0; }
28045
28290
  static get cmpMeta() { return {
@@ -28234,7 +28479,7 @@ class RouterOutlet {
28234
28479
  return true;
28235
28480
  }
28236
28481
  render() {
28237
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
28482
+ return hAsync("slot", { key: '6a9003284c80d75b9945d508c8a3d56bbf283948' });
28238
28483
  }
28239
28484
  get el() { return getElement(this); }
28240
28485
  static get watchers() { return {
@@ -28268,7 +28513,7 @@ class Row {
28268
28513
  registerInstance(this, hostRef);
28269
28514
  }
28270
28515
  render() {
28271
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28516
+ return (hAsync(Host, { key: '3d11237af000c5670007ff4a9b7b18e66e32aafd', class: getIonMode$1(this) }, hAsync("slot", { key: 'cd71e7f2baeaf32f36079743912eb591114ceeaa' })));
28272
28517
  }
28273
28518
  static get style() { return IonRowStyle0; }
28274
28519
  static get cmpMeta() { return {
@@ -28662,8 +28907,8 @@ class Searchbar {
28662
28907
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28663
28908
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28664
28909
  const shouldShowCancelButton = this.shouldShowCancelButton();
28665
- 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))));
28666
- return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28910
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '0bfb27aeaa3e94828ae948e9b13c3d0cfcf57b98', "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: '51916fccce5a19bb5ed81abce0d60350c4cfbb33', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
28911
+ return (hAsync(Host, { key: '0a3d7d21538f32a1fd5160adc1c5f3f0c22a3de2', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28667
28912
  [mode]: true,
28668
28913
  'searchbar-animated': animated,
28669
28914
  'searchbar-disabled': this.disabled,
@@ -28673,14 +28918,14 @@ class Searchbar {
28673
28918
  'searchbar-has-focus': this.focused,
28674
28919
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28675
28920
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28676
- }) }, hAsync("div", { key: 'f67c2124e70c24eef0a271516e9c4bdaf7e98ceb', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '8c7f7ccc6809cca30ccc8c4e98e349d3f916321d', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: 'f06524d3163b3883bbde937862aa1e0e8f49f6e1', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '9f7ba2bec93412ecb674b197be13db1de308bb57', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28921
+ }) }, hAsync("div", { key: '8bba360c7bb1f480861406841eb7d8a4453f0210', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '92b9e26c0883db6f6f49feffd848828a21bdd125', "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: '03d102d471ef37bd0a2681c0a234fe376ed0e344', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '85fd9eb2eb18cb270007a5bb691914586a3e8fcc', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28677
28922
  /**
28678
28923
  * This prevents mobile browsers from
28679
28924
  * blurring the input when the clear
28680
28925
  * button is activated.
28681
28926
  */
28682
28927
  ev.preventDefault();
28683
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '19fc3dbc722acc47ff7eb3c94ad4de8aed38dff4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28928
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '7332cab0d6a9b267680af452b1751324e5bb1a26', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28684
28929
  }
28685
28930
  get el() { return getElement(this); }
28686
28931
  static get watchers() { return {
@@ -29264,14 +29509,14 @@ class Segment {
29264
29509
  }
29265
29510
  render() {
29266
29511
  const mode = getIonMode$1(this);
29267
- return (hAsync(Host, { key: 'b1eb4a6e4f953f6c4882395585799503735bbc6b', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29512
+ return (hAsync(Host, { key: 'b032b33244524cfbe3e05e9f95fc94e59e8589fe', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29268
29513
  [mode]: true,
29269
29514
  'in-toolbar': hostContext('ion-toolbar', this.el),
29270
29515
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29271
29516
  'segment-activated': this.activated,
29272
29517
  'segment-disabled': this.disabled,
29273
29518
  'segment-scrollable': this.scrollable,
29274
- }) }, hAsync("slot", { key: 'e7df6b017d154f30eb8021bc965f2e6c8e6480bf', onSlotchange: this.onSlottedItemsChange })));
29519
+ }) }, hAsync("slot", { key: 'e752fff555f586ed10248a75ef1d40f38d91e677', onSlotchange: this.onSlottedItemsChange })));
29275
29520
  }
29276
29521
  get el() { return getElement(this); }
29277
29522
  static get watchers() { return {
@@ -29342,35 +29587,7 @@ class SegmentButton {
29342
29587
  valueChanged() {
29343
29588
  this.updateState();
29344
29589
  }
29345
- waitForSegmentContent(ionSegment, contentId) {
29346
- return new Promise((resolve, reject) => {
29347
- let timeoutId = undefined;
29348
- let animationFrameId;
29349
- const check = () => {
29350
- if (!ionSegment) {
29351
- reject(new Error(`Segment not found when looking for Segment Content`));
29352
- return;
29353
- }
29354
- const segmentView = getNextSiblingOfType(ionSegment); // Skip the text nodes
29355
- const segmentContent = segmentView === null || segmentView === void 0 ? void 0 : segmentView.querySelector(`ion-segment-content[id="${contentId}"]`);
29356
- if (segmentContent && timeoutId) {
29357
- clearTimeout(timeoutId); // Clear the timeout if the segmentContent is found
29358
- cancelAnimationFrame(animationFrameId);
29359
- resolve(segmentContent);
29360
- }
29361
- else {
29362
- animationFrameId = requestAnimationFrame(check); // Keep checking on the next animation frame
29363
- }
29364
- };
29365
- check();
29366
- // Set a timeout to reject the promise
29367
- timeoutId = setTimeout(() => {
29368
- cancelAnimationFrame(animationFrameId);
29369
- reject(new Error(`Unable to find Segment Content with id="${contentId} within 1000 ms`));
29370
- }, 1000);
29371
- });
29372
- }
29373
- async connectedCallback() {
29590
+ connectedCallback() {
29374
29591
  const segmentEl = (this.segmentEl = this.el.closest('ion-segment'));
29375
29592
  if (segmentEl) {
29376
29593
  this.updateState();
@@ -29380,14 +29597,11 @@ class SegmentButton {
29380
29597
  // Return if there is no contentId defined
29381
29598
  if (!this.contentId)
29382
29599
  return;
29383
- let segmentContent;
29384
- try {
29385
- // Attempt to find the Segment Content by its contentId
29386
- segmentContent = await this.waitForSegmentContent(segmentEl, this.contentId);
29387
- }
29388
- catch (error) {
29389
- // If no associated Segment Content exists, log an error and return
29390
- console.error('Segment Button: ', error.message);
29600
+ // Attempt to find the Segment Content by its contentId
29601
+ const segmentContent = document.getElementById(this.contentId);
29602
+ // If no associated Segment Content exists, log an error and return
29603
+ if (!segmentContent) {
29604
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29391
29605
  return;
29392
29606
  }
29393
29607
  // Ensure the found element is a valid ION-SEGMENT-CONTENT
@@ -29433,7 +29647,7 @@ class SegmentButton {
29433
29647
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29434
29648
  const mode = getIonMode$1(this);
29435
29649
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29436
- return (hAsync(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
29650
+ return (hAsync(Host, { key: '1267f90cf66d6a395848018e81445f600975c10a', class: {
29437
29651
  [mode]: true,
29438
29652
  'in-toolbar': hostContext('ion-toolbar', this.el),
29439
29653
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29449,7 +29663,7 @@ class SegmentButton {
29449
29663
  'ion-activatable': true,
29450
29664
  'ion-activatable-instant': true,
29451
29665
  'ion-focusable': true,
29452
- } }, hAsync("button", Object.assign({ key: '00dbcdbd81cd74abdd39803f6840a6e477cc7b0c', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '5200c082a9c4788010c4fc33fe75e2b2ad28364a', class: "button-inner" }, hAsync("slot", { key: 'cf3fce2b5d22436b84cd4367a5885df7d6a2715f' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'f1a2816465f4c2c06644be07315bff2da77e2342' })), hAsync("div", { key: 'aaf31c0ed39641fca698ee98d0773131f4eea6bd', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'fc556651361b7ac305aaedd25ea4afe3173abd20', part: "indicator-background", class: "segment-button-indicator-background" }))));
29666
+ } }, hAsync("button", Object.assign({ key: 'd98af1f28b6e899369bf0923ea9db87f09461210', "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: 'dc6daf1419bed5c084d7b4cbf0ea63237905d9ea', class: "button-inner" }, hAsync("slot", { key: '751d8e462cf8d73584e5332bfe7b274792988e6a' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'c26d306ca5a7bd34fbd114da069c51968a894bbc' })), hAsync("div", { key: '6031046a18c2d37e393f4fb2ff8d925f3fdfd1d6', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'c97316f72c390dcccabc328f69274a816d9479be', part: "indicator-background", class: "segment-button-indicator-background" }))));
29453
29667
  }
29454
29668
  get el() { return getElement(this); }
29455
29669
  static get watchers() { return {
@@ -29485,7 +29699,7 @@ class SegmentContent {
29485
29699
  registerInstance(this, hostRef);
29486
29700
  }
29487
29701
  render() {
29488
- return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29702
+ return (hAsync(Host, { key: '1f7f256fdeb7ec661c84f268b239ab21ef170629' }, hAsync("slot", { key: 'c704cf3b4c13deeb612d8a8ffdccef65d62f0866' })));
29489
29703
  }
29490
29704
  static get style() { return IonSegmentContentStyle0; }
29491
29705
  static get cmpMeta() { return {
@@ -29598,10 +29812,10 @@ class SegmentView {
29598
29812
  }
29599
29813
  render() {
29600
29814
  const { disabled, isManualScroll } = this;
29601
- return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29815
+ return (hAsync(Host, { key: '4d51263d62b33762e7bbea48834b1701014c7f99', class: {
29602
29816
  'segment-view-disabled': disabled,
29603
29817
  'segment-view-scroll-disabled': isManualScroll === false,
29604
- } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29818
+ } }, hAsync("slot", { key: '4191dcd9964efc4815ceec776a953f24ad75f02d' })));
29605
29819
  }
29606
29820
  get el() { return getElement(this); }
29607
29821
  static get style() { return {
@@ -29716,6 +29930,7 @@ class Select {
29716
29930
  this.expandedIcon = undefined;
29717
29931
  this.shape = undefined;
29718
29932
  this.value = undefined;
29933
+ this.required = false;
29719
29934
  }
29720
29935
  styleChanged() {
29721
29936
  this.emitStyle();
@@ -30200,8 +30415,8 @@ class Select {
30200
30415
  return renderedLabel;
30201
30416
  }
30202
30417
  renderListbox() {
30203
- const { disabled, inputId, isExpanded } = this;
30204
- return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30418
+ const { disabled, inputId, isExpanded, required } = this;
30419
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30205
30420
  }
30206
30421
  render() {
30207
30422
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -30232,7 +30447,7 @@ class Select {
30232
30447
  * TODO(FW-5592): Remove hasStartEndSlots condition
30233
30448
  */
30234
30449
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
30235
- return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
30450
+ return (hAsync(Host, { key: '9ac4966b075bd4303ed7ddb0d9ad08eaf9118f20', onClick: this.onClick, class: createColorClasses$1(this.color, {
30236
30451
  [mode]: true,
30237
30452
  'in-item': inItem,
30238
30453
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -30248,7 +30463,7 @@ class Select {
30248
30463
  [`select-justify-${justify}`]: justifyEnabled,
30249
30464
  [`select-shape-${shape}`]: shape !== undefined,
30250
30465
  [`select-label-placement-${labelPlacement}`]: true,
30251
- }) }, hAsync("label", { key: '0edcfcbac575a9dccc77991531b6980d1caebf42', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: '348151d90cb093f5d21c7d4a834264ac4a312c40', class: "select-wrapper-inner" }, hAsync("slot", { key: '8b7708c7f81217435c58276da0c08bba766d9500', name: "start" }), hAsync("div", { key: '10c520a335da0a0d1cf40f9365597beb244d3b48', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '0f15c40a5495e98e29d2a21ba21e0bc6f1c0125a', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'c87faad2e5ebf7f9453397d7ede43abd64d21294', class: "select-highlight" }))));
30466
+ }) }, hAsync("label", { key: '3c92e27a0a7ff5dd79c8f0e16b4f4e56179ba5d3', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), hAsync("div", { key: 'a46adb7393b38babe2acb1440f2ac8986fb861ca', class: "select-wrapper-inner" }, hAsync("slot", { key: '0fe7486767ba41835d8af22d2764ddf85041dd04', name: "start" }), hAsync("div", { key: '51ddfb2a9c3ad0f7faf99d80c3833991f5bc1c84', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '8521aa8290bb1948160fd469fab501e6dbe215f2', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '3fe6a82c12d65ac759c51cf4d8b842eefeec130a', class: "select-highlight" }))));
30252
30467
  }
30253
30468
  get el() { return getElement(this); }
30254
30469
  static get watchers() { return {
@@ -30284,6 +30499,7 @@ class Select {
30284
30499
  "expandedIcon": [1, "expanded-icon"],
30285
30500
  "shape": [1],
30286
30501
  "value": [1032],
30502
+ "required": [4],
30287
30503
  "isExpanded": [32],
30288
30504
  "open": [64]
30289
30505
  },
@@ -30408,7 +30624,7 @@ class SelectModal {
30408
30624
  } }, option.text))));
30409
30625
  }
30410
30626
  render() {
30411
- return (hAsync(Host, { key: '4df42c447b4026d09d9231f09dc4bdae9a8cfe4a', class: getIonMode$1(this) }, hAsync("ion-header", { key: '211c4e869b858867f3d60637e570aeb01de41de7' }, hAsync("ion-toolbar", { key: 'dc4b151331aecbaaaafb460802ee9b689493601d' }, this.header !== undefined && hAsync("ion-title", { key: 'ba1347a59ae0a5c6770c239b5ec02a536a445bd1' }, this.header), hAsync("ion-buttons", { key: '43c98fd25d7e7f54b94b24e53535c6d5ba599892', slot: "end" }, hAsync("ion-button", { key: '51b2b3f3eed42637b2cfc213c95d0bcf10e4b89d', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'fe721b09f80555856211f7e40dbfc31a533acae1' }, hAsync("ion-list", { key: 'd0b932d137136958d896408fb2fa571023775b92' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30627
+ return (hAsync(Host, { key: '0050013822a291082f6be05ed4b14632ef88d09c', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'b45b98ec81bb7ee2fefd56a3ed39dae5573b9caa' }, hAsync("ion-toolbar", { key: '9ed8534528a89469d4ca99e59f5ed25930cd6e8d' }, this.header !== undefined && hAsync("ion-title", { key: '61b6bbd26b5d6ad8f0348a12e57f856e99ff0a7b' }, this.header), hAsync("ion-buttons", { key: '0624431bcb4dbc0ab14554cd93bfefefc3d4053c', slot: "end" }, hAsync("ion-button", { key: '9f4915f3b94521b40dbf5dba7e47840d7bdc0586', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'df16869a6036e9aee1a1bf45bf46cc309cf7eb9b' }, hAsync("ion-list", { key: '0aa82c226df3416937136a2f4229169fccd651a1' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30412
30628
  }
30413
30629
  get el() { return getElement(this); }
30414
30630
  static get style() { return {
@@ -30441,7 +30657,7 @@ class SelectOption {
30441
30657
  this.value = undefined;
30442
30658
  }
30443
30659
  render() {
30444
- return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
30660
+ return hAsync(Host, { key: 'fa94cf1fc8b3ebed6981b05589072f7bc4402beb', role: "option", id: this.inputId, class: getIonMode$1(this) });
30445
30661
  }
30446
30662
  get el() { return getElement(this); }
30447
30663
  static get style() { return IonSelectOptionStyle0; }
@@ -30561,7 +30777,7 @@ class SelectPopover {
30561
30777
  render() {
30562
30778
  const { header, message, options, subHeader } = this;
30563
30779
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30564
- return (hAsync(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode$1(this) }, hAsync("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && hAsync("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, hAsync("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && hAsync("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
30780
+ return (hAsync(Host, { key: 'aef83e0c71338c7fe840d8aa8a35457f0c02aca1', class: getIonMode$1(this) }, hAsync("ion-list", { key: '0d006a2d50f1e60774a0b2492216f06d57bb8f29' }, header !== undefined && hAsync("ion-list-header", { key: 'dd7cf5ab850f6597e678bf65e9a6e0cec335a61a' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'fff2b677c26dbaa1c0d716f9bdaa4cd551e9ad70' }, hAsync("ion-label", { key: '6358214355dc87a4e4cf8dd8954310a26461f037', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '06fd296221969ef34df9dc8bbc256ee66af9fdba' }, subHeader), message !== undefined && hAsync("p", { key: 'eac5f5aee78dcdf1cc5276d95e5e9892bbb69f24' }, message)))), this.renderOptions(options))));
30565
30781
  }
30566
30782
  get el() { return getElement(this); }
30567
30783
  static get style() { return {
@@ -30609,11 +30825,11 @@ class SkeletonText {
30609
30825
  const animated = this.animated && config.getBoolean('animated', true);
30610
30826
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30611
30827
  const mode = getIonMode$1(this);
30612
- return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30828
+ return (hAsync(Host, { key: '59a41a7f3ba2de4f44de57b3243c8f803eb88e2c', class: {
30613
30829
  [mode]: true,
30614
30830
  'skeleton-text-animated': animated,
30615
30831
  'in-media': inMedia,
30616
- } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30832
+ } }, hAsync("span", { key: 'a59a5cea5504f523c4d9b1f428f66772103290aa' }, "\u00A0")));
30617
30833
  }
30618
30834
  get el() { return getElement(this); }
30619
30835
  static get style() { return IonSkeletonTextStyle0; }
@@ -30666,7 +30882,7 @@ class Spinner {
30666
30882
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30667
30883
  }
30668
30884
  }
30669
- return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30885
+ return (hAsync(Host, { key: '8cb73346083cb8a17e38c90e3405fee806c55bbf', class: createColorClasses$1(self.color, {
30670
30886
  [mode]: true,
30671
30887
  [`spinner-${spinnerName}`]: true,
30672
30888
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30766,12 +30982,12 @@ class SplitPane {
30766
30982
  }
30767
30983
  render() {
30768
30984
  const mode = getIonMode$1(this);
30769
- return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30985
+ return (hAsync(Host, { key: 'a63ee13973b94cd58b0da9c00b06bd39b206dd60', class: {
30770
30986
  [mode]: true,
30771
30987
  // Used internally for styling
30772
30988
  [`split-pane-${mode}`]: true,
30773
30989
  'split-pane-visible': this.visible,
30774
- } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30990
+ } }, hAsync("slot", { key: 'da6743bb0d17791f863d1f0ca1f59f5ceffe9613' })));
30775
30991
  }
30776
30992
  get el() { return getElement(this); }
30777
30993
  static get watchers() { return {
@@ -30840,10 +31056,10 @@ class Tab {
30840
31056
  }
30841
31057
  render() {
30842
31058
  const { tab, active, component } = this;
30843
- return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
31059
+ return (hAsync(Host, { key: 'c18543ba57c4a6a08d519476d1e268524046d678', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30844
31060
  'ion-page': component === undefined,
30845
31061
  'tab-hidden': !active,
30846
- } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
31062
+ } }, hAsync("slot", { key: 'e46d100188fc8876e44ebf01f081ce57475b2883' })));
30847
31063
  }
30848
31064
  get el() { return getElement(this); }
30849
31065
  static get watchers() { return {
@@ -30921,11 +31137,11 @@ class TabBar {
30921
31137
  const { color, translucent, keyboardVisible } = this;
30922
31138
  const mode = getIonMode$1(this);
30923
31139
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30924
- return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
31140
+ return (hAsync(Host, { key: 'fe1cc3174f095ba3c8c6d6c2c20021596801a7c9', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30925
31141
  [mode]: true,
30926
31142
  'tab-bar-translucent': translucent,
30927
31143
  'tab-bar-hidden': shouldHide,
30928
- }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
31144
+ }) }, hAsync("slot", { key: 'f7705b1b4f45d28ae8b7c08b91b0f6c9d4176f3f' })));
30929
31145
  }
30930
31146
  get el() { return getElement(this); }
30931
31147
  static get watchers() { return {
@@ -31023,7 +31239,7 @@ class TabButton {
31023
31239
  rel,
31024
31240
  target,
31025
31241
  };
31026
- return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31242
+ return (hAsync(Host, { key: '9ce7b8a8e9d929c260de383c5cf59f971698b2b5', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31027
31243
  [mode]: true,
31028
31244
  'tab-selected': selected,
31029
31245
  'tab-disabled': disabled,
@@ -31035,7 +31251,7 @@ class TabButton {
31035
31251
  'ion-activatable': true,
31036
31252
  'ion-selectable': true,
31037
31253
  'ion-focusable': true,
31038
- } }, hAsync("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, hAsync("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
31254
+ } }, hAsync("a", Object.assign({ key: '567878182ae2a8c5dc172e3fd1f5817f3e1eeabe' }, 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: 'b862980ed811d341e40cf6eb443922f2007307e0', class: "button-inner" }, hAsync("slot", { key: '09ef67551c8fbf8525a933aad07eefc472463b6d' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '85f92cbca73bc53b74818debfbb95cddf9e7bbd1', type: "unbounded" }))));
31039
31255
  }
31040
31256
  get el() { return getElement(this); }
31041
31257
  static get style() { return {
@@ -31211,7 +31427,7 @@ class Tabs {
31211
31427
  return Array.from(this.el.querySelectorAll('ion-tab'));
31212
31428
  }
31213
31429
  render() {
31214
- return (hAsync(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), hAsync("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, hAsync("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), hAsync("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
31430
+ return (hAsync(Host, { key: 'd2ff833e4e7bfee10f963dfa05459174ae031319', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '2722be047d4f75c86beea7dc55320ce323c2236e', name: "top" }), hAsync("div", { key: '307ee4c138fe6a5aa48137e2445dae86131a584b', class: "tabs-inner" }, hAsync("slot", { key: '3da8af51f45c932aead1b2addf1e9e30330a986e' })), hAsync("slot", { key: '54d17cf20967460901fd1ca537b1db507ab336c2', name: "bottom" })));
31215
31431
  }
31216
31432
  get el() { return getElement(this); }
31217
31433
  static get style() { return IonTabsStyle0; }
@@ -31253,9 +31469,9 @@ class Text {
31253
31469
  }
31254
31470
  render() {
31255
31471
  const mode = getIonMode$1(this);
31256
- return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
31472
+ return (hAsync(Host, { key: '54fc089c6b77f7c4a8e0c4441d06507e7a0489c4', class: createColorClasses$1(this.color, {
31257
31473
  [mode]: true,
31258
- }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
31474
+ }) }, hAsync("slot", { key: '308480aa067e52eb4bf7dc619fb7e3b89fcdb62b' })));
31259
31475
  }
31260
31476
  static get style() { return IonTextStyle0; }
31261
31477
  static get cmpMeta() { return {
@@ -31637,7 +31853,7 @@ class Textarea {
31637
31853
  * TODO(FW-5592): Remove hasStartEndSlots condition
31638
31854
  */
31639
31855
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31640
- return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31856
+ return (hAsync(Host, { key: '7c5b5a536fcd80e82e952dd91bd13fc0f89082f0', class: createColorClasses$1(this.color, {
31641
31857
  [mode]: true,
31642
31858
  'has-value': hasValue,
31643
31859
  'has-focus': hasFocus,
@@ -31646,7 +31862,7 @@ class Textarea {
31646
31862
  [`textarea-shape-${shape}`]: shape !== undefined,
31647
31863
  [`textarea-label-placement-${labelPlacement}`]: true,
31648
31864
  'textarea-disabled': disabled,
31649
- }) }, hAsync("label", { key: 'f840a5be2b776a4b9c18c6da24e0b7d3d4838fee', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '979461fc0d4684926d79d75759c63c6867b7622b', class: "textarea-wrapper-inner" }, hAsync("div", { key: '88f0d5d4bac29597cc2588e5b2ed72fb4fbe153d', class: "start-slot-wrapper" }, hAsync("slot", { key: '21dcca0e59c1260e3d0d1e126c1c590de15c4bad', name: "start" })), hAsync("div", { key: '3c48a4bb3d763a389d3429123e7c110064b9b8d4', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '1550599ad15b3f215c104c014e90711f073ace8b', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), hAsync("div", { key: '4f01ab4d2994a6de6f49eb9ed2e310d00daf21b2', class: "end-slot-wrapper" }, hAsync("slot", { key: '501e288b6807e039972bb4f0b63906114255518a', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'd3008eed34494aa9f8e98a28eac3b465dc4c2bd0', class: "textarea-highlight" })), this.renderBottomContent()));
31865
+ }) }, hAsync("label", { key: '3ba91b8e5a7ef4b4f4a9f1b4d6a4d9079c41dfdd', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '878f717486c422db8709e646add56f467f1451de', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'f9d84b85e5ad6de4d2055323b8a81b3bb36664b3', class: "start-slot-wrapper" }, hAsync("slot", { key: 'c658096d7125b8f1d76d03713daa596ed47d87f5', name: "start" })), hAsync("div", { key: 'ba8267f5e94c6c7e9400b157395624b0f5f63a3d', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '599216481ddd50df91a796cd2b78e1bc0ed7ab74', 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: '9a7f5dc599a4437fb693a9dfae443f07ab87b771', class: "end-slot-wrapper" }, hAsync("slot", { key: 'a9806727dca8bd9b6a648ea824d910e26811f61c', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'f22b68afb0c58abb2fc78a9d5805b3ed11eb98c6', class: "textarea-highlight" })), this.renderBottomContent()));
31650
31866
  }
31651
31867
  get el() { return getElement(this); }
31652
31868
  static get watchers() { return {
@@ -31708,7 +31924,7 @@ class Thumbnail {
31708
31924
  registerInstance(this, hostRef);
31709
31925
  }
31710
31926
  render() {
31711
- return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31927
+ return (hAsync(Host, { key: '0396aae5f545bbf7ebe1cbb05bc25f9181d2afe3', class: getIonMode$1(this) }, hAsync("slot", { key: 'bf01dbadd4042a4b45ce24a8ce408f15e7647a03' })));
31712
31928
  }
31713
31929
  static get style() { return IonThumbnailStyle0; }
31714
31930
  static get cmpMeta() { return {
@@ -32544,9 +32760,9 @@ class Toast {
32544
32760
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32545
32761
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
32546
32762
  }
32547
- return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32763
+ return (hAsync(Host, Object.assign({ key: '66ce48d7589420d8cb9756ddaf916a7ec8f949b5', tabindex: "-1" }, this.htmlAttributes, { style: {
32548
32764
  zIndex: `${60000 + this.overlayIndex}`,
32549
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '9393ead4de1bf28529661d6f64049d34e18d725c', class: wrapperClass }, hAsync("div", { key: '3e9dd73c17c337849c3f26e8d0f395b3e5ee20a7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '5d15b18364301ad55e44e9f601014ac33181590b', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'f6dd164502637a882c5caf18445d8509b85ad6f9', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
32765
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '04ca865d1c2ac8a17102375030227721e3ba48f5', class: wrapperClass }, hAsync("div", { key: '1d0f4463c7f2428d57dc32e457d88015884361ea', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '3da9f1331b002463bbf23deaae3410d3fb9c90b5', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '4dfe8a6c966a9e5c5b35aec950631b895591f767', 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')))));
32550
32766
  }
32551
32767
  get el() { return getElement(this); }
32552
32768
  static get watchers() { return {
@@ -32680,6 +32896,7 @@ class Toggle {
32680
32896
  this.labelPlacement = 'start';
32681
32897
  this.justify = undefined;
32682
32898
  this.alignment = undefined;
32899
+ this.required = false;
32683
32900
  }
32684
32901
  disabledChanged() {
32685
32902
  if (this.gesture) {
@@ -32761,12 +32978,12 @@ class Toggle {
32761
32978
  return this.el.textContent !== '';
32762
32979
  }
32763
32980
  render() {
32764
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
32981
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this;
32765
32982
  const mode = getIonMode$1(this);
32766
32983
  const value = this.getValue();
32767
32984
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32768
32985
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32769
- return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32986
+ return (hAsync(Host, { key: '065d333e3972a6df8df047c1af6457eaa394d45a', onClick: this.onClick, class: createColorClasses$1(color, {
32770
32987
  [mode]: true,
32771
32988
  'in-item': hostContext('ion-item', el),
32772
32989
  'toggle-activated': activated,
@@ -32776,10 +32993,10 @@ class Toggle {
32776
32993
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32777
32994
  [`toggle-label-placement-${labelPlacement}`]: true,
32778
32995
  [`toggle-${rtl}`]: true,
32779
- }) }, hAsync("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f387b1ea840737a9737917e516834c887be99c09', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
32996
+ }) }, hAsync("label", { key: '6923b623b995cef1db15123ef4dd072f6d6c2c7e', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '0e558a2c37834620fc945ea1de0098e75c56947d', 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: 'a62663c6f58665cf16af7a3fda3a41a78136c6d4', class: {
32780
32997
  'label-text-wrapper': true,
32781
32998
  'label-text-wrapper-hidden': !this.hasLabel,
32782
- }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32999
+ }, part: "label" }, hAsync("slot", { key: '91a2c83740ef75c78f70b60941778580f1722d47' })), hAsync("div", { key: '1a638f883542dd9aac3749cc9bfcdd7ba8ea9046', class: "native-wrapper" }, this.renderToggleControl()))));
32783
33000
  }
32784
33001
  get el() { return getElement(this); }
32785
33002
  static get watchers() { return {
@@ -32802,6 +33019,7 @@ class Toggle {
32802
33019
  "labelPlacement": [1, "label-placement"],
32803
33020
  "justify": [1],
32804
33021
  "alignment": [1],
33022
+ "required": [4],
32805
33023
  "activated": [32]
32806
33024
  },
32807
33025
  "$listeners$": undefined,
@@ -32833,6 +33051,10 @@ var IonToolbarMdStyle0 = toolbarMdCss;
32833
33051
  * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.
32834
33052
  * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.
32835
33053
  * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.
33054
+ *
33055
+ * @part background - The background of the toolbar, covering the entire area behind the toolbar content.
33056
+ * @part container - The container that wraps all toolbar content, including the default slot and named slot content.
33057
+ * @part content - The container for the default slot, wrapping content provided without a named slot.
32836
33058
  */
32837
33059
  class Toolbar {
32838
33060
  constructor(hostRef) {
@@ -32883,10 +33105,10 @@ class Toolbar {
32883
33105
  this.childrenStyles.forEach((value) => {
32884
33106
  Object.assign(childStyles, value);
32885
33107
  });
32886
- return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
33108
+ return (hAsync(Host, { key: 'e4d089de5c5b16f34fda10f3fe00054aa38bbc7f', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32887
33109
  [mode]: true,
32888
33110
  'in-toolbar': hostContext('ion-toolbar', this.el),
32889
- })) }, hAsync("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), hAsync("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, hAsync("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), hAsync("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), hAsync("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, hAsync("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), hAsync("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), hAsync("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
33111
+ })) }, hAsync("div", { key: '6463fdec00f2c50fa8691ceed3213157b275f398', class: "toolbar-background", part: "background" }), hAsync("div", { key: 'ffcd3cf5ba187dfff98cb01101cb1dae93d0e057', class: "toolbar-container", part: "container" }, hAsync("slot", { key: '899f1b18a87a1c873f0e4c3d7b9b3dfe20fdb1e5', name: "start" }), hAsync("slot", { key: 'bf2fc384b24742e5f441f9193d173635d5d45dc7', name: "secondary" }), hAsync("div", { key: '21cebe9074ad0858567edaa106571aab5895ef1d', class: "toolbar-content", part: "content" }, hAsync("slot", { key: 'ac05301746a1e6bfb3f6c533d2fe1c770d066419' })), hAsync("slot", { key: '1dbd07d1c7d31b16a612c05672c2d559d85e83bb', name: "primary" }), hAsync("slot", { key: '617e1daa50d7f168d290f751005d79ce777f0793', name: "end" }))));
32890
33112
  }
32891
33113
  get el() { return getElement(this); }
32892
33114
  static get style() { return {
@@ -32936,11 +33158,11 @@ class ToolbarTitle {
32936
33158
  render() {
32937
33159
  const mode = getIonMode$1(this);
32938
33160
  const size = this.getSize();
32939
- return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
33161
+ return (hAsync(Host, { key: '388b4015f0d64a8d5b04d622d1e1fb61d0922d6c', class: createColorClasses$1(this.color, {
32940
33162
  [mode]: true,
32941
33163
  [`title-${size}`]: true,
32942
33164
  'title-rtl': document.dir === 'rtl',
32943
- }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
33165
+ }) }, hAsync("div", { key: '56f719e88e9322a8862acbfd0b343fd0473bfead', class: "toolbar-title" }, hAsync("slot", { key: 'd35b7c06089c2d498126bbfe859ffc4961de6276' }))));
32944
33166
  }
32945
33167
  get el() { return getElement(this); }
32946
33168
  static get watchers() { return {