@ionic/core 7.4.4-dev.11699472805.157e2476 → 7.4.4-dev.11699475060.1eee2115

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 (404) hide show
  1. package/components/alert.js +0 -8
  2. package/components/checkbox.js +3 -0
  3. package/components/data.js +22 -96
  4. package/components/haptic.js +0 -1
  5. package/components/icon.js +5 -9
  6. package/components/index.js +0 -1
  7. package/components/index4.js +19 -26
  8. package/components/index7.js +1 -1
  9. package/components/ion-datetime-button.js +4 -4
  10. package/components/ion-datetime.js +3 -3
  11. package/components/ion-menu.js +12 -0
  12. package/components/ion-nav.js +0 -1
  13. package/components/ion-router.js +0 -3
  14. package/components/ion-select.js +32 -18
  15. package/components/ion-toast.js +13 -157
  16. package/components/ion-toggle.js +3 -0
  17. package/components/ios.transition.js +0 -1
  18. package/components/overlays.js +0 -1
  19. package/components/radio-group.js +1 -1
  20. package/components/radio.js +4 -1
  21. package/dist/cjs/{app-globals-84b6a756.js → app-globals-fe1ad535.js} +1 -1
  22. package/dist/cjs/{button-active-f2147e85.js → button-active-0932cee9.js} +2 -2
  23. package/dist/cjs/{data-c8d21093.js → data-db832785.js} +22 -96
  24. package/dist/cjs/{haptic-678abc9f.js → haptic-c5f6b4d5.js} +0 -1
  25. package/dist/cjs/{index-14a4821e.js → index-305a23dc.js} +95 -51
  26. package/dist/cjs/{index-33d2809c.js → index-d3568232.js} +3 -3
  27. package/dist/cjs/{index-d8f84c5a.js → index-d8d1fc0b.js} +1 -1
  28. package/dist/cjs/{index-2e612e35.js → index-f94cbab1.js} +20 -27
  29. package/dist/cjs/index.cjs.js +8 -10
  30. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  31. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  32. package/dist/cjs/ion-alert.cjs.entry.js +5 -13
  33. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  34. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  36. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  38. package/dist/cjs/ion-button_2.cjs.entry.js +7 -11
  39. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -2
  41. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  42. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-datetime-button.cjs.entry.js +6 -6
  44. package/dist/cjs/ion-datetime_3.cjs.entry.js +8 -8
  45. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  46. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  49. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  50. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  51. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  52. package/dist/cjs/ion-menu_3.cjs.entry.js +19 -8
  53. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  54. package/dist/cjs/ion-nav_2.cjs.entry.js +3 -4
  55. package/dist/cjs/ion-picker-column-internal.cjs.entry.js +3 -3
  56. package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
  57. package/dist/cjs/ion-popover.cjs.entry.js +4 -4
  58. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  59. package/dist/cjs/ion-radio_2.cjs.entry.js +7 -4
  60. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
  62. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  63. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-route_4.cjs.entry.js +2 -5
  65. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  66. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  67. package/dist/cjs/ion-select_3.cjs.entry.js +36 -22
  68. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  69. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  70. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  71. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  72. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  73. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  74. package/dist/cjs/ion-toast.cjs.entry.js +33 -175
  75. package/dist/cjs/ion-toggle.cjs.entry.js +7 -4
  76. package/dist/cjs/{ionic-global-a71608df.js → ionic-global-fb752503.js} +1 -1
  77. package/dist/cjs/ionic.cjs.js +5 -5
  78. package/dist/cjs/{ios.transition-8ddf91e6.js → ios.transition-7d688757.js} +2 -3
  79. package/dist/cjs/loader.cjs.js +4 -4
  80. package/dist/cjs/{md.transition-44ff8566.js → md.transition-d77d3c2e.js} +2 -2
  81. package/dist/cjs/{overlays-9cab437c.js → overlays-7e1a08fa.js} +1 -2
  82. package/dist/cjs/{status-tap-8c22e017.js → status-tap-778e8054.js} +1 -1
  83. package/dist/collection/collection-manifest.json +1 -1
  84. package/dist/collection/components/alert/alert.js +0 -8
  85. package/dist/collection/components/alert/test/a11y/alert.e2e.js +0 -11
  86. package/dist/collection/components/checkbox/checkbox.js +3 -0
  87. package/dist/collection/components/datetime/datetime.js +6 -12
  88. package/dist/collection/components/datetime/test/hour-cycle/datetime.e2e.js +0 -14
  89. package/dist/collection/components/datetime/utils/data.js +7 -33
  90. package/dist/collection/components/datetime/utils/format.js +10 -27
  91. package/dist/collection/components/datetime/utils/helpers.js +5 -37
  92. package/dist/collection/components/datetime-button/datetime-button.js +4 -4
  93. package/dist/collection/components/menu/menu.js +12 -0
  94. package/dist/collection/components/nav/nav.js +0 -1
  95. package/dist/collection/components/radio/radio.js +4 -1
  96. package/dist/collection/components/radio-group/radio-group.js +1 -1
  97. package/dist/collection/components/router/router.js +0 -2
  98. package/dist/collection/components/router/utils/path.js +0 -1
  99. package/dist/collection/components/select/select.js +32 -18
  100. package/dist/collection/components/select/test/disabled/select.e2e.js +30 -0
  101. package/dist/collection/components/toast/animations/ios.enter.js +3 -2
  102. package/dist/collection/components/toast/animations/ios.leave.js +3 -2
  103. package/dist/collection/components/toast/animations/md.enter.js +3 -2
  104. package/dist/collection/components/toast/toast.js +9 -98
  105. package/dist/collection/components/toggle/toggle.js +3 -0
  106. package/dist/collection/index.js +0 -1
  107. package/dist/collection/utils/menu-controller/index.js +19 -26
  108. package/dist/collection/utils/native/haptic.js +0 -1
  109. package/dist/collection/utils/overlays.js +0 -1
  110. package/dist/collection/utils/transition/ios.transition.js +0 -1
  111. package/dist/docs.json +11 -74
  112. package/dist/esm/{app-globals-df292a32.js → app-globals-ec816a70.js} +1 -1
  113. package/dist/esm/{button-active-3dd473a1.js → button-active-5136c12d.js} +2 -2
  114. package/dist/esm/{data-44d9e816.js → data-009dbf15.js} +22 -96
  115. package/dist/esm/{haptic-1243b917.js → haptic-6447af60.js} +0 -1
  116. package/dist/esm/{index-6e10cd02.js → index-641aeeed.js} +3 -3
  117. package/dist/esm/{index-cb894020.js → index-b49b173c.js} +95 -51
  118. package/dist/esm/{index-c3e624b7.js → index-d78b533e.js} +20 -27
  119. package/dist/esm/{index-504b03f0.js → index-ecfc2c9f.js} +1 -1
  120. package/dist/esm/index.js +8 -9
  121. package/dist/esm/ion-accordion_2.entry.js +3 -3
  122. package/dist/esm/ion-action-sheet.entry.js +5 -5
  123. package/dist/esm/ion-alert.entry.js +5 -13
  124. package/dist/esm/ion-app_8.entry.js +4 -4
  125. package/dist/esm/ion-avatar_3.entry.js +2 -2
  126. package/dist/esm/ion-back-button.entry.js +3 -3
  127. package/dist/esm/ion-backdrop.entry.js +2 -2
  128. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  129. package/dist/esm/ion-button_2.entry.js +7 -11
  130. package/dist/esm/ion-card_5.entry.js +2 -2
  131. package/dist/esm/ion-checkbox.entry.js +5 -2
  132. package/dist/esm/ion-chip.entry.js +2 -2
  133. package/dist/esm/ion-col_3.entry.js +2 -2
  134. package/dist/esm/ion-datetime-button.entry.js +6 -6
  135. package/dist/esm/ion-datetime_3.entry.js +8 -8
  136. package/dist/esm/ion-fab_3.entry.js +3 -3
  137. package/dist/esm/ion-img.entry.js +2 -2
  138. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  139. package/dist/esm/ion-input.entry.js +3 -3
  140. package/dist/esm/ion-item-option_3.entry.js +2 -2
  141. package/dist/esm/ion-item_8.entry.js +3 -3
  142. package/dist/esm/ion-loading.entry.js +3 -3
  143. package/dist/esm/ion-menu_3.entry.js +18 -7
  144. package/dist/esm/ion-modal.entry.js +4 -4
  145. package/dist/esm/ion-nav_2.entry.js +3 -4
  146. package/dist/esm/ion-picker-column-internal.entry.js +3 -3
  147. package/dist/esm/ion-picker-internal.entry.js +1 -1
  148. package/dist/esm/ion-popover.entry.js +4 -4
  149. package/dist/esm/ion-progress-bar.entry.js +2 -2
  150. package/dist/esm/ion-radio_2.entry.js +7 -4
  151. package/dist/esm/ion-range.entry.js +2 -2
  152. package/dist/esm/ion-refresher_2.entry.js +4 -4
  153. package/dist/esm/ion-reorder_2.entry.js +4 -4
  154. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  155. package/dist/esm/ion-route_4.entry.js +2 -5
  156. package/dist/esm/ion-searchbar.entry.js +3 -3
  157. package/dist/esm/ion-segment_2.entry.js +2 -2
  158. package/dist/esm/ion-select_3.entry.js +36 -22
  159. package/dist/esm/ion-spinner.entry.js +2 -2
  160. package/dist/esm/ion-split-pane.entry.js +2 -2
  161. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  162. package/dist/esm/ion-tab_2.entry.js +1 -1
  163. package/dist/esm/ion-text.entry.js +2 -2
  164. package/dist/esm/ion-textarea.entry.js +2 -2
  165. package/dist/esm/ion-toast.entry.js +17 -159
  166. package/dist/esm/ion-toggle.entry.js +7 -4
  167. package/dist/esm/{ionic-global-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
  168. package/dist/esm/ionic.js +6 -6
  169. package/dist/esm/{ios.transition-6707a3a1.js → ios.transition-04c9a97a.js} +2 -3
  170. package/dist/esm/loader.js +5 -5
  171. package/dist/esm/{md.transition-957964fd.js → md.transition-67a8aabd.js} +2 -2
  172. package/dist/esm/{overlays-753933fc.js → overlays-2fa52617.js} +1 -2
  173. package/dist/esm/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
  174. package/dist/esm-es5/app-globals-ec816a70.js +4 -0
  175. package/dist/esm-es5/{button-active-3dd473a1.js → button-active-5136c12d.js} +1 -1
  176. package/dist/esm-es5/data-009dbf15.js +4 -0
  177. package/dist/esm-es5/{index-6e10cd02.js → index-641aeeed.js} +1 -1
  178. package/dist/esm-es5/index-b49b173c.js +5 -0
  179. package/dist/esm-es5/index-d78b533e.js +4 -0
  180. package/dist/esm-es5/index.js +1 -1
  181. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  182. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  183. package/dist/esm-es5/ion-alert.entry.js +1 -1
  184. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  185. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  186. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  187. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  188. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  189. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  190. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  191. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  192. package/dist/esm-es5/ion-chip.entry.js +1 -1
  193. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  194. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  195. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  196. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  197. package/dist/esm-es5/ion-img.entry.js +1 -1
  198. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  199. package/dist/esm-es5/ion-input.entry.js +1 -1
  200. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  201. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  202. package/dist/esm-es5/ion-loading.entry.js +1 -1
  203. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  204. package/dist/esm-es5/ion-modal.entry.js +1 -1
  205. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  206. package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
  207. package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
  208. package/dist/esm-es5/ion-popover.entry.js +1 -1
  209. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  210. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  211. package/dist/esm-es5/ion-range.entry.js +1 -1
  212. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  213. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  214. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  215. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  216. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  217. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  218. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  219. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  220. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  221. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  222. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  223. package/dist/esm-es5/ion-text.entry.js +1 -1
  224. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  225. package/dist/esm-es5/ion-toast.entry.js +1 -1
  226. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  227. package/dist/esm-es5/{ionic-global-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
  228. package/dist/esm-es5/ionic.js +1 -1
  229. package/dist/esm-es5/{ios.transition-6707a3a1.js → ios.transition-04c9a97a.js} +1 -1
  230. package/dist/esm-es5/loader.js +1 -1
  231. package/dist/esm-es5/{md.transition-957964fd.js → md.transition-67a8aabd.js} +1 -1
  232. package/dist/esm-es5/{overlays-753933fc.js → overlays-2fa52617.js} +1 -1
  233. package/dist/esm-es5/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
  234. package/dist/html.html-data.json +1 -11
  235. package/dist/ionic/index.esm.js +1 -1
  236. package/dist/ionic/ionic.esm.js +1 -1
  237. package/dist/ionic/ionic.js +1 -1
  238. package/dist/ionic/{p-9dbc208c.js → p-02a4e81a.js} +1 -1
  239. package/dist/ionic/{p-89e3d112.system.entry.js → p-03c381ec.system.entry.js} +1 -1
  240. package/dist/ionic/{p-44fa0a61.entry.js → p-048f1ebe.entry.js} +1 -1
  241. package/dist/ionic/{p-b7ac706d.entry.js → p-04e7c8fd.entry.js} +1 -1
  242. package/dist/ionic/p-05ae600a.system.js +4 -0
  243. package/dist/ionic/p-06ac429a.js +5 -0
  244. package/dist/ionic/p-0c37546b.system.entry.js +4 -0
  245. package/dist/ionic/{p-5b5311f6.system.entry.js → p-0d74acfb.system.entry.js} +1 -1
  246. package/dist/ionic/{p-7887ac7a.entry.js → p-108f9d49.entry.js} +1 -1
  247. package/dist/ionic/{p-ccdd595c.system.entry.js → p-117cd69f.system.entry.js} +1 -1
  248. package/dist/ionic/{p-e263255c.system.entry.js → p-1289b3b5.system.entry.js} +1 -1
  249. package/dist/ionic/p-13d6e57a.js +4 -0
  250. package/dist/ionic/{p-da024961.entry.js → p-164b0e76.entry.js} +1 -1
  251. package/dist/ionic/{p-8957b1de.system.entry.js → p-170e9de0.system.entry.js} +1 -1
  252. package/dist/ionic/{p-8a289322.js → p-181b7c2a.js} +1 -1
  253. package/dist/ionic/p-1c82e9ff.js +4 -0
  254. package/dist/ionic/{p-48159bfc.system.entry.js → p-1d0aa82f.system.entry.js} +1 -1
  255. package/dist/ionic/{p-9201a4d3.entry.js → p-1ecba429.entry.js} +1 -1
  256. package/dist/ionic/{p-3db27dec.entry.js → p-1f81b5be.entry.js} +1 -1
  257. package/dist/ionic/{p-db8b267a.system.entry.js → p-238f0ac5.system.entry.js} +1 -1
  258. package/dist/ionic/{p-0d3d44e7.entry.js → p-257cf0b7.entry.js} +1 -1
  259. package/dist/ionic/{p-37fc0d22.system.entry.js → p-2784263e.system.entry.js} +1 -1
  260. package/dist/ionic/{p-8f36cde3.system.entry.js → p-29073efe.system.entry.js} +1 -1
  261. package/dist/ionic/p-29e3a9bb.entry.js +4 -0
  262. package/dist/ionic/{p-3634b770.system.entry.js → p-32717950.system.entry.js} +1 -1
  263. package/dist/ionic/p-32d364f0.entry.js +4 -0
  264. package/dist/ionic/{p-c09e1da9.system.entry.js → p-33a8349a.system.entry.js} +1 -1
  265. package/dist/ionic/{p-4555335a.entry.js → p-35818410.entry.js} +1 -1
  266. package/dist/ionic/{p-b4f14d9e.entry.js → p-35eb1d95.entry.js} +1 -1
  267. package/dist/ionic/p-37448ac1.entry.js +4 -0
  268. package/dist/ionic/{p-3e6b0330.system.entry.js → p-38ccfd71.system.entry.js} +1 -1
  269. package/dist/ionic/{p-6f3099b6.system.entry.js → p-3a58e3a4.system.entry.js} +1 -1
  270. package/dist/ionic/{p-c0c794dd.entry.js → p-3c2c6fce.entry.js} +1 -1
  271. package/dist/ionic/{p-9a6f6789.system.entry.js → p-3f3da911.system.entry.js} +1 -1
  272. package/dist/ionic/p-44ef7224.system.js +4 -0
  273. package/dist/ionic/{p-efd574eb.system.entry.js → p-45f5c8ba.system.entry.js} +1 -1
  274. package/dist/ionic/{p-bc7420cc.entry.js → p-4b8db805.entry.js} +1 -1
  275. package/dist/ionic/{p-ec451ef7.system.entry.js → p-4bb26b01.system.entry.js} +1 -1
  276. package/dist/ionic/{p-6a92db9d.system.entry.js → p-4d6ac0fe.system.entry.js} +1 -1
  277. package/dist/ionic/p-4dd96c8d.entry.js +4 -0
  278. package/dist/ionic/{p-0793ebfd.entry.js → p-4e6e43c1.entry.js} +1 -1
  279. package/dist/ionic/{p-e0f66356.system.js → p-51269f3b.system.js} +1 -1
  280. package/dist/ionic/{p-14fd96a2.system.entry.js → p-5403baaa.system.entry.js} +1 -1
  281. package/dist/ionic/{p-abfd1f2e.system.entry.js → p-54f6cd27.system.entry.js} +1 -1
  282. package/dist/ionic/{p-b27772bf.entry.js → p-55d3a9b2.entry.js} +1 -1
  283. package/dist/ionic/{p-10fcb3a3.system.entry.js → p-576e6d0f.system.entry.js} +1 -1
  284. package/dist/ionic/{p-6a3c14d1.entry.js → p-5b32b053.entry.js} +1 -1
  285. package/dist/ionic/{p-b79eb3cd.entry.js → p-5b976d70.entry.js} +1 -1
  286. package/dist/ionic/p-5bc5008c.entry.js +4 -0
  287. package/dist/ionic/p-5c3e72a8.system.js +4 -0
  288. package/dist/ionic/p-5c651aab.system.entry.js +4 -0
  289. package/dist/ionic/{p-ae57449e.system.entry.js → p-5cd791b3.system.entry.js} +1 -1
  290. package/dist/ionic/p-5ece7025.system.js +4 -0
  291. package/dist/ionic/{p-70441a5b.entry.js → p-5efb899f.entry.js} +1 -1
  292. package/dist/ionic/{p-6c7d61b9.system.entry.js → p-6129af0a.system.entry.js} +1 -1
  293. package/dist/ionic/{p-26fbffd4.system.js → p-629aa3fd.system.js} +1 -1
  294. package/dist/ionic/{p-ee8881d0.js → p-63505fbb.js} +1 -1
  295. package/dist/ionic/{p-ef4408d6.entry.js → p-64e20cd9.entry.js} +1 -1
  296. package/dist/ionic/p-65a5761f.js +4 -0
  297. package/dist/ionic/{p-416d7f8d.system.entry.js → p-6ac3e877.system.entry.js} +1 -1
  298. package/dist/ionic/{p-82c72668.system.js → p-6ba7fad7.system.js} +1 -1
  299. package/dist/ionic/{p-92d72ad8.entry.js → p-6ea2e653.entry.js} +1 -1
  300. package/dist/ionic/{p-a9b13f18.system.entry.js → p-6f8a95a3.system.entry.js} +1 -1
  301. package/dist/ionic/{p-a60cff26.system.entry.js → p-6fb80ef3.system.entry.js} +1 -1
  302. package/dist/ionic/{p-b4c0e9ee.entry.js → p-706a0391.entry.js} +1 -1
  303. package/dist/ionic/{p-f48af9da.system.entry.js → p-72aea40e.system.entry.js} +1 -1
  304. package/dist/ionic/p-73ed9a91.js +4 -0
  305. package/dist/ionic/{p-7a590a28.js → p-76378400.js} +1 -1
  306. package/dist/ionic/p-7cfd253c.js +4 -0
  307. package/dist/ionic/{p-3dce88bf.entry.js → p-818b2e75.entry.js} +1 -1
  308. package/dist/ionic/p-8297652e.entry.js +4 -0
  309. package/dist/ionic/{p-b9e2aede.entry.js → p-839276d4.entry.js} +1 -1
  310. package/dist/ionic/{p-b4daca17.system.entry.js → p-8a2801f1.system.entry.js} +1 -1
  311. package/dist/ionic/{p-00cf2d6c.js → p-8e24ebbc.js} +1 -1
  312. package/dist/ionic/{p-037e2738.system.entry.js → p-8ee012cb.system.entry.js} +1 -1
  313. package/dist/ionic/{p-d8eeabae.system.entry.js → p-908720f3.system.entry.js} +1 -1
  314. package/dist/ionic/{p-03f7e3cc.entry.js → p-914ac0fc.entry.js} +1 -1
  315. package/dist/ionic/{p-88a1a4fe.system.entry.js → p-9173418c.system.entry.js} +1 -1
  316. package/dist/ionic/{p-9f9efb31.system.js → p-939e0fa1.system.js} +1 -1
  317. package/dist/ionic/{p-e6d2cca2.system.entry.js → p-95b14c73.system.entry.js} +1 -1
  318. package/dist/ionic/{p-ca655a7c.entry.js → p-96ba8eac.entry.js} +1 -1
  319. package/dist/ionic/{p-dcfea01f.system.entry.js → p-99dfa53f.system.entry.js} +1 -1
  320. package/dist/ionic/{p-9736406a.system.entry.js → p-9b4a77fc.system.entry.js} +1 -1
  321. package/dist/ionic/{p-50d83224.entry.js → p-a04bfada.entry.js} +1 -1
  322. package/dist/ionic/p-a18ec02b.entry.js +4 -0
  323. package/dist/ionic/{p-2acea831.entry.js → p-a7eec917.entry.js} +1 -1
  324. package/dist/ionic/{p-00f709ca.system.entry.js → p-b109a3d7.system.entry.js} +1 -1
  325. package/dist/ionic/{p-fbc7995a.system.entry.js → p-b3690814.system.entry.js} +1 -1
  326. package/dist/ionic/{p-534a1cbc.system.js → p-b3c68723.system.js} +1 -1
  327. package/dist/ionic/{p-4e76e29a.system.entry.js → p-b61a2fa0.system.entry.js} +1 -1
  328. package/dist/ionic/{p-f37d6823.system.entry.js → p-beb864e4.system.entry.js} +1 -1
  329. package/dist/ionic/{p-b25a96b7.system.js → p-c3efbcf5.system.js} +1 -1
  330. package/dist/ionic/{p-a157df46.system.entry.js → p-c48fc95d.system.entry.js} +1 -1
  331. package/dist/ionic/{p-5c24c115.system.js → p-c49672d8.system.js} +1 -1
  332. package/dist/ionic/{p-57743e20.entry.js → p-c4a5de01.entry.js} +1 -1
  333. package/dist/ionic/{p-7520e873.system.entry.js → p-c7428627.system.entry.js} +1 -1
  334. package/dist/ionic/{p-84549737.system.entry.js → p-cf0c93e3.system.entry.js} +1 -1
  335. package/dist/ionic/{p-7b15d413.entry.js → p-d35217be.entry.js} +1 -1
  336. package/dist/ionic/{p-5cafe439.system.entry.js → p-d55c9f92.system.entry.js} +1 -1
  337. package/dist/ionic/{p-06756f31.entry.js → p-d7b8d224.entry.js} +1 -1
  338. package/dist/ionic/{p-9b796813.entry.js → p-d89d0de0.entry.js} +1 -1
  339. package/dist/ionic/{p-fa06c407.entry.js → p-db1a1e00.entry.js} +1 -1
  340. package/dist/ionic/{p-0023e6eb.entry.js → p-deb6ddad.entry.js} +1 -1
  341. package/dist/ionic/{p-90012797.system.js → p-df5fe0be.system.js} +1 -1
  342. package/dist/ionic/{p-d90f0779.system.entry.js → p-e0f52215.system.entry.js} +1 -1
  343. package/dist/ionic/{p-a99e7e72.entry.js → p-e1ac688a.entry.js} +1 -1
  344. package/dist/ionic/{p-d2a278b1.entry.js → p-e2fd0895.entry.js} +1 -1
  345. package/dist/ionic/{p-9e91c83f.system.entry.js → p-eab10949.system.entry.js} +1 -1
  346. package/dist/ionic/{p-ac32f6ce.entry.js → p-eac263dd.entry.js} +1 -1
  347. package/dist/ionic/{p-0459db58.entry.js → p-ec9052a4.entry.js} +1 -1
  348. package/dist/ionic/{p-a7361c85.entry.js → p-f588e951.entry.js} +1 -1
  349. package/dist/ionic/{p-60dee335.entry.js → p-f623aa6d.entry.js} +1 -1
  350. package/dist/ionic/{p-ae8121f5.system.entry.js → p-f960fd84.system.entry.js} +1 -1
  351. package/dist/ionic/p-fbcb157b.system.js +4 -0
  352. package/dist/ionic/{p-4c20879c.entry.js → p-fccfe602.entry.js} +1 -1
  353. package/dist/ionic/{p-3bf7c0dc.entry.js → p-fcf47f80.entry.js} +1 -1
  354. package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +4 -46
  355. package/dist/types/components/datetime/datetime-interface.d.ts +0 -1
  356. package/dist/types/components/datetime/datetime.d.ts +2 -2
  357. package/dist/types/components/datetime/utils/data.d.ts +3 -3
  358. package/dist/types/components/datetime/utils/format.d.ts +3 -3
  359. package/dist/types/components/datetime/utils/helpers.d.ts +1 -15
  360. package/dist/types/components/menu/menu-interface.d.ts +1 -0
  361. package/dist/types/components/toast/animations/ios.enter.d.ts +1 -2
  362. package/dist/types/components/toast/animations/ios.leave.d.ts +2 -2
  363. package/dist/types/components/toast/animations/md.enter.d.ts +1 -2
  364. package/dist/types/components/toast/toast-interface.d.ts +0 -11
  365. package/dist/types/components/toast/toast.d.ts +1 -21
  366. package/dist/types/components.d.ts +8 -16
  367. package/dist/types/index.d.ts +0 -1
  368. package/dist/types/utils/menu-controller/index.d.ts +2 -1
  369. package/hydrate/index.js +158 -359
  370. package/package.json +7 -6
  371. package/dist/collection/components/menu/test/multiple/menu.e2e.js +0 -60
  372. package/dist/collection/components/toast/animations/utils.js +0 -85
  373. package/dist/collection/components/toast/test/position-anchor/toast.e2e.js +0 -45
  374. package/dist/esm-es5/app-globals-df292a32.js +0 -4
  375. package/dist/esm-es5/data-44d9e816.js +0 -4
  376. package/dist/esm-es5/index-c3e624b7.js +0 -4
  377. package/dist/esm-es5/index-cb894020.js +0 -5
  378. package/dist/ionic/p-0779a5c8.system.js +0 -4
  379. package/dist/ionic/p-0d198537.js +0 -4
  380. package/dist/ionic/p-100ea813.system.entry.js +0 -4
  381. package/dist/ionic/p-17240d90.js +0 -4
  382. package/dist/ionic/p-1d9b39f3.js +0 -4
  383. package/dist/ionic/p-2b47b2ce.entry.js +0 -4
  384. package/dist/ionic/p-32b5f10e.entry.js +0 -4
  385. package/dist/ionic/p-469d6a98.entry.js +0 -4
  386. package/dist/ionic/p-50125c8c.js +0 -4
  387. package/dist/ionic/p-520789c2.js +0 -4
  388. package/dist/ionic/p-68b405cc.entry.js +0 -4
  389. package/dist/ionic/p-6cfcb294.system.js +0 -4
  390. package/dist/ionic/p-73eba881.system.js +0 -4
  391. package/dist/ionic/p-903c36fe.js +0 -5
  392. package/dist/ionic/p-a4ce3b06.system.entry.js +0 -4
  393. package/dist/ionic/p-aae05032.entry.js +0 -4
  394. package/dist/ionic/p-b8c3f071.system.js +0 -4
  395. package/dist/ionic/p-d0d59328.entry.js +0 -4
  396. package/dist/ionic/p-d1df86ff.entry.js +0 -4
  397. package/dist/ionic/p-ec25d547.system.js +0 -4
  398. package/dist/types/components/toast/animations/utils.d.ts +0 -18
  399. /package/dist/esm-es5/{haptic-1243b917.js → haptic-6447af60.js} +0 -0
  400. /package/dist/esm-es5/{index-504b03f0.js → index-ecfc2c9f.js} +0 -0
  401. /package/dist/ionic/{p-15bae383.js → p-0a87858b.js} +0 -0
  402. /package/dist/ionic/{p-b4b4bb29.system.js → p-14d7b7e2.system.js} +0 -0
  403. /package/dist/ionic/{p-3f919368.system.js → p-8985b268.system.js} +0 -0
  404. /package/dist/ionic/{p-b923f3d7.js → p-bb6f38ed.js} +0 -0
package/hydrate/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  /*!
9
- Stencil Mock Doc v4.4.0 | MIT Licensed | https://stenciljs.com
9
+ Stencil Mock Doc v4.4.1 | MIT Licensed | https://stenciljs.com
10
10
  */
11
11
  const CONTENT_REF_ID = 'r';
12
12
  const ORG_LOCATION_ID = 'o';
@@ -5594,36 +5594,42 @@ const createElm = (e, t, o, n) => {
5594
5594
  isSvgMode && "svg" === l && (isSvgMode = !1));
5595
5595
  }, updateFallbackSlotVisibility = e => {
5596
5596
  const t = e.childNodes;
5597
- let o, n, s, l, a, r;
5598
- for (n = 0, s = t.length; n < s; n++) if (o = t[n], 1 === o.nodeType) {
5599
- if (o["s-sr"]) for (a = o["s-sn"], o.hidden = !1, l = 0; l < s; l++) if (r = t[l].nodeType,
5600
- t[l]["s-hn"] !== o["s-hn"] || "" !== a) {
5601
- if (1 === r && a === t[l].getAttribute("slot")) {
5602
- o.hidden = !0;
5597
+ for (const e of t) if (1 === e.nodeType) {
5598
+ if (e["s-sr"]) {
5599
+ const o = e["s-sn"];
5600
+ e.hidden = !1;
5601
+ for (const n of t) if (n["s-hn"] !== e["s-hn"] || "" !== o) {
5602
+ if (1 === n.nodeType && o === n.getAttribute("slot")) {
5603
+ e.hidden = !0;
5604
+ break;
5605
+ }
5606
+ } else if (1 === n.nodeType || 3 === n.nodeType && "" !== n.textContent.trim()) {
5607
+ e.hidden = !0;
5603
5608
  break;
5604
5609
  }
5605
- } else if (1 === r || 3 === r && "" !== t[l].textContent.trim()) {
5606
- o.hidden = !0;
5607
- break;
5608
5610
  }
5609
- updateFallbackSlotVisibility(o);
5611
+ updateFallbackSlotVisibility(e);
5610
5612
  }
5611
- }, relocateNodes = [], relocateSlotContent = e => {
5612
- let t, o, n, s, l, a, r = 0;
5613
- const i = e.childNodes, d = i.length;
5614
- for (;r < d; r++) {
5615
- if (t = i[r], t["s-sr"] && (o = t["s-cr"]) && o.parentNode) for (n = o.parentNode.childNodes,
5616
- s = t["s-sn"], a = n.length - 1; a >= 0; a--) o = n[a], o["s-cn"] || o["s-nr"] || o["s-hn"] === t["s-hn"] || (isNodeLocatedInSlot(o, s) ? (l = relocateNodes.find((e => e.$nodeToRelocate$ === o)),
5617
- checkSlotFallbackVisibility = !0, o["s-sn"] = o["s-sn"] || s, l ? l.$slotRefNode$ = t : relocateNodes.push({
5618
- $slotRefNode$: t,
5619
- $nodeToRelocate$: o
5620
- }), o["s-sr"] && relocateNodes.map((e => {
5621
- isNodeLocatedInSlot(e.$nodeToRelocate$, o["s-sn"]) && (l = relocateNodes.find((e => e.$nodeToRelocate$ === o)),
5622
- l && !e.$slotRefNode$ && (e.$slotRefNode$ = l.$slotRefNode$));
5623
- }))) : relocateNodes.some((e => e.$nodeToRelocate$ === o)) || relocateNodes.push({
5624
- $nodeToRelocate$: o
5625
- }));
5626
- 1 === t.nodeType && relocateSlotContent(t);
5613
+ }, relocateNodes = [], markSlotContentForRelocation = e => {
5614
+ let t, o, n;
5615
+ for (const s of e.childNodes) {
5616
+ if (s["s-sr"] && (t = s["s-cr"]) && t.parentNode) {
5617
+ o = t.parentNode.childNodes;
5618
+ const e = s["s-sn"];
5619
+ for (n = o.length - 1; n >= 0; n--) if (t = o[n], !t["s-cn"] && !t["s-nr"] && t["s-hn"] !== s["s-hn"]) if (isNodeLocatedInSlot(t, e)) {
5620
+ let o = relocateNodes.find((e => e.$nodeToRelocate$ === t));
5621
+ checkSlotFallbackVisibility = !0, t["s-sn"] = t["s-sn"] || e, o ? o.$slotRefNode$ = s : relocateNodes.push({
5622
+ $slotRefNode$: s,
5623
+ $nodeToRelocate$: t
5624
+ }), t["s-sr"] && relocateNodes.map((e => {
5625
+ isNodeLocatedInSlot(e.$nodeToRelocate$, t["s-sn"]) && (o = relocateNodes.find((e => e.$nodeToRelocate$ === t)),
5626
+ o && !e.$slotRefNode$ && (e.$slotRefNode$ = o.$slotRefNode$));
5627
+ }));
5628
+ } else relocateNodes.some((e => e.$nodeToRelocate$ === t)) || relocateNodes.push({
5629
+ $nodeToRelocate$: t
5630
+ });
5631
+ }
5632
+ 1 === s.nodeType && markSlotContentForRelocation(s);
5627
5633
  }
5628
5634
  }, isNodeLocatedInSlot = (e, t) => 1 === e.nodeType ? null === e.getAttribute("slot") && "" === t || e.getAttribute("slot") === t : e["s-sn"] === t || "" === t, nullifyVNodeRefs = e => {
5629
5635
  (e.$attrs$ && e.$attrs$.ref && e.$attrs$.ref(null), e.$children$ && e.$children$.map(nullifyVNodeRefs));
@@ -5638,7 +5644,7 @@ const createElm = (e, t, o, n) => {
5638
5644
  BUILD.slotRelocation) {
5639
5645
  if (plt.$flags$ |= 1, checkSlotRelocate) {
5640
5646
  let e, t, o, n, s, l;
5641
- relocateSlotContent(a.$elm$);
5647
+ markSlotContentForRelocation(a.$elm$);
5642
5648
  let r = 0;
5643
5649
  for (;r < relocateNodes.length; r++) e = relocateNodes[r], t = e.$nodeToRelocate$,
5644
5650
  t["s-ol"] || (o = originalLocationDebugNode(t) ,
@@ -5704,9 +5710,9 @@ const callRender = (e, t, o, n) => {
5704
5710
  BUILD.isDev ), 64 & e.$flags$ ? ((safeCall$1(s, "componentDidUpdate"),
5705
5711
  BUILD.isDev ), n()) : (e.$flags$ |= 64, addHydratedFlag(o),
5706
5712
  (safeCall$1(s, "componentDidLoad"),
5707
- BUILD.isDev ), n(), (e.$onReadyResolve$(o), l || appDidLoad())), e.$onInstanceResolve$(o), (e.$onRenderResolve$ && (e.$onRenderResolve$(),
5708
- e.$onRenderResolve$ = void 0), 512 & e.$flags$ && nextTick((() => scheduleUpdate(e, !1))),
5709
- e.$flags$ &= -517);
5713
+ BUILD.isDev ), n(), (e.$onReadyResolve$(o), l || appDidLoad())), e.$onInstanceResolve$(o),
5714
+ (e.$onRenderResolve$ && (e.$onRenderResolve$(), e.$onRenderResolve$ = void 0),
5715
+ 512 & e.$flags$ && nextTick((() => scheduleUpdate(e, !1))), e.$flags$ &= -517);
5710
5716
  }, forceUpdate$1 = e => {
5711
5717
  return !1;
5712
5718
  }, appDidLoad = e => {
@@ -5796,10 +5802,11 @@ const callRender = (e, t, o, n) => {
5796
5802
  }
5797
5803
  }
5798
5804
  return e;
5799
- }, initializeComponent = async (e, t, o, n, s) => {
5805
+ }, initializeComponent = async (e, t, o, n) => {
5806
+ let s;
5800
5807
  if (0 == (32 & t.$flags$)) {
5801
5808
  if (t.$flags$ |= 32, BUILD.lazyLoad ) {
5802
- if ((s = loadModule(o)).then) {
5809
+ if (s = loadModule(o), s.then) {
5803
5810
  const e = (() => {});
5804
5811
  s = await s, e();
5805
5812
  }
@@ -6421,7 +6428,7 @@ const shallowEqualStringMap = (map1, map2) => {
6421
6428
  return true;
6422
6429
  };
6423
6430
 
6424
- /* Ionicons v7.1.2, ES Modules */
6431
+ /* Ionicons v7.1.0, ES Modules */
6425
6432
  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>";
6426
6433
  const arrowDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>";
6427
6434
  const caretBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M368 64L144 256l224 192V64z'/></svg>";
@@ -7149,7 +7156,6 @@ const HapticEngine = {
7149
7156
  * if the browser does not support the Vibrate API.
7150
7157
  */
7151
7158
  if ((capacitor === null || capacitor === void 0 ? void 0 : capacitor.getPlatform()) === 'web') {
7152
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
7153
7159
  return typeof navigator !== 'undefined' && navigator.vibrate !== undefined;
7154
7160
  }
7155
7161
  return true;
@@ -8219,7 +8225,6 @@ const setOverlayId = (el) => {
8219
8225
  return el.id;
8220
8226
  };
8221
8227
  const createOverlay = (tagName, opts) => {
8222
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
8223
8228
  if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {
8224
8229
  return window.customElements.whenDefined(tagName).then(() => {
8225
8230
  const element = document.createElement(tagName);
@@ -10548,14 +10553,6 @@ class Alert {
10548
10553
  }
10549
10554
  onKeydown(ev) {
10550
10555
  const inputTypes = new Set(this.processedInputs.map((i) => i.type));
10551
- /**
10552
- * Based on keyboard navigation requirements, the
10553
- * checkbox should not respond to the enter keydown event.
10554
- */
10555
- if (inputTypes.has('checkbox') && ev.key === 'Enter') {
10556
- ev.preventDefault();
10557
- return;
10558
- }
10559
10556
  // The only inputs we want to navigate between using arrow keys are the radios
10560
10557
  // ignore the keydown event if it is not on a radio button
10561
10558
  if (!inputTypes.has('radio') ||
@@ -12195,6 +12192,9 @@ class Checkbox {
12195
12192
  this.ionBlur.emit();
12196
12193
  };
12197
12194
  this.onClick = (ev) => {
12195
+ if (this.disabled) {
12196
+ return;
12197
+ }
12198
12198
  this.toggleChecked(ev);
12199
12199
  };
12200
12200
  this.color = undefined;
@@ -13082,19 +13082,13 @@ const warnIfValueOutOfBounds = (value, min, max) => {
13082
13082
  const isLeapYear = (year) => {
13083
13083
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
13084
13084
  };
13085
- /**
13086
- * Determines the hour cycle for a user.
13087
- * If the hour cycle is explicitly defined, just use that.
13088
- * Otherwise, we try to derive it from either the specified
13089
- * locale extension tags or from Intl.DateTimeFormat directly.
13090
- */
13091
- const getHourCycle = (locale, hourCycle) => {
13085
+ const is24Hour = (locale, hourCycle) => {
13092
13086
  /**
13093
- * If developer has explicitly enabled 24-hour time
13087
+ * If developer has explicitly enabled h23 time
13094
13088
  * then return early and do not look at the system default.
13095
13089
  */
13096
13090
  if (hourCycle !== undefined) {
13097
- return hourCycle;
13091
+ return hourCycle === 'h23';
13098
13092
  }
13099
13093
  /**
13100
13094
  * If hourCycle was not specified, check the locale
@@ -13105,7 +13099,7 @@ const getHourCycle = (locale, hourCycle) => {
13105
13099
  const formatted = new Intl.DateTimeFormat(locale, { hour: 'numeric' });
13106
13100
  const options = formatted.resolvedOptions();
13107
13101
  if (options.hourCycle !== undefined) {
13108
- return options.hourCycle;
13102
+ return options.hourCycle === 'h23';
13109
13103
  }
13110
13104
  /**
13111
13105
  * If hourCycle is not specified (either through lack
@@ -13118,33 +13112,7 @@ const getHourCycle = (locale, hourCycle) => {
13118
13112
  if (!hour) {
13119
13113
  throw new Error('Hour value not found from DateTimeFormat');
13120
13114
  }
13121
- /**
13122
- * Midnight for h11 starts at 0:00am
13123
- * Midnight for h12 starts at 12:00am
13124
- * Midnight for h23 starts at 00:00
13125
- * Midnight for h24 starts at 24:00
13126
- */
13127
- switch (hour.value) {
13128
- case '0':
13129
- return 'h11';
13130
- case '12':
13131
- return 'h12';
13132
- case '00':
13133
- return 'h23';
13134
- case '24':
13135
- return 'h24';
13136
- default:
13137
- throw new Error(`Invalid hour cycle "${hourCycle}"`);
13138
- }
13139
- };
13140
- /**
13141
- * Determine if the hour cycle uses a 24-hour format.
13142
- * Returns true for h23 and h24. Returns false otherwise.
13143
- * If you don't know the hourCycle, use getHourCycle above
13144
- * and pass the result into this function.
13145
- */
13146
- const is24Hour = (hourCycle) => {
13147
- return hourCycle === 'h23' || hourCycle === 'h24';
13115
+ return hour.value === '00';
13148
13116
  };
13149
13117
  /**
13150
13118
  * Given a date object, returns the number
@@ -13811,7 +13779,7 @@ const getFormattedDayPeriod = (dayPeriod) => {
13811
13779
  }
13812
13780
  return dayPeriod.toUpperCase();
13813
13781
  };
13814
- const getLocalizedTime = (locale, refParts, hourCycle) => {
13782
+ const getLocalizedTime = (locale, refParts, use24Hour) => {
13815
13783
  const timeParts = {
13816
13784
  hour: refParts.hour,
13817
13785
  minute: refParts.minute,
@@ -13833,7 +13801,7 @@ const getLocalizedTime = (locale, refParts, hourCycle) => {
13833
13801
  * We use hourCycle here instead of hour12 due to:
13834
13802
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
13835
13803
  */
13836
- hourCycle,
13804
+ hourCycle: use24Hour ? 'h23' : 'h12',
13837
13805
  /**
13838
13806
  * Setting Z at the end indicates that this
13839
13807
  * date string is in the UTC time zone. This
@@ -13871,33 +13839,17 @@ const addTimePadding = (value) => {
13871
13839
  * 12 hour times it ensures that
13872
13840
  * hour 0 is formatted as '12'.
13873
13841
  */
13874
- const getFormattedHour = (hour, hourCycle) => {
13875
- /**
13876
- * Midnight for h11 starts at 0:00am
13877
- * Midnight for h12 starts at 12:00am
13878
- * Midnight for h23 starts at 00:00
13879
- * Midnight for h24 starts at 24:00
13880
- */
13881
- if (hour === 0) {
13882
- switch (hourCycle) {
13883
- case 'h11':
13884
- return '0';
13885
- case 'h12':
13886
- return '12';
13887
- case 'h23':
13888
- return '00';
13889
- case 'h24':
13890
- return '24';
13891
- default:
13892
- throw new Error(`Invalid hour cycle "${hourCycle}"`);
13893
- }
13842
+ const getFormattedHour = (hour, use24Hour) => {
13843
+ if (use24Hour) {
13844
+ return addTimePadding(hour);
13894
13845
  }
13895
- const use24Hour = is24Hour(hourCycle);
13896
13846
  /**
13897
- * h23 and h24 use 24 hour times.
13847
+ * If using 12 hour
13848
+ * format, make sure hour
13849
+ * 0 is formatted as '12'.
13898
13850
  */
13899
- if (use24Hour) {
13900
- return addTimePadding(hour);
13851
+ if (hour === 0) {
13852
+ return '12';
13901
13853
  }
13902
13854
  return hour.toString();
13903
13855
  };
@@ -14132,14 +14084,8 @@ const minutes = [
14132
14084
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
14133
14085
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
14134
14086
  ];
14135
- // h11 hour system uses 0-11. Midnight starts at 0:00am.
14136
- const hour11 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
14137
- // h12 hour system uses 0-12. Midnight starts at 12:00am.
14138
14087
  const hour12 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
14139
- // h23 hour system uses 0-23. Midnight starts at 0:00.
14140
14088
  const hour23 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];
14141
- // h24 hour system uses 1-24. Midnight starts at 24:00.
14142
- const hour24 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0];
14143
14089
  /**
14144
14090
  * Given a locale and a mode,
14145
14091
  * return an array with formatted days
@@ -14208,33 +14154,14 @@ const getDaysOfMonth = (month, year, firstDayOfWeek) => {
14208
14154
  }
14209
14155
  return days;
14210
14156
  };
14211
- /**
14212
- * Returns an array of pre-defined hour
14213
- * values based on the provided hourCycle.
14214
- */
14215
- const getHourData = (hourCycle) => {
14216
- switch (hourCycle) {
14217
- case 'h11':
14218
- return hour11;
14219
- case 'h12':
14220
- return hour12;
14221
- case 'h23':
14222
- return hour23;
14223
- case 'h24':
14224
- return hour24;
14225
- default:
14226
- throw new Error(`Invalid hour cycle "${hourCycle}"`);
14227
- }
14228
- };
14229
14157
  /**
14230
14158
  * Given a local, reference datetime parts and option
14231
14159
  * max/min bound datetime parts, calculate the acceptable
14232
14160
  * hour and minute values according to the bounds and locale.
14233
14161
  */
14234
- const generateTime = (locale, refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {
14235
- const computedHourCycle = getHourCycle(locale, hourCycle);
14236
- const use24Hour = is24Hour(computedHourCycle);
14237
- let processedHours = getHourData(computedHourCycle);
14162
+ const generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {
14163
+ const use24Hour = hourCycle === 'h23';
14164
+ let processedHours = use24Hour ? hour23 : hour12;
14238
14165
  let processedMinutes = minutes;
14239
14166
  let isAMAllowed = true;
14240
14167
  let isPMAllowed = true;
@@ -14566,12 +14493,11 @@ const getCombinedDateColumnData = (locale, todayParts, minParts, maxParts, dayVa
14566
14493
  };
14567
14494
  };
14568
14495
  const getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {
14569
- const computedHourCycle = getHourCycle(locale, hourCycle);
14570
- const use24Hour = is24Hour(computedHourCycle);
14571
- const { hours, minutes, am, pm } = generateTime(locale, refParts, computedHourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues);
14496
+ const use24Hour = is24Hour(locale, hourCycle);
14497
+ const { hours, minutes, am, pm } = generateTime(refParts, use24Hour ? 'h23' : 'h12', minParts, maxParts, allowedHourValues, allowedMinuteValues);
14572
14498
  const hoursItems = hours.map((hour) => {
14573
14499
  return {
14574
- text: getFormattedHour(hour, computedHourCycle),
14500
+ text: getFormattedHour(hour, use24Hour),
14575
14501
  value: getInternalHourValue(hour, use24Hour, refParts.ampm),
14576
14502
  };
14577
14503
  });
@@ -16134,7 +16060,7 @@ class Datetime {
16134
16060
  }
16135
16061
  renderTimeOverlay() {
16136
16062
  const { hourCycle, isTimePopoverOpen, locale } = this;
16137
- const computedHourCycle = getHourCycle(locale, hourCycle);
16063
+ const use24Hour = is24Hour(locale, hourCycle);
16138
16064
  const activePart = this.getActivePartsWithFallback();
16139
16065
  return [
16140
16066
  hAsync("div", { class: "time-header" }, this.renderTimeLabel()),
@@ -16153,7 +16079,7 @@ class Datetime {
16153
16079
  await popoverRef.onWillDismiss();
16154
16080
  this.isTimePopoverOpen = false;
16155
16081
  }
16156
- } }, getLocalizedTime(locale, activePart, computedHourCycle)),
16082
+ } }, getLocalizedTime(locale, activePart, use24Hour)),
16157
16083
  hAsync("ion-popover", { alignment: "center", translucent: true, overlayIndex: 1, arrow: false, onWillPresent: (ev) => {
16158
16084
  /**
16159
16085
  * Intersection Observers do not consistently fire between Blink and Webkit
@@ -16418,13 +16344,13 @@ class DatetimeButton {
16418
16344
  * warning in the console.
16419
16345
  */
16420
16346
  const firstParsedDatetime = parsedDatetimes[0];
16421
- const computedHourCycle = getHourCycle(locale, hourCycle);
16347
+ const use24Hour = is24Hour(locale, hourCycle);
16422
16348
  this.dateText = this.timeText = undefined;
16423
16349
  switch (datetimePresentation) {
16424
16350
  case 'date-time':
16425
16351
  case 'time-date':
16426
16352
  const dateText = getMonthDayAndYear(locale, firstParsedDatetime);
16427
- const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
16353
+ const timeText = getLocalizedTime(locale, firstParsedDatetime, use24Hour);
16428
16354
  if (preferWheel) {
16429
16355
  this.dateText = `${dateText} ${timeText}`;
16430
16356
  }
@@ -16451,7 +16377,7 @@ class DatetimeButton {
16451
16377
  }
16452
16378
  break;
16453
16379
  case 'time':
16454
- this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle);
16380
+ this.timeText = getLocalizedTime(locale, firstParsedDatetime, use24Hour);
16455
16381
  break;
16456
16382
  case 'month-year':
16457
16383
  this.dateText = getMonthAndYear(locale, firstParsedDatetime);
@@ -17840,7 +17766,7 @@ const isRTL = (hostEl) => {
17840
17766
  return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
17841
17767
  };
17842
17768
 
17843
- const iconCss = "/*!@:host*/.sc-ion-icon-h{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}/*!@:host .ionicon*/.sc-ion-icon-h .ionicon.sc-ion-icon{stroke:currentColor}/*!@.ionicon-fill-none*/.ionicon-fill-none.sc-ion-icon{fill:none}/*!@.ionicon-stroke-width*/.ionicon-stroke-width.sc-ion-icon{stroke-width:32px;stroke-width:var(--ionicon-stroke-width, 32px)}/*!@.icon-inner,\n.ionicon,\nsvg*/.icon-inner.sc-ion-icon,.ionicon.sc-ion-icon,svg.sc-ion-icon{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){/*!@:host(.icon-rtl) .icon-inner*/.icon-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}/*!@:host(.flip-rtl):host-context([dir='rtl']) .icon-inner*/.flip-rtl.sc-ion-icon-h -no-combinator[dir='rtl'].sc-ion-icon-h .icon-inner.sc-ion-icon,[dir='rtl'] .sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@supports selector(:dir(rtl)){/*!@:host(.flip-rtl:dir(rtl)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(rtl) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@:host(.flip-rtl:dir(ltr)) .icon-inner*/.flip-rtl.sc-ion-icon-h:dir(ltr) .icon-inner.sc-ion-icon{-webkit-transform:scaleX(1);transform:scaleX(1)}}/*!@:host(.icon-small)*/.icon-small.sc-ion-icon-h{font-size:18px !important}/*!@:host(.icon-large)*/.icon-large.sc-ion-icon-h{font-size:32px !important}/*!@:host(.ion-color)*/.ion-color.sc-ion-icon-h{color:var(--ion-color-base) !important}/*!@:host(.ion-color-primary)*/.ion-color-primary.sc-ion-icon-h{--ion-color-base:var(--ion-color-primary, #3880ff)}/*!@:host(.ion-color-secondary)*/.ion-color-secondary.sc-ion-icon-h{--ion-color-base:var(--ion-color-secondary, #0cd1e8)}/*!@:host(.ion-color-tertiary)*/.ion-color-tertiary.sc-ion-icon-h{--ion-color-base:var(--ion-color-tertiary, #f4a942)}/*!@:host(.ion-color-success)*/.ion-color-success.sc-ion-icon-h{--ion-color-base:var(--ion-color-success, #10dc60)}/*!@:host(.ion-color-warning)*/.ion-color-warning.sc-ion-icon-h{--ion-color-base:var(--ion-color-warning, #ffce00)}/*!@:host(.ion-color-danger)*/.ion-color-danger.sc-ion-icon-h{--ion-color-base:var(--ion-color-danger, #f14141)}/*!@:host(.ion-color-light)*/.ion-color-light.sc-ion-icon-h{--ion-color-base:var(--ion-color-light, #f4f5f8)}/*!@:host(.ion-color-medium)*/.ion-color-medium.sc-ion-icon-h{--ion-color-base:var(--ion-color-medium, #989aa2)}/*!@:host(.ion-color-dark)*/.ion-color-dark.sc-ion-icon-h{--ion-color-base:var(--ion-color-dark, #222428)}";
17769
+ const iconCss = "/*!@:host*/.sc-ion-icon-h{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}/*!@:host .ionicon*/.sc-ion-icon-h .ionicon.sc-ion-icon{stroke:currentColor}/*!@.ionicon-fill-none*/.ionicon-fill-none.sc-ion-icon{fill:none}/*!@.ionicon-stroke-width*/.ionicon-stroke-width.sc-ion-icon{stroke-width:32px;stroke-width:var(--ionicon-stroke-width, 32px)}/*!@.icon-inner,\n.ionicon,\nsvg*/.icon-inner.sc-ion-icon,.ionicon.sc-ion-icon,svg.sc-ion-icon{display:block;height:100%;width:100%}/*!@:host(.flip-rtl) .icon-inner*/.flip-rtl.sc-ion-icon-h .icon-inner.sc-ion-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}/*!@:host(.icon-small)*/.icon-small.sc-ion-icon-h{font-size:18px !important}/*!@:host(.icon-large)*/.icon-large.sc-ion-icon-h{font-size:32px !important}/*!@:host(.ion-color)*/.ion-color.sc-ion-icon-h{color:var(--ion-color-base) !important}/*!@:host(.ion-color-primary)*/.ion-color-primary.sc-ion-icon-h{--ion-color-base:var(--ion-color-primary, #3880ff)}/*!@:host(.ion-color-secondary)*/.ion-color-secondary.sc-ion-icon-h{--ion-color-base:var(--ion-color-secondary, #0cd1e8)}/*!@:host(.ion-color-tertiary)*/.ion-color-tertiary.sc-ion-icon-h{--ion-color-base:var(--ion-color-tertiary, #f4a942)}/*!@:host(.ion-color-success)*/.ion-color-success.sc-ion-icon-h{--ion-color-base:var(--ion-color-success, #10dc60)}/*!@:host(.ion-color-warning)*/.ion-color-warning.sc-ion-icon-h{--ion-color-base:var(--ion-color-warning, #ffce00)}/*!@:host(.ion-color-danger)*/.ion-color-danger.sc-ion-icon-h{--ion-color-base:var(--ion-color-danger, #f14141)}/*!@:host(.ion-color-light)*/.ion-color-light.sc-ion-icon-h{--ion-color-base:var(--ion-color-light, #f4f5f8)}/*!@:host(.ion-color-medium)*/.ion-color-medium.sc-ion-icon-h{--ion-color-base:var(--ion-color-medium, #989aa2)}/*!@:host(.ion-color-dark)*/.ion-color-dark.sc-ion-icon-h{--ion-color-base:var(--ion-color-dark, #222428)}";
17844
17770
 
17845
17771
  class Icon {
17846
17772
  constructor(hostRef) {
@@ -17894,15 +17820,11 @@ class Icon {
17894
17820
  this.iconName = getName(this.name, this.icon, this.mode, this.ios, this.md);
17895
17821
  }
17896
17822
  render() {
17897
- const { flipRtl, iconName, inheritedAttributes, el } = this;
17823
+ const { iconName, el, inheritedAttributes } = this;
17898
17824
  const mode = this.mode || 'md';
17899
- // we have designated that arrows & chevrons should automatically flip (unless flip-rtl is set to false) because "back" is left in ltr and right in rtl, and "forward" is the opposite
17900
- const shouldAutoFlip = iconName
17901
- ? (iconName.includes('arrow') || iconName.includes('chevron')) && flipRtl !== false
17902
- : false;
17903
- // if shouldBeFlippable is true, the icon should change direction when `dir` changes
17904
- const shouldBeFlippable = flipRtl || shouldAutoFlip;
17905
- return (hAsync(Host, Object.assign({ role: "img", class: Object.assign(Object.assign({ [mode]: true }, createColorClasses(this.color)), { [`icon-${this.size}`]: !!this.size, 'flip-rtl': shouldBeFlippable, 'icon-rtl': shouldBeFlippable && isRTL(el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
17825
+ const flipRtl = this.flipRtl ||
17826
+ (iconName && (iconName.indexOf('arrow') > -1 || iconName.indexOf('chevron') > -1) && this.flipRtl !== false);
17827
+ return (hAsync(Host, Object.assign({ role: "img", class: Object.assign(Object.assign({ [mode]: true }, createColorClasses(this.color)), { [`icon-${this.size}`]: !!this.size, 'flip-rtl': !!flipRtl && isRTL(el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
17906
17828
  }
17907
17829
  static get assetsDirs() { return ["svg"]; }
17908
17830
  get el() { return getElement(this); }
@@ -20505,21 +20427,21 @@ const createMenuController = () => {
20505
20427
  const menuAnimations = new Map();
20506
20428
  const menus = [];
20507
20429
  const open = async (menu) => {
20508
- const menuEl = await get(menu, true);
20430
+ const menuEl = await get(menu);
20509
20431
  if (menuEl) {
20510
20432
  return menuEl.open();
20511
20433
  }
20512
20434
  return false;
20513
20435
  };
20514
20436
  const close = async (menu) => {
20515
- const menuEl = await (menu !== undefined ? get(menu, true) : getOpen());
20437
+ const menuEl = await (menu !== undefined ? get(menu) : getOpen());
20516
20438
  if (menuEl !== undefined) {
20517
20439
  return menuEl.close();
20518
20440
  }
20519
20441
  return false;
20520
20442
  };
20521
20443
  const toggle = async (menu) => {
20522
- const menuEl = await get(menu, true);
20444
+ const menuEl = await get(menu);
20523
20445
  if (menuEl) {
20524
20446
  return menuEl.toggle();
20525
20447
  }
@@ -20557,35 +20479,18 @@ const createMenuController = () => {
20557
20479
  }
20558
20480
  return false;
20559
20481
  };
20560
- /**
20561
- * Finds and returns the menu specified by "menu" if registered.
20562
- * @param menu - The side or ID of the desired menu
20563
- * @param logOnMultipleSideMenus - If true, this function will log a warning
20564
- * if "menu" is a side but multiple menus on the same side were found. Since this function
20565
- * is used in multiple places, we default this log to false so that the calling
20566
- * functions can choose whether or not it is appropriate to log this warning.
20567
- */
20568
- const get = async (menu, logOnMultipleSideMenus = false) => {
20482
+ const get = async (menu) => {
20569
20483
  await waitUntilReady();
20570
20484
  if (menu === 'start' || menu === 'end') {
20571
20485
  // there could be more than one menu on the same side
20572
20486
  // so first try to get the enabled one
20573
- const menuRefs = menus.filter((m) => m.side === menu && !m.disabled);
20574
- if (menuRefs.length >= 1) {
20575
- if (menuRefs.length > 1 && logOnMultipleSideMenus) {
20576
- printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${menuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, menuRefs.map((m) => m.el));
20577
- }
20578
- return menuRefs[0].el;
20487
+ const menuRef = find((m) => m.side === menu && !m.disabled);
20488
+ if (menuRef) {
20489
+ return menuRef;
20579
20490
  }
20580
20491
  // didn't find a menu side that is enabled
20581
20492
  // so try to get the first menu side found
20582
- const sideMenuRefs = menus.filter((m) => m.side === menu);
20583
- if (sideMenuRefs.length >= 1) {
20584
- if (sideMenuRefs.length > 1 && logOnMultipleSideMenus) {
20585
- printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${sideMenuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, sideMenuRefs.map((m) => m.el));
20586
- }
20587
- return sideMenuRefs[0].el;
20588
- }
20493
+ return find((m) => m.side === menu);
20589
20494
  }
20590
20495
  else if (menu != null) {
20591
20496
  // the menuId was not left or right
@@ -20627,6 +20532,9 @@ const createMenuController = () => {
20627
20532
  };
20628
20533
  const _register = (menu) => {
20629
20534
  if (menus.indexOf(menu) < 0) {
20535
+ if (!menu.disabled) {
20536
+ _setActiveMenu(menu);
20537
+ }
20630
20538
  menus.push(menu);
20631
20539
  }
20632
20540
  };
@@ -20636,6 +20544,13 @@ const createMenuController = () => {
20636
20544
  menus.splice(index, 1);
20637
20545
  }
20638
20546
  };
20547
+ const _setActiveMenu = (menu) => {
20548
+ // if this menu should be enabled
20549
+ // then find all the other menus on this same side
20550
+ // and automatically disable other same side menus
20551
+ const side = menu.side;
20552
+ menus.filter((m) => m.side === side && m !== menu).forEach((m) => (m.disabled = true));
20553
+ };
20639
20554
  const _setOpen = async (menu, shouldOpen, animated) => {
20640
20555
  if (isAnimatingSync()) {
20641
20556
  return false;
@@ -20707,6 +20622,7 @@ const createMenuController = () => {
20707
20622
  _register,
20708
20623
  _unregister,
20709
20624
  _setOpen,
20625
+ _setActiveMenu,
20710
20626
  };
20711
20627
  };
20712
20628
  const menuController = /*@__PURE__*/ createMenuController();
@@ -21262,6 +21178,17 @@ class Menu {
21262
21178
  */
21263
21179
  this.afterAnimation(false);
21264
21180
  }
21181
+ if (doc === null || doc === void 0 ? void 0 : doc.contains(this.el)) {
21182
+ /**
21183
+ * Only set the active menu if the menu element is
21184
+ * present in the DOM. Otherwise if it was destructively
21185
+ * re-hydrated (through Angular Universal), then ignore
21186
+ * setting the removed node as the active menu.
21187
+ */
21188
+ if (!this.disabled) {
21189
+ menuController._setActiveMenu(this);
21190
+ }
21191
+ }
21265
21192
  }
21266
21193
  render() {
21267
21194
  const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;
@@ -24065,7 +23992,6 @@ class Nav {
24065
23992
  : undefined;
24066
23993
  const mode = getIonMode$1(this);
24067
23994
  const enteringEl = enteringView.element;
24068
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
24069
23995
  const leavingEl = leavingView && leavingView.element;
24070
23996
  const animationOpts = Object.assign(Object.assign({ mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl,
24071
23997
  leavingEl }, opts), { animationBuilder: opts.animationBuilder || this.animation || config.get('navAnimation') });
@@ -27276,7 +27202,10 @@ class Radio {
27276
27202
  }
27277
27203
  };
27278
27204
  this.onClick = () => {
27279
- const { radioGroup, checked } = this;
27205
+ const { radioGroup, checked, disabled } = this;
27206
+ if (disabled) {
27207
+ return;
27208
+ }
27280
27209
  /**
27281
27210
  * The legacy control uses a native input inside
27282
27211
  * of the radio host, so we can set this.checked
@@ -27497,7 +27426,7 @@ class RadioGroup {
27497
27426
  * using the `name` attribute.
27498
27427
  */
27499
27428
  const selectedRadio = ev.target && ev.target.closest('ion-radio');
27500
- if (selectedRadio) {
27429
+ if (selectedRadio && selectedRadio.disabled === false) {
27501
27430
  const currentValue = this.value;
27502
27431
  const newValue = selectedRadio.value;
27503
27432
  if (newValue !== currentValue) {
@@ -29824,7 +29753,6 @@ const chainToSegments = (chain) => {
29824
29753
  for (const route of chain) {
29825
29754
  for (const segment of route.segments) {
29826
29755
  if (segment[0] === ':') {
29827
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
29828
29756
  const param = route.params && route.params[segment.slice(1)];
29829
29757
  if (!param) {
29830
29758
  return null;
@@ -30520,14 +30448,12 @@ class Router {
30520
30448
  }
30521
30449
  const routes = readRoutes(this.el);
30522
30450
  const fromChain = findChainForSegments(from, routes);
30523
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
30524
30451
  const beforeLeaveHook = fromChain && fromChain[fromChain.length - 1].beforeLeave;
30525
30452
  const canLeave = beforeLeaveHook ? await beforeLeaveHook() : true;
30526
30453
  if (canLeave === false || typeof canLeave === 'object') {
30527
30454
  return canLeave;
30528
30455
  }
30529
30456
  const toChain = findChainForSegments(to, routes);
30530
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
30531
30457
  const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
30532
30458
  return beforeEnterHook ? beforeEnterHook() : true;
30533
30459
  }
@@ -31924,25 +31850,39 @@ class Select {
31924
31850
  await overlay.present();
31925
31851
  // focus selected option for popovers
31926
31852
  if (this.interface === 'popover') {
31927
- let indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
31928
- indexOfSelected = indexOfSelected > -1 ? indexOfSelected : 0; // default to first option if nothing selected
31929
- const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
31930
- if (selectedItem) {
31931
- focusElement(selectedItem);
31853
+ const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
31854
+ if (indexOfSelected > -1) {
31855
+ const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
31856
+ if (selectedItem) {
31857
+ focusElement(selectedItem);
31858
+ /**
31859
+ * Browsers such as Firefox do not
31860
+ * correctly delegate focus when manually
31861
+ * focusing an element with delegatesFocus.
31862
+ * We work around this by manually focusing
31863
+ * the interactive element.
31864
+ * ion-radio and ion-checkbox are the only
31865
+ * elements that ion-select-popover uses, so
31866
+ * we only need to worry about those two components
31867
+ * when focusing.
31868
+ */
31869
+ const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
31870
+ if (interactiveEl) {
31871
+ interactiveEl.focus();
31872
+ }
31873
+ }
31874
+ }
31875
+ else {
31932
31876
  /**
31933
- * Browsers such as Firefox do not
31934
- * correctly delegate focus when manually
31935
- * focusing an element with delegatesFocus.
31936
- * We work around this by manually focusing
31937
- * the interactive element.
31938
- * ion-radio and ion-checkbox are the only
31939
- * elements that ion-select-popover uses, so
31940
- * we only need to worry about those two components
31941
- * when focusing.
31877
+ * If no value is set then focus the first enabled option.
31942
31878
  */
31943
- const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
31944
- if (interactiveEl) {
31945
- interactiveEl.focus();
31879
+ const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
31880
+ if (firstEnabledOption) {
31881
+ focusElement(firstEnabledOption.closest('ion-item'));
31882
+ /**
31883
+ * Focus the option for the same reason as we do above.
31884
+ */
31885
+ firstEnabledOption.focus();
31946
31886
  }
31947
31887
  }
31948
31888
  }
@@ -32413,7 +32353,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
32413
32353
  }
32414
32354
  renderListbox() {
32415
32355
  const { disabled, inputId, isExpanded } = this;
32416
- 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) }));
32356
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "listbox", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
32417
32357
  }
32418
32358
  render() {
32419
32359
  const { legacyFormController } = this;
@@ -33755,12 +33695,13 @@ class Thumbnail {
33755
33695
  /**
33756
33696
  * iOS Toast Enter Animation
33757
33697
  */
33758
- const iosEnterAnimation = (baseEl, opts) => {
33698
+ const iosEnterAnimation = (baseEl, position) => {
33759
33699
  const baseAnimation = createAnimation();
33760
33700
  const wrapperAnimation = createAnimation();
33761
- const { position, top, bottom } = opts;
33762
33701
  const root = getElementRoot(baseEl);
33763
33702
  const wrapperEl = root.querySelector('.toast-wrapper');
33703
+ const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
33704
+ const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
33764
33705
  wrapperAnimation.addElement(wrapperEl);
33765
33706
  switch (position) {
33766
33707
  case 'top':
@@ -33781,12 +33722,13 @@ const iosEnterAnimation = (baseEl, opts) => {
33781
33722
  /**
33782
33723
  * iOS Toast Leave Animation
33783
33724
  */
33784
- const iosLeaveAnimation = (baseEl, opts) => {
33725
+ const iosLeaveAnimation = (baseEl, position) => {
33785
33726
  const baseAnimation = createAnimation();
33786
33727
  const wrapperAnimation = createAnimation();
33787
- const { position, top, bottom } = opts;
33788
33728
  const root = getElementRoot(baseEl);
33789
33729
  const wrapperEl = root.querySelector('.toast-wrapper');
33730
+ const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
33731
+ const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
33790
33732
  wrapperAnimation.addElement(wrapperEl);
33791
33733
  switch (position) {
33792
33734
  case 'top':
@@ -33805,12 +33747,13 @@ const iosLeaveAnimation = (baseEl, opts) => {
33805
33747
  /**
33806
33748
  * MD Toast Enter Animation
33807
33749
  */
33808
- const mdEnterAnimation = (baseEl, opts) => {
33750
+ const mdEnterAnimation = (baseEl, position) => {
33809
33751
  const baseAnimation = createAnimation();
33810
33752
  const wrapperAnimation = createAnimation();
33811
- const { position, top, bottom } = opts;
33812
33753
  const root = getElementRoot(baseEl);
33813
33754
  const wrapperEl = root.querySelector('.toast-wrapper');
33755
+ const bottom = `calc(8px + var(--ion-safe-area-bottom, 0px))`;
33756
+ const top = `calc(8px + var(--ion-safe-area-top, 0px))`;
33814
33757
  wrapperAnimation.addElement(wrapperEl);
33815
33758
  switch (position) {
33816
33759
  case 'top':
@@ -33842,87 +33785,6 @@ const mdLeaveAnimation = (baseEl) => {
33842
33785
  return baseAnimation.easing('cubic-bezier(.36,.66,.04,1)').duration(300).addAnimation(wrapperAnimation);
33843
33786
  };
33844
33787
 
33845
- /**
33846
- * Calculate the CSS top and bottom position of the toast, to be used
33847
- * as starting points for the animation keyframes.
33848
- *
33849
- * Note that MD animates bottom-positioned toasts using style.bottom,
33850
- * which calculates from the bottom edge of the screen, while iOS uses
33851
- * translateY, which calculates from the top edge of the screen. This
33852
- * is why the bottom calculates differ slightly between modes.
33853
- *
33854
- * @param position The value of the toast's position prop.
33855
- * @param positionAnchor The element the toast should be anchored to,
33856
- * if applicable.
33857
- * @param mode The toast component's mode (md, ios, etc).
33858
- * @param toast A reference to the toast element itself.
33859
- */
33860
- function getAnimationPosition(position, positionAnchor, mode, toast) {
33861
- /**
33862
- * Start with a predefined offset from the edge the toast will be
33863
- * positioned relative to, whether on the screen or anchor element.
33864
- */
33865
- let offset;
33866
- if (mode === 'md') {
33867
- offset = 8;
33868
- }
33869
- else {
33870
- offset = position === 'top' ? 10 : -10;
33871
- }
33872
- /**
33873
- * If positionAnchor is defined, add in the distance from the target
33874
- * screen edge to the target anchor edge. For position="top", the
33875
- * bottom anchor edge is targeted. For position="bottom", the top
33876
- * anchor edge is targeted.
33877
- */
33878
- if (positionAnchor && win$1) {
33879
- warnIfAnchorIsHidden(positionAnchor, toast);
33880
- const box = positionAnchor.getBoundingClientRect();
33881
- if (position === 'top') {
33882
- offset += box.bottom;
33883
- }
33884
- else if (position === 'bottom') {
33885
- /**
33886
- * Just box.top is the distance from the top edge of the screen
33887
- * to the top edge of the anchor. We want to calculate from the
33888
- * bottom edge of the screen instead.
33889
- */
33890
- if (mode === 'md') {
33891
- offset += win$1.innerHeight - box.top;
33892
- }
33893
- else {
33894
- offset -= win$1.innerHeight - box.top;
33895
- }
33896
- }
33897
- /**
33898
- * We don't include safe area here because that should already be
33899
- * accounted for when checking the position of the anchor.
33900
- */
33901
- return {
33902
- top: `${offset}px`,
33903
- bottom: `${offset}px`,
33904
- };
33905
- }
33906
- else {
33907
- return {
33908
- top: `calc(${offset}px + var(--ion-safe-area-top, 0px))`,
33909
- bottom: mode === 'md'
33910
- ? `calc(${offset}px + var(--ion-safe-area-bottom, 0px))`
33911
- : `calc(${offset}px - var(--ion-safe-area-bottom, 0px))`,
33912
- };
33913
- }
33914
- }
33915
- /**
33916
- * If the anchor element is hidden, getBoundingClientRect()
33917
- * will return all 0s for it, which can cause unexpected
33918
- * results in the position calculation when animating.
33919
- */
33920
- function warnIfAnchorIsHidden(positionAnchor, toast) {
33921
- if (positionAnchor.offsetParent === null) {
33922
- printIonWarning('The positionAnchor element for ion-toast was found in the DOM, but appears to be hidden. This may lead to unexpected positioning of the toast.', toast);
33923
- }
33924
- }
33925
-
33926
33788
  const toastIosCss = "/*!@:host*/.sc-ion-toast-ios-h{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){/*!@:host*/.sc-ion-toast-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host*/.sc-ion-toast-ios-h{left:0}/*!@:host-context([dir=rtl])*/[dir=rtl].sc-ion-toast-ios-h,[dir=rtl] .sc-ion-toast-ios-h{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-toast-ios selector(.sc-ion-toast-ios:dir(rtl)){.sc-ion-toast-ios-h:dir(rtl){left:unset;right:unset;right:0}}}/*!@:host(.overlay-hidden)*/.overlay-hidden.sc-ion-toast-ios-h{display:none}/*!@:host(.ion-color)*/.ion-color.sc-ion-toast-ios-h{--button-color:inherit;color:var(--ion-color-contrast)}/*!@:host(.ion-color) .toast-button-cancel*/.ion-color.sc-ion-toast-ios-h .toast-button-cancel.sc-ion-toast-ios{color:inherit}/*!@:host(.ion-color) .toast-wrapper*/.ion-color.sc-ion-toast-ios-h .toast-wrapper.sc-ion-toast-ios{background:var(--ion-color-base)}/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-ios{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)}@supports (inset-inline-start: 0){/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-ios{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-ios{left:var(--start);right:var(--end)}/*!@:host-context([dir=rtl]) .toast-wrapper*/[dir=rtl].sc-ion-toast-ios-h .toast-wrapper.sc-ion-toast-ios,[dir=rtl] .sc-ion-toast-ios-h .toast-wrapper.sc-ion-toast-ios{left:unset;right:unset;left:var(--end);right:var(--start)}/*!@[dir=rtl] .toast-wrapper*/[dir=rtl].sc-ion-toast-ios .toast-wrapper.sc-ion-toast-ios{left:unset;right:unset;left:var(--end);right:var(--start)}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-toast-ios selector(.sc-ion-toast-ios:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}/*!@.toast-container*/.toast-container.sc-ion-toast-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}/*!@.toast-layout-stacked .toast-container*/.toast-layout-stacked.sc-ion-toast-ios .toast-container.sc-ion-toast-ios{-ms-flex-wrap:wrap;flex-wrap:wrap}/*!@.toast-layout-baseline .toast-content*/.toast-layout-baseline.sc-ion-toast-ios .toast-content.sc-ion-toast-ios{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}/*!@.toast-icon*/.toast-icon.sc-ion-toast-ios{-webkit-margin-start:16px;margin-inline-start:16px}/*!@.toast-message*/.toast-message.sc-ion-toast-ios{-ms-flex:1;flex:1;white-space:var(--white-space)}/*!@.toast-button-group*/.toast-button-group.sc-ion-toast-ios{display:-ms-flexbox;display:flex}/*!@.toast-layout-stacked .toast-button-group*/.toast-layout-stacked.sc-ion-toast-ios .toast-button-group.sc-ion-toast-ios{-ms-flex-pack:end;justify-content:end;width:100%}/*!@.toast-button*/.toast-button.sc-ion-toast-ios{border:0;outline:none;color:var(--button-color);z-index:0}/*!@.toast-icon,\n.toast-button-icon*/.toast-icon.sc-ion-toast-ios,.toast-button-icon.sc-ion-toast-ios{font-size:1.4em}/*!@.toast-button-inner*/.toast-button-inner.sc-ion-toast-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){/*!@.toast-button:hover*/.toast-button.sc-ion-toast-ios:hover{cursor:pointer}}/*!@:host*/.sc-ion-toast-ios-h{--background:var(--ion-color-step-50, #f2f2f2);--border-radius:14px;--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-850, #262626);--max-width:700px;--start:10px;--end:10px;font-size:14px}/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;z-index:10}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){/*!@:host(.toast-translucent) .toast-wrapper*/.toast-translucent.sc-ion-toast-ios-h .toast-wrapper.sc-ion-toast-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}/*!@:host(.ion-color.toast-translucent) .toast-wrapper*/.ion-color.toast-translucent.sc-ion-toast-ios-h .toast-wrapper.sc-ion-toast-ios{background:rgba(var(--ion-color-base-rgb), 0.8)}}/*!@.toast-wrapper.toast-top*/.toast-wrapper.toast-top.sc-ion-toast-ios{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);top:0}/*!@.toast-wrapper.toast-middle*/.toast-wrapper.toast-middle.sc-ion-toast-ios{opacity:0.01}/*!@.toast-wrapper.toast-bottom*/.toast-wrapper.toast-bottom.sc-ion-toast-ios{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);bottom:0}/*!@.toast-content*/.toast-content.sc-ion-toast-ios{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:15px;padding-bottom:15px}/*!@.toast-header*/.toast-header.sc-ion-toast-ios{margin-bottom:2px;font-weight:500}/*!@.toast-button*/.toast-button.sc-ion-toast-ios{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;height:44px;-webkit-transition:background-color, opacity 100ms linear;transition:background-color, opacity 100ms linear;border:0;background-color:transparent;font-family:var(--ion-font-family);font-size:17px;font-weight:500;overflow:hidden}/*!@.toast-button.ion-activated*/.toast-button.ion-activated.sc-ion-toast-ios{opacity:0.4}@media (any-hover: hover){/*!@.toast-button:hover*/.toast-button.sc-ion-toast-ios:hover{opacity:0.6}}";
33927
33789
 
33928
33790
  const toastMdCss = "/*!@:host*/.sc-ion-toast-md-h{--border-width:0;--border-style:none;--border-color:initial;--box-shadow:none;--min-width:auto;--width:auto;--min-height:auto;--height:auto;--max-height:auto;--white-space:normal;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);contain:strict;z-index:1001;pointer-events:none}@supports (inset-inline-start: 0){/*!@:host*/.sc-ion-toast-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host*/.sc-ion-toast-md-h{left:0}/*!@:host-context([dir=rtl])*/[dir=rtl].sc-ion-toast-md-h,[dir=rtl] .sc-ion-toast-md-h{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-toast-md selector(.sc-ion-toast-md:dir(rtl)){.sc-ion-toast-md-h:dir(rtl){left:unset;right:unset;right:0}}}/*!@:host(.overlay-hidden)*/.overlay-hidden.sc-ion-toast-md-h{display:none}/*!@:host(.ion-color)*/.ion-color.sc-ion-toast-md-h{--button-color:inherit;color:var(--ion-color-contrast)}/*!@:host(.ion-color) .toast-button-cancel*/.ion-color.sc-ion-toast-md-h .toast-button-cancel.sc-ion-toast-md{color:inherit}/*!@:host(.ion-color) .toast-wrapper*/.ion-color.sc-ion-toast-md-h .toast-wrapper.sc-ion-toast-md{background:var(--ion-color-base)}/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-md{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)}@supports (inset-inline-start: 0){/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-md{inset-inline-start:var(--start);inset-inline-end:var(--end)}}@supports not (inset-inline-start: 0){/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-md{left:var(--start);right:var(--end)}/*!@:host-context([dir=rtl]) .toast-wrapper*/[dir=rtl].sc-ion-toast-md-h .toast-wrapper.sc-ion-toast-md,[dir=rtl] .sc-ion-toast-md-h .toast-wrapper.sc-ion-toast-md{left:unset;right:unset;left:var(--end);right:var(--start)}/*!@[dir=rtl] .toast-wrapper*/[dir=rtl].sc-ion-toast-md .toast-wrapper.sc-ion-toast-md{left:unset;right:unset;left:var(--end);right:var(--start)}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-toast-md selector(.sc-ion-toast-md:dir(rtl)){.toast-wrapper:dir(rtl){left:unset;right:unset;left:var(--end);right:var(--start)}}}/*!@.toast-container*/.toast-container.sc-ion-toast-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;pointer-events:auto;height:inherit;min-height:inherit;max-height:inherit;contain:content}/*!@.toast-layout-stacked .toast-container*/.toast-layout-stacked.sc-ion-toast-md .toast-container.sc-ion-toast-md{-ms-flex-wrap:wrap;flex-wrap:wrap}/*!@.toast-layout-baseline .toast-content*/.toast-layout-baseline.sc-ion-toast-md .toast-content.sc-ion-toast-md{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center}/*!@.toast-icon*/.toast-icon.sc-ion-toast-md{-webkit-margin-start:16px;margin-inline-start:16px}/*!@.toast-message*/.toast-message.sc-ion-toast-md{-ms-flex:1;flex:1;white-space:var(--white-space)}/*!@.toast-button-group*/.toast-button-group.sc-ion-toast-md{display:-ms-flexbox;display:flex}/*!@.toast-layout-stacked .toast-button-group*/.toast-layout-stacked.sc-ion-toast-md .toast-button-group.sc-ion-toast-md{-ms-flex-pack:end;justify-content:end;width:100%}/*!@.toast-button*/.toast-button.sc-ion-toast-md{border:0;outline:none;color:var(--button-color);z-index:0}/*!@.toast-icon,\n.toast-button-icon*/.toast-icon.sc-ion-toast-md,.toast-button-icon.sc-ion-toast-md{font-size:1.4em}/*!@.toast-button-inner*/.toast-button-inner.sc-ion-toast-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (any-hover: hover){/*!@.toast-button:hover*/.toast-button.sc-ion-toast-md:hover{cursor:pointer}}/*!@:host*/.sc-ion-toast-md-h{--background:var(--ion-color-step-800, #333333);--border-radius:4px;--box-shadow:0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-50, #f2f2f2);--max-width:700px;--start:8px;--end:8px;font-size:14px}/*!@.toast-wrapper*/.toast-wrapper.sc-ion-toast-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;display:block;position:absolute;opacity:0.01;z-index:10}/*!@.toast-content*/.toast-content.sc-ion-toast-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:14px;padding-bottom:14px}/*!@.toast-header*/.toast-header.sc-ion-toast-md{margin-bottom:2px;font-weight:500;line-height:20px}/*!@.toast-message*/.toast-message.sc-ion-toast-md{line-height:20px}/*!@.toast-layout-baseline .toast-button-group-start*/.toast-layout-baseline.sc-ion-toast-md .toast-button-group-start.sc-ion-toast-md{-webkit-margin-start:8px;margin-inline-start:8px}/*!@.toast-layout-stacked .toast-button-group-start*/.toast-layout-stacked.sc-ion-toast-md .toast-button-group-start.sc-ion-toast-md{-webkit-margin-end:8px;margin-inline-end:8px;margin-top:8px}/*!@.toast-layout-baseline .toast-button-group-end*/.toast-layout-baseline.sc-ion-toast-md .toast-button-group-end.sc-ion-toast-md{-webkit-margin-end:8px;margin-inline-end:8px}/*!@.toast-layout-stacked .toast-button-group-end*/.toast-layout-stacked.sc-ion-toast-md .toast-button-group-end.sc-ion-toast-md{-webkit-margin-end:8px;margin-inline-end:8px;margin-bottom:8px}/*!@.toast-button*/.toast-button.sc-ion-toast-md{-webkit-padding-start:15px;padding-inline-start:15px;-webkit-padding-end:15px;padding-inline-end:15px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;font-family:var(--ion-font-family);font-size:14px;font-weight:500;letter-spacing:0.84px;text-transform:uppercase;overflow:hidden}/*!@.toast-button-cancel*/.toast-button-cancel.sc-ion-toast-md{color:var(--ion-color-step-100, #e6e6e6)}/*!@.toast-button-icon-only*/.toast-button-icon-only.sc-ion-toast-md{border-radius:50%;-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:9px;padding-bottom:9px;width:36px;height:36px}@media (any-hover: hover){/*!@.toast-button:hover*/.toast-button.sc-ion-toast-md:hover{background-color:rgba(var(--ion-color-primary-rgb, 56, 128, 255), 0.08)}/*!@.toast-button-cancel:hover*/.toast-button-cancel.sc-ion-toast-md:hover{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.08)}}";
@@ -33975,7 +33837,6 @@ class Toast {
33975
33837
  this.message = undefined;
33976
33838
  this.keyboardClose = false;
33977
33839
  this.position = 'bottom';
33978
- this.positionAnchor = undefined;
33979
33840
  this.buttons = undefined;
33980
33841
  this.translucent = false;
33981
33842
  this.animated = true;
@@ -34023,19 +33884,7 @@ class Toast {
34023
33884
  async present() {
34024
33885
  const unlock = await this.lockController.lock();
34025
33886
  await this.delegateController.attachViewToDom();
34026
- const { el, position } = this;
34027
- const anchor = this.getAnchorElement();
34028
- const animationPosition = getAnimationPosition(position, anchor, getIonMode$1(this), el);
34029
- /**
34030
- * Cache the calculated position of the toast, so we can re-use it
34031
- * in the dismiss animation.
34032
- */
34033
- this.lastPresentedPosition = animationPosition;
34034
- await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, {
34035
- position,
34036
- top: animationPosition.top,
34037
- bottom: animationPosition.bottom,
34038
- });
33887
+ await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position);
34039
33888
  /**
34040
33889
  * Content is revealed to screen readers after
34041
33890
  * the transition to avoid jank since this
@@ -34057,28 +33906,15 @@ class Toast {
34057
33906
  * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
34058
33907
  */
34059
33908
  async dismiss(data, role) {
34060
- var _a, _b;
34061
33909
  const unlock = await this.lockController.lock();
34062
- const { durationTimeout, position, lastPresentedPosition } = this;
34063
- if (durationTimeout) {
34064
- clearTimeout(durationTimeout);
33910
+ if (this.durationTimeout) {
33911
+ clearTimeout(this.durationTimeout);
34065
33912
  }
34066
- const dismissed = await dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation,
34067
- /**
34068
- * Fetch the cached position that was calculated back in the present
34069
- * animation. We always want to animate the dismiss from the same
34070
- * position the present stopped at, so the animation looks continuous.
34071
- */
34072
- {
34073
- position,
34074
- top: (_a = lastPresentedPosition === null || lastPresentedPosition === void 0 ? void 0 : lastPresentedPosition.top) !== null && _a !== void 0 ? _a : '',
34075
- bottom: (_b = lastPresentedPosition === null || lastPresentedPosition === void 0 ? void 0 : lastPresentedPosition.bottom) !== null && _b !== void 0 ? _b : '',
34076
- });
33913
+ const dismissed = await dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation, this.position);
34077
33914
  if (dismissed) {
34078
33915
  this.delegateController.removeViewFromDom();
34079
33916
  this.revealContentToScreenReader = false;
34080
33917
  }
34081
- this.lastPresentedPosition = undefined;
34082
33918
  unlock();
34083
33919
  return dismissed;
34084
33920
  }
@@ -34102,44 +33938,6 @@ class Toast {
34102
33938
  : [];
34103
33939
  return buttons;
34104
33940
  }
34105
- /**
34106
- * Returns the element specified by the positionAnchor prop,
34107
- * or undefined if prop's value is an ID string and the element
34108
- * is not found in the DOM.
34109
- */
34110
- getAnchorElement() {
34111
- const { position, positionAnchor, el } = this;
34112
- /**
34113
- * If positionAnchor is undefined then
34114
- * no anchor should be used when presenting the toast.
34115
- */
34116
- if (positionAnchor === undefined) {
34117
- return;
34118
- }
34119
- if (position === 'middle' && positionAnchor !== undefined) {
34120
- printIonWarning('The positionAnchor property is ignored when using position="middle".', this.el);
34121
- return undefined;
34122
- }
34123
- if (typeof positionAnchor === 'string') {
34124
- /**
34125
- * If the anchor is defined as an ID, find the element.
34126
- * We do this on every present so the toast doesn't need
34127
- * to account for the surrounding DOM changing since the
34128
- * last time it was presented.
34129
- */
34130
- const foundEl = document.getElementById(positionAnchor);
34131
- if (foundEl === null) {
34132
- printIonWarning(`An anchor element with an ID of "${positionAnchor}" was not found in the DOM.`, el);
34133
- return undefined;
34134
- }
34135
- return foundEl;
34136
- }
34137
- if (positionAnchor instanceof HTMLElement) {
34138
- return positionAnchor;
34139
- }
34140
- printIonWarning('Invalid positionAnchor value:', positionAnchor, el);
34141
- return undefined;
34142
- }
34143
33941
  async buttonClick(button) {
34144
33942
  const role = button.role;
34145
33943
  if (isCancel(role)) {
@@ -34247,7 +34045,6 @@ class Toast {
34247
34045
  "message": [1],
34248
34046
  "keyboardClose": [4, "keyboard-close"],
34249
34047
  "position": [1],
34250
- "positionAnchor": [1, "position-anchor"],
34251
34048
  "buttons": [16],
34252
34049
  "translucent": [4],
34253
34050
  "animated": [4],
@@ -34315,6 +34112,9 @@ class Toggle {
34315
34112
  }
34316
34113
  };
34317
34114
  this.onClick = (ev) => {
34115
+ if (this.disabled) {
34116
+ return;
34117
+ }
34318
34118
  ev.preventDefault();
34319
34119
  if (this.lastDrag + 300 < Date.now()) {
34320
34120
  this.toggleChecked();
@@ -34965,7 +34765,6 @@ const iosTransitionAnimation = (navEl, opts) => {
34965
34765
  .easing(opts.easing || EASING)
34966
34766
  .fill('both')
34967
34767
  .beforeRemoveClass('ion-page-invisible');
34968
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
34969
34768
  if (leavingEl && navEl !== null && navEl !== undefined) {
34970
34769
  const navDecorAnimation = createAnimation();
34971
34770
  navDecorAnimation.addElement(navEl);