@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.
- package/components/index.d.ts +2 -0
- package/components/index.js +1 -114
- package/components/ion-accordion-group.js +1 -268
- package/components/ion-accordion.js +1 -456
- package/components/ion-action-sheet.js +1 -6
- package/components/ion-alert.js +1 -6
- package/components/ion-app.js +1 -132
- package/components/ion-avatar.js +1 -41
- package/components/ion-back-button.js +1 -130
- package/components/ion-backdrop.js +1 -6
- package/components/ion-badge.js +1 -47
- package/components/ion-breadcrumb.js +1 -137
- package/components/ion-breadcrumbs.js +1 -164
- package/components/ion-button.js +1 -6
- package/components/ion-buttons.js +1 -6
- package/components/ion-card-content.js +1 -45
- package/components/ion-card-header.js +1 -56
- package/components/ion-card-subtitle.js +1 -48
- package/components/ion-card-title.js +1 -48
- package/components/ion-card.js +1 -107
- package/components/ion-checkbox.js +1 -6
- package/components/ion-chip.js +1 -66
- package/components/ion-col.js +1 -163
- package/components/ion-content.js +1 -6
- package/components/ion-datetime-button.js +1 -383
- package/components/ion-datetime.js +1 -2047
- package/components/ion-fab-button.js +1 -151
- package/components/ion-fab-list.js +1 -73
- package/components/ion-fab.js +1 -101
- package/components/ion-footer.js +1 -179
- package/components/ion-grid.js +1 -46
- package/components/ion-header.js +1 -6
- package/components/ion-icon.js +1 -6
- package/components/ion-img.js +1 -133
- package/components/ion-infinite-scroll-content.js +1 -69
- package/components/ion-infinite-scroll.js +1 -236
- package/components/ion-input-otp.js +1 -682
- package/components/ion-input-password-toggle.js +1 -128
- package/components/ion-input.js +1 -646
- package/components/ion-item-divider.js +1 -59
- package/components/ion-item-group.js +1 -46
- package/components/ion-item-option.js +1 -91
- package/components/ion-item-options.js +1 -73
- package/components/ion-item-sliding.js +1 -457
- package/components/ion-item.js +1 -6
- package/components/ion-label.js +1 -6
- package/components/ion-list-header.js +1 -6
- package/components/ion-list.js +1 -6
- package/components/ion-loading.js +1 -343
- package/components/ion-menu-button.js +1 -109
- package/components/ion-menu-toggle.js +1 -64
- package/components/ion-menu.js +1 -741
- package/components/ion-modal.js +1 -6
- package/components/ion-nav-link.js +1 -64
- package/components/ion-nav.js +1 -951
- package/components/ion-note.js +1 -47
- package/components/ion-picker-column-option.js +1 -6
- package/components/ion-picker-column.js +1 -6
- package/components/ion-picker-legacy-column.js +1 -6
- package/components/ion-picker-legacy.js +1 -342
- package/components/ion-picker.js +1 -6
- package/components/ion-popover.js +1 -6
- package/components/ion-progress-bar.js +1 -100
- package/components/ion-radio-group.js +1 -6
- package/components/ion-radio.js +1 -6
- package/components/ion-range.js +1 -844
- package/components/ion-refresher-content.js +1 -88
- package/components/ion-refresher.js +1 -750
- package/components/ion-reorder-group.js +1 -322
- package/components/ion-reorder.js +1 -60
- package/components/ion-ripple-effect.js +1 -6
- package/components/ion-route-redirect.js +1 -45
- package/components/ion-route.js +1 -74
- package/components/ion-router-link.js +1 -61
- package/components/ion-router-outlet.js +1 -226
- package/components/ion-router.js +1 -840
- package/components/ion-row.js +1 -36
- package/components/ion-searchbar.js +1 -540
- package/components/ion-segment-button.js +1 -173
- package/components/ion-segment-content.js +1 -35
- package/components/ion-segment-view.js +1 -142
- package/components/ion-segment.js +1 -602
- package/components/ion-select-modal.js +1 -6
- package/components/ion-select-option.js +1 -46
- package/components/ion-select-popover.js +1 -6
- package/components/ion-select.js +1 -1035
- package/components/ion-skeleton-text.js +1 -64
- package/components/ion-spinner.js +1 -6
- package/components/ion-split-pane.js +1 -190
- package/components/ion-tab-bar.js +1 -135
- package/components/ion-tab-button.js +1 -127
- package/components/ion-tab.js +1 -82
- package/components/ion-tabs.js +1 -204
- package/components/ion-text.js +1 -42
- package/components/ion-textarea.js +1 -554
- package/components/ion-thumbnail.js +1 -36
- package/components/ion-title.js +1 -6
- package/components/ion-toast.js +1 -938
- package/components/ion-toggle.js +1 -360
- package/components/ion-toolbar.js +1 -6
- package/components/p-1KVKSLu5.js +4 -0
- package/{dist/ionic/p-DUt5fQmA.js → components/p-9VcRUwdB.js} +1 -1
- package/components/p-ApmKVjaE.js +4 -0
- package/components/p-B-hirT0v.js +1 -35
- package/components/p-B6FQ0cKR.js +4 -0
- package/components/p-B6HaBl3o.js +4 -0
- package/components/p-B8b1Ukl9.js +4 -0
- package/components/p-BFxT89Wl.js +4 -0
- package/components/p-BJoMtgfR.js +4 -0
- package/components/p-BNAG-aVv.js +4 -0
- package/{dist/ionic/p-D-eFFUkA.js → components/p-BR3tZJmu.js} +1 -1
- package/{dist/ionic/p-D0dMcSkw.js → components/p-BS1TtEiJ.js} +1 -1
- package/components/p-BSB38Tek.js +4 -0
- package/components/p-BTEOs1at.js +1 -192
- package/components/p-BTeL5HCK.js +4 -0
- package/{dist/ionic/p-DbQ5QkTP.js → components/p-BUbsoBOV.js} +1 -1
- package/components/p-BVnB3eEn.js +4 -0
- package/components/p-BYDc3hSE.js +4 -0
- package/components/p-BagjAGC0.js +4 -0
- package/components/p-BegtE7nr.js +4 -0
- package/components/p-BgwEQWW6.js +4 -0
- package/components/p-Bk2zuNWT.js +4 -0
- package/components/p-BmVRXR1y.js +1 -72
- package/components/p-Bum_LjMh.js +4 -0
- package/components/p-BxwWvu-b.js +4 -0
- package/components/p-C4jPsTQa.js +4 -0
- package/components/p-C53feagD.js +1 -15
- package/{dist/ionic/p-CwgG81ZD.js → components/p-C59ryAuS.js} +1 -1
- package/components/p-C7AoMl7c.js +4 -0
- package/components/p-CBzELu-H.js +4 -0
- package/components/p-CDfQnFrd.js +4 -0
- package/components/p-CH0NYjKq.js +4 -0
- package/components/p-CIGNaXM1.js +1 -10
- package/components/p-CO7fmmxt.js +1 -29
- package/components/p-CU1SSH8_.js +4 -0
- package/components/p-CVF7ukTk.js +4 -0
- package/components/p-CgfaEEem.js +4 -0
- package/components/p-CgqKJg96.js +4 -0
- package/components/p-Cl0B-RWe.js +1 -452
- package/components/p-CneGxKsZ.js +4 -0
- package/components/p-CoA-aqGF.js +4 -0
- package/{dist/ionic/p-DdR6rpbR.js → components/p-Cq8cQ0NL.js} +1 -1
- package/components/p-Csw8xuz4.js +4 -0
- package/components/p-CtWGkNnJ.js +1 -162
- package/components/p-Cwv-vmkN.js +4 -0
- package/{dist/ionic/p-BYEqWnSg.js → components/p-Cy5XSfIk.js} +1 -1
- package/components/p-Cyxa_4PV.js +4 -0
- package/components/p-Cz5nLPGT.js +4 -0
- package/components/p-D13Eaw-8.js +1 -76
- package/components/p-D6NJwNJN.js +4 -0
- package/components/p-D6Ynv7Xh.js +1 -141
- package/components/p-DHsZWn1l.js +4 -0
- package/components/p-DJMZehmW.js +4 -0
- package/components/p-DJztqcrH.js +1 -14
- package/components/p-DYdpXONG.js +4 -0
- package/components/p-DgbT0exM.js +4 -0
- package/components/p-DiVJyqlX.js +1 -40
- package/components/p-Dtdm8lKC.js +1 -44
- package/components/p-YLXPWgVj.js +4 -0
- package/components/p-ZjP4CjeZ.js +1 -4
- package/{dist/ionic/p-DCv9sLH2.js → components/p-ak_d-z48.js} +1 -1
- package/components/p-cyNmxje6.js +1 -155
- package/components/p-fpbh6w3f.js +4 -0
- package/components/p-hHmYLOfE.js +1 -87
- package/components/p-kvaDs24J.js +4 -0
- package/components/p-vEbVo2hO.js +4 -0
- package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
- package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
- package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
- package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
- package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
- package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
- package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
- package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
- package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
- package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
- package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
- package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
- package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-CuMghsQ-.js → input-shims-Dl5cnc_e.js} +3 -3
- package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
- package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
- package/dist/cjs/ion-alert.cjs.entry.js +25 -17
- package/dist/cjs/ion-app_8.cjs.entry.js +48 -43
- package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
- package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -14
- package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
- package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
- package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
- package/dist/cjs/ion-chip.cjs.entry.js +6 -6
- package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +75 -46
- package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
- package/dist/cjs/ion-img.cjs.entry.js +8 -6
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
- package/dist/cjs/ion-input.cjs.entry.js +21 -13
- package/dist/cjs/ion-item-option_3.cjs.entry.js +19 -17
- package/dist/cjs/ion-item_8.cjs.entry.js +48 -42
- package/dist/cjs/ion-loading.cjs.entry.js +18 -14
- package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
- package/dist/cjs/ion-modal.cjs.entry.js +237 -59
- package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
- package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
- package/dist/cjs/ion-picker.cjs.entry.js +6 -6
- package/dist/cjs/ion-popover.cjs.entry.js +21 -15
- package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
- package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
- package/dist/cjs/ion-range.cjs.entry.js +205 -57
- package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
- package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
- package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
- package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
- package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-view.cjs.entry.js +13 -8
- package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
- package/dist/cjs/ion-select-modal.cjs.entry.js +17 -13
- package/dist/cjs/ion-select_3.cjs.entry.js +33 -24
- package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
- package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
- package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
- package/dist/cjs/ion-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-textarea.cjs.entry.js +20 -14
- package/dist/cjs/ion-toast.cjs.entry.js +21 -15
- package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
- package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
- package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
- package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
- package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
- package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/accordion-group/accordion-group.js +4 -2
- package/dist/collection/components/action-sheet/action-sheet.js +20 -10
- package/dist/collection/components/alert/alert.js +24 -12
- package/dist/collection/components/back-button/back-button.js +4 -2
- package/dist/collection/components/badge/badge.js +2 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
- package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
- package/dist/collection/components/button/button.js +6 -3
- package/dist/collection/components/card/card.js +6 -3
- package/dist/collection/components/card-header/card-header.js +2 -1
- package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
- package/dist/collection/components/card-title/card-title.js +2 -1
- package/dist/collection/components/checkbox/checkbox.js +4 -2
- package/dist/collection/components/chip/chip.js +2 -1
- package/dist/collection/components/content/content.js +12 -7
- package/dist/collection/components/datetime/datetime.js +43 -22
- package/dist/collection/components/datetime-button/datetime-button.js +2 -1
- package/dist/collection/components/fab-button/fab-button.js +6 -3
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
- package/dist/collection/components/input/input.js +11 -6
- package/dist/collection/components/input-otp/input-otp.js +8 -4
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
- package/dist/collection/components/item/item.js +10 -5
- package/dist/collection/components/item-divider/item-divider.js +7 -3
- package/dist/collection/components/item-option/item-option.js +6 -3
- package/dist/collection/components/item-options/item-options.js +2 -1
- package/dist/collection/components/item-sliding/item-sliding.js +2 -1
- package/dist/collection/components/label/label.js +6 -3
- package/dist/collection/components/list-header/list-header.js +6 -3
- package/dist/collection/components/loading/loading.js +22 -11
- package/dist/collection/components/menu/menu.js +10 -5
- package/dist/collection/components/menu-button/menu-button.js +2 -1
- package/dist/collection/components/modal/gestures/sheet.js +120 -12
- package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
- package/dist/collection/components/modal/modal.js +127 -45
- package/dist/collection/components/nav/nav.js +89 -45
- package/dist/collection/components/nav-link/nav-link.js +9 -5
- package/dist/collection/components/note/note.js +2 -1
- package/dist/collection/components/picker/picker.js +2 -1
- package/dist/collection/components/picker-column/picker-column.js +6 -3
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
- package/dist/collection/components/picker-legacy/picker.js +24 -12
- package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
- package/dist/collection/components/popover/popover.js +33 -17
- package/dist/collection/components/progress-bar/progress-bar.js +2 -1
- package/dist/collection/components/radio/radio.js +2 -1
- package/dist/collection/components/radio-group/radio-group.js +6 -3
- package/dist/collection/components/range/range.js +214 -53
- package/dist/collection/components/refresher/refresher.js +73 -5
- package/dist/collection/components/refresher-content/refresher-content.js +8 -4
- package/dist/collection/components/reorder-group/reorder-group.js +6 -3
- package/dist/collection/components/route/route.js +4 -2
- package/dist/collection/components/router/router.js +10 -5
- package/dist/collection/components/router-link/router-link.js +6 -3
- package/dist/collection/components/router-outlet/router-outlet.js +18 -9
- package/dist/collection/components/searchbar/searchbar.js +11 -6
- package/dist/collection/components/segment/segment.js +10 -5
- package/dist/collection/components/segment-button/segment-button.js +4 -2
- package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
- package/dist/collection/components/segment-view/segment-view.js +30 -4
- package/dist/collection/components/segment-view/segment-view.md.css +2 -1
- package/dist/collection/components/select/select.js +17 -8
- package/dist/collection/components/select-modal/select-modal.js +27 -2
- package/dist/collection/components/select-popover/select-popover.js +2 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
- package/dist/collection/components/spinner/spinner.js +4 -2
- package/dist/collection/components/tab/tab.js +4 -2
- package/dist/collection/components/tab-bar/tab-bar.js +4 -2
- package/dist/collection/components/tab-button/tab-button.js +4 -2
- package/dist/collection/components/tabs/tabs.js +4 -2
- package/dist/collection/components/text/text.js +2 -1
- package/dist/collection/components/textarea/textarea.js +10 -7
- package/dist/collection/components/title/title.js +4 -2
- package/dist/collection/components/toast/toast.js +34 -17
- package/dist/collection/components/toggle/toggle.js +4 -2
- package/dist/collection/components/toolbar/toolbar.js +2 -1
- package/dist/docs.d.ts +37 -0
- package/dist/docs.json +1186 -389
- package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
- package/dist/esm/app-globals-DhZjtldk.js +9 -0
- package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
- package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
- package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
- package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
- package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
- package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
- package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
- package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
- package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
- package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
- package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
- package/dist/esm/index.js +12 -12
- package/dist/esm/{input-shims-D6H3ZaWt.js → input-shims-AaDhOpKN.js} +3 -3
- package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +23 -15
- package/dist/esm/ion-action-sheet.entry.js +21 -15
- package/dist/esm/ion-alert.entry.js +25 -17
- package/dist/esm/ion-app_8.entry.js +48 -43
- package/dist/esm/ion-avatar_3.entry.js +12 -12
- package/dist/esm/ion-back-button.entry.js +7 -7
- package/dist/esm/ion-backdrop.entry.js +6 -6
- package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
- package/dist/esm/ion-button_2.entry.js +36 -18
- package/dist/esm/ion-card_5.entry.js +23 -23
- package/dist/esm/ion-checkbox.entry.js +7 -7
- package/dist/esm/ion-chip.entry.js +6 -6
- package/dist/esm/ion-col_3.entry.js +8 -8
- package/dist/esm/ion-datetime-button.entry.js +8 -8
- package/dist/esm/ion-datetime_3.entry.js +75 -46
- package/dist/esm/ion-fab_3.entry.js +17 -13
- package/dist/esm/ion-img.entry.js +8 -6
- package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
- package/dist/esm/ion-input-otp.entry.js +16 -10
- package/dist/esm/ion-input-password-toggle.entry.js +9 -7
- package/dist/esm/ion-input.entry.js +21 -13
- package/dist/esm/ion-item-option_3.entry.js +19 -17
- package/dist/esm/ion-item_8.entry.js +48 -42
- package/dist/esm/ion-loading.entry.js +18 -14
- package/dist/esm/ion-menu_3.entry.js +30 -22
- package/dist/esm/ion-modal.entry.js +237 -59
- package/dist/esm/ion-nav_2.entry.js +14 -10
- package/dist/esm/ion-picker-column-option.entry.js +10 -8
- package/dist/esm/ion-picker-column.entry.js +11 -7
- package/dist/esm/ion-picker.entry.js +6 -6
- package/dist/esm/ion-popover.entry.js +21 -15
- package/dist/esm/ion-progress-bar.entry.js +7 -7
- package/dist/esm/ion-radio_2.entry.js +17 -13
- package/dist/esm/ion-range.entry.js +205 -57
- package/dist/esm/ion-refresher_2.entry.js +45 -14
- package/dist/esm/ion-reorder_2.entry.js +13 -11
- package/dist/esm/ion-ripple-effect.entry.js +4 -4
- package/dist/esm/ion-route_4.entry.js +20 -10
- package/dist/esm/ion-searchbar.entry.js +22 -12
- package/dist/esm/ion-segment-content.entry.js +3 -3
- package/dist/esm/ion-segment-view.entry.js +13 -8
- package/dist/esm/ion-segment_2.entry.js +26 -16
- package/dist/esm/ion-select-modal.entry.js +17 -13
- package/dist/esm/ion-select_3.entry.js +33 -24
- package/dist/esm/ion-spinner.entry.js +4 -4
- package/dist/esm/ion-split-pane.entry.js +15 -9
- package/dist/esm/ion-tab-bar_2.entry.js +14 -12
- package/dist/esm/ion-tab_2.entry.js +10 -8
- package/dist/esm/ion-text.entry.js +4 -4
- package/dist/esm/ion-textarea.entry.js +20 -14
- package/dist/esm/ion-toast.entry.js +21 -15
- package/dist/esm/ion-toggle.entry.js +10 -8
- package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
- package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
- package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
- package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
- package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
- package/dist/html.html-data.json +117 -109
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-031b76f7.entry.js +4 -0
- package/dist/ionic/p-045a6a42.entry.js +4 -0
- package/dist/ionic/p-07506134.entry.js +4 -0
- package/dist/ionic/p-084c25b2.entry.js +4 -0
- package/dist/ionic/p-0d8b5c38.entry.js +4 -0
- package/dist/ionic/p-16813ce7.entry.js +4 -0
- package/dist/ionic/p-16b65553.entry.js +4 -0
- package/dist/ionic/p-1b02923f.entry.js +4 -0
- package/dist/ionic/{p-5c8f7253.entry.js → p-1b169fb6.entry.js} +1 -1
- package/dist/ionic/{p-915b3e3d.entry.js → p-23fac490.entry.js} +1 -1
- package/dist/ionic/{p-b8551510.entry.js → p-294f4bb5.entry.js} +1 -1
- package/dist/ionic/p-2a68388b.entry.js +4 -0
- package/dist/ionic/p-2f5a8140.entry.js +4 -0
- package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
- package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
- package/dist/ionic/p-3e143d1d.entry.js +4 -0
- package/dist/ionic/p-4819b469.entry.js +4 -0
- package/dist/ionic/p-4dd5e8e0.entry.js +4 -0
- package/dist/ionic/p-51c11c47.entry.js +4 -0
- package/dist/ionic/p-53f750a5.entry.js +4 -0
- package/dist/ionic/{p-7cad388a.entry.js → p-6af16209.entry.js} +1 -1
- package/dist/ionic/{p-7f98e710.entry.js → p-6b701daa.entry.js} +1 -1
- package/dist/ionic/p-6b97f2a3.entry.js +4 -0
- package/dist/ionic/p-71e322f7.entry.js +4 -0
- package/dist/ionic/p-7620be24.entry.js +4 -0
- package/dist/ionic/p-771b27a5.entry.js +4 -0
- package/dist/ionic/{p-906bb44d.entry.js → p-7ca71c83.entry.js} +1 -1
- package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
- package/dist/ionic/p-96a2e768.entry.js +4 -0
- package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
- package/dist/ionic/p-9cbc6f1f.entry.js +4 -0
- package/dist/ionic/p-9cdbabbb.entry.js +4 -0
- package/dist/ionic/p-9eac4eb1.entry.js +4 -0
- package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
- package/dist/ionic/p-B8xlpH8p.js +4 -0
- package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
- package/dist/ionic/p-BW_TRJm8.js +4 -0
- package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
- package/dist/ionic/p-BvFYtOdE.js +4 -0
- package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
- package/dist/ionic/p-C0JvVFMv.js +4 -0
- package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
- package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
- package/dist/ionic/{p-MUoJJJwd.js → p-CYvM5g3q.js} +1 -1
- package/dist/ionic/p-CmFz1Mjc.js +4 -0
- package/dist/ionic/p-CtA-yJYy.js +4 -0
- package/dist/ionic/p-D8HJQ1qq.js +4 -0
- package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
- package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
- package/dist/ionic/p-DTPR1Wpn.js +4 -0
- package/dist/ionic/p-DjriolRs.js +4 -0
- package/dist/ionic/p-DtVZDHlS.js +4 -0
- package/dist/ionic/p-IGIE5vDm.js +5 -0
- package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
- package/dist/ionic/p-a805674e.entry.js +4 -0
- package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
- package/dist/ionic/p-aa47f46e.entry.js +4 -0
- package/dist/ionic/{p-2668188b.entry.js → p-b325a113.entry.js} +1 -1
- package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
- package/dist/ionic/p-b6e0ff03.entry.js +4 -0
- package/dist/ionic/{p-6f37536a.entry.js → p-bcaa827e.entry.js} +1 -1
- package/dist/ionic/{p-fb0271ae.entry.js → p-c3cce9d8.entry.js} +1 -1
- package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
- package/dist/ionic/p-d4e8b473.entry.js +4 -0
- package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
- package/dist/ionic/p-e6c5f060.entry.js +4 -0
- package/dist/ionic/{p-652318c3.entry.js → p-e6cedcd7.entry.js} +1 -1
- package/dist/ionic/{p-fbb00634.entry.js → p-e863ffe8.entry.js} +1 -1
- package/dist/ionic/{p-0ca0fe9c.entry.js → p-f2deaceb.entry.js} +1 -1
- package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
- package/dist/ionic/{p-bce86e56.entry.js → p-f8186550.entry.js} +1 -1
- package/dist/ionic/p-fdbc90d4.entry.js +4 -0
- package/dist/ionic/p-gbVXD275.js +4 -0
- package/dist/ionic/p-hNN3VvaC.js +4 -0
- package/dist/types/components/datetime/datetime.d.ts +10 -0
- package/dist/types/components/header/header.utils.d.ts +2 -1
- package/dist/types/components/item/item.d.ts +2 -0
- package/dist/types/components/item-divider/item-divider.d.ts +3 -0
- package/dist/types/components/item-option/item-option.d.ts +2 -0
- package/dist/types/components/list-header/list-header.d.ts +2 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
- package/dist/types/components/modal/modal-interface.d.ts +25 -0
- package/dist/types/components/modal/modal.d.ts +22 -1
- package/dist/types/components/range/range-interface.d.ts +1 -0
- package/dist/types/components/range/range.d.ts +44 -4
- package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
- package/dist/types/components/refresher/refresher.d.ts +16 -3
- package/dist/types/components/segment-view/segment-view.d.ts +4 -0
- package/dist/types/components/select/select.d.ts +3 -0
- package/dist/types/components/select-modal/select-modal.d.ts +4 -0
- package/dist/types/components.d.ts +964 -191
- package/dist/types/interface.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +126 -14
- package/dist/types/utils/gesture/listener.d.ts +2 -1
- package/hydrate/index.d.ts +12 -0
- package/hydrate/index.js +5632 -1421
- package/hydrate/index.mjs +5631 -1422
- package/package.json +2 -2
- package/components/p-B25GjpND.js +0 -71
- package/components/p-BANeLH_G.js +0 -290
- package/components/p-BBFQmhcD.js +0 -59
- package/components/p-BC-awmYt.js +0 -306
- package/components/p-BHbOsu99.js +0 -501
- package/components/p-BTlwXR9e.js +0 -73
- package/components/p-BcazQttQ.js +0 -612
- package/components/p-BdGshsIJ.js +0 -226
- package/components/p-BfS7vSpC.js +0 -147
- package/components/p-BhRFCLuX.js +0 -675
- package/components/p-Bhnhnzjz.js +0 -75
- package/components/p-BmcqD0EN.js +0 -153
- package/components/p-Boi6hecl.js +0 -115
- package/components/p-Bt_moUyl.js +0 -232
- package/components/p-Bxl5etF4.js +0 -146
- package/components/p-ByjmWt3s.js +0 -139
- package/components/p-C04oPyjT.js +0 -54
- package/components/p-C6dkQWq2.js +0 -1626
- package/components/p-CFZWrvIQ.js +0 -194
- package/components/p-CIJwkzL6.js +0 -195
- package/components/p-CL12ApCQ.js +0 -820
- package/components/p-CXJR56Oq.js +0 -564
- package/components/p-Cdm3dKWf.js +0 -108
- package/components/p-CslsoGzv.js +0 -192
- package/components/p-Cyd00tgZ.js +0 -167
- package/components/p-CzAJ3ArC.js +0 -380
- package/components/p-CzW34QBh.js +0 -12
- package/components/p-D0zXRwcr.js +0 -196
- package/components/p-D5hF6rwn.js +0 -339
- package/components/p-D8eD2iBA.js +0 -67
- package/components/p-DGOrLIyS.js +0 -481
- package/components/p-DK2Bn1Mc.js +0 -305
- package/components/p-DKRQWlK2.js +0 -598
- package/components/p-DNDUsygf.js +0 -128
- package/components/p-DTWZF6wg.js +0 -418
- package/components/p-DWoUQeZ3.js +0 -3012
- package/components/p-DX0w75a9.js +0 -420
- package/components/p-Dt8zaCLQ.js +0 -92
- package/components/p-DyFBFrV7.js +0 -264
- package/components/p-DyHPCMyn.js +0 -39
- package/components/p-LgLeKTkH.js +0 -112
- package/components/p-NhiRFRn9.js +0 -50
- package/components/p-OuiHmXO5.js +0 -646
- package/components/p-Wro9IPHE.js +0 -459
- package/components/p-aIWC4ZEV.js +0 -305
- package/components/p-c-XJ9XhZ.js +0 -915
- package/components/p-fVuFT3Wd.js +0 -78
- package/components/p-iyo0Toaz.js +0 -2822
- package/components/p-l_lso3Zl.js +0 -140
- package/components/p-mQp4lwQD.js +0 -1638
- package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
- package/dist/esm/app-globals-BDSf8fOA.js +0 -8
- package/dist/ionic/p-11518b31.entry.js +0 -4
- package/dist/ionic/p-221a3d8c.entry.js +0 -4
- package/dist/ionic/p-2ac254dc.entry.js +0 -4
- package/dist/ionic/p-2bd1ea35.entry.js +0 -4
- package/dist/ionic/p-30333874.entry.js +0 -4
- package/dist/ionic/p-31db96da.entry.js +0 -4
- package/dist/ionic/p-34642fa1.entry.js +0 -4
- package/dist/ionic/p-35696017.entry.js +0 -4
- package/dist/ionic/p-363d1209.entry.js +0 -4
- package/dist/ionic/p-46a38cfd.entry.js +0 -4
- package/dist/ionic/p-4eec1a5e.entry.js +0 -4
- package/dist/ionic/p-530fcd71.entry.js +0 -4
- package/dist/ionic/p-5d6fb6e3.entry.js +0 -4
- package/dist/ionic/p-66fbe052.entry.js +0 -4
- package/dist/ionic/p-7babec72.entry.js +0 -4
- package/dist/ionic/p-82d5bb3d.entry.js +0 -4
- package/dist/ionic/p-97eb0812.entry.js +0 -4
- package/dist/ionic/p-9b6d46f2.entry.js +0 -4
- package/dist/ionic/p-BKc55Xev.js +0 -4
- package/dist/ionic/p-Bmgaetn_.js +0 -4
- package/dist/ionic/p-C8IsBmNU.js +0 -5
- package/dist/ionic/p-CJxh_yLS.js +0 -4
- package/dist/ionic/p-DZRJwG4S.js +0 -4
- package/dist/ionic/p-a4a9f5ae.entry.js +0 -4
- package/dist/ionic/p-b0ebf9f8.entry.js +0 -4
- package/dist/ionic/p-be263062.entry.js +0 -4
- package/dist/ionic/p-c175d792.entry.js +0 -4
- package/dist/ionic/p-cc2a9936.entry.js +0 -4
- package/dist/ionic/p-cc45bcbc.entry.js +0 -4
- package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
- package/dist/ionic/p-e4c57008.entry.js +0 -4
- package/dist/ionic/p-e5d6d0f0.entry.js +0 -4
- package/dist/ionic/p-f1dfee25.entry.js +0 -4
- package/dist/ionic/p-f9f7b9db.entry.js +0 -4
package/components/ion-menu.js
CHANGED
|
@@ -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}
|