@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
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const index = require('./index-b86da440.js');
|
|
6
|
+
const index$1 = require('./index-223c32ee.js');
|
|
7
|
+
const keyboardController = require('./keyboard-controller-736f8327.js');
|
|
8
|
+
const ionicGlobal = require('./ionic-global-dcebbee3.js');
|
|
9
|
+
const helpers = require('./helpers-95c22e6d.js');
|
|
10
|
+
require('./index-5fa17650.js');
|
|
11
|
+
require('./index-957a289d.js');
|
|
12
|
+
require('./keyboard-227ae91c.js');
|
|
13
|
+
require('./capacitor-5139e8a2.js');
|
|
14
|
+
|
|
15
|
+
/*!
|
|
16
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
17
|
+
*/
|
|
18
|
+
const handleFooterFade = (scrollEl, baseEl) => {
|
|
19
|
+
index.readTask(() => {
|
|
20
|
+
const scrollTop = scrollEl.scrollTop;
|
|
21
|
+
const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;
|
|
22
|
+
/**
|
|
23
|
+
* Toolbar background will fade
|
|
24
|
+
* out over fadeDuration in pixels.
|
|
25
|
+
*/
|
|
26
|
+
const fadeDuration = 10;
|
|
27
|
+
/**
|
|
28
|
+
* Begin fading out maxScroll - 30px
|
|
29
|
+
* from the bottom of the content.
|
|
30
|
+
* Also determine how close we are
|
|
31
|
+
* to starting the fade. If we are
|
|
32
|
+
* before the starting point, the
|
|
33
|
+
* scale value will get clamped to 0.
|
|
34
|
+
* If we are after the maxScroll (rubber
|
|
35
|
+
* band scrolling), the scale value will
|
|
36
|
+
* get clamped to 1.
|
|
37
|
+
*/
|
|
38
|
+
const fadeStart = maxScroll - fadeDuration;
|
|
39
|
+
const distanceToStart = scrollTop - fadeStart;
|
|
40
|
+
const scale = helpers.clamp(0, 1 - distanceToStart / fadeDuration, 1);
|
|
41
|
+
index.writeTask(() => {
|
|
42
|
+
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const footerIosCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports (backdrop-filter: blur(0)){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}";
|
|
48
|
+
const IonFooterIosStyle0 = footerIosCss;
|
|
49
|
+
|
|
50
|
+
const footerMdCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{box-shadow:none}";
|
|
51
|
+
const IonFooterMdStyle0 = footerMdCss;
|
|
52
|
+
|
|
53
|
+
const Footer = class {
|
|
54
|
+
constructor(hostRef) {
|
|
55
|
+
index.registerInstance(this, hostRef);
|
|
56
|
+
this.keyboardCtrl = null;
|
|
57
|
+
this.checkCollapsibleFooter = () => {
|
|
58
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
59
|
+
if (mode !== 'ios') {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const { collapse } = this;
|
|
63
|
+
const hasFade = collapse === 'fade';
|
|
64
|
+
this.destroyCollapsibleFooter();
|
|
65
|
+
if (hasFade) {
|
|
66
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
67
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
68
|
+
if (!contentEl) {
|
|
69
|
+
index$1.printIonContentErrorMsg(this.el);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.setupFadeFooter(contentEl);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
this.setupFadeFooter = async (contentEl) => {
|
|
76
|
+
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
77
|
+
/**
|
|
78
|
+
* Handle fading of toolbars on scroll
|
|
79
|
+
*/
|
|
80
|
+
this.contentScrollCallback = () => {
|
|
81
|
+
handleFooterFade(scrollEl, this.el);
|
|
82
|
+
};
|
|
83
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
84
|
+
handleFooterFade(scrollEl, this.el);
|
|
85
|
+
};
|
|
86
|
+
this.keyboardVisible = false;
|
|
87
|
+
this.collapse = undefined;
|
|
88
|
+
this.translucent = false;
|
|
89
|
+
}
|
|
90
|
+
componentDidLoad() {
|
|
91
|
+
this.checkCollapsibleFooter();
|
|
92
|
+
}
|
|
93
|
+
componentDidUpdate() {
|
|
94
|
+
this.checkCollapsibleFooter();
|
|
95
|
+
}
|
|
96
|
+
async connectedCallback() {
|
|
97
|
+
this.keyboardCtrl = await keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
98
|
+
/**
|
|
99
|
+
* If the keyboard is hiding, then we need to wait
|
|
100
|
+
* for the webview to resize. Otherwise, the footer
|
|
101
|
+
* will flicker before the webview resizes.
|
|
102
|
+
*/
|
|
103
|
+
if (keyboardOpen === false && waitForResize !== undefined) {
|
|
104
|
+
await waitForResize;
|
|
105
|
+
}
|
|
106
|
+
this.keyboardVisible = keyboardOpen; // trigger re-render by updating state
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
disconnectedCallback() {
|
|
110
|
+
if (this.keyboardCtrl) {
|
|
111
|
+
this.keyboardCtrl.destroy();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
destroyCollapsibleFooter() {
|
|
115
|
+
if (this.scrollEl && this.contentScrollCallback) {
|
|
116
|
+
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
117
|
+
this.contentScrollCallback = undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
render() {
|
|
121
|
+
const { translucent, collapse } = this;
|
|
122
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
123
|
+
const tabs = this.el.closest('ion-tabs');
|
|
124
|
+
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
125
|
+
return (index.h(index.Host, { key: 'dd8fa96901e8a09759a9621b6513f0492b3a6197', role: "contentinfo", class: {
|
|
126
|
+
[mode]: true,
|
|
127
|
+
// Used internally for styling
|
|
128
|
+
[`footer-${mode}`]: true,
|
|
129
|
+
[`footer-translucent`]: translucent,
|
|
130
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
131
|
+
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
132
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
133
|
+
} }, mode === 'ios' && translucent && index.h("div", { key: '0fbb4ebf8e3951ff399f843dc11aab37fc48f8b7', class: "footer-background" }), index.h("slot", { key: 'ecb14a65e3b6960670446c4428e3095b3231a3b0' })));
|
|
134
|
+
}
|
|
135
|
+
get el() { return index.getElement(this); }
|
|
136
|
+
};
|
|
137
|
+
Footer.style = {
|
|
138
|
+
ios: IonFooterIosStyle0,
|
|
139
|
+
md: IonFooterMdStyle0
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
exports.ion_footer = Footer;
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=ion-footer.cjs.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"ion-footer.entry.cjs.js","mappings":"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","names":["readTask","clamp","writeTask","getIonMode","findIonContent","printIonContentErrorMsg","getScrollElement","createKeyboardController","h","Host"],"sources":["../node_modules/@ionic/core/dist/collection/components/footer/footer.utils.js","../node_modules/@ionic/core/dist/collection/components/footer/footer.ios.css?tag=ion-footer&mode=ios","../node_modules/@ionic/core/dist/collection/components/footer/footer.md.css?tag=ion-footer&mode=md","../node_modules/@ionic/core/dist/collection/components/footer/footer.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { readTask, writeTask } from \"@stencil/core\";\nimport { clamp } from \"../../utils/helpers\";\nexport const handleFooterFade = (scrollEl, baseEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;\n /**\n * Toolbar background will fade\n * out over fadeDuration in pixels.\n */\n const fadeDuration = 10;\n /**\n * Begin fading out maxScroll - 30px\n * from the bottom of the content.\n * Also determine how close we are\n * to starting the fade. If we are\n * before the starting point, the\n * scale value will get clamped to 0.\n * If we are after the maxScroll (rubber\n * band scrolling), the scale value will\n * get clamped to 1.\n */\n const fadeStart = maxScroll - fadeDuration;\n const distanceToStart = scrollTop - fadeStart;\n const scale = clamp(0, 1 - distanceToStart / fadeDuration, 1);\n writeTask(() => {\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\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 */\nion-footer {\n display: block;\n position: relative;\n order: 1;\n width: 100%;\n z-index: 10;\n}\n\nion-footer.footer-toolbar-padding ion-toolbar:last-of-type {\n padding-bottom: var(--ion-safe-area-bottom, 0);\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.footer-ios ion-toolbar:first-of-type {\n --border-width: 0.55px 0 0;\n}\n\n@supports (backdrop-filter: blur(0)) {\n .footer-background {\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n position: absolute;\n backdrop-filter: saturate(180%) blur(20px);\n }\n .footer-translucent-ios ion-toolbar {\n --opacity: .8;\n }\n}\n.footer-ios.ion-no-border ion-toolbar:first-of-type {\n --border-width: 0;\n}\n\n.footer-collapse-fade ion-toolbar {\n --opacity-scale: inherit;\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 */\nion-footer {\n display: block;\n position: relative;\n order: 1;\n width: 100%;\n z-index: 10;\n}\n\nion-footer.footer-toolbar-padding ion-toolbar:last-of-type {\n padding-bottom: var(--ion-safe-area-bottom, 0);\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.footer-md {\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n\n.footer-md.ion-no-border {\n box-shadow: none;\n}","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { Host, h } from \"@stencil/core\";\nimport { findIonContent, getScrollElement, printIonContentErrorMsg } from \"../../utils/content/index\";\nimport { createKeyboardController } from \"../../utils/keyboard/keyboard-controller\";\nimport { getIonMode } from \"../../global/ionic-global\";\nimport { handleFooterFade } from \"./footer.utils\";\n/**\n * @virtualProp {\"ios\" | \"md\"} mode - The mode determines which platform styles to use.\n */\nexport class Footer {\n constructor() {\n this.keyboardCtrl = null;\n this.checkCollapsibleFooter = () => {\n const mode = getIonMode(this);\n if (mode !== 'ios') {\n return;\n }\n const { collapse } = this;\n const hasFade = collapse === 'fade';\n this.destroyCollapsibleFooter();\n if (hasFade) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n this.setupFadeFooter(contentEl);\n }\n };\n this.setupFadeFooter = async (contentEl) => {\n const scrollEl = (this.scrollEl = await getScrollElement(contentEl));\n /**\n * Handle fading of toolbars on scroll\n */\n this.contentScrollCallback = () => {\n handleFooterFade(scrollEl, this.el);\n };\n scrollEl.addEventListener('scroll', this.contentScrollCallback);\n handleFooterFade(scrollEl, this.el);\n };\n this.keyboardVisible = false;\n this.collapse = undefined;\n this.translucent = false;\n }\n componentDidLoad() {\n this.checkCollapsibleFooter();\n }\n componentDidUpdate() {\n this.checkCollapsibleFooter();\n }\n async connectedCallback() {\n this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {\n /**\n * If the keyboard is hiding, then we need to wait\n * for the webview to resize. Otherwise, the footer\n * will flicker before the webview resizes.\n */\n if (keyboardOpen === false && waitForResize !== undefined) {\n await waitForResize;\n }\n this.keyboardVisible = keyboardOpen; // trigger re-render by updating state\n });\n }\n disconnectedCallback() {\n if (this.keyboardCtrl) {\n this.keyboardCtrl.destroy();\n }\n }\n destroyCollapsibleFooter() {\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n }\n render() {\n const { translucent, collapse } = this;\n const mode = getIonMode(this);\n const tabs = this.el.closest('ion-tabs');\n const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');\n return (h(Host, { key: 'dd8fa96901e8a09759a9621b6513f0492b3a6197', role: \"contentinfo\", class: {\n [mode]: true,\n // Used internally for styling\n [`footer-${mode}`]: true,\n [`footer-translucent`]: translucent,\n [`footer-translucent-${mode}`]: translucent,\n ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),\n [`footer-collapse-${collapse}`]: collapse !== undefined,\n } }, mode === 'ios' && translucent && h(\"div\", { key: '0fbb4ebf8e3951ff399f843dc11aab37fc48f8b7', class: \"footer-background\" }), h(\"slot\", { key: 'ecb14a65e3b6960670446c4428e3095b3231a3b0' })));\n }\n static get is() { return \"ion-footer\"; }\n static get originalStyleUrls() {\n return {\n \"ios\": [\"footer.ios.scss\"],\n \"md\": [\"footer.md.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"ios\": [\"footer.ios.css\"],\n \"md\": [\"footer.md.css\"]\n };\n }\n static get properties() {\n return {\n \"collapse\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"'fade'\",\n \"resolved\": \"\\\"fade\\\" | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Describes the scroll effect that will be applied to the footer.\\nOnly applies in iOS mode.\"\n },\n \"attribute\": \"collapse\",\n \"reflect\": false\n },\n \"translucent\": {\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`, the footer will be translucent.\\nOnly applies when the mode is `\\\"ios\\\"` and the device supports\\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\\n\\nNote: In order to scroll content behind the footer, the `fullscreen`\\nattribute needs to be set on the content.\"\n },\n \"attribute\": \"translucent\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n }\n };\n }\n static get states() {\n return {\n \"keyboardVisible\": {}\n };\n }\n static get elementRef() { return \"el\"; }\n}\n"],"version":3}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const index = require('./index-b86da440.js');
|
|
6
|
+
const index$1 = require('./index-223c32ee.js');
|
|
7
|
+
const helpers = require('./helpers-95c22e6d.js');
|
|
8
|
+
const theme = require('./theme-187bbc7d.js');
|
|
9
|
+
const ionicGlobal = require('./ionic-global-dcebbee3.js');
|
|
10
|
+
require('./index-5fa17650.js');
|
|
11
|
+
|
|
12
|
+
/*!
|
|
13
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
14
|
+
*/
|
|
15
|
+
const TRANSITION = 'all 0.2s ease-in-out';
|
|
16
|
+
const cloneElement = (tagName) => {
|
|
17
|
+
const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
|
|
18
|
+
if (getCachedEl !== null) {
|
|
19
|
+
return getCachedEl;
|
|
20
|
+
}
|
|
21
|
+
const clonedEl = document.createElement(tagName);
|
|
22
|
+
clonedEl.classList.add('ion-cloned-element');
|
|
23
|
+
clonedEl.style.setProperty('display', 'none');
|
|
24
|
+
document.body.appendChild(clonedEl);
|
|
25
|
+
return clonedEl;
|
|
26
|
+
};
|
|
27
|
+
const createHeaderIndex = (headerEl) => {
|
|
28
|
+
if (!headerEl) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const toolbars = headerEl.querySelectorAll('ion-toolbar');
|
|
32
|
+
return {
|
|
33
|
+
el: headerEl,
|
|
34
|
+
toolbars: Array.from(toolbars).map((toolbar) => {
|
|
35
|
+
const ionTitleEl = toolbar.querySelector('ion-title');
|
|
36
|
+
return {
|
|
37
|
+
el: toolbar,
|
|
38
|
+
background: toolbar.shadowRoot.querySelector('.toolbar-background'),
|
|
39
|
+
ionTitleEl,
|
|
40
|
+
innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,
|
|
41
|
+
ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),
|
|
42
|
+
};
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
47
|
+
index.readTask(() => {
|
|
48
|
+
const scrollTop = scrollEl.scrollTop;
|
|
49
|
+
const scale = helpers.clamp(1, 1 + -scrollTop / 500, 1.1);
|
|
50
|
+
// Native refresher should not cause titles to scale
|
|
51
|
+
const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');
|
|
52
|
+
if (nativeRefresher === null) {
|
|
53
|
+
index.writeTask(() => {
|
|
54
|
+
scaleLargeTitles(scrollHeaderIndex.toolbars, scale);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
60
|
+
/**
|
|
61
|
+
* Fading in the backdrop opacity
|
|
62
|
+
* should happen after the large title
|
|
63
|
+
* has collapsed, so it is handled
|
|
64
|
+
* by handleHeaderFade()
|
|
65
|
+
*/
|
|
66
|
+
if (headerEl.collapse === 'fade') {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (opacity === undefined) {
|
|
70
|
+
headerEl.style.removeProperty('--opacity-scale');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
headerEl.style.setProperty('--opacity-scale', opacity.toString());
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {
|
|
77
|
+
if (!ev[0].isIntersecting) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* There is a bug in Safari where overflow scrolling on a non-body element
|
|
82
|
+
* does not always reset the scrollTop position to 0 when letting go. It will
|
|
83
|
+
* set to 1 once the rubber band effect has ended. This causes the background to
|
|
84
|
+
* appear slightly on certain app setups.
|
|
85
|
+
*
|
|
86
|
+
* Additionally, we check if user is rubber banding (scrolling is negative)
|
|
87
|
+
* as this can mean they are using pull to refresh. Once the refresher starts,
|
|
88
|
+
* the content is transformed which can cause the intersection observer to erroneously
|
|
89
|
+
* fire here as well.
|
|
90
|
+
*/
|
|
91
|
+
const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;
|
|
92
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* If toolbars are intersecting, hide the scrollable toolbar content
|
|
96
|
+
* and show the primary toolbar content. If the toolbars are not intersecting,
|
|
97
|
+
* hide the primary toolbar content and show the scrollable toolbar content
|
|
98
|
+
*/
|
|
99
|
+
const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)
|
|
100
|
+
mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
|
|
101
|
+
index.writeTask(() => {
|
|
102
|
+
const scrollTop = scrollEl.scrollTop;
|
|
103
|
+
handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);
|
|
104
|
+
const event = ev[0];
|
|
105
|
+
const intersection = event.intersectionRect;
|
|
106
|
+
const intersectionArea = intersection.width * intersection.height;
|
|
107
|
+
const rootArea = event.rootBounds.width * event.rootBounds.height;
|
|
108
|
+
const isPageHidden = intersectionArea === 0 && rootArea === 0;
|
|
109
|
+
const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);
|
|
110
|
+
const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);
|
|
111
|
+
const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);
|
|
112
|
+
if (isPageHidden || isPageTransitioning) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (event.isIntersecting) {
|
|
116
|
+
setHeaderActive(mainHeaderIndex, false);
|
|
117
|
+
setHeaderActive(scrollHeaderIndex);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
/**
|
|
121
|
+
* There is a bug with IntersectionObserver on Safari
|
|
122
|
+
* where `event.isIntersecting === false` when cancelling
|
|
123
|
+
* a swipe to go back gesture. Checking the intersection
|
|
124
|
+
* x, y, width, and height provides a workaround. This bug
|
|
125
|
+
* does not happen when using Safari + Web Animations,
|
|
126
|
+
* only Safari + CSS Animations.
|
|
127
|
+
*/
|
|
128
|
+
const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);
|
|
129
|
+
if (hasValidIntersection && scrollTop > 0) {
|
|
130
|
+
setHeaderActive(mainHeaderIndex);
|
|
131
|
+
setHeaderActive(scrollHeaderIndex, false);
|
|
132
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
const setHeaderActive = (headerIndex, active = true) => {
|
|
138
|
+
const headerEl = headerIndex.el;
|
|
139
|
+
if (active) {
|
|
140
|
+
headerEl.classList.remove('header-collapse-condense-inactive');
|
|
141
|
+
headerEl.removeAttribute('aria-hidden');
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
headerEl.classList.add('header-collapse-condense-inactive');
|
|
145
|
+
headerEl.setAttribute('aria-hidden', 'true');
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
|
|
149
|
+
toolbars.forEach((toolbar) => {
|
|
150
|
+
const ionTitle = toolbar.ionTitleEl;
|
|
151
|
+
const titleDiv = toolbar.innerTitleEl;
|
|
152
|
+
if (!ionTitle || ionTitle.size !== 'large') {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
titleDiv.style.transition = transition ? TRANSITION : '';
|
|
156
|
+
titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
160
|
+
index.readTask(() => {
|
|
161
|
+
const scrollTop = scrollEl.scrollTop;
|
|
162
|
+
const baseElHeight = baseEl.clientHeight;
|
|
163
|
+
const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;
|
|
164
|
+
/**
|
|
165
|
+
* If we are using fade header with a condense
|
|
166
|
+
* header, then the toolbar backgrounds should
|
|
167
|
+
* not begin to fade in until the condense
|
|
168
|
+
* header has fully collapsed.
|
|
169
|
+
*
|
|
170
|
+
* Additionally, the main content should not
|
|
171
|
+
* overflow out of the container until the
|
|
172
|
+
* condense header has fully collapsed. When
|
|
173
|
+
* using just the condense header the content
|
|
174
|
+
* should overflow out of the container.
|
|
175
|
+
*/
|
|
176
|
+
if (condenseHeader !== null && scrollTop < fadeStart) {
|
|
177
|
+
baseEl.style.setProperty('--opacity-scale', '0');
|
|
178
|
+
scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const distanceToStart = scrollTop - fadeStart;
|
|
182
|
+
const fadeDuration = 10;
|
|
183
|
+
const scale = helpers.clamp(0, distanceToStart / fadeDuration, 1);
|
|
184
|
+
index.writeTask(() => {
|
|
185
|
+
scrollEl.style.removeProperty('clip-path');
|
|
186
|
+
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const headerIosCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports (backdrop-filter: blur(0)){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}";
|
|
192
|
+
const IonHeaderIosStyle0 = headerIosCss;
|
|
193
|
+
|
|
194
|
+
const headerMdCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-collapse-condense{display:none}.header-md.ion-no-border{box-shadow:none}";
|
|
195
|
+
const IonHeaderMdStyle0 = headerMdCss;
|
|
196
|
+
|
|
197
|
+
const Header = class {
|
|
198
|
+
constructor(hostRef) {
|
|
199
|
+
index.registerInstance(this, hostRef);
|
|
200
|
+
this.inheritedAttributes = {};
|
|
201
|
+
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
202
|
+
const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
|
|
203
|
+
/**
|
|
204
|
+
* Handle fading of toolbars on scroll
|
|
205
|
+
*/
|
|
206
|
+
this.contentScrollCallback = () => {
|
|
207
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
208
|
+
};
|
|
209
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
210
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
211
|
+
};
|
|
212
|
+
this.collapse = undefined;
|
|
213
|
+
this.translucent = false;
|
|
214
|
+
}
|
|
215
|
+
componentWillLoad() {
|
|
216
|
+
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
217
|
+
}
|
|
218
|
+
componentDidLoad() {
|
|
219
|
+
this.checkCollapsibleHeader();
|
|
220
|
+
}
|
|
221
|
+
componentDidUpdate() {
|
|
222
|
+
this.checkCollapsibleHeader();
|
|
223
|
+
}
|
|
224
|
+
disconnectedCallback() {
|
|
225
|
+
this.destroyCollapsibleHeader();
|
|
226
|
+
}
|
|
227
|
+
async checkCollapsibleHeader() {
|
|
228
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
229
|
+
if (mode !== 'ios') {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const { collapse } = this;
|
|
233
|
+
const hasCondense = collapse === 'condense';
|
|
234
|
+
const hasFade = collapse === 'fade';
|
|
235
|
+
this.destroyCollapsibleHeader();
|
|
236
|
+
if (hasCondense) {
|
|
237
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
238
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
239
|
+
// Cloned elements are always needed in iOS transition
|
|
240
|
+
index.writeTask(() => {
|
|
241
|
+
const title = cloneElement('ion-title');
|
|
242
|
+
title.size = 'large';
|
|
243
|
+
cloneElement('ion-back-button');
|
|
244
|
+
});
|
|
245
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
246
|
+
}
|
|
247
|
+
else if (hasFade) {
|
|
248
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
249
|
+
const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
|
|
250
|
+
if (!contentEl) {
|
|
251
|
+
index$1.printIonContentErrorMsg(this.el);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
255
|
+
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
destroyCollapsibleHeader() {
|
|
259
|
+
if (this.intersectionObserver) {
|
|
260
|
+
this.intersectionObserver.disconnect();
|
|
261
|
+
this.intersectionObserver = undefined;
|
|
262
|
+
}
|
|
263
|
+
if (this.scrollEl && this.contentScrollCallback) {
|
|
264
|
+
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
265
|
+
this.contentScrollCallback = undefined;
|
|
266
|
+
}
|
|
267
|
+
if (this.collapsibleMainHeader) {
|
|
268
|
+
this.collapsibleMainHeader.classList.remove('header-collapse-main');
|
|
269
|
+
this.collapsibleMainHeader = undefined;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
async setupCondenseHeader(contentEl, pageEl) {
|
|
273
|
+
if (!contentEl || !pageEl) {
|
|
274
|
+
index$1.printIonContentErrorMsg(this.el);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
this.scrollEl = await index$1.getScrollElement(contentEl);
|
|
281
|
+
const headers = pageEl.querySelectorAll('ion-header');
|
|
282
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
283
|
+
if (!this.collapsibleMainHeader) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
287
|
+
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
288
|
+
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
setHeaderActive(mainHeaderIndex, false);
|
|
292
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
293
|
+
/**
|
|
294
|
+
* Handle interaction between toolbar collapse and
|
|
295
|
+
* showing/hiding content in the primary ion-header
|
|
296
|
+
* as well as progressively showing/hiding the main header
|
|
297
|
+
* border as the top-most toolbar collapses or expands.
|
|
298
|
+
*/
|
|
299
|
+
const toolbarIntersection = (ev) => {
|
|
300
|
+
handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);
|
|
301
|
+
};
|
|
302
|
+
this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {
|
|
303
|
+
root: contentEl,
|
|
304
|
+
threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
|
|
305
|
+
});
|
|
306
|
+
this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);
|
|
307
|
+
/**
|
|
308
|
+
* Handle scaling of large iOS titles and
|
|
309
|
+
* showing/hiding border on last toolbar
|
|
310
|
+
* in primary header
|
|
311
|
+
*/
|
|
312
|
+
this.contentScrollCallback = () => {
|
|
313
|
+
handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);
|
|
314
|
+
};
|
|
315
|
+
this.scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
316
|
+
index.writeTask(() => {
|
|
317
|
+
if (this.collapsibleMainHeader !== undefined) {
|
|
318
|
+
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
render() {
|
|
323
|
+
const { translucent, inheritedAttributes } = this;
|
|
324
|
+
const mode = ionicGlobal.getIonMode(this);
|
|
325
|
+
const collapse = this.collapse || 'none';
|
|
326
|
+
// banner role must be at top level, so remove role if inside a menu
|
|
327
|
+
const roleType = theme.hostContext('ion-menu', this.el) ? 'none' : 'banner';
|
|
328
|
+
return (index.h(index.Host, Object.assign({ key: '9fa0af97b605f9fe98b13361bc3d1289745c549f', role: roleType, class: {
|
|
329
|
+
[mode]: true,
|
|
330
|
+
// Used internally for styling
|
|
331
|
+
[`header-${mode}`]: true,
|
|
332
|
+
[`header-translucent`]: this.translucent,
|
|
333
|
+
[`header-collapse-${collapse}`]: true,
|
|
334
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
335
|
+
} }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '1a780d2625302f2465718e304bdd3794c89c9845', class: "header-background" }), index.h("slot", { key: 'b2b8557b44be40c590bfcc362ac4350f9f8b889e' })));
|
|
336
|
+
}
|
|
337
|
+
get el() { return index.getElement(this); }
|
|
338
|
+
};
|
|
339
|
+
Header.style = {
|
|
340
|
+
ios: IonHeaderIosStyle0,
|
|
341
|
+
md: IonHeaderMdStyle0
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
exports.ion_header = Header;
|
|
345
|
+
|
|
346
|
+
//# sourceMappingURL=ion-header.cjs.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"ion-header.entry.cjs.js","mappings":"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","names":["readTask","clamp","writeTask","getScrollElement","inheritAriaAttributes","getIonMode","findIonContent","printIonContentErrorMsg","hostContext","h","Host"],"sources":["../node_modules/@ionic/core/dist/collection/components/header/header.utils.js","../node_modules/@ionic/core/dist/collection/components/header/header.ios.css?tag=ion-header&mode=ios","../node_modules/@ionic/core/dist/collection/components/header/header.md.css?tag=ion-header&mode=md","../node_modules/@ionic/core/dist/collection/components/header/header.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { readTask, writeTask } from \"@stencil/core\";\nimport { clamp } from \"../../utils/helpers\";\nconst TRANSITION = 'all 0.2s ease-in-out';\nexport const cloneElement = (tagName) => {\n const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);\n if (getCachedEl !== null) {\n return getCachedEl;\n }\n const clonedEl = document.createElement(tagName);\n clonedEl.classList.add('ion-cloned-element');\n clonedEl.style.setProperty('display', 'none');\n document.body.appendChild(clonedEl);\n return clonedEl;\n};\nexport const createHeaderIndex = (headerEl) => {\n if (!headerEl) {\n return;\n }\n const toolbars = headerEl.querySelectorAll('ion-toolbar');\n return {\n el: headerEl,\n toolbars: Array.from(toolbars).map((toolbar) => {\n const ionTitleEl = toolbar.querySelector('ion-title');\n return {\n el: toolbar,\n background: toolbar.shadowRoot.querySelector('.toolbar-background'),\n ionTitleEl,\n innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,\n ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),\n };\n }),\n };\n};\nexport const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const scale = clamp(1, 1 + -scrollTop / 500, 1.1);\n // Native refresher should not cause titles to scale\n const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');\n if (nativeRefresher === null) {\n writeTask(() => {\n scaleLargeTitles(scrollHeaderIndex.toolbars, scale);\n });\n }\n });\n};\nexport const setToolbarBackgroundOpacity = (headerEl, opacity) => {\n /**\n * Fading in the backdrop opacity\n * should happen after the large title\n * has collapsed, so it is handled\n * by handleHeaderFade()\n */\n if (headerEl.collapse === 'fade') {\n return;\n }\n if (opacity === undefined) {\n headerEl.style.removeProperty('--opacity-scale');\n }\n else {\n headerEl.style.setProperty('--opacity-scale', opacity.toString());\n }\n};\nconst handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {\n if (!ev[0].isIntersecting) {\n return;\n }\n /**\n * There is a bug in Safari where overflow scrolling on a non-body element\n * does not always reset the scrollTop position to 0 when letting go. It will\n * set to 1 once the rubber band effect has ended. This causes the background to\n * appear slightly on certain app setups.\n *\n * Additionally, we check if user is rubber banding (scrolling is negative)\n * as this can mean they are using pull to refresh. Once the refresher starts,\n * the content is transformed which can cause the intersection observer to erroneously\n * fire here as well.\n */\n const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;\n setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);\n};\n/**\n * If toolbars are intersecting, hide the scrollable toolbar content\n * and show the primary toolbar content. If the toolbars are not intersecting,\n * hide the primary toolbar content and show the scrollable toolbar content\n */\nexport const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)\nmainHeaderIndex, scrollHeaderIndex, scrollEl) => {\n writeTask(() => {\n const scrollTop = scrollEl.scrollTop;\n handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);\n const event = ev[0];\n const intersection = event.intersectionRect;\n const intersectionArea = intersection.width * intersection.height;\n const rootArea = event.rootBounds.width * event.rootBounds.height;\n const isPageHidden = intersectionArea === 0 && rootArea === 0;\n const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);\n const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);\n const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);\n if (isPageHidden || isPageTransitioning) {\n return;\n }\n if (event.isIntersecting) {\n setHeaderActive(mainHeaderIndex, false);\n setHeaderActive(scrollHeaderIndex);\n }\n else {\n /**\n * There is a bug with IntersectionObserver on Safari\n * where `event.isIntersecting === false` when cancelling\n * a swipe to go back gesture. Checking the intersection\n * x, y, width, and height provides a workaround. This bug\n * does not happen when using Safari + Web Animations,\n * only Safari + CSS Animations.\n */\n const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);\n if (hasValidIntersection && scrollTop > 0) {\n setHeaderActive(mainHeaderIndex);\n setHeaderActive(scrollHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el);\n }\n }\n });\n};\nexport const setHeaderActive = (headerIndex, active = true) => {\n const headerEl = headerIndex.el;\n if (active) {\n headerEl.classList.remove('header-collapse-condense-inactive');\n headerEl.removeAttribute('aria-hidden');\n }\n else {\n headerEl.classList.add('header-collapse-condense-inactive');\n headerEl.setAttribute('aria-hidden', 'true');\n }\n};\nexport const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {\n toolbars.forEach((toolbar) => {\n const ionTitle = toolbar.ionTitleEl;\n const titleDiv = toolbar.innerTitleEl;\n if (!ionTitle || ionTitle.size !== 'large') {\n return;\n }\n titleDiv.style.transition = transition ? TRANSITION : '';\n titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;\n });\n};\nexport const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {\n readTask(() => {\n const scrollTop = scrollEl.scrollTop;\n const baseElHeight = baseEl.clientHeight;\n const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;\n /**\n * If we are using fade header with a condense\n * header, then the toolbar backgrounds should\n * not begin to fade in until the condense\n * header has fully collapsed.\n *\n * Additionally, the main content should not\n * overflow out of the container until the\n * condense header has fully collapsed. When\n * using just the condense header the content\n * should overflow out of the container.\n */\n if (condenseHeader !== null && scrollTop < fadeStart) {\n baseEl.style.setProperty('--opacity-scale', '0');\n scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);\n return;\n }\n const distanceToStart = scrollTop - fadeStart;\n const fadeDuration = 10;\n const scale = clamp(0, distanceToStart / fadeDuration, 1);\n writeTask(() => {\n scrollEl.style.removeProperty('clip-path');\n baseEl.style.setProperty('--opacity-scale', scale.toString());\n });\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 */\nion-header {\n display: block;\n position: relative;\n order: -1;\n width: 100%;\n z-index: 10;\n}\n\nion-header ion-toolbar:first-of-type {\n padding-top: var(--ion-safe-area-top, 0);\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.header-ios ion-toolbar:last-of-type {\n --border-width: 0 0 0.55px;\n}\n\n@supports (backdrop-filter: blur(0)) {\n .header-background {\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n position: absolute;\n backdrop-filter: saturate(180%) blur(20px);\n }\n .header-translucent-ios ion-toolbar {\n --opacity: .8;\n }\n /**\n * Disable the saturation otherwise it distorts the content\n * background color when large header is not collapsed\n */\n .header-collapse-condense-inactive .header-background {\n backdrop-filter: blur(20px);\n }\n}\n.header-ios.ion-no-border ion-toolbar:last-of-type {\n --border-width: 0;\n}\n\n.header-collapse-fade ion-toolbar {\n --opacity-scale: inherit;\n}\n\n.header-collapse-condense {\n z-index: 9;\n}\n\n.header-collapse-condense ion-toolbar {\n position: sticky;\n top: 0;\n}\n\n.header-collapse-condense ion-toolbar:first-of-type {\n /**\n * The toolbar that contains the collapsible\n * large title should not have safe area padding applied.\n */\n padding-top: 0px;\n z-index: 1;\n}\n\n/**\n * Large title toolbar should just use the content background\n * since it needs to blend in with the header above it.\n */\n.header-collapse-condense ion-toolbar {\n --background: var(--ion-background-color, #fff);\n z-index: 0;\n}\n\n.header-collapse-condense ion-toolbar:last-of-type {\n --border-width: 0px;\n}\n\n.header-collapse-condense ion-toolbar ion-searchbar {\n padding-top: 0px;\n padding-bottom: 13px;\n}\n\n.header-collapse-main {\n --opacity-scale: 1;\n}\n\n.header-collapse-main ion-toolbar {\n --opacity-scale: inherit;\n}\n\n.header-collapse-main ion-toolbar.in-toolbar ion-title,\n.header-collapse-main ion-toolbar.in-toolbar ion-buttons {\n transition: all 0.2s ease-in-out;\n}\n\n.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,\n.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse {\n opacity: 0;\n pointer-events: none;\n}\n\n/**\n * There is a bug in Safari where changing\n * the opacity of an element in a scrollable container\n * while rubber-banding causes the scroll position\n * to jump to the top\n */\n.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,\n.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse {\n visibility: hidden;\n}\n\n/**\n * The main header is only hidden once the collapsible large\n * title is configured. As a result, if the main header loads\n * before the collapsible large title is configured then the\n * main header will be visible briefly before being hidden\n * by the collapsible large title.\n *\n * The following selector ensures that any main header\n * on a page with a collapsible large title is hidden\n * before the collapsible large title is configured.\n * Once the collapsible large title is configured the main\n * header will have the \".header-collapse-main\" class, and\n * this selector will no longer apply.\n *\n * The :has(...) part of the selector ensures a couple things:\n * 1. This will only apply within a page view since the content\n * must be a subsequent-sibling of the header (~ ion-content).\n * 2. This will only apply when that content has a collapse header (ion-header[collapse=\"condense\"])\n *\n * We use opacity: 0 to avoid a layout shift.\n * We target both the attribute and the class in the event that the attribute\n * is not reflected on the host in some frameworks.\n *\n * Both headers should be scoped to iOS mode otherwise an MD app that uses an\n * iOS header may cause other MD headers to be unexpectedly hidden.\n */\nion-header.header-ios:not(.header-collapse-main):has(~ ion-content ion-header.header-ios[collapse=condense],\n~ ion-content ion-header.header-ios.header-collapse-condense) {\n opacity: 0;\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 */\nion-header {\n display: block;\n position: relative;\n order: -1;\n width: 100%;\n z-index: 10;\n}\n\nion-header ion-toolbar:first-of-type {\n padding-top: var(--ion-safe-area-top, 0);\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.header-md {\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n\n.header-collapse-condense {\n display: none;\n}\n\n.header-md.ion-no-border {\n box-shadow: none;\n}","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { Host, h, writeTask } from \"@stencil/core\";\nimport { findIonContent, getScrollElement, printIonContentErrorMsg } from \"../../utils/content/index\";\nimport { inheritAriaAttributes } from \"../../utils/helpers\";\nimport { hostContext } from \"../../utils/theme\";\nimport { getIonMode } from \"../../global/ionic-global\";\nimport { cloneElement, createHeaderIndex, handleContentScroll, handleHeaderFade, handleToolbarIntersection, setHeaderActive, setToolbarBackgroundOpacity, } from \"./header.utils\";\n/**\n * @virtualProp {\"ios\" | \"md\"} mode - The mode determines which platform styles to use.\n */\nexport class Header {\n constructor() {\n this.inheritedAttributes = {};\n this.setupFadeHeader = async (contentEl, condenseHeader) => {\n const scrollEl = (this.scrollEl = await getScrollElement(contentEl));\n /**\n * Handle fading of toolbars on scroll\n */\n this.contentScrollCallback = () => {\n handleHeaderFade(this.scrollEl, this.el, condenseHeader);\n };\n scrollEl.addEventListener('scroll', this.contentScrollCallback);\n handleHeaderFade(this.scrollEl, this.el, condenseHeader);\n };\n this.collapse = undefined;\n this.translucent = false;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n this.checkCollapsibleHeader();\n }\n componentDidUpdate() {\n this.checkCollapsibleHeader();\n }\n disconnectedCallback() {\n this.destroyCollapsibleHeader();\n }\n async checkCollapsibleHeader() {\n const mode = getIonMode(this);\n if (mode !== 'ios') {\n return;\n }\n const { collapse } = this;\n const hasCondense = collapse === 'condense';\n const hasFade = collapse === 'fade';\n this.destroyCollapsibleHeader();\n if (hasCondense) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n // Cloned elements are always needed in iOS transition\n writeTask(() => {\n const title = cloneElement('ion-title');\n title.size = 'large';\n cloneElement('ion-back-button');\n });\n await this.setupCondenseHeader(contentEl, pageEl);\n }\n else if (hasFade) {\n const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');\n const contentEl = pageEl ? findIonContent(pageEl) : null;\n if (!contentEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n const condenseHeader = contentEl.querySelector('ion-header[collapse=\"condense\"]');\n await this.setupFadeHeader(contentEl, condenseHeader);\n }\n }\n destroyCollapsibleHeader() {\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect();\n this.intersectionObserver = undefined;\n }\n if (this.scrollEl && this.contentScrollCallback) {\n this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);\n this.contentScrollCallback = undefined;\n }\n if (this.collapsibleMainHeader) {\n this.collapsibleMainHeader.classList.remove('header-collapse-main');\n this.collapsibleMainHeader = undefined;\n }\n }\n async setupCondenseHeader(contentEl, pageEl) {\n if (!contentEl || !pageEl) {\n printIonContentErrorMsg(this.el);\n return;\n }\n if (typeof IntersectionObserver === 'undefined') {\n return;\n }\n this.scrollEl = await getScrollElement(contentEl);\n const headers = pageEl.querySelectorAll('ion-header');\n this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');\n if (!this.collapsibleMainHeader) {\n return;\n }\n const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);\n const scrollHeaderIndex = createHeaderIndex(this.el);\n if (!mainHeaderIndex || !scrollHeaderIndex) {\n return;\n }\n setHeaderActive(mainHeaderIndex, false);\n setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);\n /**\n * Handle interaction between toolbar collapse and\n * showing/hiding content in the primary ion-header\n * as well as progressively showing/hiding the main header\n * border as the top-most toolbar collapses or expands.\n */\n const toolbarIntersection = (ev) => {\n handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);\n };\n this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {\n root: contentEl,\n threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],\n });\n this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);\n /**\n * Handle scaling of large iOS titles and\n * showing/hiding border on last toolbar\n * in primary header\n */\n this.contentScrollCallback = () => {\n handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);\n };\n this.scrollEl.addEventListener('scroll', this.contentScrollCallback);\n writeTask(() => {\n if (this.collapsibleMainHeader !== undefined) {\n this.collapsibleMainHeader.classList.add('header-collapse-main');\n }\n });\n }\n render() {\n const { translucent, inheritedAttributes } = this;\n const mode = getIonMode(this);\n const collapse = this.collapse || 'none';\n // banner role must be at top level, so remove role if inside a menu\n const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';\n return (h(Host, Object.assign({ key: '9fa0af97b605f9fe98b13361bc3d1289745c549f', role: roleType, class: {\n [mode]: true,\n // Used internally for styling\n [`header-${mode}`]: true,\n [`header-translucent`]: this.translucent,\n [`header-collapse-${collapse}`]: true,\n [`header-translucent-${mode}`]: this.translucent,\n } }, inheritedAttributes), mode === 'ios' && translucent && h(\"div\", { key: '1a780d2625302f2465718e304bdd3794c89c9845', class: \"header-background\" }), h(\"slot\", { key: 'b2b8557b44be40c590bfcc362ac4350f9f8b889e' })));\n }\n static get is() { return \"ion-header\"; }\n static get originalStyleUrls() {\n return {\n \"ios\": [\"header.ios.scss\"],\n \"md\": [\"header.md.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"ios\": [\"header.ios.css\"],\n \"md\": [\"header.md.css\"]\n };\n }\n static get properties() {\n return {\n \"collapse\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"'condense' | 'fade'\",\n \"resolved\": \"\\\"condense\\\" | \\\"fade\\\" | undefined\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Describes the scroll effect that will be applied to the header.\\nOnly applies in iOS mode.\\n\\nTypically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)\"\n },\n \"attribute\": \"collapse\",\n \"reflect\": false\n },\n \"translucent\": {\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`, the header will be translucent.\\nOnly applies when the mode is `\\\"ios\\\"` and the device supports\\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\\n\\nNote: In order to scroll content behind the header, the `fullscreen`\\nattribute needs to be set on the content.\"\n },\n \"attribute\": \"translucent\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n }\n };\n }\n static get elementRef() { return \"el\"; }\n}\n"],"version":3}
|