@pod-os/elements 0.17.1-fef97c9.0 → 0.18.1-a971174.0
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/dist/cjs/elements.cjs.js +1 -1
- package/dist/cjs/ion-app.cjs.entry.js +114 -0
- package/dist/cjs/ion-app.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-badge_11.cjs.entry.js +1 -1
- package/dist/cjs/{ion-app_32.cjs.entry.js → ion-card_26.cjs.entry.js} +48 -1380
- package/dist/cjs/ion-card_26.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-content.cjs.entry.js +416 -0
- package/dist/cjs/ion-content.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-footer.cjs.entry.js +144 -0
- package/dist/cjs/ion-footer.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-header.cjs.entry.js +346 -0
- package/dist/cjs/ion-header.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-title.cjs.entry.js +58 -0
- package/dist/cjs/ion-title.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js +79 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pos-app-generic.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-ldp-container.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-rdf-document.cjs.entry.js +1 -1
- package/dist/collection/apps/pos-app-browser/pos-app-browser.css +64 -0
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js +33 -2
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js.map +1 -1
- package/dist/collection/apps/pos-app-generic/pos-app-generic.js +1 -1
- package/dist/collection/apps/pos-app-ldp-container/pos-app-ldp-container.js +1 -1
- package/dist/collection/apps/pos-app-rdf-document/pos-app-rdf-document.js +1 -1
- package/dist/collection/components/pos-add-new-thing/pos-add-new-thing.js +1 -1
- package/dist/collection/components/pos-app/pos-app.js +1 -1
- package/dist/collection/components/pos-dialog/pos-dialog.js +1 -1
- package/dist/collection/components/pos-error-toast/pos-error-toast.js +1 -1
- package/dist/collection/components/pos-literals/pos-literals.js +1 -1
- package/dist/collection/components/pos-login/pos-login.css +13 -9
- package/dist/collection/components/pos-login/pos-login.js +1 -1
- package/dist/collection/components/pos-login/pos-login.js.map +1 -1
- package/dist/collection/components/pos-login-form/pos-login-form.js +1 -1
- package/dist/collection/components/pos-navigation-bar/pos-navigation-bar.js +1 -1
- package/dist/collection/components/pos-new-thing-form/pos-new-thing-form.js +1 -1
- package/dist/collection/components/pos-rich-link/pos-rich-link.js +2 -2
- package/dist/collection/components/pos-router/pos-router.js +26 -2
- package/dist/collection/components/pos-router/pos-router.js.map +1 -1
- package/dist/collection/components/pos-select-term/pos-select-term.js +1 -1
- package/dist/components/ion-app.js +121 -1
- package/dist/components/ion-app.js.map +1 -1
- package/dist/components/ion-content.js +436 -1
- package/dist/components/ion-content.js.map +1 -1
- package/dist/components/ion-footer.js +150 -1
- package/dist/components/ion-footer.js.map +1 -1
- package/dist/components/ion-header.js +354 -1
- package/dist/components/ion-header.js.map +1 -1
- package/dist/components/ion-title.js +70 -1
- package/dist/components/ion-title.js.map +1 -1
- package/dist/components/ion-toolbar.js +88 -1
- package/dist/components/ion-toolbar.js.map +1 -1
- package/dist/components/pos-add-new-thing2.js +1 -1
- package/dist/components/pos-app-browser.js +40 -55
- package/dist/components/pos-app-browser.js.map +1 -1
- package/dist/components/pos-app-generic.js +1 -1
- package/dist/components/pos-app-ldp-container.js +1 -1
- package/dist/components/pos-app-rdf-document.js +1 -1
- package/dist/components/pos-app2.js +1 -1
- package/dist/components/pos-dialog2.js +1 -1
- package/dist/components/pos-error-toast2.js +1 -1
- package/dist/components/pos-literals2.js +1 -1
- package/dist/components/pos-login-form2.js +1 -1
- package/dist/components/pos-login2.js +2 -2
- package/dist/components/pos-login2.js.map +1 -1
- package/dist/components/pos-navigation-bar2.js +1 -1
- package/dist/components/pos-new-thing-form2.js +1 -1
- package/dist/components/pos-rich-link2.js +2 -2
- package/dist/components/pos-router2.js +6 -375
- package/dist/components/pos-router2.js.map +1 -1
- package/dist/components/pos-select-term2.js +1 -1
- package/dist/elements/elements.css +1 -1
- package/dist/elements/elements.esm.js +1 -1
- package/dist/elements/elements.esm.js.map +1 -1
- package/dist/elements/p-00ce08f0.entry.js +2 -0
- package/dist/elements/{p-546a0100.entry.js.map → p-00ce08f0.entry.js.map} +1 -1
- package/dist/elements/p-012387ef.js +5 -0
- package/dist/elements/{p-e06dbbcc.entry.js → p-0133f543.entry.js} +2 -2
- package/dist/elements/p-05e3c2f1.entry.js +2 -0
- package/dist/elements/{p-d5ff3d36.entry.js.map → p-05e3c2f1.entry.js.map} +1 -1
- package/dist/elements/{p-3aeb707f.entry.js → p-09a7b8e1.entry.js} +2 -2
- package/dist/elements/{p-86136480.entry.js → p-11ad53dd.entry.js} +2 -2
- package/dist/elements/{p-9365c31d.entry.js → p-122324d9.entry.js} +2 -2
- package/dist/elements/{p-530932bb.js → p-163e3e87.js} +2 -2
- package/dist/elements/{p-9b56d918.js → p-18d4a4f4.js} +3 -3
- package/dist/elements/{p-b90d29b6.entry.js → p-18d9c4f7.entry.js} +2 -2
- package/dist/elements/{p-69d9dbbf.entry.js → p-1a90b8bb.entry.js} +2 -2
- package/dist/elements/{p-02b4f408.entry.js → p-1f36a3c0.entry.js} +2 -2
- package/dist/elements/{p-c7ac1d8b.entry.js → p-200707c8.entry.js} +6 -6
- package/dist/elements/{p-78982008.entry.js → p-2072bd89.entry.js} +2 -2
- package/dist/elements/{p-170a54a2.js → p-20e2e8c1.js} +3 -3
- package/dist/elements/{p-9e7f0522.js → p-25270f1a.js} +2 -2
- package/dist/elements/p-27e8c19d.entry.js +2 -0
- package/dist/elements/{p-909f0d6e.entry.js.map → p-27e8c19d.entry.js.map} +1 -1
- package/dist/elements/p-27ec1e73.entry.js +2 -0
- package/dist/elements/{p-c4a822b5.entry.js → p-28b1f2dc.entry.js} +2 -2
- package/dist/elements/{p-4d47eeb5.js → p-2a17fd31.js} +2 -2
- package/dist/elements/{p-8d4278bb.entry.js → p-2adb9784.entry.js} +2 -2
- package/dist/elements/p-2f85baae.entry.js +2 -0
- package/dist/elements/{p-e3d72483.entry.js.map → p-2f85baae.entry.js.map} +1 -1
- package/dist/elements/{p-d212be68.entry.js → p-30685d32.entry.js} +2 -2
- package/dist/elements/{p-8e1e3e7d.js → p-359bfe6a.js} +2 -2
- package/dist/elements/p-382054bf.entry.js +2 -0
- package/dist/elements/p-382054bf.entry.js.map +1 -0
- package/dist/elements/{p-bba60e3b.entry.js → p-39cc0ada.entry.js} +2 -2
- package/dist/elements/p-4056decf.entry.js +2 -0
- package/dist/elements/p-4056decf.entry.js.map +1 -0
- package/dist/elements/p-4918fd10.entry.js +2 -0
- package/dist/elements/p-4918fd10.entry.js.map +1 -0
- package/dist/elements/{p-af43acbb.entry.js → p-4c0808b4.entry.js} +2 -2
- package/dist/elements/p-4cf87b24.entry.js +2 -0
- package/dist/elements/{p-0edf98c5.entry.js.map → p-4cf87b24.entry.js.map} +1 -1
- package/dist/elements/{p-b8ac0ee4.js → p-4d6e48bf.js} +2 -2
- package/dist/elements/{p-28ad7b6e.entry.js → p-5298b7a1.entry.js} +2 -2
- package/dist/elements/{p-0b1c92f2.entry.js → p-52c87099.entry.js} +2 -2
- package/dist/elements/{p-c0eb0e3d.entry.js → p-55fbf5f7.entry.js} +3 -3
- package/dist/elements/{p-c0eb0e3d.entry.js.map → p-55fbf5f7.entry.js.map} +1 -1
- package/dist/elements/{p-2428b6bf.js → p-592177e8.js} +2 -2
- package/dist/elements/{p-8b81a782.js → p-595c0a57.js} +2 -2
- package/dist/elements/{p-e32a52ee.js → p-5a248cff.js} +2 -2
- package/dist/elements/p-5b933f24.entry.js +2 -0
- package/dist/elements/p-5b933f24.entry.js.map +1 -0
- package/dist/elements/{p-cc62cb3d.entry.js → p-61a489ee.entry.js} +2 -2
- package/dist/elements/p-6ac0c71c.entry.js +2 -0
- package/dist/elements/{p-6c9053ed.entry.js → p-6bcba1f6.entry.js} +2 -2
- package/dist/elements/{p-ddc13326.entry.js → p-6e2a89ab.entry.js} +2 -2
- package/dist/elements/{p-565128c5.entry.js → p-74ebe432.entry.js} +2 -2
- package/dist/elements/p-76543de1.entry.js +2 -0
- package/dist/elements/{p-d7231d27.entry.js → p-76e7559c.entry.js} +2 -2
- package/dist/elements/{p-41e21640.entry.js → p-778d7821.entry.js} +6 -6
- package/dist/elements/{p-f941317f.entry.js → p-78ba7248.entry.js} +2 -2
- package/dist/elements/{p-6579450f.js → p-7a563988.js} +2 -2
- package/dist/elements/{p-3c2b721e.js → p-7f507bcb.js} +2 -2
- package/dist/elements/p-7fb554a5.entry.js +2 -0
- package/dist/elements/{p-cc274814.entry.js.map → p-7fb554a5.entry.js.map} +1 -1
- package/dist/elements/p-8206b1f1.js +6 -0
- package/dist/elements/{p-b097a0ac.entry.js → p-82fb9396.entry.js} +2 -2
- package/dist/elements/{p-d86e6e48.entry.js → p-8817e69b.entry.js} +2 -2
- package/dist/elements/p-8865cb08.entry.js +2 -0
- package/dist/elements/{p-0951f046.entry.js → p-8b9b339b.entry.js} +2 -2
- package/dist/elements/{p-553217d4.entry.js → p-8b9b7f79.entry.js} +2 -2
- package/dist/elements/{p-86eaec56.entry.js → p-8c32e0ab.entry.js} +2 -2
- package/dist/elements/p-8fe569b3.entry.js +2 -0
- package/dist/elements/p-9090e8dc.entry.js +2 -0
- package/dist/elements/p-90f99f85.entry.js +5 -0
- package/dist/elements/p-90f99f85.entry.js.map +1 -0
- package/dist/elements/{p-fb11bb27.entry.js → p-916a6612.entry.js} +2 -2
- package/dist/elements/{p-fa9aa28a.entry.js → p-a68e7901.entry.js} +2 -2
- package/dist/elements/p-a88c6bd6.entry.js +2 -0
- package/dist/elements/{p-f05a0cca.entry.js.map → p-a88c6bd6.entry.js.map} +1 -1
- package/dist/elements/{p-69410d36.js → p-a91046dc.js} +3 -3
- package/dist/elements/{p-325e5484.entry.js → p-aad12400.entry.js} +2 -2
- package/dist/elements/{p-58418838.entry.js → p-ab92e9ad.entry.js} +2 -2
- package/dist/elements/{p-d01e6782.entry.js → p-af3f8ab1.entry.js} +2 -2
- package/dist/elements/p-b11e8f77.entry.js +2 -0
- package/dist/elements/{p-77d82071.entry.js → p-b19890bd.entry.js} +2 -2
- package/dist/elements/p-b1d0e1fe.entry.js +5 -0
- package/dist/{components/header.js.map → elements/p-b1d0e1fe.entry.js.map} +1 -1
- package/dist/elements/{p-573b7dca.entry.js → p-b227f4a8.entry.js} +2 -2
- package/dist/elements/p-b8b9096d.entry.js +2 -0
- package/dist/elements/p-b8b9096d.entry.js.map +1 -0
- package/dist/elements/{p-134b66b6.js → p-bb3054a3.js} +6 -6
- package/dist/elements/p-bc5eefc4.entry.js +2 -0
- package/dist/elements/{p-b115ebcf.entry.js.map → p-bc5eefc4.entry.js.map} +1 -1
- package/dist/elements/{p-56bf9fdf.js → p-c2690129.js} +2 -2
- package/dist/elements/{p-8b0695a7.entry.js → p-c445f3ac.entry.js} +2 -2
- package/dist/elements/{p-2ba30f60.entry.js → p-c9faf4da.entry.js} +2 -2
- package/dist/elements/p-ca453b3d.js +8 -0
- package/dist/elements/p-cc23946c.entry.js +2 -0
- package/dist/elements/{p-4342e2ef.entry.js.map → p-cc23946c.entry.js.map} +1 -1
- package/dist/elements/{p-c23172a0.entry.js → p-cd9107d1.entry.js} +2 -2
- package/dist/elements/{p-9b369d09.js → p-cebe59d4.js} +2 -2
- package/dist/elements/{p-b67ce91f.entry.js → p-cfec477d.entry.js} +2 -2
- package/dist/elements/{p-1c69ca01.js → p-d0fcc589.js} +2 -2
- package/dist/elements/{p-257248f2.entry.js → p-d2458575.entry.js} +2 -2
- package/dist/elements/p-d2e7f4d4.entry.js +2 -0
- package/dist/elements/p-d65caf7a.entry.js +2 -0
- package/dist/elements/{p-acbfc962.entry.js.map → p-d65caf7a.entry.js.map} +1 -1
- package/dist/elements/{p-3505dfe2.js → p-d6769f21.js} +2 -2
- package/dist/elements/{p-a1a15808.entry.js → p-d6bf2b98.entry.js} +2 -2
- package/dist/elements/{p-75cbc833.entry.js → p-d86570da.entry.js} +2 -2
- package/dist/elements/p-d8e8bd9b.entry.js +2 -0
- package/dist/elements/p-d8fc8b11.js +2 -0
- package/dist/elements/{p-0ddd5da3.entry.js → p-da5f6dcd.entry.js} +3 -3
- package/dist/elements/{p-ab5544fc.entry.js → p-db793eec.entry.js} +2 -2
- package/dist/elements/p-db973275.js +5 -0
- package/dist/elements/{p-5f2c1e33.entry.js → p-e134ddc9.entry.js} +2 -2
- package/dist/elements/{p-0752ec21.entry.js → p-e3ae9b45.entry.js} +2 -2
- package/dist/elements/p-e5cefd56.entry.js +2 -0
- package/dist/elements/{p-64af0b46.entry.js.map → p-e5cefd56.entry.js.map} +1 -1
- package/dist/elements/{p-ad2273d6.js → p-ecdb52e8.js} +2 -2
- package/dist/elements/{p-2dddbb15.js → p-f1ef82a9.js} +4 -4
- package/dist/elements/p-f4440338.entry.js +2 -0
- package/dist/elements/{p-5bd948fa.entry.js → p-f981858f.entry.js} +2 -2
- package/dist/elements/{p-f6b92b3c.entry.js → p-fd200088.entry.js} +2 -2
- package/dist/elements/{p-b56ae71f.entry.js → p-fdeb6a78.entry.js} +3 -3
- package/dist/esm/{BrokenFile-0cbdf2f2.js → BrokenFile-660171a9.js} +2 -2
- package/dist/esm/{BrokenFile-0cbdf2f2.js.map → BrokenFile-660171a9.js.map} +1 -1
- package/dist/esm/{animation-0dedebd7.js → animation-8c622dae.js} +2 -2
- package/dist/esm/{animation-0dedebd7.js.map → animation-8c622dae.js.map} +1 -1
- package/dist/esm/{app-globals-8441b381.js → app-globals-a35b051d.js} +2 -2
- package/dist/esm/{app-globals-8441b381.js.map → app-globals-a35b051d.js.map} +1 -1
- package/dist/esm/{data-3bd275a7.js → data-cdc9b206.js} +2 -2
- package/dist/esm/{data-3bd275a7.js.map → data-cdc9b206.js.map} +1 -1
- package/dist/esm/elements.js +5 -5
- package/dist/esm/{form-controller-ba097a73.js → form-controller-1f70ed52.js} +2 -2
- package/dist/esm/{form-controller-ba097a73.js.map → form-controller-1f70ed52.js.map} +1 -1
- package/dist/esm/{framework-delegate-0ffa1682.js → framework-delegate-b5751311.js} +2 -2
- package/dist/esm/{framework-delegate-0ffa1682.js.map → framework-delegate-b5751311.js.map} +1 -1
- package/dist/esm/{hardware-back-button-80e72d27.js → hardware-back-button-e34ddb75.js} +3 -3
- package/dist/esm/{hardware-back-button-80e72d27.js.map → hardware-back-button-e34ddb75.js.map} +1 -1
- package/dist/esm/{helpers-ad2d8971.js → helpers-a93a8cd2.js} +2 -2
- package/dist/esm/{helpers-ad2d8971.js.map → helpers-a93a8cd2.js.map} +1 -1
- package/dist/esm/{index-141ce7d0.js → index-1e601862.js} +5 -5
- package/dist/esm/{index-141ce7d0.js.map → index-1e601862.js.map} +1 -1
- package/dist/esm/{index-38b2da1b.js → index-432e7c6f.js} +3 -3
- package/dist/esm/{index-38b2da1b.js.map → index-432e7c6f.js.map} +1 -1
- package/dist/esm/{index-46b2983b.js → index-538226d8.js} +2 -2
- package/dist/esm/{index-46b2983b.js.map → index-538226d8.js.map} +1 -1
- package/dist/esm/{index-049cf01c.js → index-e9b97538.js} +6 -6
- package/dist/esm/{index-049cf01c.js.map → index-e9b97538.js.map} +1 -1
- package/dist/esm/{index-c043b4c8.js → index-f69a875d.js} +2 -2
- package/dist/esm/{index-c043b4c8.js.map → index-f69a875d.js.map} +1 -1
- package/dist/esm/{index-bec78e8b.js → index-f7ac0403.js} +2 -2
- package/dist/esm/{index-bec78e8b.js.map → index-f7ac0403.js.map} +1 -1
- package/dist/esm/{input-shims-2246db96.js → input-shims-212ee02f.js} +4 -4
- package/dist/esm/{input-shims-2246db96.js.map → input-shims-212ee02f.js.map} +1 -1
- package/dist/esm/{input.utils-8550a81d.js → input.utils-d2c917c3.js} +3 -3
- package/dist/esm/{input.utils-8550a81d.js.map → input.utils-d2c917c3.js.map} +1 -1
- package/dist/esm/ion-accordion-group.entry.js +3 -3
- package/dist/esm/ion-accordion.entry.js +3 -3
- package/dist/esm/ion-action-sheet_3.entry.js +8 -8
- package/dist/{components/app.js → esm/ion-app.entry.js} +20 -35
- package/dist/esm/ion-app.entry.js.map +1 -0
- package/dist/esm/ion-avatar.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-badge_11.entry.js +8 -8
- package/dist/esm/ion-breadcrumb.entry.js +3 -3
- package/dist/esm/ion-breadcrumbs.entry.js +2 -2
- package/dist/esm/ion-button_4.entry.js +4 -4
- package/dist/esm/ion-card-subtitle.entry.js +2 -2
- package/dist/esm/{ion-app_32.entry.js → ion-card_26.entry.js} +48 -1374
- package/dist/esm/ion-card_26.entry.js.map +1 -0
- package/dist/esm/ion-checkbox_4.entry.js +5 -5
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/{components/content.js → esm/ion-content.entry.js} +14 -42
- package/dist/esm/ion-content.entry.js.map +1 -0
- package/dist/esm/ion-datetime-button.entry.js +5 -5
- package/dist/esm/ion-datetime.entry.js +5 -5
- package/dist/esm/ion-fab-button.entry.js +3 -3
- package/dist/esm/ion-fab-list.entry.js +2 -2
- package/dist/esm/ion-fab.entry.js +2 -2
- package/dist/{components/footer.js → esm/ion-footer.entry.js} +20 -34
- package/dist/esm/ion-footer.entry.js.map +1 -0
- package/dist/{components/header.js → esm/ion-header.entry.js} +17 -33
- package/dist/esm/ion-header.entry.js.map +1 -0
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll-content.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll.entry.js +5 -5
- package/dist/esm/ion-item-option.entry.js +2 -2
- package/dist/esm/ion-item-options.entry.js +3 -3
- package/dist/esm/ion-item-sliding.entry.js +5 -5
- package/dist/esm/ion-item_4.entry.js +4 -4
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu-button.entry.js +8 -8
- package/dist/esm/ion-menu-toggle.entry.js +8 -8
- package/dist/esm/ion-menu.entry.js +9 -9
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav-link.entry.js +1 -1
- package/dist/esm/ion-nav.entry.js +6 -6
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +8 -8
- package/dist/esm/ion-popover.entry.js +9 -9
- package/dist/esm/ion-range.entry.js +6 -6
- package/dist/esm/ion-refresher-content.entry.js +5 -5
- package/dist/esm/ion-refresher.entry.js +7 -7
- package/dist/esm/ion-reorder-group.entry.js +5 -5
- package/dist/esm/ion-reorder.entry.js +2 -2
- package/dist/esm/ion-route-redirect.entry.js +1 -1
- package/dist/esm/ion-route.entry.js +1 -1
- package/dist/esm/ion-router-link.entry.js +2 -2
- package/dist/esm/ion-router-outlet.entry.js +6 -6
- package/dist/esm/ion-router.entry.js +2 -2
- package/dist/esm/ion-segment-button.entry.js +3 -3
- package/dist/esm/ion-segment.entry.js +3 -3
- package/dist/esm/ion-select-option.entry.js +2 -2
- package/dist/esm/ion-select.entry.js +9 -9
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar.entry.js +2 -2
- package/dist/esm/ion-tab-button.entry.js +3 -3
- package/dist/esm/ion-tab.entry.js +3 -3
- package/dist/esm/ion-tabs.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +7 -7
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/{components/title.js → esm/ion-title.entry.js} +14 -34
- package/dist/esm/ion-title.entry.js.map +1 -0
- package/dist/esm/ion-toast.entry.js +8 -8
- package/dist/esm/ion-toggle.entry.js +5 -5
- package/dist/{components/toolbar.js → esm/ion-toolbar.entry.js} +14 -31
- package/dist/esm/ion-toolbar.entry.js.map +1 -0
- package/dist/esm/{ionic-global-006bfdaa.js → ionic-global-163eb7af.js} +2 -2
- package/dist/esm/{ionic-global-006bfdaa.js.map → ionic-global-163eb7af.js.map} +1 -1
- package/dist/esm/{ios.transition-e19293f7.js → ios.transition-0236708a.js} +5 -5
- package/dist/esm/{ios.transition-e19293f7.js.map → ios.transition-0236708a.js.map} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-d72e937f.js → md.transition-e93291da.js} +5 -5
- package/dist/esm/{md.transition-d72e937f.js.map → md.transition-e93291da.js.map} +1 -1
- package/dist/esm/{menu-toggle-util-dca4ccca.js → menu-toggle-util-a0afc829.js} +2 -2
- package/dist/esm/{menu-toggle-util-dca4ccca.js.map → menu-toggle-util-a0afc829.js.map} +1 -1
- package/dist/esm/{notch-controller-18232ec1.js → notch-controller-ae856621.js} +2 -2
- package/dist/esm/{notch-controller-18232ec1.js.map → notch-controller-ae856621.js.map} +1 -1
- package/dist/esm/{overlays-f768dabb.js → overlays-708b9a6f.js} +6 -6
- package/dist/esm/{overlays-f768dabb.js.map → overlays-708b9a6f.js.map} +1 -1
- package/dist/esm/pos-app-document-viewer.entry.js +1 -1
- package/dist/esm/pos-app-generic.entry.js +2 -2
- package/dist/esm/pos-app-image-viewer.entry.js +1 -1
- package/dist/esm/pos-app-ldp-container.entry.js +2 -2
- package/dist/esm/pos-app-rdf-document.entry.js +2 -2
- package/dist/esm/pos-container-contents.entry.js +1 -1
- package/dist/esm/pos-container-item.entry.js +1 -1
- package/dist/esm/pos-document.entry.js +2 -2
- package/dist/esm/pos-relations_2.entry.js +1 -1
- package/dist/esm/pos-subjects.entry.js +1 -1
- package/dist/esm/pos-value.entry.js +1 -1
- package/dist/esm/{refresher.utils-5cd2771a.js → refresher.utils-e3624272.js} +4 -4
- package/dist/esm/{refresher.utils-5cd2771a.js.map → refresher.utils-e3624272.js.map} +1 -1
- package/dist/esm/{status-tap-96ab3acb.js → status-tap-9b757300.js} +5 -5
- package/dist/esm/{status-tap-96ab3acb.js.map → status-tap-9b757300.js.map} +1 -1
- package/dist/esm/{swipe-back-44f8b09c.js → swipe-back-5993fe10.js} +2 -2
- package/dist/esm/{swipe-back-44f8b09c.js.map → swipe-back-5993fe10.js.map} +1 -1
- package/dist/types/apps/pos-app-browser/pos-app-browser.d.ts +1 -0
- package/dist/types/components/pos-router/pos-router.d.ts +10 -0
- package/dist/types/components.d.ts +39 -0
- package/package.json +1 -1
- package/dist/cjs/ion-app_32.cjs.entry.js.map +0 -1
- package/dist/components/app.js.map +0 -1
- package/dist/components/content.js.map +0 -1
- package/dist/components/footer.js.map +0 -1
- package/dist/components/title.js.map +0 -1
- package/dist/components/toolbar.js.map +0 -1
- package/dist/elements/p-089421d7.entry.js +0 -8
- package/dist/elements/p-089421d7.entry.js.map +0 -1
- package/dist/elements/p-0edf98c5.entry.js +0 -2
- package/dist/elements/p-0feec79b.js +0 -6
- package/dist/elements/p-118e0bed.entry.js +0 -2
- package/dist/elements/p-2fa5ecde.js +0 -8
- package/dist/elements/p-4342e2ef.entry.js +0 -2
- package/dist/elements/p-546a0100.entry.js +0 -2
- package/dist/elements/p-5f19bcb1.entry.js +0 -2
- package/dist/elements/p-64af0b46.entry.js +0 -2
- package/dist/elements/p-7e36887e.js +0 -5
- package/dist/elements/p-86f80c54.entry.js +0 -2
- package/dist/elements/p-89b3cdad.entry.js +0 -2
- package/dist/elements/p-8eb42424.entry.js +0 -2
- package/dist/elements/p-8f98459a.entry.js +0 -2
- package/dist/elements/p-909f0d6e.entry.js +0 -2
- package/dist/elements/p-963acf5e.entry.js +0 -2
- package/dist/elements/p-9b3608b6.entry.js +0 -2
- package/dist/elements/p-acbfc962.entry.js +0 -2
- package/dist/elements/p-b115ebcf.entry.js +0 -2
- package/dist/elements/p-cc274814.entry.js +0 -2
- package/dist/elements/p-d3a247bd.entry.js +0 -2
- package/dist/elements/p-d5ff3d36.entry.js +0 -2
- package/dist/elements/p-de267699.js +0 -2
- package/dist/elements/p-e3734616.entry.js +0 -2
- package/dist/elements/p-e3d72483.entry.js +0 -2
- package/dist/elements/p-f05a0cca.entry.js +0 -2
- package/dist/elements/p-f82feb40.js +0 -5
- package/dist/esm/ion-app_32.entry.js.map +0 -1
- /package/dist/elements/{p-f82feb40.js.map → p-012387ef.js.map} +0 -0
- /package/dist/elements/{p-e06dbbcc.entry.js.map → p-0133f543.entry.js.map} +0 -0
- /package/dist/elements/{p-3aeb707f.entry.js.map → p-09a7b8e1.entry.js.map} +0 -0
- /package/dist/elements/{p-86136480.entry.js.map → p-11ad53dd.entry.js.map} +0 -0
- /package/dist/elements/{p-9365c31d.entry.js.map → p-122324d9.entry.js.map} +0 -0
- /package/dist/elements/{p-530932bb.js.map → p-163e3e87.js.map} +0 -0
- /package/dist/elements/{p-9b56d918.js.map → p-18d4a4f4.js.map} +0 -0
- /package/dist/elements/{p-b90d29b6.entry.js.map → p-18d9c4f7.entry.js.map} +0 -0
- /package/dist/elements/{p-69d9dbbf.entry.js.map → p-1a90b8bb.entry.js.map} +0 -0
- /package/dist/elements/{p-02b4f408.entry.js.map → p-1f36a3c0.entry.js.map} +0 -0
- /package/dist/elements/{p-c7ac1d8b.entry.js.map → p-200707c8.entry.js.map} +0 -0
- /package/dist/elements/{p-78982008.entry.js.map → p-2072bd89.entry.js.map} +0 -0
- /package/dist/elements/{p-170a54a2.js.map → p-20e2e8c1.js.map} +0 -0
- /package/dist/elements/{p-9e7f0522.js.map → p-25270f1a.js.map} +0 -0
- /package/dist/elements/{p-5f19bcb1.entry.js.map → p-27ec1e73.entry.js.map} +0 -0
- /package/dist/elements/{p-c4a822b5.entry.js.map → p-28b1f2dc.entry.js.map} +0 -0
- /package/dist/elements/{p-4d47eeb5.js.map → p-2a17fd31.js.map} +0 -0
- /package/dist/elements/{p-8d4278bb.entry.js.map → p-2adb9784.entry.js.map} +0 -0
- /package/dist/elements/{p-d212be68.entry.js.map → p-30685d32.entry.js.map} +0 -0
- /package/dist/elements/{p-8e1e3e7d.js.map → p-359bfe6a.js.map} +0 -0
- /package/dist/elements/{p-bba60e3b.entry.js.map → p-39cc0ada.entry.js.map} +0 -0
- /package/dist/elements/{p-af43acbb.entry.js.map → p-4c0808b4.entry.js.map} +0 -0
- /package/dist/elements/{p-b8ac0ee4.js.map → p-4d6e48bf.js.map} +0 -0
- /package/dist/elements/{p-28ad7b6e.entry.js.map → p-5298b7a1.entry.js.map} +0 -0
- /package/dist/elements/{p-0b1c92f2.entry.js.map → p-52c87099.entry.js.map} +0 -0
- /package/dist/elements/{p-2428b6bf.js.map → p-592177e8.js.map} +0 -0
- /package/dist/elements/{p-8b81a782.js.map → p-595c0a57.js.map} +0 -0
- /package/dist/elements/{p-e32a52ee.js.map → p-5a248cff.js.map} +0 -0
- /package/dist/elements/{p-cc62cb3d.entry.js.map → p-61a489ee.entry.js.map} +0 -0
- /package/dist/elements/{p-118e0bed.entry.js.map → p-6ac0c71c.entry.js.map} +0 -0
- /package/dist/elements/{p-6c9053ed.entry.js.map → p-6bcba1f6.entry.js.map} +0 -0
- /package/dist/elements/{p-ddc13326.entry.js.map → p-6e2a89ab.entry.js.map} +0 -0
- /package/dist/elements/{p-565128c5.entry.js.map → p-74ebe432.entry.js.map} +0 -0
- /package/dist/elements/{p-89b3cdad.entry.js.map → p-76543de1.entry.js.map} +0 -0
- /package/dist/elements/{p-d7231d27.entry.js.map → p-76e7559c.entry.js.map} +0 -0
- /package/dist/elements/{p-41e21640.entry.js.map → p-778d7821.entry.js.map} +0 -0
- /package/dist/elements/{p-f941317f.entry.js.map → p-78ba7248.entry.js.map} +0 -0
- /package/dist/elements/{p-6579450f.js.map → p-7a563988.js.map} +0 -0
- /package/dist/elements/{p-3c2b721e.js.map → p-7f507bcb.js.map} +0 -0
- /package/dist/elements/{p-0feec79b.js.map → p-8206b1f1.js.map} +0 -0
- /package/dist/elements/{p-b097a0ac.entry.js.map → p-82fb9396.entry.js.map} +0 -0
- /package/dist/elements/{p-d86e6e48.entry.js.map → p-8817e69b.entry.js.map} +0 -0
- /package/dist/elements/{p-86f80c54.entry.js.map → p-8865cb08.entry.js.map} +0 -0
- /package/dist/elements/{p-0951f046.entry.js.map → p-8b9b339b.entry.js.map} +0 -0
- /package/dist/elements/{p-553217d4.entry.js.map → p-8b9b7f79.entry.js.map} +0 -0
- /package/dist/elements/{p-86eaec56.entry.js.map → p-8c32e0ab.entry.js.map} +0 -0
- /package/dist/elements/{p-8f98459a.entry.js.map → p-8fe569b3.entry.js.map} +0 -0
- /package/dist/elements/{p-e3734616.entry.js.map → p-9090e8dc.entry.js.map} +0 -0
- /package/dist/elements/{p-fb11bb27.entry.js.map → p-916a6612.entry.js.map} +0 -0
- /package/dist/elements/{p-fa9aa28a.entry.js.map → p-a68e7901.entry.js.map} +0 -0
- /package/dist/elements/{p-69410d36.js.map → p-a91046dc.js.map} +0 -0
- /package/dist/elements/{p-325e5484.entry.js.map → p-aad12400.entry.js.map} +0 -0
- /package/dist/elements/{p-58418838.entry.js.map → p-ab92e9ad.entry.js.map} +0 -0
- /package/dist/elements/{p-d01e6782.entry.js.map → p-af3f8ab1.entry.js.map} +0 -0
- /package/dist/elements/{p-8eb42424.entry.js.map → p-b11e8f77.entry.js.map} +0 -0
- /package/dist/elements/{p-77d82071.entry.js.map → p-b19890bd.entry.js.map} +0 -0
- /package/dist/elements/{p-573b7dca.entry.js.map → p-b227f4a8.entry.js.map} +0 -0
- /package/dist/elements/{p-134b66b6.js.map → p-bb3054a3.js.map} +0 -0
- /package/dist/elements/{p-56bf9fdf.js.map → p-c2690129.js.map} +0 -0
- /package/dist/elements/{p-8b0695a7.entry.js.map → p-c445f3ac.entry.js.map} +0 -0
- /package/dist/elements/{p-2ba30f60.entry.js.map → p-c9faf4da.entry.js.map} +0 -0
- /package/dist/elements/{p-2fa5ecde.js.map → p-ca453b3d.js.map} +0 -0
- /package/dist/elements/{p-c23172a0.entry.js.map → p-cd9107d1.entry.js.map} +0 -0
- /package/dist/elements/{p-9b369d09.js.map → p-cebe59d4.js.map} +0 -0
- /package/dist/elements/{p-b67ce91f.entry.js.map → p-cfec477d.entry.js.map} +0 -0
- /package/dist/elements/{p-1c69ca01.js.map → p-d0fcc589.js.map} +0 -0
- /package/dist/elements/{p-257248f2.entry.js.map → p-d2458575.entry.js.map} +0 -0
- /package/dist/elements/{p-9b3608b6.entry.js.map → p-d2e7f4d4.entry.js.map} +0 -0
- /package/dist/elements/{p-3505dfe2.js.map → p-d6769f21.js.map} +0 -0
- /package/dist/elements/{p-a1a15808.entry.js.map → p-d6bf2b98.entry.js.map} +0 -0
- /package/dist/elements/{p-75cbc833.entry.js.map → p-d86570da.entry.js.map} +0 -0
- /package/dist/elements/{p-963acf5e.entry.js.map → p-d8e8bd9b.entry.js.map} +0 -0
- /package/dist/elements/{p-de267699.js.map → p-d8fc8b11.js.map} +0 -0
- /package/dist/elements/{p-0ddd5da3.entry.js.map → p-da5f6dcd.entry.js.map} +0 -0
- /package/dist/elements/{p-ab5544fc.entry.js.map → p-db793eec.entry.js.map} +0 -0
- /package/dist/elements/{p-7e36887e.js.map → p-db973275.js.map} +0 -0
- /package/dist/elements/{p-5f2c1e33.entry.js.map → p-e134ddc9.entry.js.map} +0 -0
- /package/dist/elements/{p-0752ec21.entry.js.map → p-e3ae9b45.entry.js.map} +0 -0
- /package/dist/elements/{p-ad2273d6.js.map → p-ecdb52e8.js.map} +0 -0
- /package/dist/elements/{p-2dddbb15.js.map → p-f1ef82a9.js.map} +0 -0
- /package/dist/elements/{p-d3a247bd.entry.js.map → p-f4440338.entry.js.map} +0 -0
- /package/dist/elements/{p-5bd948fa.entry.js.map → p-f981858f.entry.js.map} +0 -0
- /package/dist/elements/{p-f6b92b3c.entry.js.map → p-fd200088.entry.js.map} +0 -0
- /package/dist/elements/{p-b56ae71f.entry.js.map → p-fdeb6a78.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["menuIosCss","IonMenuIosStyle0","menuMdCss","IonMenuMdStyle0","iosEasing","mdEasing","iosEasingReverse","mdEasingReverse","focusableQueryString","Menu","constructor","hostRef","this","lastOnEnd","blocker","GESTURE_CONTROLLER","createBlocker","disableScroll","didLoad","operationCancelled","isAnimating","_isOpen","inheritedAttributes","handleFocus","ev","lastOverlay","getPresentedOverlay","document","contains","el","trapKeyboardFocus","isPaneVisible","isEndSide","contentId","undefined","menuId","type","disabled","side","swipeGesture","maxEdgeStart","typeChanged","oldType","contentEl","classList","remove","add","removeAttribute","menuInnerEl","animation","disabledChanged","updateState","ionMenuChange","emit","open","sideChanged","isEnd","swipeGestureChanged","connectedCallback","customElements","whenDefined","config","get","content","getElementById","console","error","menuController","_register","menuChanged","gesture","import","createGesture","gestureName","gesturePriority","threshold","blurOnStart","canStart","onWillStart","onStart","onMove","onEnd","componentWillLoad","inheritAriaAttributes","componentDidLoad","disconnectedCallback","close","destroy","_unregister","onSplitPaneChanged","target","closestSplitPane","closest","detail","isPane","onBackdropClick","timeStamp","shouldClose","composedPath","includes","preventDefault","stopPropagation","onKeydown","key","isOpen","Promise","resolve","isActive","_isActive","animated","setOpen","toggle","shouldOpen","_setOpen","focusFirstDescendant","firstInput","querySelector","focus","focusLastDescendant","inputs","Array","from","querySelectorAll","lastInput","length","doc","lastFocus","activeElement","beforeAnimation","loadAnimation","startAnimation","afterAnimation","width","offsetWidth","_createAnimation","getBoolean","duration","fill","isReversed","mode","getIonMode","easing","easingReverse","ani","direction","play","sync","getDirection","canSwipe","isModalPresented","_getOpenSync","checkEdgeSide","window","currentX","assert","progressStart","delta","computeDelta","deltaX","stepValue","progressStep","velocity","velocityX","z","shouldCompleteRight","shouldCompleteLeft","shouldComplete","currentTime","newStepValue","adjustedStepValue","getTimeGivenProgression","clamp","playTo","onFinish","oneTimeCallback","progressEnd","SHOW_MENU","setAttribute","backdropEl","SHOW_BACKDROP","MENU_CONTENT_OPEN","block","ionWillOpen","ionWillClose","_a","unblock","ionDidOpen","focusedMenu","addEventListener","stop","ionDidClose","removeEventListener","enable","render","h","Host","onKeyDown","shouldUseCloseWatcher","role","class","part","ref","tappable","Math","max","win","posX","innerWidth"],"sources":["../node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css?tag=ion-menu&mode=ios&encapsulation=shadow","../node_modules/@ionic/core/dist/collection/components/menu/menu.md.css?tag=ion-menu&mode=md&encapsulation=shadow","../node_modules/@ionic/core/dist/collection/components/menu/menu.js"],"sourcesContent":["/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host {\n /**\n * @prop --background: Background of the menu\n *\n * @prop --min-width: Minimum width of the menu\n * @prop --width: Width of the menu\n * @prop --max-width: Maximum width of the menu\n *\n * @prop --min-height: Minimum height of the menu\n * @prop --height: Height of the menu\n * @prop --max-height: Maximum height of the menu\n */\n --width: 304px;\n --min-width: auto;\n --max-width: auto;\n --height: 100%;\n --min-height: auto;\n --max-height: auto;\n --background: var(--ion-background-color, #fff);\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: none;\n position: absolute;\n contain: strict;\n}\n\n:host(.show-menu) {\n display: block;\n}\n\n.menu-inner {\n transform: translateX(-9999px);\n display: flex;\n position: absolute;\n flex-direction: column;\n justify-content: space-between;\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n height: var(--height);\n min-height: var(--min-height);\n max-height: var(--max-height);\n background: var(--background);\n contain: strict;\n}\n\n:host(.menu-side-start) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The left side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n inset-inline-start: 0;\n inset-inline-end: auto;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n left: 0;\n right: auto;\n }\n :host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n }\n}\n\n:host(.menu-side-end) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The right side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n left: auto;\n right: 0;\n }\n :host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n }\n}\n\nion-backdrop {\n display: none;\n opacity: 0.01;\n z-index: -1;\n}\n\n@media (max-width: 340px) {\n .menu-inner {\n --width: 264px;\n }\n}\n:host(.menu-type-reveal) {\n z-index: 0;\n}\n\n:host(.menu-type-reveal.show-menu) .menu-inner {\n transform: translate3d(0, 0, 0);\n}\n\n:host(.menu-type-overlay) {\n z-index: 1000;\n}\n\n:host(.menu-type-overlay) .show-backdrop {\n display: block;\n cursor: pointer;\n}\n\n:host(.menu-pane-visible) {\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n}\n\n:host(.menu-pane-visible) .menu-inner {\n left: 0;\n right: 0;\n width: auto;\n transform: none;\n box-shadow: none;\n}\n\n:host(.menu-pane-visible) ion-backdrop {\n /* stylelint-disable-next-line declaration-no-important */\n display: hidden !important;\n}\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host(.menu-type-push) {\n z-index: 1000;\n}\n\n:host(.menu-type-push) .show-backdrop {\n display: block;\n}","/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host {\n /**\n * @prop --background: Background of the menu\n *\n * @prop --min-width: Minimum width of the menu\n * @prop --width: Width of the menu\n * @prop --max-width: Maximum width of the menu\n *\n * @prop --min-height: Minimum height of the menu\n * @prop --height: Height of the menu\n * @prop --max-height: Maximum height of the menu\n */\n --width: 304px;\n --min-width: auto;\n --max-width: auto;\n --height: 100%;\n --min-height: auto;\n --max-height: auto;\n --background: var(--ion-background-color, #fff);\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: none;\n position: absolute;\n contain: strict;\n}\n\n:host(.show-menu) {\n display: block;\n}\n\n.menu-inner {\n transform: translateX(-9999px);\n display: flex;\n position: absolute;\n flex-direction: column;\n justify-content: space-between;\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n height: var(--height);\n min-height: var(--min-height);\n max-height: var(--max-height);\n background: var(--background);\n contain: strict;\n}\n\n:host(.menu-side-start) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The left side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n inset-inline-start: 0;\n inset-inline-end: auto;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n left: 0;\n right: auto;\n }\n :host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n }\n}\n\n:host(.menu-side-end) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The right side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n left: auto;\n right: 0;\n }\n :host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n }\n}\n\nion-backdrop {\n display: none;\n opacity: 0.01;\n z-index: -1;\n}\n\n@media (max-width: 340px) {\n .menu-inner {\n --width: 264px;\n }\n}\n:host(.menu-type-reveal) {\n z-index: 0;\n}\n\n:host(.menu-type-reveal.show-menu) .menu-inner {\n transform: translate3d(0, 0, 0);\n}\n\n:host(.menu-type-overlay) {\n z-index: 1000;\n}\n\n:host(.menu-type-overlay) .show-backdrop {\n display: block;\n cursor: pointer;\n}\n\n:host(.menu-pane-visible) {\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n}\n\n:host(.menu-pane-visible) .menu-inner {\n left: 0;\n right: 0;\n width: auto;\n transform: none;\n box-shadow: none;\n}\n\n:host(.menu-pane-visible) ion-backdrop {\n /* stylelint-disable-next-line declaration-no-important */\n display: hidden !important;\n}\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host(.menu-type-overlay) .menu-inner {\n box-shadow: 4px 0px 16px rgba(0, 0, 0, 0.18);\n}","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { Build, Host, h } from \"@stencil/core\";\nimport { getTimeGivenProgression } from \"../../utils/animation/cubic-bezier\";\nimport { GESTURE_CONTROLLER } from \"../../utils/gesture/index\";\nimport { shouldUseCloseWatcher } from \"../../utils/hardware-back-button\";\nimport { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from \"../../utils/helpers\";\nimport { menuController } from \"../../utils/menu-controller/index\";\nimport { getPresentedOverlay } from \"../../utils/overlays\";\nimport { config } from \"../../global/config\";\nimport { getIonMode } from \"../../global/ionic-global\";\nconst iosEasing = 'cubic-bezier(0.32,0.72,0,1)';\nconst mdEasing = 'cubic-bezier(0.0,0.0,0.2,1)';\nconst iosEasingReverse = 'cubic-bezier(1, 0, 0.68, 0.28)';\nconst mdEasingReverse = 'cubic-bezier(0.4, 0, 0.6, 1)';\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]), input:not([type=hidden]):not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), .ion-focusable:not([tabindex^=\"-\"])';\n/**\n * @part container - The container for the menu content.\n * @part backdrop - The backdrop that appears over the main content when the menu is open.\n */\nexport class Menu {\n constructor() {\n this.lastOnEnd = 0;\n this.blocker = GESTURE_CONTROLLER.createBlocker({ disableScroll: true });\n this.didLoad = false;\n /**\n * Flag used to determine if an open/close\n * operation was cancelled. For example, if\n * an app calls \"menu.open\" then disables the menu\n * part way through the animation, then this would\n * be considered a cancelled operation.\n */\n this.operationCancelled = false;\n this.isAnimating = false;\n this._isOpen = false;\n this.inheritedAttributes = {};\n this.handleFocus = (ev) => {\n /**\n * Overlays have their own focus trapping listener\n * so we do not want the two listeners to conflict\n * with each other. If the top-most overlay that is\n * open does not contain this ion-menu, then ion-menu's\n * focus trapping should not run.\n */\n const lastOverlay = getPresentedOverlay(document);\n if (lastOverlay && !lastOverlay.contains(this.el)) {\n return;\n }\n this.trapKeyboardFocus(ev, document);\n };\n this.isPaneVisible = false;\n this.isEndSide = false;\n this.contentId = undefined;\n this.menuId = undefined;\n this.type = undefined;\n this.disabled = false;\n this.side = 'start';\n this.swipeGesture = true;\n this.maxEdgeStart = 50;\n }\n typeChanged(type, oldType) {\n const contentEl = this.contentEl;\n if (contentEl) {\n if (oldType !== undefined) {\n contentEl.classList.remove(`menu-content-${oldType}`);\n }\n contentEl.classList.add(`menu-content-${type}`);\n contentEl.removeAttribute('style');\n }\n if (this.menuInnerEl) {\n // Remove effects of previous animations\n this.menuInnerEl.removeAttribute('style');\n }\n this.animation = undefined;\n }\n disabledChanged() {\n this.updateState();\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen,\n });\n }\n sideChanged() {\n this.isEndSide = isEnd(this.side);\n /**\n * Menu direction animation is calculated based on the document direction.\n * If the document direction changes, we need to create a new animation.\n */\n this.animation = undefined;\n }\n swipeGestureChanged() {\n this.updateState();\n }\n async connectedCallback() {\n // TODO: connectedCallback is fired in CE build\n // before WC is defined. This needs to be fixed in Stencil.\n if (typeof customElements !== 'undefined' && customElements != null) {\n await customElements.whenDefined('ion-menu');\n }\n if (this.type === undefined) {\n this.type = config.get('menuType', 'overlay');\n }\n if (!Build.isBrowser) {\n return;\n }\n const content = this.contentId !== undefined ? document.getElementById(this.contentId) : null;\n if (content === null) {\n console.error('Menu: must have a \"content\" element to listen for drag events on.');\n return;\n }\n if (this.el.contains(content)) {\n console.error(`Menu: \"contentId\" should refer to the main view's ion-content, not the ion-content inside of the ion-menu.`);\n }\n this.contentEl = content;\n // add menu's content classes\n content.classList.add('menu-content');\n this.typeChanged(this.type, undefined);\n this.sideChanged();\n // register this menu with the app's menu controller\n menuController._register(this);\n this.menuChanged();\n this.gesture = (await import('../../utils/gesture')).createGesture({\n el: document,\n gestureName: 'menu-swipe',\n gesturePriority: 30,\n threshold: 10,\n blurOnStart: true,\n canStart: (ev) => this.canStart(ev),\n onWillStart: () => this.onWillStart(),\n onStart: () => this.onStart(),\n onMove: (ev) => this.onMove(ev),\n onEnd: (ev) => this.onEnd(ev),\n });\n this.updateState();\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n async componentDidLoad() {\n this.didLoad = true;\n this.menuChanged();\n this.updateState();\n }\n menuChanged() {\n /**\n * Inform dependent components such as ion-menu-button\n * that the menu is ready. Note that we only want to do this\n * once the menu has been rendered which is why we check for didLoad.\n */\n if (this.didLoad) {\n this.ionMenuChange.emit({ disabled: this.disabled, open: this._isOpen });\n }\n }\n async disconnectedCallback() {\n /**\n * The menu should be closed when it is\n * unmounted from the DOM.\n * This is an async call, so we need to wait for\n * this to finish otherwise contentEl\n * will not have MENU_CONTENT_OPEN removed.\n */\n await this.close(false);\n this.blocker.destroy();\n menuController._unregister(this);\n if (this.animation) {\n this.animation.destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.animation = undefined;\n this.contentEl = undefined;\n }\n onSplitPaneChanged(ev) {\n const { target } = ev;\n const closestSplitPane = this.el.closest('ion-split-pane');\n /**\n * Menu listens on the body for \"ionSplitPaneVisible\".\n * However, this means the callback will run any time\n * a SplitPane changes visibility. As a result, we only want\n * Menu's visibility state to update if its parent SplitPane\n * changes visibility.\n */\n if (target !== closestSplitPane) {\n return;\n }\n this.isPaneVisible = ev.detail.isPane(this.el);\n this.updateState();\n }\n onBackdropClick(ev) {\n // TODO(FW-2832): type (CustomEvent triggers errors which should be sorted)\n if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {\n const shouldClose = ev.composedPath ? !ev.composedPath().includes(this.menuInnerEl) : false;\n if (shouldClose) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close();\n }\n }\n }\n onKeydown(ev) {\n if (ev.key === 'Escape') {\n this.close();\n }\n }\n /**\n * Returns `true` is the menu is open.\n */\n isOpen() {\n return Promise.resolve(this._isOpen);\n }\n /**\n * Returns `true` is the menu is active.\n *\n * A menu is active when it can be opened or closed, meaning it's enabled\n * and it's not part of a `ion-split-pane`.\n */\n isActive() {\n return Promise.resolve(this._isActive());\n }\n /**\n * Opens the menu. If the menu is already open or it can't be opened,\n * it returns `false`.\n */\n open(animated = true) {\n return this.setOpen(true, animated);\n }\n /**\n * Closes the menu. If the menu is already closed or it can't be closed,\n * it returns `false`.\n */\n close(animated = true) {\n return this.setOpen(false, animated);\n }\n /**\n * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\n * If the operation can't be completed successfully, it returns `false`.\n */\n toggle(animated = true) {\n return this.setOpen(!this._isOpen, animated);\n }\n /**\n * Opens or closes the button.\n * If the operation can't be completed successfully, it returns `false`.\n */\n setOpen(shouldOpen, animated = true) {\n return menuController._setOpen(this, shouldOpen, animated);\n }\n focusFirstDescendant() {\n const { el } = this;\n const firstInput = el.querySelector(focusableQueryString);\n if (firstInput) {\n firstInput.focus();\n }\n else {\n el.focus();\n }\n }\n focusLastDescendant() {\n const { el } = this;\n const inputs = Array.from(el.querySelectorAll(focusableQueryString));\n const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n if (lastInput) {\n lastInput.focus();\n }\n else {\n el.focus();\n }\n }\n trapKeyboardFocus(ev, doc) {\n const target = ev.target;\n if (!target) {\n return;\n }\n /**\n * If the target is inside the menu contents, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (this.el.contains(target)) {\n this.lastFocus = target;\n }\n else {\n /**\n * Otherwise, we are about to have focus go out of the menu.\n * Wrap the focus to either the first or last element.\n */\n /**\n * Once we call `focusFirstDescendant`, another focus event\n * will fire, which will cause `lastFocus` to be updated\n * before we can run the code after that. We cache the value\n * here to avoid that.\n */\n this.focusFirstDescendant();\n /**\n * If the cached last focused element is the same as the now-\n * active element, that means the user was on the first element\n * already and pressed Shift + Tab, so we need to wrap to the\n * last descendant.\n */\n if (this.lastFocus === doc.activeElement) {\n this.focusLastDescendant();\n }\n }\n }\n async _setOpen(shouldOpen, animated = true) {\n // If the menu is disabled or it is currently being animated, let's do nothing\n if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {\n return false;\n }\n this.beforeAnimation(shouldOpen);\n await this.loadAnimation();\n await this.startAnimation(shouldOpen, animated);\n /**\n * If the animation was cancelled then\n * return false because the operation\n * did not succeed.\n */\n if (this.operationCancelled) {\n this.operationCancelled = false;\n return false;\n }\n this.afterAnimation(shouldOpen);\n return true;\n }\n async loadAnimation() {\n // Menu swipe animation takes the menu's inner width as parameter,\n // If `offsetWidth` changes, we need to create a new animation.\n const width = this.menuInnerEl.offsetWidth;\n /**\n * Menu direction animation is calculated based on the document direction.\n * If the document direction changes, we need to create a new animation.\n */\n const isEndSide = isEnd(this.side);\n if (width === this.width && this.animation !== undefined && isEndSide === this.isEndSide) {\n return;\n }\n this.width = width;\n this.isEndSide = isEndSide;\n // Destroy existing animation\n if (this.animation) {\n this.animation.destroy();\n this.animation = undefined;\n }\n // Create new animation\n const animation = (this.animation = await menuController._createAnimation(this.type, this));\n if (!config.getBoolean('animated', true)) {\n animation.duration(0);\n }\n animation.fill('both');\n }\n async startAnimation(shouldOpen, animated) {\n const isReversed = !shouldOpen;\n const mode = getIonMode(this);\n const easing = mode === 'ios' ? iosEasing : mdEasing;\n const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;\n const ani = this.animation\n .direction(isReversed ? 'reverse' : 'normal')\n .easing(isReversed ? easingReverse : easing);\n if (animated) {\n await ani.play();\n }\n else {\n ani.play({ sync: true });\n }\n /**\n * We run this after the play invocation\n * instead of using ani.onFinish so that\n * multiple onFinish callbacks do not get\n * run if an animation is played, stopped,\n * and then played again.\n */\n if (ani.getDirection() === 'reverse') {\n ani.direction('normal');\n }\n }\n _isActive() {\n return !this.disabled && !this.isPaneVisible;\n }\n canSwipe() {\n return this.swipeGesture && !this.isAnimating && this._isActive();\n }\n canStart(detail) {\n // Do not allow swipe gesture if a modal is open\n const isModalPresented = !!document.querySelector('ion-modal.show-modal');\n if (isModalPresented || !this.canSwipe()) {\n return false;\n }\n if (this._isOpen) {\n return true;\n }\n else if (menuController._getOpenSync()) {\n return false;\n }\n return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);\n }\n onWillStart() {\n this.beforeAnimation(!this._isOpen);\n return this.loadAnimation();\n }\n onStart() {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n // the cloned animation should not use an easing curve during seek\n this.animation.progressStart(true, this._isOpen ? 1 : 0);\n }\n onMove(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);\n const stepValue = delta / this.width;\n this.animation.progressStep(this._isOpen ? 1 - stepValue : stepValue);\n }\n onEnd(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const isOpen = this._isOpen;\n const isEndSide = this.isEndSide;\n const delta = computeDelta(detail.deltaX, isOpen, isEndSide);\n const width = this.width;\n const stepValue = delta / width;\n const velocity = detail.velocityX;\n const z = width / 2.0;\n const shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);\n const shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);\n const shouldComplete = isOpen\n ? isEndSide\n ? shouldCompleteRight\n : shouldCompleteLeft\n : isEndSide\n ? shouldCompleteLeft\n : shouldCompleteRight;\n let shouldOpen = !isOpen && shouldComplete;\n if (isOpen && !shouldComplete) {\n shouldOpen = true;\n }\n this.lastOnEnd = detail.currentTime;\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? 0.001 : -0.001;\n /**\n * stepValue can sometimes return a negative\n * value, but you can't have a negative time value\n * for the cubic bezier curve (at least with web animations)\n */\n const adjustedStepValue = stepValue < 0 ? 0.01 : stepValue;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n newStepValue +=\n getTimeGivenProgression([0, 0], [0.4, 0], [0.6, 1], [1, 1], clamp(0, adjustedStepValue, 0.9999))[0] || 0;\n const playTo = this._isOpen ? !shouldComplete : shouldComplete;\n this.animation\n .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')\n .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })\n .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);\n }\n beforeAnimation(shouldOpen) {\n assert(!this.isAnimating, '_before() should not be called while animating');\n // this places the menu into the correct location before it animates in\n // this css class doesn't actually kick off any animations\n this.el.classList.add(SHOW_MENU);\n /**\n * We add a tabindex here so that focus trapping\n * still works even if the menu does not have\n * any focusable elements slotted inside. The\n * focus trapping utility will fallback to focusing\n * the menu so focus does not leave when the menu\n * is open.\n */\n this.el.setAttribute('tabindex', '0');\n if (this.backdropEl) {\n this.backdropEl.classList.add(SHOW_BACKDROP);\n }\n // add css class and hide content behind menu from screen readers\n if (this.contentEl) {\n this.contentEl.classList.add(MENU_CONTENT_OPEN);\n /**\n * When the menu is open and overlaying the main\n * content, the main content should not be announced\n * by the screenreader as the menu is the main\n * focus. This is useful with screenreaders that have\n * \"read from top\" gestures that read the entire\n * page from top to bottom when activated.\n * This should be done before the animation starts\n * so that users cannot accidentally scroll\n * the content while dragging a menu open.\n */\n this.contentEl.setAttribute('aria-hidden', 'true');\n }\n this.blocker.block();\n this.isAnimating = true;\n if (shouldOpen) {\n this.ionWillOpen.emit();\n }\n else {\n this.ionWillClose.emit();\n }\n }\n afterAnimation(isOpen) {\n var _a;\n // keep opening/closing the menu disabled for a touch more yet\n // only add listeners/css if it's enabled and isOpen\n // and only remove listeners/css if it's not open\n // emit opened/closed events\n this._isOpen = isOpen;\n this.isAnimating = false;\n if (!this._isOpen) {\n this.blocker.unblock();\n }\n if (isOpen) {\n // emit open event\n this.ionDidOpen.emit();\n /**\n * Move focus to the menu to prepare focus trapping, as long as\n * it isn't already focused. Use the host element instead of the\n * first descendant to avoid the scroll position jumping around.\n */\n const focusedMenu = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest('ion-menu');\n if (focusedMenu !== this.el) {\n this.el.focus();\n }\n // start focus trapping\n document.addEventListener('focus', this.handleFocus, true);\n }\n else {\n // remove css classes and unhide content from screen readers\n this.el.classList.remove(SHOW_MENU);\n /**\n * Remove tabindex from the menu component\n * so that is cannot be tabbed to.\n */\n this.el.removeAttribute('tabindex');\n if (this.contentEl) {\n this.contentEl.classList.remove(MENU_CONTENT_OPEN);\n /**\n * Remove aria-hidden so screen readers\n * can announce the main content again\n * now that the menu is not the main focus.\n */\n this.contentEl.removeAttribute('aria-hidden');\n }\n if (this.backdropEl) {\n this.backdropEl.classList.remove(SHOW_BACKDROP);\n }\n if (this.animation) {\n this.animation.stop();\n }\n // emit close event\n this.ionDidClose.emit();\n // undo focus trapping so multiple menus don't collide\n document.removeEventListener('focus', this.handleFocus, true);\n }\n }\n updateState() {\n const isActive = this._isActive();\n if (this.gesture) {\n this.gesture.enable(isActive && this.swipeGesture);\n }\n /**\n * If the menu is disabled but it is still open\n * then we should close the menu immediately.\n * Additionally, if the menu is in the process\n * of animating {open, close} and the menu is disabled\n * then it should still be closed immediately.\n */\n if (!isActive) {\n /**\n * It is possible to disable the menu while\n * it is mid-animation. When this happens, we\n * need to set the operationCancelled flag\n * so that this._setOpen knows to return false\n * and not run the \"afterAnimation\" callback.\n */\n if (this.isAnimating) {\n this.operationCancelled = true;\n }\n /**\n * If the menu is disabled then we should\n * forcibly close the menu even if it is open.\n */\n this.afterAnimation(false);\n }\n }\n render() {\n const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;\n const mode = getIonMode(this);\n /**\n * If the Close Watcher is enabled then\n * the ionBackButton listener in the menu controller\n * will handle closing the menu when Escape is pressed.\n */\n return (h(Host, { key: '7443f67fbe5122052025bab862136044fc942401', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: \"navigation\", \"aria-label\": inheritedAttributes['aria-label'] || 'menu', class: {\n [mode]: true,\n [`menu-type-${type}`]: true,\n 'menu-enabled': !disabled,\n [`menu-side-${side}`]: true,\n 'menu-pane-visible': isPaneVisible,\n } }, h(\"div\", { key: '45c7d37ace20f663a4bea89cb38bbc798f88dfbd', class: \"menu-inner\", part: \"container\", ref: (el) => (this.menuInnerEl = el) }, h(\"slot\", { key: '975437a5d4029cc200b6dbc2d47a16b4318c00aa' })), h(\"ion-backdrop\", { key: 'acc8a1f5dc1b1e2a34757bf797e794017f545bdc', ref: (el) => (this.backdropEl = el), class: \"menu-backdrop\", tappable: false, stopPropagation: false, part: \"backdrop\" })));\n }\n static get is() { return \"ion-menu\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"ios\": [\"menu.ios.scss\"],\n \"md\": [\"menu.md.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"ios\": [\"menu.ios.css\"],\n \"md\": [\"menu.md.css\"]\n };\n }\n static get properties() {\n return {\n \"contentId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The `id` of the main content. When using\\na router this is typically `ion-router-outlet`.\\nWhen not using a router, this is typically\\nyour main view's `ion-content`. This is not the\\nid of the `ion-content` inside of your `ion-menu`.\"\n },\n \"attribute\": \"content-id\",\n \"reflect\": true\n },\n \"menuId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"An id for the menu.\"\n },\n \"attribute\": \"menu-id\",\n \"reflect\": true\n },\n \"type\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The display type of the menu.\\nAvailable options: `\\\"overlay\\\"`, `\\\"reveal\\\"`, `\\\"push\\\"`.\"\n },\n \"attribute\": \"type\",\n \"reflect\": false\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the menu is disabled.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"side\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Side\",\n \"resolved\": \"\\\"end\\\" | \\\"start\\\"\",\n \"references\": {\n \"Side\": {\n \"location\": \"import\",\n \"path\": \"./menu-interface\",\n \"id\": \"src/components/menu/menu-interface.ts::Side\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Which side of the view the menu should be placed.\"\n },\n \"attribute\": \"side\",\n \"reflect\": true,\n \"defaultValue\": \"'start'\"\n },\n \"swipeGesture\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, swiping the menu is enabled.\"\n },\n \"attribute\": \"swipe-gesture\",\n \"reflect\": false,\n \"defaultValue\": \"true\"\n },\n \"maxEdgeStart\": {\n \"type\": \"number\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The edge threshold for dragging the menu open.\\nIf a drag/swipe happens over this value, the menu is not triggered.\"\n },\n \"attribute\": \"max-edge-start\",\n \"reflect\": false,\n \"defaultValue\": \"50\"\n }\n };\n }\n static get states() {\n return {\n \"isPaneVisible\": {},\n \"isEndSide\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"ionWillOpen\",\n \"name\": \"ionWillOpen\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is about to be opened.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionWillClose\",\n \"name\": \"ionWillClose\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is about to be closed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionDidOpen\",\n \"name\": \"ionDidOpen\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is open.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionDidClose\",\n \"name\": \"ionDidClose\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is closed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionMenuChange\",\n \"name\": \"ionMenuChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"Emitted when the menu state is changed.\"\n },\n \"complexType\": {\n \"original\": \"MenuChangeEventDetail\",\n \"resolved\": \"MenuChangeEventDetail\",\n \"references\": {\n \"MenuChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"./menu-interface\",\n \"id\": \"src/components/menu/menu-interface.ts::MenuChangeEventDetail\"\n }\n }\n }\n }];\n }\n static get methods() {\n return {\n \"isOpen\": {\n \"complexType\": {\n \"signature\": \"() => Promise<boolean>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Returns `true` is the menu is open.\",\n \"tags\": []\n }\n },\n \"isActive\": {\n \"complexType\": {\n \"signature\": \"() => Promise<boolean>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Returns `true` is the menu is active.\\n\\nA menu is active when it can be opened or closed, meaning it's enabled\\nand it's not part of a `ion-split-pane`.\",\n \"tags\": []\n }\n },\n \"open\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Opens the menu. If the menu is already open or it can't be opened,\\nit returns `false`.\",\n \"tags\": []\n }\n },\n \"close\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Closes the menu. If the menu is already closed or it can't be closed,\\nit returns `false`.\",\n \"tags\": []\n }\n },\n \"toggle\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\\nIf the operation can't be completed successfully, it returns `false`.\",\n \"tags\": []\n }\n },\n \"setOpen\": {\n \"complexType\": {\n \"signature\": \"(shouldOpen: boolean, animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"shouldOpen\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }, {\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Opens or closes the button.\\nIf the operation can't be completed successfully, it returns `false`.\",\n \"tags\": []\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"type\",\n \"methodName\": \"typeChanged\"\n }, {\n \"propName\": \"disabled\",\n \"methodName\": \"disabledChanged\"\n }, {\n \"propName\": \"side\",\n \"methodName\": \"sideChanged\"\n }, {\n \"propName\": \"swipeGesture\",\n \"methodName\": \"swipeGestureChanged\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"ionSplitPaneVisible\",\n \"method\": \"onSplitPaneChanged\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"click\",\n \"method\": \"onBackdropClick\",\n \"target\": undefined,\n \"capture\": true,\n \"passive\": false\n }];\n }\n}\nconst computeDelta = (deltaX, isOpen, isEndSide) => {\n return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);\n};\nconst checkEdgeSide = (win, posX, isEndSide, maxEdgeStart) => {\n if (isEndSide) {\n return posX >= win.innerWidth - maxEdgeStart;\n }\n else {\n return posX <= maxEdgeStart;\n }\n};\nconst SHOW_MENU = 'show-menu';\nconst SHOW_BACKDROP = 'show-backdrop';\nconst MENU_CONTENT_OPEN = 'menu-content-open';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["menuIosCss","IonMenuIosStyle0","menuMdCss","IonMenuMdStyle0","iosEasing","mdEasing","iosEasingReverse","mdEasingReverse","focusableQueryString","Menu","constructor","hostRef","this","lastOnEnd","blocker","GESTURE_CONTROLLER","createBlocker","disableScroll","didLoad","operationCancelled","isAnimating","_isOpen","inheritedAttributes","handleFocus","ev","lastOverlay","getPresentedOverlay","document","contains","el","trapKeyboardFocus","isPaneVisible","isEndSide","contentId","undefined","menuId","type","disabled","side","swipeGesture","maxEdgeStart","typeChanged","oldType","contentEl","classList","remove","add","removeAttribute","menuInnerEl","animation","disabledChanged","updateState","ionMenuChange","emit","open","sideChanged","isEnd","swipeGestureChanged","connectedCallback","customElements","whenDefined","config","get","content","getElementById","console","error","menuController","_register","menuChanged","gesture","import","createGesture","gestureName","gesturePriority","threshold","blurOnStart","canStart","onWillStart","onStart","onMove","onEnd","componentWillLoad","inheritAriaAttributes","componentDidLoad","disconnectedCallback","close","destroy","_unregister","onSplitPaneChanged","target","closestSplitPane","closest","detail","isPane","onBackdropClick","timeStamp","shouldClose","composedPath","includes","preventDefault","stopPropagation","onKeydown","key","isOpen","Promise","resolve","isActive","_isActive","animated","setOpen","toggle","shouldOpen","_setOpen","focusFirstDescendant","firstInput","querySelector","focus","focusLastDescendant","inputs","Array","from","querySelectorAll","lastInput","length","doc","lastFocus","activeElement","beforeAnimation","loadAnimation","startAnimation","afterAnimation","width","offsetWidth","_createAnimation","getBoolean","duration","fill","isReversed","mode","getIonMode","easing","easingReverse","ani","direction","play","sync","getDirection","canSwipe","isModalPresented","_getOpenSync","checkEdgeSide","window","currentX","assert","progressStart","delta","computeDelta","deltaX","stepValue","progressStep","velocity","velocityX","z","shouldCompleteRight","shouldCompleteLeft","shouldComplete","currentTime","newStepValue","adjustedStepValue","getTimeGivenProgression","clamp","playTo","onFinish","oneTimeCallback","progressEnd","SHOW_MENU","setAttribute","backdropEl","SHOW_BACKDROP","MENU_CONTENT_OPEN","block","ionWillOpen","ionWillClose","_a","unblock","ionDidOpen","focusedMenu","addEventListener","stop","ionDidClose","removeEventListener","enable","render","h","Host","onKeyDown","shouldUseCloseWatcher","role","class","part","ref","tappable","Math","max","win","posX","innerWidth"],"sources":["../node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css?tag=ion-menu&mode=ios&encapsulation=shadow","../node_modules/@ionic/core/dist/collection/components/menu/menu.md.css?tag=ion-menu&mode=md&encapsulation=shadow","../node_modules/@ionic/core/dist/collection/components/menu/menu.js"],"sourcesContent":["/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host {\n /**\n * @prop --background: Background of the menu\n *\n * @prop --min-width: Minimum width of the menu\n * @prop --width: Width of the menu\n * @prop --max-width: Maximum width of the menu\n *\n * @prop --min-height: Minimum height of the menu\n * @prop --height: Height of the menu\n * @prop --max-height: Maximum height of the menu\n */\n --width: 304px;\n --min-width: auto;\n --max-width: auto;\n --height: 100%;\n --min-height: auto;\n --max-height: auto;\n --background: var(--ion-background-color, #fff);\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: none;\n position: absolute;\n contain: strict;\n}\n\n:host(.show-menu) {\n display: block;\n}\n\n.menu-inner {\n transform: translateX(-9999px);\n display: flex;\n position: absolute;\n flex-direction: column;\n justify-content: space-between;\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n height: var(--height);\n min-height: var(--min-height);\n max-height: var(--max-height);\n background: var(--background);\n contain: strict;\n}\n\n:host(.menu-side-start) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The left side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n inset-inline-start: 0;\n inset-inline-end: auto;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n left: 0;\n right: auto;\n }\n :host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n }\n}\n\n:host(.menu-side-end) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The right side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n left: auto;\n right: 0;\n }\n :host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n }\n}\n\nion-backdrop {\n display: none;\n opacity: 0.01;\n z-index: -1;\n}\n\n@media (max-width: 340px) {\n .menu-inner {\n --width: 264px;\n }\n}\n:host(.menu-type-reveal) {\n z-index: 0;\n}\n\n:host(.menu-type-reveal.show-menu) .menu-inner {\n transform: translate3d(0, 0, 0);\n}\n\n:host(.menu-type-overlay) {\n z-index: 1000;\n}\n\n:host(.menu-type-overlay) .show-backdrop {\n display: block;\n cursor: pointer;\n}\n\n:host(.menu-pane-visible) {\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n}\n\n:host(.menu-pane-visible) .menu-inner {\n left: 0;\n right: 0;\n width: auto;\n transform: none;\n box-shadow: none;\n}\n\n:host(.menu-pane-visible) ion-backdrop {\n /* stylelint-disable-next-line declaration-no-important */\n display: hidden !important;\n}\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host(.menu-type-push) {\n z-index: 1000;\n}\n\n:host(.menu-type-push) .show-backdrop {\n display: block;\n}","/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host {\n /**\n * @prop --background: Background of the menu\n *\n * @prop --min-width: Minimum width of the menu\n * @prop --width: Width of the menu\n * @prop --max-width: Maximum width of the menu\n *\n * @prop --min-height: Minimum height of the menu\n * @prop --height: Height of the menu\n * @prop --max-height: Maximum height of the menu\n */\n --width: 304px;\n --min-width: auto;\n --max-width: auto;\n --height: 100%;\n --min-height: auto;\n --max-height: auto;\n --background: var(--ion-background-color, #fff);\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: none;\n position: absolute;\n contain: strict;\n}\n\n:host(.show-menu) {\n display: block;\n}\n\n.menu-inner {\n transform: translateX(-9999px);\n display: flex;\n position: absolute;\n flex-direction: column;\n justify-content: space-between;\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n height: var(--height);\n min-height: var(--min-height);\n max-height: var(--max-height);\n background: var(--background);\n contain: strict;\n}\n\n:host(.menu-side-start) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The left side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n inset-inline-start: 0;\n inset-inline-end: auto;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-start) .menu-inner {\n left: 0;\n right: auto;\n }\n :host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: auto;\n right: 0;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-start) .menu-inner, :host-context([dir=rtl]).menu-side-start .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-start:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The right side of the menu touches the screen edge.\n * The right side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-right: unset;\n --ion-safe-area-left: 0px;\n }\n}\n\n:host(.menu-side-end) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * LTR:\n * The right side of the menu touches the screen edge. The safe area padding has\n * already been set in the core styles, so there's no need to set it again.\n * The left side of the menu is not touching the screen edge. Padding is not\n * applied to the left side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: 0px;\n top: 0;\n bottom: 0;\n}\n@supports (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n}\n@supports not (inset-inline-start: 0) {\n :host(.menu-side-end) .menu-inner {\n left: auto;\n right: 0;\n }\n :host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n @supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n left: unset;\n right: unset;\n left: 0;\n right: auto;\n }\n }\n}\n:host-context([dir=rtl]):host(.menu-side-end) .menu-inner, :host-context([dir=rtl]).menu-side-end .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n}\n\n@supports selector(:dir(rtl)) {\n :host(.menu-side-end:dir(rtl)) .menu-inner {\n /**\n * Menu does not cover the whole screen so we need to set the safe area for the\n * side that touches the screen edge only. Since safe area is not logical, it\n * needs to be applied to the correct side depending on the language direction.\n * Otherwise, the content will have less space on both sides.\n *\n * RTL:\n * The left side of the menu touches the screen edge.\n * The left side needs to revert back to the default value that was set in the core styles, so we unset it here.\n * This would keep the variable consistent with the core styles.\n * Additionally, it would continue to allow users to override the variable if they choose to.\n * The right side of the menu is not touching the screen edge. Padding is not\n * applied to the right side of the menu. A value of 0 is set.\n */\n --ion-safe-area-left: unset;\n --ion-safe-area-right: 0px;\n }\n}\n\nion-backdrop {\n display: none;\n opacity: 0.01;\n z-index: -1;\n}\n\n@media (max-width: 340px) {\n .menu-inner {\n --width: 264px;\n }\n}\n:host(.menu-type-reveal) {\n z-index: 0;\n}\n\n:host(.menu-type-reveal.show-menu) .menu-inner {\n transform: translate3d(0, 0, 0);\n}\n\n:host(.menu-type-overlay) {\n z-index: 1000;\n}\n\n:host(.menu-type-overlay) .show-backdrop {\n display: block;\n cursor: pointer;\n}\n\n:host(.menu-pane-visible) {\n width: var(--width);\n min-width: var(--min-width);\n max-width: var(--max-width);\n}\n\n:host(.menu-pane-visible) .menu-inner {\n left: 0;\n right: 0;\n width: auto;\n transform: none;\n box-shadow: none;\n}\n\n:host(.menu-pane-visible) ion-backdrop {\n /* stylelint-disable-next-line declaration-no-important */\n display: hidden !important;\n}\n\n/**\n * Convert a font size to a dynamic font size.\n * Fonts that participate in Dynamic Type should use\n * dynamic font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param unit (optional) - The unit to convert to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a maximum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * a minimum font size.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * Convert a font size to a dynamic font size but impose\n * maximum and minimum font sizes.\n * @param size - The initial font size including the unit (i.e. px or pt)\n * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).\n * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).\n * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to\n * convert to a unit other than $baselineUnit.\n */\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n:host(.menu-type-overlay) .menu-inner {\n box-shadow: 4px 0px 16px rgba(0, 0, 0, 0.18);\n}","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { Build, Host, h } from \"@stencil/core\";\nimport { getTimeGivenProgression } from \"../../utils/animation/cubic-bezier\";\nimport { GESTURE_CONTROLLER } from \"../../utils/gesture/index\";\nimport { shouldUseCloseWatcher } from \"../../utils/hardware-back-button\";\nimport { inheritAriaAttributes, assert, clamp, isEndSide as isEnd } from \"../../utils/helpers\";\nimport { menuController } from \"../../utils/menu-controller/index\";\nimport { getPresentedOverlay } from \"../../utils/overlays\";\nimport { config } from \"../../global/config\";\nimport { getIonMode } from \"../../global/ionic-global\";\nconst iosEasing = 'cubic-bezier(0.32,0.72,0,1)';\nconst mdEasing = 'cubic-bezier(0.0,0.0,0.2,1)';\nconst iosEasingReverse = 'cubic-bezier(1, 0, 0.68, 0.28)';\nconst mdEasingReverse = 'cubic-bezier(0.4, 0, 0.6, 1)';\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]), input:not([type=hidden]):not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), .ion-focusable:not([tabindex^=\"-\"])';\n/**\n * @part container - The container for the menu content.\n * @part backdrop - The backdrop that appears over the main content when the menu is open.\n */\nexport class Menu {\n constructor() {\n this.lastOnEnd = 0;\n this.blocker = GESTURE_CONTROLLER.createBlocker({ disableScroll: true });\n this.didLoad = false;\n /**\n * Flag used to determine if an open/close\n * operation was cancelled. For example, if\n * an app calls \"menu.open\" then disables the menu\n * part way through the animation, then this would\n * be considered a cancelled operation.\n */\n this.operationCancelled = false;\n this.isAnimating = false;\n this._isOpen = false;\n this.inheritedAttributes = {};\n this.handleFocus = (ev) => {\n /**\n * Overlays have their own focus trapping listener\n * so we do not want the two listeners to conflict\n * with each other. If the top-most overlay that is\n * open does not contain this ion-menu, then ion-menu's\n * focus trapping should not run.\n */\n const lastOverlay = getPresentedOverlay(document);\n if (lastOverlay && !lastOverlay.contains(this.el)) {\n return;\n }\n this.trapKeyboardFocus(ev, document);\n };\n this.isPaneVisible = false;\n this.isEndSide = false;\n this.contentId = undefined;\n this.menuId = undefined;\n this.type = undefined;\n this.disabled = false;\n this.side = 'start';\n this.swipeGesture = true;\n this.maxEdgeStart = 50;\n }\n typeChanged(type, oldType) {\n const contentEl = this.contentEl;\n if (contentEl) {\n if (oldType !== undefined) {\n contentEl.classList.remove(`menu-content-${oldType}`);\n }\n contentEl.classList.add(`menu-content-${type}`);\n contentEl.removeAttribute('style');\n }\n if (this.menuInnerEl) {\n // Remove effects of previous animations\n this.menuInnerEl.removeAttribute('style');\n }\n this.animation = undefined;\n }\n disabledChanged() {\n this.updateState();\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen,\n });\n }\n sideChanged() {\n this.isEndSide = isEnd(this.side);\n /**\n * Menu direction animation is calculated based on the document direction.\n * If the document direction changes, we need to create a new animation.\n */\n this.animation = undefined;\n }\n swipeGestureChanged() {\n this.updateState();\n }\n async connectedCallback() {\n // TODO: connectedCallback is fired in CE build\n // before WC is defined. This needs to be fixed in Stencil.\n if (typeof customElements !== 'undefined' && customElements != null) {\n await customElements.whenDefined('ion-menu');\n }\n if (this.type === undefined) {\n this.type = config.get('menuType', 'overlay');\n }\n if (!Build.isBrowser) {\n return;\n }\n const content = this.contentId !== undefined ? document.getElementById(this.contentId) : null;\n if (content === null) {\n console.error('Menu: must have a \"content\" element to listen for drag events on.');\n return;\n }\n if (this.el.contains(content)) {\n console.error(`Menu: \"contentId\" should refer to the main view's ion-content, not the ion-content inside of the ion-menu.`);\n }\n this.contentEl = content;\n // add menu's content classes\n content.classList.add('menu-content');\n this.typeChanged(this.type, undefined);\n this.sideChanged();\n // register this menu with the app's menu controller\n menuController._register(this);\n this.menuChanged();\n this.gesture = (await import('../../utils/gesture')).createGesture({\n el: document,\n gestureName: 'menu-swipe',\n gesturePriority: 30,\n threshold: 10,\n blurOnStart: true,\n canStart: (ev) => this.canStart(ev),\n onWillStart: () => this.onWillStart(),\n onStart: () => this.onStart(),\n onMove: (ev) => this.onMove(ev),\n onEnd: (ev) => this.onEnd(ev),\n });\n this.updateState();\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n async componentDidLoad() {\n this.didLoad = true;\n this.menuChanged();\n this.updateState();\n }\n menuChanged() {\n /**\n * Inform dependent components such as ion-menu-button\n * that the menu is ready. Note that we only want to do this\n * once the menu has been rendered which is why we check for didLoad.\n */\n if (this.didLoad) {\n this.ionMenuChange.emit({ disabled: this.disabled, open: this._isOpen });\n }\n }\n async disconnectedCallback() {\n /**\n * The menu should be closed when it is\n * unmounted from the DOM.\n * This is an async call, so we need to wait for\n * this to finish otherwise contentEl\n * will not have MENU_CONTENT_OPEN removed.\n */\n await this.close(false);\n this.blocker.destroy();\n menuController._unregister(this);\n if (this.animation) {\n this.animation.destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.animation = undefined;\n this.contentEl = undefined;\n }\n onSplitPaneChanged(ev) {\n const { target } = ev;\n const closestSplitPane = this.el.closest('ion-split-pane');\n /**\n * Menu listens on the body for \"ionSplitPaneVisible\".\n * However, this means the callback will run any time\n * a SplitPane changes visibility. As a result, we only want\n * Menu's visibility state to update if its parent SplitPane\n * changes visibility.\n */\n if (target !== closestSplitPane) {\n return;\n }\n this.isPaneVisible = ev.detail.isPane(this.el);\n this.updateState();\n }\n onBackdropClick(ev) {\n // TODO(FW-2832): type (CustomEvent triggers errors which should be sorted)\n if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {\n const shouldClose = ev.composedPath ? !ev.composedPath().includes(this.menuInnerEl) : false;\n if (shouldClose) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close();\n }\n }\n }\n onKeydown(ev) {\n if (ev.key === 'Escape') {\n this.close();\n }\n }\n /**\n * Returns `true` is the menu is open.\n */\n isOpen() {\n return Promise.resolve(this._isOpen);\n }\n /**\n * Returns `true` is the menu is active.\n *\n * A menu is active when it can be opened or closed, meaning it's enabled\n * and it's not part of a `ion-split-pane`.\n */\n isActive() {\n return Promise.resolve(this._isActive());\n }\n /**\n * Opens the menu. If the menu is already open or it can't be opened,\n * it returns `false`.\n */\n open(animated = true) {\n return this.setOpen(true, animated);\n }\n /**\n * Closes the menu. If the menu is already closed or it can't be closed,\n * it returns `false`.\n */\n close(animated = true) {\n return this.setOpen(false, animated);\n }\n /**\n * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\n * If the operation can't be completed successfully, it returns `false`.\n */\n toggle(animated = true) {\n return this.setOpen(!this._isOpen, animated);\n }\n /**\n * Opens or closes the button.\n * If the operation can't be completed successfully, it returns `false`.\n */\n setOpen(shouldOpen, animated = true) {\n return menuController._setOpen(this, shouldOpen, animated);\n }\n focusFirstDescendant() {\n const { el } = this;\n const firstInput = el.querySelector(focusableQueryString);\n if (firstInput) {\n firstInput.focus();\n }\n else {\n el.focus();\n }\n }\n focusLastDescendant() {\n const { el } = this;\n const inputs = Array.from(el.querySelectorAll(focusableQueryString));\n const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n if (lastInput) {\n lastInput.focus();\n }\n else {\n el.focus();\n }\n }\n trapKeyboardFocus(ev, doc) {\n const target = ev.target;\n if (!target) {\n return;\n }\n /**\n * If the target is inside the menu contents, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (this.el.contains(target)) {\n this.lastFocus = target;\n }\n else {\n /**\n * Otherwise, we are about to have focus go out of the menu.\n * Wrap the focus to either the first or last element.\n */\n /**\n * Once we call `focusFirstDescendant`, another focus event\n * will fire, which will cause `lastFocus` to be updated\n * before we can run the code after that. We cache the value\n * here to avoid that.\n */\n this.focusFirstDescendant();\n /**\n * If the cached last focused element is the same as the now-\n * active element, that means the user was on the first element\n * already and pressed Shift + Tab, so we need to wrap to the\n * last descendant.\n */\n if (this.lastFocus === doc.activeElement) {\n this.focusLastDescendant();\n }\n }\n }\n async _setOpen(shouldOpen, animated = true) {\n // If the menu is disabled or it is currently being animated, let's do nothing\n if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {\n return false;\n }\n this.beforeAnimation(shouldOpen);\n await this.loadAnimation();\n await this.startAnimation(shouldOpen, animated);\n /**\n * If the animation was cancelled then\n * return false because the operation\n * did not succeed.\n */\n if (this.operationCancelled) {\n this.operationCancelled = false;\n return false;\n }\n this.afterAnimation(shouldOpen);\n return true;\n }\n async loadAnimation() {\n // Menu swipe animation takes the menu's inner width as parameter,\n // If `offsetWidth` changes, we need to create a new animation.\n const width = this.menuInnerEl.offsetWidth;\n /**\n * Menu direction animation is calculated based on the document direction.\n * If the document direction changes, we need to create a new animation.\n */\n const isEndSide = isEnd(this.side);\n if (width === this.width && this.animation !== undefined && isEndSide === this.isEndSide) {\n return;\n }\n this.width = width;\n this.isEndSide = isEndSide;\n // Destroy existing animation\n if (this.animation) {\n this.animation.destroy();\n this.animation = undefined;\n }\n // Create new animation\n const animation = (this.animation = await menuController._createAnimation(this.type, this));\n if (!config.getBoolean('animated', true)) {\n animation.duration(0);\n }\n animation.fill('both');\n }\n async startAnimation(shouldOpen, animated) {\n const isReversed = !shouldOpen;\n const mode = getIonMode(this);\n const easing = mode === 'ios' ? iosEasing : mdEasing;\n const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;\n const ani = this.animation\n .direction(isReversed ? 'reverse' : 'normal')\n .easing(isReversed ? easingReverse : easing);\n if (animated) {\n await ani.play();\n }\n else {\n ani.play({ sync: true });\n }\n /**\n * We run this after the play invocation\n * instead of using ani.onFinish so that\n * multiple onFinish callbacks do not get\n * run if an animation is played, stopped,\n * and then played again.\n */\n if (ani.getDirection() === 'reverse') {\n ani.direction('normal');\n }\n }\n _isActive() {\n return !this.disabled && !this.isPaneVisible;\n }\n canSwipe() {\n return this.swipeGesture && !this.isAnimating && this._isActive();\n }\n canStart(detail) {\n // Do not allow swipe gesture if a modal is open\n const isModalPresented = !!document.querySelector('ion-modal.show-modal');\n if (isModalPresented || !this.canSwipe()) {\n return false;\n }\n if (this._isOpen) {\n return true;\n }\n else if (menuController._getOpenSync()) {\n return false;\n }\n return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);\n }\n onWillStart() {\n this.beforeAnimation(!this._isOpen);\n return this.loadAnimation();\n }\n onStart() {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n // the cloned animation should not use an easing curve during seek\n this.animation.progressStart(true, this._isOpen ? 1 : 0);\n }\n onMove(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);\n const stepValue = delta / this.width;\n this.animation.progressStep(this._isOpen ? 1 - stepValue : stepValue);\n }\n onEnd(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const isOpen = this._isOpen;\n const isEndSide = this.isEndSide;\n const delta = computeDelta(detail.deltaX, isOpen, isEndSide);\n const width = this.width;\n const stepValue = delta / width;\n const velocity = detail.velocityX;\n const z = width / 2.0;\n const shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);\n const shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);\n const shouldComplete = isOpen\n ? isEndSide\n ? shouldCompleteRight\n : shouldCompleteLeft\n : isEndSide\n ? shouldCompleteLeft\n : shouldCompleteRight;\n let shouldOpen = !isOpen && shouldComplete;\n if (isOpen && !shouldComplete) {\n shouldOpen = true;\n }\n this.lastOnEnd = detail.currentTime;\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? 0.001 : -0.001;\n /**\n * stepValue can sometimes return a negative\n * value, but you can't have a negative time value\n * for the cubic bezier curve (at least with web animations)\n */\n const adjustedStepValue = stepValue < 0 ? 0.01 : stepValue;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n newStepValue +=\n getTimeGivenProgression([0, 0], [0.4, 0], [0.6, 1], [1, 1], clamp(0, adjustedStepValue, 0.9999))[0] || 0;\n const playTo = this._isOpen ? !shouldComplete : shouldComplete;\n this.animation\n .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')\n .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })\n .progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);\n }\n beforeAnimation(shouldOpen) {\n assert(!this.isAnimating, '_before() should not be called while animating');\n // this places the menu into the correct location before it animates in\n // this css class doesn't actually kick off any animations\n this.el.classList.add(SHOW_MENU);\n /**\n * We add a tabindex here so that focus trapping\n * still works even if the menu does not have\n * any focusable elements slotted inside. The\n * focus trapping utility will fallback to focusing\n * the menu so focus does not leave when the menu\n * is open.\n */\n this.el.setAttribute('tabindex', '0');\n if (this.backdropEl) {\n this.backdropEl.classList.add(SHOW_BACKDROP);\n }\n // add css class and hide content behind menu from screen readers\n if (this.contentEl) {\n this.contentEl.classList.add(MENU_CONTENT_OPEN);\n /**\n * When the menu is open and overlaying the main\n * content, the main content should not be announced\n * by the screenreader as the menu is the main\n * focus. This is useful with screenreaders that have\n * \"read from top\" gestures that read the entire\n * page from top to bottom when activated.\n * This should be done before the animation starts\n * so that users cannot accidentally scroll\n * the content while dragging a menu open.\n */\n this.contentEl.setAttribute('aria-hidden', 'true');\n }\n this.blocker.block();\n this.isAnimating = true;\n if (shouldOpen) {\n this.ionWillOpen.emit();\n }\n else {\n this.ionWillClose.emit();\n }\n }\n afterAnimation(isOpen) {\n var _a;\n // keep opening/closing the menu disabled for a touch more yet\n // only add listeners/css if it's enabled and isOpen\n // and only remove listeners/css if it's not open\n // emit opened/closed events\n this._isOpen = isOpen;\n this.isAnimating = false;\n if (!this._isOpen) {\n this.blocker.unblock();\n }\n if (isOpen) {\n // emit open event\n this.ionDidOpen.emit();\n /**\n * Move focus to the menu to prepare focus trapping, as long as\n * it isn't already focused. Use the host element instead of the\n * first descendant to avoid the scroll position jumping around.\n */\n const focusedMenu = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest('ion-menu');\n if (focusedMenu !== this.el) {\n this.el.focus();\n }\n // start focus trapping\n document.addEventListener('focus', this.handleFocus, true);\n }\n else {\n // remove css classes and unhide content from screen readers\n this.el.classList.remove(SHOW_MENU);\n /**\n * Remove tabindex from the menu component\n * so that is cannot be tabbed to.\n */\n this.el.removeAttribute('tabindex');\n if (this.contentEl) {\n this.contentEl.classList.remove(MENU_CONTENT_OPEN);\n /**\n * Remove aria-hidden so screen readers\n * can announce the main content again\n * now that the menu is not the main focus.\n */\n this.contentEl.removeAttribute('aria-hidden');\n }\n if (this.backdropEl) {\n this.backdropEl.classList.remove(SHOW_BACKDROP);\n }\n if (this.animation) {\n this.animation.stop();\n }\n // emit close event\n this.ionDidClose.emit();\n // undo focus trapping so multiple menus don't collide\n document.removeEventListener('focus', this.handleFocus, true);\n }\n }\n updateState() {\n const isActive = this._isActive();\n if (this.gesture) {\n this.gesture.enable(isActive && this.swipeGesture);\n }\n /**\n * If the menu is disabled but it is still open\n * then we should close the menu immediately.\n * Additionally, if the menu is in the process\n * of animating {open, close} and the menu is disabled\n * then it should still be closed immediately.\n */\n if (!isActive) {\n /**\n * It is possible to disable the menu while\n * it is mid-animation. When this happens, we\n * need to set the operationCancelled flag\n * so that this._setOpen knows to return false\n * and not run the \"afterAnimation\" callback.\n */\n if (this.isAnimating) {\n this.operationCancelled = true;\n }\n /**\n * If the menu is disabled then we should\n * forcibly close the menu even if it is open.\n */\n this.afterAnimation(false);\n }\n }\n render() {\n const { type, disabled, isPaneVisible, inheritedAttributes, side } = this;\n const mode = getIonMode(this);\n /**\n * If the Close Watcher is enabled then\n * the ionBackButton listener in the menu controller\n * will handle closing the menu when Escape is pressed.\n */\n return (h(Host, { key: '7443f67fbe5122052025bab862136044fc942401', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: \"navigation\", \"aria-label\": inheritedAttributes['aria-label'] || 'menu', class: {\n [mode]: true,\n [`menu-type-${type}`]: true,\n 'menu-enabled': !disabled,\n [`menu-side-${side}`]: true,\n 'menu-pane-visible': isPaneVisible,\n } }, h(\"div\", { key: '45c7d37ace20f663a4bea89cb38bbc798f88dfbd', class: \"menu-inner\", part: \"container\", ref: (el) => (this.menuInnerEl = el) }, h(\"slot\", { key: '975437a5d4029cc200b6dbc2d47a16b4318c00aa' })), h(\"ion-backdrop\", { key: 'acc8a1f5dc1b1e2a34757bf797e794017f545bdc', ref: (el) => (this.backdropEl = el), class: \"menu-backdrop\", tappable: false, stopPropagation: false, part: \"backdrop\" })));\n }\n static get is() { return \"ion-menu\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"ios\": [\"menu.ios.scss\"],\n \"md\": [\"menu.md.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"ios\": [\"menu.ios.css\"],\n \"md\": [\"menu.md.css\"]\n };\n }\n static get properties() {\n return {\n \"contentId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The `id` of the main content. When using\\na router this is typically `ion-router-outlet`.\\nWhen not using a router, this is typically\\nyour main view's `ion-content`. This is not the\\nid of the `ion-content` inside of your `ion-menu`.\"\n },\n \"attribute\": \"content-id\",\n \"reflect\": true\n },\n \"menuId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"An id for the menu.\"\n },\n \"attribute\": \"menu-id\",\n \"reflect\": true\n },\n \"type\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The display type of the menu.\\nAvailable options: `\\\"overlay\\\"`, `\\\"reveal\\\"`, `\\\"push\\\"`.\"\n },\n \"attribute\": \"type\",\n \"reflect\": false\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the menu is disabled.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"side\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Side\",\n \"resolved\": \"\\\"end\\\" | \\\"start\\\"\",\n \"references\": {\n \"Side\": {\n \"location\": \"import\",\n \"path\": \"./menu-interface\",\n \"id\": \"src/components/menu/menu-interface.ts::Side\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Which side of the view the menu should be placed.\"\n },\n \"attribute\": \"side\",\n \"reflect\": true,\n \"defaultValue\": \"'start'\"\n },\n \"swipeGesture\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, swiping the menu is enabled.\"\n },\n \"attribute\": \"swipe-gesture\",\n \"reflect\": false,\n \"defaultValue\": \"true\"\n },\n \"maxEdgeStart\": {\n \"type\": \"number\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The edge threshold for dragging the menu open.\\nIf a drag/swipe happens over this value, the menu is not triggered.\"\n },\n \"attribute\": \"max-edge-start\",\n \"reflect\": false,\n \"defaultValue\": \"50\"\n }\n };\n }\n static get states() {\n return {\n \"isPaneVisible\": {},\n \"isEndSide\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"ionWillOpen\",\n \"name\": \"ionWillOpen\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is about to be opened.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionWillClose\",\n \"name\": \"ionWillClose\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is about to be closed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionDidOpen\",\n \"name\": \"ionDidOpen\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is open.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionDidClose\",\n \"name\": \"ionDidClose\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the menu is closed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"ionMenuChange\",\n \"name\": \"ionMenuChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"Emitted when the menu state is changed.\"\n },\n \"complexType\": {\n \"original\": \"MenuChangeEventDetail\",\n \"resolved\": \"MenuChangeEventDetail\",\n \"references\": {\n \"MenuChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"./menu-interface\",\n \"id\": \"src/components/menu/menu-interface.ts::MenuChangeEventDetail\"\n }\n }\n }\n }];\n }\n static get methods() {\n return {\n \"isOpen\": {\n \"complexType\": {\n \"signature\": \"() => Promise<boolean>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Returns `true` is the menu is open.\",\n \"tags\": []\n }\n },\n \"isActive\": {\n \"complexType\": {\n \"signature\": \"() => Promise<boolean>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Returns `true` is the menu is active.\\n\\nA menu is active when it can be opened or closed, meaning it's enabled\\nand it's not part of a `ion-split-pane`.\",\n \"tags\": []\n }\n },\n \"open\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Opens the menu. If the menu is already open or it can't be opened,\\nit returns `false`.\",\n \"tags\": []\n }\n },\n \"close\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Closes the menu. If the menu is already closed or it can't be closed,\\nit returns `false`.\",\n \"tags\": []\n }\n },\n \"toggle\": {\n \"complexType\": {\n \"signature\": \"(animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\\nIf the operation can't be completed successfully, it returns `false`.\",\n \"tags\": []\n }\n },\n \"setOpen\": {\n \"complexType\": {\n \"signature\": \"(shouldOpen: boolean, animated?: boolean) => Promise<boolean>\",\n \"parameters\": [{\n \"name\": \"shouldOpen\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }, {\n \"name\": \"animated\",\n \"type\": \"boolean\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<boolean>\"\n },\n \"docs\": {\n \"text\": \"Opens or closes the button.\\nIf the operation can't be completed successfully, it returns `false`.\",\n \"tags\": []\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"type\",\n \"methodName\": \"typeChanged\"\n }, {\n \"propName\": \"disabled\",\n \"methodName\": \"disabledChanged\"\n }, {\n \"propName\": \"side\",\n \"methodName\": \"sideChanged\"\n }, {\n \"propName\": \"swipeGesture\",\n \"methodName\": \"swipeGestureChanged\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"ionSplitPaneVisible\",\n \"method\": \"onSplitPaneChanged\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"click\",\n \"method\": \"onBackdropClick\",\n \"target\": undefined,\n \"capture\": true,\n \"passive\": false\n }];\n }\n}\nconst computeDelta = (deltaX, isOpen, isEndSide) => {\n return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);\n};\nconst checkEdgeSide = (win, posX, isEndSide, maxEdgeStart) => {\n if (isEndSide) {\n return posX >= win.innerWidth - maxEdgeStart;\n }\n else {\n return posX <= maxEdgeStart;\n }\n};\nconst SHOW_MENU = 'show-menu';\nconst SHOW_BACKDROP = 'show-backdrop';\nconst MENU_CONTENT_OPEN = 'menu-content-open';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,e as t,h as l,H as i,d as s,i as o}from"./p-3c2b721e.js";import{c as a}from"./p-56bf9fdf.js";import{c as r}from"./p-b8ac0ee4.js";import{i as n,c}from"./p-c8d1a48e.js";import{i as d,f as h,o as p,k as b,n as g}from"./p-9e7f0522.js";import{p as u}from"./p-3505dfe2.js";import{h as m,j as f,k as x}from"./p-e32a52ee.js";import{i as w}from"./p-4d0cb38d.js";import{h as v,c as y}from"./p-669fab6c.js";import{w as k}from"./p-b951a801.js";import{t as j,k as C}from"./p-0ee8b7a7.js";import{g as z}from"./p-2dddbb15.js";import"./p-7efd6867.js";import"./p-9b369d09.js";import"./p-0feec79b.js";const $=":host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:0.6;--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(:not(.legacy-select)){width:100%;min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.legacy-select){-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;align-items:center;overflow:hidden}:host(.in-item:not(.legacy-select)){flex:1 1 0}:host(.in-item.legacy-select){position:static;max-width:45%}:host(.select-disabled){pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host([slot=start]:not(.legacy-select)),:host([slot=end]:not(.legacy-select)){width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}:host(.legacy-select) label{top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;appearance:none;outline:none;display:flex;align-items:center;opacity:0}@supports (inset-inline-start: 0){:host(.legacy-select) label{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.legacy-select) label{left:0}:host-context([dir=rtl]):host(.legacy-select) label,:host-context([dir=rtl]).legacy-select label{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.legacy-select:dir(rtl)) label{left:unset;right:unset;right:0}}}:host(.legacy-select) label::-moz-focus-inner{border:0}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:flex;position:relative;flex-grow:1;align-items:center;height:inherit;min-height:inherit;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;box-sizing:border-box}.select-wrapper .select-placeholder{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:flex;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.label-text-wrapper{display:flex;align-items:center;max-width:200px;transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:flex;align-items:center;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{justify-content:space-between}:host(.select-justify-start) .select-wrapper{justify-content:start}:host(.select-justify-end) .select-wrapper{justify-content:end}:host(.select-label-placement-start) .select-wrapper{flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{flex-direction:column;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){flex-shrink:0}::slotted([slot=start]){margin-inline-end:16px;margin-inline-start:0}::slotted([slot=end]){margin-inline-start:16px;margin-inline-end:0}:host(.legacy-select){--padding-top:10px;--padding-end:8px;--padding-bottom:10px;--padding-start:16px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, #595959)}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}";const O=$;const S=":host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:0.6;--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(:not(.legacy-select)){width:100%;min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.legacy-select){-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;align-items:center;overflow:hidden}:host(.in-item:not(.legacy-select)){flex:1 1 0}:host(.in-item.legacy-select){position:static;max-width:45%}:host(.select-disabled){pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host([slot=start]:not(.legacy-select)),:host([slot=end]:not(.legacy-select)){width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}:host(.legacy-select) label{top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;appearance:none;outline:none;display:flex;align-items:center;opacity:0}@supports (inset-inline-start: 0){:host(.legacy-select) label{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.legacy-select) label{left:0}:host-context([dir=rtl]):host(.legacy-select) label,:host-context([dir=rtl]).legacy-select label{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.legacy-select:dir(rtl)) label{left:unset;right:unset;right:0}}}:host(.legacy-select) label::-moz-focus-inner{border:0}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:flex;position:relative;flex-grow:1;align-items:center;height:inherit;min-height:inherit;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;box-sizing:border-box}.select-wrapper .select-placeholder{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:flex;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.label-text-wrapper{display:flex;align-items:center;max-width:200px;transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:flex;align-items:center;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{justify-content:space-between}:host(.select-justify-start) .select-wrapper{justify-content:start}:host(.select-justify-end) .select-wrapper{justify-content:end}:host(.select-label-placement-start) .select-wrapper{flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{flex-direction:column;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){flex-shrink:0}::slotted([slot=start]){margin-inline-end:16px;margin-inline-start:0}::slotted([slot=end]){margin-inline-start:16px;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, #f2f2f2);--border-color:var(--ion-color-step-500, gray);--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, #e6e6e6);--border-color:var(--ion-color-step-750, #404040)}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.ion-focused){--background:var(--ion-color-step-150, #d9d9d9);--border-color:var(--ion-color-step-750, #404040)}:host(.select-fill-solid) .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}:host-context([dir=rtl]):host(.select-fill-solid) .select-wrapper,:host-context([dir=rtl]).select-fill-solid .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}@supports selector(:dir(rtl)){:host(.select-fill-solid:dir(rtl)) .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, #b3b3b3);--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, #404040)}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.ion-focused){--border-width:2px;--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-ltr.select-fill-outline) .select-outline-start{border-radius:var(--border-radius) 0px 0px var(--border-radius)}:host(.select-rtl.select-fill-outline) .select-outline-start{border-radius:0px var(--border-radius) var(--border-radius) 0px}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-ltr.select-fill-outline) .select-outline-end{border-radius:0px var(--border-radius) var(--border-radius) 0px}:host(.select-rtl.select-fill-outline) .select-outline-end{border-radius:var(--border-radius) 0px 0px var(--border-radius)}:host(.select-fill-outline) .select-outline-end{flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))))}:host(.legacy-select){--padding-top:10px;--padding-end:0;--padding-bottom:10px;--padding-start:16px}.select-icon{width:0.8125rem;transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, gray)}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.ion-focused) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.ion-focused) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:2px;transform:scale(0);transition:transform 200ms;background:var(--highlight-color)}@supports (inset-inline-start: 0){.select-highlight{inset-inline-start:0}}@supports not (inset-inline-start: 0){.select-highlight{left:0}:host-context([dir=rtl]) .select-highlight{left:unset;right:unset;right:0}[dir=rtl] .select-highlight{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.select-highlight:dir(rtl){left:unset;right:unset;right:0}}}:host(.select-expanded) .select-highlight,:host(.ion-focused) .select-highlight{transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}@supports (inset-inline-start: 0){:host(.in-item) .select-highlight{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.in-item) .select-highlight{left:0}:host-context([dir=rtl]):host(.in-item) .select-highlight,:host-context([dir=rtl]).in-item .select-highlight{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.in-item:dir(rtl)) .select-highlight{left:unset;right:unset;right:0}}}:host(.select-expanded:not(.legacy-select):not(.has-expanded-icon)) .select-icon{transform:rotate(180deg)}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.ion-focused) .select-wrapper .select-icon{color:var(--highlight-color)}:host-context(.item-label-stacked) .select-icon,:host-context(.item-label-floating:not(.item-fill-outline)) .select-icon,:host-context(.item-label-floating.item-fill-outline){transform:translate3d(0, -9px, 0)}:host-context(.item-has-focus):host(:not(.has-expanded-icon)) .select-icon{transform:rotate(180deg)}:host-context(.item-has-focus.item-label-stacked):host(:not(.has-expanded-icon)) .select-icon,:host-context(.item-has-focus.item-label-floating:not(.item-fill-outline)):host(:not(.has-expanded-icon)) .select-icon{transform:translate3d(0, -9px, 0) rotate(180deg)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}";const I=S;const A=class{constructor(l){e(this,l);this.ionChange=t(this,"ionChange",7);this.ionCancel=t(this,"ionCancel",7);this.ionDismiss=t(this,"ionDismiss",7);this.ionFocus=t(this,"ionFocus",7);this.ionBlur=t(this,"ionBlur",7);this.ionStyle=t(this,"ionStyle",7);this.inputId=`ion-sel-${P++}`;this.inheritedAttributes={};this.hasLoggedDeprecationWarning=false;this.onClick=e=>{const t=e.target;const l=t.closest('[slot="start"], [slot="end"]');if(t===this.el||l===null){this.setFocus();this.open(e)}else{e.preventDefault()}};this.onFocus=()=>{this.ionFocus.emit()};this.onBlur=()=>{this.ionBlur.emit()};this.isExpanded=false;this.cancelText="Cancel";this.color=undefined;this.compareWith=undefined;this.disabled=false;this.fill=undefined;this.interface="alert";this.interfaceOptions={};this.justify="space-between";this.label=undefined;this.labelPlacement="start";this.legacy=undefined;this.multiple=false;this.name=this.inputId;this.okText="OK";this.placeholder=undefined;this.selectedText=undefined;this.toggleIcon=undefined;this.expandedIcon=undefined;this.shape=undefined;this.value=undefined}styleChanged(){this.emitStyle()}setValue(e){this.value=e;this.ionChange.emit({value:e})}componentWillLoad(){this.inheritedAttributes=d(this.el,["aria-label"])}async connectedCallback(){const{el:e}=this;this.legacyFormController=a(e);this.notchController=r(e,(()=>this.notchSpacerEl),(()=>this.labelSlot));this.updateOverlayOptions();this.emitStyle();this.mutationO=k(this.el,"ion-select-option",(async()=>{this.updateOverlayOptions();o(this)}))}disconnectedCallback(){if(this.mutationO){this.mutationO.disconnect();this.mutationO=undefined}if(this.notchController){this.notchController.destroy();this.notchController=undefined}}async open(e){if(this.disabled||this.isExpanded){return undefined}this.isExpanded=true;const t=this.overlay=await this.createOverlay(e);t.onDidDismiss().then((()=>{this.overlay=undefined;this.isExpanded=false;this.ionDismiss.emit();this.setFocus()}));await t.present();if(this.interface==="popover"){const e=this.childOpts.map((e=>e.value)).indexOf(this.value);if(e>-1){const l=t.querySelector(`.select-interface-option:nth-child(${e+1})`);if(l){h(l);const e=l.querySelector("ion-radio, ion-checkbox");if(e){e.focus()}}}else{const e=t.querySelector("ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)");if(e){h(e.closest("ion-item"));e.focus()}}}return t}createOverlay(e){let t=this.interface;if(t==="action-sheet"&&this.multiple){console.warn(`Select interface cannot be "${t}" with a multi-value select. Using the "alert" interface instead.`);t="alert"}if(t==="popover"&&!e){console.warn(`Select interface cannot be a "${t}" without passing an event. Using the "alert" interface instead.`);t="alert"}if(t==="action-sheet"){return this.openActionSheet()}if(t==="popover"){return this.openPopover(e)}return this.openAlert()}updateOverlayOptions(){const e=this.overlay;if(!e){return}const t=this.childOpts;const l=this.value;switch(this.interface){case"action-sheet":e.buttons=this.createActionSheetButtons(t,l);break;case"popover":const i=e.querySelector("ion-select-popover");if(i){i.options=this.createPopoverOptions(t,l)}break;case"alert":const s=this.multiple?"checkbox":"radio";e.inputs=this.createAlertInputs(t,s,l);break}}createActionSheetButtons(e,t){const l=e.map((e=>{const l=T(e);const i=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const s=`${Y} ${i}`;return{role:n(t,l,this.compareWith)?"selected":"",text:e.textContent,cssClass:s,handler:()=>{this.setValue(l)}}}));l.push({text:this.cancelText,role:"cancel",handler:()=>{this.ionCancel.emit()}});return l}createAlertInputs(e,t,l){const i=e.map((e=>{const i=T(e);const s=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const o=`${Y} ${s}`;return{type:t,cssClass:o,label:e.textContent||"",value:i,checked:n(l,i,this.compareWith),disabled:e.disabled}}));return i}createPopoverOptions(e,t){const l=e.map((e=>{const l=T(e);const i=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const s=`${Y} ${i}`;return{text:e.textContent||"",cssClass:s,value:l,checked:n(t,l,this.compareWith),disabled:e.disabled,handler:e=>{this.setValue(e);if(!this.multiple){this.close()}}}}));return l}async openPopover(e){const{fill:t,labelPlacement:l}=this;const i=this.interfaceOptions;const s=z(this);const o=s==="md"?false:true;const a=this.multiple;const r=this.value;let n=e;let c="auto";if(this.legacyFormController.hasLegacyControl()){const t=this.el.closest("ion-item");if(t&&(t.classList.contains("item-label-floating")||t.classList.contains("item-label-stacked"))){n=Object.assign(Object.assign({},e),{detail:{ionShadowTarget:t}});c="cover"}}else{const i=l==="floating"||l==="stacked";if(i||s==="md"&&t!==undefined){c="cover"}else{n=Object.assign(Object.assign({},e),{detail:{ionShadowTarget:this.nativeWrapperEl}})}}const d=Object.assign(Object.assign({mode:s,event:n,alignment:"center",size:c,showBackdrop:o},i),{component:"ion-select-popover",cssClass:["select-popover",i.cssClass],componentProps:{header:i.header,subHeader:i.subHeader,message:i.message,multiple:a,value:r,options:this.createPopoverOptions(this.childOpts,r)}});return m.create(d)}async openActionSheet(){const e=z(this);const t=this.interfaceOptions;const l=Object.assign(Object.assign({mode:e},t),{buttons:this.createActionSheetButtons(this.childOpts,this.value),cssClass:["select-action-sheet",t.cssClass]});return f.create(l)}async openAlert(){let e;let t;if(this.legacyFormController.hasLegacyControl()){e=this.getLabel();t=e?e.textContent:null}else{t=this.labelText}const l=this.interfaceOptions;const i=this.multiple?"checkbox":"radio";const s=z(this);const o=Object.assign(Object.assign({mode:s},l),{header:l.header?l.header:t,inputs:this.createAlertInputs(this.childOpts,i,this.value),buttons:[{text:this.cancelText,role:"cancel",handler:()=>{this.ionCancel.emit()}},{text:this.okText,handler:e=>{this.setValue(e)}}],cssClass:["select-alert",l.cssClass,this.multiple?"multiple-select-alert":"single-select-alert"]});return x.create(o)}close(){if(!this.overlay){return Promise.resolve(false)}return this.overlay.dismiss()}getLabel(){return p(this.el)}hasValue(){return this.getText()!==""}get childOpts(){return Array.from(this.el.querySelectorAll("ion-select-option"))}get labelText(){const{label:e}=this;if(e!==undefined){return e}const{labelSlot:t}=this;if(t!==null){return t.textContent}return}getText(){const e=this.selectedText;if(e!=null&&e!==""){return e}return E(this.childOpts,this.value,this.compareWith)}setFocus(){if(this.focusEl){this.focusEl.focus()}}emitStyle(){const{disabled:e}=this;const t={"interactive-disabled":e};if(this.legacyFormController.hasLegacyControl()){t["interactive"]=true;t["select"]=true;t["select-disabled"]=e;t["has-placeholder"]=this.placeholder!==undefined;t["has-value"]=this.hasValue();t["has-focus"]=this.isExpanded;t["legacy"]=!!this.legacy}this.ionStyle.emit(t)}renderLabel(){const{label:e}=this;return l("div",{class:{"label-text-wrapper":true,"label-text-wrapper-hidden":!this.hasLabel},part:"label"},e===undefined?l("slot",{name:"label"}):l("div",{class:"label-text"},e))}componentDidRender(){var e;(e=this.notchController)===null||e===void 0?void 0:e.calculateNotchWidth()}get labelSlot(){return this.el.querySelector('[slot="label"]')}get hasLabel(){return this.label!==undefined||this.labelSlot!==null}renderLabelContainer(){const e=z(this);const t=e==="md"&&this.fill==="outline";if(t){return[l("div",{class:"select-outline-container"},l("div",{class:"select-outline-start"}),l("div",{class:{"select-outline-notch":true,"select-outline-notch-hidden":!this.hasLabel}},l("div",{class:"notch-spacer","aria-hidden":"true",ref:e=>this.notchSpacerEl=e},this.label)),l("div",{class:"select-outline-end"})),this.renderLabel()]}return this.renderLabel()}renderSelect(){const{disabled:e,el:t,isExpanded:s,expandedIcon:o,labelPlacement:a,justify:r,placeholder:n,fill:c,shape:d,name:h,value:p}=this;const g=z(this);const u=a==="floating"||a==="stacked";const m=!u;const f=w(t)?"rtl":"ltr";const x=v("ion-item",this.el);const k=g==="md"&&c!=="outline"&&!x;const j=this.hasValue();const C=t.querySelector('[slot="start"], [slot="end"]')!==null;b(true,t,h,L(p),e);const $=a==="stacked"||a==="floating"&&(j||s||C);return l(i,{onClick:this.onClick,class:y(this.color,{[g]:true,"in-item":x,"in-item-color":v("ion-item.ion-color",t),"select-disabled":e,"select-expanded":s,"has-expanded-icon":o!==undefined,"has-value":j,"label-floating":$,"has-placeholder":n!==undefined,"ion-focusable":true,[`select-${f}`]:true,[`select-fill-${c}`]:c!==undefined,[`select-justify-${r}`]:m,[`select-shape-${d}`]:d!==undefined,[`select-label-placement-${a}`]:true})},l("label",{class:"select-wrapper",id:"select-label"},this.renderLabelContainer(),l("div",{class:"select-wrapper-inner"},l("slot",{name:"start"}),l("div",{class:"native-wrapper",ref:e=>this.nativeWrapperEl=e,part:"container"},this.renderSelectText(),this.renderListbox()),l("slot",{name:"end"}),!u&&this.renderSelectIcon()),u&&this.renderSelectIcon(),k&&l("div",{class:"select-highlight"})))}renderLegacySelect(){if(!this.hasLoggedDeprecationWarning){u(`ion-select now requires providing a label with either the "label" property or the "aria-label" attribute. To migrate, remove any usage of "ion-label" and pass the label text to either the "label" property or the "aria-label" attribute.\n\nExample: <ion-select label="Favorite Color">...</ion-select>\nExample with aria-label: <ion-select aria-label="Favorite Color">...</ion-select>\n\nDevelopers can use the "legacy" property to continue using the legacy form markup. This property will be removed in an upcoming major release of Ionic where this form control will use the modern form markup.`,this.el);if(this.legacy){u(`ion-select is being used with the "legacy" property enabled which will forcibly enable the legacy form markup. This property will be removed in an upcoming major release of Ionic where this form control will use the modern form markup.\n Developers can dismiss this warning by removing their usage of the "legacy" property and using the new select syntax.`,this.el)}this.hasLoggedDeprecationWarning=true}const{disabled:e,el:t,inputId:s,isExpanded:o,expandedIcon:a,name:r,placeholder:n,value:c}=this;const d=z(this);const{labelText:h,labelId:p}=g(t,s);b(true,t,r,L(c),e);const m=this.getText();let f=m;if(f===""&&n!==undefined){f=n}const x=h!==undefined?f!==""?`${f}, ${h}`:h:f;return l(i,{onClick:this.onClick,role:"button","aria-haspopup":"listbox","aria-disabled":e?"true":null,"aria-label":x,class:{[d]:true,"in-item":v("ion-item",t),"in-item-color":v("ion-item.ion-color",t),"select-disabled":e,"select-expanded":o,"has-expanded-icon":a!==undefined,"legacy-select":true}},this.renderSelectText(),this.renderSelectIcon(),l("label",{id:p},x),this.renderListbox())}renderSelectText(){const{placeholder:e}=this;const t=this.getText();let i=false;let s=t;if(s===""&&e!==undefined){s=e;i=true}const o={"select-text":true,"select-placeholder":i};const a=i?"placeholder":"text";return l("div",{"aria-hidden":"true",class:o,part:a},s)}renderSelectIcon(){const e=z(this);const{isExpanded:t,toggleIcon:i,expandedIcon:s}=this;let o;if(t&&s!==undefined){o=s}else{const t=e==="ios"?j:C;o=i!==null&&i!==void 0?i:t}return l("ion-icon",{class:"select-icon",part:"icon","aria-hidden":"true",icon:o})}get ariaLabel(){var e,t;const{placeholder:l,el:i,inputId:s,inheritedAttributes:o}=this;const a=this.getText();const{labelText:r}=g(i,s);const n=(t=(e=this.labelText)!==null&&e!==void 0?e:o["aria-label"])!==null&&t!==void 0?t:r;let c=a;if(c===""&&l!==undefined){c=l}if(n!==undefined){c=c===""?n:`${n}, ${c}`}return c}renderListbox(){const{disabled:e,inputId:t,isExpanded:i}=this;return l("button",{disabled:e,id:t,"aria-label":this.ariaLabel,"aria-haspopup":"dialog","aria-expanded":`${i}`,onFocus:this.onFocus,onBlur:this.onBlur,ref:e=>this.focusEl=e})}render(){const{legacyFormController:e}=this;return e.hasLegacyControl()?this.renderLegacySelect():this.renderSelect()}get el(){return s(this)}static get watchers(){return{disabled:["styleChanged"],isExpanded:["styleChanged"],placeholder:["styleChanged"],value:["styleChanged"]}}};const T=e=>{const t=e.value;return t===undefined?e.textContent||"":t};const L=e=>{if(e==null){return undefined}if(Array.isArray(e)){return e.join(",")}return e.toString()};const E=(e,t,l)=>{if(t===undefined){return""}if(Array.isArray(t)){return t.map((t=>F(e,t,l))).filter((e=>e!==null)).join(", ")}else{return F(e,t,l)||""}};const F=(e,t,l)=>{const i=e.find((e=>c(t,T(e),l)));return i?i.textContent:null};let P=0;const Y="select-interface-option";A.style={ios:O,md:I};export{A as ion_select};
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,i as t,h as l,H as i,d as s,j as o}from"./p-7f507bcb.js";import{c as a}from"./p-c2690129.js";import{c as r}from"./p-4d6e48bf.js";import{i as n,c}from"./p-c8d1a48e.js";import{i as d,f as h,o as p,k as b,n as g}from"./p-25270f1a.js";import{p as u}from"./p-d6769f21.js";import{h as m,j as f,k as x}from"./p-5a248cff.js";import{i as w}from"./p-4d0cb38d.js";import{h as v,c as y}from"./p-669fab6c.js";import{w as k}from"./p-b951a801.js";import{t as j,k as C}from"./p-0ee8b7a7.js";import{g as z}from"./p-f1ef82a9.js";import"./p-7efd6867.js";import"./p-cebe59d4.js";import"./p-8206b1f1.js";const $=":host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:0.6;--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(:not(.legacy-select)){width:100%;min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.legacy-select){-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;align-items:center;overflow:hidden}:host(.in-item:not(.legacy-select)){flex:1 1 0}:host(.in-item.legacy-select){position:static;max-width:45%}:host(.select-disabled){pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host([slot=start]:not(.legacy-select)),:host([slot=end]:not(.legacy-select)){width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}:host(.legacy-select) label{top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;appearance:none;outline:none;display:flex;align-items:center;opacity:0}@supports (inset-inline-start: 0){:host(.legacy-select) label{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.legacy-select) label{left:0}:host-context([dir=rtl]):host(.legacy-select) label,:host-context([dir=rtl]).legacy-select label{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.legacy-select:dir(rtl)) label{left:unset;right:unset;right:0}}}:host(.legacy-select) label::-moz-focus-inner{border:0}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:flex;position:relative;flex-grow:1;align-items:center;height:inherit;min-height:inherit;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;box-sizing:border-box}.select-wrapper .select-placeholder{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:flex;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.label-text-wrapper{display:flex;align-items:center;max-width:200px;transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:flex;align-items:center;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{justify-content:space-between}:host(.select-justify-start) .select-wrapper{justify-content:start}:host(.select-justify-end) .select-wrapper{justify-content:end}:host(.select-label-placement-start) .select-wrapper{flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{flex-direction:column;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){flex-shrink:0}::slotted([slot=start]){margin-inline-end:16px;margin-inline-start:0}::slotted([slot=end]){margin-inline-start:16px;margin-inline-end:0}:host(.legacy-select){--padding-top:10px;--padding-end:8px;--padding-bottom:10px;--padding-start:16px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, #595959)}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}";const O=$;const S=":host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:0.6;--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(:not(.legacy-select)){width:100%;min-height:44px}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.legacy-select){-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;align-items:center;overflow:hidden}:host(.in-item:not(.legacy-select)){flex:1 1 0}:host(.in-item.legacy-select){position:static;max-width:45%}:host(.select-disabled){pointer-events:none}:host(.ion-focused) button{border:2px solid #5e9ed6}:host([slot=start]:not(.legacy-select)),:host([slot=end]:not(.legacy-select)){width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}:host(.legacy-select) label{top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;appearance:none;outline:none;display:flex;align-items:center;opacity:0}@supports (inset-inline-start: 0){:host(.legacy-select) label{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.legacy-select) label{left:0}:host-context([dir=rtl]):host(.legacy-select) label,:host-context([dir=rtl]).legacy-select label{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.legacy-select:dir(rtl)) label{left:unset;right:unset;right:0}}}:host(.legacy-select) label::-moz-focus-inner{border:0}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:flex;position:relative;flex-grow:1;align-items:center;height:inherit;min-height:inherit;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;box-sizing:border-box}.select-wrapper .select-placeholder{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:flex;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.label-text-wrapper{display:flex;align-items:center;max-width:200px;transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:flex;align-items:center;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{justify-content:space-between}:host(.select-justify-start) .select-wrapper{justify-content:start}:host(.select-justify-end) .select-wrapper{justify-content:end}:host(.select-label-placement-start) .select-wrapper{flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{flex-direction:column;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.ion-focused.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){flex-shrink:0}::slotted([slot=start]){margin-inline-end:16px;margin-inline-start:0}::slotted([slot=end]){margin-inline-start:16px;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, #f2f2f2);--border-color:var(--ion-color-step-500, gray);--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, #e6e6e6);--border-color:var(--ion-color-step-750, #404040)}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.ion-focused){--background:var(--ion-color-step-150, #d9d9d9);--border-color:var(--ion-color-step-750, #404040)}:host(.select-fill-solid) .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}:host-context([dir=rtl]):host(.select-fill-solid) .select-wrapper,:host-context([dir=rtl]).select-fill-solid .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}@supports selector(:dir(rtl)){:host(.select-fill-solid:dir(rtl)) .select-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0px;border-bottom-left-radius:0px}}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, #b3b3b3);--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, #404040)}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.ion-focused){--border-width:2px;--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-ltr.select-fill-outline) .select-outline-start{border-radius:var(--border-radius) 0px 0px var(--border-radius)}:host(.select-rtl.select-fill-outline) .select-outline-start{border-radius:0px var(--border-radius) var(--border-radius) 0px}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-ltr.select-fill-outline) .select-outline-end{border-radius:0px var(--border-radius) var(--border-radius) 0px}:host(.select-rtl.select-fill-outline) .select-outline-end{border-radius:var(--border-radius) 0px 0px var(--border-radius)}:host(.select-fill-outline) .select-outline-end{flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))))}:host(.legacy-select){--padding-top:10px;--padding-end:0;--padding-bottom:10px;--padding-start:16px}.select-icon{width:0.8125rem;transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, gray)}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.ion-focused) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.ion-focused) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:2px;transform:scale(0);transition:transform 200ms;background:var(--highlight-color)}@supports (inset-inline-start: 0){.select-highlight{inset-inline-start:0}}@supports not (inset-inline-start: 0){.select-highlight{left:0}:host-context([dir=rtl]) .select-highlight{left:unset;right:unset;right:0}[dir=rtl] .select-highlight{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.select-highlight:dir(rtl){left:unset;right:unset;right:0}}}:host(.select-expanded) .select-highlight,:host(.ion-focused) .select-highlight{transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}@supports (inset-inline-start: 0){:host(.in-item) .select-highlight{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host(.in-item) .select-highlight{left:0}:host-context([dir=rtl]):host(.in-item) .select-highlight,:host-context([dir=rtl]).in-item .select-highlight{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(.in-item:dir(rtl)) .select-highlight{left:unset;right:unset;right:0}}}:host(.select-expanded:not(.legacy-select):not(.has-expanded-icon)) .select-icon{transform:rotate(180deg)}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.ion-focused) .select-wrapper .select-icon{color:var(--highlight-color)}:host-context(.item-label-stacked) .select-icon,:host-context(.item-label-floating:not(.item-fill-outline)) .select-icon,:host-context(.item-label-floating.item-fill-outline){transform:translate3d(0, -9px, 0)}:host-context(.item-has-focus):host(:not(.has-expanded-icon)) .select-icon{transform:rotate(180deg)}:host-context(.item-has-focus.item-label-stacked):host(:not(.has-expanded-icon)) .select-icon,:host-context(.item-has-focus.item-label-floating:not(.item-fill-outline)):host(:not(.has-expanded-icon)) .select-icon{transform:translate3d(0, -9px, 0) rotate(180deg)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}";const I=S;const A=class{constructor(l){e(this,l);this.ionChange=t(this,"ionChange",7);this.ionCancel=t(this,"ionCancel",7);this.ionDismiss=t(this,"ionDismiss",7);this.ionFocus=t(this,"ionFocus",7);this.ionBlur=t(this,"ionBlur",7);this.ionStyle=t(this,"ionStyle",7);this.inputId=`ion-sel-${P++}`;this.inheritedAttributes={};this.hasLoggedDeprecationWarning=false;this.onClick=e=>{const t=e.target;const l=t.closest('[slot="start"], [slot="end"]');if(t===this.el||l===null){this.setFocus();this.open(e)}else{e.preventDefault()}};this.onFocus=()=>{this.ionFocus.emit()};this.onBlur=()=>{this.ionBlur.emit()};this.isExpanded=false;this.cancelText="Cancel";this.color=undefined;this.compareWith=undefined;this.disabled=false;this.fill=undefined;this.interface="alert";this.interfaceOptions={};this.justify="space-between";this.label=undefined;this.labelPlacement="start";this.legacy=undefined;this.multiple=false;this.name=this.inputId;this.okText="OK";this.placeholder=undefined;this.selectedText=undefined;this.toggleIcon=undefined;this.expandedIcon=undefined;this.shape=undefined;this.value=undefined}styleChanged(){this.emitStyle()}setValue(e){this.value=e;this.ionChange.emit({value:e})}componentWillLoad(){this.inheritedAttributes=d(this.el,["aria-label"])}async connectedCallback(){const{el:e}=this;this.legacyFormController=a(e);this.notchController=r(e,(()=>this.notchSpacerEl),(()=>this.labelSlot));this.updateOverlayOptions();this.emitStyle();this.mutationO=k(this.el,"ion-select-option",(async()=>{this.updateOverlayOptions();o(this)}))}disconnectedCallback(){if(this.mutationO){this.mutationO.disconnect();this.mutationO=undefined}if(this.notchController){this.notchController.destroy();this.notchController=undefined}}async open(e){if(this.disabled||this.isExpanded){return undefined}this.isExpanded=true;const t=this.overlay=await this.createOverlay(e);t.onDidDismiss().then((()=>{this.overlay=undefined;this.isExpanded=false;this.ionDismiss.emit();this.setFocus()}));await t.present();if(this.interface==="popover"){const e=this.childOpts.map((e=>e.value)).indexOf(this.value);if(e>-1){const l=t.querySelector(`.select-interface-option:nth-child(${e+1})`);if(l){h(l);const e=l.querySelector("ion-radio, ion-checkbox");if(e){e.focus()}}}else{const e=t.querySelector("ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)");if(e){h(e.closest("ion-item"));e.focus()}}}return t}createOverlay(e){let t=this.interface;if(t==="action-sheet"&&this.multiple){console.warn(`Select interface cannot be "${t}" with a multi-value select. Using the "alert" interface instead.`);t="alert"}if(t==="popover"&&!e){console.warn(`Select interface cannot be a "${t}" without passing an event. Using the "alert" interface instead.`);t="alert"}if(t==="action-sheet"){return this.openActionSheet()}if(t==="popover"){return this.openPopover(e)}return this.openAlert()}updateOverlayOptions(){const e=this.overlay;if(!e){return}const t=this.childOpts;const l=this.value;switch(this.interface){case"action-sheet":e.buttons=this.createActionSheetButtons(t,l);break;case"popover":const i=e.querySelector("ion-select-popover");if(i){i.options=this.createPopoverOptions(t,l)}break;case"alert":const s=this.multiple?"checkbox":"radio";e.inputs=this.createAlertInputs(t,s,l);break}}createActionSheetButtons(e,t){const l=e.map((e=>{const l=T(e);const i=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const s=`${Y} ${i}`;return{role:n(t,l,this.compareWith)?"selected":"",text:e.textContent,cssClass:s,handler:()=>{this.setValue(l)}}}));l.push({text:this.cancelText,role:"cancel",handler:()=>{this.ionCancel.emit()}});return l}createAlertInputs(e,t,l){const i=e.map((e=>{const i=T(e);const s=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const o=`${Y} ${s}`;return{type:t,cssClass:o,label:e.textContent||"",value:i,checked:n(l,i,this.compareWith),disabled:e.disabled}}));return i}createPopoverOptions(e,t){const l=e.map((e=>{const l=T(e);const i=Array.from(e.classList).filter((e=>e!=="hydrated")).join(" ");const s=`${Y} ${i}`;return{text:e.textContent||"",cssClass:s,value:l,checked:n(t,l,this.compareWith),disabled:e.disabled,handler:e=>{this.setValue(e);if(!this.multiple){this.close()}}}}));return l}async openPopover(e){const{fill:t,labelPlacement:l}=this;const i=this.interfaceOptions;const s=z(this);const o=s==="md"?false:true;const a=this.multiple;const r=this.value;let n=e;let c="auto";if(this.legacyFormController.hasLegacyControl()){const t=this.el.closest("ion-item");if(t&&(t.classList.contains("item-label-floating")||t.classList.contains("item-label-stacked"))){n=Object.assign(Object.assign({},e),{detail:{ionShadowTarget:t}});c="cover"}}else{const i=l==="floating"||l==="stacked";if(i||s==="md"&&t!==undefined){c="cover"}else{n=Object.assign(Object.assign({},e),{detail:{ionShadowTarget:this.nativeWrapperEl}})}}const d=Object.assign(Object.assign({mode:s,event:n,alignment:"center",size:c,showBackdrop:o},i),{component:"ion-select-popover",cssClass:["select-popover",i.cssClass],componentProps:{header:i.header,subHeader:i.subHeader,message:i.message,multiple:a,value:r,options:this.createPopoverOptions(this.childOpts,r)}});return m.create(d)}async openActionSheet(){const e=z(this);const t=this.interfaceOptions;const l=Object.assign(Object.assign({mode:e},t),{buttons:this.createActionSheetButtons(this.childOpts,this.value),cssClass:["select-action-sheet",t.cssClass]});return f.create(l)}async openAlert(){let e;let t;if(this.legacyFormController.hasLegacyControl()){e=this.getLabel();t=e?e.textContent:null}else{t=this.labelText}const l=this.interfaceOptions;const i=this.multiple?"checkbox":"radio";const s=z(this);const o=Object.assign(Object.assign({mode:s},l),{header:l.header?l.header:t,inputs:this.createAlertInputs(this.childOpts,i,this.value),buttons:[{text:this.cancelText,role:"cancel",handler:()=>{this.ionCancel.emit()}},{text:this.okText,handler:e=>{this.setValue(e)}}],cssClass:["select-alert",l.cssClass,this.multiple?"multiple-select-alert":"single-select-alert"]});return x.create(o)}close(){if(!this.overlay){return Promise.resolve(false)}return this.overlay.dismiss()}getLabel(){return p(this.el)}hasValue(){return this.getText()!==""}get childOpts(){return Array.from(this.el.querySelectorAll("ion-select-option"))}get labelText(){const{label:e}=this;if(e!==undefined){return e}const{labelSlot:t}=this;if(t!==null){return t.textContent}return}getText(){const e=this.selectedText;if(e!=null&&e!==""){return e}return E(this.childOpts,this.value,this.compareWith)}setFocus(){if(this.focusEl){this.focusEl.focus()}}emitStyle(){const{disabled:e}=this;const t={"interactive-disabled":e};if(this.legacyFormController.hasLegacyControl()){t["interactive"]=true;t["select"]=true;t["select-disabled"]=e;t["has-placeholder"]=this.placeholder!==undefined;t["has-value"]=this.hasValue();t["has-focus"]=this.isExpanded;t["legacy"]=!!this.legacy}this.ionStyle.emit(t)}renderLabel(){const{label:e}=this;return l("div",{class:{"label-text-wrapper":true,"label-text-wrapper-hidden":!this.hasLabel},part:"label"},e===undefined?l("slot",{name:"label"}):l("div",{class:"label-text"},e))}componentDidRender(){var e;(e=this.notchController)===null||e===void 0?void 0:e.calculateNotchWidth()}get labelSlot(){return this.el.querySelector('[slot="label"]')}get hasLabel(){return this.label!==undefined||this.labelSlot!==null}renderLabelContainer(){const e=z(this);const t=e==="md"&&this.fill==="outline";if(t){return[l("div",{class:"select-outline-container"},l("div",{class:"select-outline-start"}),l("div",{class:{"select-outline-notch":true,"select-outline-notch-hidden":!this.hasLabel}},l("div",{class:"notch-spacer","aria-hidden":"true",ref:e=>this.notchSpacerEl=e},this.label)),l("div",{class:"select-outline-end"})),this.renderLabel()]}return this.renderLabel()}renderSelect(){const{disabled:e,el:t,isExpanded:s,expandedIcon:o,labelPlacement:a,justify:r,placeholder:n,fill:c,shape:d,name:h,value:p}=this;const g=z(this);const u=a==="floating"||a==="stacked";const m=!u;const f=w(t)?"rtl":"ltr";const x=v("ion-item",this.el);const k=g==="md"&&c!=="outline"&&!x;const j=this.hasValue();const C=t.querySelector('[slot="start"], [slot="end"]')!==null;b(true,t,h,L(p),e);const $=a==="stacked"||a==="floating"&&(j||s||C);return l(i,{onClick:this.onClick,class:y(this.color,{[g]:true,"in-item":x,"in-item-color":v("ion-item.ion-color",t),"select-disabled":e,"select-expanded":s,"has-expanded-icon":o!==undefined,"has-value":j,"label-floating":$,"has-placeholder":n!==undefined,"ion-focusable":true,[`select-${f}`]:true,[`select-fill-${c}`]:c!==undefined,[`select-justify-${r}`]:m,[`select-shape-${d}`]:d!==undefined,[`select-label-placement-${a}`]:true})},l("label",{class:"select-wrapper",id:"select-label"},this.renderLabelContainer(),l("div",{class:"select-wrapper-inner"},l("slot",{name:"start"}),l("div",{class:"native-wrapper",ref:e=>this.nativeWrapperEl=e,part:"container"},this.renderSelectText(),this.renderListbox()),l("slot",{name:"end"}),!u&&this.renderSelectIcon()),u&&this.renderSelectIcon(),k&&l("div",{class:"select-highlight"})))}renderLegacySelect(){if(!this.hasLoggedDeprecationWarning){u(`ion-select now requires providing a label with either the "label" property or the "aria-label" attribute. To migrate, remove any usage of "ion-label" and pass the label text to either the "label" property or the "aria-label" attribute.\n\nExample: <ion-select label="Favorite Color">...</ion-select>\nExample with aria-label: <ion-select aria-label="Favorite Color">...</ion-select>\n\nDevelopers can use the "legacy" property to continue using the legacy form markup. This property will be removed in an upcoming major release of Ionic where this form control will use the modern form markup.`,this.el);if(this.legacy){u(`ion-select is being used with the "legacy" property enabled which will forcibly enable the legacy form markup. This property will be removed in an upcoming major release of Ionic where this form control will use the modern form markup.\n Developers can dismiss this warning by removing their usage of the "legacy" property and using the new select syntax.`,this.el)}this.hasLoggedDeprecationWarning=true}const{disabled:e,el:t,inputId:s,isExpanded:o,expandedIcon:a,name:r,placeholder:n,value:c}=this;const d=z(this);const{labelText:h,labelId:p}=g(t,s);b(true,t,r,L(c),e);const m=this.getText();let f=m;if(f===""&&n!==undefined){f=n}const x=h!==undefined?f!==""?`${f}, ${h}`:h:f;return l(i,{onClick:this.onClick,role:"button","aria-haspopup":"listbox","aria-disabled":e?"true":null,"aria-label":x,class:{[d]:true,"in-item":v("ion-item",t),"in-item-color":v("ion-item.ion-color",t),"select-disabled":e,"select-expanded":o,"has-expanded-icon":a!==undefined,"legacy-select":true}},this.renderSelectText(),this.renderSelectIcon(),l("label",{id:p},x),this.renderListbox())}renderSelectText(){const{placeholder:e}=this;const t=this.getText();let i=false;let s=t;if(s===""&&e!==undefined){s=e;i=true}const o={"select-text":true,"select-placeholder":i};const a=i?"placeholder":"text";return l("div",{"aria-hidden":"true",class:o,part:a},s)}renderSelectIcon(){const e=z(this);const{isExpanded:t,toggleIcon:i,expandedIcon:s}=this;let o;if(t&&s!==undefined){o=s}else{const t=e==="ios"?j:C;o=i!==null&&i!==void 0?i:t}return l("ion-icon",{class:"select-icon",part:"icon","aria-hidden":"true",icon:o})}get ariaLabel(){var e,t;const{placeholder:l,el:i,inputId:s,inheritedAttributes:o}=this;const a=this.getText();const{labelText:r}=g(i,s);const n=(t=(e=this.labelText)!==null&&e!==void 0?e:o["aria-label"])!==null&&t!==void 0?t:r;let c=a;if(c===""&&l!==undefined){c=l}if(n!==undefined){c=c===""?n:`${n}, ${c}`}return c}renderListbox(){const{disabled:e,inputId:t,isExpanded:i}=this;return l("button",{disabled:e,id:t,"aria-label":this.ariaLabel,"aria-haspopup":"dialog","aria-expanded":`${i}`,onFocus:this.onFocus,onBlur:this.onBlur,ref:e=>this.focusEl=e})}render(){const{legacyFormController:e}=this;return e.hasLegacyControl()?this.renderLegacySelect():this.renderSelect()}get el(){return s(this)}static get watchers(){return{disabled:["styleChanged"],isExpanded:["styleChanged"],placeholder:["styleChanged"],value:["styleChanged"]}}};const T=e=>{const t=e.value;return t===undefined?e.textContent||"":t};const L=e=>{if(e==null){return undefined}if(Array.isArray(e)){return e.join(",")}return e.toString()};const E=(e,t,l)=>{if(t===undefined){return""}if(Array.isArray(t)){return t.map((t=>F(e,t,l))).filter((e=>e!==null)).join(", ")}else{return F(e,t,l)||""}};const F=(e,t,l)=>{const i=e.find((e=>c(t,T(e),l)));return i?i.textContent:null};let P=0;const Y="select-interface-option";A.style={ios:O,md:I};export{A as ion_select};
|
|
2
|
+
//# sourceMappingURL=p-cd9107d1.entry.js.map
|