@ionic/core 8.7.19-dev.11772655618.1af0949f → 8.7.19-dev.11773072221.15efeed0

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 (587) hide show
  1. package/components/index.d.ts +0 -2
  2. package/components/index.js +114 -1
  3. package/components/ion-accordion-group.js +268 -1
  4. package/components/ion-accordion.js +456 -1
  5. package/components/ion-action-sheet.js +6 -1
  6. package/components/ion-alert.js +6 -1
  7. package/components/ion-app.js +132 -1
  8. package/components/ion-avatar.js +41 -1
  9. package/components/ion-back-button.js +130 -1
  10. package/components/ion-backdrop.js +6 -1
  11. package/components/ion-badge.js +47 -1
  12. package/components/ion-breadcrumb.js +137 -1
  13. package/components/ion-breadcrumbs.js +164 -1
  14. package/components/ion-button.js +6 -1
  15. package/components/ion-buttons.js +6 -1
  16. package/components/ion-card-content.js +45 -1
  17. package/components/ion-card-header.js +56 -1
  18. package/components/ion-card-subtitle.js +48 -1
  19. package/components/ion-card-title.js +48 -1
  20. package/components/ion-card.js +107 -1
  21. package/components/ion-checkbox.js +6 -1
  22. package/components/ion-chip.js +66 -1
  23. package/components/ion-col.js +163 -1
  24. package/components/ion-content.js +6 -1
  25. package/components/ion-datetime-button.js +383 -1
  26. package/components/ion-datetime.js +2047 -1
  27. package/components/ion-fab-button.js +151 -1
  28. package/components/ion-fab-list.js +73 -1
  29. package/components/ion-fab.js +101 -1
  30. package/components/ion-footer.js +179 -1
  31. package/components/ion-grid.js +46 -1
  32. package/components/ion-header.js +6 -1
  33. package/components/ion-icon.js +6 -1
  34. package/components/ion-img.js +133 -1
  35. package/components/ion-infinite-scroll-content.js +69 -1
  36. package/components/ion-infinite-scroll.js +236 -1
  37. package/components/ion-input-otp.js +682 -1
  38. package/components/ion-input-password-toggle.js +128 -1
  39. package/components/ion-input.js +646 -1
  40. package/components/ion-item-divider.js +59 -1
  41. package/components/ion-item-group.js +46 -1
  42. package/components/ion-item-option.js +91 -1
  43. package/components/ion-item-options.js +73 -1
  44. package/components/ion-item-sliding.js +457 -1
  45. package/components/ion-item.js +6 -1
  46. package/components/ion-label.js +6 -1
  47. package/components/ion-list-header.js +6 -1
  48. package/components/ion-list.js +6 -1
  49. package/components/ion-loading.js +343 -1
  50. package/components/ion-menu-button.js +109 -1
  51. package/components/ion-menu-toggle.js +64 -1
  52. package/components/ion-menu.js +741 -1
  53. package/components/ion-modal.js +6 -1
  54. package/components/ion-nav-link.js +64 -1
  55. package/components/ion-nav.js +951 -1
  56. package/components/ion-note.js +47 -1
  57. package/components/ion-picker-column-option.js +6 -1
  58. package/components/ion-picker-column.js +6 -1
  59. package/components/ion-picker-legacy-column.js +6 -1
  60. package/components/ion-picker-legacy.js +342 -1
  61. package/components/ion-picker.js +6 -1
  62. package/components/ion-popover.js +6 -1
  63. package/components/ion-progress-bar.js +100 -1
  64. package/components/ion-radio-group.js +6 -1
  65. package/components/ion-radio.js +6 -1
  66. package/components/ion-range.js +844 -1
  67. package/components/ion-refresher-content.js +88 -1
  68. package/components/ion-refresher.js +750 -1
  69. package/components/ion-reorder-group.js +322 -1
  70. package/components/ion-reorder.js +60 -1
  71. package/components/ion-ripple-effect.js +6 -1
  72. package/components/ion-route-redirect.js +45 -1
  73. package/components/ion-route.js +74 -1
  74. package/components/ion-router-link.js +61 -1
  75. package/components/ion-router-outlet.js +226 -1
  76. package/components/ion-router.js +840 -1
  77. package/components/ion-row.js +36 -1
  78. package/components/ion-searchbar.js +540 -1
  79. package/components/ion-segment-button.js +173 -1
  80. package/components/ion-segment-content.js +35 -1
  81. package/components/ion-segment-view.js +142 -1
  82. package/components/ion-segment.js +602 -1
  83. package/components/ion-select-modal.js +6 -1
  84. package/components/ion-select-option.js +46 -1
  85. package/components/ion-select-popover.js +6 -1
  86. package/components/ion-select.js +1035 -1
  87. package/components/ion-skeleton-text.js +64 -1
  88. package/components/ion-spinner.js +6 -1
  89. package/components/ion-split-pane.js +190 -1
  90. package/components/ion-tab-bar.js +135 -1
  91. package/components/ion-tab-button.js +127 -1
  92. package/components/ion-tab.js +82 -1
  93. package/components/ion-tabs.js +204 -1
  94. package/components/ion-text.js +42 -1
  95. package/components/ion-textarea.js +554 -1
  96. package/components/ion-thumbnail.js +36 -1
  97. package/components/ion-title.js +6 -1
  98. package/components/ion-toast.js +938 -1
  99. package/components/ion-toggle.js +360 -1
  100. package/components/ion-toolbar.js +6 -1
  101. package/components/p-B-hirT0v.js +35 -1
  102. package/components/p-B25GjpND.js +71 -0
  103. package/components/p-BANeLH_G.js +290 -0
  104. package/components/p-BBFQmhcD.js +59 -0
  105. package/components/p-BC-awmYt.js +306 -0
  106. package/components/p-BHbOsu99.js +501 -0
  107. package/components/p-BTEOs1at.js +192 -1
  108. package/components/p-BTlwXR9e.js +73 -0
  109. package/components/p-BcazQttQ.js +612 -0
  110. package/components/p-BdGshsIJ.js +226 -0
  111. package/components/p-BfS7vSpC.js +147 -0
  112. package/components/p-BhRFCLuX.js +675 -0
  113. package/components/p-Bhnhnzjz.js +75 -0
  114. package/components/p-BmVRXR1y.js +72 -1
  115. package/components/p-BmcqD0EN.js +153 -0
  116. package/components/p-Boi6hecl.js +115 -0
  117. package/components/p-Bt_moUyl.js +232 -0
  118. package/components/p-Bxl5etF4.js +146 -0
  119. package/components/p-ByjmWt3s.js +139 -0
  120. package/components/p-C04oPyjT.js +54 -0
  121. package/components/p-C53feagD.js +15 -1
  122. package/components/p-C6dkQWq2.js +1626 -0
  123. package/components/p-CFZWrvIQ.js +194 -0
  124. package/components/p-CIGNaXM1.js +10 -1
  125. package/{dist/esm/config-TO1rZH52.js → components/p-CIJwkzL6.js} +1 -1
  126. package/components/p-CL12ApCQ.js +820 -0
  127. package/components/p-CO7fmmxt.js +29 -1
  128. package/components/p-CXJR56Oq.js +564 -0
  129. package/components/p-Cdm3dKWf.js +108 -0
  130. package/components/p-Cl0B-RWe.js +452 -1
  131. package/components/p-CslsoGzv.js +192 -0
  132. package/components/p-CtWGkNnJ.js +162 -1
  133. package/components/p-Cyd00tgZ.js +167 -0
  134. package/components/p-CzAJ3ArC.js +380 -0
  135. package/components/p-CzW34QBh.js +12 -0
  136. package/components/p-D0zXRwcr.js +196 -0
  137. package/components/p-D13Eaw-8.js +76 -1
  138. package/components/p-D5hF6rwn.js +339 -0
  139. package/components/p-D6Ynv7Xh.js +141 -1
  140. package/components/p-D8eD2iBA.js +67 -0
  141. package/components/p-DGOrLIyS.js +481 -0
  142. package/components/p-DJztqcrH.js +14 -1
  143. package/components/p-DK2Bn1Mc.js +305 -0
  144. package/components/p-DKRQWlK2.js +598 -0
  145. package/components/p-DNDUsygf.js +128 -0
  146. package/components/p-DTWZF6wg.js +418 -0
  147. package/components/p-DWoUQeZ3.js +3012 -0
  148. package/components/p-DX0w75a9.js +420 -0
  149. package/components/p-DiVJyqlX.js +40 -1
  150. package/components/p-Dt8zaCLQ.js +92 -0
  151. package/components/p-Dtdm8lKC.js +44 -1
  152. package/components/p-DyFBFrV7.js +264 -0
  153. package/components/p-DyHPCMyn.js +39 -0
  154. package/components/p-LgLeKTkH.js +112 -0
  155. package/components/p-NhiRFRn9.js +50 -0
  156. package/components/p-OuiHmXO5.js +646 -0
  157. package/components/p-Wro9IPHE.js +459 -0
  158. package/components/p-ZjP4CjeZ.js +4 -1
  159. package/components/p-aIWC4ZEV.js +305 -0
  160. package/components/p-c-XJ9XhZ.js +915 -0
  161. package/components/p-cyNmxje6.js +155 -1
  162. package/components/p-fVuFT3Wd.js +78 -0
  163. package/components/p-hHmYLOfE.js +87 -1
  164. package/components/p-iyo0Toaz.js +2822 -0
  165. package/{dist/esm/framework-delegate-CyxE1S_P.js → components/p-l_lso3Zl.js} +1 -1
  166. package/components/p-mQp4lwQD.js +1638 -0
  167. package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
  168. package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
  169. package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
  170. package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
  171. package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
  172. package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
  174. package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
  175. package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
  176. package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
  177. package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
  178. package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
  179. package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CuMghsQ-.js} +3 -3
  182. package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
  185. package/dist/cjs/ion-alert.cjs.entry.js +17 -25
  186. package/dist/cjs/ion-app_8.cjs.entry.js +43 -48
  187. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
  188. package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
  189. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
  190. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +14 -20
  191. package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
  192. package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
  193. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
  194. package/dist/cjs/ion-chip.cjs.entry.js +6 -6
  195. package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
  197. package/dist/cjs/ion-datetime_3.cjs.entry.js +46 -75
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
  199. package/dist/cjs/ion-img.cjs.entry.js +6 -8
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
  203. package/dist/cjs/ion-input.cjs.entry.js +13 -21
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +17 -19
  205. package/dist/cjs/ion-item_8.cjs.entry.js +42 -48
  206. package/dist/cjs/ion-loading.cjs.entry.js +14 -18
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
  208. package/dist/cjs/ion-modal.cjs.entry.js +59 -237
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +15 -21
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
  216. package/dist/cjs/ion-range.cjs.entry.js +57 -205
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +8 -13
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +13 -17
  226. package/dist/cjs/ion-select_3.cjs.entry.js +24 -33
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +14 -20
  233. package/dist/cjs/ion-toast.cjs.entry.js +15 -21
  234. package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
  235. package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
  240. package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
  241. package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
  242. package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
  243. package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +2 -4
  246. package/dist/collection/components/action-sheet/action-sheet.js +10 -20
  247. package/dist/collection/components/alert/alert.js +12 -24
  248. package/dist/collection/components/back-button/back-button.js +2 -4
  249. package/dist/collection/components/badge/badge.js +1 -2
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
  252. package/dist/collection/components/button/button.js +3 -6
  253. package/dist/collection/components/card/card.js +3 -6
  254. package/dist/collection/components/card-header/card-header.js +1 -2
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
  256. package/dist/collection/components/card-title/card-title.js +1 -2
  257. package/dist/collection/components/checkbox/checkbox.js +2 -4
  258. package/dist/collection/components/chip/chip.js +1 -2
  259. package/dist/collection/components/content/content.js +7 -12
  260. package/dist/collection/components/datetime/datetime.js +22 -43
  261. package/dist/collection/components/datetime-button/datetime-button.js +1 -2
  262. package/dist/collection/components/fab-button/fab-button.js +3 -6
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
  264. package/dist/collection/components/input/input.js +6 -11
  265. package/dist/collection/components/input-otp/input-otp.js +4 -8
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
  267. package/dist/collection/components/item/item.js +5 -10
  268. package/dist/collection/components/item-divider/item-divider.js +3 -7
  269. package/dist/collection/components/item-option/item-option.js +3 -6
  270. package/dist/collection/components/item-options/item-options.js +1 -2
  271. package/dist/collection/components/item-sliding/item-sliding.js +1 -2
  272. package/dist/collection/components/label/label.js +3 -6
  273. package/dist/collection/components/list-header/list-header.js +3 -6
  274. package/dist/collection/components/loading/loading.js +11 -22
  275. package/dist/collection/components/menu/menu.js +5 -10
  276. package/dist/collection/components/menu-button/menu-button.js +1 -2
  277. package/dist/collection/components/modal/gestures/sheet.js +12 -120
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -54
  279. package/dist/collection/components/modal/modal.js +45 -127
  280. package/dist/collection/components/nav/nav.js +45 -89
  281. package/dist/collection/components/nav-link/nav-link.js +5 -9
  282. package/dist/collection/components/note/note.js +1 -2
  283. package/dist/collection/components/picker/picker.js +1 -2
  284. package/dist/collection/components/picker-column/picker-column.js +3 -6
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
  286. package/dist/collection/components/picker-legacy/picker.js +12 -24
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
  288. package/dist/collection/components/popover/popover.js +17 -33
  289. package/dist/collection/components/progress-bar/progress-bar.js +1 -2
  290. package/dist/collection/components/radio/radio.js +1 -2
  291. package/dist/collection/components/radio-group/radio-group.js +3 -6
  292. package/dist/collection/components/range/range.js +53 -214
  293. package/dist/collection/components/refresher/refresher.js +5 -73
  294. package/dist/collection/components/refresher-content/refresher-content.js +4 -8
  295. package/dist/collection/components/reorder-group/reorder-group.js +3 -6
  296. package/dist/collection/components/route/route.js +2 -4
  297. package/dist/collection/components/router/router.js +5 -10
  298. package/dist/collection/components/router-link/router-link.js +3 -6
  299. package/dist/collection/components/router-outlet/router-outlet.js +9 -18
  300. package/dist/collection/components/searchbar/searchbar.js +6 -11
  301. package/dist/collection/components/segment/segment.js +5 -10
  302. package/dist/collection/components/segment-button/segment-button.js +2 -4
  303. package/dist/collection/components/segment-view/segment-view.ios.css +1 -2
  304. package/dist/collection/components/segment-view/segment-view.js +4 -30
  305. package/dist/collection/components/segment-view/segment-view.md.css +1 -2
  306. package/dist/collection/components/select/select.js +8 -17
  307. package/dist/collection/components/select-modal/select-modal.js +2 -27
  308. package/dist/collection/components/select-popover/select-popover.js +1 -2
  309. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
  310. package/dist/collection/components/spinner/spinner.js +2 -4
  311. package/dist/collection/components/tab/tab.js +2 -4
  312. package/dist/collection/components/tab-bar/tab-bar.js +2 -4
  313. package/dist/collection/components/tab-button/tab-button.js +2 -4
  314. package/dist/collection/components/tabs/tabs.js +2 -4
  315. package/dist/collection/components/text/text.js +1 -2
  316. package/dist/collection/components/textarea/textarea.js +7 -10
  317. package/dist/collection/components/title/title.js +2 -4
  318. package/dist/collection/components/toast/toast.js +17 -34
  319. package/dist/collection/components/toggle/toggle.js +2 -4
  320. package/dist/collection/components/toolbar/toolbar.js +1 -2
  321. package/dist/docs.d.ts +0 -37
  322. package/dist/docs.json +389 -1186
  323. package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
  324. package/dist/esm/app-globals-BDSf8fOA.js +8 -0
  325. package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
  326. package/dist/esm/config-mCdtaoPe.js +195 -0
  327. package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
  328. package/dist/esm/framework-delegate-BYawdMXj.js +140 -0
  329. package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
  330. package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
  331. package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
  332. package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
  333. package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
  334. package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
  335. package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
  336. package/dist/esm/index.js +12 -12
  337. package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-D6H3ZaWt.js} +3 -3
  338. package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
  339. package/dist/esm/ion-accordion_2.entry.js +15 -23
  340. package/dist/esm/ion-action-sheet.entry.js +15 -21
  341. package/dist/esm/ion-alert.entry.js +17 -25
  342. package/dist/esm/ion-app_8.entry.js +43 -48
  343. package/dist/esm/ion-avatar_3.entry.js +12 -12
  344. package/dist/esm/ion-back-button.entry.js +7 -7
  345. package/dist/esm/ion-backdrop.entry.js +6 -6
  346. package/dist/esm/ion-breadcrumb_2.entry.js +14 -20
  347. package/dist/esm/ion-button_2.entry.js +18 -36
  348. package/dist/esm/ion-card_5.entry.js +23 -23
  349. package/dist/esm/ion-checkbox.entry.js +7 -7
  350. package/dist/esm/ion-chip.entry.js +6 -6
  351. package/dist/esm/ion-col_3.entry.js +8 -8
  352. package/dist/esm/ion-datetime-button.entry.js +8 -8
  353. package/dist/esm/ion-datetime_3.entry.js +46 -75
  354. package/dist/esm/ion-fab_3.entry.js +13 -17
  355. package/dist/esm/ion-img.entry.js +6 -8
  356. package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
  357. package/dist/esm/ion-input-otp.entry.js +10 -16
  358. package/dist/esm/ion-input-password-toggle.entry.js +7 -9
  359. package/dist/esm/ion-input.entry.js +13 -21
  360. package/dist/esm/ion-item-option_3.entry.js +17 -19
  361. package/dist/esm/ion-item_8.entry.js +42 -48
  362. package/dist/esm/ion-loading.entry.js +14 -18
  363. package/dist/esm/ion-menu_3.entry.js +22 -30
  364. package/dist/esm/ion-modal.entry.js +59 -237
  365. package/dist/esm/ion-nav_2.entry.js +10 -14
  366. package/dist/esm/ion-picker-column-option.entry.js +8 -10
  367. package/dist/esm/ion-picker-column.entry.js +7 -11
  368. package/dist/esm/ion-picker.entry.js +6 -6
  369. package/dist/esm/ion-popover.entry.js +15 -21
  370. package/dist/esm/ion-progress-bar.entry.js +7 -7
  371. package/dist/esm/ion-radio_2.entry.js +13 -17
  372. package/dist/esm/ion-range.entry.js +57 -205
  373. package/dist/esm/ion-refresher_2.entry.js +14 -45
  374. package/dist/esm/ion-reorder_2.entry.js +11 -13
  375. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  376. package/dist/esm/ion-route_4.entry.js +10 -20
  377. package/dist/esm/ion-searchbar.entry.js +12 -22
  378. package/dist/esm/ion-segment-content.entry.js +3 -3
  379. package/dist/esm/ion-segment-view.entry.js +8 -13
  380. package/dist/esm/ion-segment_2.entry.js +16 -26
  381. package/dist/esm/ion-select-modal.entry.js +13 -17
  382. package/dist/esm/ion-select_3.entry.js +24 -33
  383. package/dist/esm/ion-spinner.entry.js +4 -4
  384. package/dist/esm/ion-split-pane.entry.js +9 -15
  385. package/dist/esm/ion-tab-bar_2.entry.js +12 -14
  386. package/dist/esm/ion-tab_2.entry.js +8 -10
  387. package/dist/esm/ion-text.entry.js +4 -4
  388. package/dist/esm/ion-textarea.entry.js +14 -20
  389. package/dist/esm/ion-toast.entry.js +15 -21
  390. package/dist/esm/ion-toggle.entry.js +8 -10
  391. package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
  392. package/dist/esm/ionic.js +6 -6
  393. package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
  394. package/dist/esm/loader.js +5 -5
  395. package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
  396. package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
  397. package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
  398. package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
  399. package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
  400. package/dist/html.html-data.json +109 -117
  401. package/dist/ionic/index.esm.js +1 -1
  402. package/dist/ionic/ionic.esm.js +1 -1
  403. package/dist/ionic/{p-f2deaceb.entry.js → p-0ca0fe9c.entry.js} +1 -1
  404. package/dist/ionic/p-11518b31.entry.js +4 -0
  405. package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
  406. package/dist/ionic/p-221a3d8c.entry.js +4 -0
  407. package/dist/ionic/{p-b325a113.entry.js → p-2668188b.entry.js} +1 -1
  408. package/dist/ionic/p-2ac254dc.entry.js +4 -0
  409. package/dist/ionic/p-2bd1ea35.entry.js +4 -0
  410. package/dist/ionic/p-30333874.entry.js +4 -0
  411. package/dist/ionic/p-31db96da.entry.js +4 -0
  412. package/dist/ionic/p-34642fa1.entry.js +4 -0
  413. package/dist/ionic/p-35696017.entry.js +4 -0
  414. package/dist/ionic/p-363d1209.entry.js +4 -0
  415. package/dist/ionic/p-46a38cfd.entry.js +4 -0
  416. package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
  417. package/dist/ionic/p-4eec1a5e.entry.js +4 -0
  418. package/dist/ionic/p-530fcd71.entry.js +4 -0
  419. package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
  420. package/dist/ionic/{p-1b169fb6.entry.js → p-5c8f7253.entry.js} +1 -1
  421. package/dist/ionic/p-5d6fb6e3.entry.js +4 -0
  422. package/dist/ionic/{p-e6cedcd7.entry.js → p-652318c3.entry.js} +1 -1
  423. package/dist/ionic/p-66fbe052.entry.js +4 -0
  424. package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
  425. package/dist/ionic/{p-bcaa827e.entry.js → p-6f37536a.entry.js} +1 -1
  426. package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
  427. package/dist/ionic/p-7babec72.entry.js +4 -0
  428. package/dist/ionic/{p-6af16209.entry.js → p-7cad388a.entry.js} +1 -1
  429. package/dist/ionic/{p-6b701daa.entry.js → p-7f98e710.entry.js} +1 -1
  430. package/dist/ionic/p-82d5bb3d.entry.js +4 -0
  431. package/dist/ionic/{p-7ca71c83.entry.js → p-906bb44d.entry.js} +1 -1
  432. package/dist/ionic/{p-23fac490.entry.js → p-915b3e3d.entry.js} +1 -1
  433. package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
  434. package/dist/ionic/p-97eb0812.entry.js +4 -0
  435. package/dist/ionic/p-9b6d46f2.entry.js +4 -0
  436. package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
  437. package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
  438. package/dist/ionic/p-BKc55Xev.js +4 -0
  439. package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
  440. package/{components/p-Cy5XSfIk.js → dist/ionic/p-BYEqWnSg.js} +1 -1
  441. package/dist/ionic/p-Bmgaetn_.js +4 -0
  442. package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
  443. package/dist/ionic/p-C8IsBmNU.js +5 -0
  444. package/dist/ionic/p-CJxh_yLS.js +4 -0
  445. package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
  446. package/{components/p-C59ryAuS.js → dist/ionic/p-CwgG81ZD.js} +1 -1
  447. package/{components/p-BR3tZJmu.js → dist/ionic/p-D-eFFUkA.js} +1 -1
  448. package/{components/p-BS1TtEiJ.js → dist/ionic/p-D0dMcSkw.js} +1 -1
  449. package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
  450. package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
  451. package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
  452. package/{components/p-9VcRUwdB.js → dist/ionic/p-DUt5fQmA.js} +1 -1
  453. package/dist/ionic/p-DZRJwG4S.js +4 -0
  454. package/{components/p-BUbsoBOV.js → dist/ionic/p-DbQ5QkTP.js} +1 -1
  455. package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
  456. package/{components/p-Cq8cQ0NL.js → dist/ionic/p-DdR6rpbR.js} +1 -1
  457. package/dist/ionic/{p-CYvM5g3q.js → p-MUoJJJwd.js} +1 -1
  458. package/dist/ionic/p-a4a9f5ae.entry.js +4 -0
  459. package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
  460. package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
  461. package/dist/ionic/p-b0ebf9f8.entry.js +4 -0
  462. package/dist/ionic/{p-294f4bb5.entry.js → p-b8551510.entry.js} +1 -1
  463. package/dist/ionic/{p-f8186550.entry.js → p-bce86e56.entry.js} +1 -1
  464. package/dist/ionic/p-be263062.entry.js +4 -0
  465. package/dist/ionic/p-c175d792.entry.js +4 -0
  466. package/dist/ionic/p-cc2a9936.entry.js +4 -0
  467. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  468. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  469. package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
  470. package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
  471. package/dist/ionic/p-e4c57008.entry.js +4 -0
  472. package/dist/ionic/p-e5d6d0f0.entry.js +4 -0
  473. package/dist/ionic/p-f1dfee25.entry.js +4 -0
  474. package/dist/ionic/p-f9f7b9db.entry.js +4 -0
  475. package/dist/ionic/{p-c3cce9d8.entry.js → p-fb0271ae.entry.js} +1 -1
  476. package/dist/ionic/{p-e863ffe8.entry.js → p-fbb00634.entry.js} +1 -1
  477. package/dist/types/components/datetime/datetime.d.ts +0 -10
  478. package/dist/types/components/header/header.utils.d.ts +1 -2
  479. package/dist/types/components/item/item.d.ts +0 -2
  480. package/dist/types/components/item-divider/item-divider.d.ts +0 -3
  481. package/dist/types/components/item-option/item-option.d.ts +0 -2
  482. package/dist/types/components/list-header/list-header.d.ts +0 -2
  483. package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
  484. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
  485. package/dist/types/components/modal/modal-interface.d.ts +0 -25
  486. package/dist/types/components/modal/modal.d.ts +1 -22
  487. package/dist/types/components/range/range-interface.d.ts +0 -1
  488. package/dist/types/components/range/range.d.ts +4 -44
  489. package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
  490. package/dist/types/components/refresher/refresher.d.ts +3 -16
  491. package/dist/types/components/segment-view/segment-view.d.ts +0 -4
  492. package/dist/types/components/select/select.d.ts +0 -3
  493. package/dist/types/components/select-modal/select-modal.d.ts +0 -4
  494. package/dist/types/components.d.ts +191 -964
  495. package/dist/types/interface.d.ts +2 -2
  496. package/dist/types/stencil-public-runtime.d.ts +14 -126
  497. package/dist/types/utils/gesture/listener.d.ts +1 -2
  498. package/hydrate/index.d.ts +0 -12
  499. package/hydrate/index.js +1421 -5632
  500. package/hydrate/index.mjs +1422 -5631
  501. package/package.json +2 -2
  502. package/components/p-1KVKSLu5.js +0 -4
  503. package/components/p-ApmKVjaE.js +0 -4
  504. package/components/p-B6FQ0cKR.js +0 -4
  505. package/components/p-B6HaBl3o.js +0 -4
  506. package/components/p-B8b1Ukl9.js +0 -4
  507. package/components/p-BFxT89Wl.js +0 -4
  508. package/components/p-BJoMtgfR.js +0 -4
  509. package/components/p-BNAG-aVv.js +0 -4
  510. package/components/p-BSB38Tek.js +0 -4
  511. package/components/p-BTeL5HCK.js +0 -4
  512. package/components/p-BVnB3eEn.js +0 -4
  513. package/components/p-BYDc3hSE.js +0 -4
  514. package/components/p-BagjAGC0.js +0 -4
  515. package/components/p-BegtE7nr.js +0 -4
  516. package/components/p-BgwEQWW6.js +0 -4
  517. package/components/p-Bk2zuNWT.js +0 -4
  518. package/components/p-Bum_LjMh.js +0 -4
  519. package/components/p-BxwWvu-b.js +0 -4
  520. package/components/p-C4jPsTQa.js +0 -4
  521. package/components/p-C7AoMl7c.js +0 -4
  522. package/components/p-CBzELu-H.js +0 -4
  523. package/components/p-CDfQnFrd.js +0 -4
  524. package/components/p-CH0NYjKq.js +0 -4
  525. package/components/p-CU1SSH8_.js +0 -4
  526. package/components/p-CVF7ukTk.js +0 -4
  527. package/components/p-CgfaEEem.js +0 -4
  528. package/components/p-CgqKJg96.js +0 -4
  529. package/components/p-CneGxKsZ.js +0 -4
  530. package/components/p-CoA-aqGF.js +0 -4
  531. package/components/p-Csw8xuz4.js +0 -4
  532. package/components/p-Cwv-vmkN.js +0 -4
  533. package/components/p-Cyxa_4PV.js +0 -4
  534. package/components/p-Cz5nLPGT.js +0 -4
  535. package/components/p-D6NJwNJN.js +0 -4
  536. package/components/p-DHsZWn1l.js +0 -4
  537. package/components/p-DJMZehmW.js +0 -4
  538. package/components/p-DYdpXONG.js +0 -4
  539. package/components/p-DgbT0exM.js +0 -4
  540. package/components/p-YLXPWgVj.js +0 -4
  541. package/components/p-ak_d-z48.js +0 -4
  542. package/components/p-fpbh6w3f.js +0 -4
  543. package/components/p-kvaDs24J.js +0 -4
  544. package/components/p-vEbVo2hO.js +0 -4
  545. package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
  546. package/dist/esm/app-globals-DhZjtldk.js +0 -9
  547. package/dist/ionic/p-031b76f7.entry.js +0 -4
  548. package/dist/ionic/p-045a6a42.entry.js +0 -4
  549. package/dist/ionic/p-07506134.entry.js +0 -4
  550. package/dist/ionic/p-084c25b2.entry.js +0 -4
  551. package/dist/ionic/p-0d8b5c38.entry.js +0 -4
  552. package/dist/ionic/p-16813ce7.entry.js +0 -4
  553. package/dist/ionic/p-16b65553.entry.js +0 -4
  554. package/dist/ionic/p-1b02923f.entry.js +0 -4
  555. package/dist/ionic/p-2a68388b.entry.js +0 -4
  556. package/dist/ionic/p-2f5a8140.entry.js +0 -4
  557. package/dist/ionic/p-3e143d1d.entry.js +0 -4
  558. package/dist/ionic/p-4819b469.entry.js +0 -4
  559. package/dist/ionic/p-4dd5e8e0.entry.js +0 -4
  560. package/dist/ionic/p-51c11c47.entry.js +0 -4
  561. package/dist/ionic/p-53f750a5.entry.js +0 -4
  562. package/dist/ionic/p-6b97f2a3.entry.js +0 -4
  563. package/dist/ionic/p-71e322f7.entry.js +0 -4
  564. package/dist/ionic/p-7620be24.entry.js +0 -4
  565. package/dist/ionic/p-771b27a5.entry.js +0 -4
  566. package/dist/ionic/p-96a2e768.entry.js +0 -4
  567. package/dist/ionic/p-9cbc6f1f.entry.js +0 -4
  568. package/dist/ionic/p-9cdbabbb.entry.js +0 -4
  569. package/dist/ionic/p-9eac4eb1.entry.js +0 -4
  570. package/dist/ionic/p-B8xlpH8p.js +0 -4
  571. package/dist/ionic/p-BW_TRJm8.js +0 -4
  572. package/dist/ionic/p-BvFYtOdE.js +0 -4
  573. package/dist/ionic/p-C0JvVFMv.js +0 -4
  574. package/dist/ionic/p-CmFz1Mjc.js +0 -4
  575. package/dist/ionic/p-CtA-yJYy.js +0 -4
  576. package/dist/ionic/p-D8HJQ1qq.js +0 -4
  577. package/dist/ionic/p-DTPR1Wpn.js +0 -4
  578. package/dist/ionic/p-DtVZDHlS.js +0 -4
  579. package/dist/ionic/p-IGIE5vDm.js +0 -5
  580. package/dist/ionic/p-a805674e.entry.js +0 -4
  581. package/dist/ionic/p-aa47f46e.entry.js +0 -4
  582. package/dist/ionic/p-b6e0ff03.entry.js +0 -4
  583. package/dist/ionic/p-d4e8b473.entry.js +0 -4
  584. package/dist/ionic/p-e6c5f060.entry.js +0 -4
  585. package/dist/ionic/p-fdbc90d4.entry.js +0 -4
  586. package/dist/ionic/p-gbVXD275.js +0 -4
  587. package/dist/ionic/p-hNN3VvaC.js +0 -4
@@ -0,0 +1,290 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { p as proxyCustomElement, H, e as createEvent, h, d as Host } from './p-DWoUQeZ3.js';
5
+ import { e as renderHiddenInput } from './p-D5hF6rwn.js';
6
+ import { c as checkInvalidState } from './p-DJztqcrH.js';
7
+ import { b as getIonMode } from './p-Bxl5etF4.js';
8
+
9
+ const radioGroupIosCss = "ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
10
+
11
+ const radioGroupMdCss = "ion-radio-group{vertical-align:top}.radio-group-top{line-height:1.5}.radio-group-top .error-text{display:none;color:var(--ion-color-danger, #c5000f)}.radio-group-top .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid .radio-group-top .error-text{display:block}.ion-touched.ion-invalid .radio-group-top .helper-text{display:none}ion-list .radio-group-top{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}";
12
+
13
+ const RadioGroup = /*@__PURE__*/ proxyCustomElement(class RadioGroup extends H {
14
+ constructor(registerHost) {
15
+ super();
16
+ if (registerHost !== false) {
17
+ this.__registerHost();
18
+ }
19
+ this.ionChange = createEvent(this, "ionChange", 7);
20
+ this.ionValueChange = createEvent(this, "ionValueChange", 7);
21
+ this.inputId = `ion-rg-${radioGroupIds++}`;
22
+ this.helperTextId = `${this.inputId}-helper-text`;
23
+ this.errorTextId = `${this.inputId}-error-text`;
24
+ this.labelId = `${this.inputId}-lbl`;
25
+ /**
26
+ * Track validation state for proper aria-live announcements.
27
+ */
28
+ this.isInvalid = false;
29
+ /**
30
+ * If `true`, the radios can be deselected.
31
+ */
32
+ this.allowEmptySelection = false;
33
+ /**
34
+ * The name of the control, which is submitted with the form data.
35
+ */
36
+ this.name = this.inputId;
37
+ this.setRadioTabindex = (value) => {
38
+ const radios = this.getRadios();
39
+ // Get the first radio that is not disabled and the checked one
40
+ const first = radios.find((radio) => !radio.disabled);
41
+ const checked = radios.find((radio) => radio.value === value && !radio.disabled);
42
+ if (!first && !checked) {
43
+ return;
44
+ }
45
+ // If an enabled checked radio exists, set it to be the focusable radio
46
+ // otherwise we default to focus the first radio
47
+ const focusable = checked || first;
48
+ for (const radio of radios) {
49
+ const tabindex = radio === focusable ? 0 : -1;
50
+ radio.setButtonTabindex(tabindex);
51
+ }
52
+ };
53
+ this.onClick = (ev) => {
54
+ ev.preventDefault();
55
+ /**
56
+ * The Radio Group component mandates that only one radio button
57
+ * within the group can be selected at any given time. Since `ion-radio`
58
+ * is a shadow DOM component, it cannot natively perform this behavior
59
+ * using the `name` attribute.
60
+ */
61
+ const selectedRadio = ev.target && ev.target.closest('ion-radio');
62
+ /**
63
+ * Our current disabled prop definition causes Stencil to mark it
64
+ * as optional. While this is not desired, fixing this behavior
65
+ * in Stencil is a significant breaking change, so this effort is
66
+ * being de-risked in STENCIL-917. Until then, we compromise
67
+ * here by checking for falsy `disabled` values instead of strictly
68
+ * checking `disabled === false`.
69
+ */
70
+ if (selectedRadio && !selectedRadio.disabled) {
71
+ const currentValue = this.value;
72
+ const newValue = selectedRadio.value;
73
+ if (newValue !== currentValue) {
74
+ this.value = newValue;
75
+ this.emitValueChange(ev);
76
+ }
77
+ else if (this.allowEmptySelection) {
78
+ this.value = undefined;
79
+ this.emitValueChange(ev);
80
+ }
81
+ }
82
+ };
83
+ }
84
+ valueChanged(value) {
85
+ this.setRadioTabindex(value);
86
+ this.ionValueChange.emit({ value });
87
+ }
88
+ componentDidLoad() {
89
+ /**
90
+ * There's an issue when assigning a value to the radio group
91
+ * within the Angular primary content (rendering within the
92
+ * app component template). When the template is isolated to a route,
93
+ * the value is assigned correctly.
94
+ * To address this issue, we need to ensure that the watcher is
95
+ * called after the component has finished loading,
96
+ * allowing the emit to be dispatched correctly.
97
+ */
98
+ this.valueChanged(this.value);
99
+ }
100
+ async connectedCallback() {
101
+ // Get the list header if it exists and set the id
102
+ // this is used to set aria-labelledby
103
+ const header = this.el.querySelector('ion-list-header') || this.el.querySelector('ion-item-divider');
104
+ if (header) {
105
+ const label = (this.label = header.querySelector('ion-label'));
106
+ if (label) {
107
+ this.labelId = label.id = this.name + '-lbl';
108
+ }
109
+ }
110
+ // Watch for class changes to update validation state.
111
+ if (typeof MutationObserver !== 'undefined') {
112
+ this.validationObserver = new MutationObserver(() => {
113
+ const newIsInvalid = checkInvalidState(this.el);
114
+ if (this.isInvalid !== newIsInvalid) {
115
+ this.isInvalid = newIsInvalid;
116
+ /**
117
+ * Screen readers tend to announce changes
118
+ * to `aria-describedby` when the attribute
119
+ * is changed during a blur event for a
120
+ * native form control.
121
+ * However, the announcement can be spotty
122
+ * when using a non-native form control
123
+ * and `forceUpdate()`.
124
+ * This is due to `forceUpdate()` internally
125
+ * rescheduling the DOM update to a lower
126
+ * priority queue regardless if it's called
127
+ * inside a Promise or not, thus causing
128
+ * the screen reader to potentially miss the
129
+ * change.
130
+ * By using a State variable inside a Promise,
131
+ * it guarantees a re-render immediately at
132
+ * a higher priority.
133
+ */
134
+ Promise.resolve().then(() => {
135
+ this.hintTextId = this.getHintTextId();
136
+ });
137
+ }
138
+ });
139
+ this.validationObserver.observe(this.el, {
140
+ attributes: true,
141
+ attributeFilter: ['class'],
142
+ });
143
+ }
144
+ // Always set initial state
145
+ this.isInvalid = checkInvalidState(this.el);
146
+ }
147
+ componentWillLoad() {
148
+ this.hintTextId = this.getHintTextId();
149
+ }
150
+ disconnectedCallback() {
151
+ // Clean up validation observer to prevent memory leaks.
152
+ if (this.validationObserver) {
153
+ this.validationObserver.disconnect();
154
+ this.validationObserver = undefined;
155
+ }
156
+ }
157
+ getRadios() {
158
+ return Array.from(this.el.querySelectorAll('ion-radio'));
159
+ }
160
+ /**
161
+ * Emits an `ionChange` event.
162
+ *
163
+ * This API should be called for user committed changes.
164
+ * This API should not be used for external value changes.
165
+ */
166
+ emitValueChange(event) {
167
+ const { value } = this;
168
+ this.ionChange.emit({ value, event });
169
+ }
170
+ onKeydown(ev) {
171
+ // We don't want the value to automatically change/emit when the radio group is part of a select interface
172
+ // as this will cause the interface to close when navigating through the radio group options
173
+ const inSelectInterface = !!this.el.closest('ion-select-popover') || !!this.el.closest('ion-select-modal');
174
+ if (ev.target && !this.el.contains(ev.target)) {
175
+ return;
176
+ }
177
+ // Get all radios inside of the radio group and then
178
+ // filter out disabled radios since we need to skip those
179
+ const radios = this.getRadios().filter((radio) => !radio.disabled);
180
+ // Only move the radio if the current focus is in the radio group
181
+ if (ev.target && radios.includes(ev.target)) {
182
+ const index = radios.findIndex((radio) => radio === ev.target);
183
+ const current = radios[index];
184
+ let next;
185
+ // If hitting arrow down or arrow right, move to the next radio
186
+ // If we're on the last radio, move to the first radio
187
+ if (['ArrowDown', 'ArrowRight'].includes(ev.key)) {
188
+ next = index === radios.length - 1 ? radios[0] : radios[index + 1];
189
+ }
190
+ // If hitting arrow up or arrow left, move to the previous radio
191
+ // If we're on the first radio, move to the last radio
192
+ if (['ArrowUp', 'ArrowLeft'].includes(ev.key)) {
193
+ next = index === 0 ? radios[radios.length - 1] : radios[index - 1];
194
+ }
195
+ if (next && radios.includes(next)) {
196
+ next.setFocus(ev);
197
+ if (!inSelectInterface) {
198
+ this.value = next.value;
199
+ this.emitValueChange(ev);
200
+ }
201
+ }
202
+ // Update the radio group value when a user presses the
203
+ // space bar on top of a selected radio
204
+ if ([' '].includes(ev.key)) {
205
+ const previousValue = this.value;
206
+ this.value = this.allowEmptySelection && this.value !== undefined ? undefined : current.value;
207
+ if (previousValue !== this.value || this.allowEmptySelection) {
208
+ /**
209
+ * Value change should only be emitted if the value is different,
210
+ * such as selecting a new radio with the space bar or if
211
+ * the radio group allows for empty selection and the user
212
+ * is deselecting a checked radio.
213
+ */
214
+ this.emitValueChange(ev);
215
+ }
216
+ // Prevent browsers from jumping
217
+ // to the bottom of the screen
218
+ ev.preventDefault();
219
+ }
220
+ }
221
+ }
222
+ /** @internal */
223
+ async setFocus() {
224
+ const radioToFocus = this.getRadios().find((r) => r.tabIndex !== -1);
225
+ radioToFocus === null || radioToFocus === void 0 ? void 0 : radioToFocus.setFocus();
226
+ }
227
+ /**
228
+ * Renders the helper text or error text values
229
+ */
230
+ renderHintText() {
231
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
232
+ const hasHintText = !!helperText || !!errorText;
233
+ if (!hasHintText) {
234
+ return;
235
+ }
236
+ return (h("div", { class: "radio-group-top" }, h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null)));
237
+ }
238
+ getHintTextId() {
239
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
240
+ if (isInvalid && errorText) {
241
+ return errorTextId;
242
+ }
243
+ if (helperText) {
244
+ return helperTextId;
245
+ }
246
+ return undefined;
247
+ }
248
+ render() {
249
+ const { label, labelId, el, name, value } = this;
250
+ const mode = getIonMode(this);
251
+ renderHiddenInput(true, el, name, value, false);
252
+ return (h(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), h("slot", { key: 'd683b01c1ba34fe843c4b320bce4661a117472a5' })));
253
+ }
254
+ get el() { return this; }
255
+ static get watchers() { return {
256
+ "value": ["valueChanged"]
257
+ }; }
258
+ static get style() { return {
259
+ ios: radioGroupIosCss,
260
+ md: radioGroupMdCss
261
+ }; }
262
+ }, [292, "ion-radio-group", {
263
+ "allowEmptySelection": [4, "allow-empty-selection"],
264
+ "compareWith": [1, "compare-with"],
265
+ "name": [1],
266
+ "value": [1032],
267
+ "helperText": [1, "helper-text"],
268
+ "errorText": [1, "error-text"],
269
+ "isInvalid": [32],
270
+ "hintTextId": [32],
271
+ "setFocus": [64]
272
+ }, [[4, "keydown", "onKeydown"]], {
273
+ "value": ["valueChanged"]
274
+ }]);
275
+ let radioGroupIds = 0;
276
+ function defineCustomElement() {
277
+ if (typeof customElements === "undefined") {
278
+ return;
279
+ }
280
+ const components = ["ion-radio-group"];
281
+ components.forEach(tagName => { switch (tagName) {
282
+ case "ion-radio-group":
283
+ if (!customElements.get(tagName)) {
284
+ customElements.define(tagName, RadioGroup);
285
+ }
286
+ break;
287
+ } });
288
+ }
289
+
290
+ export { RadioGroup as R, defineCustomElement as d };
@@ -0,0 +1,59 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { p as proxyCustomElement, H, h, d as Host } from './p-DWoUQeZ3.js';
5
+ import { b as getIonMode } from './p-Bxl5etF4.js';
6
+
7
+ const buttonsIosCss = ".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}";
8
+
9
+ const buttonsMdCss = ".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}";
10
+
11
+ const Buttons = /*@__PURE__*/ proxyCustomElement(class Buttons extends H {
12
+ constructor(registerHost) {
13
+ super();
14
+ if (registerHost !== false) {
15
+ this.__registerHost();
16
+ }
17
+ /**
18
+ * If true, buttons will disappear when its
19
+ * parent toolbar has fully collapsed if the toolbar
20
+ * is not the first toolbar. If the toolbar is the
21
+ * first toolbar, the buttons will be hidden and will
22
+ * only be shown once all toolbars have fully collapsed.
23
+ *
24
+ * Only applies in `ios` mode with `collapse` set to
25
+ * `true` on `ion-header`.
26
+ *
27
+ * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
28
+ */
29
+ this.collapse = false;
30
+ }
31
+ render() {
32
+ const mode = getIonMode(this);
33
+ return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
34
+ [mode]: true,
35
+ ['buttons-collapse']: this.collapse,
36
+ } }, h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
37
+ }
38
+ static get style() { return {
39
+ ios: buttonsIosCss,
40
+ md: buttonsMdCss
41
+ }; }
42
+ }, [294, "ion-buttons", {
43
+ "collapse": [4]
44
+ }]);
45
+ function defineCustomElement() {
46
+ if (typeof customElements === "undefined") {
47
+ return;
48
+ }
49
+ const components = ["ion-buttons"];
50
+ components.forEach(tagName => { switch (tagName) {
51
+ case "ion-buttons":
52
+ if (!customElements.get(tagName)) {
53
+ customElements.define(tagName, Buttons);
54
+ }
55
+ break;
56
+ } });
57
+ }
58
+
59
+ export { Buttons as B, defineCustomElement as d };
@@ -0,0 +1,306 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { d as doc } from './p-ZjP4CjeZ.js';
5
+ import { MENU_BACK_BUTTON_PRIORITY } from './p-Boi6hecl.js';
6
+ import { f as printIonWarning } from './p-DWoUQeZ3.js';
7
+ import { c as componentOnReady } from './p-D5hF6rwn.js';
8
+ import { b as getIonMode } from './p-Bxl5etF4.js';
9
+ import { c as createAnimation } from './p-CL12ApCQ.js';
10
+
11
+ /**
12
+ * baseAnimation
13
+ * Base class which is extended by the various types. Each
14
+ * type will provide their own animations for open and close
15
+ * and registers itself with Menu.
16
+ */
17
+ const baseAnimation = (isIos) => {
18
+ // https://material.io/guidelines/motion/movement.html#movement-movement-in-out-of-screen-bounds
19
+ // https://material.io/guidelines/motion/duration-easing.html#duration-easing-natural-easing-curves
20
+ /**
21
+ * "Apply the sharp curve to items temporarily leaving the screen that may return
22
+ * from the same exit point. When they return, use the deceleration curve. On mobile,
23
+ * this transition typically occurs over 300ms" -- MD Motion Guide
24
+ */
25
+ return createAnimation().duration(isIos ? 400 : 300);
26
+ };
27
+
28
+ /**
29
+ * Menu Overlay Type
30
+ * The menu slides over the content. The content
31
+ * itself, which is under the menu, does not move.
32
+ */
33
+ const menuOverlayAnimation = (menu) => {
34
+ let closedX;
35
+ let openedX;
36
+ const width = menu.width + 8;
37
+ const menuAnimation = createAnimation();
38
+ const backdropAnimation = createAnimation();
39
+ if (menu.isEndSide) {
40
+ // right side
41
+ closedX = width + 'px';
42
+ openedX = '0px';
43
+ }
44
+ else {
45
+ // left side
46
+ closedX = -width + 'px';
47
+ openedX = '0px';
48
+ }
49
+ menuAnimation.addElement(menu.menuInnerEl).fromTo('transform', `translateX(${closedX})`, `translateX(${openedX})`);
50
+ const mode = getIonMode(menu);
51
+ const isIos = mode === 'ios';
52
+ const opacity = isIos ? 0.2 : 0.25;
53
+ backdropAnimation.addElement(menu.backdropEl).fromTo('opacity', 0.01, opacity);
54
+ return baseAnimation(isIos).addAnimation([menuAnimation, backdropAnimation]);
55
+ };
56
+
57
+ /**
58
+ * Menu Push Type
59
+ * The content slides over to reveal the menu underneath.
60
+ * The menu itself also slides over to reveal its bad self.
61
+ */
62
+ const menuPushAnimation = (menu) => {
63
+ let contentOpenedX;
64
+ let menuClosedX;
65
+ const mode = getIonMode(menu);
66
+ const width = menu.width;
67
+ if (menu.isEndSide) {
68
+ contentOpenedX = -width + 'px';
69
+ menuClosedX = width + 'px';
70
+ }
71
+ else {
72
+ contentOpenedX = width + 'px';
73
+ menuClosedX = -width + 'px';
74
+ }
75
+ const menuAnimation = createAnimation()
76
+ .addElement(menu.menuInnerEl)
77
+ .fromTo('transform', `translateX(${menuClosedX})`, 'translateX(0px)');
78
+ const contentAnimation = createAnimation()
79
+ .addElement(menu.contentEl)
80
+ .fromTo('transform', 'translateX(0px)', `translateX(${contentOpenedX})`);
81
+ const backdropAnimation = createAnimation().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);
82
+ return baseAnimation(mode === 'ios').addAnimation([menuAnimation, contentAnimation, backdropAnimation]);
83
+ };
84
+
85
+ /**
86
+ * Menu Reveal Type
87
+ * The content slides over to reveal the menu underneath.
88
+ * The menu itself, which is under the content, does not move.
89
+ */
90
+ const menuRevealAnimation = (menu) => {
91
+ const mode = getIonMode(menu);
92
+ const openedX = menu.width * (menu.isEndSide ? -1 : 1) + 'px';
93
+ const contentOpen = createAnimation()
94
+ .addElement(menu.contentEl) // REVIEW
95
+ .fromTo('transform', 'translateX(0px)', `translateX(${openedX})`);
96
+ return baseAnimation(mode === 'ios').addAnimation(contentOpen);
97
+ };
98
+
99
+ const createMenuController = () => {
100
+ const menuAnimations = new Map();
101
+ const menus = [];
102
+ const open = async (menu) => {
103
+ const menuEl = await get(menu, true);
104
+ if (menuEl) {
105
+ return menuEl.open();
106
+ }
107
+ return false;
108
+ };
109
+ const close = async (menu) => {
110
+ const menuEl = await (menu !== undefined ? get(menu, true) : getOpen());
111
+ if (menuEl !== undefined) {
112
+ return menuEl.close();
113
+ }
114
+ return false;
115
+ };
116
+ const toggle = async (menu) => {
117
+ const menuEl = await get(menu, true);
118
+ if (menuEl) {
119
+ return menuEl.toggle();
120
+ }
121
+ return false;
122
+ };
123
+ const enable = async (shouldEnable, menu) => {
124
+ const menuEl = await get(menu);
125
+ if (menuEl) {
126
+ menuEl.disabled = !shouldEnable;
127
+ }
128
+ return menuEl;
129
+ };
130
+ const swipeGesture = async (shouldEnable, menu) => {
131
+ const menuEl = await get(menu);
132
+ if (menuEl) {
133
+ menuEl.swipeGesture = shouldEnable;
134
+ }
135
+ return menuEl;
136
+ };
137
+ const isOpen = async (menu) => {
138
+ if (menu != null) {
139
+ const menuEl = await get(menu);
140
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
141
+ return menuEl !== undefined && menuEl.isOpen();
142
+ }
143
+ else {
144
+ const menuEl = await getOpen();
145
+ return menuEl !== undefined;
146
+ }
147
+ };
148
+ const isEnabled = async (menu) => {
149
+ const menuEl = await get(menu);
150
+ if (menuEl) {
151
+ return !menuEl.disabled;
152
+ }
153
+ return false;
154
+ };
155
+ /**
156
+ * Finds and returns the menu specified by "menu" if registered.
157
+ * @param menu - The side or ID of the desired menu
158
+ * @param logOnMultipleSideMenus - If true, this function will log a warning
159
+ * if "menu" is a side but multiple menus on the same side were found. Since this function
160
+ * is used in multiple places, we default this log to false so that the calling
161
+ * functions can choose whether or not it is appropriate to log this warning.
162
+ */
163
+ const get = async (menu, logOnMultipleSideMenus = false) => {
164
+ await waitUntilReady();
165
+ if (menu === 'start' || menu === 'end') {
166
+ // there could be more than one menu on the same side
167
+ // so first try to get the enabled one
168
+ const menuRefs = menus.filter((m) => m.side === menu && !m.disabled);
169
+ if (menuRefs.length >= 1) {
170
+ if (menuRefs.length > 1 && logOnMultipleSideMenus) {
171
+ 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));
172
+ }
173
+ return menuRefs[0].el;
174
+ }
175
+ // didn't find a menu side that is enabled
176
+ // so try to get the first menu side found
177
+ const sideMenuRefs = menus.filter((m) => m.side === menu);
178
+ if (sideMenuRefs.length >= 1) {
179
+ if (sideMenuRefs.length > 1 && logOnMultipleSideMenus) {
180
+ 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));
181
+ }
182
+ return sideMenuRefs[0].el;
183
+ }
184
+ }
185
+ else if (menu != null) {
186
+ // the menuId was not left or right
187
+ // so try to get the menu by its "id"
188
+ return find((m) => m.menuId === menu);
189
+ }
190
+ // return the first enabled menu
191
+ const menuEl = find((m) => !m.disabled);
192
+ if (menuEl) {
193
+ return menuEl;
194
+ }
195
+ // get the first menu in the array, if one exists
196
+ return menus.length > 0 ? menus[0].el : undefined;
197
+ };
198
+ /**
199
+ * Get the instance of the opened menu. Returns `null` if a menu is not found.
200
+ */
201
+ const getOpen = async () => {
202
+ await waitUntilReady();
203
+ return _getOpenSync();
204
+ };
205
+ /**
206
+ * Get all menu instances.
207
+ */
208
+ const getMenus = async () => {
209
+ await waitUntilReady();
210
+ return getMenusSync();
211
+ };
212
+ /**
213
+ * Get whether or not a menu is animating. Returns `true` if any
214
+ * menu is currently animating.
215
+ */
216
+ const isAnimating = async () => {
217
+ await waitUntilReady();
218
+ return isAnimatingSync();
219
+ };
220
+ const registerAnimation = (name, animation) => {
221
+ menuAnimations.set(name, animation);
222
+ };
223
+ const _register = (menu) => {
224
+ if (menus.indexOf(menu) < 0) {
225
+ menus.push(menu);
226
+ }
227
+ };
228
+ const _unregister = (menu) => {
229
+ const index = menus.indexOf(menu);
230
+ if (index > -1) {
231
+ menus.splice(index, 1);
232
+ }
233
+ };
234
+ const _setOpen = async (menu, shouldOpen, animated, role) => {
235
+ if (isAnimatingSync()) {
236
+ return false;
237
+ }
238
+ if (shouldOpen) {
239
+ const openedMenu = await getOpen();
240
+ if (openedMenu && menu.el !== openedMenu) {
241
+ await openedMenu.setOpen(false, false);
242
+ }
243
+ }
244
+ return menu._setOpen(shouldOpen, animated, role);
245
+ };
246
+ const _createAnimation = (type, menuCmp) => {
247
+ const animationBuilder = menuAnimations.get(type); // TODO(FW-2832): type
248
+ if (!animationBuilder) {
249
+ throw new Error('animation not registered');
250
+ }
251
+ const animation = animationBuilder(menuCmp);
252
+ return animation;
253
+ };
254
+ const _getOpenSync = () => {
255
+ return find((m) => m._isOpen);
256
+ };
257
+ const getMenusSync = () => {
258
+ return menus.map((menu) => menu.el);
259
+ };
260
+ const isAnimatingSync = () => {
261
+ return menus.some((menu) => menu.isAnimating);
262
+ };
263
+ const find = (predicate) => {
264
+ const instance = menus.find(predicate);
265
+ if (instance !== undefined) {
266
+ return instance.el;
267
+ }
268
+ return undefined;
269
+ };
270
+ const waitUntilReady = () => {
271
+ return Promise.all(Array.from(document.querySelectorAll('ion-menu')).map((menu) => new Promise((resolve) => componentOnReady(menu, resolve))));
272
+ };
273
+ registerAnimation('reveal', menuRevealAnimation);
274
+ registerAnimation('push', menuPushAnimation);
275
+ registerAnimation('overlay', menuOverlayAnimation);
276
+ doc === null || doc === void 0 ? void 0 : doc.addEventListener('ionBackButton', (ev) => {
277
+ const openMenu = _getOpenSync();
278
+ if (openMenu) {
279
+ ev.detail.register(MENU_BACK_BUTTON_PRIORITY, () => {
280
+ return openMenu.close();
281
+ });
282
+ }
283
+ });
284
+ return {
285
+ registerAnimation,
286
+ get,
287
+ getMenus,
288
+ getOpen,
289
+ isEnabled,
290
+ swipeGesture,
291
+ isAnimating,
292
+ isOpen,
293
+ enable,
294
+ toggle,
295
+ close,
296
+ open,
297
+ _getOpenSync,
298
+ _createAnimation,
299
+ _register,
300
+ _unregister,
301
+ _setOpen,
302
+ };
303
+ };
304
+ const menuController = /*@__PURE__*/ createMenuController();
305
+
306
+ export { menuController as m };