@ionic/core 8.7.18 → 8.7.19-dev.11772655618.1af0949f

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 +2 -0
  2. package/components/index.js +1 -114
  3. package/components/ion-accordion-group.js +1 -268
  4. package/components/ion-accordion.js +1 -456
  5. package/components/ion-action-sheet.js +1 -6
  6. package/components/ion-alert.js +1 -6
  7. package/components/ion-app.js +1 -132
  8. package/components/ion-avatar.js +1 -41
  9. package/components/ion-back-button.js +1 -130
  10. package/components/ion-backdrop.js +1 -6
  11. package/components/ion-badge.js +1 -47
  12. package/components/ion-breadcrumb.js +1 -137
  13. package/components/ion-breadcrumbs.js +1 -164
  14. package/components/ion-button.js +1 -6
  15. package/components/ion-buttons.js +1 -6
  16. package/components/ion-card-content.js +1 -45
  17. package/components/ion-card-header.js +1 -56
  18. package/components/ion-card-subtitle.js +1 -48
  19. package/components/ion-card-title.js +1 -48
  20. package/components/ion-card.js +1 -107
  21. package/components/ion-checkbox.js +1 -6
  22. package/components/ion-chip.js +1 -66
  23. package/components/ion-col.js +1 -163
  24. package/components/ion-content.js +1 -6
  25. package/components/ion-datetime-button.js +1 -383
  26. package/components/ion-datetime.js +1 -2047
  27. package/components/ion-fab-button.js +1 -151
  28. package/components/ion-fab-list.js +1 -73
  29. package/components/ion-fab.js +1 -101
  30. package/components/ion-footer.js +1 -179
  31. package/components/ion-grid.js +1 -46
  32. package/components/ion-header.js +1 -6
  33. package/components/ion-icon.js +1 -6
  34. package/components/ion-img.js +1 -133
  35. package/components/ion-infinite-scroll-content.js +1 -69
  36. package/components/ion-infinite-scroll.js +1 -236
  37. package/components/ion-input-otp.js +1 -682
  38. package/components/ion-input-password-toggle.js +1 -128
  39. package/components/ion-input.js +1 -646
  40. package/components/ion-item-divider.js +1 -59
  41. package/components/ion-item-group.js +1 -46
  42. package/components/ion-item-option.js +1 -91
  43. package/components/ion-item-options.js +1 -73
  44. package/components/ion-item-sliding.js +1 -457
  45. package/components/ion-item.js +1 -6
  46. package/components/ion-label.js +1 -6
  47. package/components/ion-list-header.js +1 -6
  48. package/components/ion-list.js +1 -6
  49. package/components/ion-loading.js +1 -343
  50. package/components/ion-menu-button.js +1 -109
  51. package/components/ion-menu-toggle.js +1 -64
  52. package/components/ion-menu.js +1 -741
  53. package/components/ion-modal.js +1 -6
  54. package/components/ion-nav-link.js +1 -64
  55. package/components/ion-nav.js +1 -951
  56. package/components/ion-note.js +1 -47
  57. package/components/ion-picker-column-option.js +1 -6
  58. package/components/ion-picker-column.js +1 -6
  59. package/components/ion-picker-legacy-column.js +1 -6
  60. package/components/ion-picker-legacy.js +1 -342
  61. package/components/ion-picker.js +1 -6
  62. package/components/ion-popover.js +1 -6
  63. package/components/ion-progress-bar.js +1 -100
  64. package/components/ion-radio-group.js +1 -6
  65. package/components/ion-radio.js +1 -6
  66. package/components/ion-range.js +1 -844
  67. package/components/ion-refresher-content.js +1 -88
  68. package/components/ion-refresher.js +1 -750
  69. package/components/ion-reorder-group.js +1 -322
  70. package/components/ion-reorder.js +1 -60
  71. package/components/ion-ripple-effect.js +1 -6
  72. package/components/ion-route-redirect.js +1 -45
  73. package/components/ion-route.js +1 -74
  74. package/components/ion-router-link.js +1 -61
  75. package/components/ion-router-outlet.js +1 -226
  76. package/components/ion-router.js +1 -840
  77. package/components/ion-row.js +1 -36
  78. package/components/ion-searchbar.js +1 -540
  79. package/components/ion-segment-button.js +1 -173
  80. package/components/ion-segment-content.js +1 -35
  81. package/components/ion-segment-view.js +1 -142
  82. package/components/ion-segment.js +1 -602
  83. package/components/ion-select-modal.js +1 -6
  84. package/components/ion-select-option.js +1 -46
  85. package/components/ion-select-popover.js +1 -6
  86. package/components/ion-select.js +1 -1035
  87. package/components/ion-skeleton-text.js +1 -64
  88. package/components/ion-spinner.js +1 -6
  89. package/components/ion-split-pane.js +1 -190
  90. package/components/ion-tab-bar.js +1 -135
  91. package/components/ion-tab-button.js +1 -127
  92. package/components/ion-tab.js +1 -82
  93. package/components/ion-tabs.js +1 -204
  94. package/components/ion-text.js +1 -42
  95. package/components/ion-textarea.js +1 -554
  96. package/components/ion-thumbnail.js +1 -36
  97. package/components/ion-title.js +1 -6
  98. package/components/ion-toast.js +1 -938
  99. package/components/ion-toggle.js +1 -360
  100. package/components/ion-toolbar.js +1 -6
  101. package/components/p-1KVKSLu5.js +4 -0
  102. package/{dist/ionic/p-DUt5fQmA.js → components/p-9VcRUwdB.js} +1 -1
  103. package/components/p-ApmKVjaE.js +4 -0
  104. package/components/p-B-hirT0v.js +1 -35
  105. package/components/p-B6FQ0cKR.js +4 -0
  106. package/components/p-B6HaBl3o.js +4 -0
  107. package/components/p-B8b1Ukl9.js +4 -0
  108. package/components/p-BFxT89Wl.js +4 -0
  109. package/components/p-BJoMtgfR.js +4 -0
  110. package/components/p-BNAG-aVv.js +4 -0
  111. package/{dist/ionic/p-D-eFFUkA.js → components/p-BR3tZJmu.js} +1 -1
  112. package/{dist/ionic/p-D0dMcSkw.js → components/p-BS1TtEiJ.js} +1 -1
  113. package/components/p-BSB38Tek.js +4 -0
  114. package/components/p-BTEOs1at.js +1 -192
  115. package/components/p-BTeL5HCK.js +4 -0
  116. package/{dist/ionic/p-DbQ5QkTP.js → components/p-BUbsoBOV.js} +1 -1
  117. package/components/p-BVnB3eEn.js +4 -0
  118. package/components/p-BYDc3hSE.js +4 -0
  119. package/components/p-BagjAGC0.js +4 -0
  120. package/components/p-BegtE7nr.js +4 -0
  121. package/components/p-BgwEQWW6.js +4 -0
  122. package/components/p-Bk2zuNWT.js +4 -0
  123. package/components/p-BmVRXR1y.js +1 -72
  124. package/components/p-Bum_LjMh.js +4 -0
  125. package/components/p-BxwWvu-b.js +4 -0
  126. package/components/p-C4jPsTQa.js +4 -0
  127. package/components/p-C53feagD.js +1 -15
  128. package/{dist/ionic/p-CwgG81ZD.js → components/p-C59ryAuS.js} +1 -1
  129. package/components/p-C7AoMl7c.js +4 -0
  130. package/components/p-CBzELu-H.js +4 -0
  131. package/components/p-CDfQnFrd.js +4 -0
  132. package/components/p-CH0NYjKq.js +4 -0
  133. package/components/p-CIGNaXM1.js +1 -10
  134. package/components/p-CO7fmmxt.js +1 -29
  135. package/components/p-CU1SSH8_.js +4 -0
  136. package/components/p-CVF7ukTk.js +4 -0
  137. package/components/p-CgfaEEem.js +4 -0
  138. package/components/p-CgqKJg96.js +4 -0
  139. package/components/p-Cl0B-RWe.js +1 -452
  140. package/components/p-CneGxKsZ.js +4 -0
  141. package/components/p-CoA-aqGF.js +4 -0
  142. package/{dist/ionic/p-DdR6rpbR.js → components/p-Cq8cQ0NL.js} +1 -1
  143. package/components/p-Csw8xuz4.js +4 -0
  144. package/components/p-CtWGkNnJ.js +1 -162
  145. package/components/p-Cwv-vmkN.js +4 -0
  146. package/{dist/ionic/p-BYEqWnSg.js → components/p-Cy5XSfIk.js} +1 -1
  147. package/components/p-Cyxa_4PV.js +4 -0
  148. package/components/p-Cz5nLPGT.js +4 -0
  149. package/components/p-D13Eaw-8.js +1 -76
  150. package/components/p-D6NJwNJN.js +4 -0
  151. package/components/p-D6Ynv7Xh.js +1 -141
  152. package/components/p-DHsZWn1l.js +4 -0
  153. package/components/p-DJMZehmW.js +4 -0
  154. package/components/p-DJztqcrH.js +1 -14
  155. package/components/p-DYdpXONG.js +4 -0
  156. package/components/p-DgbT0exM.js +4 -0
  157. package/components/p-DiVJyqlX.js +1 -40
  158. package/components/p-Dtdm8lKC.js +1 -44
  159. package/components/p-YLXPWgVj.js +4 -0
  160. package/components/p-ZjP4CjeZ.js +1 -4
  161. package/{dist/ionic/p-DCv9sLH2.js → components/p-ak_d-z48.js} +1 -1
  162. package/components/p-cyNmxje6.js +1 -155
  163. package/components/p-fpbh6w3f.js +4 -0
  164. package/components/p-hHmYLOfE.js +1 -87
  165. package/components/p-kvaDs24J.js +4 -0
  166. package/components/p-vEbVo2hO.js +4 -0
  167. package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
  168. package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
  169. package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
  170. package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
  171. package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
  172. package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
  174. package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
  175. package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
  176. package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
  177. package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
  178. package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
  179. package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-CuMghsQ-.js → input-shims-Dl5cnc_e.js} +3 -3
  182. package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
  185. package/dist/cjs/ion-alert.cjs.entry.js +25 -17
  186. package/dist/cjs/ion-app_8.cjs.entry.js +48 -43
  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 +20 -14
  191. package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
  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 +75 -46
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
  199. package/dist/cjs/ion-img.cjs.entry.js +8 -6
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
  203. package/dist/cjs/ion-input.cjs.entry.js +21 -13
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +19 -17
  205. package/dist/cjs/ion-item_8.cjs.entry.js +48 -42
  206. package/dist/cjs/ion-loading.cjs.entry.js +18 -14
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
  208. package/dist/cjs/ion-modal.cjs.entry.js +237 -59
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +21 -15
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
  216. package/dist/cjs/ion-range.cjs.entry.js +205 -57
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +13 -8
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +17 -13
  226. package/dist/cjs/ion-select_3.cjs.entry.js +33 -24
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +20 -14
  233. package/dist/cjs/ion-toast.cjs.entry.js +21 -15
  234. package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
  235. package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
  240. package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
  241. package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
  242. package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
  243. package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +4 -2
  246. package/dist/collection/components/action-sheet/action-sheet.js +20 -10
  247. package/dist/collection/components/alert/alert.js +24 -12
  248. package/dist/collection/components/back-button/back-button.js +4 -2
  249. package/dist/collection/components/badge/badge.js +2 -1
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
  252. package/dist/collection/components/button/button.js +6 -3
  253. package/dist/collection/components/card/card.js +6 -3
  254. package/dist/collection/components/card-header/card-header.js +2 -1
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
  256. package/dist/collection/components/card-title/card-title.js +2 -1
  257. package/dist/collection/components/checkbox/checkbox.js +4 -2
  258. package/dist/collection/components/chip/chip.js +2 -1
  259. package/dist/collection/components/content/content.js +12 -7
  260. package/dist/collection/components/datetime/datetime.js +43 -22
  261. package/dist/collection/components/datetime-button/datetime-button.js +2 -1
  262. package/dist/collection/components/fab-button/fab-button.js +6 -3
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
  264. package/dist/collection/components/input/input.js +11 -6
  265. package/dist/collection/components/input-otp/input-otp.js +8 -4
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
  267. package/dist/collection/components/item/item.js +10 -5
  268. package/dist/collection/components/item-divider/item-divider.js +7 -3
  269. package/dist/collection/components/item-option/item-option.js +6 -3
  270. package/dist/collection/components/item-options/item-options.js +2 -1
  271. package/dist/collection/components/item-sliding/item-sliding.js +2 -1
  272. package/dist/collection/components/label/label.js +6 -3
  273. package/dist/collection/components/list-header/list-header.js +6 -3
  274. package/dist/collection/components/loading/loading.js +22 -11
  275. package/dist/collection/components/menu/menu.js +10 -5
  276. package/dist/collection/components/menu-button/menu-button.js +2 -1
  277. package/dist/collection/components/modal/gestures/sheet.js +120 -12
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
  279. package/dist/collection/components/modal/modal.js +127 -45
  280. package/dist/collection/components/nav/nav.js +89 -45
  281. package/dist/collection/components/nav-link/nav-link.js +9 -5
  282. package/dist/collection/components/note/note.js +2 -1
  283. package/dist/collection/components/picker/picker.js +2 -1
  284. package/dist/collection/components/picker-column/picker-column.js +6 -3
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
  286. package/dist/collection/components/picker-legacy/picker.js +24 -12
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
  288. package/dist/collection/components/popover/popover.js +33 -17
  289. package/dist/collection/components/progress-bar/progress-bar.js +2 -1
  290. package/dist/collection/components/radio/radio.js +2 -1
  291. package/dist/collection/components/radio-group/radio-group.js +6 -3
  292. package/dist/collection/components/range/range.js +214 -53
  293. package/dist/collection/components/refresher/refresher.js +73 -5
  294. package/dist/collection/components/refresher-content/refresher-content.js +8 -4
  295. package/dist/collection/components/reorder-group/reorder-group.js +6 -3
  296. package/dist/collection/components/route/route.js +4 -2
  297. package/dist/collection/components/router/router.js +10 -5
  298. package/dist/collection/components/router-link/router-link.js +6 -3
  299. package/dist/collection/components/router-outlet/router-outlet.js +18 -9
  300. package/dist/collection/components/searchbar/searchbar.js +11 -6
  301. package/dist/collection/components/segment/segment.js +10 -5
  302. package/dist/collection/components/segment-button/segment-button.js +4 -2
  303. package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
  304. package/dist/collection/components/segment-view/segment-view.js +30 -4
  305. package/dist/collection/components/segment-view/segment-view.md.css +2 -1
  306. package/dist/collection/components/select/select.js +17 -8
  307. package/dist/collection/components/select-modal/select-modal.js +27 -2
  308. package/dist/collection/components/select-popover/select-popover.js +2 -1
  309. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
  310. package/dist/collection/components/spinner/spinner.js +4 -2
  311. package/dist/collection/components/tab/tab.js +4 -2
  312. package/dist/collection/components/tab-bar/tab-bar.js +4 -2
  313. package/dist/collection/components/tab-button/tab-button.js +4 -2
  314. package/dist/collection/components/tabs/tabs.js +4 -2
  315. package/dist/collection/components/text/text.js +2 -1
  316. package/dist/collection/components/textarea/textarea.js +10 -7
  317. package/dist/collection/components/title/title.js +4 -2
  318. package/dist/collection/components/toast/toast.js +34 -17
  319. package/dist/collection/components/toggle/toggle.js +4 -2
  320. package/dist/collection/components/toolbar/toolbar.js +2 -1
  321. package/dist/docs.d.ts +37 -0
  322. package/dist/docs.json +1186 -389
  323. package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
  324. package/dist/esm/app-globals-DhZjtldk.js +9 -0
  325. package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
  326. package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
  327. package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
  328. package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
  329. package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
  330. package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
  331. package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
  332. package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
  333. package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
  334. package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
  335. package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
  336. package/dist/esm/index.js +12 -12
  337. package/dist/esm/{input-shims-D6H3ZaWt.js → input-shims-AaDhOpKN.js} +3 -3
  338. package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
  339. package/dist/esm/ion-accordion_2.entry.js +23 -15
  340. package/dist/esm/ion-action-sheet.entry.js +21 -15
  341. package/dist/esm/ion-alert.entry.js +25 -17
  342. package/dist/esm/ion-app_8.entry.js +48 -43
  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 +20 -14
  347. package/dist/esm/ion-button_2.entry.js +36 -18
  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 +75 -46
  354. package/dist/esm/ion-fab_3.entry.js +17 -13
  355. package/dist/esm/ion-img.entry.js +8 -6
  356. package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
  357. package/dist/esm/ion-input-otp.entry.js +16 -10
  358. package/dist/esm/ion-input-password-toggle.entry.js +9 -7
  359. package/dist/esm/ion-input.entry.js +21 -13
  360. package/dist/esm/ion-item-option_3.entry.js +19 -17
  361. package/dist/esm/ion-item_8.entry.js +48 -42
  362. package/dist/esm/ion-loading.entry.js +18 -14
  363. package/dist/esm/ion-menu_3.entry.js +30 -22
  364. package/dist/esm/ion-modal.entry.js +237 -59
  365. package/dist/esm/ion-nav_2.entry.js +14 -10
  366. package/dist/esm/ion-picker-column-option.entry.js +10 -8
  367. package/dist/esm/ion-picker-column.entry.js +11 -7
  368. package/dist/esm/ion-picker.entry.js +6 -6
  369. package/dist/esm/ion-popover.entry.js +21 -15
  370. package/dist/esm/ion-progress-bar.entry.js +7 -7
  371. package/dist/esm/ion-radio_2.entry.js +17 -13
  372. package/dist/esm/ion-range.entry.js +205 -57
  373. package/dist/esm/ion-refresher_2.entry.js +45 -14
  374. package/dist/esm/ion-reorder_2.entry.js +13 -11
  375. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  376. package/dist/esm/ion-route_4.entry.js +20 -10
  377. package/dist/esm/ion-searchbar.entry.js +22 -12
  378. package/dist/esm/ion-segment-content.entry.js +3 -3
  379. package/dist/esm/ion-segment-view.entry.js +13 -8
  380. package/dist/esm/ion-segment_2.entry.js +26 -16
  381. package/dist/esm/ion-select-modal.entry.js +17 -13
  382. package/dist/esm/ion-select_3.entry.js +33 -24
  383. package/dist/esm/ion-spinner.entry.js +4 -4
  384. package/dist/esm/ion-split-pane.entry.js +15 -9
  385. package/dist/esm/ion-tab-bar_2.entry.js +14 -12
  386. package/dist/esm/ion-tab_2.entry.js +10 -8
  387. package/dist/esm/ion-text.entry.js +4 -4
  388. package/dist/esm/ion-textarea.entry.js +20 -14
  389. package/dist/esm/ion-toast.entry.js +21 -15
  390. package/dist/esm/ion-toggle.entry.js +10 -8
  391. package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
  392. package/dist/esm/ionic.js +6 -6
  393. package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
  394. package/dist/esm/loader.js +5 -5
  395. package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
  396. package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
  397. package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
  398. package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
  399. package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
  400. package/dist/html.html-data.json +117 -109
  401. package/dist/ionic/index.esm.js +1 -1
  402. package/dist/ionic/ionic.esm.js +1 -1
  403. package/dist/ionic/p-031b76f7.entry.js +4 -0
  404. package/dist/ionic/p-045a6a42.entry.js +4 -0
  405. package/dist/ionic/p-07506134.entry.js +4 -0
  406. package/dist/ionic/p-084c25b2.entry.js +4 -0
  407. package/dist/ionic/p-0d8b5c38.entry.js +4 -0
  408. package/dist/ionic/p-16813ce7.entry.js +4 -0
  409. package/dist/ionic/p-16b65553.entry.js +4 -0
  410. package/dist/ionic/p-1b02923f.entry.js +4 -0
  411. package/dist/ionic/{p-5c8f7253.entry.js → p-1b169fb6.entry.js} +1 -1
  412. package/dist/ionic/{p-915b3e3d.entry.js → p-23fac490.entry.js} +1 -1
  413. package/dist/ionic/{p-b8551510.entry.js → p-294f4bb5.entry.js} +1 -1
  414. package/dist/ionic/p-2a68388b.entry.js +4 -0
  415. package/dist/ionic/p-2f5a8140.entry.js +4 -0
  416. package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
  417. package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
  418. package/dist/ionic/p-3e143d1d.entry.js +4 -0
  419. package/dist/ionic/p-4819b469.entry.js +4 -0
  420. package/dist/ionic/p-4dd5e8e0.entry.js +4 -0
  421. package/dist/ionic/p-51c11c47.entry.js +4 -0
  422. package/dist/ionic/p-53f750a5.entry.js +4 -0
  423. package/dist/ionic/{p-7cad388a.entry.js → p-6af16209.entry.js} +1 -1
  424. package/dist/ionic/{p-7f98e710.entry.js → p-6b701daa.entry.js} +1 -1
  425. package/dist/ionic/p-6b97f2a3.entry.js +4 -0
  426. package/dist/ionic/p-71e322f7.entry.js +4 -0
  427. package/dist/ionic/p-7620be24.entry.js +4 -0
  428. package/dist/ionic/p-771b27a5.entry.js +4 -0
  429. package/dist/ionic/{p-906bb44d.entry.js → p-7ca71c83.entry.js} +1 -1
  430. package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
  431. package/dist/ionic/p-96a2e768.entry.js +4 -0
  432. package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
  433. package/dist/ionic/p-9cbc6f1f.entry.js +4 -0
  434. package/dist/ionic/p-9cdbabbb.entry.js +4 -0
  435. package/dist/ionic/p-9eac4eb1.entry.js +4 -0
  436. package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
  437. package/dist/ionic/p-B8xlpH8p.js +4 -0
  438. package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
  439. package/dist/ionic/p-BW_TRJm8.js +4 -0
  440. package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
  441. package/dist/ionic/p-BvFYtOdE.js +4 -0
  442. package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
  443. package/dist/ionic/p-C0JvVFMv.js +4 -0
  444. package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
  445. package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
  446. package/dist/ionic/{p-MUoJJJwd.js → p-CYvM5g3q.js} +1 -1
  447. package/dist/ionic/p-CmFz1Mjc.js +4 -0
  448. package/dist/ionic/p-CtA-yJYy.js +4 -0
  449. package/dist/ionic/p-D8HJQ1qq.js +4 -0
  450. package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
  451. package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
  452. package/dist/ionic/p-DTPR1Wpn.js +4 -0
  453. package/dist/ionic/p-DjriolRs.js +4 -0
  454. package/dist/ionic/p-DtVZDHlS.js +4 -0
  455. package/dist/ionic/p-IGIE5vDm.js +5 -0
  456. package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
  457. package/dist/ionic/p-a805674e.entry.js +4 -0
  458. package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
  459. package/dist/ionic/p-aa47f46e.entry.js +4 -0
  460. package/dist/ionic/{p-2668188b.entry.js → p-b325a113.entry.js} +1 -1
  461. package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
  462. package/dist/ionic/p-b6e0ff03.entry.js +4 -0
  463. package/dist/ionic/{p-6f37536a.entry.js → p-bcaa827e.entry.js} +1 -1
  464. package/dist/ionic/{p-fb0271ae.entry.js → p-c3cce9d8.entry.js} +1 -1
  465. package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
  466. package/dist/ionic/p-d4e8b473.entry.js +4 -0
  467. package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
  468. package/dist/ionic/p-e6c5f060.entry.js +4 -0
  469. package/dist/ionic/{p-652318c3.entry.js → p-e6cedcd7.entry.js} +1 -1
  470. package/dist/ionic/{p-fbb00634.entry.js → p-e863ffe8.entry.js} +1 -1
  471. package/dist/ionic/{p-0ca0fe9c.entry.js → p-f2deaceb.entry.js} +1 -1
  472. package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
  473. package/dist/ionic/{p-bce86e56.entry.js → p-f8186550.entry.js} +1 -1
  474. package/dist/ionic/p-fdbc90d4.entry.js +4 -0
  475. package/dist/ionic/p-gbVXD275.js +4 -0
  476. package/dist/ionic/p-hNN3VvaC.js +4 -0
  477. package/dist/types/components/datetime/datetime.d.ts +10 -0
  478. package/dist/types/components/header/header.utils.d.ts +2 -1
  479. package/dist/types/components/item/item.d.ts +2 -0
  480. package/dist/types/components/item-divider/item-divider.d.ts +3 -0
  481. package/dist/types/components/item-option/item-option.d.ts +2 -0
  482. package/dist/types/components/list-header/list-header.d.ts +2 -0
  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 +25 -0
  486. package/dist/types/components/modal/modal.d.ts +22 -1
  487. package/dist/types/components/range/range-interface.d.ts +1 -0
  488. package/dist/types/components/range/range.d.ts +44 -4
  489. package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
  490. package/dist/types/components/refresher/refresher.d.ts +16 -3
  491. package/dist/types/components/segment-view/segment-view.d.ts +4 -0
  492. package/dist/types/components/select/select.d.ts +3 -0
  493. package/dist/types/components/select-modal/select-modal.d.ts +4 -0
  494. package/dist/types/components.d.ts +964 -191
  495. package/dist/types/interface.d.ts +2 -2
  496. package/dist/types/stencil-public-runtime.d.ts +126 -14
  497. package/dist/types/utils/gesture/listener.d.ts +2 -1
  498. package/hydrate/index.d.ts +12 -0
  499. package/hydrate/index.js +5632 -1421
  500. package/hydrate/index.mjs +5631 -1422
  501. package/package.json +2 -2
  502. package/components/p-B25GjpND.js +0 -71
  503. package/components/p-BANeLH_G.js +0 -290
  504. package/components/p-BBFQmhcD.js +0 -59
  505. package/components/p-BC-awmYt.js +0 -306
  506. package/components/p-BHbOsu99.js +0 -501
  507. package/components/p-BTlwXR9e.js +0 -73
  508. package/components/p-BcazQttQ.js +0 -612
  509. package/components/p-BdGshsIJ.js +0 -226
  510. package/components/p-BfS7vSpC.js +0 -147
  511. package/components/p-BhRFCLuX.js +0 -675
  512. package/components/p-Bhnhnzjz.js +0 -75
  513. package/components/p-BmcqD0EN.js +0 -153
  514. package/components/p-Boi6hecl.js +0 -115
  515. package/components/p-Bt_moUyl.js +0 -232
  516. package/components/p-Bxl5etF4.js +0 -146
  517. package/components/p-ByjmWt3s.js +0 -139
  518. package/components/p-C04oPyjT.js +0 -54
  519. package/components/p-C6dkQWq2.js +0 -1626
  520. package/components/p-CFZWrvIQ.js +0 -194
  521. package/components/p-CIJwkzL6.js +0 -195
  522. package/components/p-CL12ApCQ.js +0 -820
  523. package/components/p-CXJR56Oq.js +0 -564
  524. package/components/p-Cdm3dKWf.js +0 -108
  525. package/components/p-CslsoGzv.js +0 -192
  526. package/components/p-Cyd00tgZ.js +0 -167
  527. package/components/p-CzAJ3ArC.js +0 -380
  528. package/components/p-CzW34QBh.js +0 -12
  529. package/components/p-D0zXRwcr.js +0 -196
  530. package/components/p-D5hF6rwn.js +0 -339
  531. package/components/p-D8eD2iBA.js +0 -67
  532. package/components/p-DGOrLIyS.js +0 -481
  533. package/components/p-DK2Bn1Mc.js +0 -305
  534. package/components/p-DKRQWlK2.js +0 -598
  535. package/components/p-DNDUsygf.js +0 -128
  536. package/components/p-DTWZF6wg.js +0 -418
  537. package/components/p-DWoUQeZ3.js +0 -3012
  538. package/components/p-DX0w75a9.js +0 -420
  539. package/components/p-Dt8zaCLQ.js +0 -92
  540. package/components/p-DyFBFrV7.js +0 -264
  541. package/components/p-DyHPCMyn.js +0 -39
  542. package/components/p-LgLeKTkH.js +0 -112
  543. package/components/p-NhiRFRn9.js +0 -50
  544. package/components/p-OuiHmXO5.js +0 -646
  545. package/components/p-Wro9IPHE.js +0 -459
  546. package/components/p-aIWC4ZEV.js +0 -305
  547. package/components/p-c-XJ9XhZ.js +0 -915
  548. package/components/p-fVuFT3Wd.js +0 -78
  549. package/components/p-iyo0Toaz.js +0 -2822
  550. package/components/p-l_lso3Zl.js +0 -140
  551. package/components/p-mQp4lwQD.js +0 -1638
  552. package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
  553. package/dist/esm/app-globals-BDSf8fOA.js +0 -8
  554. package/dist/ionic/p-11518b31.entry.js +0 -4
  555. package/dist/ionic/p-221a3d8c.entry.js +0 -4
  556. package/dist/ionic/p-2ac254dc.entry.js +0 -4
  557. package/dist/ionic/p-2bd1ea35.entry.js +0 -4
  558. package/dist/ionic/p-30333874.entry.js +0 -4
  559. package/dist/ionic/p-31db96da.entry.js +0 -4
  560. package/dist/ionic/p-34642fa1.entry.js +0 -4
  561. package/dist/ionic/p-35696017.entry.js +0 -4
  562. package/dist/ionic/p-363d1209.entry.js +0 -4
  563. package/dist/ionic/p-46a38cfd.entry.js +0 -4
  564. package/dist/ionic/p-4eec1a5e.entry.js +0 -4
  565. package/dist/ionic/p-530fcd71.entry.js +0 -4
  566. package/dist/ionic/p-5d6fb6e3.entry.js +0 -4
  567. package/dist/ionic/p-66fbe052.entry.js +0 -4
  568. package/dist/ionic/p-7babec72.entry.js +0 -4
  569. package/dist/ionic/p-82d5bb3d.entry.js +0 -4
  570. package/dist/ionic/p-97eb0812.entry.js +0 -4
  571. package/dist/ionic/p-9b6d46f2.entry.js +0 -4
  572. package/dist/ionic/p-BKc55Xev.js +0 -4
  573. package/dist/ionic/p-Bmgaetn_.js +0 -4
  574. package/dist/ionic/p-C8IsBmNU.js +0 -5
  575. package/dist/ionic/p-CJxh_yLS.js +0 -4
  576. package/dist/ionic/p-DZRJwG4S.js +0 -4
  577. package/dist/ionic/p-a4a9f5ae.entry.js +0 -4
  578. package/dist/ionic/p-b0ebf9f8.entry.js +0 -4
  579. package/dist/ionic/p-be263062.entry.js +0 -4
  580. package/dist/ionic/p-c175d792.entry.js +0 -4
  581. package/dist/ionic/p-cc2a9936.entry.js +0 -4
  582. package/dist/ionic/p-cc45bcbc.entry.js +0 -4
  583. package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
  584. package/dist/ionic/p-e4c57008.entry.js +0 -4
  585. package/dist/ionic/p-e5d6d0f0.entry.js +0 -4
  586. package/dist/ionic/p-f1dfee25.entry.js +0 -4
  587. package/dist/ionic/p-f9f7b9db.entry.js +0 -4
@@ -1,744 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { p as proxyCustomElement, H, e as createEvent, c as config, j as printIonError, h, d as Host } from './p-DWoUQeZ3.js';
5
- import { g as getTimeGivenProgression } from './p-hHmYLOfE.js';
6
- import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './p-c-XJ9XhZ.js';
7
- import { G as GESTURE_CONTROLLER } from './p-BTEOs1at.js';
8
- import { shouldUseCloseWatcher } from './p-Boi6hecl.js';
9
- import { m as isEndSide, i as inheritAriaAttributes, n as assert, f as clamp } from './p-D5hF6rwn.js';
10
- import { m as menuController } from './p-BC-awmYt.js';
11
- import { b as getIonMode, a as isPlatform } from './p-Bxl5etF4.js';
12
- import { h as hostContext } from './p-DiVJyqlX.js';
13
- import { d as defineCustomElement$2 } from './p-Bhnhnzjz.js';
14
-
15
- const menuIosCss = ":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}";
16
-
17
- const menuMdCss = ":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}";
18
-
19
- const iosEasing = 'cubic-bezier(0.32,0.72,0,1)';
20
- const mdEasing = 'cubic-bezier(0.0,0.0,0.2,1)';
21
- const iosEasingReverse = 'cubic-bezier(1, 0, 0.68, 0.28)';
22
- const mdEasingReverse = 'cubic-bezier(0.4, 0, 0.6, 1)';
23
- const Menu = /*@__PURE__*/ proxyCustomElement(class Menu extends H {
24
- constructor(registerHost) {
25
- super();
26
- if (registerHost !== false) {
27
- this.__registerHost();
28
- }
29
- this.__attachShadow();
30
- this.ionWillOpen = createEvent(this, "ionWillOpen", 7);
31
- this.ionWillClose = createEvent(this, "ionWillClose", 7);
32
- this.ionDidOpen = createEvent(this, "ionDidOpen", 7);
33
- this.ionDidClose = createEvent(this, "ionDidClose", 7);
34
- this.ionMenuChange = createEvent(this, "ionMenuChange", 7);
35
- this.lastOnEnd = 0;
36
- this.blocker = GESTURE_CONTROLLER.createBlocker({ disableScroll: true });
37
- this.didLoad = false;
38
- /**
39
- * Flag used to determine if an open/close
40
- * operation was cancelled. For example, if
41
- * an app calls "menu.open" then disables the menu
42
- * part way through the animation, then this would
43
- * be considered a cancelled operation.
44
- */
45
- this.operationCancelled = false;
46
- this.isAnimating = false;
47
- this._isOpen = false;
48
- this.inheritedAttributes = {};
49
- this.handleFocus = (ev) => {
50
- /**
51
- * Overlays have their own focus trapping listener
52
- * so we do not want the two listeners to conflict
53
- * with each other. If the top-most overlay that is
54
- * open does not contain this ion-menu, then ion-menu's
55
- * focus trapping should not run.
56
- */
57
- const lastOverlay = getPresentedOverlay(document);
58
- if (lastOverlay && !lastOverlay.contains(this.el)) {
59
- return;
60
- }
61
- this.trapKeyboardFocus(ev, document);
62
- };
63
- /**
64
- * If true, then the menu should be
65
- * visible within a split pane.
66
- * If false, then the menu is hidden.
67
- * However, the menu-button/menu-toggle
68
- * components can be used to open the
69
- * menu.
70
- */
71
- this.isPaneVisible = false;
72
- this.isEndSide = false;
73
- /**
74
- * If `true`, the menu is disabled.
75
- */
76
- this.disabled = false;
77
- /**
78
- * Which side of the view the menu should be placed.
79
- */
80
- this.side = 'start';
81
- /**
82
- * If `true`, swiping the menu is enabled.
83
- */
84
- this.swipeGesture = true;
85
- /**
86
- * The edge threshold for dragging the menu open.
87
- * If a drag/swipe happens over this value, the menu is not triggered.
88
- */
89
- this.maxEdgeStart = 50;
90
- }
91
- typeChanged(type, oldType) {
92
- const contentEl = this.contentEl;
93
- if (contentEl) {
94
- if (oldType !== undefined) {
95
- contentEl.classList.remove(`menu-content-${oldType}`);
96
- }
97
- contentEl.classList.add(`menu-content-${type}`);
98
- contentEl.removeAttribute('style');
99
- }
100
- if (this.menuInnerEl) {
101
- // Remove effects of previous animations
102
- this.menuInnerEl.removeAttribute('style');
103
- }
104
- this.animation = undefined;
105
- }
106
- disabledChanged() {
107
- this.updateState();
108
- this.ionMenuChange.emit({
109
- disabled: this.disabled,
110
- open: this._isOpen,
111
- });
112
- }
113
- sideChanged() {
114
- this.isEndSide = isEndSide(this.side);
115
- /**
116
- * Menu direction animation is calculated based on the document direction.
117
- * If the document direction changes, we need to create a new animation.
118
- */
119
- this.animation = undefined;
120
- }
121
- swipeGestureChanged() {
122
- this.updateState();
123
- }
124
- async connectedCallback() {
125
- // TODO: connectedCallback is fired in CE build
126
- // before WC is defined. This needs to be fixed in Stencil.
127
- if (typeof customElements !== 'undefined' && customElements != null) {
128
- await customElements.whenDefined('ion-menu');
129
- }
130
- if (this.type === undefined) {
131
- this.type = config.get('menuType', 'overlay');
132
- }
133
- const content = this.contentId !== undefined ? document.getElementById(this.contentId) : null;
134
- if (content === null) {
135
- printIonError('[ion-menu] - Must have a "content" element to listen for drag events on.');
136
- return;
137
- }
138
- if (this.el.contains(content)) {
139
- printIonError(`[ion-menu] - The "contentId" should refer to the main view's ion-content, not the ion-content inside of the ion-menu.`);
140
- }
141
- this.contentEl = content;
142
- // add menu's content classes
143
- content.classList.add('menu-content');
144
- this.typeChanged(this.type, undefined);
145
- this.sideChanged();
146
- // register this menu with the app's menu controller
147
- menuController._register(this);
148
- this.menuChanged();
149
- this.gesture = (await import('./p-Cl0B-RWe.js')).createGesture({
150
- el: document,
151
- gestureName: 'menu-swipe',
152
- gesturePriority: 30,
153
- threshold: 10,
154
- blurOnStart: true,
155
- canStart: (ev) => this.canStart(ev),
156
- onWillStart: () => this.onWillStart(),
157
- onStart: () => this.onStart(),
158
- onMove: (ev) => this.onMove(ev),
159
- onEnd: (ev) => this.onEnd(ev),
160
- });
161
- this.updateState();
162
- }
163
- componentWillLoad() {
164
- this.inheritedAttributes = inheritAriaAttributes(this.el);
165
- }
166
- async componentDidLoad() {
167
- this.didLoad = true;
168
- /**
169
- * A menu inside of a split pane is assumed
170
- * to be a side pane.
171
- *
172
- * When the menu is loaded it needs to
173
- * see if it should be considered visible inside
174
- * of the split pane. If the split pane is
175
- * hidden then the menu should be too.
176
- */
177
- const splitPane = this.el.closest('ion-split-pane');
178
- if (splitPane !== null) {
179
- this.isPaneVisible = await splitPane.isVisible();
180
- }
181
- this.menuChanged();
182
- this.updateState();
183
- }
184
- menuChanged() {
185
- /**
186
- * Inform dependent components such as ion-menu-button
187
- * that the menu is ready. Note that we only want to do this
188
- * once the menu has been rendered which is why we check for didLoad.
189
- */
190
- if (this.didLoad) {
191
- this.ionMenuChange.emit({ disabled: this.disabled, open: this._isOpen });
192
- }
193
- }
194
- async disconnectedCallback() {
195
- /**
196
- * The menu should be closed when it is
197
- * unmounted from the DOM.
198
- * This is an async call, so we need to wait for
199
- * this to finish otherwise contentEl
200
- * will not have MENU_CONTENT_OPEN removed.
201
- */
202
- await this.close(false);
203
- this.blocker.destroy();
204
- menuController._unregister(this);
205
- if (this.animation) {
206
- this.animation.destroy();
207
- }
208
- if (this.gesture) {
209
- this.gesture.destroy();
210
- this.gesture = undefined;
211
- }
212
- this.animation = undefined;
213
- this.contentEl = undefined;
214
- }
215
- onSplitPaneChanged(ev) {
216
- const closestSplitPane = this.el.closest('ion-split-pane');
217
- if (closestSplitPane !== null && closestSplitPane === ev.target) {
218
- this.isPaneVisible = ev.detail.visible;
219
- this.updateState();
220
- }
221
- }
222
- onBackdropClick(ev) {
223
- // TODO(FW-2832): type (CustomEvent triggers errors which should be sorted)
224
- if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {
225
- const shouldClose = ev.composedPath ? !ev.composedPath().includes(this.menuInnerEl) : false;
226
- if (shouldClose) {
227
- ev.preventDefault();
228
- ev.stopPropagation();
229
- this.close(undefined, BACKDROP);
230
- }
231
- }
232
- }
233
- onKeydown(ev) {
234
- if (ev.key === 'Escape') {
235
- this.close(undefined, BACKDROP);
236
- }
237
- }
238
- /**
239
- * Returns `true` is the menu is open.
240
- */
241
- isOpen() {
242
- return Promise.resolve(this._isOpen);
243
- }
244
- /**
245
- * Returns `true` if the menu is active.
246
- *
247
- * A menu is active when it can be opened or closed, meaning it's enabled
248
- * and it's not part of a `ion-split-pane`.
249
- */
250
- isActive() {
251
- return Promise.resolve(this._isActive());
252
- }
253
- /**
254
- * Opens the menu. If the menu is already open or it can't be opened,
255
- * it returns `false`.
256
- *
257
- * @param animated If `true`, the menu will animate when opening.
258
- * If `false`, the menu will open instantly without animation.
259
- * Defaults to `true`.
260
- */
261
- open(animated = true) {
262
- return this.setOpen(true, animated);
263
- }
264
- /**
265
- * Closes the menu. If the menu is already closed or it can't be closed,
266
- * it returns `false`.
267
- *
268
- * @param animated If `true`, the menu will animate when closing. If `false`,
269
- * the menu will close instantly without animation. Defaults to `true`.
270
- * @param role The role of the element that is closing the menu.
271
- * This can be useful in a button handler for determining which button was
272
- * clicked to close the menu. Some examples include:
273
- * `"cancel"`, `"destructive"`, `"selected"`, and `"backdrop"`.
274
- */
275
- close(animated = true, role) {
276
- return this.setOpen(false, animated, role);
277
- }
278
- /**
279
- * Toggles the menu. If the menu is already open, it will try to close,
280
- * otherwise it will try to open it.
281
- * If the operation can't be completed successfully, it returns `false`.
282
- *
283
- * @param animated If `true`, the menu will animate when opening/closing.
284
- * If `false`, the menu will open/close instantly without animation.
285
- * Defaults to `true`.
286
- */
287
- toggle(animated = true) {
288
- return this.setOpen(!this._isOpen, animated);
289
- }
290
- /**
291
- * Opens or closes the menu.
292
- * If the operation can't be completed successfully, it returns `false`.
293
- *
294
- * @param shouldOpen If `true`, the menu will open. If `false`, the menu
295
- * will close.
296
- * @param animated If `true`, the menu will animate when opening/closing.
297
- * If `false`, the menu will open/close instantly without animation.
298
- * @param role The role of the element that is closing the menu.
299
- */
300
- setOpen(shouldOpen, animated = true, role) {
301
- var _a;
302
- // Blur the active element to prevent it from being kept focused inside an element that will be set with aria-hidden="true"
303
- (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.blur();
304
- return menuController._setOpen(this, shouldOpen, animated, role);
305
- }
306
- trapKeyboardFocus(ev, doc) {
307
- const target = ev.target;
308
- if (!target) {
309
- return;
310
- }
311
- /**
312
- * If the target is inside the menu contents, let the browser
313
- * focus as normal and keep a log of the last focused element.
314
- */
315
- if (this.el.contains(target)) {
316
- this.lastFocus = target;
317
- }
318
- else {
319
- /**
320
- * Otherwise, we are about to have focus go out of the menu.
321
- * Wrap the focus to either the first or last element.
322
- */
323
- const { el } = this;
324
- /**
325
- * Once we call `focusFirstDescendant`, another focus event
326
- * will fire, which will cause `lastFocus` to be updated
327
- * before we can run the code after that. We cache the value
328
- * here to avoid that.
329
- */
330
- focusFirstDescendant(el);
331
- /**
332
- * If the cached last focused element is the same as the now-
333
- * active element, that means the user was on the first element
334
- * already and pressed Shift + Tab, so we need to wrap to the
335
- * last descendant.
336
- */
337
- if (this.lastFocus === doc.activeElement) {
338
- focusLastDescendant(el);
339
- }
340
- }
341
- }
342
- async _setOpen(shouldOpen, animated = true, role) {
343
- // If the menu is disabled or it is currently being animated, let's do nothing
344
- if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {
345
- return false;
346
- }
347
- this.beforeAnimation(shouldOpen, role);
348
- await this.loadAnimation();
349
- await this.startAnimation(shouldOpen, animated);
350
- /**
351
- * If the animation was cancelled then
352
- * return false because the operation
353
- * did not succeed.
354
- */
355
- if (this.operationCancelled) {
356
- this.operationCancelled = false;
357
- return false;
358
- }
359
- this.afterAnimation(shouldOpen, role);
360
- return true;
361
- }
362
- async loadAnimation() {
363
- // Menu swipe animation takes the menu's inner width as parameter,
364
- // If `offsetWidth` changes, we need to create a new animation.
365
- const width = this.menuInnerEl.offsetWidth;
366
- /**
367
- * Menu direction animation is calculated based on the document direction.
368
- * If the document direction changes, we need to create a new animation.
369
- */
370
- const isEndSide$1 = isEndSide(this.side);
371
- if (width === this.width && this.animation !== undefined && isEndSide$1 === this.isEndSide) {
372
- return;
373
- }
374
- this.width = width;
375
- this.isEndSide = isEndSide$1;
376
- // Destroy existing animation
377
- if (this.animation) {
378
- this.animation.destroy();
379
- this.animation = undefined;
380
- }
381
- // Create new animation
382
- const animation = (this.animation = await menuController._createAnimation(this.type, this));
383
- if (!config.getBoolean('animated', true)) {
384
- animation.duration(0);
385
- }
386
- animation.fill('both');
387
- }
388
- async startAnimation(shouldOpen, animated) {
389
- const isReversed = !shouldOpen;
390
- const mode = getIonMode(this);
391
- const easing = mode === 'ios' ? iosEasing : mdEasing;
392
- const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;
393
- const ani = this.animation
394
- .direction(isReversed ? 'reverse' : 'normal')
395
- .easing(isReversed ? easingReverse : easing);
396
- if (animated) {
397
- await ani.play();
398
- }
399
- else {
400
- ani.play({ sync: true });
401
- }
402
- /**
403
- * We run this after the play invocation
404
- * instead of using ani.onFinish so that
405
- * multiple onFinish callbacks do not get
406
- * run if an animation is played, stopped,
407
- * and then played again.
408
- */
409
- if (ani.getDirection() === 'reverse') {
410
- ani.direction('normal');
411
- }
412
- }
413
- _isActive() {
414
- return !this.disabled && !this.isPaneVisible;
415
- }
416
- canSwipe() {
417
- return this.swipeGesture && !this.isAnimating && this._isActive();
418
- }
419
- canStart(detail) {
420
- // Do not allow swipe gesture if a modal is open
421
- const isModalPresented = !!document.querySelector('ion-modal.show-modal');
422
- if (isModalPresented || !this.canSwipe()) {
423
- return false;
424
- }
425
- if (this._isOpen) {
426
- return true;
427
- }
428
- else if (menuController._getOpenSync()) {
429
- return false;
430
- }
431
- return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);
432
- }
433
- onWillStart() {
434
- this.beforeAnimation(!this._isOpen, GESTURE);
435
- return this.loadAnimation();
436
- }
437
- onStart() {
438
- if (!this.isAnimating || !this.animation) {
439
- assert(false, 'isAnimating has to be true');
440
- return;
441
- }
442
- // the cloned animation should not use an easing curve during seek
443
- this.animation.progressStart(true, this._isOpen ? 1 : 0);
444
- }
445
- onMove(detail) {
446
- if (!this.isAnimating || !this.animation) {
447
- assert(false, 'isAnimating has to be true');
448
- return;
449
- }
450
- const delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);
451
- const stepValue = delta / this.width;
452
- this.animation.progressStep(this._isOpen ? 1 - stepValue : stepValue);
453
- }
454
- onEnd(detail) {
455
- if (!this.isAnimating || !this.animation) {
456
- assert(false, 'isAnimating has to be true');
457
- return;
458
- }
459
- const isOpen = this._isOpen;
460
- const isEndSide = this.isEndSide;
461
- const delta = computeDelta(detail.deltaX, isOpen, isEndSide);
462
- const width = this.width;
463
- const stepValue = delta / width;
464
- const velocity = detail.velocityX;
465
- const z = width / 2.0;
466
- const shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);
467
- const shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);
468
- const shouldComplete = isOpen
469
- ? isEndSide
470
- ? shouldCompleteRight
471
- : shouldCompleteLeft
472
- : isEndSide
473
- ? shouldCompleteLeft
474
- : shouldCompleteRight;
475
- let shouldOpen = !isOpen && shouldComplete;
476
- if (isOpen && !shouldComplete) {
477
- shouldOpen = true;
478
- }
479
- this.lastOnEnd = detail.currentTime;
480
- // Account for rounding errors in JS
481
- let newStepValue = shouldComplete ? 0.001 : -1e-3;
482
- /**
483
- * stepValue can sometimes return a negative
484
- * value, but you can't have a negative time value
485
- * for the cubic bezier curve (at least with web animations)
486
- */
487
- const adjustedStepValue = stepValue < 0 ? 0.01 : stepValue;
488
- /**
489
- * Animation will be reversed here, so need to
490
- * reverse the easing curve as well
491
- *
492
- * Additionally, we need to account for the time relative
493
- * to the new easing curve, as `stepValue` is going to be given
494
- * in terms of a linear curve.
495
- */
496
- newStepValue +=
497
- getTimeGivenProgression([0, 0], [0.4, 0], [0.6, 1], [1, 1], clamp(0, adjustedStepValue, 0.9999))[0] || 0;
498
- const playTo = this._isOpen ? !shouldComplete : shouldComplete;
499
- this.animation
500
- .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')
501
- .onFinish(() => this.afterAnimation(shouldOpen, GESTURE), { oneTimeCallback: true })
502
- .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);
503
- }
504
- beforeAnimation(shouldOpen, role) {
505
- assert(!this.isAnimating, '_before() should not be called while animating');
506
- /**
507
- * When the menu is presented on an Android device, TalkBack's focus rings
508
- * may appear in the wrong position due to the transition (specifically
509
- * `transform` styles). This occurs because the focus rings are initially
510
- * displayed at the starting position of the elements before the transition
511
- * begins. This workaround ensures the focus rings do not appear in the
512
- * incorrect location.
513
- *
514
- * If this solution is applied to iOS devices, then it leads to a bug where
515
- * the overlays cannot be accessed by screen readers. This is due to
516
- * VoiceOver not being able to update the accessibility tree when the
517
- * `aria-hidden` is removed.
518
- */
519
- if (isPlatform('android')) {
520
- this.el.setAttribute('aria-hidden', 'true');
521
- }
522
- // this places the menu into the correct location before it animates in
523
- // this css class doesn't actually kick off any animations
524
- this.el.classList.add(SHOW_MENU);
525
- /**
526
- * We add a tabindex here so that focus trapping
527
- * still works even if the menu does not have
528
- * any focusable elements slotted inside. The
529
- * focus trapping utility will fallback to focusing
530
- * the menu so focus does not leave when the menu
531
- * is open.
532
- */
533
- this.el.setAttribute('tabindex', '0');
534
- if (this.backdropEl) {
535
- this.backdropEl.classList.add(SHOW_BACKDROP);
536
- }
537
- // add css class and hide content behind menu from screen readers
538
- if (this.contentEl) {
539
- this.contentEl.classList.add(MENU_CONTENT_OPEN);
540
- /**
541
- * When the menu is open and overlaying the main
542
- * content, the main content should not be announced
543
- * by the screenreader as the menu is the main
544
- * focus. This is useful with screenreaders that have
545
- * "read from top" gestures that read the entire
546
- * page from top to bottom when activated.
547
- * This should be done before the animation starts
548
- * so that users cannot accidentally scroll
549
- * the content while dragging a menu open.
550
- */
551
- this.contentEl.setAttribute('aria-hidden', 'true');
552
- }
553
- this.blocker.block();
554
- this.isAnimating = true;
555
- if (shouldOpen) {
556
- this.ionWillOpen.emit();
557
- }
558
- else {
559
- this.ionWillClose.emit({ role });
560
- }
561
- }
562
- afterAnimation(isOpen, role) {
563
- var _a;
564
- // keep opening/closing the menu disabled for a touch more yet
565
- // only add listeners/css if it's enabled and isOpen
566
- // and only remove listeners/css if it's not open
567
- // emit opened/closed events
568
- this._isOpen = isOpen;
569
- this.isAnimating = false;
570
- if (!this._isOpen) {
571
- this.blocker.unblock();
572
- }
573
- if (isOpen) {
574
- /**
575
- * When the menu is presented on an Android device, TalkBack's focus rings
576
- * may appear in the wrong position due to the transition (specifically
577
- * `transform` styles). The menu is hidden from screen readers during the
578
- * transition to prevent this. Once the transition is complete, the menu
579
- * is shown again.
580
- */
581
- if (isPlatform('android')) {
582
- this.el.removeAttribute('aria-hidden');
583
- }
584
- // emit open event
585
- this.ionDidOpen.emit();
586
- /**
587
- * Move focus to the menu to prepare focus trapping, as long as
588
- * it isn't already focused. Use the host element instead of the
589
- * first descendant to avoid the scroll position jumping around.
590
- */
591
- const focusedMenu = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest('ion-menu');
592
- if (focusedMenu !== this.el) {
593
- this.el.focus();
594
- }
595
- // start focus trapping
596
- document.addEventListener('focus', this.handleFocus, true);
597
- }
598
- else {
599
- this.el.removeAttribute('aria-hidden');
600
- // remove css classes and unhide content from screen readers
601
- this.el.classList.remove(SHOW_MENU);
602
- /**
603
- * Remove tabindex from the menu component
604
- * so that is cannot be tabbed to.
605
- */
606
- this.el.removeAttribute('tabindex');
607
- if (this.contentEl) {
608
- this.contentEl.classList.remove(MENU_CONTENT_OPEN);
609
- /**
610
- * Remove aria-hidden so screen readers
611
- * can announce the main content again
612
- * now that the menu is not the main focus.
613
- */
614
- this.contentEl.removeAttribute('aria-hidden');
615
- }
616
- if (this.backdropEl) {
617
- this.backdropEl.classList.remove(SHOW_BACKDROP);
618
- }
619
- if (this.animation) {
620
- this.animation.stop();
621
- }
622
- // emit close event
623
- this.ionDidClose.emit({ role });
624
- // undo focus trapping so multiple menus don't collide
625
- document.removeEventListener('focus', this.handleFocus, true);
626
- }
627
- }
628
- updateState() {
629
- const isActive = this._isActive();
630
- if (this.gesture) {
631
- this.gesture.enable(isActive && this.swipeGesture);
632
- }
633
- /**
634
- * If the menu is disabled but it is still open
635
- * then we should close the menu immediately.
636
- * Additionally, if the menu is in the process
637
- * of animating {open, close} and the menu is disabled
638
- * then it should still be closed immediately.
639
- */
640
- if (!isActive) {
641
- /**
642
- * It is possible to disable the menu while
643
- * it is mid-animation. When this happens, we
644
- * need to set the operationCancelled flag
645
- * so that this._setOpen knows to return false
646
- * and not run the "afterAnimation" callback.
647
- */
648
- if (this.isAnimating) {
649
- this.operationCancelled = true;
650
- }
651
- /**
652
- * If the menu is disabled then we should
653
- * forcibly close the menu even if it is open.
654
- */
655
- this.afterAnimation(false, GESTURE);
656
- }
657
- }
658
- render() {
659
- const { type, disabled, el, isPaneVisible, inheritedAttributes, side } = this;
660
- const mode = getIonMode(this);
661
- /**
662
- * If the Close Watcher is enabled then
663
- * the ionBackButton listener in the menu controller
664
- * will handle closing the menu when Escape is pressed.
665
- */
666
- return (h(Host, { key: '29ef73894e2795e4ce23e59888ffb87faf4dd543', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
667
- [mode]: true,
668
- [`menu-type-${type}`]: true,
669
- 'menu-enabled': !disabled,
670
- [`menu-side-${side}`]: true,
671
- 'menu-pane-visible': isPaneVisible,
672
- 'split-pane-side': hostContext('ion-split-pane', el),
673
- } }, h("div", { key: '22e44f7bd602ee0c96550f0dfc22ac81c0033ad6', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '7bbef92fe03bb3ce4d3981eb8535aab449aab2fc' })), h("ion-backdrop", { key: '9ab8d5b61563e16b212c71c03869d4fc23a0400b', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
674
- }
675
- get el() { return this; }
676
- static get watchers() { return {
677
- "type": ["typeChanged"],
678
- "disabled": ["disabledChanged"],
679
- "side": ["sideChanged"],
680
- "swipeGesture": ["swipeGestureChanged"]
681
- }; }
682
- static get style() { return {
683
- ios: menuIosCss,
684
- md: menuMdCss
685
- }; }
686
- }, [289, "ion-menu", {
687
- "contentId": [513, "content-id"],
688
- "menuId": [513, "menu-id"],
689
- "type": [1025],
690
- "disabled": [1028],
691
- "side": [513],
692
- "swipeGesture": [4, "swipe-gesture"],
693
- "maxEdgeStart": [2, "max-edge-start"],
694
- "isPaneVisible": [32],
695
- "isEndSide": [32],
696
- "isOpen": [64],
697
- "isActive": [64],
698
- "open": [64],
699
- "close": [64],
700
- "toggle": [64],
701
- "setOpen": [64]
702
- }, [[16, "ionSplitPaneVisible", "onSplitPaneChanged"], [2, "click", "onBackdropClick"]], {
703
- "type": ["typeChanged"],
704
- "disabled": ["disabledChanged"],
705
- "side": ["sideChanged"],
706
- "swipeGesture": ["swipeGestureChanged"]
707
- }]);
708
- const computeDelta = (deltaX, isOpen, isEndSide) => {
709
- return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);
710
- };
711
- const checkEdgeSide = (win, posX, isEndSide, maxEdgeStart) => {
712
- if (isEndSide) {
713
- return posX >= win.innerWidth - maxEdgeStart;
714
- }
715
- else {
716
- return posX <= maxEdgeStart;
717
- }
718
- };
719
- const SHOW_MENU = 'show-menu';
720
- const SHOW_BACKDROP = 'show-backdrop';
721
- const MENU_CONTENT_OPEN = 'menu-content-open';
722
- function defineCustomElement$1() {
723
- if (typeof customElements === "undefined") {
724
- return;
725
- }
726
- const components = ["ion-menu", "ion-backdrop"];
727
- components.forEach(tagName => { switch (tagName) {
728
- case "ion-menu":
729
- if (!customElements.get(tagName)) {
730
- customElements.define(tagName, Menu);
731
- }
732
- break;
733
- case "ion-backdrop":
734
- if (!customElements.get(tagName)) {
735
- defineCustomElement$2();
736
- }
737
- break;
738
- } });
739
- }
740
-
741
- const IonMenu = Menu;
742
- const defineCustomElement = defineCustomElement$1;
743
-
744
- export { IonMenu, defineCustomElement };
4
+ import{p as t,H as e,e as i,c as s,j as n,h as o,d as a,t as r}from"./p-BJoMtgfR.js";import{g as h}from"./p-hHmYLOfE.js";import{o as d,B as m,n as l,q as u,G as p}from"./p-Cq8cQ0NL.js";import{G as b}from"./p-BTEOs1at.js";import{shouldUseCloseWatcher as c}from"./p-vEbVo2hO.js";import{m as f,i as w,n as x,f as v}from"./p-DgbT0exM.js";import{m as g}from"./p-D6NJwNJN.js";import{b as y,a as k}from"./p-CDfQnFrd.js";import{h as C}from"./p-DiVJyqlX.js";import{d as j}from"./p-CoA-aqGF.js";const E=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.ionWillOpen=i(this,"ionWillOpen",7),this.ionWillClose=i(this,"ionWillClose",7),this.ionDidOpen=i(this,"ionDidOpen",7),this.ionDidClose=i(this,"ionDidClose",7),this.ionMenuChange=i(this,"ionMenuChange",7),this.lastOnEnd=0,this.blocker=b.createBlocker({disableScroll:!0}),this.didLoad=!1,this.operationCancelled=!1,this.isAnimating=!1,this._isOpen=!1,this.inheritedAttributes={},this.handleFocus=t=>{const e=d(document);e&&!e.contains(this.el)||this.trapKeyboardFocus(t,document)},this.isPaneVisible=!1,this.isEndSide=!1,this.disabled=!1,this.side="start",this.swipeGesture=!0,this.maxEdgeStart=50}typeChanged(t,e){const i=this.contentEl;i&&(void 0!==e&&i.classList.remove("menu-content-"+e),i.classList.add("menu-content-"+t),i.removeAttribute("style")),this.menuInnerEl&&this.menuInnerEl.removeAttribute("style"),this.animation=void 0}disabledChanged(){this.updateState(),this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}sideChanged(){this.isEndSide=f(this.side),this.animation=void 0}swipeGestureChanged(){this.updateState()}async connectedCallback(){"undefined"!=typeof customElements&&null!=customElements&&await customElements.whenDefined("ion-menu"),void 0===this.type&&(this.type=s.get("menuType","overlay"));const t=void 0!==this.contentId?document.getElementById(this.contentId):null;null!==t?(this.el.contains(t)&&n('[ion-menu] - The "contentId" should refer to the main view\'s ion-content, not the ion-content inside of the ion-menu.'),this.contentEl=t,t.classList.add("menu-content"),this.typeChanged(this.type,void 0),this.sideChanged(),g._register(this),this.menuChanged(),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:document,gestureName:"menu-swipe",gesturePriority:30,threshold:10,blurOnStart:!0,canStart:t=>this.canStart(t),onWillStart:()=>this.onWillStart(),onStart:()=>this.onStart(),onMove:t=>this.onMove(t),onEnd:t=>this.onEnd(t)}),this.updateState()):n('[ion-menu] - Must have a "content" element to listen for drag events on.')}componentWillLoad(){this.inheritedAttributes=w(this.el)}async componentDidLoad(){this.didLoad=!0;const t=this.el.closest("ion-split-pane");null!==t&&(this.isPaneVisible=await t.isVisible()),this.menuChanged(),this.updateState()}menuChanged(){this.didLoad&&this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}async disconnectedCallback(){await this.close(!1),this.blocker.destroy(),g._unregister(this),this.animation&&this.animation.destroy(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation=void 0,this.contentEl=void 0}onSplitPaneChanged(t){const e=this.el.closest("ion-split-pane");null!==e&&e===t.target&&(this.isPaneVisible=t.detail.visible,this.updateState())}onBackdropClick(t){this._isOpen&&this.lastOnEnd<t.timeStamp-100&&t.composedPath&&!t.composedPath().includes(this.menuInnerEl)&&(t.preventDefault(),t.stopPropagation(),this.close(void 0,m))}onKeydown(t){"Escape"===t.key&&this.close(void 0,m)}isOpen(){return Promise.resolve(this._isOpen)}isActive(){return Promise.resolve(this._isActive())}open(t=!0){return this.setOpen(!0,t)}close(t=!0,e){return this.setOpen(!1,t,e)}toggle(t=!0){return this.setOpen(!this._isOpen,t)}setOpen(t,e=!0,i){var s;return null===(s=document.activeElement)||void 0===s||s.blur(),g._setOpen(this,t,e,i)}trapKeyboardFocus(t,e){const i=t.target;if(i)if(this.el.contains(i))this.lastFocus=i;else{const{el:t}=this;l(t),this.lastFocus===e.activeElement&&u(t)}}async _setOpen(t,e=!0,i){return!(!this._isActive()||this.isAnimating||t===this._isOpen||(this.beforeAnimation(t,i),await this.loadAnimation(),await this.startAnimation(t,e),this.operationCancelled?(this.operationCancelled=!1,1):(this.afterAnimation(t,i),0)))}async loadAnimation(){const t=this.menuInnerEl.offsetWidth,e=f(this.side);if(t===this.width&&void 0!==this.animation&&e===this.isEndSide)return;this.width=t,this.isEndSide=e,this.animation&&(this.animation.destroy(),this.animation=void 0);const i=this.animation=await g._createAnimation(this.type,this);s.getBoolean("animated",!0)||i.duration(0),i.fill("both")}async startAnimation(t,e){const i=!t,s=y(this),n="ios"===s?"cubic-bezier(0.32,0.72,0,1)":"cubic-bezier(0.0,0.0,0.2,1)",o="ios"===s?"cubic-bezier(1, 0, 0.68, 0.28)":"cubic-bezier(0.4, 0, 0.6, 1)",a=this.animation.direction(i?"reverse":"normal").easing(i?o:n);e?await a.play():a.play({sync:!0}),"reverse"===a.getDirection()&&a.direction("normal")}_isActive(){return!this.disabled&&!this.isPaneVisible}canSwipe(){return this.swipeGesture&&!this.isAnimating&&this._isActive()}canStart(t){return!(document.querySelector("ion-modal.show-modal")||!this.canSwipe())&&(!!this._isOpen||!g._getOpenSync()&&z(window,t.currentX,this.isEndSide,this.maxEdgeStart))}onWillStart(){return this.beforeAnimation(!this._isOpen,p),this.loadAnimation()}onStart(){this.isAnimating&&this.animation?this.animation.progressStart(!0,this._isOpen?1:0):x(!1,"isAnimating has to be true")}onMove(t){if(!this.isAnimating||!this.animation)return void x(!1,"isAnimating has to be true");const e=S(t.deltaX,this._isOpen,this.isEndSide)/this.width;this.animation.progressStep(this._isOpen?1-e:e)}onEnd(t){if(!this.isAnimating||!this.animation)return void x(!1,"isAnimating has to be true");const e=this._isOpen,i=this.isEndSide,s=S(t.deltaX,e,i),n=this.width,o=s/n,a=t.velocityX,r=n/2,d=a>=0&&(a>.2||t.deltaX>r),m=a<=0&&(a<-.2||t.deltaX<-r),l=e?i?d:m:i?m:d;let u=!e&&l;e&&!l&&(u=!0),this.lastOnEnd=t.currentTime;let b=l?.001:-.001;b+=h([0,0],[.4,0],[.6,1],[1,1],v(0,o<0?.01:o,.9999))[0]||0;const c=this._isOpen?!l:l;this.animation.easing("cubic-bezier(0.4, 0.0, 0.6, 1)").onFinish((()=>this.afterAnimation(u,p)),{oneTimeCallback:!0}).progressEnd(c?1:0,this._isOpen?1-b:b,300)}beforeAnimation(t,e){x(!this.isAnimating,"_before() should not be called while animating"),k("android")&&this.el.setAttribute("aria-hidden","true"),this.el.classList.add(A),this.el.setAttribute("tabindex","0"),this.backdropEl&&this.backdropEl.classList.add(O),this.contentEl&&(this.contentEl.classList.add(G),this.contentEl.setAttribute("aria-hidden","true")),this.blocker.block(),this.isAnimating=!0,t?this.ionWillOpen.emit():this.ionWillClose.emit({role:e})}afterAnimation(t,e){var i;this._isOpen=t,this.isAnimating=!1,this._isOpen||this.blocker.unblock(),t?(k("android")&&this.el.removeAttribute("aria-hidden"),this.ionDidOpen.emit(),(null===(i=document.activeElement)||void 0===i?void 0:i.closest("ion-menu"))!==this.el&&this.el.focus(),document.addEventListener("focus",this.handleFocus,!0)):(this.el.removeAttribute("aria-hidden"),this.el.classList.remove(A),this.el.removeAttribute("tabindex"),this.contentEl&&(this.contentEl.classList.remove(G),this.contentEl.removeAttribute("aria-hidden")),this.backdropEl&&this.backdropEl.classList.remove(O),this.animation&&this.animation.stop(),this.ionDidClose.emit({role:e}),document.removeEventListener("focus",this.handleFocus,!0))}updateState(){const t=this._isActive();this.gesture&&this.gesture.enable(t&&this.swipeGesture),t||(this.isAnimating&&(this.operationCancelled=!0),this.afterAnimation(!1,p))}render(){const{type:t,disabled:e,el:i,isPaneVisible:s,inheritedAttributes:n,side:r}=this,h=y(this);return o(a,{key:"29ef73894e2795e4ce23e59888ffb87faf4dd543",onKeyDown:c()?null:this.onKeydown,role:"navigation","aria-label":n["aria-label"]||"menu",class:{[h]:!0,["menu-type-"+t]:!0,"menu-enabled":!e,["menu-side-"+r]:!0,"menu-pane-visible":s,"split-pane-side":C("ion-split-pane",i)}},o("div",{key:"22e44f7bd602ee0c96550f0dfc22ac81c0033ad6",class:"menu-inner",part:"container",ref:t=>this.menuInnerEl=t},o("slot",{key:"7bbef92fe03bb3ce4d3981eb8535aab449aab2fc"})),o("ion-backdrop",{key:"9ab8d5b61563e16b212c71c03869d4fc23a0400b",ref:t=>this.backdropEl=t,class:"menu-backdrop",tappable:!1,stopPropagation:!1,part:"backdrop"}))}get el(){return this}static get watchers(){return{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}}static get style(){return{ios:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}",md:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}"}}},[289,"ion-menu",{contentId:[513,"content-id"],menuId:[513,"menu-id"],type:[1025],disabled:[1028],side:[513],swipeGesture:[4,"swipe-gesture"],maxEdgeStart:[2,"max-edge-start"],isPaneVisible:[32],isEndSide:[32],isOpen:[64],isActive:[64],open:[64],close:[64],toggle:[64],setOpen:[64]},[[16,"ionSplitPaneVisible","onSplitPaneChanged"],[2,"click","onBackdropClick"]],{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}]),S=(t,e,i)=>Math.max(0,e!==i?-t:t),z=(t,e,i,s)=>i?e>=t.innerWidth-s:e<=s,A="show-menu",O="show-backdrop",G="menu-content-open",P=E,D=function(){"undefined"!=typeof customElements&&["ion-menu","ion-backdrop"].forEach((t=>{switch(t){case"ion-menu":customElements.get(r(t))||customElements.define(r(t),E);break;case"ion-backdrop":customElements.get(r(t))||j()}}))};export{P as IonMenu,D as defineCustomElement}