@swisspost/design-system-components 9.0.0-next.32 → 9.0.0-next.34
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/{attribute-observer-6d8b886b.js → attribute-observer-c3a805b2.js} +3 -1
- package/dist/cjs/{breakpoints-c6247c71.js → breakpoints-cdf1b747.js} +12 -7
- package/dist/cjs/event-guard-efabc84f.js +47 -0
- package/dist/cjs/get-root-8102fecd.js +17 -0
- package/dist/cjs/{index-d6bf2c66.js → index-b60129c4.js} +2 -2
- package/dist/cjs/index.cjs.js +25 -25
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/long-press-event-6e62d113.js +266 -0
- package/dist/cjs/{package-6f8f430c.js → package-3426e8f7.js} +1 -1
- package/dist/cjs/{post-accordion-e3a6d78e.js → post-accordion-3ac8dca8.js} +10 -12
- package/dist/cjs/{post-accordion-item-7ed1f630.js → post-accordion-item-aace6bc2.js} +10 -10
- package/dist/cjs/post-accordion-item.cjs.entry.js +5 -3
- package/dist/cjs/post-accordion.cjs.entry.js +5 -3
- package/dist/cjs/{post-avatar-de8ec197.js → post-avatar-53abd22f.js} +5 -4
- package/dist/cjs/post-avatar.cjs.entry.js +4 -3
- package/dist/cjs/post-back-to-top-b231fc1c.js +96 -0
- package/dist/cjs/post-back-to-top.cjs.entry.js +4 -3
- package/dist/cjs/{post-banner-bf523706.js → post-banner-e6d14bf1.js} +4 -8
- package/dist/cjs/post-banner.cjs.entry.js +4 -3
- package/dist/cjs/{post-breadcrumb-da55143a.js → post-breadcrumb-a929f2a6.js} +30 -22
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -3
- package/dist/cjs/post-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/{post-card-control-0bcd7d16.js → post-card-control-cbee7b86.js} +26 -40
- package/dist/cjs/post-card-control.cjs.entry.js +4 -3
- package/dist/cjs/post-closebutton_15.cjs.entry.js +6 -5
- package/dist/cjs/{post-collapsible-trigger-a5e4451d.js → post-collapsible-trigger-d1cb592a.js} +39 -46
- package/dist/cjs/post-collapsible_2.cjs.entry.js +6 -5
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/{post-footer-b15fee73.js → post-footer-4290dafc.js} +11 -11
- package/dist/cjs/post-footer.cjs.entry.js +4 -4
- package/dist/cjs/{post-linkarea-8c85bf5e.js → post-linkarea-f22f4f92.js} +5 -5
- package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
- package/dist/cjs/{post-menu-item-509877cd.js → post-menu-item-afabaa61.js} +4 -4
- package/dist/cjs/{post-popover-1213aa19.js → post-popover-a4c72d38.js} +16 -14
- package/dist/cjs/post-popover.cjs.entry.js +5 -4
- package/dist/cjs/{post-rating-e1f8a668.js → post-rating-b87616fc.js} +4 -14
- package/dist/cjs/post-rating.cjs.entry.js +3 -3
- package/dist/cjs/{post-tab-header-889a6c64.js → post-tab-header-45cb6bb4.js} +5 -4
- package/dist/cjs/post-tab-header.cjs.entry.js +4 -3
- package/dist/cjs/{post-tab-panel-300f39a9.js → post-tab-panel-00d16ba7.js} +4 -4
- package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
- package/dist/cjs/{post-tabs-dc281228.js → post-tabs-2c3a89d0.js} +5 -12
- package/dist/cjs/post-tabs.cjs.entry.js +4 -3
- package/dist/cjs/{post-tag-fd9e586f.js → post-tag-370a2f4d.js} +3 -3
- package/dist/cjs/post-tag.cjs.entry.js +3 -3
- package/dist/cjs/{post-togglebutton-ad6ae1e4.js → post-togglebutton-2c9552e3.js} +969 -471
- package/dist/cjs/{post-tooltip-52d690e4.js → post-tooltip-4d4d2ea9.js} +39 -296
- package/dist/cjs/post-tooltip.cjs.entry.js +5 -4
- package/dist/collection/animations/collapse.js +3 -1
- package/dist/collection/components/post-accordion/post-accordion.js +6 -10
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +6 -8
- package/dist/collection/components/post-avatar/post-avatar.js +3 -4
- package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +37 -19
- package/dist/collection/components/post-banner/post-banner.js +0 -6
- package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +16 -19
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +0 -2
- package/dist/collection/components/post-card-control/post-card-control.js +24 -40
- package/dist/collection/components/post-closebutton/post-closebutton.css +1 -0
- package/dist/collection/components/post-closebutton/post-closebutton.js +12 -2
- package/dist/collection/components/post-collapsible/post-collapsible.js +4 -10
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +29 -32
- package/dist/collection/components/post-footer/post-footer.js +8 -9
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +16 -19
- package/dist/collection/components/post-icon/post-icon.js +5 -7
- package/dist/collection/components/post-language-option/post-language-option.js +1 -10
- package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +25 -31
- package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.js +2 -2
- package/dist/collection/components/post-list/post-list.js +1 -3
- package/dist/collection/components/post-list-item/post-list-item.js +1 -2
- package/dist/collection/components/post-logo/post-logo.js +1 -2
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +98 -182
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +20 -30
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +42 -36
- package/dist/collection/components/post-menu/post-menu.js +51 -52
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -15
- package/dist/collection/components/post-popover/post-popover.js +12 -12
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +30 -33
- package/dist/collection/components/post-rating/post-rating.js +1 -12
- package/dist/collection/components/post-tab-header/post-tab-header.js +2 -3
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +2 -3
- package/dist/collection/components/post-tabs/post-tabs.js +1 -10
- package/dist/collection/components/post-tag/post-tag.js +0 -1
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +10 -11
- package/dist/collection/components/post-tooltip/post-tooltip.js +36 -32
- package/dist/collection/utils/attribute-observer.js +2 -1
- package/dist/collection/utils/breakpoints.js +9 -7
- package/dist/collection/utils/environment.js +2 -0
- package/dist/collection/utils/event-guard.js +43 -0
- package/dist/collection/utils/get-root.js +6 -1
- package/dist/collection/utils/index.js +5 -0
- package/dist/collection/utils/is-motion-reduced.js +2 -1
- package/dist/components/attribute-observer.js +3 -1
- package/dist/components/breakpoints.js +12 -8
- package/dist/components/event-guard.js +45 -0
- package/dist/components/get-root.js +7 -1
- package/dist/components/long-press-event.js +264 -0
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +8 -8
- package/dist/components/post-accordion2.js +8 -10
- package/dist/components/post-avatar2.js +4 -3
- package/dist/components/post-back-to-top2.js +40 -20
- package/dist/components/post-banner2.js +2 -6
- package/dist/components/post-breadcrumb-item2.js +2 -2
- package/dist/components/post-breadcrumb2.js +28 -20
- package/dist/components/post-card-control2.js +25 -39
- package/dist/components/post-closebutton2.js +8 -3
- package/dist/components/post-collapsible-trigger2.js +33 -35
- package/dist/components/post-collapsible2.js +9 -12
- package/dist/components/post-footer2.js +8 -8
- package/dist/components/post-header2.js +18 -20
- package/dist/components/post-icon2.js +6 -6
- package/dist/components/post-language-option2.js +3 -10
- package/dist/components/post-language-switch2.js +28 -31
- package/dist/components/post-linkarea2.js +5 -4
- package/dist/components/post-list-item2.js +2 -2
- package/dist/components/post-list2.js +2 -3
- package/dist/components/post-logo2.js +3 -2
- package/dist/components/post-mainnavigation2.js +94 -182
- package/dist/components/post-megadropdown-trigger2.js +44 -36
- package/dist/components/post-megadropdown2.js +22 -31
- package/dist/components/post-menu-trigger2.js +15 -15
- package/dist/components/post-menu2.js +53 -52
- package/dist/components/post-popover2.js +14 -12
- package/dist/components/post-popovercontainer2.js +638 -36
- package/dist/components/post-rating2.js +2 -12
- package/dist/components/post-tab-header2.js +4 -3
- package/dist/components/post-tab-panel2.js +3 -3
- package/dist/components/post-tabs2.js +3 -10
- package/dist/components/post-tag2.js +1 -1
- package/dist/components/post-togglebutton2.js +12 -11
- package/dist/components/post-tooltip2.js +37 -294
- package/dist/docs.json +21 -15
- package/dist/esm/{attribute-observer-2f203993.js → attribute-observer-009deee5.js} +3 -1
- package/dist/esm/{breakpoints-bbe0c54e.js → breakpoints-7812702e.js} +12 -8
- package/dist/esm/event-guard-538ee077.js +45 -0
- package/dist/esm/get-root-1b1af46f.js +15 -0
- package/dist/esm/{index-3419e46d.js → index-f4d19816.js} +2 -2
- package/dist/esm/index.js +25 -25
- package/dist/esm/loader.js +3 -3
- package/dist/esm/long-press-event-04d24397.js +264 -0
- package/dist/esm/package-8986a24c.js +3 -0
- package/dist/esm/{post-accordion-7b6fb9c3.js → post-accordion-577b52a0.js} +10 -12
- package/dist/esm/{post-accordion-item-d40c0b26.js → post-accordion-item-99053b41.js} +10 -10
- package/dist/esm/post-accordion-item.entry.js +5 -3
- package/dist/esm/post-accordion.entry.js +5 -3
- package/dist/esm/{post-avatar-04ca6e3e.js → post-avatar-2914706c.js} +5 -4
- package/dist/esm/post-avatar.entry.js +4 -3
- package/dist/esm/post-back-to-top-4c7b1b47.js +94 -0
- package/dist/esm/post-back-to-top.entry.js +4 -3
- package/dist/esm/{post-banner-7c37e3ef.js → post-banner-295fd0f5.js} +4 -8
- package/dist/esm/post-banner.entry.js +4 -3
- package/dist/esm/{post-breadcrumb-59e4d655.js → post-breadcrumb-1abfb312.js} +30 -22
- package/dist/esm/post-breadcrumb-item_2.entry.js +4 -3
- package/dist/esm/post-breadcrumb.entry.js +4 -4
- package/dist/esm/{post-card-control-5471488b.js → post-card-control-ad72d4f8.js} +26 -40
- package/dist/esm/post-card-control.entry.js +4 -3
- package/dist/esm/post-closebutton_15.entry.js +6 -5
- package/dist/esm/{post-collapsible-trigger-1f6d816e.js → post-collapsible-trigger-6b4ece20.js} +39 -46
- package/dist/esm/post-collapsible_2.entry.js +6 -5
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/{post-footer-d30f4dc8.js → post-footer-a5105e66.js} +11 -11
- package/dist/esm/post-footer.entry.js +4 -4
- package/dist/esm/{post-linkarea-8e1a561e.js → post-linkarea-22f97a88.js} +5 -5
- package/dist/esm/post-linkarea.entry.js +3 -3
- package/dist/esm/{post-menu-item-0c8477eb.js → post-menu-item-9465a1f3.js} +4 -4
- package/dist/esm/{post-popover-c43969ca.js → post-popover-e9b4569c.js} +16 -14
- package/dist/esm/post-popover.entry.js +5 -4
- package/dist/esm/{post-rating-94148df7.js → post-rating-ae16e3c9.js} +4 -14
- package/dist/esm/post-rating.entry.js +3 -3
- package/dist/esm/{post-tab-header-82df0ba9.js → post-tab-header-11f23150.js} +5 -4
- package/dist/esm/post-tab-header.entry.js +4 -3
- package/dist/esm/{post-tab-panel-a6512f53.js → post-tab-panel-0f3a952e.js} +4 -4
- package/dist/esm/post-tab-panel.entry.js +3 -3
- package/dist/esm/{post-tabs-d26ce341.js → post-tabs-1192509c.js} +5 -12
- package/dist/esm/post-tabs.entry.js +4 -3
- package/dist/esm/{post-tag-41d1667e.js → post-tag-8be0a71c.js} +3 -3
- package/dist/esm/post-tag.entry.js +3 -3
- package/dist/esm/{post-togglebutton-4f94bddb.js → post-togglebutton-b634fc7c.js} +969 -471
- package/dist/esm/{post-tooltip-20f916db.js → post-tooltip-f64bd0cc.js} +39 -296
- package/dist/esm/post-tooltip.entry.js +5 -4
- package/dist/post-components/index.esm.js +1 -1
- package/dist/post-components/p-0889c759.js +1 -0
- package/dist/post-components/p-0f398677.js +1 -0
- package/dist/post-components/p-1038fc25.js +1 -0
- package/dist/post-components/p-30f94eca.entry.js +1 -0
- package/dist/post-components/p-31bb6dc5.entry.js +1 -0
- package/dist/post-components/p-32173742.js +1 -0
- package/dist/post-components/p-338a2507.js +1 -0
- package/dist/post-components/p-36540dd6.entry.js +1 -0
- package/dist/post-components/p-3aa766a6.js +1 -0
- package/dist/post-components/p-3b0158b3.js +1 -0
- package/dist/post-components/p-40db8cd5.js +1 -0
- package/dist/post-components/p-44f13ce4.entry.js +1 -0
- package/dist/post-components/p-46a9324f.entry.js +1 -0
- package/dist/post-components/p-49c5aa99.js +1 -0
- package/dist/post-components/p-4cd4a936.entry.js +1 -0
- package/dist/post-components/p-548ef2f5.entry.js +1 -0
- package/dist/post-components/p-58f453dd.js +1 -0
- package/dist/post-components/p-5f54b77f.js +1 -0
- package/dist/post-components/p-60bb7f26.js +1 -0
- package/dist/post-components/p-60bfa4be.entry.js +1 -0
- package/dist/post-components/p-6b31a76a.js +1 -0
- package/dist/post-components/p-6ee81c5d.js +1 -0
- package/dist/post-components/p-6faad212.entry.js +1 -0
- package/dist/post-components/p-722ffaae.js +1 -0
- package/dist/post-components/p-74a0b44c.entry.js +1 -0
- package/dist/post-components/{p-28e77ad3.js → p-78b4c699.js} +1 -1
- package/dist/post-components/p-7aa0468b.entry.js +1 -0
- package/dist/post-components/p-7afc495e.entry.js +1 -0
- package/dist/post-components/p-8db32dab.js +8 -0
- package/dist/post-components/p-96034ba4.entry.js +1 -0
- package/dist/post-components/p-9aaf9f54.js +1 -0
- package/dist/post-components/{p-5c758f41.js → p-9e461613.js} +1 -1
- package/dist/post-components/p-ab4073be.js +1 -0
- package/dist/post-components/p-abd7eb91.js +8 -0
- package/dist/post-components/p-afb8a487.entry.js +1 -0
- package/dist/post-components/p-b003b381.js +1 -0
- package/dist/post-components/p-b97dea1e.entry.js +1 -0
- package/dist/post-components/p-be37cf2a.js +1 -0
- package/dist/post-components/p-c31b56ed.js +1 -0
- package/dist/post-components/p-ccbb51fe.js +1 -0
- package/dist/post-components/p-d3900385.entry.js +1 -0
- package/dist/post-components/p-ef49153c.entry.js +1 -0
- package/dist/post-components/p-f27e5691.js +1 -0
- package/dist/post-components/p-f553019f.entry.js +1 -0
- package/dist/post-components/p-ffc1db17.entry.js +1 -0
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/types/components/post-avatar/post-avatar.d.ts +1 -1
- package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +3 -1
- package/dist/types/components/post-card-control/post-card-control.d.ts +1 -1
- package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +9 -14
- package/dist/types/components/post-footer/post-footer.d.ts +2 -2
- package/dist/types/components/post-header/post-header.d.ts +1 -0
- package/dist/types/components/post-icon/post-icon.d.ts +0 -1
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +5 -5
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +14 -39
- package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +2 -0
- package/dist/types/components/post-menu/post-menu.d.ts +1 -0
- package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +1 -1
- package/dist/types/components/post-popover/post-popover.d.ts +3 -1
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +1 -1
- package/dist/types/components/post-tooltip/post-tooltip.d.ts +6 -1
- package/dist/types/components.d.ts +4 -4
- package/dist/types/popover-fn.d.ts +11 -0
- package/dist/types/utils/environment.d.ts +2 -0
- package/dist/types/utils/event-guard.d.ts +4 -0
- package/dist/types/utils/get-root.d.ts +4 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/loaders/attribute-observer.js +3 -1
- package/loaders/breakpoints.js +12 -8
- package/loaders/event-guard.js +45 -0
- package/loaders/get-root.js +7 -1
- package/loaders/index.js +3 -3
- package/loaders/long-press-event.js +264 -0
- package/loaders/package.js +1 -1
- package/loaders/post-accordion-item2.js +8 -8
- package/loaders/post-accordion.js +8 -10
- package/loaders/post-avatar.js +4 -3
- package/loaders/post-back-to-top.js +40 -20
- package/loaders/post-banner.js +2 -6
- package/loaders/post-breadcrumb-item2.js +2 -2
- package/loaders/post-breadcrumb.js +28 -20
- package/loaders/post-card-control.js +25 -39
- package/loaders/post-closebutton.js +8 -3
- package/loaders/post-collapsible-trigger2.js +33 -35
- package/loaders/post-collapsible2.js +9 -12
- package/loaders/post-footer.js +8 -8
- package/loaders/post-header.js +18 -20
- package/loaders/post-icon2.js +6 -6
- package/loaders/post-language-option.js +3 -10
- package/loaders/post-language-switch.js +28 -31
- package/loaders/post-linkarea.js +5 -4
- package/loaders/post-list-item.js +2 -2
- package/loaders/post-list.js +2 -3
- package/loaders/post-logo.js +3 -2
- package/loaders/post-mainnavigation.js +94 -182
- package/loaders/post-megadropdown-trigger.js +44 -36
- package/loaders/post-megadropdown.js +22 -31
- package/loaders/post-menu-trigger2.js +15 -15
- package/loaders/post-menu2.js +53 -52
- package/loaders/post-popover.js +14 -12
- package/loaders/post-popovercontainer2.js +638 -36
- package/loaders/post-rating.js +2 -12
- package/loaders/post-tab-header.js +4 -3
- package/loaders/post-tab-panel.js +3 -3
- package/loaders/post-tabs.js +3 -10
- package/loaders/post-tag.js +1 -1
- package/loaders/post-togglebutton.js +12 -11
- package/loaders/post-tooltip.js +37 -294
- package/package.json +5 -5
- package/dist/cjs/debounce-158fd76f.js +0 -13
- package/dist/cjs/get-root-7a3498ef.js +0 -11
- package/dist/cjs/post-back-to-top-6a1c1ba4.js +0 -76
- package/dist/components/debounce.js +0 -11
- package/dist/esm/debounce-e54c7131.js +0 -11
- package/dist/esm/get-root-7af2e0d1.js +0 -9
- package/dist/esm/package-70367d05.js +0 -3
- package/dist/esm/post-back-to-top-abe253c1.js +0 -74
- package/dist/post-components/p-015361b5.entry.js +0 -1
- package/dist/post-components/p-077edb8c.js +0 -1
- package/dist/post-components/p-08a13d05.js +0 -1
- package/dist/post-components/p-08c3b919.entry.js +0 -1
- package/dist/post-components/p-0d7b0c2e.entry.js +0 -1
- package/dist/post-components/p-12f9a91e.entry.js +0 -1
- package/dist/post-components/p-20137c6a.entry.js +0 -1
- package/dist/post-components/p-21254d9c.entry.js +0 -1
- package/dist/post-components/p-22513a27.entry.js +0 -1
- package/dist/post-components/p-3638e50d.js +0 -1
- package/dist/post-components/p-4397f28e.js +0 -1
- package/dist/post-components/p-494a2a31.js +0 -1
- package/dist/post-components/p-509987da.entry.js +0 -1
- package/dist/post-components/p-5aeb3656.js +0 -1
- package/dist/post-components/p-5d0bb74d.js +0 -1
- package/dist/post-components/p-5e0f6c12.js +0 -1
- package/dist/post-components/p-5f89f4e8.entry.js +0 -1
- package/dist/post-components/p-6213f0dc.entry.js +0 -1
- package/dist/post-components/p-6ad7bf0f.js +0 -1
- package/dist/post-components/p-6f058a98.js +0 -1
- package/dist/post-components/p-737d76cb.js +0 -15
- package/dist/post-components/p-753a1935.js +0 -1
- package/dist/post-components/p-88a2cdaa.js +0 -1
- package/dist/post-components/p-90935fdd.js +0 -1
- package/dist/post-components/p-931c4523.js +0 -1
- package/dist/post-components/p-9748a355.js +0 -1
- package/dist/post-components/p-97865e22.entry.js +0 -1
- package/dist/post-components/p-a200c9c7.js +0 -1
- package/dist/post-components/p-a35c235a.entry.js +0 -1
- package/dist/post-components/p-a4264a61.entry.js +0 -1
- package/dist/post-components/p-a54c63d0.entry.js +0 -1
- package/dist/post-components/p-aebe402d.entry.js +0 -1
- package/dist/post-components/p-b43e79e3.entry.js +0 -1
- package/dist/post-components/p-c0c71e37.js +0 -1
- package/dist/post-components/p-c0ca344d.js +0 -1
- package/dist/post-components/p-c554fcf3.js +0 -1
- package/dist/post-components/p-cff7c06f.entry.js +0 -1
- package/dist/post-components/p-d1f70a05.entry.js +0 -1
- package/dist/post-components/p-dc67e6de.entry.js +0 -1
- package/dist/post-components/p-e1baac59.js +0 -1
- package/dist/post-components/p-f1ceccf3.js +0 -1
- package/dist/post-components/p-fc91cbc2.js +0 -1
- package/loaders/debounce.js +0 -11
|
@@ -1,24 +1,63 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const index = require('./index-
|
|
4
|
-
const _package = require('./package-
|
|
3
|
+
const index = require('./index-b60129c4.js');
|
|
4
|
+
const _package = require('./package-3426e8f7.js');
|
|
5
5
|
const slide = require('./slide-cd1f09b3.js');
|
|
6
|
+
const eventGuard = require('./event-guard-efabc84f.js');
|
|
7
|
+
const breakpoints = require('./breakpoints-cdf1b747.js');
|
|
6
8
|
const index$1 = require('./index-23e36ff7.js');
|
|
7
9
|
const checkNonEmpty = require('./check-non-empty-bd99d236.js');
|
|
8
10
|
const checkType = require('./check-type-cdbf6d29.js');
|
|
9
11
|
const index_browser = require('./index.browser-2f65f583.js');
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
+
const getRoot = require('./get-root-8102fecd.js');
|
|
13
|
+
|
|
14
|
+
const focusableSelector = `:where(${[
|
|
15
|
+
'button',
|
|
16
|
+
'input:not([type="hidden"])',
|
|
17
|
+
'[tabindex]',
|
|
18
|
+
'select',
|
|
19
|
+
'textarea',
|
|
20
|
+
'[contenteditable]',
|
|
21
|
+
'a[href]',
|
|
22
|
+
'iframe',
|
|
23
|
+
'audio[controls]',
|
|
24
|
+
'video[controls]',
|
|
25
|
+
'area[href]',
|
|
26
|
+
'details > summary:first-of-type',
|
|
27
|
+
].join(',')})`;
|
|
28
|
+
const focusDisablingSelector = `:where(${[
|
|
29
|
+
'[inert]',
|
|
30
|
+
'[inert] *',
|
|
31
|
+
':disabled',
|
|
32
|
+
'dialog:not([open]) *',
|
|
33
|
+
'[popover]:not(:popover-open) *',
|
|
34
|
+
'details:not([open]) > *:not(details > summary:first-of-type)',
|
|
35
|
+
'details:not([open]) > *:not(details > summary:first-of-type) *',
|
|
36
|
+
'[tabindex^="-"]',
|
|
37
|
+
'[hidden]:not([hidden="false"])',
|
|
38
|
+
].join(',')})`;
|
|
39
|
+
function getFocusableChildren(element) {
|
|
40
|
+
const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
|
|
41
|
+
const visibleFocusableChildren = Array.from(focusableChildren).filter(child => {
|
|
42
|
+
const style = window.getComputedStyle(child.parentElement);
|
|
43
|
+
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
44
|
+
});
|
|
45
|
+
return visibleFocusableChildren;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const postClosebuttonCss = ".btn-icon-close{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}.btn-icon-close>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}.btn-icon-close:not(:disabled):hover,.btn-icon-close.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-icon-close:not(:disabled):hover,.btn-icon-close.pretend-hover{color:HighlightText !important}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
|
|
49
|
+
const PostClosebuttonStyle0 = postClosebuttonCss;
|
|
12
50
|
|
|
13
51
|
const PostClosebutton = class {
|
|
14
52
|
constructor(hostRef) {
|
|
15
53
|
index.registerInstance(this, hostRef);
|
|
16
54
|
}
|
|
17
|
-
get host() { return index.getElement(this); }
|
|
18
55
|
render() {
|
|
19
|
-
return (index.h(index.Host, { key: '
|
|
56
|
+
return (index.h(index.Host, { key: 'cfa55f799fdf9ad0f3ac1eb296e063b5001de997', "data-version": _package.version }, index.h("button", { key: '7c8a084f6d7278329ddfb5fc4b2b8f992a185666', class: "btn btn-icon-close", type: "button" }, index.h("post-icon", { key: 'fc74ccb4f0c4c091a02a41cdef918d6c3b065c8c', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '98478b013714df6d82c6c2f533ac8ecd2abae778', class: "visually-hidden" }, index.h("slot", { key: '109e2bca4436986dd037d8c29088cc79395bc200' })))));
|
|
20
57
|
}
|
|
58
|
+
get host() { return index.getElement(this); }
|
|
21
59
|
};
|
|
60
|
+
PostClosebutton.style = PostClosebuttonStyle0;
|
|
22
61
|
|
|
23
62
|
/* eslint-disable no-undefined,no-param-reassign,no-shadow */
|
|
24
63
|
|
|
@@ -154,51 +193,10 @@ function throttle (delay, callback, options) {
|
|
|
154
193
|
return wrapper;
|
|
155
194
|
}
|
|
156
195
|
|
|
157
|
-
const
|
|
158
|
-
'button',
|
|
159
|
-
'input:not([type="hidden"])',
|
|
160
|
-
'[tabindex]',
|
|
161
|
-
'select',
|
|
162
|
-
'textarea',
|
|
163
|
-
'[contenteditable]',
|
|
164
|
-
'a[href]',
|
|
165
|
-
'iframe',
|
|
166
|
-
'audio[controls]',
|
|
167
|
-
'video[controls]',
|
|
168
|
-
'area[href]',
|
|
169
|
-
'details > summary:first-of-type',
|
|
170
|
-
].join(',')})`;
|
|
171
|
-
const focusDisablingSelector = `:where(${[
|
|
172
|
-
'[inert]',
|
|
173
|
-
'[inert] *',
|
|
174
|
-
':disabled',
|
|
175
|
-
'dialog:not([open]) *',
|
|
176
|
-
'[popover]:not(:popover-open) *',
|
|
177
|
-
'details:not([open]) > *:not(details > summary:first-of-type)',
|
|
178
|
-
'details:not([open]) > *:not(details > summary:first-of-type) *',
|
|
179
|
-
'[tabindex^="-"]',
|
|
180
|
-
'[hidden]:not([hidden="false"])',
|
|
181
|
-
].join(',')})`;
|
|
182
|
-
function getFocusableChildren(element) {
|
|
183
|
-
const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
|
|
184
|
-
const visibleFocusableChildren = Array.from(focusableChildren).filter(child => {
|
|
185
|
-
const style = window.getComputedStyle(child.parentElement);
|
|
186
|
-
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
187
|
-
});
|
|
188
|
-
return visibleFocusableChildren;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--global-header-height) - var(--global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height) );--logo-height:calc(var(--global-header-height) - var(--header-scroll-top));--global-controls-top:calc(min((var(--header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--global-header-height);--logo-height:var(--global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
|
|
196
|
+
const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--post-global-header-height) - var(--post-global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--post-local-header-height) - var(--post-main-navigation-height)) + var(--post-global-header-reduced-height) );--logo-height:calc(var(--post-global-header-height) - var(--post-header-scroll-top, 0px));--global-controls-top:calc(min((var(--post-header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--post-global-header-height);--logo-height:var(--post-global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--post-global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--post-global-header-height);width:var(--post-global-header-height);min-height:var(--post-global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--post-local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--post-global-header-height);padding-block:8px;flex-wrap:wrap;gap:12px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--post-global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--post-header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
|
|
192
197
|
const PostHeaderStyle0 = postHeaderCss;
|
|
193
198
|
|
|
194
199
|
const PostHeader = class {
|
|
195
|
-
firstFocusableEl;
|
|
196
|
-
lastFocusableEl;
|
|
197
|
-
mobileMenu;
|
|
198
|
-
mobileMenuAnimation;
|
|
199
|
-
throttledResize = throttle(50, () => this.handleResize());
|
|
200
|
-
scrollParentResizeObserver;
|
|
201
|
-
localHeaderResizeObserver;
|
|
202
200
|
get scrollParent() {
|
|
203
201
|
const frozenScrollParent = document.querySelector('[data-post-scroll-locked]');
|
|
204
202
|
if (frozenScrollParent)
|
|
@@ -213,7 +211,6 @@ const PostHeader = class {
|
|
|
213
211
|
}
|
|
214
212
|
return document.body;
|
|
215
213
|
}
|
|
216
|
-
get host() { return index.getElement(this); }
|
|
217
214
|
lockBody(newValue, _oldValue, propName) {
|
|
218
215
|
const scrollParent = this.scrollParent;
|
|
219
216
|
const mobileMenuExtended = propName === 'mobileMenuExtended' ? newValue : this.mobileMenuExtended;
|
|
@@ -226,13 +223,18 @@ const PostHeader = class {
|
|
|
226
223
|
this.host.removeEventListener('keydown', this.keyboardHandler);
|
|
227
224
|
}
|
|
228
225
|
}
|
|
229
|
-
/**
|
|
230
|
-
* An event emitted when the device has changed
|
|
231
|
-
*/
|
|
232
|
-
postUpdateDevice;
|
|
233
226
|
constructor(hostRef) {
|
|
234
227
|
index.registerInstance(this, hostRef);
|
|
235
228
|
this.postUpdateDevice = index.createEvent(this, "postUpdateDevice", 7);
|
|
229
|
+
this.throttledResize = throttle(50, () => this.handleResize());
|
|
230
|
+
this.megedropdownStateHandler = (event) => {
|
|
231
|
+
eventGuard.eventGuard(this.host, event, {
|
|
232
|
+
targetLocalName: 'post-megadropdown',
|
|
233
|
+
delegatorSelector: 'post-header',
|
|
234
|
+
}, () => {
|
|
235
|
+
this.megadropdownOpen = event.detail.isVisible;
|
|
236
|
+
});
|
|
237
|
+
};
|
|
236
238
|
this.device = null;
|
|
237
239
|
this.mobileMenuExtended = false;
|
|
238
240
|
this.megadropdownOpen = false;
|
|
@@ -254,10 +256,12 @@ const PostHeader = class {
|
|
|
254
256
|
document.addEventListener('postToggleMegadropdown', this.megedropdownStateHandler);
|
|
255
257
|
this.host.addEventListener('click', this.handleLinkClick);
|
|
256
258
|
this.handleResize();
|
|
257
|
-
this.handleScrollEvent();
|
|
258
259
|
this.handleScrollParentResize();
|
|
259
260
|
this.lockBody(false, this.mobileMenuExtended, 'mobileMenuExtended');
|
|
260
261
|
}
|
|
262
|
+
componentWillRender() {
|
|
263
|
+
this.handleScrollEvent();
|
|
264
|
+
}
|
|
261
265
|
componentDidRender() {
|
|
262
266
|
this.getFocusableElements();
|
|
263
267
|
this.handleLocalHeaderResize();
|
|
@@ -303,9 +307,6 @@ const PostHeader = class {
|
|
|
303
307
|
});
|
|
304
308
|
}
|
|
305
309
|
}
|
|
306
|
-
megedropdownStateHandler(event) {
|
|
307
|
-
this.megadropdownOpen = event.detail.isVisible;
|
|
308
|
-
}
|
|
309
310
|
// Get all the focusable elements in the post-header mobile menu
|
|
310
311
|
getFocusableElements() {
|
|
311
312
|
// Get elements in the correct order (different as the DOM order)
|
|
@@ -338,11 +339,11 @@ const PostHeader = class {
|
|
|
338
339
|
}
|
|
339
340
|
handleScrollEvent() {
|
|
340
341
|
const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
|
|
341
|
-
|
|
342
|
+
document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
|
|
342
343
|
}
|
|
343
344
|
updateLocalHeaderHeight() {
|
|
344
345
|
const localHeaderHeight = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
|
|
345
|
-
|
|
346
|
+
document.documentElement.style.setProperty('--post-local-header-height', `${localHeaderHeight}px`);
|
|
346
347
|
}
|
|
347
348
|
updateScrollParentHeight() {
|
|
348
349
|
this.host.style.setProperty('--header-scroll-parent-height', `${this.scrollParent.clientHeight}px`);
|
|
@@ -417,8 +418,9 @@ const PostHeader = class {
|
|
|
417
418
|
return (index.h("div", { class: navigationClasses.join(' '), style: { '--header-navigation-current-inset': `${mobileMenuScrollTop}px` } }, index.h("div", { class: "mobile-menu", ref: el => (this.mobileMenu = el) }, index.h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (index.h("div", { class: "navigation-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" }))))));
|
|
418
419
|
}
|
|
419
420
|
render() {
|
|
420
|
-
return (index.h(index.Host, { key: '
|
|
421
|
+
return (index.h(index.Host, { key: 'd8b43333c00a612a3a37479750874a1efaf6a855', "data-version": _package.version }, index.h("div", { key: 'b270fb139cc8730a774785c5535fb3bcdd60c59c', class: "global-header" }, index.h("div", { key: 'b3161c4b26a1be4707fa6c7360e6779547b7ab30', class: "global-sub" }, index.h("div", { key: '44ecddd8f91c86d1af0075718b63e6bf034a25b7', class: "logo" }, index.h("slot", { key: 'de5208255d0cf59707092c984b0fec33d317d38d', name: "post-logo" }))), index.h("div", { key: '199dc1da25d817b488d5c3402779130c360e0f9a', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: '1337f13908a826022a1bf2a8a1a2e2bfe323900b', name: "meta-navigation" }), index.h("slot", { key: '2b6fbbcedc8f1803e388fdbcbcd637d6a2605c87', name: "global-controls" }), this.device === 'desktop' && index.h("slot", { key: '2861c1a0f7639678edd0f584d8f98665fcf84fb0', name: "post-language-switch" }), index.h("div", { key: '06e2d9a4abe3a804f25ffa303f6f9ed5b7c01b60', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: '772407e65d3d8f642c1e80fd8cb42b425eed4848', name: "post-togglebutton" })))), index.h("div", { key: '7b7a3da2a8cc848632c2e45badc52e23958a6faa', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, index.h("slot", { key: '96e4d68bfe0504cc09d57a8b11dabb9139d780f6', name: "title" }), index.h("div", { key: '240fae6f0f9d2a192a7b94110a9c4571856de90a', class: "local-sub" }, index.h("slot", { key: '14fd77af7dca02157248bf95d7d253d5f14e9f1e', name: "local-controls" }), index.h("slot", { key: '6dfac25cb64401123638ddfc6b94bbe89ae78249' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
|
|
421
422
|
}
|
|
423
|
+
get host() { return index.getElement(this); }
|
|
422
424
|
static get watchers() { return {
|
|
423
425
|
"device": ["lockBody"],
|
|
424
426
|
"mobileMenuExtended": ["lockBody"]
|
|
@@ -429,7 +431,7 @@ PostHeader.style = PostHeaderStyle0;
|
|
|
429
431
|
const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
|
|
430
432
|
const PostIconStyle0 = postIconCss;
|
|
431
433
|
|
|
432
|
-
const CDN_URL =
|
|
434
|
+
const CDN_URL = `https://unpkg.com/@swisspost/design-system-icons@${_package.version}/public/post-icons/`;
|
|
433
435
|
const ANIMATION_NAMES = [
|
|
434
436
|
'cylon',
|
|
435
437
|
'cylon-vertical',
|
|
@@ -450,8 +452,6 @@ const PostIcon = class {
|
|
|
450
452
|
this.rotate = null;
|
|
451
453
|
this.scale = null;
|
|
452
454
|
}
|
|
453
|
-
isSSR = typeof window === 'undefined';
|
|
454
|
-
get host() { return index.getElement(this); }
|
|
455
455
|
validateAnimation(newValue = this.animation) {
|
|
456
456
|
if (newValue !== undefined)
|
|
457
457
|
index$1.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
|
|
@@ -482,7 +482,7 @@ const PostIcon = class {
|
|
|
482
482
|
// the first definition object which defines a domain, will be used to set the domain of the file url
|
|
483
483
|
// the first definition object which defines a slug, will be used to set the slug of the file url
|
|
484
484
|
const urlDefinitions = [this.getUrlDefinition(this.base, 'both')];
|
|
485
|
-
if (
|
|
485
|
+
if (breakpoints.IS_BROWSER) {
|
|
486
486
|
urlDefinitions.push(this.getUrlDefinition(document.head
|
|
487
487
|
.querySelector('meta[name="design-system-settings"][data-post-icon-base]')
|
|
488
488
|
?.getAttribute('data-post-icon-base'), 'relative'));
|
|
@@ -546,8 +546,9 @@ const PostIcon = class {
|
|
|
546
546
|
this.validateAnimation();
|
|
547
547
|
}
|
|
548
548
|
render() {
|
|
549
|
-
return (index.h(index.Host, { key: '
|
|
549
|
+
return (index.h(index.Host, { key: 'b3c3efcc03f423a248e231b4b4c5d79c93ae25a6', "data-version": _package.version }, index.h("span", { key: 'd73d4df11fcccb96d5346f3f8c3e18602bb8d484', style: this.getStyles() })));
|
|
550
550
|
}
|
|
551
|
+
get host() { return index.getElement(this); }
|
|
551
552
|
static get watchers() { return {
|
|
552
553
|
"animation": ["validateAnimation"],
|
|
553
554
|
"base": ["validateBase"],
|
|
@@ -574,7 +575,6 @@ const PostLanguageOption = class {
|
|
|
574
575
|
this.name = undefined;
|
|
575
576
|
this.url = undefined;
|
|
576
577
|
}
|
|
577
|
-
get host() { return index.getElement(this); }
|
|
578
578
|
validateCode() {
|
|
579
579
|
checkType.checkType(this, 'code', 'string');
|
|
580
580
|
}
|
|
@@ -599,14 +599,6 @@ const PostLanguageOption = class {
|
|
|
599
599
|
this.postLanguageOptionInitiallyActive.emit(this.code);
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
|
-
/**
|
|
603
|
-
* An event emitted when the language option is clicked. The payload is the ISO 639 code of the language.
|
|
604
|
-
*/
|
|
605
|
-
postChange;
|
|
606
|
-
/**
|
|
607
|
-
* An event emitted when the language option is initially active. The payload is the ISO 639 code of the language.
|
|
608
|
-
*/
|
|
609
|
-
postLanguageOptionInitiallyActive;
|
|
610
602
|
/**
|
|
611
603
|
* Selects the language option programmatically.
|
|
612
604
|
*/
|
|
@@ -627,8 +619,9 @@ const PostLanguageOption = class {
|
|
|
627
619
|
this.emitChange();
|
|
628
620
|
}
|
|
629
621
|
};
|
|
630
|
-
return (index.h(index.Host, { key: '
|
|
622
|
+
return (index.h(index.Host, { key: '3a6b9a8f63c90f431a13c1df529a2e4716ede5d8', "data-version": _package.version }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null)))));
|
|
631
623
|
}
|
|
624
|
+
get host() { return index.getElement(this); }
|
|
632
625
|
static get watchers() { return {
|
|
633
626
|
"code": ["validateCode"],
|
|
634
627
|
"active": ["validateActiveProp"],
|
|
@@ -640,18 +633,21 @@ PostLanguageOption.style = PostLanguageOptionStyle0;
|
|
|
640
633
|
|
|
641
634
|
const SWITCH_VARIANTS = ['list', 'menu'];
|
|
642
635
|
|
|
643
|
-
const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px
|
|
636
|
+
const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px 10px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{background-color:ButtonFace !important}.post-language-switch-trigger:hover{background-color:Highlight !important}}.post-language-switch-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:24px;width:24px}.post-language-switch-trigger[aria-expanded=true]{background-color:#050400;color:#fff}.post-language-switch-trigger[aria-expanded=true] post-icon{transform:rotate(180deg)}.post-language-switch-trigger[aria-expanded=true]:hover{background-color:#504f4b;color:#fff}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{border:1px solid ButtonBorder}.post-language-switch-trigger[aria-expanded=true] post-icon,.post-language-switch-trigger:hover post-icon{color:HighlightText}}";
|
|
644
637
|
const PostLanguageSwitchStyle0 = postLanguageSwitchCss;
|
|
645
638
|
|
|
646
639
|
const PostLanguageSwitch = class {
|
|
647
640
|
constructor(hostRef) {
|
|
648
641
|
index.registerInstance(this, hostRef);
|
|
642
|
+
this.menuId = `p${index_browser.nanoid(11)}`;
|
|
649
643
|
this.caption = undefined;
|
|
650
644
|
this.description = undefined;
|
|
651
645
|
this.variant = 'list';
|
|
652
646
|
this.activeLang = undefined;
|
|
653
647
|
}
|
|
654
|
-
get
|
|
648
|
+
get languageOptions() {
|
|
649
|
+
return Array.from(this.host.querySelectorAll('post-language-option'));
|
|
650
|
+
}
|
|
655
651
|
validateCaption() {
|
|
656
652
|
checkType.checkType(this, 'caption', 'string');
|
|
657
653
|
}
|
|
@@ -669,24 +665,28 @@ const PostLanguageSwitch = class {
|
|
|
669
665
|
// Initially set variants and active language
|
|
670
666
|
// Handles cases where the language-switch is rendered after the language-options have been rendered
|
|
671
667
|
this.updateChildrenVariant();
|
|
672
|
-
this.updateActiveLanguage();
|
|
673
668
|
}
|
|
669
|
+
/**
|
|
670
|
+
* Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
|
|
671
|
+
*/
|
|
674
672
|
handlePostChange(event) {
|
|
675
|
-
this.
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
lang.
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
673
|
+
eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-language-option', delegatorSelector: 'post-language-switch' }, () => {
|
|
674
|
+
this.activeLang = event.detail;
|
|
675
|
+
// Update the active state in the children post-language-option components
|
|
676
|
+
this.languageOptions.forEach(lang => {
|
|
677
|
+
if (lang.code && lang.code === this.activeLang) {
|
|
678
|
+
lang.setAttribute('active', '');
|
|
679
|
+
}
|
|
680
|
+
else {
|
|
681
|
+
lang.removeAttribute('active');
|
|
682
|
+
}
|
|
683
|
+
});
|
|
684
|
+
// Hides the dropdown when an option has been clicked
|
|
685
|
+
if (this.variant === 'menu') {
|
|
686
|
+
const menu = this.host.shadowRoot.querySelector('post-menu');
|
|
687
|
+
menu.hide();
|
|
683
688
|
}
|
|
684
689
|
});
|
|
685
|
-
// Hides the dropdown when an option has been clicked
|
|
686
|
-
if (this.variant === 'menu') {
|
|
687
|
-
const menu = this.host.shadowRoot.querySelector('post-menu');
|
|
688
|
-
menu.hide();
|
|
689
|
-
}
|
|
690
690
|
}
|
|
691
691
|
/**
|
|
692
692
|
* Handles cases where the language switch is being rendered before options are available
|
|
@@ -695,34 +695,22 @@ const PostLanguageSwitch = class {
|
|
|
695
695
|
handleInitiallyActive(event) {
|
|
696
696
|
this.activeLang = event.detail;
|
|
697
697
|
}
|
|
698
|
-
get languageOptions() {
|
|
699
|
-
return this.host.querySelectorAll('post-language-option');
|
|
700
|
-
}
|
|
701
|
-
get activeLanguageOption() {
|
|
702
|
-
return this.host.querySelector('post-language-option[active]:not([active="false"])');
|
|
703
|
-
}
|
|
704
|
-
handleSlotChange() {
|
|
705
|
-
this.updateActiveLanguage();
|
|
706
|
-
}
|
|
707
|
-
updateActiveLanguage() {
|
|
708
|
-
this.activeLang = this.activeLanguageOption.getAttribute('code');
|
|
709
|
-
}
|
|
710
698
|
// Update post-language-option variant to have the correct style
|
|
711
699
|
updateChildrenVariant() {
|
|
712
700
|
this.languageOptions.forEach(el => {
|
|
713
701
|
el.setAttribute('variant', this.variant);
|
|
714
702
|
});
|
|
715
703
|
}
|
|
716
|
-
menuId = `p${index_browser.nanoid(11)}`;
|
|
717
704
|
renderList() {
|
|
718
|
-
return (index.h(index.Host, { "data-version": _package.version, role: "list", "aria-label": this.caption }, index.h("div", { class: "post-language-switch-list", role: "group", "aria-label": this.description }, index.h("slot",
|
|
705
|
+
return (index.h(index.Host, { "data-version": _package.version, role: "list", "aria-label": this.caption }, index.h("div", { class: "post-language-switch-list", role: "group", "aria-label": this.description }, index.h("slot", null))));
|
|
719
706
|
}
|
|
720
707
|
renderDropdown() {
|
|
721
|
-
return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang, index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", "aria-label": this.caption }, index.h("slot",
|
|
708
|
+
return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang, index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", "aria-label": this.caption }, index.h("slot", null))));
|
|
722
709
|
}
|
|
723
710
|
render() {
|
|
724
711
|
return this.variant === 'list' ? this.renderList() : this.renderDropdown();
|
|
725
712
|
}
|
|
713
|
+
get host() { return index.getElement(this); }
|
|
726
714
|
static get watchers() { return {
|
|
727
715
|
"caption": ["validateCaption"],
|
|
728
716
|
"description": ["validateDescription"],
|
|
@@ -741,8 +729,6 @@ const PostList = class {
|
|
|
741
729
|
this.titleHidden = false;
|
|
742
730
|
this.horizontal = false;
|
|
743
731
|
}
|
|
744
|
-
get host() { return index.getElement(this); }
|
|
745
|
-
titleEl;
|
|
746
732
|
componentWillLoad() {
|
|
747
733
|
/**
|
|
748
734
|
* Get the id set on the host element or use a random id by default
|
|
@@ -758,8 +744,9 @@ const PostList = class {
|
|
|
758
744
|
}
|
|
759
745
|
}
|
|
760
746
|
render() {
|
|
761
|
-
return (index.h(index.Host, { key: '
|
|
747
|
+
return (index.h(index.Host, { key: 'b003aa61735359b6a1d95aad8d29c609d5bb3c8b', "data-version": _package.version }, index.h("div", { key: '2f69a2c72dd357767735e10d16f1b7586da6d5a3', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, index.h("slot", { key: '3982783d438519673a676323339a013d3edb84db' })), index.h("div", { key: 'b8a91c4430774f019cc46aa19393e2a1566204a5', role: "list", "aria-labelledby": this.titleId }, index.h("slot", { key: '378a51785c4d52df8ae422657a16e8295b405149', name: "post-list-item" }))));
|
|
762
748
|
}
|
|
749
|
+
get host() { return index.getElement(this); }
|
|
763
750
|
};
|
|
764
751
|
PostList.style = PostListStyle0;
|
|
765
752
|
|
|
@@ -770,13 +757,13 @@ const PostListItem = class {
|
|
|
770
757
|
constructor(hostRef) {
|
|
771
758
|
index.registerInstance(this, hostRef);
|
|
772
759
|
}
|
|
773
|
-
get host() { return index.getElement(this); }
|
|
774
760
|
connectedCallback() {
|
|
775
761
|
this.host.setAttribute('slot', 'post-list-item');
|
|
776
762
|
}
|
|
777
763
|
render() {
|
|
778
|
-
return (index.h(index.Host, { key: '
|
|
764
|
+
return (index.h(index.Host, { key: 'c826293ea2a7446bea2f5b223934b444655198a0', role: "listitem", slot: "post-list-item", version: _package.version }, index.h("slot", { key: 'b997f79da2fbc87fbc6a388c118a03c008ad2c23' })));
|
|
779
765
|
}
|
|
766
|
+
get host() { return index.getElement(this); }
|
|
780
767
|
};
|
|
781
768
|
PostListItem.style = PostListItemStyle0;
|
|
782
769
|
|
|
@@ -788,7 +775,6 @@ const PostLogo = class {
|
|
|
788
775
|
index.registerInstance(this, hostRef);
|
|
789
776
|
this.url = undefined;
|
|
790
777
|
}
|
|
791
|
-
get host() { return index.getElement(this); }
|
|
792
778
|
validateUrl() {
|
|
793
779
|
index$1.checkEmptyOrUrl(this, 'url');
|
|
794
780
|
}
|
|
@@ -804,284 +790,206 @@ const PostLogo = class {
|
|
|
804
790
|
render() {
|
|
805
791
|
const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
|
|
806
792
|
const LogoTag = logoLink ? 'a' : 'span';
|
|
807
|
-
return (index.h(index.Host, { key: '
|
|
793
|
+
return (index.h(index.Host, { key: '7dee19302c0c560b29f09b1675135f10d41fc44a', "data-version": _package.version }, index.h(LogoTag, { key: '1d851ca305d1bfc24666b416ad5f210b96d39811', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: 'cd75bd4040bc2f0d62e5cec2afc9529fa7c43c49', class: "description" }, index.h("slot", { key: 'caf63c4f823873181fa52cfb0cf38217b6a45823', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: 'd41c14973b829eb35764c9e562fe449e65f410b4', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '90c52e528bf4fc8e075e6517c18a59686ffd39f6', id: "Logo" }, index.h("rect", { key: '50633d1110596123232f07272406ebd0a32ffce8', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: '7a617412c094669a66914edf769fba9ee9448b83', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), index.h("path", { key: '74213b21fad18ba6a1dbb07e0b0b7dcf4a89b855', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
|
|
808
794
|
}
|
|
795
|
+
get host() { return index.getElement(this); }
|
|
809
796
|
static get watchers() { return {
|
|
810
797
|
"url": ["validateUrl"]
|
|
811
798
|
}; }
|
|
812
799
|
};
|
|
813
800
|
PostLogo.style = PostLogoStyle0;
|
|
814
801
|
|
|
815
|
-
const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:block;overflow-x:hidden}post-mainnavigation nav{max-width:100%;background:#fff;max-height:var(--main-navigation-height);user-select:none;transition:margin 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{z-index:4;position:absolute;inset-block-end:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;background:#fff;padding:16px;box-shadow:var(--post-device-elevation-500);line-height:100%;height:var(--main-navigation-height)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{background-color:ButtonFace !important}post-mainnavigation .left-scroll-button button:hover,post-mainnavigation .right-scroll-button button:hover{background-color:Highlight !important}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}}@media screen and (min-width: 1024px){post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}}@media screen and (min-width: 1024px){post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
|
|
802
|
+
const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:block;position:relative;height:var(--post-main-navigation-height);background:#fff;user-select:none}post-mainnavigation nav{flex:1 1 auto;overflow:hidden;scroll-behavior:smooth}post-mainnavigation .scroll-control{cursor:pointer;position:absolute;inset-block:0;z-index:5;padding:16px;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}post-mainnavigation .scroll-control.scroll-left{inset-inline-start:0}post-mainnavigation .scroll-control.scroll-right{inset-inline-end:0}post-mainnavigation .scroll-control.d-none{display:none}post-mainnavigation .scroll-control post-icon{font-size:1rem}post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--post-main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .scroll-control{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
|
|
816
803
|
const PostMainnavigationStyle0 = postMainnavigationCss;
|
|
817
804
|
|
|
818
805
|
const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
|
|
819
806
|
const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
|
|
820
|
-
const NAVIGATION_LIST_SELECTOR = 'post-list > [role="list"]:not(post-megadropdown *)';
|
|
821
|
-
const NAVIGATION_ITEM_SELECTOR = 'post-list-item :is(a, button):not(post-megadropdown *)';
|
|
822
807
|
const PostMainnavigation = class {
|
|
823
808
|
constructor(hostRef) {
|
|
824
809
|
index.registerInstance(this, hostRef);
|
|
825
810
|
this.canScrollLeft = false;
|
|
826
811
|
this.canScrollRight = false;
|
|
827
|
-
this.
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
scrollRepeatInterval;
|
|
834
|
-
navbarDisableTimer;
|
|
835
|
-
resizeObserver;
|
|
836
|
-
mutationObserver = new MutationObserver(async (mutations) => {
|
|
837
|
-
// Wait for all elements to be hydrated
|
|
838
|
-
await Promise.all(mutations
|
|
839
|
-
.flatMap((mutation) => Array.from(mutation.addedNodes))
|
|
840
|
-
.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
|
|
841
|
-
// Recalculate scrollability after DOM changes
|
|
842
|
-
this.checkScrollability();
|
|
843
|
-
});
|
|
844
|
-
get host() { return index.getElement(this); }
|
|
845
|
-
/**
|
|
846
|
-
* Update navbar translation when 'translateAmount' changes and recalculate scrollability
|
|
847
|
-
*/
|
|
848
|
-
onTranslateAmountChanges(value) {
|
|
849
|
-
this.navbar.style.marginInlineStart = `-${value}px`;
|
|
850
|
-
this.checkScrollability();
|
|
812
|
+
this.scrollRight = this.scrollRight.bind(this);
|
|
813
|
+
this.scrollLeft = this.scrollLeft.bind(this);
|
|
814
|
+
this.handleMutations = this.handleMutations.bind(this);
|
|
815
|
+
this.checkScrollability = this.checkScrollability.bind(this);
|
|
816
|
+
this.resizeObserver = new ResizeObserver(this.checkScrollability);
|
|
817
|
+
this.mutationObserver = new MutationObserver(this.handleMutations);
|
|
851
818
|
}
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
819
|
+
componentDidLoad() {
|
|
820
|
+
setTimeout(() => {
|
|
821
|
+
this.fixLayoutShift();
|
|
822
|
+
this.checkScrollability();
|
|
823
|
+
});
|
|
824
|
+
// Observe the navbar for size changes
|
|
825
|
+
this.resizeObserver.observe(this.navbar);
|
|
826
|
+
// Observe the navabar for mutation changes
|
|
827
|
+
this.mutationObserver.observe(this.navbar, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
|
|
828
|
+
// Ensure the scroll buttons are correctly displayed or hidden whenever the navbar is scrolled
|
|
829
|
+
this.navbar.addEventListener('scrollend', this.checkScrollability);
|
|
858
830
|
}
|
|
859
831
|
/**
|
|
860
|
-
*
|
|
832
|
+
* Disconnects observers and remove event listeners when the main navigation is removed from the DOM.
|
|
861
833
|
*/
|
|
862
834
|
disconnectedCallback() {
|
|
863
|
-
this.header = null;
|
|
864
835
|
this.mutationObserver.disconnect();
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
}
|
|
836
|
+
this.resizeObserver.disconnect();
|
|
837
|
+
this.navbar.removeEventListener('scrollend', this.checkScrollability);
|
|
868
838
|
}
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
839
|
+
/**
|
|
840
|
+
* Stops the repeated scrolling when the mouse button is released.
|
|
841
|
+
*/
|
|
842
|
+
stopScrolling() {
|
|
843
|
+
if (this.scrollRepeatInterval)
|
|
844
|
+
clearInterval(this.scrollRepeatInterval);
|
|
845
|
+
}
|
|
846
|
+
async handleMutations(mutations) {
|
|
847
|
+
const addedNodes = mutations.flatMap((mutation) => {
|
|
848
|
+
return Array.from(mutation.addedNodes);
|
|
873
849
|
});
|
|
874
|
-
//
|
|
875
|
-
|
|
876
|
-
this.resizeObserver.observe(this.navbar);
|
|
877
|
-
const navList = this.navigationList;
|
|
878
|
-
if (navList) {
|
|
879
|
-
this.resizeObserver.observe(navList);
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
this.mutationObserver.observe(this.navigationList, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
|
|
850
|
+
// Wait for all elements to be hydrated
|
|
851
|
+
await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
|
|
883
852
|
this.fixLayoutShift();
|
|
884
|
-
|
|
885
|
-
|
|
853
|
+
this.checkScrollability();
|
|
854
|
+
}
|
|
855
|
+
get navigationItems() {
|
|
856
|
+
return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
|
|
886
857
|
}
|
|
887
|
-
|
|
858
|
+
/**
|
|
859
|
+
* Hack to fix the layout shift due to bold text on active elements
|
|
860
|
+
*/
|
|
888
861
|
fixLayoutShift() {
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
862
|
+
this.navigationItems
|
|
863
|
+
.filter(item => !item.matches(':has(.nav-el-active)'))
|
|
864
|
+
.forEach(item => {
|
|
865
|
+
item.innerHTML = `
|
|
866
|
+
<span class="nav-el-active">${item.innerHTML}</span>
|
|
867
|
+
<span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
|
|
868
|
+
`;
|
|
869
|
+
});
|
|
893
870
|
}
|
|
894
871
|
handleBackButtonClick() {
|
|
895
|
-
|
|
896
|
-
|
|
872
|
+
const header = this.navbar.closest('post-header');
|
|
873
|
+
if (header)
|
|
874
|
+
header.toggleMobileMenu();
|
|
897
875
|
}
|
|
898
876
|
/**
|
|
899
|
-
*
|
|
877
|
+
* Returns whether scrolling is enabled in either the left or right direction.
|
|
900
878
|
*/
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
if (!this.canScroll || !focusedElement.matches(NAVIGATION_ITEM_SELECTOR))
|
|
904
|
-
return;
|
|
905
|
-
// We need to move the element into the view before it is focused to avoid browser default behavior
|
|
906
|
-
e.preventDefault();
|
|
907
|
-
this.withoutTransition(() => {
|
|
908
|
-
// Try scrolling in both directions, only the necessary translation will actually occur
|
|
909
|
-
this.translateRightTo(focusedElement);
|
|
910
|
-
this.translateLeftTo(focusedElement);
|
|
911
|
-
focusedElement.focus();
|
|
912
|
-
});
|
|
879
|
+
get canScroll() {
|
|
880
|
+
return this.canScrollLeft || this.canScrollRight;
|
|
913
881
|
}
|
|
914
882
|
/**
|
|
915
883
|
* Checks if scrolling is possible in either direction (left or right) and updates the state accordingly.
|
|
916
884
|
*/
|
|
917
885
|
checkScrollability() {
|
|
918
|
-
const { scrollWidth, clientWidth } = this.navbar;
|
|
919
|
-
const couldScroll = this.canScroll;
|
|
886
|
+
const { scrollLeft, scrollWidth, clientWidth } = this.navbar;
|
|
920
887
|
if (scrollWidth === clientWidth) {
|
|
921
888
|
// If scroll width equals client width, scrolling is disabled in both directions
|
|
922
889
|
this.canScrollLeft = this.canScrollRight = false;
|
|
923
890
|
}
|
|
924
891
|
else {
|
|
925
|
-
this.canScrollLeft =
|
|
926
|
-
this.canScrollRight = clientWidth +
|
|
927
|
-
}
|
|
928
|
-
if (couldScroll && !this.canScroll) {
|
|
929
|
-
this.withoutTransition(() => (this.translationAmount = 0));
|
|
892
|
+
this.canScrollLeft = Math.floor(scrollLeft) > 0; // Scrolling left is possible if not at the start
|
|
893
|
+
this.canScrollRight = Math.ceil(clientWidth + scrollLeft) < scrollWidth; // Scrolling right is possible if not at the end
|
|
930
894
|
}
|
|
931
895
|
}
|
|
932
|
-
/**
|
|
933
|
-
* Returns whether scrolling is enabled in either the left or right direction.
|
|
934
|
-
*/
|
|
935
|
-
get canScroll() {
|
|
936
|
-
return this.canScrollLeft || this.canScrollRight;
|
|
937
|
-
}
|
|
938
896
|
/**
|
|
939
897
|
* Handles the scrolling behavior when a user clicks on the left or right scroll buttons.
|
|
940
898
|
*/
|
|
941
|
-
handleScrollButtonClick(direction) {
|
|
942
|
-
if (!this.canScroll)
|
|
899
|
+
handleScrollButtonClick(e, direction) {
|
|
900
|
+
if (!this.canScroll || e.button !== 0)
|
|
943
901
|
return;
|
|
944
902
|
// Disable interaction with the navbar during scrolling
|
|
945
|
-
this.
|
|
946
|
-
//
|
|
947
|
-
this.
|
|
903
|
+
this.temporarilyDisableNavbar();
|
|
904
|
+
// Set up the correct scroll function
|
|
905
|
+
const scroll = direction === 'right' ? this.scrollRight : this.scrollLeft;
|
|
906
|
+
scroll();
|
|
948
907
|
// Repeat the scrolling action while the button is held down
|
|
949
908
|
this.scrollRepeatInterval = setInterval(() => {
|
|
950
|
-
|
|
909
|
+
scroll();
|
|
951
910
|
}, SCROLL_REPEAT_INTERVAL);
|
|
952
911
|
}
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
const couldScroll = direction === 'left' ? this.translateLeftTo(item, true) : this.translateRightTo(item, true);
|
|
966
|
-
if (couldScroll)
|
|
967
|
-
break;
|
|
912
|
+
scrollRight() {
|
|
913
|
+
const scrollRightLeftEdge = document
|
|
914
|
+
.querySelector('.scroll-right')
|
|
915
|
+
.getBoundingClientRect().left;
|
|
916
|
+
for (const navigationItem of this.navigationItems) {
|
|
917
|
+
const { right, width } = navigationItem.getBoundingClientRect();
|
|
918
|
+
// Scroll to the first navigation item that is less than 75% visible
|
|
919
|
+
const isThreeQuartersVisible = right - 0.25 * width < scrollRightLeftEdge;
|
|
920
|
+
if (!isThreeQuartersVisible) {
|
|
921
|
+
this.navbar.scrollBy({ left: right - scrollRightLeftEdge });
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
968
924
|
}
|
|
969
925
|
}
|
|
970
|
-
|
|
971
|
-
const
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
// Calculate the maximum translation amount to prevent scrolling past the end of the content
|
|
984
|
-
const maximumTranslation = this.navbar.scrollWidth - this.host.clientWidth;
|
|
985
|
-
// Adjust the translation amount, ensuring it doesn't exceed the maximum scrollable area
|
|
986
|
-
const { marginRight } = getComputedStyle(this.navigationList);
|
|
987
|
-
this.translationAmount =
|
|
988
|
-
Math.min(this.translationAmount + translationIncrease, maximumTranslation) +
|
|
989
|
-
parseInt(marginRight);
|
|
990
|
-
return true;
|
|
991
|
-
}
|
|
992
|
-
translateLeftTo(navigationItem, skipSmallTranslation = false) {
|
|
993
|
-
const listItem = navigationItem.closest('post-list-item');
|
|
994
|
-
// Get the left edge position of the list item relative to the left of the screen
|
|
995
|
-
const leftEdgePosition = listItem.offsetLeft;
|
|
996
|
-
// Calculate the first visible position on the screen to the left, right after the left scroll button
|
|
997
|
-
const firstVisiblePosition = this.leftScrollButton.clientWidth;
|
|
998
|
-
// If the item is already fully visible, no translation is needed
|
|
999
|
-
if (leftEdgePosition > firstVisiblePosition)
|
|
1000
|
-
return false;
|
|
1001
|
-
const translationDecrease = firstVisiblePosition - leftEdgePosition + 1; // + 1 because offset values are rounded
|
|
1002
|
-
// If the required scroll distance is too small (less than half the width of the item), don't perform the scroll
|
|
1003
|
-
if (skipSmallTranslation && translationDecrease < listItem.clientWidth / 2)
|
|
1004
|
-
return false;
|
|
1005
|
-
// Calculate the minimum allowed translation amount (no negative scrolling allowed)
|
|
1006
|
-
const minimumTranslation = 0;
|
|
1007
|
-
// Adjust the translation amount, ensuring it doesn't go below the minimum scrollable area
|
|
1008
|
-
const { marginLeft } = getComputedStyle(this.navigationList);
|
|
1009
|
-
this.translationAmount = Math.max(this.translationAmount - translationDecrease - parseInt(marginLeft), minimumTranslation);
|
|
1010
|
-
return true;
|
|
1011
|
-
}
|
|
1012
|
-
/**
|
|
1013
|
-
* Returns the navigation list container element
|
|
1014
|
-
*/
|
|
1015
|
-
get navigationList() {
|
|
1016
|
-
return this.navbar.querySelector(NAVIGATION_LIST_SELECTOR);
|
|
1017
|
-
}
|
|
1018
|
-
/**
|
|
1019
|
-
* Returns the navigation items
|
|
1020
|
-
*/
|
|
1021
|
-
get navigationItems() {
|
|
1022
|
-
return this.navbar.querySelectorAll(NAVIGATION_ITEM_SELECTOR);
|
|
926
|
+
scrollLeft() {
|
|
927
|
+
const scrollLeftRightEdge = document
|
|
928
|
+
.querySelector('.scroll-left')
|
|
929
|
+
.getBoundingClientRect().right;
|
|
930
|
+
for (const navigationItem of this.navigationItems.reverse()) {
|
|
931
|
+
const { left, width } = navigationItem.getBoundingClientRect();
|
|
932
|
+
// Scroll to the first navigation item that is less than 75% visible
|
|
933
|
+
const isThreeQuartersVisible = left + 0.25 * width > scrollLeftRightEdge;
|
|
934
|
+
if (!isThreeQuartersVisible) {
|
|
935
|
+
this.navbar.scrollBy({ left: left - scrollLeftRightEdge });
|
|
936
|
+
return;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
1023
939
|
}
|
|
1024
940
|
/**
|
|
1025
941
|
* Temporarily disables interactions with the navbar during scrolling to prevent accidental clicks.
|
|
1026
942
|
* Re-enables interactions after a brief delay to avoid blocking the user entirely.
|
|
1027
943
|
*/
|
|
1028
|
-
|
|
944
|
+
temporarilyDisableNavbar() {
|
|
1029
945
|
if (this.navbarDisableTimer)
|
|
1030
946
|
clearTimeout(this.navbarDisableTimer);
|
|
1031
|
-
this.navbar.
|
|
947
|
+
this.navbar.setAttribute('inert', '');
|
|
1032
948
|
this.navbarDisableTimer = setTimeout(() => {
|
|
1033
|
-
this.navbar.
|
|
949
|
+
this.navbar.removeAttribute('inert');
|
|
1034
950
|
}, NAVBAR_DISABLE_DURATION);
|
|
1035
951
|
}
|
|
1036
|
-
/**
|
|
1037
|
-
* Allows to translate the navbar without a transition
|
|
1038
|
-
*/
|
|
1039
|
-
withoutTransition(callback) {
|
|
1040
|
-
const transition = this.navbar.style.transition;
|
|
1041
|
-
this.navbar.style.transition = 'none';
|
|
1042
|
-
callback();
|
|
1043
|
-
setTimeout(() => {
|
|
1044
|
-
this.navbar.style.transition = transition;
|
|
1045
|
-
});
|
|
1046
|
-
}
|
|
1047
952
|
render() {
|
|
1048
|
-
return (index.h(index.Host, { key: '
|
|
953
|
+
return (index.h(index.Host, { key: '6cd850555585d87eb25e3f6892b8010f5e4d23d6', slot: "post-mainnavigation", version: _package.version }, index.h("div", { key: '3411008120d072920f4de0b71c9dc014748f1390', onClick: () => this.handleBackButtonClick(), class: "back-button" }, index.h("slot", { key: '2e3747380cb546bd6da77e5ffba2403586205a55', name: "back-button" })), index.h("div", { key: 'e9eedd836b3f679ba2861109db2d0811c1142677', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '628511a2c1812a08828e1aa2b51f26ad01a5a2cf', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '1b660d65e1984e8701a98a369046f391fd177338', ref: el => (this.navbar = el) }, index.h("slot", { key: '0eb35366ac0bd58509afd6a12f68c2b09396a497' })), index.h("div", { key: '11145ad6602e2df78d3c3f4643cc6e4e960775aa', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: '26e795cd00221dbfb1a7632453d0d48993584b0b', "aria-hidden": "true", name: "chevronright" }))));
|
|
1049
954
|
}
|
|
1050
|
-
static get watchers() { return {
|
|
1051
|
-
"translationAmount": ["onTranslateAmountChanges"]
|
|
1052
|
-
}; }
|
|
1053
955
|
};
|
|
1054
956
|
PostMainnavigation.style = PostMainnavigationStyle0;
|
|
1055
957
|
|
|
1056
|
-
const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;position:fixed;inset-block-start:var(--header-navigation-current-inset);inset-inline:0;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
|
|
958
|
+
const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;position:fixed;inset-block-start:var(--header-navigation-current-inset);inset-inline:0;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--post-header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
|
|
1057
959
|
const PostMegadropdownStyle0 = postMegadropdownCss;
|
|
1058
960
|
|
|
1059
961
|
const PostMegadropdown = class {
|
|
1060
962
|
constructor(hostRef) {
|
|
1061
963
|
index.registerInstance(this, hostRef);
|
|
1062
964
|
this.postToggleMegadropdown = index.createEvent(this, "postToggleMegadropdown", 7);
|
|
965
|
+
this.handleClickOutside = (event) => {
|
|
966
|
+
if (this.device !== 'desktop')
|
|
967
|
+
return;
|
|
968
|
+
const target = event.target;
|
|
969
|
+
if (this.host.contains(target)) {
|
|
970
|
+
return;
|
|
971
|
+
}
|
|
972
|
+
if (target instanceof HTMLElement) {
|
|
973
|
+
const trigger = target.closest('post-megadropdown-trigger');
|
|
974
|
+
if (trigger) {
|
|
975
|
+
const targetDropdownId = trigger.getAttribute('for');
|
|
976
|
+
if (targetDropdownId !== this.host.id) {
|
|
977
|
+
return;
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
this.hide(false);
|
|
982
|
+
};
|
|
1063
983
|
this.device = breakpoints.breakpoint.get('name');
|
|
1064
984
|
this.isVisible = false;
|
|
1065
985
|
this.animationClass = null;
|
|
1066
986
|
}
|
|
1067
|
-
firstFocusableEl;
|
|
1068
|
-
lastFocusableEl;
|
|
1069
|
-
get host() { return index.getElement(this); }
|
|
1070
|
-
/** Tracks the currently active dropdown instance. */
|
|
1071
|
-
static activeDropdown = null;
|
|
1072
987
|
breakpointChange(e) {
|
|
1073
988
|
this.device = e.detail;
|
|
1074
989
|
if (this.device === 'desktop' && this.isVisible) {
|
|
1075
990
|
this.animationClass = null;
|
|
1076
991
|
}
|
|
1077
992
|
}
|
|
1078
|
-
/**
|
|
1079
|
-
* Emits when the dropdown is shown or hidden.
|
|
1080
|
-
* The event payload is an object.
|
|
1081
|
-
* `isVisible` is true when the dropdown gets opened and false when it gets closed
|
|
1082
|
-
* `focusParent` determines whether after the closing of the mega dropdown, the focus should go back to the trigger parent or naturally go to the next focusable element in the page
|
|
1083
|
-
**/
|
|
1084
|
-
postToggleMegadropdown;
|
|
1085
993
|
disconnectedCallback() {
|
|
1086
994
|
this.removeListeners();
|
|
1087
995
|
window.removeEventListener('postBreakpoint:name', this.breakpointChange.bind(this));
|
|
@@ -1161,24 +1069,6 @@ const PostMegadropdown = class {
|
|
|
1161
1069
|
this.removeListeners();
|
|
1162
1070
|
}
|
|
1163
1071
|
}
|
|
1164
|
-
handleClickOutside = (event) => {
|
|
1165
|
-
if (this.device !== 'desktop')
|
|
1166
|
-
return;
|
|
1167
|
-
const target = event.target;
|
|
1168
|
-
if (this.host.contains(target)) {
|
|
1169
|
-
return;
|
|
1170
|
-
}
|
|
1171
|
-
if (target instanceof HTMLElement) {
|
|
1172
|
-
const trigger = target.closest('post-megadropdown-trigger');
|
|
1173
|
-
if (trigger) {
|
|
1174
|
-
const targetDropdownId = trigger.getAttribute('for');
|
|
1175
|
-
if (targetDropdownId !== this.host.id) {
|
|
1176
|
-
return;
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
}
|
|
1180
|
-
this.hide(false);
|
|
1181
|
-
};
|
|
1182
1072
|
addListeners() {
|
|
1183
1073
|
this.host.addEventListener('keydown', e => this.keyboardHandler(e));
|
|
1184
1074
|
document.addEventListener('keyup', e => this.handleTabOutside(e));
|
|
@@ -1221,7 +1111,10 @@ const PostMegadropdown = class {
|
|
|
1221
1111
|
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
1222
1112
|
return (index.h(index.Host, { key: '7426a12ebaeac0ce3b8402c3da4d5393daca059b', version: _package.version }, index.h("div", { key: 'd47b60c334577f5662f19912f12ce941b4b52d94', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, index.h("div", { key: '2798f217b2b3e43c3c63072884bbbbe7d99ed62f', class: "megadropdown" }, index.h("slot", { key: 'b61f82bbc7f87f65d9b6957e7a4e5d6790b6dd00', name: "megadropdown-title" }), index.h("div", { key: 'f4996a819511cb59185faeedbdcec4be6e6f8a24', class: "megadropdown-content" }, index.h("slot", { key: '54f695c3b3d30a6a1aae7f7dc6f65f4d4d27de68' })), index.h("div", { key: 'b1334295c7d758e20c85b6c6c8cefc31dcf09e20', onClick: () => this.hide(true), class: "back-button" }, index.h("slot", { key: 'c4db69fa3207ce4cb47b725e37b1993820a2a64c', name: "back-button" })), index.h("div", { key: '68b22a3222382586fc749dec63e36edae84360c1', onClick: () => this.hide(true), class: "close-button" }, index.h("slot", { key: '8023b75c931a95dbd9552c1a713790e77e40f526', name: "close-button" }))))));
|
|
1223
1113
|
}
|
|
1114
|
+
get host() { return index.getElement(this); }
|
|
1224
1115
|
};
|
|
1116
|
+
/** Tracks the currently active dropdown instance. */
|
|
1117
|
+
PostMegadropdown.activeDropdown = null;
|
|
1225
1118
|
PostMegadropdown.style = PostMegadropdownStyle0;
|
|
1226
1119
|
|
|
1227
1120
|
const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative;z-index:3}";
|
|
@@ -1230,20 +1123,45 @@ const PostMegadropdownTriggerStyle0 = postMegadropdownTriggerCss;
|
|
|
1230
1123
|
const PostMegadropdownTrigger = class {
|
|
1231
1124
|
constructor(hostRef) {
|
|
1232
1125
|
index.registerInstance(this, hostRef);
|
|
1126
|
+
/**
|
|
1127
|
+
* Reference to the slotted button within the trigger, if present.
|
|
1128
|
+
* Used to manage click and key events for mega dropdown control.
|
|
1129
|
+
*/
|
|
1130
|
+
this.slottedButton = null;
|
|
1131
|
+
/**
|
|
1132
|
+
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
1133
|
+
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
1134
|
+
*/
|
|
1135
|
+
this.wasExpanded = false;
|
|
1136
|
+
this.handleKeyDown = (event) => {
|
|
1137
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
1138
|
+
event.preventDefault();
|
|
1139
|
+
this.handleToggle();
|
|
1140
|
+
if (this.megadropdown && !this.ariaExpanded) {
|
|
1141
|
+
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
};
|
|
1145
|
+
this.handleToggleMegadropdown = (event) => {
|
|
1146
|
+
eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-megadropdown' }, () => {
|
|
1147
|
+
if (event.target.id === this.for) {
|
|
1148
|
+
this.ariaExpanded = event.detail.isVisible;
|
|
1149
|
+
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
1150
|
+
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
1151
|
+
setTimeout(() => {
|
|
1152
|
+
this.slottedButton?.focus();
|
|
1153
|
+
}, 100);
|
|
1154
|
+
}
|
|
1155
|
+
this.wasExpanded = this.ariaExpanded;
|
|
1156
|
+
if (this.slottedButton) {
|
|
1157
|
+
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
});
|
|
1161
|
+
};
|
|
1233
1162
|
this.for = undefined;
|
|
1234
1163
|
this.ariaExpanded = false;
|
|
1235
1164
|
}
|
|
1236
|
-
get host() { return index.getElement(this); }
|
|
1237
|
-
/**
|
|
1238
|
-
* Reference to the slotted button within the trigger, if present.
|
|
1239
|
-
* Used to manage click and key events for mega dropdown control.
|
|
1240
|
-
*/
|
|
1241
|
-
slottedButton = null;
|
|
1242
|
-
/**
|
|
1243
|
-
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
1244
|
-
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
1245
|
-
*/
|
|
1246
|
-
wasExpanded = false;
|
|
1247
1165
|
/**
|
|
1248
1166
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
1249
1167
|
* @param forValue - The new value of the `for` property.
|
|
@@ -1265,33 +1183,10 @@ const PostMegadropdownTrigger = class {
|
|
|
1265
1183
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
1266
1184
|
}
|
|
1267
1185
|
}
|
|
1268
|
-
handleKeyDown = (event) => {
|
|
1269
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
1270
|
-
event.preventDefault();
|
|
1271
|
-
this.handleToggle();
|
|
1272
|
-
if (this.megadropdown && !this.ariaExpanded) {
|
|
1273
|
-
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
1274
|
-
}
|
|
1275
|
-
}
|
|
1276
|
-
};
|
|
1277
1186
|
componentDidLoad() {
|
|
1278
1187
|
this.validateControlFor();
|
|
1279
1188
|
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
1280
|
-
document.addEventListener('postToggleMegadropdown',
|
|
1281
|
-
if (event.target.id === this.for) {
|
|
1282
|
-
this.ariaExpanded = event.detail.isVisible;
|
|
1283
|
-
// Focus on the trigger parent of the dropdown after it's closed if close button had been clicked
|
|
1284
|
-
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
1285
|
-
setTimeout(() => {
|
|
1286
|
-
this.slottedButton?.focus();
|
|
1287
|
-
}, 100);
|
|
1288
|
-
}
|
|
1289
|
-
this.wasExpanded = this.ariaExpanded;
|
|
1290
|
-
if (this.slottedButton) {
|
|
1291
|
-
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
|
-
});
|
|
1189
|
+
document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
1295
1190
|
this.slottedButton = this.host.querySelector('button');
|
|
1296
1191
|
if (this.slottedButton) {
|
|
1297
1192
|
this.slottedButton.setAttribute('aria-haspopup', 'menu');
|
|
@@ -1304,9 +1199,13 @@ const PostMegadropdownTrigger = class {
|
|
|
1304
1199
|
console.warn('No button found within post-megadropdown-trigger');
|
|
1305
1200
|
}
|
|
1306
1201
|
}
|
|
1202
|
+
disconnectedCallback() {
|
|
1203
|
+
document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
1204
|
+
}
|
|
1307
1205
|
render() {
|
|
1308
|
-
return (index.h(index.Host, { key: '
|
|
1206
|
+
return (index.h(index.Host, { key: '86b85efede8d9b19f3f0560f500f33f5e172177f', "data-version": _package.version, "tab-index": "-1" }, index.h("button", { key: '0f810e4c38bc4abf23ac60ab27b36d408e7ced0d' }, index.h("slot", { key: '2a522ac7e15ef8ac077b73cdebf629b89ea173c6' }))));
|
|
1309
1207
|
}
|
|
1208
|
+
get host() { return index.getElement(this); }
|
|
1310
1209
|
static get watchers() { return {
|
|
1311
1210
|
"for": ["validateControlFor"]
|
|
1312
1211
|
}; }
|
|
@@ -1320,28 +1219,54 @@ const PostMenu = class {
|
|
|
1320
1219
|
constructor(hostRef) {
|
|
1321
1220
|
index.registerInstance(this, hostRef);
|
|
1322
1221
|
this.toggleMenu = index.createEvent(this, "toggleMenu", 7);
|
|
1222
|
+
this.lastFocusedElement = null;
|
|
1223
|
+
this.KEYCODES = {
|
|
1224
|
+
SPACE: ' ',
|
|
1225
|
+
ENTER: 'Enter',
|
|
1226
|
+
UP: 'ArrowUp',
|
|
1227
|
+
DOWN: 'ArrowDown',
|
|
1228
|
+
TAB: 'Tab',
|
|
1229
|
+
HOME: 'Home',
|
|
1230
|
+
END: 'End',
|
|
1231
|
+
ESCAPE: 'Escape',
|
|
1232
|
+
};
|
|
1233
|
+
this.handleKeyDown = (e) => {
|
|
1234
|
+
e.stopPropagation();
|
|
1235
|
+
if (e.key === this.KEYCODES.ESCAPE) {
|
|
1236
|
+
this.toggle(this.host);
|
|
1237
|
+
return;
|
|
1238
|
+
}
|
|
1239
|
+
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
1240
|
+
this.controlKeyDownHandler(e);
|
|
1241
|
+
}
|
|
1242
|
+
};
|
|
1243
|
+
this.handlePostToggle = (event) => {
|
|
1244
|
+
eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-popovercontainer', delegatorSelector: 'post-menu' }, () => {
|
|
1245
|
+
this.isVisible = event.detail;
|
|
1246
|
+
this.toggleMenu.emit(this.isVisible);
|
|
1247
|
+
requestAnimationFrame(() => {
|
|
1248
|
+
if (this.isVisible) {
|
|
1249
|
+
this.lastFocusedElement = this.root?.activeElement;
|
|
1250
|
+
const menuItems = this.getSlottedItems();
|
|
1251
|
+
if (menuItems.length > 0) {
|
|
1252
|
+
menuItems[0].focus();
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
else if (this.lastFocusedElement) {
|
|
1256
|
+
this.lastFocusedElement.focus();
|
|
1257
|
+
}
|
|
1258
|
+
});
|
|
1259
|
+
});
|
|
1260
|
+
};
|
|
1261
|
+
this.handleClick = (e) => {
|
|
1262
|
+
const target = e.target;
|
|
1263
|
+
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
1264
|
+
this.toggle(this.host);
|
|
1265
|
+
}
|
|
1266
|
+
};
|
|
1323
1267
|
this.placement = 'bottom';
|
|
1324
1268
|
this.isVisible = false;
|
|
1325
1269
|
}
|
|
1326
|
-
popoverRef;
|
|
1327
|
-
lastFocusedElement = null;
|
|
1328
|
-
KEYCODES = {
|
|
1329
|
-
SPACE: ' ',
|
|
1330
|
-
ENTER: 'Enter',
|
|
1331
|
-
UP: 'ArrowUp',
|
|
1332
|
-
DOWN: 'ArrowDown',
|
|
1333
|
-
TAB: 'Tab',
|
|
1334
|
-
HOME: 'Home',
|
|
1335
|
-
END: 'End',
|
|
1336
|
-
ESCAPE: 'Escape',
|
|
1337
|
-
};
|
|
1338
|
-
get host() { return index.getElement(this); }
|
|
1339
|
-
/**
|
|
1340
|
-
* Emits when the menu is shown or hidden.
|
|
1341
|
-
* The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
|
|
1342
|
-
**/
|
|
1343
|
-
toggleMenu;
|
|
1344
|
-
root;
|
|
1345
1270
|
connectedCallback() {
|
|
1346
1271
|
this.root = getRoot.getRoot(this.host);
|
|
1347
1272
|
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
@@ -1350,24 +1275,12 @@ const PostMenu = class {
|
|
|
1350
1275
|
disconnectedCallback() {
|
|
1351
1276
|
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
1352
1277
|
this.host.removeEventListener('click', this.handleClick);
|
|
1278
|
+
this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
|
|
1353
1279
|
}
|
|
1354
1280
|
componentDidLoad() {
|
|
1355
|
-
this.popoverRef
|
|
1356
|
-
this.
|
|
1357
|
-
|
|
1358
|
-
requestAnimationFrame(() => {
|
|
1359
|
-
if (this.isVisible) {
|
|
1360
|
-
this.lastFocusedElement = this.root.activeElement;
|
|
1361
|
-
const menuItems = this.getSlottedItems();
|
|
1362
|
-
if (menuItems.length > 0) {
|
|
1363
|
-
menuItems[0].focus();
|
|
1364
|
-
}
|
|
1365
|
-
}
|
|
1366
|
-
else if (this.lastFocusedElement) {
|
|
1367
|
-
this.lastFocusedElement.focus();
|
|
1368
|
-
}
|
|
1369
|
-
});
|
|
1370
|
-
});
|
|
1281
|
+
if (this.popoverRef) {
|
|
1282
|
+
this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
|
|
1283
|
+
}
|
|
1371
1284
|
}
|
|
1372
1285
|
/**
|
|
1373
1286
|
* Toggles the menu visibility based on its current state.
|
|
@@ -1404,22 +1317,6 @@ const PostMenu = class {
|
|
|
1404
1317
|
console.error('hide: popoverRef is null or undefined');
|
|
1405
1318
|
}
|
|
1406
1319
|
}
|
|
1407
|
-
handleKeyDown = (e) => {
|
|
1408
|
-
e.stopPropagation();
|
|
1409
|
-
if (e.key === this.KEYCODES.ESCAPE) {
|
|
1410
|
-
this.toggle(this.host);
|
|
1411
|
-
return;
|
|
1412
|
-
}
|
|
1413
|
-
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
1414
|
-
this.controlKeyDownHandler(e);
|
|
1415
|
-
}
|
|
1416
|
-
};
|
|
1417
|
-
handleClick = (e) => {
|
|
1418
|
-
const target = e.target;
|
|
1419
|
-
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
1420
|
-
this.toggle(this.host);
|
|
1421
|
-
}
|
|
1422
|
-
};
|
|
1423
1320
|
controlKeyDownHandler(e) {
|
|
1424
1321
|
const menuItems = this.getSlottedItems();
|
|
1425
1322
|
if (!menuItems.length) {
|
|
@@ -1466,8 +1363,9 @@ const PostMenu = class {
|
|
|
1466
1363
|
.flatMap(el => Array.from(getFocusableChildren(el))));
|
|
1467
1364
|
}
|
|
1468
1365
|
render() {
|
|
1469
|
-
return (index.h(index.Host, { key: '
|
|
1366
|
+
return (index.h(index.Host, { key: 'a86276a1fefccbb1f2b50f1ad74dd98ddcbdae5d', "data-version": _package.version, role: "menu" }, index.h("post-popovercontainer", { key: 'a0b2a35714ba370b7a73d92d1d6c036aa7039aea', placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: '98da2e21f8e4b4e02b4c347bc4f9238edc635b77', class: "popover-container", part: "popover-container" }, index.h("slot", { key: 'd3060c46482c5f3179827b8996a9a4b24abf49fa' })))));
|
|
1470
1367
|
}
|
|
1368
|
+
get host() { return index.getElement(this); }
|
|
1471
1369
|
};
|
|
1472
1370
|
PostMenu.style = PostMenuStyle0;
|
|
1473
1371
|
|
|
@@ -1477,16 +1375,20 @@ const PostMenuTriggerStyle0 = postMenuTriggerCss;
|
|
|
1477
1375
|
const PostMenuTrigger = class {
|
|
1478
1376
|
constructor(hostRef) {
|
|
1479
1377
|
index.registerInstance(this, hostRef);
|
|
1378
|
+
/**
|
|
1379
|
+
* Reference to the slotted button within the trigger, if present.
|
|
1380
|
+
* Used to manage click and key events for menu control.
|
|
1381
|
+
*/
|
|
1382
|
+
this.slottedButton = null;
|
|
1383
|
+
this.handleKeyDown = (e) => {
|
|
1384
|
+
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
1385
|
+
e.preventDefault();
|
|
1386
|
+
this.handleToggle();
|
|
1387
|
+
}
|
|
1388
|
+
};
|
|
1480
1389
|
this.for = undefined;
|
|
1481
1390
|
this.ariaExpanded = false;
|
|
1482
1391
|
}
|
|
1483
|
-
get host() { return index.getElement(this); }
|
|
1484
|
-
/**
|
|
1485
|
-
* Reference to the slotted button within the trigger, if present.
|
|
1486
|
-
* Used to manage click and key events for menu control.
|
|
1487
|
-
*/
|
|
1488
|
-
slottedButton = null;
|
|
1489
|
-
root;
|
|
1490
1392
|
/**
|
|
1491
1393
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
1492
1394
|
* @param forValue - The new value of the `for` property.
|
|
@@ -1506,12 +1408,6 @@ const PostMenuTrigger = class {
|
|
|
1506
1408
|
console.warn(`No post-menu found with ID: ${this.for}`);
|
|
1507
1409
|
}
|
|
1508
1410
|
}
|
|
1509
|
-
handleKeyDown = (e) => {
|
|
1510
|
-
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
1511
|
-
e.preventDefault();
|
|
1512
|
-
this.handleToggle();
|
|
1513
|
-
}
|
|
1514
|
-
};
|
|
1515
1411
|
connectedCallback() {
|
|
1516
1412
|
this.root = getRoot.getRoot(this.host);
|
|
1517
1413
|
}
|
|
@@ -1547,8 +1443,9 @@ const PostMenuTrigger = class {
|
|
|
1547
1443
|
}
|
|
1548
1444
|
}
|
|
1549
1445
|
render() {
|
|
1550
|
-
return (index.h(index.Host, { key: '
|
|
1446
|
+
return (index.h(index.Host, { key: '1b9589febc2976d17eed3363d91b4321473b7b5e', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: 'bec55f97274084ab4721dc085dc9e1c3a216c0a3' })));
|
|
1551
1447
|
}
|
|
1448
|
+
get host() { return index.getElement(this); }
|
|
1552
1449
|
static get watchers() { return {
|
|
1553
1450
|
"for": ["validateControlFor"]
|
|
1554
1451
|
}; }
|
|
@@ -3599,7 +3496,385 @@ const computePosition = (reference, floating, options) => {
|
|
|
3599
3496
|
});
|
|
3600
3497
|
};
|
|
3601
3498
|
|
|
3602
|
-
|
|
3499
|
+
// src/events.ts
|
|
3500
|
+
var ToggleEvent = class extends Event {
|
|
3501
|
+
oldState;
|
|
3502
|
+
newState;
|
|
3503
|
+
constructor(type, { oldState = "", newState = "", ...init } = {}) {
|
|
3504
|
+
super(type, init);
|
|
3505
|
+
this.oldState = String(oldState || "");
|
|
3506
|
+
this.newState = String(newState || "");
|
|
3507
|
+
}
|
|
3508
|
+
};
|
|
3509
|
+
var popoverToggleTaskQueue = /* @__PURE__ */ new WeakMap();
|
|
3510
|
+
function queuePopoverToggleEventTask(element, oldState, newState) {
|
|
3511
|
+
popoverToggleTaskQueue.set(
|
|
3512
|
+
element,
|
|
3513
|
+
setTimeout(() => {
|
|
3514
|
+
if (!popoverToggleTaskQueue.has(element)) return;
|
|
3515
|
+
element.dispatchEvent(
|
|
3516
|
+
new ToggleEvent("toggle", {
|
|
3517
|
+
cancelable: false,
|
|
3518
|
+
oldState,
|
|
3519
|
+
newState
|
|
3520
|
+
})
|
|
3521
|
+
);
|
|
3522
|
+
}, 0)
|
|
3523
|
+
);
|
|
3524
|
+
}
|
|
3525
|
+
|
|
3526
|
+
// src/popover-helpers.ts
|
|
3527
|
+
var ShadowRoot$1 = globalThis.ShadowRoot || function() {
|
|
3528
|
+
};
|
|
3529
|
+
var HTMLDialogElement = globalThis.HTMLDialogElement || function() {
|
|
3530
|
+
};
|
|
3531
|
+
var topLayerElements = /* @__PURE__ */ new WeakMap();
|
|
3532
|
+
var autoPopoverList = /* @__PURE__ */ new WeakMap();
|
|
3533
|
+
var visibilityState = /* @__PURE__ */ new WeakMap();
|
|
3534
|
+
function getPopoverVisibilityState(popover) {
|
|
3535
|
+
return visibilityState.get(popover) || "hidden";
|
|
3536
|
+
}
|
|
3537
|
+
var popoverInvoker = /* @__PURE__ */ new WeakMap();
|
|
3538
|
+
function popoverTargetAttributeActivationBehavior(element) {
|
|
3539
|
+
const popover = element.popoverTargetElement;
|
|
3540
|
+
if (!(popover instanceof HTMLElement)) {
|
|
3541
|
+
return;
|
|
3542
|
+
}
|
|
3543
|
+
const visibility = getPopoverVisibilityState(popover);
|
|
3544
|
+
if (element.popoverTargetAction === "show" && visibility === "showing") {
|
|
3545
|
+
return;
|
|
3546
|
+
}
|
|
3547
|
+
if (element.popoverTargetAction === "hide" && visibility === "hidden") return;
|
|
3548
|
+
if (visibility === "showing") {
|
|
3549
|
+
hidePopover(popover, true, true);
|
|
3550
|
+
} else if (checkPopoverValidity(popover, false)) {
|
|
3551
|
+
popoverInvoker.set(popover, element);
|
|
3552
|
+
showPopover(popover);
|
|
3553
|
+
}
|
|
3554
|
+
}
|
|
3555
|
+
function checkPopoverValidity(element, expectedToBeShowing) {
|
|
3556
|
+
if (element.popover !== "auto" && element.popover !== "manual") {
|
|
3557
|
+
return false;
|
|
3558
|
+
}
|
|
3559
|
+
if (!element.isConnected) return false;
|
|
3560
|
+
if (expectedToBeShowing && getPopoverVisibilityState(element) !== "showing") {
|
|
3561
|
+
return false;
|
|
3562
|
+
}
|
|
3563
|
+
if (!expectedToBeShowing && getPopoverVisibilityState(element) !== "hidden") {
|
|
3564
|
+
return false;
|
|
3565
|
+
}
|
|
3566
|
+
if (element instanceof HTMLDialogElement && element.hasAttribute("open")) {
|
|
3567
|
+
return false;
|
|
3568
|
+
}
|
|
3569
|
+
if (document.fullscreenElement === element) return false;
|
|
3570
|
+
return true;
|
|
3571
|
+
}
|
|
3572
|
+
function getStackPosition(popover) {
|
|
3573
|
+
if (!popover) return 0;
|
|
3574
|
+
return Array.from(autoPopoverList.get(popover.ownerDocument) || []).indexOf(
|
|
3575
|
+
popover
|
|
3576
|
+
) + 1;
|
|
3577
|
+
}
|
|
3578
|
+
function topMostClickedPopover(target) {
|
|
3579
|
+
const clickedPopover = nearestInclusiveOpenPopover(target);
|
|
3580
|
+
const invokerPopover = nearestInclusiveTargetPopoverForInvoker(target);
|
|
3581
|
+
if (getStackPosition(clickedPopover) > getStackPosition(invokerPopover)) {
|
|
3582
|
+
return clickedPopover;
|
|
3583
|
+
}
|
|
3584
|
+
return invokerPopover;
|
|
3585
|
+
}
|
|
3586
|
+
function topMostAutoPopover(document2) {
|
|
3587
|
+
const documentPopovers = autoPopoverList.get(document2);
|
|
3588
|
+
for (const popover of documentPopovers || []) {
|
|
3589
|
+
if (!popover.isConnected) {
|
|
3590
|
+
documentPopovers.delete(popover);
|
|
3591
|
+
} else {
|
|
3592
|
+
return popover;
|
|
3593
|
+
}
|
|
3594
|
+
}
|
|
3595
|
+
return null;
|
|
3596
|
+
}
|
|
3597
|
+
function getRootNode(node) {
|
|
3598
|
+
if (typeof node.getRootNode === "function") {
|
|
3599
|
+
return node.getRootNode();
|
|
3600
|
+
}
|
|
3601
|
+
if (node.parentNode) return getRootNode(node.parentNode);
|
|
3602
|
+
return node;
|
|
3603
|
+
}
|
|
3604
|
+
function nearestInclusiveOpenPopover(node) {
|
|
3605
|
+
while (node) {
|
|
3606
|
+
if (node instanceof HTMLElement && node.popover === "auto" && visibilityState.get(node) === "showing") {
|
|
3607
|
+
return node;
|
|
3608
|
+
}
|
|
3609
|
+
node = node instanceof Element && node.assignedSlot || node.parentElement || getRootNode(node);
|
|
3610
|
+
if (node instanceof ShadowRoot$1) node = node.host;
|
|
3611
|
+
if (node instanceof Document) return;
|
|
3612
|
+
}
|
|
3613
|
+
}
|
|
3614
|
+
function nearestInclusiveTargetPopoverForInvoker(node) {
|
|
3615
|
+
while (node) {
|
|
3616
|
+
const nodePopover = node.popoverTargetElement;
|
|
3617
|
+
if (nodePopover instanceof HTMLElement) return nodePopover;
|
|
3618
|
+
node = node.parentElement || getRootNode(node);
|
|
3619
|
+
if (node instanceof ShadowRoot$1) node = node.host;
|
|
3620
|
+
if (node instanceof Document) return;
|
|
3621
|
+
}
|
|
3622
|
+
}
|
|
3623
|
+
function topMostPopoverAncestor(newPopover) {
|
|
3624
|
+
const popoverPositions = /* @__PURE__ */ new Map();
|
|
3625
|
+
let i = 0;
|
|
3626
|
+
for (const popover of autoPopoverList.get(newPopover.ownerDocument) || []) {
|
|
3627
|
+
popoverPositions.set(popover, i);
|
|
3628
|
+
i += 1;
|
|
3629
|
+
}
|
|
3630
|
+
popoverPositions.set(newPopover, i);
|
|
3631
|
+
i += 1;
|
|
3632
|
+
let topMostPopoverAncestor2 = null;
|
|
3633
|
+
function checkAncestor(candidate) {
|
|
3634
|
+
const candidateAncestor = nearestInclusiveOpenPopover(candidate);
|
|
3635
|
+
if (candidateAncestor === null) return null;
|
|
3636
|
+
const candidatePosition = popoverPositions.get(candidateAncestor);
|
|
3637
|
+
if (topMostPopoverAncestor2 === null || popoverPositions.get(topMostPopoverAncestor2) < candidatePosition) {
|
|
3638
|
+
topMostPopoverAncestor2 = candidateAncestor;
|
|
3639
|
+
}
|
|
3640
|
+
}
|
|
3641
|
+
checkAncestor(newPopover.parentElement || getRootNode(newPopover));
|
|
3642
|
+
return topMostPopoverAncestor2;
|
|
3643
|
+
}
|
|
3644
|
+
function isFocusable(focusTarget) {
|
|
3645
|
+
if (focusTarget.hidden || focusTarget instanceof ShadowRoot$1) return false;
|
|
3646
|
+
if (focusTarget instanceof HTMLButtonElement || focusTarget instanceof HTMLInputElement || focusTarget instanceof HTMLSelectElement || focusTarget instanceof HTMLTextAreaElement || focusTarget instanceof HTMLOptGroupElement || focusTarget instanceof HTMLOptionElement || focusTarget instanceof HTMLFieldSetElement) {
|
|
3647
|
+
if (focusTarget.disabled) return false;
|
|
3648
|
+
}
|
|
3649
|
+
if (focusTarget instanceof HTMLInputElement && focusTarget.type === "hidden") {
|
|
3650
|
+
return false;
|
|
3651
|
+
}
|
|
3652
|
+
if (focusTarget instanceof HTMLAnchorElement && focusTarget.href === "") {
|
|
3653
|
+
return false;
|
|
3654
|
+
}
|
|
3655
|
+
return typeof focusTarget.tabIndex === "number" && focusTarget.tabIndex !== -1;
|
|
3656
|
+
}
|
|
3657
|
+
function focusDelegate(focusTarget) {
|
|
3658
|
+
if (focusTarget.shadowRoot && focusTarget.shadowRoot.delegatesFocus !== true) {
|
|
3659
|
+
return null;
|
|
3660
|
+
}
|
|
3661
|
+
let whereToLook = focusTarget;
|
|
3662
|
+
if (whereToLook.shadowRoot) {
|
|
3663
|
+
whereToLook = whereToLook.shadowRoot;
|
|
3664
|
+
}
|
|
3665
|
+
let autoFocusDelegate = whereToLook.querySelector("[autofocus]");
|
|
3666
|
+
if (autoFocusDelegate) {
|
|
3667
|
+
return autoFocusDelegate;
|
|
3668
|
+
} else {
|
|
3669
|
+
const slots = whereToLook.querySelectorAll("slot");
|
|
3670
|
+
for (const slot of slots) {
|
|
3671
|
+
const assignedElements = slot.assignedElements({ flatten: true });
|
|
3672
|
+
for (const el of assignedElements) {
|
|
3673
|
+
if (el.hasAttribute("autofocus")) {
|
|
3674
|
+
return el;
|
|
3675
|
+
} else {
|
|
3676
|
+
autoFocusDelegate = el.querySelector("[autofocus]");
|
|
3677
|
+
if (autoFocusDelegate) {
|
|
3678
|
+
return autoFocusDelegate;
|
|
3679
|
+
}
|
|
3680
|
+
}
|
|
3681
|
+
}
|
|
3682
|
+
}
|
|
3683
|
+
}
|
|
3684
|
+
const walker = focusTarget.ownerDocument.createTreeWalker(
|
|
3685
|
+
whereToLook,
|
|
3686
|
+
NodeFilter.SHOW_ELEMENT
|
|
3687
|
+
);
|
|
3688
|
+
let descendant = walker.currentNode;
|
|
3689
|
+
while (descendant) {
|
|
3690
|
+
if (isFocusable(descendant)) {
|
|
3691
|
+
return descendant;
|
|
3692
|
+
}
|
|
3693
|
+
descendant = walker.nextNode();
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
function popoverFocusingSteps(subject) {
|
|
3697
|
+
focusDelegate(subject)?.focus();
|
|
3698
|
+
}
|
|
3699
|
+
var previouslyFocusedElements = /* @__PURE__ */ new WeakMap();
|
|
3700
|
+
function showPopover(element) {
|
|
3701
|
+
if (!checkPopoverValidity(element, false)) {
|
|
3702
|
+
return;
|
|
3703
|
+
}
|
|
3704
|
+
const document2 = element.ownerDocument;
|
|
3705
|
+
if (!element.dispatchEvent(
|
|
3706
|
+
new ToggleEvent("beforetoggle", {
|
|
3707
|
+
cancelable: true,
|
|
3708
|
+
oldState: "closed",
|
|
3709
|
+
newState: "open"
|
|
3710
|
+
})
|
|
3711
|
+
)) {
|
|
3712
|
+
return;
|
|
3713
|
+
}
|
|
3714
|
+
if (!checkPopoverValidity(element, false)) {
|
|
3715
|
+
return;
|
|
3716
|
+
}
|
|
3717
|
+
let shouldRestoreFocus = false;
|
|
3718
|
+
if (element.popover === "auto") {
|
|
3719
|
+
const originalType = element.getAttribute("popover");
|
|
3720
|
+
const ancestor = topMostPopoverAncestor(element) || document2;
|
|
3721
|
+
hideAllPopoversUntil(ancestor, false, true);
|
|
3722
|
+
if (originalType !== element.getAttribute("popover") || !checkPopoverValidity(element, false)) {
|
|
3723
|
+
return;
|
|
3724
|
+
}
|
|
3725
|
+
}
|
|
3726
|
+
if (!topMostAutoPopover(document2)) {
|
|
3727
|
+
shouldRestoreFocus = true;
|
|
3728
|
+
}
|
|
3729
|
+
previouslyFocusedElements.delete(element);
|
|
3730
|
+
const originallyFocusedElement = document2.activeElement;
|
|
3731
|
+
element.classList.add(":popover-open");
|
|
3732
|
+
visibilityState.set(element, "showing");
|
|
3733
|
+
if (!topLayerElements.has(document2)) {
|
|
3734
|
+
topLayerElements.set(document2, /* @__PURE__ */ new Set());
|
|
3735
|
+
}
|
|
3736
|
+
topLayerElements.get(document2).add(element);
|
|
3737
|
+
popoverFocusingSteps(element);
|
|
3738
|
+
if (element.popover === "auto") {
|
|
3739
|
+
if (!autoPopoverList.has(document2)) {
|
|
3740
|
+
autoPopoverList.set(document2, /* @__PURE__ */ new Set());
|
|
3741
|
+
}
|
|
3742
|
+
autoPopoverList.get(document2).add(element);
|
|
3743
|
+
setInvokerAriaExpanded(popoverInvoker.get(element), true);
|
|
3744
|
+
}
|
|
3745
|
+
if (shouldRestoreFocus && originallyFocusedElement && element.popover === "auto") {
|
|
3746
|
+
previouslyFocusedElements.set(element, originallyFocusedElement);
|
|
3747
|
+
}
|
|
3748
|
+
queuePopoverToggleEventTask(element, "closed", "open");
|
|
3749
|
+
}
|
|
3750
|
+
function hidePopover(element, focusPreviousElement = false, fireEvents = false) {
|
|
3751
|
+
if (!checkPopoverValidity(element, true)) {
|
|
3752
|
+
return;
|
|
3753
|
+
}
|
|
3754
|
+
const document2 = element.ownerDocument;
|
|
3755
|
+
if (element.popover === "auto") {
|
|
3756
|
+
hideAllPopoversUntil(element, focusPreviousElement, fireEvents);
|
|
3757
|
+
if (!checkPopoverValidity(element, true)) {
|
|
3758
|
+
return;
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
setInvokerAriaExpanded(popoverInvoker.get(element), false);
|
|
3762
|
+
popoverInvoker.delete(element);
|
|
3763
|
+
if (fireEvents) {
|
|
3764
|
+
element.dispatchEvent(
|
|
3765
|
+
new ToggleEvent("beforetoggle", {
|
|
3766
|
+
oldState: "open",
|
|
3767
|
+
newState: "closed"
|
|
3768
|
+
})
|
|
3769
|
+
);
|
|
3770
|
+
if (!checkPopoverValidity(element, true)) {
|
|
3771
|
+
return;
|
|
3772
|
+
}
|
|
3773
|
+
}
|
|
3774
|
+
topLayerElements.get(document2)?.delete(element);
|
|
3775
|
+
autoPopoverList.get(document2)?.delete(element);
|
|
3776
|
+
element.classList.remove(":popover-open");
|
|
3777
|
+
visibilityState.set(element, "hidden");
|
|
3778
|
+
if (fireEvents) {
|
|
3779
|
+
queuePopoverToggleEventTask(element, "open", "closed");
|
|
3780
|
+
}
|
|
3781
|
+
const previouslyFocusedElement = previouslyFocusedElements.get(element);
|
|
3782
|
+
if (previouslyFocusedElement) {
|
|
3783
|
+
previouslyFocusedElements.delete(element);
|
|
3784
|
+
if (focusPreviousElement) {
|
|
3785
|
+
previouslyFocusedElement.focus();
|
|
3786
|
+
}
|
|
3787
|
+
}
|
|
3788
|
+
}
|
|
3789
|
+
function closeAllOpenPopovers(document2, focusPreviousElement = false, fireEvents = false) {
|
|
3790
|
+
let popover = topMostAutoPopover(document2);
|
|
3791
|
+
while (popover) {
|
|
3792
|
+
hidePopover(popover, focusPreviousElement, fireEvents);
|
|
3793
|
+
popover = topMostAutoPopover(document2);
|
|
3794
|
+
}
|
|
3795
|
+
}
|
|
3796
|
+
function hideAllPopoversUntil(endpoint, focusPreviousElement, fireEvents) {
|
|
3797
|
+
const document2 = endpoint.ownerDocument || endpoint;
|
|
3798
|
+
if (endpoint instanceof Document) {
|
|
3799
|
+
return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);
|
|
3800
|
+
}
|
|
3801
|
+
let lastToHide = null;
|
|
3802
|
+
let foundEndpoint = false;
|
|
3803
|
+
for (const popover of autoPopoverList.get(document2) || []) {
|
|
3804
|
+
if (popover === endpoint) {
|
|
3805
|
+
foundEndpoint = true;
|
|
3806
|
+
} else if (foundEndpoint) {
|
|
3807
|
+
lastToHide = popover;
|
|
3808
|
+
break;
|
|
3809
|
+
}
|
|
3810
|
+
}
|
|
3811
|
+
if (!foundEndpoint) {
|
|
3812
|
+
return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);
|
|
3813
|
+
}
|
|
3814
|
+
while (lastToHide && getPopoverVisibilityState(lastToHide) === "showing" && autoPopoverList.get(document2)?.size) {
|
|
3815
|
+
hidePopover(lastToHide, focusPreviousElement, fireEvents);
|
|
3816
|
+
}
|
|
3817
|
+
}
|
|
3818
|
+
var popoverPointerDownTargets = /* @__PURE__ */ new WeakMap();
|
|
3819
|
+
function lightDismissOpenPopovers(event) {
|
|
3820
|
+
if (!event.isTrusted) return;
|
|
3821
|
+
const target = event.composedPath()[0];
|
|
3822
|
+
if (!target) return;
|
|
3823
|
+
const document2 = target.ownerDocument;
|
|
3824
|
+
const topMostPopover = topMostAutoPopover(document2);
|
|
3825
|
+
if (!topMostPopover) return;
|
|
3826
|
+
const ancestor = topMostClickedPopover(target);
|
|
3827
|
+
if (ancestor && event.type === "pointerdown") {
|
|
3828
|
+
popoverPointerDownTargets.set(document2, ancestor);
|
|
3829
|
+
} else if (event.type === "pointerup") {
|
|
3830
|
+
const sameTarget = popoverPointerDownTargets.get(document2) === ancestor;
|
|
3831
|
+
popoverPointerDownTargets.delete(document2);
|
|
3832
|
+
if (sameTarget) {
|
|
3833
|
+
hideAllPopoversUntil(ancestor || document2, false, true);
|
|
3834
|
+
}
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
var initialAriaExpandedValue = /* @__PURE__ */ new WeakMap();
|
|
3838
|
+
function setInvokerAriaExpanded(el, force = false) {
|
|
3839
|
+
if (!el) return;
|
|
3840
|
+
if (!initialAriaExpandedValue.has(el)) {
|
|
3841
|
+
initialAriaExpandedValue.set(el, el.getAttribute("aria-expanded"));
|
|
3842
|
+
}
|
|
3843
|
+
const popover = el.popoverTargetElement;
|
|
3844
|
+
if (popover instanceof HTMLElement && popover.popover === "auto") {
|
|
3845
|
+
el.setAttribute("aria-expanded", String(force));
|
|
3846
|
+
} else {
|
|
3847
|
+
const initialValue = initialAriaExpandedValue.get(el);
|
|
3848
|
+
if (!initialValue) {
|
|
3849
|
+
el.removeAttribute("aria-expanded");
|
|
3850
|
+
} else {
|
|
3851
|
+
el.setAttribute("aria-expanded", initialValue);
|
|
3852
|
+
}
|
|
3853
|
+
}
|
|
3854
|
+
}
|
|
3855
|
+
|
|
3856
|
+
// src/popover.ts
|
|
3857
|
+
var ShadowRoot2 = globalThis.ShadowRoot || function() {
|
|
3858
|
+
};
|
|
3859
|
+
function isSupported() {
|
|
3860
|
+
return typeof HTMLElement !== "undefined" && typeof HTMLElement.prototype === "object" && "popover" in HTMLElement.prototype;
|
|
3861
|
+
}
|
|
3862
|
+
function patchSelectorFn(object, name, mapper) {
|
|
3863
|
+
const original = object[name];
|
|
3864
|
+
Object.defineProperty(object, name, {
|
|
3865
|
+
value(selector) {
|
|
3866
|
+
return original.call(this, mapper(selector));
|
|
3867
|
+
}
|
|
3868
|
+
});
|
|
3869
|
+
}
|
|
3870
|
+
var nonEscapedPopoverSelector = /(^|[^\\]):popover-open\b/g;
|
|
3871
|
+
function hasLayerSupport() {
|
|
3872
|
+
return typeof globalThis.CSSLayerBlockRule === "function";
|
|
3873
|
+
}
|
|
3874
|
+
function getStyles() {
|
|
3875
|
+
const useLayer = hasLayerSupport();
|
|
3876
|
+
return `
|
|
3877
|
+
${useLayer ? "@layer popover-polyfill {" : ""}
|
|
3603
3878
|
:where([popover]) {
|
|
3604
3879
|
position: fixed;
|
|
3605
3880
|
z-index: 2147483647;
|
|
@@ -3617,6 +3892,14 @@ const computePosition = (reference, floating, options) => {
|
|
|
3617
3892
|
margin: auto;
|
|
3618
3893
|
}
|
|
3619
3894
|
|
|
3895
|
+
:where([popover]:not(.\\:popover-open)) {
|
|
3896
|
+
display: none;
|
|
3897
|
+
}
|
|
3898
|
+
|
|
3899
|
+
:where(dialog[popover].\\:popover-open) {
|
|
3900
|
+
display: block;
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3620
3903
|
:where(dialog[popover][open]) {
|
|
3621
3904
|
display: revert;
|
|
3622
3905
|
}
|
|
@@ -3651,11 +3934,229 @@ const computePosition = (reference, floating, options) => {
|
|
|
3651
3934
|
bottom: 0;
|
|
3652
3935
|
}
|
|
3653
3936
|
}
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3937
|
+
${useLayer ? "}" : ""}
|
|
3938
|
+
`;
|
|
3939
|
+
}
|
|
3940
|
+
var popoverStyleSheet = null;
|
|
3941
|
+
function injectStyles(root) {
|
|
3942
|
+
const styles = getStyles();
|
|
3943
|
+
if (popoverStyleSheet === null) {
|
|
3944
|
+
try {
|
|
3945
|
+
popoverStyleSheet = new CSSStyleSheet();
|
|
3946
|
+
popoverStyleSheet.replaceSync(styles);
|
|
3947
|
+
} catch {
|
|
3948
|
+
popoverStyleSheet = false;
|
|
3949
|
+
}
|
|
3657
3950
|
}
|
|
3658
|
-
|
|
3951
|
+
if (popoverStyleSheet === false) {
|
|
3952
|
+
const sheet = document.createElement("style");
|
|
3953
|
+
sheet.textContent = styles;
|
|
3954
|
+
if (root instanceof Document) {
|
|
3955
|
+
root.head.prepend(sheet);
|
|
3956
|
+
} else {
|
|
3957
|
+
root.prepend(sheet);
|
|
3958
|
+
}
|
|
3959
|
+
} else {
|
|
3960
|
+
root.adoptedStyleSheets = [popoverStyleSheet, ...root.adoptedStyleSheets];
|
|
3961
|
+
}
|
|
3962
|
+
}
|
|
3963
|
+
function apply() {
|
|
3964
|
+
if (typeof window === "undefined") return;
|
|
3965
|
+
window.ToggleEvent = window.ToggleEvent || ToggleEvent;
|
|
3966
|
+
function rewriteSelector(selector) {
|
|
3967
|
+
if (selector?.includes(":popover-open")) {
|
|
3968
|
+
selector = selector.replace(
|
|
3969
|
+
nonEscapedPopoverSelector,
|
|
3970
|
+
"$1.\\:popover-open"
|
|
3971
|
+
);
|
|
3972
|
+
}
|
|
3973
|
+
return selector;
|
|
3974
|
+
}
|
|
3975
|
+
patchSelectorFn(Document.prototype, "querySelector", rewriteSelector);
|
|
3976
|
+
patchSelectorFn(Document.prototype, "querySelectorAll", rewriteSelector);
|
|
3977
|
+
patchSelectorFn(Element.prototype, "querySelector", rewriteSelector);
|
|
3978
|
+
patchSelectorFn(Element.prototype, "querySelectorAll", rewriteSelector);
|
|
3979
|
+
patchSelectorFn(Element.prototype, "matches", rewriteSelector);
|
|
3980
|
+
patchSelectorFn(Element.prototype, "closest", rewriteSelector);
|
|
3981
|
+
patchSelectorFn(
|
|
3982
|
+
DocumentFragment.prototype,
|
|
3983
|
+
"querySelectorAll",
|
|
3984
|
+
rewriteSelector
|
|
3985
|
+
);
|
|
3986
|
+
Object.defineProperties(HTMLElement.prototype, {
|
|
3987
|
+
popover: {
|
|
3988
|
+
enumerable: true,
|
|
3989
|
+
configurable: true,
|
|
3990
|
+
get() {
|
|
3991
|
+
if (!this.hasAttribute("popover")) return null;
|
|
3992
|
+
const value = (this.getAttribute("popover") || "").toLowerCase();
|
|
3993
|
+
if (value === "" || value == "auto") return "auto";
|
|
3994
|
+
return "manual";
|
|
3995
|
+
},
|
|
3996
|
+
set(value) {
|
|
3997
|
+
if (value === null) {
|
|
3998
|
+
this.removeAttribute("popover");
|
|
3999
|
+
} else {
|
|
4000
|
+
this.setAttribute("popover", value);
|
|
4001
|
+
}
|
|
4002
|
+
}
|
|
4003
|
+
},
|
|
4004
|
+
showPopover: {
|
|
4005
|
+
enumerable: true,
|
|
4006
|
+
configurable: true,
|
|
4007
|
+
value() {
|
|
4008
|
+
showPopover(this);
|
|
4009
|
+
}
|
|
4010
|
+
},
|
|
4011
|
+
hidePopover: {
|
|
4012
|
+
enumerable: true,
|
|
4013
|
+
configurable: true,
|
|
4014
|
+
value() {
|
|
4015
|
+
hidePopover(this, true, true);
|
|
4016
|
+
}
|
|
4017
|
+
},
|
|
4018
|
+
togglePopover: {
|
|
4019
|
+
enumerable: true,
|
|
4020
|
+
configurable: true,
|
|
4021
|
+
value(force) {
|
|
4022
|
+
if (visibilityState.get(this) === "showing" && force === void 0 || force === false) {
|
|
4023
|
+
hidePopover(this, true, true);
|
|
4024
|
+
} else if (force === void 0 || force === true) {
|
|
4025
|
+
showPopover(this);
|
|
4026
|
+
}
|
|
4027
|
+
}
|
|
4028
|
+
}
|
|
4029
|
+
});
|
|
4030
|
+
const originalAttachShadow = Element.prototype.attachShadow;
|
|
4031
|
+
if (originalAttachShadow) {
|
|
4032
|
+
Object.defineProperties(Element.prototype, {
|
|
4033
|
+
attachShadow: {
|
|
4034
|
+
enumerable: true,
|
|
4035
|
+
configurable: true,
|
|
4036
|
+
writable: true,
|
|
4037
|
+
value(options) {
|
|
4038
|
+
const shadowRoot = originalAttachShadow.call(this, options);
|
|
4039
|
+
injectStyles(shadowRoot);
|
|
4040
|
+
return shadowRoot;
|
|
4041
|
+
}
|
|
4042
|
+
}
|
|
4043
|
+
});
|
|
4044
|
+
}
|
|
4045
|
+
const originalAttachInternals = HTMLElement.prototype.attachInternals;
|
|
4046
|
+
if (originalAttachInternals) {
|
|
4047
|
+
Object.defineProperties(HTMLElement.prototype, {
|
|
4048
|
+
attachInternals: {
|
|
4049
|
+
enumerable: true,
|
|
4050
|
+
configurable: true,
|
|
4051
|
+
writable: true,
|
|
4052
|
+
value() {
|
|
4053
|
+
const internals = originalAttachInternals.call(this);
|
|
4054
|
+
if (internals.shadowRoot) {
|
|
4055
|
+
injectStyles(internals.shadowRoot);
|
|
4056
|
+
}
|
|
4057
|
+
return internals;
|
|
4058
|
+
}
|
|
4059
|
+
}
|
|
4060
|
+
});
|
|
4061
|
+
}
|
|
4062
|
+
const popoverTargetAssociatedElements = /* @__PURE__ */ new WeakMap();
|
|
4063
|
+
function applyPopoverInvokerElementMixin(ElementClass) {
|
|
4064
|
+
Object.defineProperties(ElementClass.prototype, {
|
|
4065
|
+
popoverTargetElement: {
|
|
4066
|
+
enumerable: true,
|
|
4067
|
+
configurable: true,
|
|
4068
|
+
set(targetElement) {
|
|
4069
|
+
if (targetElement === null) {
|
|
4070
|
+
this.removeAttribute("popovertarget");
|
|
4071
|
+
popoverTargetAssociatedElements.delete(this);
|
|
4072
|
+
} else if (!(targetElement instanceof Element)) {
|
|
4073
|
+
throw new TypeError(
|
|
4074
|
+
`popoverTargetElement must be an element or null`
|
|
4075
|
+
);
|
|
4076
|
+
} else {
|
|
4077
|
+
this.setAttribute("popovertarget", "");
|
|
4078
|
+
popoverTargetAssociatedElements.set(this, targetElement);
|
|
4079
|
+
}
|
|
4080
|
+
},
|
|
4081
|
+
get() {
|
|
4082
|
+
if (this.localName !== "button" && this.localName !== "input") {
|
|
4083
|
+
return null;
|
|
4084
|
+
}
|
|
4085
|
+
if (this.localName === "input" && this.type !== "reset" && this.type !== "image" && this.type !== "button") {
|
|
4086
|
+
return null;
|
|
4087
|
+
}
|
|
4088
|
+
if (this.disabled) {
|
|
4089
|
+
return null;
|
|
4090
|
+
}
|
|
4091
|
+
if (this.form && this.type === "submit") {
|
|
4092
|
+
return null;
|
|
4093
|
+
}
|
|
4094
|
+
const targetElement = popoverTargetAssociatedElements.get(this);
|
|
4095
|
+
if (targetElement && targetElement.isConnected) {
|
|
4096
|
+
return targetElement;
|
|
4097
|
+
} else if (targetElement && !targetElement.isConnected) {
|
|
4098
|
+
popoverTargetAssociatedElements.delete(this);
|
|
4099
|
+
return null;
|
|
4100
|
+
}
|
|
4101
|
+
const root = getRootNode(this);
|
|
4102
|
+
const idref = this.getAttribute("popovertarget");
|
|
4103
|
+
if ((root instanceof Document || root instanceof ShadowRoot2) && idref) {
|
|
4104
|
+
return root.getElementById(idref) || null;
|
|
4105
|
+
}
|
|
4106
|
+
return null;
|
|
4107
|
+
}
|
|
4108
|
+
},
|
|
4109
|
+
popoverTargetAction: {
|
|
4110
|
+
enumerable: true,
|
|
4111
|
+
configurable: true,
|
|
4112
|
+
get() {
|
|
4113
|
+
const value = (this.getAttribute("popovertargetaction") || "").toLowerCase();
|
|
4114
|
+
if (value === "show" || value === "hide") return value;
|
|
4115
|
+
return "toggle";
|
|
4116
|
+
},
|
|
4117
|
+
set(value) {
|
|
4118
|
+
this.setAttribute("popovertargetaction", value);
|
|
4119
|
+
}
|
|
4120
|
+
}
|
|
4121
|
+
});
|
|
4122
|
+
}
|
|
4123
|
+
applyPopoverInvokerElementMixin(HTMLButtonElement);
|
|
4124
|
+
applyPopoverInvokerElementMixin(HTMLInputElement);
|
|
4125
|
+
const handleInvokerActivation = (event) => {
|
|
4126
|
+
const composedPath = event.composedPath();
|
|
4127
|
+
const target = composedPath[0];
|
|
4128
|
+
if (!(target instanceof Element) || target?.shadowRoot) {
|
|
4129
|
+
return;
|
|
4130
|
+
}
|
|
4131
|
+
const root = getRootNode(target);
|
|
4132
|
+
if (!(root instanceof ShadowRoot2 || root instanceof Document)) {
|
|
4133
|
+
return;
|
|
4134
|
+
}
|
|
4135
|
+
const invoker = composedPath.find(
|
|
4136
|
+
(el) => el.matches?.("[popovertargetaction],[popovertarget]")
|
|
4137
|
+
);
|
|
4138
|
+
if (invoker) {
|
|
4139
|
+
popoverTargetAttributeActivationBehavior(invoker);
|
|
4140
|
+
event.preventDefault();
|
|
4141
|
+
return;
|
|
4142
|
+
}
|
|
4143
|
+
};
|
|
4144
|
+
const onKeydown = (event) => {
|
|
4145
|
+
const key = event.key;
|
|
4146
|
+
const target = event.target;
|
|
4147
|
+
if (!event.defaultPrevented && target && (key === "Escape" || key === "Esc")) {
|
|
4148
|
+
hideAllPopoversUntil(target.ownerDocument, true, true);
|
|
4149
|
+
}
|
|
4150
|
+
};
|
|
4151
|
+
const addEventListeners = (root) => {
|
|
4152
|
+
root.addEventListener("click", handleInvokerActivation);
|
|
4153
|
+
root.addEventListener("keydown", onKeydown);
|
|
4154
|
+
root.addEventListener("pointerdown", lightDismissOpenPopovers);
|
|
4155
|
+
root.addEventListener("pointerup", lightDismissOpenPopovers);
|
|
4156
|
+
};
|
|
4157
|
+
addEventListeners(document);
|
|
4158
|
+
injectStyles(document);
|
|
4159
|
+
}
|
|
3659
4160
|
|
|
3660
4161
|
const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-palette-fg);background-color:var(--post-current-palette-bg);border:2px solid rgba(0,0,0,0);border-radius:4px}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--safe-space-cursor-x, 0) var(--safe-space-cursor-y, 0), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--safe-space-trigger-x-start, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-start, 0)), var(--safe-space-trigger-x-end, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-end, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}";
|
|
3661
4162
|
const PostPopovercontainerStyle0 = postPopovercontainerCss;
|
|
@@ -3670,35 +4171,6 @@ const PostPopovercontainer = class {
|
|
|
3670
4171
|
this.arrow = false;
|
|
3671
4172
|
this.safeSpace = undefined;
|
|
3672
4173
|
}
|
|
3673
|
-
static STATIC_SIDES = {
|
|
3674
|
-
top: 'bottom',
|
|
3675
|
-
right: 'left',
|
|
3676
|
-
bottom: 'top',
|
|
3677
|
-
left: 'right',
|
|
3678
|
-
};
|
|
3679
|
-
static PROPERTIES_TO_CLEAR = [
|
|
3680
|
-
'--safe-space-popover-x',
|
|
3681
|
-
'--safe-space-popover-y',
|
|
3682
|
-
'--safe-space-popover-x-start',
|
|
3683
|
-
'--safe-space-popover-x-end',
|
|
3684
|
-
'--safe-space-popover-y-start',
|
|
3685
|
-
'--safe-space-popover-y-end',
|
|
3686
|
-
'--safe-space-trigger-x',
|
|
3687
|
-
'--safe-space-trigger-y',
|
|
3688
|
-
'--safe-space-trigger-x-start',
|
|
3689
|
-
'--safe-space-trigger-x-end',
|
|
3690
|
-
'--safe-space-trigger-y-start',
|
|
3691
|
-
'--safe-space-trigger-y-end',
|
|
3692
|
-
];
|
|
3693
|
-
get host() { return index.getElement(this); }
|
|
3694
|
-
arrowRef;
|
|
3695
|
-
eventTarget;
|
|
3696
|
-
clearAutoUpdate;
|
|
3697
|
-
toggleTimeoutId;
|
|
3698
|
-
/**
|
|
3699
|
-
* Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
|
|
3700
|
-
*/
|
|
3701
|
-
postToggle;
|
|
3702
4174
|
/**
|
|
3703
4175
|
* Updates cursor position for safe space feature when popover is open.
|
|
3704
4176
|
* Sets CSS custom properties for dynamic styling of safe area.
|
|
@@ -3708,6 +4180,11 @@ const PostPopovercontainer = class {
|
|
|
3708
4180
|
this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
|
|
3709
4181
|
this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
|
|
3710
4182
|
}
|
|
4183
|
+
connectedCallback() {
|
|
4184
|
+
if (breakpoints.IS_BROWSER && !isSupported()) {
|
|
4185
|
+
apply();
|
|
4186
|
+
}
|
|
4187
|
+
}
|
|
3711
4188
|
componentDidLoad() {
|
|
3712
4189
|
this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
|
|
3713
4190
|
}
|
|
@@ -3902,11 +4379,32 @@ const PostPopovercontainer = class {
|
|
|
3902
4379
|
}
|
|
3903
4380
|
}
|
|
3904
4381
|
render() {
|
|
3905
|
-
return (index.h(index.Host, { key: '
|
|
4382
|
+
return (index.h(index.Host, { key: 'bbd430fbda9344c351d59f3d59cf84049992709b', "data-version": _package.version, popover: this.manualClose ? 'manual' : 'auto' }, index.h("div", { key: 'e359cac588d1dd1359c88f8e472828be845fdad7' }, this.arrow && (index.h("span", { key: '45329ae23722e93410132746e4e39e88e86cd310', class: "arrow", ref: el => {
|
|
3906
4383
|
this.arrowRef = el;
|
|
3907
|
-
} })), index.h("slot", { key: '
|
|
4384
|
+
} })), index.h("slot", { key: 'bb9b4b3d8e7c36f024883d02bd34766bf2e9de88' }))));
|
|
3908
4385
|
}
|
|
4386
|
+
get host() { return index.getElement(this); }
|
|
3909
4387
|
};
|
|
4388
|
+
PostPopovercontainer.STATIC_SIDES = {
|
|
4389
|
+
top: 'bottom',
|
|
4390
|
+
right: 'left',
|
|
4391
|
+
bottom: 'top',
|
|
4392
|
+
left: 'right',
|
|
4393
|
+
};
|
|
4394
|
+
PostPopovercontainer.PROPERTIES_TO_CLEAR = [
|
|
4395
|
+
'--safe-space-popover-x',
|
|
4396
|
+
'--safe-space-popover-y',
|
|
4397
|
+
'--safe-space-popover-x-start',
|
|
4398
|
+
'--safe-space-popover-x-end',
|
|
4399
|
+
'--safe-space-popover-y-start',
|
|
4400
|
+
'--safe-space-popover-y-end',
|
|
4401
|
+
'--safe-space-trigger-x',
|
|
4402
|
+
'--safe-space-trigger-y',
|
|
4403
|
+
'--safe-space-trigger-x-start',
|
|
4404
|
+
'--safe-space-trigger-x-end',
|
|
4405
|
+
'--safe-space-trigger-y-start',
|
|
4406
|
+
'--safe-space-trigger-y-end',
|
|
4407
|
+
];
|
|
3910
4408
|
PostPopovercontainer.style = PostPopovercontainerStyle0;
|
|
3911
4409
|
|
|
3912
4410
|
const postTogglebuttonCss = ":host{cursor:pointer;outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host(:focus-visible){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:focus-visible){outline-color:Highlight !important}}:host([aria-pressed=true]) ::slotted([data-showwhen=untoggled]){display:none}:host([aria-pressed=false]) ::slotted([data-showwhen=toggled]){display:none}";
|
|
@@ -3915,9 +4413,18 @@ const PostTogglebuttonStyle0 = postTogglebuttonCss;
|
|
|
3915
4413
|
const PostTogglebutton = class {
|
|
3916
4414
|
constructor(hostRef) {
|
|
3917
4415
|
index.registerInstance(this, hostRef);
|
|
4416
|
+
this.handleClick = () => {
|
|
4417
|
+
this.toggled = !this.toggled;
|
|
4418
|
+
};
|
|
4419
|
+
this.handleKeydown = (event) => {
|
|
4420
|
+
// perform a click when enter or spaced are pressed to mimic the button behavior
|
|
4421
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
4422
|
+
event.preventDefault(); // prevents the page from scrolling when space is pressed
|
|
4423
|
+
this.host.click();
|
|
4424
|
+
}
|
|
4425
|
+
};
|
|
3918
4426
|
this.toggled = false;
|
|
3919
4427
|
}
|
|
3920
|
-
get host() { return index.getElement(this); }
|
|
3921
4428
|
validateToggled() {
|
|
3922
4429
|
checkType.checkType(this, 'toggled', 'boolean');
|
|
3923
4430
|
}
|
|
@@ -3927,19 +4434,10 @@ const PostTogglebutton = class {
|
|
|
3927
4434
|
this.host.addEventListener('click', () => this.handleClick());
|
|
3928
4435
|
this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
|
|
3929
4436
|
}
|
|
3930
|
-
handleClick = () => {
|
|
3931
|
-
this.toggled = !this.toggled;
|
|
3932
|
-
};
|
|
3933
|
-
handleKeydown = (event) => {
|
|
3934
|
-
// perform a click when enter or spaced are pressed to mimic the button behavior
|
|
3935
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
3936
|
-
event.preventDefault(); // prevents the page from scrolling when space is pressed
|
|
3937
|
-
this.host.click();
|
|
3938
|
-
}
|
|
3939
|
-
};
|
|
3940
4437
|
render() {
|
|
3941
4438
|
return (index.h(index.Host, { key: '3a1429a9b67b8cfafae184fe0d060ee3a04974e0', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: '9ab1537574423740fc335fde732c699698acac25' })));
|
|
3942
4439
|
}
|
|
4440
|
+
get host() { return index.getElement(this); }
|
|
3943
4441
|
static get watchers() { return {
|
|
3944
4442
|
"toggled": ["validateToggled"]
|
|
3945
4443
|
}; }
|