@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.mjs CHANGED
@@ -2706,16 +2706,6 @@ const shallowEqualStringMap = (map1, map2) => {
2706
2706
  }
2707
2707
  return true;
2708
2708
  };
2709
- const getNextSiblingOfType = (element) => {
2710
- let sibling = element.nextSibling;
2711
- while (sibling) {
2712
- if (sibling.nodeType === Node.ELEMENT_NODE && sibling !== null) {
2713
- return sibling;
2714
- }
2715
- sibling = sibling.nextSibling;
2716
- }
2717
- return null;
2718
- };
2719
2709
 
2720
2710
  /* Ionicons v7.2.2, ES Modules */
2721
2711
  const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
@@ -3223,9 +3213,12 @@ let accordionIds = 0;
3223
3213
  * @param message - The string message to be logged to the console.
3224
3214
  */
3225
3215
  const printIonWarning = (message, ...params) => {
3226
- return console.warn(`[Ionic Warning]: ${message}`, ...params);
3216
+ const logLevel = config.get('logLevel', "WARN" /* LogLevel.WARN */);
3217
+ if (["WARN" /* LogLevel.WARN */].includes(logLevel)) {
3218
+ return console.warn(`[Ionic Warning]: ${message}`, ...params);
3219
+ }
3227
3220
  };
3228
- /*
3221
+ /**
3229
3222
  * Logs an error to the console with an Ionic prefix
3230
3223
  * to indicate the library that is warning the developer.
3231
3224
  *
@@ -3233,7 +3226,10 @@ const printIonWarning = (message, ...params) => {
3233
3226
  * @param params - Additional arguments to supply to the console.error.
3234
3227
  */
3235
3228
  const printIonError = (message, ...params) => {
3236
- return console.error(`[Ionic Error]: ${message}`, ...params);
3229
+ const logLevel = config.get('logLevel', "ERROR" /* LogLevel.ERROR */);
3230
+ if (["ERROR" /* LogLevel.ERROR */, "WARN" /* LogLevel.WARN */].includes(logLevel)) {
3231
+ return console.error(`[Ionic Error]: ${message}`, ...params);
3232
+ }
3237
3233
  };
3238
3234
  /**
3239
3235
  * Prints an error informing developers that an implementation requires an element to be used
@@ -6997,7 +6993,6 @@ class Alert {
6997
6993
  }
6998
6994
  }
6999
6995
  onKeydown(ev) {
7000
- var _a;
7001
6996
  const inputTypes = new Set(this.processedInputs.map((i) => i.type));
7002
6997
  /**
7003
6998
  * Based on keyboard navigation requirements, the
@@ -7007,17 +7002,6 @@ class Alert {
7007
7002
  ev.preventDefault();
7008
7003
  return;
7009
7004
  }
7010
- /**
7011
- * 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.
7012
- */
7013
- if (ev.target.classList.contains('alert-wrapper')) {
7014
- if (ev.key === 'Tab' && ev.shiftKey) {
7015
- ev.preventDefault();
7016
- const lastChildBtn = (_a = this.wrapperEl) === null || _a === void 0 ? void 0 : _a.querySelector('.alert-button:last-child');
7017
- lastChildBtn.focus();
7018
- return;
7019
- }
7020
- }
7021
7005
  // The only inputs we want to navigate between using arrow keys are the radios
7022
7006
  // ignore the keydown event if it is not on a radio button
7023
7007
  if (!inputTypes.has('radio') ||
@@ -7149,16 +7133,7 @@ class Alert {
7149
7133
  async present() {
7150
7134
  const unlock = await this.lockController.lock();
7151
7135
  await this.delegateController.attachViewToDom();
7152
- await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4).then(() => {
7153
- var _a, _b;
7154
- if (this.buttons.length === 1 && this.inputs.length === 0) {
7155
- const queryBtn = (_a = this.wrapperEl) === null || _a === void 0 ? void 0 : _a.querySelector('.alert-button');
7156
- queryBtn.focus();
7157
- }
7158
- else {
7159
- (_b = this.wrapperEl) === null || _b === void 0 ? void 0 : _b.focus();
7160
- }
7161
- });
7136
+ await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4);
7162
7137
  unlock();
7163
7138
  }
7164
7139
  /**
@@ -7327,15 +7302,22 @@ class Alert {
7327
7302
  return (hAsync("div", { id: msgId, class: "alert-message" }, message));
7328
7303
  }
7329
7304
  render() {
7330
- const { overlayIndex, header, subHeader, htmlAttributes } = this;
7305
+ const { overlayIndex, header, subHeader, message, htmlAttributes } = this;
7331
7306
  const mode = getIonMode$1(this);
7332
7307
  const hdrId = `alert-${overlayIndex}-hdr`;
7333
- const msgId = `alert-${overlayIndex}-msg`;
7334
7308
  const subHdrId = `alert-${overlayIndex}-sub-hdr`;
7309
+ const msgId = `alert-${overlayIndex}-msg`;
7335
7310
  const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';
7336
- return (hAsync(Host, { key: 'cfdec302a5a41e0be269893f2779950224febde0', tabindex: "-1", style: {
7311
+ /**
7312
+ * Use both the header and subHeader ids if they are defined.
7313
+ * If only the header is defined, use the header id.
7314
+ * If only the subHeader is defined, use the subHeader id.
7315
+ * If neither are defined, do not set aria-labelledby.
7316
+ */
7317
+ const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
7318
+ 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: {
7337
7319
  zIndex: `${20000 + overlayIndex}`,
7338
- }, 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" })));
7320
+ }, 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" })));
7339
7321
  }
7340
7322
  get el() { return getElement(this); }
7341
7323
  static get watchers() { return {
@@ -8511,6 +8493,7 @@ class Checkbox {
8511
8493
  this.labelPlacement = 'start';
8512
8494
  this.justify = undefined;
8513
8495
  this.alignment = undefined;
8496
+ this.required = false;
8514
8497
  }
8515
8498
  componentWillLoad() {
8516
8499
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
@@ -8522,11 +8505,11 @@ class Checkbox {
8522
8505
  }
8523
8506
  }
8524
8507
  render() {
8525
- const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
8508
+ const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
8526
8509
  const mode = getIonMode$1(this);
8527
8510
  const path = getSVGPath(mode, indeterminate);
8528
8511
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
8529
- return (hAsync(Host, { key: '6dc787e1100521d08c4900104e1a3e2f594e919f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8512
+ return (hAsync(Host, { key: '07a5884062dd256b570e856270c74a5a09d2f2a5', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses$1(color, {
8530
8513
  [mode]: true,
8531
8514
  'in-item': hostContext('ion-item', el),
8532
8515
  'checkbox-checked': checked,
@@ -8536,10 +8519,10 @@ class Checkbox {
8536
8519
  [`checkbox-justify-${justify}`]: justify !== undefined,
8537
8520
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
8538
8521
  [`checkbox-label-placement-${labelPlacement}`]: true,
8539
- }), onClick: this.onClick }, hAsync("label", { key: '68222fb736a5ec3f2e488649b0e2ce0417dcb224', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: 'f12962d7e9b19c744cfdbdeccc67ae7f5d080281', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), hAsync("div", { key: 'c72df2699414b1e5a41a1bc267bc634f0c93dcff', class: {
8522
+ }), onClick: this.onClick }, hAsync("label", { key: '3439d546e8b60187421db698eab63a0bdd31c973', class: "checkbox-wrapper" }, hAsync("input", Object.assign({ key: '9f45cf7dbdedcf01ec132c11e16979adb1aa102f', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: '4e882f98939cc4b7c7ab7459c751d3f4bb2023fe', class: {
8540
8523
  'label-text-wrapper': true,
8541
8524
  'label-text-wrapper-hidden': el.textContent === '',
8542
- }, part: "label" }, hAsync("slot", { key: 'a2a80285178a7e0e3b536fc9ca26b8b444aa4307' })), hAsync("div", { key: 'c2b05e0d1fe8df5dcd72858220b5ff51ecaee4cc', class: "native-wrapper" }, hAsync("svg", { key: 'ee24913fded72258ebd9713654a6dba92a18fcf7', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8525
+ }, part: "label" }, hAsync("slot", { key: '0abda81297a086d02c4a56af75005547971dfcfe' })), hAsync("div", { key: '36489ea3f48a7d0ec46b77c243f9f253ef5c2b3b', class: "native-wrapper" }, hAsync("svg", { key: '4c53b52f5e93752672a34eb6f180b75fa9af9046', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
8543
8526
  }
8544
8527
  getSVGPath(mode, indeterminate) {
8545
8528
  let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -8566,6 +8549,7 @@ class Checkbox {
8566
8549
  "labelPlacement": [1, "label-placement"],
8567
8550
  "justify": [1],
8568
8551
  "alignment": [1],
8552
+ "required": [4],
8569
8553
  "setFocus": [64]
8570
8554
  },
8571
8555
  "$listeners$": undefined,
@@ -15913,11 +15897,11 @@ class ItemDivider {
15913
15897
  }
15914
15898
  render() {
15915
15899
  const mode = getIonMode$1(this);
15916
- return (hAsync(Host, { key: '6cff318230a9b2a9db529df154285d3dd9822efe', class: createColorClasses$1(this.color, {
15900
+ return (hAsync(Host, { key: '7cb307fb16d74eac6138460aad469d8aa2cb44aa', class: createColorClasses$1(this.color, {
15917
15901
  [mode]: true,
15918
15902
  'item-divider-sticky': this.sticky,
15919
15903
  item: true,
15920
- }) }, hAsync("slot", { key: 'eb50dfab74ab0fd13697db17ecd60e8fa0bf1750', name: "start" }), hAsync("div", { key: '2806efd89d086f4fb844a479d9c095e1e0775713', class: "item-divider-inner" }, hAsync("div", { key: '77b7d5fa987e5f1c26d8023cd1f974a8a263a3de', class: "item-divider-wrapper" }, hAsync("slot", { key: 'dbafb0deb140a19a2a9748fd5b48760c39c6fd2e' })), hAsync("slot", { key: 'ef9a848fe21e84ef21cd273b8a4d9f95f558175b', name: "end" }))));
15904
+ }) }, hAsync("slot", { key: '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" }))));
15921
15905
  }
15922
15906
  get el() { return getElement(this); }
15923
15907
  static get style() { return {
@@ -15949,7 +15933,7 @@ class ItemGroup {
15949
15933
  }
15950
15934
  render() {
15951
15935
  const mode = getIonMode$1(this);
15952
- return (hAsync(Host, { key: 'f9ffe0290d3fa546494fe55f952d8554f2a8abf8', role: "group", class: {
15936
+ return (hAsync(Host, { key: 'a95b74fed5ce0888eca195ed718f7bfaa53fa86c', role: "group", class: {
15953
15937
  [mode]: true,
15954
15938
  // Used internally for styling
15955
15939
  [`item-group-${mode}`]: true,
@@ -16017,12 +16001,12 @@ class ItemOption {
16017
16001
  href: this.href,
16018
16002
  target: this.target,
16019
16003
  };
16020
- return (hAsync(Host, { key: '89310624997821858c1abde60c0ffb142ca466e0', onClick: this.onClick, class: createColorClasses$1(this.color, {
16004
+ return (hAsync(Host, { key: 'a5acf613ba8d0906abfb08a5865df845f7c82373', onClick: this.onClick, class: createColorClasses$1(this.color, {
16021
16005
  [mode]: true,
16022
16006
  'item-option-disabled': disabled,
16023
16007
  'item-option-expandable': expandable,
16024
16008
  'ion-activatable': true,
16025
- }) }, hAsync(TagType, Object.assign({ key: 'e4dfbb3048eed03a7f7e84c6f75545e0ca9b45fb' }, attrs, { class: "button-native", part: "native", disabled: disabled }), hAsync("span", { key: 'dffcf437fbdc15f2e7a19e60a015e90c73c8377d', class: "button-inner" }, hAsync("slot", { key: '48a23512e0601e062118d8b2c46c8bb96f25509f', name: "top" }), hAsync("div", { key: '952a9a9aa3a476aa1f4408d7e208bf9e916b8c30', class: "horizontal-wrapper" }, hAsync("slot", { key: 'f8d18a61c1ecec4a22a55443cf72bbc51383b64f', name: "start" }), hAsync("slot", { key: '1f9f219e6f879d2e0bf6d80cf0d3f518eb14ce0e', name: "icon-only" }), hAsync("slot", { key: 'a55adcdbe68131e5b1855c2dd45dd9454ab544fb' }), hAsync("slot", { key: '3c4c85a4fbb7efc797d8bc5adf6d238da022ff9f', name: "end" })), hAsync("slot", { key: '503c7e4b306745c523f57f24399ea06ba9b1e21d', name: "bottom" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b0e270b0c4f3ff9f9b6d74bad12a9278d7633226' }))));
16009
+ }) }, hAsync(TagType, Object.assign({ key: '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' }))));
16026
16010
  }
16027
16011
  get el() { return getElement(this); }
16028
16012
  static get style() { return {
@@ -16069,7 +16053,7 @@ class ItemOptions {
16069
16053
  render() {
16070
16054
  const mode = getIonMode$1(this);
16071
16055
  const isEnd = isEndSide(this.side);
16072
- return (hAsync(Host, { key: '6d91399d2aaaa81d514d0bbc8dffe53eeec25d36', class: {
16056
+ return (hAsync(Host, { key: 'e73d542ea800d953373c478b287f90bac63c4a29', class: {
16073
16057
  [mode]: true,
16074
16058
  // Used internally for styling
16075
16059
  [`item-options-${mode}`]: true,
@@ -16531,7 +16515,7 @@ class ItemSliding {
16531
16515
  }
16532
16516
  render() {
16533
16517
  const mode = getIonMode$1(this);
16534
- return (hAsync(Host, { key: '47a3edd2ef2080ed9cfc2784277dea09785c7dc4', class: {
16518
+ return (hAsync(Host, { key: 'b88f1f7cd0a5625dbccc0ee0f771c79a1338c5c8', class: {
16535
16519
  [mode]: true,
16536
16520
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
16537
16521
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -16640,13 +16624,13 @@ class Label {
16640
16624
  render() {
16641
16625
  const position = this.position;
16642
16626
  const mode = getIonMode$1(this);
16643
- return (hAsync(Host, { key: '6353a70565ef6fbbbf4042b000e536c61bcf99a9', class: createColorClasses$1(this.color, {
16627
+ return (hAsync(Host, { key: 'aa8cda765cf7813b02adbc39cff7dec21fc2d730', class: createColorClasses$1(this.color, {
16644
16628
  [mode]: true,
16645
16629
  'in-item-color': hostContext('ion-item.ion-color', this.el),
16646
16630
  [`label-${position}`]: position !== undefined,
16647
16631
  [`label-no-animate`]: this.noAnimate,
16648
16632
  'label-rtl': document.dir === 'rtl',
16649
- }) }, hAsync("slot", { key: '6ef9c2758c0168442aa84941af0a6cec1ef1ec21' })));
16633
+ }) }, hAsync("slot", { key: '297af5559f2ccb3b2d06ea00e074aa96c3e5235c' })));
16650
16634
  }
16651
16635
  get el() { return getElement(this); }
16652
16636
  static get watchers() { return {
@@ -16748,10 +16732,10 @@ class ListHeader {
16748
16732
  render() {
16749
16733
  const { lines } = this;
16750
16734
  const mode = getIonMode$1(this);
16751
- return (hAsync(Host, { key: 'fb78bd8601cbd7b90ec84a96e0c8325be1132b1e', class: createColorClasses$1(this.color, {
16735
+ return (hAsync(Host, { key: 'f6e2de02ec55e3c64d129a52fb154e9d4e36ea98', class: createColorClasses$1(this.color, {
16752
16736
  [mode]: true,
16753
16737
  [`list-header-lines-${lines}`]: lines !== undefined,
16754
- }) }, hAsync("div", { key: '2580ad49f3a54973e15f14d645a1e55a6fa066ac', class: "list-header-inner" }, hAsync("slot", { key: '677b2e2ec8eeb3ae6ad329e86c76451cf3ae6c2f' }))));
16738
+ }) }, hAsync("div", { key: 'a38b47618205ccdd76bb8e406e37522b1c087780', class: "list-header-inner" }, hAsync("slot", { key: '5afd06a7fbdf06bef5b7b27723515133fae66004' }))));
16755
16739
  }
16756
16740
  static get style() { return {
16757
16741
  ios: IonListHeaderIosStyle0,
@@ -17020,9 +17004,9 @@ class Loading {
17020
17004
  * Otherwise, don't set aria-labelledby.
17021
17005
  */
17022
17006
  const ariaLabelledBy = message !== undefined ? msgId : null;
17023
- return (hAsync(Host, Object.assign({ key: 'd97f536b7f443ea19a2bbf2dcbc7f546b8e0a092', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17007
+ return (hAsync(Host, Object.assign({ key: '016c85ddadecf0f7e50912d42301e2b4ba940709', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
17024
17008
  zIndex: `${40000 + this.overlayIndex}`,
17025
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '6cd39bd7912fd080ab59d041644054c96d238ea9', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'c14ca5a9308844f11bcb010257e15208a75b39bc', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '118bceefa8e1cf8b225a858f224e6d919cf03c26', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: '490d6e8ae4433835fe273162d7b90deab944fb39', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'c5cf6549c43df4cb23814b3e62ec4d9e7ea2b64f', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '2b888362122d3b66b0492d53b0c21bd6a2a97501', tabindex: "0", "aria-hidden": "true" })));
17009
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '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" })));
17026
17010
  }
17027
17011
  get el() { return getElement(this); }
17028
17012
  static get watchers() { return {
@@ -18030,14 +18014,14 @@ class Menu {
18030
18014
  * the ionBackButton listener in the menu controller
18031
18015
  * will handle closing the menu when Escape is pressed.
18032
18016
  */
18033
- return (hAsync(Host, { key: 'da96fdb4c5ddf60e615cc4cdda7ccdb3fd7e089b', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18017
+ return (hAsync(Host, { key: 'e67a2f0596e27d7ddf9ef4b65b14cc1b6d1572d2', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
18034
18018
  [mode]: true,
18035
18019
  [`menu-type-${type}`]: true,
18036
18020
  'menu-enabled': !disabled,
18037
18021
  [`menu-side-${side}`]: true,
18038
18022
  'menu-pane-visible': isPaneVisible,
18039
18023
  'split-pane-side': hostContext('ion-split-pane', el),
18040
- } }, hAsync("div", { key: '894e680fe227534711128c7aca980964ddb5a08a', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: 'e9f5934518dc0cceaeadf1f2820614595fec6bc9' })), hAsync("ion-backdrop", { key: '7282077817657b1bb6c155f1404c0a519fece993', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
18024
+ } }, hAsync("div", { key: '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" })));
18041
18025
  }
18042
18026
  get el() { return getElement(this); }
18043
18027
  static get watchers() { return {
@@ -18140,7 +18124,7 @@ class MenuButton {
18140
18124
  type: this.type,
18141
18125
  };
18142
18126
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
18143
- return (hAsync(Host, { key: '7ec29715ce7926b7c2b08f3d9cac8aaa16b3dc28', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18127
+ return (hAsync(Host, { key: 'a2b925ae91161c18e95d2cb94f32ae7f9df60186', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses$1(color, {
18144
18128
  [mode]: true,
18145
18129
  button: true, // ion-buttons target .button
18146
18130
  'menu-button-hidden': hidden,
@@ -18149,7 +18133,7 @@ class MenuButton {
18149
18133
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
18150
18134
  'ion-activatable': true,
18151
18135
  'ion-focusable': true,
18152
- }) }, hAsync("button", Object.assign({ key: 'd4c5929264af3ba0328118bcc27d2ab7ef5d3809' }, attrs, { disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }), hAsync("span", { key: '7bfa6e9a93105486623d044861e879ec79ff64f1', class: "button-inner" }, hAsync("slot", { key: '071ab58e285832fc188706166f5547d45d501ac5' }, hAsync("ion-icon", { key: '918ec5d791921de9821c347af4f65f97dd94aabf', part: "icon", icon: menuIcon, mode: mode, lazy: false, "aria-hidden": "true" }))), mode === 'md' && hAsync("ion-ripple-effect", { key: '00ffdd53f635e706c1dbd01b8e7944498650fe81', type: "unbounded" }))));
18136
+ }) }, hAsync("button", Object.assign({ key: '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" }))));
18153
18137
  }
18154
18138
  get el() { return getElement(this); }
18155
18139
  static get style() { return {
@@ -18198,10 +18182,10 @@ class MenuToggle {
18198
18182
  render() {
18199
18183
  const mode = getIonMode$1(this);
18200
18184
  const hidden = this.autoHide && !this.visible;
18201
- return (hAsync(Host, { key: '7c27ea5b0795676bf5cb33e1f83aa142c197f64e', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18185
+ return (hAsync(Host, { key: 'bc1dfcc3a4d677e31d5b962567122c1912354dd3', onClick: this.onClick, "aria-hidden": hidden ? 'true' : null, class: {
18202
18186
  [mode]: true,
18203
18187
  'menu-toggle-hidden': hidden,
18204
- } }, hAsync("slot", { key: '69f187becedc0fe34603d41d279f043cf0fdf776' })));
18188
+ } }, hAsync("slot", { key: '4b2c290cbe8fd222249ea1e85c5f93fb9ab368f8' })));
18205
18189
  }
18206
18190
  static get style() { return IonMenuToggleStyle0; }
18207
18191
  static get cmpMeta() { return {
@@ -19041,7 +19025,7 @@ const computeDuration = (remaining, velocity) => {
19041
19025
  };
19042
19026
 
19043
19027
  const createSheetEnterAnimation = (opts) => {
19044
- const { currentBreakpoint, backdropBreakpoint } = opts;
19028
+ const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
19045
19029
  /**
19046
19030
  * If the backdropBreakpoint is undefined, then the backdrop
19047
19031
  * should always fade in. If the backdropBreakpoint came before the
@@ -19061,7 +19045,16 @@ const createSheetEnterAnimation = (opts) => {
19061
19045
  { offset: 0, opacity: 1, transform: 'translateY(100%)' },
19062
19046
  { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
19063
19047
  ]);
19064
- return { wrapperAnimation, backdropAnimation };
19048
+ /**
19049
+ * This allows the content to be scrollable at any breakpoint.
19050
+ */
19051
+ const contentAnimation = !expandToScroll
19052
+ ? createAnimation('contentAnimation').keyframes([
19053
+ { offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
19054
+ { offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
19055
+ ])
19056
+ : undefined;
19057
+ return { wrapperAnimation, backdropAnimation, contentAnimation };
19065
19058
  };
19066
19059
  const createSheetLeaveAnimation = (opts) => {
19067
19060
  const { currentBreakpoint, backdropBreakpoint } = opts;
@@ -19096,22 +19089,68 @@ const createEnterAnimation$1 = () => {
19096
19089
  })
19097
19090
  .afterClearStyles(['pointer-events']);
19098
19091
  const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
19099
- return { backdropAnimation, wrapperAnimation };
19092
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19100
19093
  };
19101
19094
  /**
19102
19095
  * iOS Modal Enter Animation for the Card presentation style
19103
19096
  */
19104
19097
  const iosEnterAnimation$3 = (baseEl, opts) => {
19105
- const { presentingEl, currentBreakpoint } = opts;
19098
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19106
19099
  const root = getElementRoot(baseEl);
19107
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19100
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
19108
19101
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19109
19102
  wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
19103
+ // The content animation is only added if scrolling is enabled for
19104
+ // all the breakpoints.
19105
+ !expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19110
19106
  const baseAnimation = createAnimation('entering-base')
19111
19107
  .addElement(baseEl)
19112
19108
  .easing('cubic-bezier(0.32,0.72,0,1)')
19113
19109
  .duration(500)
19114
- .addAnimation(wrapperAnimation);
19110
+ .addAnimation([wrapperAnimation])
19111
+ .beforeAddWrite(() => {
19112
+ if (expandToScroll) {
19113
+ // Scroll can only be done when the modal is fully expanded.
19114
+ return;
19115
+ }
19116
+ /**
19117
+ * There are some browsers that causes flickering when
19118
+ * dragging the content when scroll is enabled at every
19119
+ * breakpoint. This is due to the wrapper element being
19120
+ * transformed off the screen and having a snap animation.
19121
+ *
19122
+ * A workaround is to clone the footer element and append
19123
+ * it outside of the wrapper element. This way, the footer
19124
+ * is still visible and the drag can be done without
19125
+ * flickering. The original footer is hidden until the modal
19126
+ * is dismissed. This maintains the animation of the footer
19127
+ * when the modal is dismissed.
19128
+ *
19129
+ * The workaround needs to be done before the animation starts
19130
+ * so there are no flickering issues.
19131
+ */
19132
+ const ionFooter = baseEl.querySelector('ion-footer');
19133
+ /**
19134
+ * This check is needed to prevent more than one footer
19135
+ * from being appended to the shadow root.
19136
+ * Otherwise, iOS and MD enter animations would append
19137
+ * the footer twice.
19138
+ */
19139
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19140
+ if (ionFooter && !ionFooterAlreadyAppended) {
19141
+ const footerHeight = ionFooter.clientHeight;
19142
+ const clonedFooter = ionFooter.cloneNode(true);
19143
+ baseEl.shadowRoot.appendChild(clonedFooter);
19144
+ ionFooter.style.setProperty('display', 'none');
19145
+ ionFooter.setAttribute('aria-hidden', 'true');
19146
+ // Padding is added to prevent some content from being hidden.
19147
+ const page = baseEl.querySelector('.ion-page');
19148
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19149
+ }
19150
+ });
19151
+ if (contentAnimation) {
19152
+ baseAnimation.addAnimation(contentAnimation);
19153
+ }
19115
19154
  if (presentingEl) {
19116
19155
  const isMobile = window.innerWidth < 768;
19117
19156
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19189,7 +19228,7 @@ const createLeaveAnimation$1 = () => {
19189
19228
  * iOS Modal Leave Animation
19190
19229
  */
19191
19230
  const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19192
- const { presentingEl, currentBreakpoint } = opts;
19231
+ const { presentingEl, currentBreakpoint, expandToScroll } = opts;
19193
19232
  const root = getElementRoot(baseEl);
19194
19233
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
19195
19234
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
@@ -19198,7 +19237,29 @@ const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
19198
19237
  .addElement(baseEl)
19199
19238
  .easing('cubic-bezier(0.32,0.72,0,1)')
19200
19239
  .duration(duration)
19201
- .addAnimation(wrapperAnimation);
19240
+ .addAnimation(wrapperAnimation)
19241
+ .beforeAddWrite(() => {
19242
+ if (expandToScroll) {
19243
+ // Scroll can only be done when the modal is fully expanded.
19244
+ return;
19245
+ }
19246
+ /**
19247
+ * If expandToScroll is disabled, we need to swap
19248
+ * the visibility to the original, so the footer
19249
+ * dismisses with the modal and doesn't stay
19250
+ * until the modal is removed from the DOM.
19251
+ */
19252
+ const ionFooter = baseEl.querySelector('ion-footer');
19253
+ if (ionFooter) {
19254
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19255
+ ionFooter.style.removeProperty('display');
19256
+ ionFooter.removeAttribute('aria-hidden');
19257
+ clonedFooter.style.setProperty('display', 'none');
19258
+ clonedFooter.setAttribute('aria-hidden', 'true');
19259
+ const page = baseEl.querySelector('.ion-page');
19260
+ page.style.removeProperty('padding-bottom');
19261
+ }
19262
+ });
19202
19263
  if (presentingEl) {
19203
19264
  const isMobile = window.innerWidth < 768;
19204
19265
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
@@ -19276,22 +19337,69 @@ const createEnterAnimation = () => {
19276
19337
  { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
19277
19338
  { offset: 1, opacity: 1, transform: `translateY(0px)` },
19278
19339
  ]);
19279
- return { backdropAnimation, wrapperAnimation };
19340
+ return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
19280
19341
  };
19281
19342
  /**
19282
19343
  * Md Modal Enter Animation
19283
19344
  */
19284
19345
  const mdEnterAnimation$2 = (baseEl, opts) => {
19285
- const { currentBreakpoint } = opts;
19346
+ const { currentBreakpoint, expandToScroll } = opts;
19286
19347
  const root = getElementRoot(baseEl);
19287
- const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19348
+ const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
19288
19349
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19289
19350
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19290
- return createAnimation()
19351
+ // The content animation is only added if scrolling is enabled for
19352
+ // all the breakpoints.
19353
+ expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
19354
+ const baseAnimation = createAnimation()
19291
19355
  .addElement(baseEl)
19292
19356
  .easing('cubic-bezier(0.36,0.66,0.04,1)')
19293
19357
  .duration(280)
19294
- .addAnimation([backdropAnimation, wrapperAnimation]);
19358
+ .addAnimation([backdropAnimation, wrapperAnimation])
19359
+ .beforeAddWrite(() => {
19360
+ if (expandToScroll) {
19361
+ // Scroll can only be done when the modal is fully expanded.
19362
+ return;
19363
+ }
19364
+ /**
19365
+ * There are some browsers that causes flickering when
19366
+ * dragging the content when scroll is enabled at every
19367
+ * breakpoint. This is due to the wrapper element being
19368
+ * transformed off the screen and having a snap animation.
19369
+ *
19370
+ * A workaround is to clone the footer element and append
19371
+ * it outside of the wrapper element. This way, the footer
19372
+ * is still visible and the drag can be done without
19373
+ * flickering. The original footer is hidden until the modal
19374
+ * is dismissed. This maintains the animation of the footer
19375
+ * when the modal is dismissed.
19376
+ *
19377
+ * The workaround needs to be done before the animation starts
19378
+ * so there are no flickering issues.
19379
+ */
19380
+ const ionFooter = baseEl.querySelector('ion-footer');
19381
+ /**
19382
+ * This check is needed to prevent more than one footer
19383
+ * from being appended to the shadow root.
19384
+ * Otherwise, iOS and MD enter animations would append
19385
+ * the footer twice.
19386
+ */
19387
+ const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
19388
+ if (ionFooter && !ionFooterAlreadyAppended) {
19389
+ const footerHeight = ionFooter.clientHeight;
19390
+ const clonedFooter = ionFooter.cloneNode(true);
19391
+ baseEl.shadowRoot.appendChild(clonedFooter);
19392
+ ionFooter.style.setProperty('display', 'none');
19393
+ ionFooter.setAttribute('aria-hidden', 'true');
19394
+ // Padding is added to prevent some content from being hidden.
19395
+ const page = baseEl.querySelector('.ion-page');
19396
+ page.style.setProperty('padding-bottom', `${footerHeight}px`);
19397
+ }
19398
+ });
19399
+ if (contentAnimation) {
19400
+ baseAnimation.addAnimation(contentAnimation);
19401
+ }
19402
+ return baseAnimation;
19295
19403
  };
19296
19404
 
19297
19405
  const createLeaveAnimation = () => {
@@ -19306,18 +19414,41 @@ const createLeaveAnimation = () => {
19306
19414
  * Md Modal Leave Animation
19307
19415
  */
19308
19416
  const mdLeaveAnimation$2 = (baseEl, opts) => {
19309
- const { currentBreakpoint } = opts;
19417
+ const { currentBreakpoint, expandToScroll } = opts;
19310
19418
  const root = getElementRoot(baseEl);
19311
19419
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
19312
19420
  backdropAnimation.addElement(root.querySelector('ion-backdrop'));
19313
19421
  wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
19314
- return createAnimation()
19422
+ const baseAnimation = createAnimation()
19315
19423
  .easing('cubic-bezier(0.47,0,0.745,0.715)')
19316
19424
  .duration(200)
19317
- .addAnimation([backdropAnimation, wrapperAnimation]);
19425
+ .addAnimation([backdropAnimation, wrapperAnimation])
19426
+ .beforeAddWrite(() => {
19427
+ if (expandToScroll) {
19428
+ // Scroll can only be done when the modal is fully expanded.
19429
+ return;
19430
+ }
19431
+ /**
19432
+ * If expandToScroll is disabled, we need to swap
19433
+ * the visibility to the original, so the footer
19434
+ * dismisses with the modal and doesn't stay
19435
+ * until the modal is removed from the DOM.
19436
+ */
19437
+ const ionFooter = baseEl.querySelector('ion-footer');
19438
+ if (ionFooter) {
19439
+ const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
19440
+ ionFooter.style.removeProperty('display');
19441
+ ionFooter.removeAttribute('aria-hidden');
19442
+ clonedFooter.style.setProperty('display', 'none');
19443
+ clonedFooter.setAttribute('aria-hidden', 'true');
19444
+ const page = baseEl.querySelector('.ion-page');
19445
+ page.style.removeProperty('padding-bottom');
19446
+ }
19447
+ });
19448
+ return baseAnimation;
19318
19449
  };
19319
19450
 
19320
- const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19451
+ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
19321
19452
  // Defaults for the sheet swipe animation
19322
19453
  const defaultBackdrop = [
19323
19454
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -19334,6 +19465,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19334
19465
  { offset: 1, transform: 'translateY(100%)' },
19335
19466
  ],
19336
19467
  BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,
19468
+ CONTENT_KEYFRAMES: [
19469
+ { offset: 0, maxHeight: '100%' },
19470
+ { offset: 1, maxHeight: '0%' },
19471
+ ],
19337
19472
  };
19338
19473
  const contentEl = baseEl.querySelector('ion-content');
19339
19474
  const height = wrapperEl.clientHeight;
@@ -19341,10 +19476,11 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19341
19476
  let offset = 0;
19342
19477
  let canDismissBlocksGesture = false;
19343
19478
  const canDismissMaxStep = 0.95;
19344
- const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19345
- const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19346
19479
  const maxBreakpoint = breakpoints[breakpoints.length - 1];
19347
19480
  const minBreakpoint = breakpoints[0];
19481
+ const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');
19482
+ const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
19483
+ const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
19348
19484
  const enableBackdrop = () => {
19349
19485
  baseEl.style.setProperty('pointer-events', 'auto');
19350
19486
  backdropEl.style.setProperty('pointer-events', 'auto');
@@ -19367,6 +19503,31 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19367
19503
  */
19368
19504
  baseEl.classList.add(FOCUS_TRAP_DISABLE_CLASS);
19369
19505
  };
19506
+ /**
19507
+ * Toggles the visible modal footer when `expandToScroll` is disabled.
19508
+ * @param footer The footer to show.
19509
+ */
19510
+ const swapFooterVisibility = (footer) => {
19511
+ const originalFooter = baseEl.querySelector('ion-footer');
19512
+ if (!originalFooter) {
19513
+ return;
19514
+ }
19515
+ const clonedFooter = wrapperEl.nextElementSibling;
19516
+ const footerToHide = footer === 'original' ? clonedFooter : originalFooter;
19517
+ const footerToShow = footer === 'original' ? originalFooter : clonedFooter;
19518
+ footerToShow.style.removeProperty('display');
19519
+ footerToShow.removeAttribute('aria-hidden');
19520
+ const page = baseEl.querySelector('.ion-page');
19521
+ if (footer === 'original') {
19522
+ page.style.removeProperty('padding-bottom');
19523
+ }
19524
+ else {
19525
+ const pagePadding = footerToShow.clientHeight;
19526
+ page.style.setProperty('padding-bottom', `${pagePadding}px`);
19527
+ }
19528
+ footerToHide.style.setProperty('display', 'none');
19529
+ footerToHide.setAttribute('aria-hidden', 'true');
19530
+ };
19370
19531
  /**
19371
19532
  * After the entering animation completes,
19372
19533
  * we need to set the animation to go from
@@ -19378,6 +19539,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19378
19539
  if (wrapperAnimation && backdropAnimation) {
19379
19540
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19380
19541
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19542
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19381
19543
  animation.progressStart(true, 1 - currentBreakpoint);
19382
19544
  /**
19383
19545
  * If backdrop is not enabled, then content
@@ -19394,7 +19556,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19394
19556
  disableBackdrop();
19395
19557
  }
19396
19558
  }
19397
- if (contentEl && currentBreakpoint !== maxBreakpoint) {
19559
+ if (contentEl && currentBreakpoint !== maxBreakpoint && expandToScroll) {
19398
19560
  contentEl.scrollY = false;
19399
19561
  }
19400
19562
  const canStart = (detail) => {
@@ -19408,6 +19570,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19408
19570
  */
19409
19571
  const contentEl = findClosestIonContent(detail.event.target);
19410
19572
  currentBreakpoint = getCurrentBreakpoint();
19573
+ /**
19574
+ * If we have expandToScroll disabled, we should not allow the swipe gesture to start
19575
+ * if the content is being swiped.
19576
+ */
19577
+ if (!expandToScroll && contentEl) {
19578
+ return false;
19579
+ }
19411
19580
  if (currentBreakpoint === 1 && contentEl) {
19412
19581
  /**
19413
19582
  * The modal should never swipe to close on the content with a refresher.
@@ -19438,6 +19607,15 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19438
19607
  * Remove undefined check
19439
19608
  */
19440
19609
  canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;
19610
+ /**
19611
+ * If expandToScroll is disabled, we need to swap
19612
+ * the footer visibility to the original, so if the modal
19613
+ * is dismissed, the footer dismisses with the modal
19614
+ * and doesn't stay on the screen after the modal is gone.
19615
+ */
19616
+ if (!expandToScroll) {
19617
+ swapFooterVisibility('original');
19618
+ }
19441
19619
  /**
19442
19620
  * If we are pulling down, then it is possible we are pulling on the content.
19443
19621
  * We do not want scrolling to happen at the same time as the gesture.
@@ -19553,6 +19731,19 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19553
19731
  opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
19554
19732
  },
19555
19733
  ]);
19734
+ if (contentAnimation) {
19735
+ /**
19736
+ * The modal content should scroll at any breakpoint when expandToScroll
19737
+ * is disabled. In order to do this, the content needs to be completely
19738
+ * viewable so scrolling can access everything. Otherwise, the default
19739
+ * behavior would show the content off the screen and only allow
19740
+ * scrolling when the sheet is fully expanded.
19741
+ */
19742
+ contentAnimation.keyframes([
19743
+ { offset: 0, maxHeight: `${(1 - breakpointOffset) * 100}%` },
19744
+ { offset: 1, maxHeight: `${snapToBreakpoint * 100}%` },
19745
+ ]);
19746
+ }
19556
19747
  animation.progressStep(0);
19557
19748
  }
19558
19749
  /**
@@ -19560,6 +19751,14 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19560
19751
  * snapping animation completes.
19561
19752
  */
19562
19753
  gesture.enable(false);
19754
+ /**
19755
+ * If expandToScroll is disabled, we need to swap
19756
+ * the footer visibility to the cloned one so the footer
19757
+ * doesn't flicker when the sheet's height is animated.
19758
+ */
19759
+ if (!expandToScroll && shouldRemainOpen) {
19760
+ swapFooterVisibility('cloned');
19761
+ }
19563
19762
  if (shouldPreventDismiss) {
19564
19763
  handleCanDismiss(baseEl, animation);
19565
19764
  }
@@ -19567,13 +19766,13 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19567
19766
  onDismiss();
19568
19767
  }
19569
19768
  /**
19570
- * If the sheet is going to be fully expanded then we should enable
19571
- * scrolling immediately. The sheet modal animation takes ~500ms to finish
19572
- * so if we wait until then there is a visible delay for when scrolling is
19573
- * re-enabled. Native iOS allows for scrolling on the sheet modal as soon
19574
- * as the gesture is released, so we align with that.
19769
+ * Enables scrolling immediately if the sheet is about to fully expand
19770
+ * or if it allows scrolling at any breakpoint. Without this, there would
19771
+ * be a ~500ms delay while the modal animation completes, causing a
19772
+ * noticeable lag. Native iOS allows scrolling as soon as the gesture is
19773
+ * released, so we align with that behavior.
19575
19774
  */
19576
- if (contentEl && snapToBreakpoint === breakpoints[breakpoints.length - 1]) {
19775
+ if (contentEl && (snapToBreakpoint === breakpoints[breakpoints.length - 1] || !expandToScroll)) {
19577
19776
  contentEl.scrollY = true;
19578
19777
  }
19579
19778
  return new Promise((resolve) => {
@@ -19591,6 +19790,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19591
19790
  raf(() => {
19592
19791
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
19593
19792
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
19793
+ contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
19594
19794
  animation.progressStart(true, 1 - snapToBreakpoint);
19595
19795
  currentBreakpoint = snapToBreakpoint;
19596
19796
  onBreakpointChange(currentBreakpoint);
@@ -19643,10 +19843,10 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
19643
19843
  };
19644
19844
  };
19645
19845
 
19646
- const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
19846
+ const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer ion-toolbar:first-of-type{padding-top:6px}";
19647
19847
  var IonModalIosStyle0 = modalIosCss;
19648
19848
 
19649
- const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19849
+ const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
19650
19850
  var IonModalMdStyle0 = modalMdCss;
19651
19851
 
19652
19852
  // TODO(FW-2832): types
@@ -19725,6 +19925,7 @@ class Modal {
19725
19925
  this.enterAnimation = undefined;
19726
19926
  this.leaveAnimation = undefined;
19727
19927
  this.breakpoints = undefined;
19928
+ this.expandToScroll = true;
19728
19929
  this.initialBreakpoint = undefined;
19729
19930
  this.backdropBreakpoint = 0;
19730
19931
  this.handle = undefined;
@@ -19940,6 +20141,7 @@ class Modal {
19940
20141
  presentingEl: presentingElement,
19941
20142
  currentBreakpoint: this.initialBreakpoint,
19942
20143
  backdropBreakpoint: this.backdropBreakpoint,
20144
+ expandToScroll: this.expandToScroll,
19943
20145
  });
19944
20146
  /* tslint:disable-next-line */
19945
20147
  if (typeof window !== 'undefined') {
@@ -19990,7 +20192,10 @@ class Modal {
19990
20192
  // should be in the DOM and referenced by now, except
19991
20193
  // for the presenting el
19992
20194
  const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
19993
- const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));
20195
+ const ani = (this.animation = animationBuilder(el, {
20196
+ presentingEl: this.presentingElement,
20197
+ expandToScroll: this.expandToScroll,
20198
+ }));
19994
20199
  const contentEl = findIonContent(el);
19995
20200
  if (!contentEl) {
19996
20201
  printIonContentErrorMsg(el);
@@ -20035,9 +20240,10 @@ class Modal {
20035
20240
  presentingEl: this.presentingElement,
20036
20241
  currentBreakpoint: initialBreakpoint,
20037
20242
  backdropBreakpoint,
20243
+ expandToScroll: this.expandToScroll,
20038
20244
  }));
20039
20245
  ani.progressStart(true, 1);
20040
- const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20246
+ const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
20041
20247
  if (this.currentBreakpoint !== breakpoint) {
20042
20248
  this.currentBreakpoint = breakpoint;
20043
20249
  this.ionBreakpointDidChange.emit({ breakpoint });
@@ -20115,6 +20321,7 @@ class Modal {
20115
20321
  presentingEl: presentingElement,
20116
20322
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
20117
20323
  backdropBreakpoint: this.backdropBreakpoint,
20324
+ expandToScroll: this.expandToScroll,
20118
20325
  });
20119
20326
  if (dismissed) {
20120
20327
  const { delegate } = this.getDelegate();
@@ -20200,23 +20407,23 @@ class Modal {
20200
20407
  return true;
20201
20408
  }
20202
20409
  render() {
20203
- const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap } = this;
20410
+ const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
20204
20411
  const showHandle = handle !== false && isSheetModal;
20205
20412
  const mode = getIonMode$1(this);
20206
20413
  const isCardModal = presentingElement !== undefined && mode === 'ios';
20207
20414
  const isHandleCycle = handleBehavior === 'cycle';
20208
- return (hAsync(Host, Object.assign({ key: 'b4da5111fe4719fa450c39b2d4bd884a302a7924', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20415
+ return (hAsync(Host, Object.assign({ key: 'b58b683d13292c390c480a374a26995052914f94', "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
20209
20416
  zIndex: `${20000 + this.overlayIndex}`,
20210
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), hAsync("ion-backdrop", { key: 'c12dbf747e0eb914eaf1331798548ffc7e147763', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'da546ee80c6576b5acc66e959fd5009e0b9a8160', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '306ebe6427440ad5f7ed36d590e562d15a503b75',
20417
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), hAsync("ion-backdrop", { key: '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',
20211
20418
  /*
20212
20419
  role and aria-modal must be used on the
20213
20420
  same element. They must also be set inside the
20214
20421
  shadow DOM otherwise ion-button will not be highlighted
20215
20422
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
20216
20423
  */
20217
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'c5d17e346fe255a7c0cacbbf15c0083f2d09c488', class: "modal-handle",
20424
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '12964306d8e911a0777bb87c2e3ea906a85596c2', class: "modal-handle",
20218
20425
  // Prevents the handle from receiving keyboard focus when it does not cycle
20219
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: '5cc714170a00b67f3eda0cd1d6f37c1489a99c83' }))));
20426
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), hAsync("slot", { key: 'c59a436723e37414b686763a73fa89b174f9bb39' }))));
20220
20427
  }
20221
20428
  get el() { return getElement(this); }
20222
20429
  static get watchers() { return {
@@ -20238,6 +20445,7 @@ class Modal {
20238
20445
  "enterAnimation": [16],
20239
20446
  "leaveAnimation": [16],
20240
20447
  "breakpoints": [16],
20448
+ "expandToScroll": [4, "expand-to-scroll"],
20241
20449
  "initialBreakpoint": [2, "initial-breakpoint"],
20242
20450
  "backdropBreakpoint": [2, "backdrop-breakpoint"],
20243
20451
  "handle": [4],
@@ -21165,7 +21373,7 @@ class Nav {
21165
21373
  }
21166
21374
  }
21167
21375
  render() {
21168
- return hAsync("slot", { key: 'dfe98cb6604a2015a49f41beffebdd2da957dfff' });
21376
+ return hAsync("slot", { key: 'bd958b6ade20eaadbfc9df2bd39629e3f85a1128' });
21169
21377
  }
21170
21378
  get el() { return getElement(this); }
21171
21379
  static get watchers() { return {
@@ -21238,7 +21446,7 @@ class NavLink {
21238
21446
  this.routerAnimation = undefined;
21239
21447
  }
21240
21448
  render() {
21241
- return hAsync(Host, { key: 'd2f8545b4fbd5aa25ef36eb01dffbc5d35ccfbb9', onClick: this.onClick });
21449
+ return hAsync(Host, { key: 'c43e6b9325e3a38452f0eded9d77a58ee57104e4', onClick: this.onClick });
21242
21450
  }
21243
21451
  get el() { return getElement(this); }
21244
21452
  static get cmpMeta() { return {
@@ -21272,9 +21480,9 @@ class Note {
21272
21480
  }
21273
21481
  render() {
21274
21482
  const mode = getIonMode$1(this);
21275
- return (hAsync(Host, { key: '10a3495bc21166176986441479f8f7539029d161', class: createColorClasses$1(this.color, {
21483
+ return (hAsync(Host, { key: 'c9a8080cca174d0e5604940507d99e7d45f54e54', class: createColorClasses$1(this.color, {
21276
21484
  [mode]: true,
21277
- }) }, hAsync("slot", { key: 'b6a9459e1b85f608fafd060a4bfeb11637ebe873' })));
21485
+ }) }, hAsync("slot", { key: '9f2a060467de809c4da1882cdcc219a0328d3b7d' })));
21278
21486
  }
21279
21487
  static get style() { return {
21280
21488
  ios: IonNoteIosStyle0,
@@ -22039,11 +22247,11 @@ class Picker {
22039
22247
  render() {
22040
22248
  const { htmlAttributes } = this;
22041
22249
  const mode = getIonMode$1(this);
22042
- return (hAsync(Host, Object.assign({ key: '0712fa8732141848e50ad2e08e2ba66ef2a48991', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22250
+ return (hAsync(Host, Object.assign({ key: 'c823f926c4d2b82628024346646fceca1191cdef', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
22043
22251
  zIndex: `${20000 + this.overlayIndex}`,
22044
22252
  }, class: Object.assign({ [mode]: true,
22045
22253
  // Used internally for styling
22046
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: 'c997632ef0488698739664012de5a6494de438b6', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '20045054a76cca997b410835fa6b305af22dcb12', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'a73a6ac20b685ed9694d4fa95ea236ce5d63fdbf', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '1221cdcc2ff013deeba12170129c8fe78308330c', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '45038a58430a4251100797b902e7034243137564', class: "picker-columns" }, hAsync("div", { key: 'c579bb69cddd4090912855ffd7f59536280f34b9', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: '978c6632d82a97d053b729c9de65dd3af4c4cee2', class: "picker-below-highlight" }))), hAsync("div", { key: 'e7e9dc437a3cf6d559e2cb0df71af69047a2ae31', tabindex: "0", "aria-hidden": "true" })));
22254
+ [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '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" })));
22047
22255
  }
22048
22256
  get el() { return getElement(this); }
22049
22257
  static get watchers() { return {
@@ -23018,9 +23226,9 @@ class PickerColumnCmp {
23018
23226
  render() {
23019
23227
  const col = this.col;
23020
23228
  const mode = getIonMode$1(this);
23021
- return (hAsync(Host, { key: 'c015eb8bc01b3287cbd1d71af0aa311b6be89d36', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
23229
+ return (hAsync(Host, { key: '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: {
23022
23230
  'max-width': this.col.columnWidth,
23023
- } }, col.prefix && (hAsync("div", { key: 'f9de3fe2f5c7ad3256d6e5f44b6d03a2b1f96ffb', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '10f9c12aa174f96c7cf9adc30efbb26695c0aa64', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '1d9c0892ce56e0da9044c79eb953827166f5190b', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
23231
+ } }, col.prefix && (hAsync("div", { key: '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))));
23024
23232
  }
23025
23233
  get el() { return getElement(this); }
23026
23234
  static get watchers() { return {
@@ -23124,10 +23332,10 @@ class PickerColumnOption {
23124
23332
  render() {
23125
23333
  const { color, disabled, ariaLabel } = this;
23126
23334
  const mode = getIonMode$1(this);
23127
- return (hAsync(Host, { key: 'c743c6ef44bb9f765cc15b3b5d2864de6520203a', class: createColorClasses$1(color, {
23335
+ return (hAsync(Host, { key: '19dec7c5fa1f464ff09fa97451c94c11ef1432a4', class: createColorClasses$1(color, {
23128
23336
  [mode]: true,
23129
23337
  ['option-disabled']: disabled,
23130
- }) }, hAsync("button", { key: '4c3d9eb245c52b2c007f727e145cfb55759bd7a9', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: '4c907d2187cbe9d5941e27f2b12578e2b7271461' }))));
23338
+ }) }, hAsync("button", { key: 'c8363bb865cdcafac7fef0970ba64ebe17f82fb6', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0ed822ecb983dcb88c0fa4e9d2d6970566d9b55' }))));
23131
23339
  }
23132
23340
  get el() { return getElement(this); }
23133
23341
  static get watchers() { return {
@@ -24441,9 +24649,9 @@ class Popover {
24441
24649
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
24442
24650
  const desktop = isPlatform('desktop');
24443
24651
  const enableArrow = arrow && !parentPopover;
24444
- return (hAsync(Host, Object.assign({ key: 'ffe8b37c9ffb5cac210a7307e6cdfcf78712905b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24652
+ return (hAsync(Host, Object.assign({ key: '135246fb813a5040e13225706eeee1310b212ff0', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
24445
24653
  zIndex: `${20000 + this.overlayIndex}`,
24446
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: '12b3ffa3928b4d56a4f09c3d2f5d493d47b45255', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '2c2862d5c7e75b637973c712b4982bf4978c0cdf', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '0cfacc52afaa7abc28c1b7742889d7a1c23a37ad', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '3ef570c44d4fe7f063dd419008c92c8c40d3cd22', class: "popover-content", part: "content" }, hAsync("slot", { key: '6fc5dfdce20fee1642bc1f05d41b5bf7d1034457' })))));
24654
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: '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' })))));
24447
24655
  }
24448
24656
  get el() { return getElement(this); }
24449
24657
  static get watchers() { return {
@@ -24535,7 +24743,7 @@ class ProgressBar {
24535
24743
  const mode = getIonMode$1(this);
24536
24744
  // If the progress is displayed as a solid bar.
24537
24745
  const progressSolid = buffer === 1;
24538
- return (hAsync(Host, { key: '8d8ddf0b26fe33803d3a6168cbedd523d1a888e7', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24746
+ return (hAsync(Host, { key: 'd92ae727ceb9849199fb949ab831bb6833a68085', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
24539
24747
  [mode]: true,
24540
24748
  [`progress-bar-${type}`]: true,
24541
24749
  'progress-paused': paused,
@@ -24705,7 +24913,7 @@ class Radio {
24705
24913
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
24706
24914
  const mode = getIonMode$1(this);
24707
24915
  const inItem = hostContext('ion-item', el);
24708
- return (hAsync(Host, { key: '5a0adab55ad009305de4856fa1b9f93f2279a734', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24916
+ return (hAsync(Host, { key: 'c9c6410852560d664372af5ff28e778fc82748f1', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
24709
24917
  [mode]: true,
24710
24918
  'in-item': inItem,
24711
24919
  'radio-checked': checked,
@@ -24716,10 +24924,10 @@ class Radio {
24716
24924
  // Focus and active styling should not apply when the radio is in an item
24717
24925
  'ion-activatable': !inItem,
24718
24926
  'ion-focusable': !inItem,
24719
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'f5673a798e6d87868339f046445f707e1d93b7b6', class: "radio-wrapper" }, hAsync("div", { key: 'e9190c06f75a171cab63e3f74ccf771c3ed87005', class: {
24927
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'b7483c1bd096942d3f14fc6d13c7c0bb3b367e42', class: "radio-wrapper" }, hAsync("div", { key: '3b978fa691b0ec49c8d04bf6c966cc7c034b111c', class: {
24720
24928
  'label-text-wrapper': true,
24721
24929
  'label-text-wrapper-hidden': !hasLabel,
24722
- }, part: "label" }, hAsync("slot", { key: '6cedf4e7b3bd03e4a635727dd7b6094bab64af64' })), hAsync("div", { key: '26dd48d9d2848b7f100b732abdc4a3171adde483', class: "native-wrapper" }, this.renderRadioControl()))));
24930
+ }, part: "label" }, hAsync("slot", { key: 'c1553adfaf6ed22261654fd04491ea18dc727144' })), hAsync("div", { key: '2defa43821d151d8130683b6b9859aca6ed944d1', class: "native-wrapper" }, this.renderRadioControl()))));
24723
24931
  }
24724
24932
  get el() { return getElement(this); }
24725
24933
  static get watchers() { return {
@@ -24752,12 +24960,20 @@ class Radio {
24752
24960
  }
24753
24961
  let radioButtonIds = 0;
24754
24962
 
24963
+ 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}";
24964
+ var IonRadioGroupIosStyle0 = radioGroupIosCss;
24965
+
24966
+ 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}";
24967
+ var IonRadioGroupMdStyle0 = radioGroupMdCss;
24968
+
24755
24969
  class RadioGroup {
24756
24970
  constructor(hostRef) {
24757
24971
  registerInstance(this, hostRef);
24758
24972
  this.ionChange = createEvent(this, "ionChange", 7);
24759
24973
  this.ionValueChange = createEvent(this, "ionValueChange", 7);
24760
24974
  this.inputId = `ion-rg-${radioGroupIds++}`;
24975
+ this.helperTextId = `${this.inputId}-helper-text`;
24976
+ this.errorTextId = `${this.inputId}-error-text`;
24761
24977
  this.labelId = `${this.inputId}-lbl`;
24762
24978
  this.setRadioTabindex = (value) => {
24763
24979
  const radios = this.getRadios();
@@ -24809,6 +25025,8 @@ class RadioGroup {
24809
25025
  this.compareWith = undefined;
24810
25026
  this.name = this.inputId;
24811
25027
  this.value = undefined;
25028
+ this.helperText = undefined;
25029
+ this.errorText = undefined;
24812
25030
  }
24813
25031
  valueChanged(value) {
24814
25032
  this.setRadioTabindex(value);
@@ -24907,24 +25125,51 @@ class RadioGroup {
24907
25125
  const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
24908
25126
  radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
24909
25127
  }
25128
+ /**
25129
+ * Renders the helper text or error text values
25130
+ */
25131
+ renderHintText() {
25132
+ const { helperText, errorText, helperTextId, errorTextId } = this;
25133
+ const hasHintText = !!helperText || !!errorText;
25134
+ if (!hasHintText) {
25135
+ return;
25136
+ }
25137
+ return (hAsync("div", { class: "supporting-text" }, hAsync("div", { id: helperTextId, class: "helper-text" }, helperText), hAsync("div", { id: errorTextId, class: "error-text" }, errorText)));
25138
+ }
25139
+ getHintTextID() {
25140
+ const { el, helperText, errorText, helperTextId, errorTextId } = this;
25141
+ if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
25142
+ return errorTextId;
25143
+ }
25144
+ if (helperText) {
25145
+ return helperTextId;
25146
+ }
25147
+ return undefined;
25148
+ }
24910
25149
  render() {
24911
25150
  const { label, labelId, el, name, value } = this;
24912
25151
  const mode = getIonMode$1(this);
24913
25152
  renderHiddenInput(true, el, name, value, false);
24914
- return hAsync(Host, { key: 'a853e38901f0f4ba17bbf21ebb5da5b5c20b327e', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
25153
+ return (hAsync(Host, { key: 'cac92777297029d7fd1b6af264d92850e35dfbba', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: mode }, this.renderHintText(), hAsync("slot", { key: '7f9bd643f5e29ca4b7dee8abd65da88118740192' })));
24915
25154
  }
24916
25155
  get el() { return getElement(this); }
24917
25156
  static get watchers() { return {
24918
25157
  "value": ["valueChanged"]
24919
25158
  }; }
25159
+ static get style() { return {
25160
+ ios: IonRadioGroupIosStyle0,
25161
+ md: IonRadioGroupMdStyle0
25162
+ }; }
24920
25163
  static get cmpMeta() { return {
24921
- "$flags$": 0,
25164
+ "$flags$": 36,
24922
25165
  "$tagName$": "ion-radio-group",
24923
25166
  "$members$": {
24924
25167
  "allowEmptySelection": [4, "allow-empty-selection"],
24925
25168
  "compareWith": [1, "compare-with"],
24926
25169
  "name": [1],
24927
25170
  "value": [1032],
25171
+ "helperText": [1, "helper-text"],
25172
+ "errorText": [1, "error-text"],
24928
25173
  "setFocus": [64]
24929
25174
  },
24930
25175
  "$listeners$": [[4, "keydown", "onKeydown"]],
@@ -25544,7 +25789,7 @@ class Range {
25544
25789
  const needsEndAdjustment = inItem && !hasEndContent;
25545
25790
  const mode = getIonMode$1(this);
25546
25791
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
25547
- return (hAsync(Host, { key: '05c699caaead7cc74deaae2a958c4632191473a8', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25792
+ return (hAsync(Host, { key: '657e59ea74a41a279f96f3fe50752541941b3d00', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
25548
25793
  [mode]: true,
25549
25794
  'in-item': inItem,
25550
25795
  'range-disabled': disabled,
@@ -25553,10 +25798,10 @@ class Range {
25553
25798
  [`range-label-placement-${labelPlacement}`]: true,
25554
25799
  'range-item-start-adjustment': needsStartAdjustment,
25555
25800
  'range-item-end-adjustment': needsEndAdjustment,
25556
- }) }, hAsync("label", { key: '959837bcc48c4bda33ae1f62b66ef444329a2961', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'a434c6b5c26f57f52b3af98d881e7e6a179c89fc', class: {
25801
+ }) }, hAsync("label", { key: '96ad0cfec290bd25456925927e7638a0659a00c9', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'ca61076e921551c5de35c9d23262326a94c90ec5', class: {
25557
25802
  'label-text-wrapper': true,
25558
25803
  'label-text-wrapper-hidden': !hasLabel,
25559
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '87df1037b6b3337bd1fab05d33a26bf658c57914', class: "native-wrapper" }, hAsync("slot", { key: '2cb88f101da49b70aeae29b0bf5445fac241bb2f', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '17b835cfb2bd9b8e1957afd425543ff02b913d83', name: "end" })))));
25804
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '8f0f832bff583f68d65a25d3c8e92559edd5c134', class: "native-wrapper" }, hAsync("slot", { key: '4faaa86fd7e912f10ce19fc4ae47ed3407240585', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'a78d24ceb84ea094a37dc45f912bc457de3ee3e3', name: "end" })))));
25560
25805
  }
25561
25806
  get el() { return getElement(this); }
25562
25807
  static get watchers() { return {
@@ -26457,7 +26702,7 @@ class Refresher {
26457
26702
  }
26458
26703
  render() {
26459
26704
  const mode = getIonMode$1(this);
26460
- return (hAsync(Host, { key: '9d4ac22988aec2c6af0b0c90934c52f62f0e4ce3', slot: "fixed", class: {
26705
+ return (hAsync(Host, { key: 'a3ef3ff131f96f85b27a3aba05aa6d5341e7abf8', slot: "fixed", class: {
26461
26706
  [mode]: true,
26462
26707
  // Used internally for styling
26463
26708
  [`refresher-${mode}`]: true,
@@ -26685,7 +26930,7 @@ class RefresherContent {
26685
26930
  const pullingIcon = this.pullingIcon;
26686
26931
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
26687
26932
  const mode = getIonMode$1(this);
26688
- return (hAsync(Host, { key: '19633bbcf02e3dba885d6bdcdaf2269bf4c8e2f5', class: mode }, hAsync("div", { key: '28922e434a55a6cac0476fe2bee56941ce0d1c02', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: 'fe575bf996021884677e9b23a3215d63caf894f5', class: "refresher-pulling-icon" }, hAsync("div", { key: '59fe12297fd95bc33b8df8cd35316e2a1c084d91', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: 'af9cc013ae04945c140b2865610ca73edb52ab48', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: '34df66ad1b0f706a0532957251aa2c20bf4587d8', class: "arrow-container" }, hAsync("ion-icon", { key: 'ffdb5c123e606b823491c6c51cc2b497f62581bb', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'ac3a2032bb969264d20fa057e9123441005d7a9d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'd969d10915548e72aae289b52154366f3dd39b31', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'a8f854f81a94812d7bef8ce088331d94f49ff53d', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'a1f646945370e40c844d62bc0c647443ae9dfbe7', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: 'ab3ff4047769b6436e222b46d193c1e8b23e2fce', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
26933
+ return (hAsync(Host, { key: '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())));
26689
26934
  }
26690
26935
  get el() { return getElement(this); }
26691
26936
  static get cmpMeta() { return {
@@ -26728,7 +26973,7 @@ class Reorder {
26728
26973
  render() {
26729
26974
  const mode = getIonMode$1(this);
26730
26975
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
26731
- return (hAsync(Host, { key: '27266e30bcb7e10c57fb6d546399cfb1f1c93b23', class: mode }, hAsync("slot", { key: '8745cb9a31458e884c27eed1fb90d104fe9a79eb' }, hAsync("ion-icon", { key: '6c4b9631a2f5610f1e21b2db025b6702d0d593bf', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26976
+ return (hAsync(Host, { key: 'b99138409354d1d74f62005ed067ef2edcb5167f', class: mode }, hAsync("slot", { key: 'dcd6d99f8103414767458b3eb4aac8bb6e2eebab' }, hAsync("ion-icon", { key: 'ec70966b5b489e5604f3e1e25aba1916953b27ba', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
26732
26977
  }
26733
26978
  get el() { return getElement(this); }
26734
26979
  static get style() { return {
@@ -26982,7 +27227,7 @@ class ReorderGroup {
26982
27227
  }
26983
27228
  render() {
26984
27229
  const mode = getIonMode$1(this);
26985
- return (hAsync(Host, { key: 'a38c7fbceb677201330a602273d5b55abb32da19', class: {
27230
+ return (hAsync(Host, { key: '7c2a33e57dff31ad71bab015eb086a5348453ba5', class: {
26986
27231
  [mode]: true,
26987
27232
  'reorder-enabled': !this.disabled,
26988
27233
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -27090,7 +27335,7 @@ class RippleEffect {
27090
27335
  }
27091
27336
  render() {
27092
27337
  const mode = getIonMode$1(this);
27093
- return (hAsync(Host, { key: '7ae559bda5d2c1856a45bfa150c2cb4f83373f8e', role: "presentation", class: {
27338
+ return (hAsync(Host, { key: '17c87440165ecda9c2e6fb93e48eb252dcc25a96', role: "presentation", class: {
27094
27339
  [mode]: true,
27095
27340
  unbounded: this.unbounded,
27096
27341
  } }));
@@ -28032,10 +28277,10 @@ class RouterLink {
28032
28277
  rel: this.rel,
28033
28278
  target: this.target,
28034
28279
  };
28035
- return (hAsync(Host, { key: '529ceed5beaf92d7b4cc315c82f449eac18310e8', onClick: this.onClick, class: createColorClasses$1(this.color, {
28280
+ return (hAsync(Host, { key: '369e9502b2a95159b162d85bd498c7ae5f04a27a', onClick: this.onClick, class: createColorClasses$1(this.color, {
28036
28281
  [mode]: true,
28037
28282
  'ion-activatable': true,
28038
- }) }, hAsync("a", Object.assign({ key: 'd5f1f8b256695d70bdafd20ff3d1b625963fa2da' }, attrs), hAsync("slot", { key: '613fcdb36a71e076f989551ea21f1d5c118b1cd2' }))));
28283
+ }) }, hAsync("a", Object.assign({ key: 'f479cde56291938b5ca7bba6891d2cbf21f82c81' }, attrs), hAsync("slot", { key: '7f46ea35e0c4ac19f0ccfe593ef3706dec0e3b2e' }))));
28039
28284
  }
28040
28285
  static get style() { return IonRouterLinkStyle0; }
28041
28286
  static get cmpMeta() { return {
@@ -28230,7 +28475,7 @@ class RouterOutlet {
28230
28475
  return true;
28231
28476
  }
28232
28477
  render() {
28233
- return hAsync("slot", { key: 'a70341f58d19df55de1dad00e3464388e446aa2a' });
28478
+ return hAsync("slot", { key: '6a9003284c80d75b9945d508c8a3d56bbf283948' });
28234
28479
  }
28235
28480
  get el() { return getElement(this); }
28236
28481
  static get watchers() { return {
@@ -28264,7 +28509,7 @@ class Row {
28264
28509
  registerInstance(this, hostRef);
28265
28510
  }
28266
28511
  render() {
28267
- return (hAsync(Host, { key: 'aea072a5005e3f1f309f0d1ae5be5ee19869b035', class: getIonMode$1(this) }, hAsync("slot", { key: '2a481c2126ac6ca65f0a1bbd07c2d3365409cb78' })));
28512
+ return (hAsync(Host, { key: '3d11237af000c5670007ff4a9b7b18e66e32aafd', class: getIonMode$1(this) }, hAsync("slot", { key: 'cd71e7f2baeaf32f36079743912eb591114ceeaa' })));
28268
28513
  }
28269
28514
  static get style() { return IonRowStyle0; }
28270
28515
  static get cmpMeta() { return {
@@ -28658,8 +28903,8 @@ class Searchbar {
28658
28903
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
28659
28904
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
28660
28905
  const shouldShowCancelButton = this.shouldShowCancelButton();
28661
- 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))));
28662
- return (hAsync(Host, { key: '17d57ece5852d03047e4d53ddad6c9d88a432a00', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28906
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '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))));
28907
+ return (hAsync(Host, { key: '0a3d7d21538f32a1fd5160adc1c5f3f0c22a3de2', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
28663
28908
  [mode]: true,
28664
28909
  'searchbar-animated': animated,
28665
28910
  'searchbar-disabled': this.disabled,
@@ -28669,14 +28914,14 @@ class Searchbar {
28669
28914
  'searchbar-has-focus': this.focused,
28670
28915
  'searchbar-should-show-clear': this.shouldShowClearButton(),
28671
28916
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
28672
- }) }, hAsync("div", { key: 'f67c2124e70c24eef0a271516e9c4bdaf7e98ceb', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '8c7f7ccc6809cca30ccc8c4e98e349d3f916321d', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: 'f06524d3163b3883bbde937862aa1e0e8f49f6e1', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '9f7ba2bec93412ecb674b197be13db1de308bb57', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
28917
+ }) }, hAsync("div", { key: '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) => {
28673
28918
  /**
28674
28919
  * This prevents mobile browsers from
28675
28920
  * blurring the input when the clear
28676
28921
  * button is activated.
28677
28922
  */
28678
28923
  ev.preventDefault();
28679
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '19fc3dbc722acc47ff7eb3c94ad4de8aed38dff4', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28924
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '7332cab0d6a9b267680af452b1751324e5bb1a26', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
28680
28925
  }
28681
28926
  get el() { return getElement(this); }
28682
28927
  static get watchers() { return {
@@ -29260,14 +29505,14 @@ class Segment {
29260
29505
  }
29261
29506
  render() {
29262
29507
  const mode = getIonMode$1(this);
29263
- return (hAsync(Host, { key: 'b1eb4a6e4f953f6c4882395585799503735bbc6b', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29508
+ return (hAsync(Host, { key: 'b032b33244524cfbe3e05e9f95fc94e59e8589fe', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
29264
29509
  [mode]: true,
29265
29510
  'in-toolbar': hostContext('ion-toolbar', this.el),
29266
29511
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
29267
29512
  'segment-activated': this.activated,
29268
29513
  'segment-disabled': this.disabled,
29269
29514
  'segment-scrollable': this.scrollable,
29270
- }) }, hAsync("slot", { key: 'e7df6b017d154f30eb8021bc965f2e6c8e6480bf', onSlotchange: this.onSlottedItemsChange })));
29515
+ }) }, hAsync("slot", { key: 'e752fff555f586ed10248a75ef1d40f38d91e677', onSlotchange: this.onSlottedItemsChange })));
29271
29516
  }
29272
29517
  get el() { return getElement(this); }
29273
29518
  static get watchers() { return {
@@ -29338,35 +29583,7 @@ class SegmentButton {
29338
29583
  valueChanged() {
29339
29584
  this.updateState();
29340
29585
  }
29341
- waitForSegmentContent(ionSegment, contentId) {
29342
- return new Promise((resolve, reject) => {
29343
- let timeoutId = undefined;
29344
- let animationFrameId;
29345
- const check = () => {
29346
- if (!ionSegment) {
29347
- reject(new Error(`Segment not found when looking for Segment Content`));
29348
- return;
29349
- }
29350
- const segmentView = getNextSiblingOfType(ionSegment); // Skip the text nodes
29351
- const segmentContent = segmentView === null || segmentView === void 0 ? void 0 : segmentView.querySelector(`ion-segment-content[id="${contentId}"]`);
29352
- if (segmentContent && timeoutId) {
29353
- clearTimeout(timeoutId); // Clear the timeout if the segmentContent is found
29354
- cancelAnimationFrame(animationFrameId);
29355
- resolve(segmentContent);
29356
- }
29357
- else {
29358
- animationFrameId = requestAnimationFrame(check); // Keep checking on the next animation frame
29359
- }
29360
- };
29361
- check();
29362
- // Set a timeout to reject the promise
29363
- timeoutId = setTimeout(() => {
29364
- cancelAnimationFrame(animationFrameId);
29365
- reject(new Error(`Unable to find Segment Content with id="${contentId} within 1000 ms`));
29366
- }, 1000);
29367
- });
29368
- }
29369
- async connectedCallback() {
29586
+ connectedCallback() {
29370
29587
  const segmentEl = (this.segmentEl = this.el.closest('ion-segment'));
29371
29588
  if (segmentEl) {
29372
29589
  this.updateState();
@@ -29376,14 +29593,11 @@ class SegmentButton {
29376
29593
  // Return if there is no contentId defined
29377
29594
  if (!this.contentId)
29378
29595
  return;
29379
- let segmentContent;
29380
- try {
29381
- // Attempt to find the Segment Content by its contentId
29382
- segmentContent = await this.waitForSegmentContent(segmentEl, this.contentId);
29383
- }
29384
- catch (error) {
29385
- // If no associated Segment Content exists, log an error and return
29386
- console.error('Segment Button: ', error.message);
29596
+ // Attempt to find the Segment Content by its contentId
29597
+ const segmentContent = document.getElementById(this.contentId);
29598
+ // If no associated Segment Content exists, log an error and return
29599
+ if (!segmentContent) {
29600
+ console.error(`Segment Button: Unable to find Segment Content with id="${this.contentId}".`);
29387
29601
  return;
29388
29602
  }
29389
29603
  // Ensure the found element is a valid ION-SEGMENT-CONTENT
@@ -29429,7 +29643,7 @@ class SegmentButton {
29429
29643
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
29430
29644
  const mode = getIonMode$1(this);
29431
29645
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
29432
- return (hAsync(Host, { key: 'f9da656c8eccb80e4ef30e3fa977f2dbbefbc988', class: {
29646
+ return (hAsync(Host, { key: '1267f90cf66d6a395848018e81445f600975c10a', class: {
29433
29647
  [mode]: true,
29434
29648
  'in-toolbar': hostContext('ion-toolbar', this.el),
29435
29649
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -29445,7 +29659,7 @@ class SegmentButton {
29445
29659
  'ion-activatable': true,
29446
29660
  'ion-activatable-instant': true,
29447
29661
  'ion-focusable': true,
29448
- } }, hAsync("button", Object.assign({ key: '00dbcdbd81cd74abdd39803f6840a6e477cc7b0c', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '5200c082a9c4788010c4fc33fe75e2b2ad28364a', class: "button-inner" }, hAsync("slot", { key: 'cf3fce2b5d22436b84cd4367a5885df7d6a2715f' })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'f1a2816465f4c2c06644be07315bff2da77e2342' })), hAsync("div", { key: 'aaf31c0ed39641fca698ee98d0773131f4eea6bd', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'fc556651361b7ac305aaedd25ea4afe3173abd20', part: "indicator-background", class: "segment-button-indicator-background" }))));
29662
+ } }, hAsync("button", Object.assign({ key: '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" }))));
29449
29663
  }
29450
29664
  get el() { return getElement(this); }
29451
29665
  static get watchers() { return {
@@ -29481,7 +29695,7 @@ class SegmentContent {
29481
29695
  registerInstance(this, hostRef);
29482
29696
  }
29483
29697
  render() {
29484
- return (hAsync(Host, { key: '03684b2999ac64fe13e376fd7e7f279976e9d4f2' }, hAsync("slot", { key: '143031075bf33ca19e7cfd76fc8a67b83ccaf11c' })));
29698
+ return (hAsync(Host, { key: '1f7f256fdeb7ec661c84f268b239ab21ef170629' }, hAsync("slot", { key: 'c704cf3b4c13deeb612d8a8ffdccef65d62f0866' })));
29485
29699
  }
29486
29700
  static get style() { return IonSegmentContentStyle0; }
29487
29701
  static get cmpMeta() { return {
@@ -29594,10 +29808,10 @@ class SegmentView {
29594
29808
  }
29595
29809
  render() {
29596
29810
  const { disabled, isManualScroll } = this;
29597
- return (hAsync(Host, { key: '9f4f11d31c4db776f077e59ae895b35dd4454717', class: {
29811
+ return (hAsync(Host, { key: '4d51263d62b33762e7bbea48834b1701014c7f99', class: {
29598
29812
  'segment-view-disabled': disabled,
29599
29813
  'segment-view-scroll-disabled': isManualScroll === false,
29600
- } }, hAsync("slot", { key: 'ea58b21f031cee2ab2b70580f336deaefa364538' })));
29814
+ } }, hAsync("slot", { key: '4191dcd9964efc4815ceec776a953f24ad75f02d' })));
29601
29815
  }
29602
29816
  get el() { return getElement(this); }
29603
29817
  static get style() { return {
@@ -29712,6 +29926,7 @@ class Select {
29712
29926
  this.expandedIcon = undefined;
29713
29927
  this.shape = undefined;
29714
29928
  this.value = undefined;
29929
+ this.required = false;
29715
29930
  }
29716
29931
  styleChanged() {
29717
29932
  this.emitStyle();
@@ -30196,8 +30411,8 @@ class Select {
30196
30411
  return renderedLabel;
30197
30412
  }
30198
30413
  renderListbox() {
30199
- const { disabled, inputId, isExpanded } = this;
30200
- return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30414
+ const { disabled, inputId, isExpanded, required } = this;
30415
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
30201
30416
  }
30202
30417
  render() {
30203
30418
  const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value } = this;
@@ -30228,7 +30443,7 @@ class Select {
30228
30443
  * TODO(FW-5592): Remove hasStartEndSlots condition
30229
30444
  */
30230
30445
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
30231
- return (hAsync(Host, { key: '144dfa5c49549a74fe516c65b9b8104a477ac789', onClick: this.onClick, class: createColorClasses$1(this.color, {
30446
+ return (hAsync(Host, { key: '9ac4966b075bd4303ed7ddb0d9ad08eaf9118f20', onClick: this.onClick, class: createColorClasses$1(this.color, {
30232
30447
  [mode]: true,
30233
30448
  'in-item': inItem,
30234
30449
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -30244,7 +30459,7 @@ class Select {
30244
30459
  [`select-justify-${justify}`]: justifyEnabled,
30245
30460
  [`select-shape-${shape}`]: shape !== undefined,
30246
30461
  [`select-label-placement-${labelPlacement}`]: true,
30247
- }) }, 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" }))));
30462
+ }) }, 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" }))));
30248
30463
  }
30249
30464
  get el() { return getElement(this); }
30250
30465
  static get watchers() { return {
@@ -30280,6 +30495,7 @@ class Select {
30280
30495
  "expandedIcon": [1, "expanded-icon"],
30281
30496
  "shape": [1],
30282
30497
  "value": [1032],
30498
+ "required": [4],
30283
30499
  "isExpanded": [32],
30284
30500
  "open": [64]
30285
30501
  },
@@ -30404,7 +30620,7 @@ class SelectModal {
30404
30620
  } }, option.text))));
30405
30621
  }
30406
30622
  render() {
30407
- return (hAsync(Host, { key: '4df42c447b4026d09d9231f09dc4bdae9a8cfe4a', class: getIonMode$1(this) }, hAsync("ion-header", { key: '211c4e869b858867f3d60637e570aeb01de41de7' }, hAsync("ion-toolbar", { key: 'dc4b151331aecbaaaafb460802ee9b689493601d' }, this.header !== undefined && hAsync("ion-title", { key: 'ba1347a59ae0a5c6770c239b5ec02a536a445bd1' }, this.header), hAsync("ion-buttons", { key: '43c98fd25d7e7f54b94b24e53535c6d5ba599892', slot: "end" }, hAsync("ion-button", { key: '51b2b3f3eed42637b2cfc213c95d0bcf10e4b89d', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: 'fe721b09f80555856211f7e40dbfc31a533acae1' }, hAsync("ion-list", { key: 'd0b932d137136958d896408fb2fa571023775b92' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
30623
+ return (hAsync(Host, { key: '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()))));
30408
30624
  }
30409
30625
  get el() { return getElement(this); }
30410
30626
  static get style() { return {
@@ -30437,7 +30653,7 @@ class SelectOption {
30437
30653
  this.value = undefined;
30438
30654
  }
30439
30655
  render() {
30440
- return hAsync(Host, { key: '2e6fa159464f04f6d8720f960141f67918bc7534', role: "option", id: this.inputId, class: getIonMode$1(this) });
30656
+ return hAsync(Host, { key: 'fa94cf1fc8b3ebed6981b05589072f7bc4402beb', role: "option", id: this.inputId, class: getIonMode$1(this) });
30441
30657
  }
30442
30658
  get el() { return getElement(this); }
30443
30659
  static get style() { return IonSelectOptionStyle0; }
@@ -30557,7 +30773,7 @@ class SelectPopover {
30557
30773
  render() {
30558
30774
  const { header, message, options, subHeader } = this;
30559
30775
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
30560
- return (hAsync(Host, { key: 'dd0990db4de4f175b176b27f35501dd1604ca400', class: getIonMode$1(this) }, hAsync("ion-list", { key: 'cea2bc3687b8b2490a2a9ff4a1e16cd34169558e' }, header !== undefined && hAsync("ion-list-header", { key: '194aebb53453c43f913daae45a1a3066a1708c4c' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'b706b07a3c63ad8104d2db413e210c735ec1bec9' }, hAsync("ion-label", { key: '6e52b5b4cf6b04ff3dd5671d64264233de4190d5', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: '6ef4440d17f5db8c96c63b9aa5073f4fe4b8ad62' }, subHeader), message !== undefined && hAsync("p", { key: 'c7b3b76c30ecd606c0e985a0258c13d3a75756e7' }, message)))), this.renderOptions(options))));
30776
+ return (hAsync(Host, { key: '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))));
30561
30777
  }
30562
30778
  get el() { return getElement(this); }
30563
30779
  static get style() { return {
@@ -30605,11 +30821,11 @@ class SkeletonText {
30605
30821
  const animated = this.animated && config.getBoolean('animated', true);
30606
30822
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
30607
30823
  const mode = getIonMode$1(this);
30608
- return (hAsync(Host, { key: 'fdfabf9364caf507450239b62be24f08873bd650', class: {
30824
+ return (hAsync(Host, { key: '59a41a7f3ba2de4f44de57b3243c8f803eb88e2c', class: {
30609
30825
  [mode]: true,
30610
30826
  'skeleton-text-animated': animated,
30611
30827
  'in-media': inMedia,
30612
- } }, hAsync("span", { key: '3482c88dcc177547185ce87972afa064a542367d' }, "\u00A0")));
30828
+ } }, hAsync("span", { key: 'a59a5cea5504f523c4d9b1f428f66772103290aa' }, "\u00A0")));
30613
30829
  }
30614
30830
  get el() { return getElement(this); }
30615
30831
  static get style() { return IonSkeletonTextStyle0; }
@@ -30662,7 +30878,7 @@ class Spinner {
30662
30878
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
30663
30879
  }
30664
30880
  }
30665
- return (hAsync(Host, { key: '9d30ee9f5aa0dd0e220da07e75d05b8b2435224d', class: createColorClasses$1(self.color, {
30881
+ return (hAsync(Host, { key: '8cb73346083cb8a17e38c90e3405fee806c55bbf', class: createColorClasses$1(self.color, {
30666
30882
  [mode]: true,
30667
30883
  [`spinner-${spinnerName}`]: true,
30668
30884
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -30762,12 +30978,12 @@ class SplitPane {
30762
30978
  }
30763
30979
  render() {
30764
30980
  const mode = getIonMode$1(this);
30765
- return (hAsync(Host, { key: '1ca0b0299d03605bb358112ca56cbafbe58f00f5', class: {
30981
+ return (hAsync(Host, { key: 'a63ee13973b94cd58b0da9c00b06bd39b206dd60', class: {
30766
30982
  [mode]: true,
30767
30983
  // Used internally for styling
30768
30984
  [`split-pane-${mode}`]: true,
30769
30985
  'split-pane-visible': this.visible,
30770
- } }, hAsync("slot", { key: 'abe231361727ae7fc63edd592a4490caac1909fb' })));
30986
+ } }, hAsync("slot", { key: 'da6743bb0d17791f863d1f0ca1f59f5ceffe9613' })));
30771
30987
  }
30772
30988
  get el() { return getElement(this); }
30773
30989
  static get watchers() { return {
@@ -30836,10 +31052,10 @@ class Tab {
30836
31052
  }
30837
31053
  render() {
30838
31054
  const { tab, active, component } = this;
30839
- return (hAsync(Host, { key: 'cb75d0877979b3b8df8f7e1952bfa9677da1eaa5', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
31055
+ return (hAsync(Host, { key: 'c18543ba57c4a6a08d519476d1e268524046d678', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
30840
31056
  'ion-page': component === undefined,
30841
31057
  'tab-hidden': !active,
30842
- } }, hAsync("slot", { key: '37fbb7b7a6b03eb93b1dacd2dc1025b78eb2aa6b' })));
31058
+ } }, hAsync("slot", { key: 'e46d100188fc8876e44ebf01f081ce57475b2883' })));
30843
31059
  }
30844
31060
  get el() { return getElement(this); }
30845
31061
  static get watchers() { return {
@@ -30917,11 +31133,11 @@ class TabBar {
30917
31133
  const { color, translucent, keyboardVisible } = this;
30918
31134
  const mode = getIonMode$1(this);
30919
31135
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
30920
- return (hAsync(Host, { key: 'a87fd2ea5df053705a37ea7ffec043e75c4a9907', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
31136
+ return (hAsync(Host, { key: 'fe1cc3174f095ba3c8c6d6c2c20021596801a7c9', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
30921
31137
  [mode]: true,
30922
31138
  'tab-bar-translucent': translucent,
30923
31139
  'tab-bar-hidden': shouldHide,
30924
- }) }, hAsync("slot", { key: '81a6223299b6cab29d7ddced590e9152e2b3ded0' })));
31140
+ }) }, hAsync("slot", { key: 'f7705b1b4f45d28ae8b7c08b91b0f6c9d4176f3f' })));
30925
31141
  }
30926
31142
  get el() { return getElement(this); }
30927
31143
  static get watchers() { return {
@@ -31019,7 +31235,7 @@ class TabButton {
31019
31235
  rel,
31020
31236
  target,
31021
31237
  };
31022
- return (hAsync(Host, { key: '5976c45943ea7ea8e7c1a85fc9996de421439f08', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31238
+ return (hAsync(Host, { key: '9ce7b8a8e9d929c260de383c5cf59f971698b2b5', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
31023
31239
  [mode]: true,
31024
31240
  'tab-selected': selected,
31025
31241
  'tab-disabled': disabled,
@@ -31031,7 +31247,7 @@ class TabButton {
31031
31247
  'ion-activatable': true,
31032
31248
  'ion-selectable': true,
31033
31249
  'ion-focusable': true,
31034
- } }, hAsync("a", Object.assign({ key: '1db09d861b67ff292018fb4b0dc7b85bd4677eb8' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: '4381eafcb27e8c7bb0d86d4f115ceb0caf03b9b4', class: "button-inner" }, hAsync("slot", { key: '1981135f6fbb88376c1bd923c55c70fe8b5c5159' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '0509bc7155d055d1ed710600e9cf4df135881491', type: "unbounded" }))));
31250
+ } }, hAsync("a", Object.assign({ key: '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" }))));
31035
31251
  }
31036
31252
  get el() { return getElement(this); }
31037
31253
  static get style() { return {
@@ -31207,7 +31423,7 @@ class Tabs {
31207
31423
  return Array.from(this.el.querySelectorAll('ion-tab'));
31208
31424
  }
31209
31425
  render() {
31210
- return (hAsync(Host, { key: 'e01ccf6bfaccad094515be50e407399c733fc226', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '38d2d01dbfd8a08f01e6f0e27274b21d75424e37', name: "top" }), hAsync("div", { key: '7e894f0f423e2d43e1c68daff5f9f6c442fad237', class: "tabs-inner" }, hAsync("slot", { key: 'df16be529a0370a26d0adf850530b31607507c23' })), hAsync("slot", { key: '44642e1cb24c3281c43db75fd69a32fe0defe40a', name: "bottom" })));
31426
+ return (hAsync(Host, { key: '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" })));
31211
31427
  }
31212
31428
  get el() { return getElement(this); }
31213
31429
  static get style() { return IonTabsStyle0; }
@@ -31249,9 +31465,9 @@ class Text {
31249
31465
  }
31250
31466
  render() {
31251
31467
  const mode = getIonMode$1(this);
31252
- return (hAsync(Host, { key: 'e134d70c04344b708a2ecf6253722781ad2ca826', class: createColorClasses$1(this.color, {
31468
+ return (hAsync(Host, { key: '54fc089c6b77f7c4a8e0c4441d06507e7a0489c4', class: createColorClasses$1(this.color, {
31253
31469
  [mode]: true,
31254
- }) }, hAsync("slot", { key: 'da79c760f7ebbcd007ce110439f05a62cb22eac8' })));
31470
+ }) }, hAsync("slot", { key: '308480aa067e52eb4bf7dc619fb7e3b89fcdb62b' })));
31255
31471
  }
31256
31472
  static get style() { return IonTextStyle0; }
31257
31473
  static get cmpMeta() { return {
@@ -31633,7 +31849,7 @@ class Textarea {
31633
31849
  * TODO(FW-5592): Remove hasStartEndSlots condition
31634
31850
  */
31635
31851
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
31636
- return (hAsync(Host, { key: 'd6e25c83d8eab8cb1a5b6ab411c9a13847f69f8d', class: createColorClasses$1(this.color, {
31852
+ return (hAsync(Host, { key: '7c5b5a536fcd80e82e952dd91bd13fc0f89082f0', class: createColorClasses$1(this.color, {
31637
31853
  [mode]: true,
31638
31854
  'has-value': hasValue,
31639
31855
  'has-focus': hasFocus,
@@ -31642,7 +31858,7 @@ class Textarea {
31642
31858
  [`textarea-shape-${shape}`]: shape !== undefined,
31643
31859
  [`textarea-label-placement-${labelPlacement}`]: true,
31644
31860
  'textarea-disabled': disabled,
31645
- }) }, hAsync("label", { key: 'f840a5be2b776a4b9c18c6da24e0b7d3d4838fee', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), hAsync("div", { key: '979461fc0d4684926d79d75759c63c6867b7622b', class: "textarea-wrapper-inner" }, hAsync("div", { key: '88f0d5d4bac29597cc2588e5b2ed72fb4fbe153d', class: "start-slot-wrapper" }, hAsync("slot", { key: '21dcca0e59c1260e3d0d1e126c1c590de15c4bad', name: "start" })), hAsync("div", { key: '3c48a4bb3d763a389d3429123e7c110064b9b8d4', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '1550599ad15b3f215c104c014e90711f073ace8b', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), hAsync("div", { key: '4f01ab4d2994a6de6f49eb9ed2e310d00daf21b2', class: "end-slot-wrapper" }, hAsync("slot", { key: '501e288b6807e039972bb4f0b63906114255518a', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'd3008eed34494aa9f8e98a28eac3b465dc4c2bd0', class: "textarea-highlight" })), this.renderBottomContent()));
31861
+ }) }, hAsync("label", { key: '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()));
31646
31862
  }
31647
31863
  get el() { return getElement(this); }
31648
31864
  static get watchers() { return {
@@ -31704,7 +31920,7 @@ class Thumbnail {
31704
31920
  registerInstance(this, hostRef);
31705
31921
  }
31706
31922
  render() {
31707
- return (hAsync(Host, { key: 'cfa9aeb1d4fd624a9732c5230d29dd887e4b7771', class: getIonMode$1(this) }, hAsync("slot", { key: '29bc6e64063cba44e2643228df54394883933918' })));
31923
+ return (hAsync(Host, { key: '0396aae5f545bbf7ebe1cbb05bc25f9181d2afe3', class: getIonMode$1(this) }, hAsync("slot", { key: 'bf01dbadd4042a4b45ce24a8ce408f15e7647a03' })));
31708
31924
  }
31709
31925
  static get style() { return IonThumbnailStyle0; }
31710
31926
  static get cmpMeta() { return {
@@ -32540,9 +32756,9 @@ class Toast {
32540
32756
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
32541
32757
  printIonWarning('This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
32542
32758
  }
32543
- return (hAsync(Host, Object.assign({ key: 'c05655ff06af8d0e48c2a85396b07ad942fa81b4', tabindex: "-1" }, this.htmlAttributes, { style: {
32759
+ return (hAsync(Host, Object.assign({ key: '66ce48d7589420d8cb9756ddaf916a7ec8f949b5', tabindex: "-1" }, this.htmlAttributes, { style: {
32544
32760
  zIndex: `${60000 + this.overlayIndex}`,
32545
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '9393ead4de1bf28529661d6f64049d34e18d725c', class: wrapperClass }, hAsync("div", { key: '3e9dd73c17c337849c3f26e8d0f395b3e5ee20a7', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '5d15b18364301ad55e44e9f601014ac33181590b', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'f6dd164502637a882c5caf18445d8509b85ad6f9', class: "toast-content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
32761
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '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')))));
32546
32762
  }
32547
32763
  get el() { return getElement(this); }
32548
32764
  static get watchers() { return {
@@ -32676,6 +32892,7 @@ class Toggle {
32676
32892
  this.labelPlacement = 'start';
32677
32893
  this.justify = undefined;
32678
32894
  this.alignment = undefined;
32895
+ this.required = false;
32679
32896
  }
32680
32897
  disabledChanged() {
32681
32898
  if (this.gesture) {
@@ -32757,12 +32974,12 @@ class Toggle {
32757
32974
  return this.el.textContent !== '';
32758
32975
  }
32759
32976
  render() {
32760
- const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment } = this;
32977
+ const { activated, color, checked, disabled, el, justify, labelPlacement, inputId, name, alignment, required } = this;
32761
32978
  const mode = getIonMode$1(this);
32762
32979
  const value = this.getValue();
32763
32980
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
32764
32981
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
32765
- return (hAsync(Host, { key: 'f52195ec3bc14c024647cb41319c32a4cd330e19', onClick: this.onClick, class: createColorClasses$1(color, {
32982
+ return (hAsync(Host, { key: '065d333e3972a6df8df047c1af6457eaa394d45a', onClick: this.onClick, class: createColorClasses$1(color, {
32766
32983
  [mode]: true,
32767
32984
  'in-item': hostContext('ion-item', el),
32768
32985
  'toggle-activated': activated,
@@ -32772,10 +32989,10 @@ class Toggle {
32772
32989
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
32773
32990
  [`toggle-label-placement-${labelPlacement}`]: true,
32774
32991
  [`toggle-${rtl}`]: true,
32775
- }) }, hAsync("label", { key: 'f8b3a215ad85b2cee611ad63449b584e1640f27f', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f387b1ea840737a9737917e516834c887be99c09', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), hAsync("div", { key: '936af880db59fe377cd2de9101eb28a1c4fb8914', class: {
32992
+ }) }, hAsync("label", { key: '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: {
32776
32993
  'label-text-wrapper': true,
32777
32994
  'label-text-wrapper-hidden': !this.hasLabel,
32778
- }, part: "label" }, hAsync("slot", { key: '80a6672e2e792c15011a9496dcd75363cdba31c6' })), hAsync("div", { key: '2b2b318b38ab27b194c0dab4cecd77d9d780f2ca', class: "native-wrapper" }, this.renderToggleControl()))));
32995
+ }, part: "label" }, hAsync("slot", { key: '91a2c83740ef75c78f70b60941778580f1722d47' })), hAsync("div", { key: '1a638f883542dd9aac3749cc9bfcdd7ba8ea9046', class: "native-wrapper" }, this.renderToggleControl()))));
32779
32996
  }
32780
32997
  get el() { return getElement(this); }
32781
32998
  static get watchers() { return {
@@ -32798,6 +33015,7 @@ class Toggle {
32798
33015
  "labelPlacement": [1, "label-placement"],
32799
33016
  "justify": [1],
32800
33017
  "alignment": [1],
33018
+ "required": [4],
32801
33019
  "activated": [32]
32802
33020
  },
32803
33021
  "$listeners$": undefined,
@@ -32829,6 +33047,10 @@ var IonToolbarMdStyle0 = toolbarMdCss;
32829
33047
  * @slot secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.
32830
33048
  * @slot primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.
32831
33049
  * @slot end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.
33050
+ *
33051
+ * @part background - The background of the toolbar, covering the entire area behind the toolbar content.
33052
+ * @part container - The container that wraps all toolbar content, including the default slot and named slot content.
33053
+ * @part content - The container for the default slot, wrapping content provided without a named slot.
32832
33054
  */
32833
33055
  class Toolbar {
32834
33056
  constructor(hostRef) {
@@ -32879,10 +33101,10 @@ class Toolbar {
32879
33101
  this.childrenStyles.forEach((value) => {
32880
33102
  Object.assign(childStyles, value);
32881
33103
  });
32882
- return (hAsync(Host, { key: '462538a5ecd01baf3cde116c9f029aeda26c81be', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
33104
+ return (hAsync(Host, { key: 'e4d089de5c5b16f34fda10f3fe00054aa38bbc7f', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
32883
33105
  [mode]: true,
32884
33106
  'in-toolbar': hostContext('ion-toolbar', this.el),
32885
- })) }, hAsync("div", { key: 'c0b4415d3b2472de643a9be7cb3b13b3b628621b', class: "toolbar-background" }), hAsync("div", { key: '0ccb8a2dbeaa28d8f9bed87629c0c097446690c2', class: "toolbar-container" }, hAsync("slot", { key: '3e726dac359e923df21d80301651f16063a3de20', name: "start" }), hAsync("slot", { key: 'cd799330b56a7f8833bc61bb2807aafb21846f71', name: "secondary" }), hAsync("div", { key: '395282e6ac8c53576922dcdb5f08c25d34638c86', class: "toolbar-content" }, hAsync("slot", { key: 'a437c60e4ba5aae65e55169ae82a6f379868ec1d' })), hAsync("slot", { key: '711af9b9d321a7b31ede924c9bdcad767aa9a1ca', name: "primary" }), hAsync("slot", { key: 'ecc02edeaf80a837890bcb08d5096df1e22a0b9a', name: "end" }))));
33107
+ })) }, hAsync("div", { key: '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" }))));
32886
33108
  }
32887
33109
  get el() { return getElement(this); }
32888
33110
  static get style() { return {
@@ -32932,11 +33154,11 @@ class ToolbarTitle {
32932
33154
  render() {
32933
33155
  const mode = getIonMode$1(this);
32934
33156
  const size = this.getSize();
32935
- return (hAsync(Host, { key: '7293d2ecd6262feb0d8d769effbb208230baed89', class: createColorClasses$1(this.color, {
33157
+ return (hAsync(Host, { key: '388b4015f0d64a8d5b04d622d1e1fb61d0922d6c', class: createColorClasses$1(this.color, {
32936
33158
  [mode]: true,
32937
33159
  [`title-${size}`]: true,
32938
33160
  'title-rtl': document.dir === 'rtl',
32939
- }) }, hAsync("div", { key: '086ec3a361ebdf6506846a8704b457cda3a6f897', class: "toolbar-title" }, hAsync("slot", { key: '59add7eb92b82d6832a8f0894f897c51fdf4f214' }))));
33161
+ }) }, hAsync("div", { key: '56f719e88e9322a8862acbfd0b343fd0473bfead', class: "toolbar-title" }, hAsync("slot", { key: 'd35b7c06089c2d498126bbfe859ffc4961de6276' }))));
32940
33162
  }
32941
33163
  get el() { return getElement(this); }
32942
33164
  static get watchers() { return {