@pod-os/elements 0.17.1-fef97c9.0 → 0.18.1-a971174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/elements.cjs.js +1 -1
- package/dist/cjs/ion-app.cjs.entry.js +114 -0
- package/dist/cjs/ion-app.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-badge_11.cjs.entry.js +1 -1
- package/dist/cjs/{ion-app_32.cjs.entry.js → ion-card_26.cjs.entry.js} +48 -1380
- package/dist/cjs/ion-card_26.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-content.cjs.entry.js +416 -0
- package/dist/cjs/ion-content.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-footer.cjs.entry.js +144 -0
- package/dist/cjs/ion-footer.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-header.cjs.entry.js +346 -0
- package/dist/cjs/ion-header.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-title.cjs.entry.js +58 -0
- package/dist/cjs/ion-title.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js +79 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pos-app-generic.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-ldp-container.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-rdf-document.cjs.entry.js +1 -1
- package/dist/collection/apps/pos-app-browser/pos-app-browser.css +64 -0
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js +33 -2
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js.map +1 -1
- package/dist/collection/apps/pos-app-generic/pos-app-generic.js +1 -1
- package/dist/collection/apps/pos-app-ldp-container/pos-app-ldp-container.js +1 -1
- package/dist/collection/apps/pos-app-rdf-document/pos-app-rdf-document.js +1 -1
- package/dist/collection/components/pos-add-new-thing/pos-add-new-thing.js +1 -1
- package/dist/collection/components/pos-app/pos-app.js +1 -1
- package/dist/collection/components/pos-dialog/pos-dialog.js +1 -1
- package/dist/collection/components/pos-error-toast/pos-error-toast.js +1 -1
- package/dist/collection/components/pos-literals/pos-literals.js +1 -1
- package/dist/collection/components/pos-login/pos-login.css +13 -9
- package/dist/collection/components/pos-login/pos-login.js +1 -1
- package/dist/collection/components/pos-login/pos-login.js.map +1 -1
- package/dist/collection/components/pos-login-form/pos-login-form.js +1 -1
- package/dist/collection/components/pos-navigation-bar/pos-navigation-bar.js +1 -1
- package/dist/collection/components/pos-new-thing-form/pos-new-thing-form.js +1 -1
- package/dist/collection/components/pos-rich-link/pos-rich-link.js +2 -2
- package/dist/collection/components/pos-router/pos-router.js +26 -2
- package/dist/collection/components/pos-router/pos-router.js.map +1 -1
- package/dist/collection/components/pos-select-term/pos-select-term.js +1 -1
- package/dist/components/ion-app.js +121 -1
- package/dist/components/ion-app.js.map +1 -1
- package/dist/components/ion-content.js +436 -1
- package/dist/components/ion-content.js.map +1 -1
- package/dist/components/ion-footer.js +150 -1
- package/dist/components/ion-footer.js.map +1 -1
- package/dist/components/ion-header.js +354 -1
- package/dist/components/ion-header.js.map +1 -1
- package/dist/components/ion-title.js +70 -1
- package/dist/components/ion-title.js.map +1 -1
- package/dist/components/ion-toolbar.js +88 -1
- package/dist/components/ion-toolbar.js.map +1 -1
- package/dist/components/pos-add-new-thing2.js +1 -1
- package/dist/components/pos-app-browser.js +40 -55
- package/dist/components/pos-app-browser.js.map +1 -1
- package/dist/components/pos-app-generic.js +1 -1
- package/dist/components/pos-app-ldp-container.js +1 -1
- package/dist/components/pos-app-rdf-document.js +1 -1
- package/dist/components/pos-app2.js +1 -1
- package/dist/components/pos-dialog2.js +1 -1
- package/dist/components/pos-error-toast2.js +1 -1
- package/dist/components/pos-literals2.js +1 -1
- package/dist/components/pos-login-form2.js +1 -1
- package/dist/components/pos-login2.js +2 -2
- package/dist/components/pos-login2.js.map +1 -1
- package/dist/components/pos-navigation-bar2.js +1 -1
- package/dist/components/pos-new-thing-form2.js +1 -1
- package/dist/components/pos-rich-link2.js +2 -2
- package/dist/components/pos-router2.js +6 -375
- package/dist/components/pos-router2.js.map +1 -1
- package/dist/components/pos-select-term2.js +1 -1
- package/dist/elements/elements.css +1 -1
- package/dist/elements/elements.esm.js +1 -1
- package/dist/elements/elements.esm.js.map +1 -1
- package/dist/elements/p-00ce08f0.entry.js +2 -0
- package/dist/elements/{p-546a0100.entry.js.map → p-00ce08f0.entry.js.map} +1 -1
- package/dist/elements/p-012387ef.js +5 -0
- package/dist/elements/{p-e06dbbcc.entry.js → p-0133f543.entry.js} +2 -2
- package/dist/elements/p-05e3c2f1.entry.js +2 -0
- package/dist/elements/{p-d5ff3d36.entry.js.map → p-05e3c2f1.entry.js.map} +1 -1
- package/dist/elements/{p-3aeb707f.entry.js → p-09a7b8e1.entry.js} +2 -2
- package/dist/elements/{p-86136480.entry.js → p-11ad53dd.entry.js} +2 -2
- package/dist/elements/{p-9365c31d.entry.js → p-122324d9.entry.js} +2 -2
- package/dist/elements/{p-530932bb.js → p-163e3e87.js} +2 -2
- package/dist/elements/{p-9b56d918.js → p-18d4a4f4.js} +3 -3
- package/dist/elements/{p-b90d29b6.entry.js → p-18d9c4f7.entry.js} +2 -2
- package/dist/elements/{p-69d9dbbf.entry.js → p-1a90b8bb.entry.js} +2 -2
- package/dist/elements/{p-02b4f408.entry.js → p-1f36a3c0.entry.js} +2 -2
- package/dist/elements/{p-c7ac1d8b.entry.js → p-200707c8.entry.js} +6 -6
- package/dist/elements/{p-78982008.entry.js → p-2072bd89.entry.js} +2 -2
- package/dist/elements/{p-170a54a2.js → p-20e2e8c1.js} +3 -3
- package/dist/elements/{p-9e7f0522.js → p-25270f1a.js} +2 -2
- package/dist/elements/p-27e8c19d.entry.js +2 -0
- package/dist/elements/{p-909f0d6e.entry.js.map → p-27e8c19d.entry.js.map} +1 -1
- package/dist/elements/p-27ec1e73.entry.js +2 -0
- package/dist/elements/{p-c4a822b5.entry.js → p-28b1f2dc.entry.js} +2 -2
- package/dist/elements/{p-4d47eeb5.js → p-2a17fd31.js} +2 -2
- package/dist/elements/{p-8d4278bb.entry.js → p-2adb9784.entry.js} +2 -2
- package/dist/elements/p-2f85baae.entry.js +2 -0
- package/dist/elements/{p-e3d72483.entry.js.map → p-2f85baae.entry.js.map} +1 -1
- package/dist/elements/{p-d212be68.entry.js → p-30685d32.entry.js} +2 -2
- package/dist/elements/{p-8e1e3e7d.js → p-359bfe6a.js} +2 -2
- package/dist/elements/p-382054bf.entry.js +2 -0
- package/dist/elements/p-382054bf.entry.js.map +1 -0
- package/dist/elements/{p-bba60e3b.entry.js → p-39cc0ada.entry.js} +2 -2
- package/dist/elements/p-4056decf.entry.js +2 -0
- package/dist/elements/p-4056decf.entry.js.map +1 -0
- package/dist/elements/p-4918fd10.entry.js +2 -0
- package/dist/elements/p-4918fd10.entry.js.map +1 -0
- package/dist/elements/{p-af43acbb.entry.js → p-4c0808b4.entry.js} +2 -2
- package/dist/elements/p-4cf87b24.entry.js +2 -0
- package/dist/elements/{p-0edf98c5.entry.js.map → p-4cf87b24.entry.js.map} +1 -1
- package/dist/elements/{p-b8ac0ee4.js → p-4d6e48bf.js} +2 -2
- package/dist/elements/{p-28ad7b6e.entry.js → p-5298b7a1.entry.js} +2 -2
- package/dist/elements/{p-0b1c92f2.entry.js → p-52c87099.entry.js} +2 -2
- package/dist/elements/{p-c0eb0e3d.entry.js → p-55fbf5f7.entry.js} +3 -3
- package/dist/elements/{p-c0eb0e3d.entry.js.map → p-55fbf5f7.entry.js.map} +1 -1
- package/dist/elements/{p-2428b6bf.js → p-592177e8.js} +2 -2
- package/dist/elements/{p-8b81a782.js → p-595c0a57.js} +2 -2
- package/dist/elements/{p-e32a52ee.js → p-5a248cff.js} +2 -2
- package/dist/elements/p-5b933f24.entry.js +2 -0
- package/dist/elements/p-5b933f24.entry.js.map +1 -0
- package/dist/elements/{p-cc62cb3d.entry.js → p-61a489ee.entry.js} +2 -2
- package/dist/elements/p-6ac0c71c.entry.js +2 -0
- package/dist/elements/{p-6c9053ed.entry.js → p-6bcba1f6.entry.js} +2 -2
- package/dist/elements/{p-ddc13326.entry.js → p-6e2a89ab.entry.js} +2 -2
- package/dist/elements/{p-565128c5.entry.js → p-74ebe432.entry.js} +2 -2
- package/dist/elements/p-76543de1.entry.js +2 -0
- package/dist/elements/{p-d7231d27.entry.js → p-76e7559c.entry.js} +2 -2
- package/dist/elements/{p-41e21640.entry.js → p-778d7821.entry.js} +6 -6
- package/dist/elements/{p-f941317f.entry.js → p-78ba7248.entry.js} +2 -2
- package/dist/elements/{p-6579450f.js → p-7a563988.js} +2 -2
- package/dist/elements/{p-3c2b721e.js → p-7f507bcb.js} +2 -2
- package/dist/elements/p-7fb554a5.entry.js +2 -0
- package/dist/elements/{p-cc274814.entry.js.map → p-7fb554a5.entry.js.map} +1 -1
- package/dist/elements/p-8206b1f1.js +6 -0
- package/dist/elements/{p-b097a0ac.entry.js → p-82fb9396.entry.js} +2 -2
- package/dist/elements/{p-d86e6e48.entry.js → p-8817e69b.entry.js} +2 -2
- package/dist/elements/p-8865cb08.entry.js +2 -0
- package/dist/elements/{p-0951f046.entry.js → p-8b9b339b.entry.js} +2 -2
- package/dist/elements/{p-553217d4.entry.js → p-8b9b7f79.entry.js} +2 -2
- package/dist/elements/{p-86eaec56.entry.js → p-8c32e0ab.entry.js} +2 -2
- package/dist/elements/p-8fe569b3.entry.js +2 -0
- package/dist/elements/p-9090e8dc.entry.js +2 -0
- package/dist/elements/p-90f99f85.entry.js +5 -0
- package/dist/elements/p-90f99f85.entry.js.map +1 -0
- package/dist/elements/{p-fb11bb27.entry.js → p-916a6612.entry.js} +2 -2
- package/dist/elements/{p-fa9aa28a.entry.js → p-a68e7901.entry.js} +2 -2
- package/dist/elements/p-a88c6bd6.entry.js +2 -0
- package/dist/elements/{p-f05a0cca.entry.js.map → p-a88c6bd6.entry.js.map} +1 -1
- package/dist/elements/{p-69410d36.js → p-a91046dc.js} +3 -3
- package/dist/elements/{p-325e5484.entry.js → p-aad12400.entry.js} +2 -2
- package/dist/elements/{p-58418838.entry.js → p-ab92e9ad.entry.js} +2 -2
- package/dist/elements/{p-d01e6782.entry.js → p-af3f8ab1.entry.js} +2 -2
- package/dist/elements/p-b11e8f77.entry.js +2 -0
- package/dist/elements/{p-77d82071.entry.js → p-b19890bd.entry.js} +2 -2
- package/dist/elements/p-b1d0e1fe.entry.js +5 -0
- package/dist/{components/header.js.map → elements/p-b1d0e1fe.entry.js.map} +1 -1
- package/dist/elements/{p-573b7dca.entry.js → p-b227f4a8.entry.js} +2 -2
- package/dist/elements/p-b8b9096d.entry.js +2 -0
- package/dist/elements/p-b8b9096d.entry.js.map +1 -0
- package/dist/elements/{p-134b66b6.js → p-bb3054a3.js} +6 -6
- package/dist/elements/p-bc5eefc4.entry.js +2 -0
- package/dist/elements/{p-b115ebcf.entry.js.map → p-bc5eefc4.entry.js.map} +1 -1
- package/dist/elements/{p-56bf9fdf.js → p-c2690129.js} +2 -2
- package/dist/elements/{p-8b0695a7.entry.js → p-c445f3ac.entry.js} +2 -2
- package/dist/elements/{p-2ba30f60.entry.js → p-c9faf4da.entry.js} +2 -2
- package/dist/elements/p-ca453b3d.js +8 -0
- package/dist/elements/p-cc23946c.entry.js +2 -0
- package/dist/elements/{p-4342e2ef.entry.js.map → p-cc23946c.entry.js.map} +1 -1
- package/dist/elements/{p-c23172a0.entry.js → p-cd9107d1.entry.js} +2 -2
- package/dist/elements/{p-9b369d09.js → p-cebe59d4.js} +2 -2
- package/dist/elements/{p-b67ce91f.entry.js → p-cfec477d.entry.js} +2 -2
- package/dist/elements/{p-1c69ca01.js → p-d0fcc589.js} +2 -2
- package/dist/elements/{p-257248f2.entry.js → p-d2458575.entry.js} +2 -2
- package/dist/elements/p-d2e7f4d4.entry.js +2 -0
- package/dist/elements/p-d65caf7a.entry.js +2 -0
- package/dist/elements/{p-acbfc962.entry.js.map → p-d65caf7a.entry.js.map} +1 -1
- package/dist/elements/{p-3505dfe2.js → p-d6769f21.js} +2 -2
- package/dist/elements/{p-a1a15808.entry.js → p-d6bf2b98.entry.js} +2 -2
- package/dist/elements/{p-75cbc833.entry.js → p-d86570da.entry.js} +2 -2
- package/dist/elements/p-d8e8bd9b.entry.js +2 -0
- package/dist/elements/p-d8fc8b11.js +2 -0
- package/dist/elements/{p-0ddd5da3.entry.js → p-da5f6dcd.entry.js} +3 -3
- package/dist/elements/{p-ab5544fc.entry.js → p-db793eec.entry.js} +2 -2
- package/dist/elements/p-db973275.js +5 -0
- package/dist/elements/{p-5f2c1e33.entry.js → p-e134ddc9.entry.js} +2 -2
- package/dist/elements/{p-0752ec21.entry.js → p-e3ae9b45.entry.js} +2 -2
- package/dist/elements/p-e5cefd56.entry.js +2 -0
- package/dist/elements/{p-64af0b46.entry.js.map → p-e5cefd56.entry.js.map} +1 -1
- package/dist/elements/{p-ad2273d6.js → p-ecdb52e8.js} +2 -2
- package/dist/elements/{p-2dddbb15.js → p-f1ef82a9.js} +4 -4
- package/dist/elements/p-f4440338.entry.js +2 -0
- package/dist/elements/{p-5bd948fa.entry.js → p-f981858f.entry.js} +2 -2
- package/dist/elements/{p-f6b92b3c.entry.js → p-fd200088.entry.js} +2 -2
- package/dist/elements/{p-b56ae71f.entry.js → p-fdeb6a78.entry.js} +3 -3
- package/dist/esm/{BrokenFile-0cbdf2f2.js → BrokenFile-660171a9.js} +2 -2
- package/dist/esm/{BrokenFile-0cbdf2f2.js.map → BrokenFile-660171a9.js.map} +1 -1
- package/dist/esm/{animation-0dedebd7.js → animation-8c622dae.js} +2 -2
- package/dist/esm/{animation-0dedebd7.js.map → animation-8c622dae.js.map} +1 -1
- package/dist/esm/{app-globals-8441b381.js → app-globals-a35b051d.js} +2 -2
- package/dist/esm/{app-globals-8441b381.js.map → app-globals-a35b051d.js.map} +1 -1
- package/dist/esm/{data-3bd275a7.js → data-cdc9b206.js} +2 -2
- package/dist/esm/{data-3bd275a7.js.map → data-cdc9b206.js.map} +1 -1
- package/dist/esm/elements.js +5 -5
- package/dist/esm/{form-controller-ba097a73.js → form-controller-1f70ed52.js} +2 -2
- package/dist/esm/{form-controller-ba097a73.js.map → form-controller-1f70ed52.js.map} +1 -1
- package/dist/esm/{framework-delegate-0ffa1682.js → framework-delegate-b5751311.js} +2 -2
- package/dist/esm/{framework-delegate-0ffa1682.js.map → framework-delegate-b5751311.js.map} +1 -1
- package/dist/esm/{hardware-back-button-80e72d27.js → hardware-back-button-e34ddb75.js} +3 -3
- package/dist/esm/{hardware-back-button-80e72d27.js.map → hardware-back-button-e34ddb75.js.map} +1 -1
- package/dist/esm/{helpers-ad2d8971.js → helpers-a93a8cd2.js} +2 -2
- package/dist/esm/{helpers-ad2d8971.js.map → helpers-a93a8cd2.js.map} +1 -1
- package/dist/esm/{index-141ce7d0.js → index-1e601862.js} +5 -5
- package/dist/esm/{index-141ce7d0.js.map → index-1e601862.js.map} +1 -1
- package/dist/esm/{index-38b2da1b.js → index-432e7c6f.js} +3 -3
- package/dist/esm/{index-38b2da1b.js.map → index-432e7c6f.js.map} +1 -1
- package/dist/esm/{index-46b2983b.js → index-538226d8.js} +2 -2
- package/dist/esm/{index-46b2983b.js.map → index-538226d8.js.map} +1 -1
- package/dist/esm/{index-049cf01c.js → index-e9b97538.js} +6 -6
- package/dist/esm/{index-049cf01c.js.map → index-e9b97538.js.map} +1 -1
- package/dist/esm/{index-c043b4c8.js → index-f69a875d.js} +2 -2
- package/dist/esm/{index-c043b4c8.js.map → index-f69a875d.js.map} +1 -1
- package/dist/esm/{index-bec78e8b.js → index-f7ac0403.js} +2 -2
- package/dist/esm/{index-bec78e8b.js.map → index-f7ac0403.js.map} +1 -1
- package/dist/esm/{input-shims-2246db96.js → input-shims-212ee02f.js} +4 -4
- package/dist/esm/{input-shims-2246db96.js.map → input-shims-212ee02f.js.map} +1 -1
- package/dist/esm/{input.utils-8550a81d.js → input.utils-d2c917c3.js} +3 -3
- package/dist/esm/{input.utils-8550a81d.js.map → input.utils-d2c917c3.js.map} +1 -1
- package/dist/esm/ion-accordion-group.entry.js +3 -3
- package/dist/esm/ion-accordion.entry.js +3 -3
- package/dist/esm/ion-action-sheet_3.entry.js +8 -8
- package/dist/{components/app.js → esm/ion-app.entry.js} +20 -35
- package/dist/esm/ion-app.entry.js.map +1 -0
- package/dist/esm/ion-avatar.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-badge_11.entry.js +8 -8
- package/dist/esm/ion-breadcrumb.entry.js +3 -3
- package/dist/esm/ion-breadcrumbs.entry.js +2 -2
- package/dist/esm/ion-button_4.entry.js +4 -4
- package/dist/esm/ion-card-subtitle.entry.js +2 -2
- package/dist/esm/{ion-app_32.entry.js → ion-card_26.entry.js} +48 -1374
- package/dist/esm/ion-card_26.entry.js.map +1 -0
- package/dist/esm/ion-checkbox_4.entry.js +5 -5
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/{components/content.js → esm/ion-content.entry.js} +14 -42
- package/dist/esm/ion-content.entry.js.map +1 -0
- package/dist/esm/ion-datetime-button.entry.js +5 -5
- package/dist/esm/ion-datetime.entry.js +5 -5
- package/dist/esm/ion-fab-button.entry.js +3 -3
- package/dist/esm/ion-fab-list.entry.js +2 -2
- package/dist/esm/ion-fab.entry.js +2 -2
- package/dist/{components/footer.js → esm/ion-footer.entry.js} +20 -34
- package/dist/esm/ion-footer.entry.js.map +1 -0
- package/dist/{components/header.js → esm/ion-header.entry.js} +17 -33
- package/dist/esm/ion-header.entry.js.map +1 -0
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll-content.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll.entry.js +5 -5
- package/dist/esm/ion-item-option.entry.js +2 -2
- package/dist/esm/ion-item-options.entry.js +3 -3
- package/dist/esm/ion-item-sliding.entry.js +5 -5
- package/dist/esm/ion-item_4.entry.js +4 -4
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu-button.entry.js +8 -8
- package/dist/esm/ion-menu-toggle.entry.js +8 -8
- package/dist/esm/ion-menu.entry.js +9 -9
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav-link.entry.js +1 -1
- package/dist/esm/ion-nav.entry.js +6 -6
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +8 -8
- package/dist/esm/ion-popover.entry.js +9 -9
- package/dist/esm/ion-range.entry.js +6 -6
- package/dist/esm/ion-refresher-content.entry.js +5 -5
- package/dist/esm/ion-refresher.entry.js +7 -7
- package/dist/esm/ion-reorder-group.entry.js +5 -5
- package/dist/esm/ion-reorder.entry.js +2 -2
- package/dist/esm/ion-route-redirect.entry.js +1 -1
- package/dist/esm/ion-route.entry.js +1 -1
- package/dist/esm/ion-router-link.entry.js +2 -2
- package/dist/esm/ion-router-outlet.entry.js +6 -6
- package/dist/esm/ion-router.entry.js +2 -2
- package/dist/esm/ion-segment-button.entry.js +3 -3
- package/dist/esm/ion-segment.entry.js +3 -3
- package/dist/esm/ion-select-option.entry.js +2 -2
- package/dist/esm/ion-select.entry.js +9 -9
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar.entry.js +2 -2
- package/dist/esm/ion-tab-button.entry.js +3 -3
- package/dist/esm/ion-tab.entry.js +3 -3
- package/dist/esm/ion-tabs.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +7 -7
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/{components/title.js → esm/ion-title.entry.js} +14 -34
- package/dist/esm/ion-title.entry.js.map +1 -0
- package/dist/esm/ion-toast.entry.js +8 -8
- package/dist/esm/ion-toggle.entry.js +5 -5
- package/dist/{components/toolbar.js → esm/ion-toolbar.entry.js} +14 -31
- package/dist/esm/ion-toolbar.entry.js.map +1 -0
- package/dist/esm/{ionic-global-006bfdaa.js → ionic-global-163eb7af.js} +2 -2
- package/dist/esm/{ionic-global-006bfdaa.js.map → ionic-global-163eb7af.js.map} +1 -1
- package/dist/esm/{ios.transition-e19293f7.js → ios.transition-0236708a.js} +5 -5
- package/dist/esm/{ios.transition-e19293f7.js.map → ios.transition-0236708a.js.map} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-d72e937f.js → md.transition-e93291da.js} +5 -5
- package/dist/esm/{md.transition-d72e937f.js.map → md.transition-e93291da.js.map} +1 -1
- package/dist/esm/{menu-toggle-util-dca4ccca.js → menu-toggle-util-a0afc829.js} +2 -2
- package/dist/esm/{menu-toggle-util-dca4ccca.js.map → menu-toggle-util-a0afc829.js.map} +1 -1
- package/dist/esm/{notch-controller-18232ec1.js → notch-controller-ae856621.js} +2 -2
- package/dist/esm/{notch-controller-18232ec1.js.map → notch-controller-ae856621.js.map} +1 -1
- package/dist/esm/{overlays-f768dabb.js → overlays-708b9a6f.js} +6 -6
- package/dist/esm/{overlays-f768dabb.js.map → overlays-708b9a6f.js.map} +1 -1
- package/dist/esm/pos-app-document-viewer.entry.js +1 -1
- package/dist/esm/pos-app-generic.entry.js +2 -2
- package/dist/esm/pos-app-image-viewer.entry.js +1 -1
- package/dist/esm/pos-app-ldp-container.entry.js +2 -2
- package/dist/esm/pos-app-rdf-document.entry.js +2 -2
- package/dist/esm/pos-container-contents.entry.js +1 -1
- package/dist/esm/pos-container-item.entry.js +1 -1
- package/dist/esm/pos-document.entry.js +2 -2
- package/dist/esm/pos-relations_2.entry.js +1 -1
- package/dist/esm/pos-subjects.entry.js +1 -1
- package/dist/esm/pos-value.entry.js +1 -1
- package/dist/esm/{refresher.utils-5cd2771a.js → refresher.utils-e3624272.js} +4 -4
- package/dist/esm/{refresher.utils-5cd2771a.js.map → refresher.utils-e3624272.js.map} +1 -1
- package/dist/esm/{status-tap-96ab3acb.js → status-tap-9b757300.js} +5 -5
- package/dist/esm/{status-tap-96ab3acb.js.map → status-tap-9b757300.js.map} +1 -1
- package/dist/esm/{swipe-back-44f8b09c.js → swipe-back-5993fe10.js} +2 -2
- package/dist/esm/{swipe-back-44f8b09c.js.map → swipe-back-5993fe10.js.map} +1 -1
- package/dist/types/apps/pos-app-browser/pos-app-browser.d.ts +1 -0
- package/dist/types/components/pos-router/pos-router.d.ts +10 -0
- package/dist/types/components.d.ts +39 -0
- package/package.json +1 -1
- package/dist/cjs/ion-app_32.cjs.entry.js.map +0 -1
- package/dist/components/app.js.map +0 -1
- package/dist/components/content.js.map +0 -1
- package/dist/components/footer.js.map +0 -1
- package/dist/components/title.js.map +0 -1
- package/dist/components/toolbar.js.map +0 -1
- package/dist/elements/p-089421d7.entry.js +0 -8
- package/dist/elements/p-089421d7.entry.js.map +0 -1
- package/dist/elements/p-0edf98c5.entry.js +0 -2
- package/dist/elements/p-0feec79b.js +0 -6
- package/dist/elements/p-118e0bed.entry.js +0 -2
- package/dist/elements/p-2fa5ecde.js +0 -8
- package/dist/elements/p-4342e2ef.entry.js +0 -2
- package/dist/elements/p-546a0100.entry.js +0 -2
- package/dist/elements/p-5f19bcb1.entry.js +0 -2
- package/dist/elements/p-64af0b46.entry.js +0 -2
- package/dist/elements/p-7e36887e.js +0 -5
- package/dist/elements/p-86f80c54.entry.js +0 -2
- package/dist/elements/p-89b3cdad.entry.js +0 -2
- package/dist/elements/p-8eb42424.entry.js +0 -2
- package/dist/elements/p-8f98459a.entry.js +0 -2
- package/dist/elements/p-909f0d6e.entry.js +0 -2
- package/dist/elements/p-963acf5e.entry.js +0 -2
- package/dist/elements/p-9b3608b6.entry.js +0 -2
- package/dist/elements/p-acbfc962.entry.js +0 -2
- package/dist/elements/p-b115ebcf.entry.js +0 -2
- package/dist/elements/p-cc274814.entry.js +0 -2
- package/dist/elements/p-d3a247bd.entry.js +0 -2
- package/dist/elements/p-d5ff3d36.entry.js +0 -2
- package/dist/elements/p-de267699.js +0 -2
- package/dist/elements/p-e3734616.entry.js +0 -2
- package/dist/elements/p-e3d72483.entry.js +0 -2
- package/dist/elements/p-f05a0cca.entry.js +0 -2
- package/dist/elements/p-f82feb40.js +0 -5
- package/dist/esm/ion-app_32.entry.js.map +0 -1
- /package/dist/elements/{p-f82feb40.js.map → p-012387ef.js.map} +0 -0
- /package/dist/elements/{p-e06dbbcc.entry.js.map → p-0133f543.entry.js.map} +0 -0
- /package/dist/elements/{p-3aeb707f.entry.js.map → p-09a7b8e1.entry.js.map} +0 -0
- /package/dist/elements/{p-86136480.entry.js.map → p-11ad53dd.entry.js.map} +0 -0
- /package/dist/elements/{p-9365c31d.entry.js.map → p-122324d9.entry.js.map} +0 -0
- /package/dist/elements/{p-530932bb.js.map → p-163e3e87.js.map} +0 -0
- /package/dist/elements/{p-9b56d918.js.map → p-18d4a4f4.js.map} +0 -0
- /package/dist/elements/{p-b90d29b6.entry.js.map → p-18d9c4f7.entry.js.map} +0 -0
- /package/dist/elements/{p-69d9dbbf.entry.js.map → p-1a90b8bb.entry.js.map} +0 -0
- /package/dist/elements/{p-02b4f408.entry.js.map → p-1f36a3c0.entry.js.map} +0 -0
- /package/dist/elements/{p-c7ac1d8b.entry.js.map → p-200707c8.entry.js.map} +0 -0
- /package/dist/elements/{p-78982008.entry.js.map → p-2072bd89.entry.js.map} +0 -0
- /package/dist/elements/{p-170a54a2.js.map → p-20e2e8c1.js.map} +0 -0
- /package/dist/elements/{p-9e7f0522.js.map → p-25270f1a.js.map} +0 -0
- /package/dist/elements/{p-5f19bcb1.entry.js.map → p-27ec1e73.entry.js.map} +0 -0
- /package/dist/elements/{p-c4a822b5.entry.js.map → p-28b1f2dc.entry.js.map} +0 -0
- /package/dist/elements/{p-4d47eeb5.js.map → p-2a17fd31.js.map} +0 -0
- /package/dist/elements/{p-8d4278bb.entry.js.map → p-2adb9784.entry.js.map} +0 -0
- /package/dist/elements/{p-d212be68.entry.js.map → p-30685d32.entry.js.map} +0 -0
- /package/dist/elements/{p-8e1e3e7d.js.map → p-359bfe6a.js.map} +0 -0
- /package/dist/elements/{p-bba60e3b.entry.js.map → p-39cc0ada.entry.js.map} +0 -0
- /package/dist/elements/{p-af43acbb.entry.js.map → p-4c0808b4.entry.js.map} +0 -0
- /package/dist/elements/{p-b8ac0ee4.js.map → p-4d6e48bf.js.map} +0 -0
- /package/dist/elements/{p-28ad7b6e.entry.js.map → p-5298b7a1.entry.js.map} +0 -0
- /package/dist/elements/{p-0b1c92f2.entry.js.map → p-52c87099.entry.js.map} +0 -0
- /package/dist/elements/{p-2428b6bf.js.map → p-592177e8.js.map} +0 -0
- /package/dist/elements/{p-8b81a782.js.map → p-595c0a57.js.map} +0 -0
- /package/dist/elements/{p-e32a52ee.js.map → p-5a248cff.js.map} +0 -0
- /package/dist/elements/{p-cc62cb3d.entry.js.map → p-61a489ee.entry.js.map} +0 -0
- /package/dist/elements/{p-118e0bed.entry.js.map → p-6ac0c71c.entry.js.map} +0 -0
- /package/dist/elements/{p-6c9053ed.entry.js.map → p-6bcba1f6.entry.js.map} +0 -0
- /package/dist/elements/{p-ddc13326.entry.js.map → p-6e2a89ab.entry.js.map} +0 -0
- /package/dist/elements/{p-565128c5.entry.js.map → p-74ebe432.entry.js.map} +0 -0
- /package/dist/elements/{p-89b3cdad.entry.js.map → p-76543de1.entry.js.map} +0 -0
- /package/dist/elements/{p-d7231d27.entry.js.map → p-76e7559c.entry.js.map} +0 -0
- /package/dist/elements/{p-41e21640.entry.js.map → p-778d7821.entry.js.map} +0 -0
- /package/dist/elements/{p-f941317f.entry.js.map → p-78ba7248.entry.js.map} +0 -0
- /package/dist/elements/{p-6579450f.js.map → p-7a563988.js.map} +0 -0
- /package/dist/elements/{p-3c2b721e.js.map → p-7f507bcb.js.map} +0 -0
- /package/dist/elements/{p-0feec79b.js.map → p-8206b1f1.js.map} +0 -0
- /package/dist/elements/{p-b097a0ac.entry.js.map → p-82fb9396.entry.js.map} +0 -0
- /package/dist/elements/{p-d86e6e48.entry.js.map → p-8817e69b.entry.js.map} +0 -0
- /package/dist/elements/{p-86f80c54.entry.js.map → p-8865cb08.entry.js.map} +0 -0
- /package/dist/elements/{p-0951f046.entry.js.map → p-8b9b339b.entry.js.map} +0 -0
- /package/dist/elements/{p-553217d4.entry.js.map → p-8b9b7f79.entry.js.map} +0 -0
- /package/dist/elements/{p-86eaec56.entry.js.map → p-8c32e0ab.entry.js.map} +0 -0
- /package/dist/elements/{p-8f98459a.entry.js.map → p-8fe569b3.entry.js.map} +0 -0
- /package/dist/elements/{p-e3734616.entry.js.map → p-9090e8dc.entry.js.map} +0 -0
- /package/dist/elements/{p-fb11bb27.entry.js.map → p-916a6612.entry.js.map} +0 -0
- /package/dist/elements/{p-fa9aa28a.entry.js.map → p-a68e7901.entry.js.map} +0 -0
- /package/dist/elements/{p-69410d36.js.map → p-a91046dc.js.map} +0 -0
- /package/dist/elements/{p-325e5484.entry.js.map → p-aad12400.entry.js.map} +0 -0
- /package/dist/elements/{p-58418838.entry.js.map → p-ab92e9ad.entry.js.map} +0 -0
- /package/dist/elements/{p-d01e6782.entry.js.map → p-af3f8ab1.entry.js.map} +0 -0
- /package/dist/elements/{p-8eb42424.entry.js.map → p-b11e8f77.entry.js.map} +0 -0
- /package/dist/elements/{p-77d82071.entry.js.map → p-b19890bd.entry.js.map} +0 -0
- /package/dist/elements/{p-573b7dca.entry.js.map → p-b227f4a8.entry.js.map} +0 -0
- /package/dist/elements/{p-134b66b6.js.map → p-bb3054a3.js.map} +0 -0
- /package/dist/elements/{p-56bf9fdf.js.map → p-c2690129.js.map} +0 -0
- /package/dist/elements/{p-8b0695a7.entry.js.map → p-c445f3ac.entry.js.map} +0 -0
- /package/dist/elements/{p-2ba30f60.entry.js.map → p-c9faf4da.entry.js.map} +0 -0
- /package/dist/elements/{p-2fa5ecde.js.map → p-ca453b3d.js.map} +0 -0
- /package/dist/elements/{p-c23172a0.entry.js.map → p-cd9107d1.entry.js.map} +0 -0
- /package/dist/elements/{p-9b369d09.js.map → p-cebe59d4.js.map} +0 -0
- /package/dist/elements/{p-b67ce91f.entry.js.map → p-cfec477d.entry.js.map} +0 -0
- /package/dist/elements/{p-1c69ca01.js.map → p-d0fcc589.js.map} +0 -0
- /package/dist/elements/{p-257248f2.entry.js.map → p-d2458575.entry.js.map} +0 -0
- /package/dist/elements/{p-9b3608b6.entry.js.map → p-d2e7f4d4.entry.js.map} +0 -0
- /package/dist/elements/{p-3505dfe2.js.map → p-d6769f21.js.map} +0 -0
- /package/dist/elements/{p-a1a15808.entry.js.map → p-d6bf2b98.entry.js.map} +0 -0
- /package/dist/elements/{p-75cbc833.entry.js.map → p-d86570da.entry.js.map} +0 -0
- /package/dist/elements/{p-963acf5e.entry.js.map → p-d8e8bd9b.entry.js.map} +0 -0
- /package/dist/elements/{p-de267699.js.map → p-d8fc8b11.js.map} +0 -0
- /package/dist/elements/{p-0ddd5da3.entry.js.map → p-da5f6dcd.entry.js.map} +0 -0
- /package/dist/elements/{p-ab5544fc.entry.js.map → p-db793eec.entry.js.map} +0 -0
- /package/dist/elements/{p-7e36887e.js.map → p-db973275.js.map} +0 -0
- /package/dist/elements/{p-5f2c1e33.entry.js.map → p-e134ddc9.entry.js.map} +0 -0
- /package/dist/elements/{p-0752ec21.entry.js.map → p-e3ae9b45.entry.js.map} +0 -0
- /package/dist/elements/{p-ad2273d6.js.map → p-ecdb52e8.js.map} +0 -0
- /package/dist/elements/{p-2dddbb15.js.map → p-f1ef82a9.js.map} +0 -0
- /package/dist/elements/{p-d3a247bd.entry.js.map → p-f4440338.entry.js.map} +0 -0
- /package/dist/elements/{p-5bd948fa.entry.js.map → p-f981858f.entry.js.map} +0 -0
- /package/dist/elements/{p-f6b92b3c.entry.js.map → p-fd200088.entry.js.map} +0 -0
- /package/dist/elements/{p-b56ae71f.entry.js.map → p-fdeb6a78.entry.js.map} +0 -0
|
@@ -1,4 +1,153 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readTask, writeTask, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { f as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';
|
|
3
|
+
import { c as createKeyboardController } from './keyboard-controller.js';
|
|
4
|
+
import { g as getIonMode } from './ionic-global.js';
|
|
5
|
+
import { m as clamp } from './helpers.js';
|
|
6
|
+
|
|
7
|
+
/*!
|
|
8
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
9
|
+
*/
|
|
10
|
+
const handleFooterFade = (scrollEl, baseEl) => {
|
|
11
|
+
readTask(() => {
|
|
12
|
+
const scrollTop = scrollEl.scrollTop;
|
|
13
|
+
const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;
|
|
14
|
+
/**
|
|
15
|
+
* Toolbar background will fade
|
|
16
|
+
* out over fadeDuration in pixels.
|
|
17
|
+
*/
|
|
18
|
+
const fadeDuration = 10;
|
|
19
|
+
/**
|
|
20
|
+
* Begin fading out maxScroll - 30px
|
|
21
|
+
* from the bottom of the content.
|
|
22
|
+
* Also determine how close we are
|
|
23
|
+
* to starting the fade. If we are
|
|
24
|
+
* before the starting point, the
|
|
25
|
+
* scale value will get clamped to 0.
|
|
26
|
+
* If we are after the maxScroll (rubber
|
|
27
|
+
* band scrolling), the scale value will
|
|
28
|
+
* get clamped to 1.
|
|
29
|
+
*/
|
|
30
|
+
const fadeStart = maxScroll - fadeDuration;
|
|
31
|
+
const distanceToStart = scrollTop - fadeStart;
|
|
32
|
+
const scale = clamp(0, 1 - distanceToStart / fadeDuration, 1);
|
|
33
|
+
writeTask(() => {
|
|
34
|
+
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
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}";
|
|
40
|
+
const IonFooterIosStyle0 = footerIosCss;
|
|
41
|
+
|
|
42
|
+
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}";
|
|
43
|
+
const IonFooterMdStyle0 = footerMdCss;
|
|
44
|
+
|
|
45
|
+
const Footer = /*@__PURE__*/ proxyCustomElement(class Footer extends HTMLElement {
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
this.__registerHost();
|
|
49
|
+
this.keyboardCtrl = null;
|
|
50
|
+
this.checkCollapsibleFooter = () => {
|
|
51
|
+
const mode = getIonMode(this);
|
|
52
|
+
if (mode !== 'ios') {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const { collapse } = this;
|
|
56
|
+
const hasFade = collapse === 'fade';
|
|
57
|
+
this.destroyCollapsibleFooter();
|
|
58
|
+
if (hasFade) {
|
|
59
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
60
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
61
|
+
if (!contentEl) {
|
|
62
|
+
printIonContentErrorMsg(this.el);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.setupFadeFooter(contentEl);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
this.setupFadeFooter = async (contentEl) => {
|
|
69
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
70
|
+
/**
|
|
71
|
+
* Handle fading of toolbars on scroll
|
|
72
|
+
*/
|
|
73
|
+
this.contentScrollCallback = () => {
|
|
74
|
+
handleFooterFade(scrollEl, this.el);
|
|
75
|
+
};
|
|
76
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
77
|
+
handleFooterFade(scrollEl, this.el);
|
|
78
|
+
};
|
|
79
|
+
this.keyboardVisible = false;
|
|
80
|
+
this.collapse = undefined;
|
|
81
|
+
this.translucent = false;
|
|
82
|
+
}
|
|
83
|
+
componentDidLoad() {
|
|
84
|
+
this.checkCollapsibleFooter();
|
|
85
|
+
}
|
|
86
|
+
componentDidUpdate() {
|
|
87
|
+
this.checkCollapsibleFooter();
|
|
88
|
+
}
|
|
89
|
+
async connectedCallback() {
|
|
90
|
+
this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
91
|
+
/**
|
|
92
|
+
* If the keyboard is hiding, then we need to wait
|
|
93
|
+
* for the webview to resize. Otherwise, the footer
|
|
94
|
+
* will flicker before the webview resizes.
|
|
95
|
+
*/
|
|
96
|
+
if (keyboardOpen === false && waitForResize !== undefined) {
|
|
97
|
+
await waitForResize;
|
|
98
|
+
}
|
|
99
|
+
this.keyboardVisible = keyboardOpen; // trigger re-render by updating state
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
disconnectedCallback() {
|
|
103
|
+
if (this.keyboardCtrl) {
|
|
104
|
+
this.keyboardCtrl.destroy();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
destroyCollapsibleFooter() {
|
|
108
|
+
if (this.scrollEl && this.contentScrollCallback) {
|
|
109
|
+
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
110
|
+
this.contentScrollCallback = undefined;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
render() {
|
|
114
|
+
const { translucent, collapse } = this;
|
|
115
|
+
const mode = getIonMode(this);
|
|
116
|
+
const tabs = this.el.closest('ion-tabs');
|
|
117
|
+
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
118
|
+
return (h(Host, { key: 'dd8fa96901e8a09759a9621b6513f0492b3a6197', role: "contentinfo", class: {
|
|
119
|
+
[mode]: true,
|
|
120
|
+
// Used internally for styling
|
|
121
|
+
[`footer-${mode}`]: true,
|
|
122
|
+
[`footer-translucent`]: translucent,
|
|
123
|
+
[`footer-translucent-${mode}`]: translucent,
|
|
124
|
+
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
125
|
+
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
126
|
+
} }, mode === 'ios' && translucent && h("div", { key: '0fbb4ebf8e3951ff399f843dc11aab37fc48f8b7', class: "footer-background" }), h("slot", { key: 'ecb14a65e3b6960670446c4428e3095b3231a3b0' })));
|
|
127
|
+
}
|
|
128
|
+
get el() { return this; }
|
|
129
|
+
static get style() { return {
|
|
130
|
+
ios: IonFooterIosStyle0,
|
|
131
|
+
md: IonFooterMdStyle0
|
|
132
|
+
}; }
|
|
133
|
+
}, [36, "ion-footer", {
|
|
134
|
+
"collapse": [1],
|
|
135
|
+
"translucent": [4],
|
|
136
|
+
"keyboardVisible": [32]
|
|
137
|
+
}]);
|
|
138
|
+
function defineCustomElement$1() {
|
|
139
|
+
if (typeof customElements === "undefined") {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const components = ["ion-footer"];
|
|
143
|
+
components.forEach(tagName => { switch (tagName) {
|
|
144
|
+
case "ion-footer":
|
|
145
|
+
if (!customElements.get(tagName)) {
|
|
146
|
+
customElements.define(tagName, Footer);
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
} });
|
|
150
|
+
}
|
|
2
151
|
|
|
3
152
|
const IonFooter = Footer;
|
|
4
153
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"ion-footer.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
1
|
+
{"file":"ion-footer.js","mappings":"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","names":[],"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}
|
|
@@ -1,4 +1,357 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readTask, writeTask, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { g as getScrollElement, f as findIonContent, p as printIonContentErrorMsg } from './index8.js';
|
|
3
|
+
import { m as clamp, i as inheritAriaAttributes } from './helpers.js';
|
|
4
|
+
import { h as hostContext } from './theme.js';
|
|
5
|
+
import { g as getIonMode } from './ionic-global.js';
|
|
6
|
+
|
|
7
|
+
/*!
|
|
8
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
9
|
+
*/
|
|
10
|
+
const TRANSITION = 'all 0.2s ease-in-out';
|
|
11
|
+
const cloneElement = (tagName) => {
|
|
12
|
+
const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
|
|
13
|
+
if (getCachedEl !== null) {
|
|
14
|
+
return getCachedEl;
|
|
15
|
+
}
|
|
16
|
+
const clonedEl = document.createElement(tagName);
|
|
17
|
+
clonedEl.classList.add('ion-cloned-element');
|
|
18
|
+
clonedEl.style.setProperty('display', 'none');
|
|
19
|
+
document.body.appendChild(clonedEl);
|
|
20
|
+
return clonedEl;
|
|
21
|
+
};
|
|
22
|
+
const createHeaderIndex = (headerEl) => {
|
|
23
|
+
if (!headerEl) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const toolbars = headerEl.querySelectorAll('ion-toolbar');
|
|
27
|
+
return {
|
|
28
|
+
el: headerEl,
|
|
29
|
+
toolbars: Array.from(toolbars).map((toolbar) => {
|
|
30
|
+
const ionTitleEl = toolbar.querySelector('ion-title');
|
|
31
|
+
return {
|
|
32
|
+
el: toolbar,
|
|
33
|
+
background: toolbar.shadowRoot.querySelector('.toolbar-background'),
|
|
34
|
+
ionTitleEl,
|
|
35
|
+
innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,
|
|
36
|
+
ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),
|
|
37
|
+
};
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
42
|
+
readTask(() => {
|
|
43
|
+
const scrollTop = scrollEl.scrollTop;
|
|
44
|
+
const scale = clamp(1, 1 + -scrollTop / 500, 1.1);
|
|
45
|
+
// Native refresher should not cause titles to scale
|
|
46
|
+
const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');
|
|
47
|
+
if (nativeRefresher === null) {
|
|
48
|
+
writeTask(() => {
|
|
49
|
+
scaleLargeTitles(scrollHeaderIndex.toolbars, scale);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
55
|
+
/**
|
|
56
|
+
* Fading in the backdrop opacity
|
|
57
|
+
* should happen after the large title
|
|
58
|
+
* has collapsed, so it is handled
|
|
59
|
+
* by handleHeaderFade()
|
|
60
|
+
*/
|
|
61
|
+
if (headerEl.collapse === 'fade') {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (opacity === undefined) {
|
|
65
|
+
headerEl.style.removeProperty('--opacity-scale');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
headerEl.style.setProperty('--opacity-scale', opacity.toString());
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {
|
|
72
|
+
if (!ev[0].isIntersecting) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* There is a bug in Safari where overflow scrolling on a non-body element
|
|
77
|
+
* does not always reset the scrollTop position to 0 when letting go. It will
|
|
78
|
+
* set to 1 once the rubber band effect has ended. This causes the background to
|
|
79
|
+
* appear slightly on certain app setups.
|
|
80
|
+
*
|
|
81
|
+
* Additionally, we check if user is rubber banding (scrolling is negative)
|
|
82
|
+
* as this can mean they are using pull to refresh. Once the refresher starts,
|
|
83
|
+
* the content is transformed which can cause the intersection observer to erroneously
|
|
84
|
+
* fire here as well.
|
|
85
|
+
*/
|
|
86
|
+
const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;
|
|
87
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* If toolbars are intersecting, hide the scrollable toolbar content
|
|
91
|
+
* and show the primary toolbar content. If the toolbars are not intersecting,
|
|
92
|
+
* hide the primary toolbar content and show the scrollable toolbar content
|
|
93
|
+
*/
|
|
94
|
+
const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)
|
|
95
|
+
mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
|
|
96
|
+
writeTask(() => {
|
|
97
|
+
const scrollTop = scrollEl.scrollTop;
|
|
98
|
+
handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);
|
|
99
|
+
const event = ev[0];
|
|
100
|
+
const intersection = event.intersectionRect;
|
|
101
|
+
const intersectionArea = intersection.width * intersection.height;
|
|
102
|
+
const rootArea = event.rootBounds.width * event.rootBounds.height;
|
|
103
|
+
const isPageHidden = intersectionArea === 0 && rootArea === 0;
|
|
104
|
+
const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);
|
|
105
|
+
const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);
|
|
106
|
+
const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);
|
|
107
|
+
if (isPageHidden || isPageTransitioning) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (event.isIntersecting) {
|
|
111
|
+
setHeaderActive(mainHeaderIndex, false);
|
|
112
|
+
setHeaderActive(scrollHeaderIndex);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
/**
|
|
116
|
+
* There is a bug with IntersectionObserver on Safari
|
|
117
|
+
* where `event.isIntersecting === false` when cancelling
|
|
118
|
+
* a swipe to go back gesture. Checking the intersection
|
|
119
|
+
* x, y, width, and height provides a workaround. This bug
|
|
120
|
+
* does not happen when using Safari + Web Animations,
|
|
121
|
+
* only Safari + CSS Animations.
|
|
122
|
+
*/
|
|
123
|
+
const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);
|
|
124
|
+
if (hasValidIntersection && scrollTop > 0) {
|
|
125
|
+
setHeaderActive(mainHeaderIndex);
|
|
126
|
+
setHeaderActive(scrollHeaderIndex, false);
|
|
127
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
const setHeaderActive = (headerIndex, active = true) => {
|
|
133
|
+
const headerEl = headerIndex.el;
|
|
134
|
+
if (active) {
|
|
135
|
+
headerEl.classList.remove('header-collapse-condense-inactive');
|
|
136
|
+
headerEl.removeAttribute('aria-hidden');
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
headerEl.classList.add('header-collapse-condense-inactive');
|
|
140
|
+
headerEl.setAttribute('aria-hidden', 'true');
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
|
|
144
|
+
toolbars.forEach((toolbar) => {
|
|
145
|
+
const ionTitle = toolbar.ionTitleEl;
|
|
146
|
+
const titleDiv = toolbar.innerTitleEl;
|
|
147
|
+
if (!ionTitle || ionTitle.size !== 'large') {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
titleDiv.style.transition = transition ? TRANSITION : '';
|
|
151
|
+
titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
155
|
+
readTask(() => {
|
|
156
|
+
const scrollTop = scrollEl.scrollTop;
|
|
157
|
+
const baseElHeight = baseEl.clientHeight;
|
|
158
|
+
const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;
|
|
159
|
+
/**
|
|
160
|
+
* If we are using fade header with a condense
|
|
161
|
+
* header, then the toolbar backgrounds should
|
|
162
|
+
* not begin to fade in until the condense
|
|
163
|
+
* header has fully collapsed.
|
|
164
|
+
*
|
|
165
|
+
* Additionally, the main content should not
|
|
166
|
+
* overflow out of the container until the
|
|
167
|
+
* condense header has fully collapsed. When
|
|
168
|
+
* using just the condense header the content
|
|
169
|
+
* should overflow out of the container.
|
|
170
|
+
*/
|
|
171
|
+
if (condenseHeader !== null && scrollTop < fadeStart) {
|
|
172
|
+
baseEl.style.setProperty('--opacity-scale', '0');
|
|
173
|
+
scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const distanceToStart = scrollTop - fadeStart;
|
|
177
|
+
const fadeDuration = 10;
|
|
178
|
+
const scale = clamp(0, distanceToStart / fadeDuration, 1);
|
|
179
|
+
writeTask(() => {
|
|
180
|
+
scrollEl.style.removeProperty('clip-path');
|
|
181
|
+
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
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}";
|
|
187
|
+
const IonHeaderIosStyle0 = headerIosCss;
|
|
188
|
+
|
|
189
|
+
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}";
|
|
190
|
+
const IonHeaderMdStyle0 = headerMdCss;
|
|
191
|
+
|
|
192
|
+
const Header = /*@__PURE__*/ proxyCustomElement(class Header extends HTMLElement {
|
|
193
|
+
constructor() {
|
|
194
|
+
super();
|
|
195
|
+
this.__registerHost();
|
|
196
|
+
this.inheritedAttributes = {};
|
|
197
|
+
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
198
|
+
const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
|
|
199
|
+
/**
|
|
200
|
+
* Handle fading of toolbars on scroll
|
|
201
|
+
*/
|
|
202
|
+
this.contentScrollCallback = () => {
|
|
203
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
204
|
+
};
|
|
205
|
+
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
206
|
+
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
207
|
+
};
|
|
208
|
+
this.collapse = undefined;
|
|
209
|
+
this.translucent = false;
|
|
210
|
+
}
|
|
211
|
+
componentWillLoad() {
|
|
212
|
+
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
213
|
+
}
|
|
214
|
+
componentDidLoad() {
|
|
215
|
+
this.checkCollapsibleHeader();
|
|
216
|
+
}
|
|
217
|
+
componentDidUpdate() {
|
|
218
|
+
this.checkCollapsibleHeader();
|
|
219
|
+
}
|
|
220
|
+
disconnectedCallback() {
|
|
221
|
+
this.destroyCollapsibleHeader();
|
|
222
|
+
}
|
|
223
|
+
async checkCollapsibleHeader() {
|
|
224
|
+
const mode = getIonMode(this);
|
|
225
|
+
if (mode !== 'ios') {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const { collapse } = this;
|
|
229
|
+
const hasCondense = collapse === 'condense';
|
|
230
|
+
const hasFade = collapse === 'fade';
|
|
231
|
+
this.destroyCollapsibleHeader();
|
|
232
|
+
if (hasCondense) {
|
|
233
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
234
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
235
|
+
// Cloned elements are always needed in iOS transition
|
|
236
|
+
writeTask(() => {
|
|
237
|
+
const title = cloneElement('ion-title');
|
|
238
|
+
title.size = 'large';
|
|
239
|
+
cloneElement('ion-back-button');
|
|
240
|
+
});
|
|
241
|
+
await this.setupCondenseHeader(contentEl, pageEl);
|
|
242
|
+
}
|
|
243
|
+
else if (hasFade) {
|
|
244
|
+
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
245
|
+
const contentEl = pageEl ? findIonContent(pageEl) : null;
|
|
246
|
+
if (!contentEl) {
|
|
247
|
+
printIonContentErrorMsg(this.el);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
251
|
+
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
destroyCollapsibleHeader() {
|
|
255
|
+
if (this.intersectionObserver) {
|
|
256
|
+
this.intersectionObserver.disconnect();
|
|
257
|
+
this.intersectionObserver = undefined;
|
|
258
|
+
}
|
|
259
|
+
if (this.scrollEl && this.contentScrollCallback) {
|
|
260
|
+
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
261
|
+
this.contentScrollCallback = undefined;
|
|
262
|
+
}
|
|
263
|
+
if (this.collapsibleMainHeader) {
|
|
264
|
+
this.collapsibleMainHeader.classList.remove('header-collapse-main');
|
|
265
|
+
this.collapsibleMainHeader = undefined;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async setupCondenseHeader(contentEl, pageEl) {
|
|
269
|
+
if (!contentEl || !pageEl) {
|
|
270
|
+
printIonContentErrorMsg(this.el);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this.scrollEl = await getScrollElement(contentEl);
|
|
277
|
+
const headers = pageEl.querySelectorAll('ion-header');
|
|
278
|
+
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
279
|
+
if (!this.collapsibleMainHeader) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
283
|
+
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
284
|
+
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
setHeaderActive(mainHeaderIndex, false);
|
|
288
|
+
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
289
|
+
/**
|
|
290
|
+
* Handle interaction between toolbar collapse and
|
|
291
|
+
* showing/hiding content in the primary ion-header
|
|
292
|
+
* as well as progressively showing/hiding the main header
|
|
293
|
+
* border as the top-most toolbar collapses or expands.
|
|
294
|
+
*/
|
|
295
|
+
const toolbarIntersection = (ev) => {
|
|
296
|
+
handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);
|
|
297
|
+
};
|
|
298
|
+
this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {
|
|
299
|
+
root: contentEl,
|
|
300
|
+
threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
|
|
301
|
+
});
|
|
302
|
+
this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);
|
|
303
|
+
/**
|
|
304
|
+
* Handle scaling of large iOS titles and
|
|
305
|
+
* showing/hiding border on last toolbar
|
|
306
|
+
* in primary header
|
|
307
|
+
*/
|
|
308
|
+
this.contentScrollCallback = () => {
|
|
309
|
+
handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);
|
|
310
|
+
};
|
|
311
|
+
this.scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
312
|
+
writeTask(() => {
|
|
313
|
+
if (this.collapsibleMainHeader !== undefined) {
|
|
314
|
+
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
render() {
|
|
319
|
+
const { translucent, inheritedAttributes } = this;
|
|
320
|
+
const mode = getIonMode(this);
|
|
321
|
+
const collapse = this.collapse || 'none';
|
|
322
|
+
// banner role must be at top level, so remove role if inside a menu
|
|
323
|
+
const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
|
|
324
|
+
return (h(Host, Object.assign({ key: '9fa0af97b605f9fe98b13361bc3d1289745c549f', role: roleType, class: {
|
|
325
|
+
[mode]: true,
|
|
326
|
+
// Used internally for styling
|
|
327
|
+
[`header-${mode}`]: true,
|
|
328
|
+
[`header-translucent`]: this.translucent,
|
|
329
|
+
[`header-collapse-${collapse}`]: true,
|
|
330
|
+
[`header-translucent-${mode}`]: this.translucent,
|
|
331
|
+
} }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '1a780d2625302f2465718e304bdd3794c89c9845', class: "header-background" }), h("slot", { key: 'b2b8557b44be40c590bfcc362ac4350f9f8b889e' })));
|
|
332
|
+
}
|
|
333
|
+
get el() { return this; }
|
|
334
|
+
static get style() { return {
|
|
335
|
+
ios: IonHeaderIosStyle0,
|
|
336
|
+
md: IonHeaderMdStyle0
|
|
337
|
+
}; }
|
|
338
|
+
}, [36, "ion-header", {
|
|
339
|
+
"collapse": [1],
|
|
340
|
+
"translucent": [4]
|
|
341
|
+
}]);
|
|
342
|
+
function defineCustomElement$1() {
|
|
343
|
+
if (typeof customElements === "undefined") {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const components = ["ion-header"];
|
|
347
|
+
components.forEach(tagName => { switch (tagName) {
|
|
348
|
+
case "ion-header":
|
|
349
|
+
if (!customElements.get(tagName)) {
|
|
350
|
+
customElements.define(tagName, Header);
|
|
351
|
+
}
|
|
352
|
+
break;
|
|
353
|
+
} });
|
|
354
|
+
}
|
|
2
355
|
|
|
3
356
|
const IonHeader = Header;
|
|
4
357
|
const defineCustomElement = defineCustomElement$1;
|