@swisspost/design-system-components 9.0.0-next.33 → 9.0.0-next.35
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/get-root-8102fecd.js +17 -0
- package/dist/cjs/{index-d6bf2c66.js → index-b60129c4.js} +4 -4
- package/dist/cjs/index.cjs.js +25 -26
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/long-press-event-6e62d113.js +266 -0
- package/dist/cjs/{package-3562c265.js → package-19b74b08.js} +1 -1
- package/dist/cjs/{post-accordion-6c5681ba.js → post-accordion-785f602b.js} +5 -5
- package/dist/cjs/{post-accordion-item-05a78451.js → post-accordion-item-8e1c9bdb.js} +5 -5
- package/dist/cjs/post-accordion-item.cjs.entry.js +5 -4
- package/dist/cjs/post-accordion.cjs.entry.js +4 -3
- package/dist/cjs/{post-avatar-6710a77a.js → post-avatar-eecfd222.js} +6 -5
- package/dist/cjs/post-avatar.cjs.entry.js +4 -3
- package/dist/cjs/{post-back-to-top-d0662842.js → post-back-to-top-49a3abcb.js} +9 -9
- package/dist/cjs/post-back-to-top.cjs.entry.js +4 -3
- package/dist/cjs/{post-banner-bd97db9c.js → post-banner-249ec2ff.js} +5 -9
- package/dist/cjs/post-banner.cjs.entry.js +4 -3
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -3
- package/dist/cjs/{post-breadcrumb-36ab841c.js → post-breadcrumbs-f51590d1.js} +39 -31
- package/dist/cjs/post-breadcrumbs.cjs.entry.js +13 -0
- package/dist/cjs/post-card-control-d0a47015.js +269 -0
- package/dist/cjs/post-card-control.cjs.entry.js +4 -3
- package/dist/cjs/post-closebutton_15.cjs.entry.js +5 -5
- package/dist/cjs/{post-collapsible-trigger-6601c554.js → post-collapsible-trigger-4784edb2.js} +24 -41
- package/dist/cjs/post-collapsible_2.cjs.entry.js +5 -5
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/{post-footer-23699aef.js → post-footer-9d078cb1.js} +11 -11
- package/dist/cjs/post-footer.cjs.entry.js +4 -4
- package/dist/cjs/{post-linkarea-8e5e1a9f.js → post-linkarea-e4ce3960.js} +5 -5
- package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
- package/dist/cjs/{post-menu-item-8dd94792.js → post-menu-item-e9ebd27a.js} +4 -4
- package/dist/cjs/post-popover-5db53ead.js +112 -0
- package/dist/cjs/post-popover.cjs.entry.js +5 -4
- package/dist/cjs/{post-rating-ef592484.js → post-rating-98a06828.js} +5 -15
- package/dist/cjs/post-rating.cjs.entry.js +3 -3
- package/dist/cjs/{post-tab-header-d785e7fc.js → post-tab-header-c8e92f77.js} +6 -5
- package/dist/cjs/post-tab-header.cjs.entry.js +4 -3
- package/dist/cjs/{post-tab-panel-41ea371e.js → post-tab-panel-d966ee38.js} +4 -4
- package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
- package/dist/cjs/{post-tabs-c6f00130.js → post-tabs-83d99b69.js} +5 -12
- package/dist/cjs/post-tabs.cjs.entry.js +4 -3
- package/dist/cjs/post-tag-a1d78e75.js +47 -0
- package/dist/cjs/post-tag.cjs.entry.js +3 -3
- package/dist/cjs/{post-togglebutton-02c56b7b.js → post-togglebutton-e4651aad.js} +939 -464
- package/dist/cjs/{post-tooltip-3176e280.js → post-tooltip-bb862241.js} +39 -296
- package/dist/cjs/post-tooltip.cjs.entry.js +5 -4
- package/dist/collection/animations/collapse.js +3 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/post-accordion/post-accordion.js +1 -3
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +0 -2
- package/dist/collection/components/post-avatar/post-avatar.css +1 -3
- package/dist/collection/components/post-avatar/post-avatar.js +3 -4
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +6 -8
- package/dist/collection/components/post-banner/post-banner.css +1 -3
- package/dist/collection/components/post-banner/post-banner.js +0 -6
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +0 -2
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -0
- package/dist/collection/components/{post-breadcrumb/post-breadcrumb.js → post-breadcrumbs/post-breadcrumbs.js} +24 -27
- package/dist/collection/components/post-card-control/post-card-control.css +1 -3
- 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 +15 -28
- 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 +13 -22
- package/dist/collection/components/post-icon/post-icon.js +4 -6
- package/dist/collection/components/post-language-option/post-language-option.css +1 -3
- package/dist/collection/components/post-language-option/post-language-option.js +1 -10
- package/dist/collection/components/post-language-switch/post-language-switch.js +7 -19
- 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.css +1 -3
- 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.js +20 -30
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +36 -37
- package/dist/collection/components/post-menu/post-menu.css +1 -3
- package/dist/collection/components/post-menu/post-menu.js +47 -55
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -15
- package/dist/collection/components/post-popover/post-popover.css +1 -3
- package/dist/collection/components/post-popover/post-popover.js +13 -13
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +30 -33
- package/dist/collection/components/post-rating/post-rating.css +1 -3
- package/dist/collection/components/post-rating/post-rating.js +1 -12
- package/dist/collection/components/post-tab-header/post-tab-header.css +1 -3
- 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.css +1 -3
- package/dist/collection/components/post-tag/post-tag.js +1 -2
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +10 -11
- package/dist/collection/components/post-tooltip/post-tooltip.js +37 -33
- package/dist/collection/index.js +1 -1
- 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/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/get-root.js +7 -1
- package/dist/components/index.js +1 -1
- package/dist/components/long-press-event.js +264 -0
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +3 -3
- package/dist/components/post-accordion2.js +3 -3
- package/dist/components/post-avatar2.js +5 -4
- package/dist/components/post-back-to-top2.js +8 -8
- package/dist/components/post-banner2.js +3 -7
- package/dist/components/post-breadcrumb-item2.js +2 -2
- package/dist/components/{post-breadcrumb.d.ts → post-breadcrumbs.d.ts} +4 -4
- package/dist/components/post-breadcrumbs.js +6 -0
- package/dist/components/{post-breadcrumb2.js → post-breadcrumbs2.js} +41 -33
- package/dist/components/post-card-control2.js +26 -40
- package/dist/components/post-closebutton2.js +8 -3
- package/dist/components/post-collapsible-trigger2.js +19 -31
- package/dist/components/post-collapsible2.js +9 -12
- package/dist/components/post-footer2.js +8 -8
- package/dist/components/post-header2.js +15 -23
- package/dist/components/post-icon2.js +5 -5
- package/dist/components/post-language-option2.js +4 -11
- package/dist/components/post-language-switch2.js +9 -18
- package/dist/components/post-linkarea2.js +5 -4
- package/dist/components/post-list-item2.js +2 -2
- package/dist/components/post-list2.js +3 -4
- package/dist/components/post-logo2.js +3 -2
- package/dist/components/post-mainnavigation2.js +94 -182
- package/dist/components/post-megadropdown-trigger2.js +38 -37
- package/dist/components/post-megadropdown2.js +21 -30
- package/dist/components/post-menu-trigger2.js +15 -15
- package/dist/components/post-menu2.js +50 -56
- package/dist/components/post-popover2.js +15 -13
- package/dist/components/post-popovercontainer2.js +638 -36
- package/dist/components/post-rating2.js +3 -13
- package/dist/components/post-tab-header2.js +5 -4
- package/dist/components/post-tab-panel2.js +3 -3
- package/dist/components/post-tabs2.js +3 -10
- package/dist/components/post-tag2.js +2 -2
- package/dist/components/post-togglebutton2.js +12 -11
- package/dist/components/post-tooltip2.js +37 -294
- package/dist/docs.json +107 -101
- 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/get-root-1b1af46f.js +15 -0
- package/dist/esm/{index-3419e46d.js → index-f4d19816.js} +4 -4
- package/dist/esm/index.js +24 -25
- package/dist/esm/loader.js +3 -3
- package/dist/esm/long-press-event-04d24397.js +264 -0
- package/dist/esm/package-791f9257.js +3 -0
- package/dist/esm/{post-accordion-024451fa.js → post-accordion-4de9963b.js} +5 -5
- package/dist/esm/{post-accordion-item-19b996d1.js → post-accordion-item-2cbb32f9.js} +5 -5
- package/dist/esm/post-accordion-item.entry.js +5 -4
- package/dist/esm/post-accordion.entry.js +4 -3
- package/dist/esm/{post-avatar-33aed045.js → post-avatar-0aaefe87.js} +6 -5
- package/dist/esm/post-avatar.entry.js +4 -3
- package/dist/esm/{post-back-to-top-7dd43c3b.js → post-back-to-top-24eef0a0.js} +9 -9
- package/dist/esm/post-back-to-top.entry.js +4 -3
- package/dist/esm/{post-banner-28d18721.js → post-banner-1f37f9f0.js} +5 -9
- package/dist/esm/post-banner.entry.js +4 -3
- package/dist/esm/post-breadcrumb-item_2.entry.js +4 -3
- package/dist/esm/{post-breadcrumb-d86fae7b.js → post-breadcrumbs-2fcccf9f.js} +39 -31
- package/dist/esm/post-breadcrumbs.entry.js +5 -0
- package/dist/esm/post-card-control-75e8d336.js +267 -0
- package/dist/esm/post-card-control.entry.js +4 -3
- package/dist/esm/post-closebutton_15.entry.js +5 -5
- package/dist/esm/{post-collapsible-trigger-b1612866.js → post-collapsible-trigger-08b79162.js} +24 -41
- package/dist/esm/post-collapsible_2.entry.js +5 -5
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/{post-footer-2ed5e520.js → post-footer-01677010.js} +11 -11
- package/dist/esm/post-footer.entry.js +4 -4
- package/dist/esm/{post-linkarea-802bf774.js → post-linkarea-4a178d51.js} +5 -5
- package/dist/esm/post-linkarea.entry.js +3 -3
- package/dist/esm/{post-menu-item-d97611d8.js → post-menu-item-199477fd.js} +4 -4
- package/dist/esm/post-popover-2a6a13d8.js +110 -0
- package/dist/esm/post-popover.entry.js +5 -4
- package/dist/esm/{post-rating-e1ac47ce.js → post-rating-fcf24658.js} +5 -15
- package/dist/esm/post-rating.entry.js +3 -3
- package/dist/esm/{post-tab-header-06dcbf7f.js → post-tab-header-aaa2f0b8.js} +6 -5
- package/dist/esm/post-tab-header.entry.js +4 -3
- package/dist/esm/{post-tab-panel-75932601.js → post-tab-panel-91f35995.js} +4 -4
- package/dist/esm/post-tab-panel.entry.js +3 -3
- package/dist/esm/{post-tabs-3ef2ea23.js → post-tabs-8657f2d6.js} +5 -12
- package/dist/esm/post-tabs.entry.js +4 -3
- package/dist/esm/post-tag-19141551.js +45 -0
- package/dist/esm/post-tag.entry.js +3 -3
- package/dist/esm/{post-togglebutton-db251030.js → post-togglebutton-40cac8c2.js} +939 -464
- package/dist/esm/{post-tooltip-c256d714.js → post-tooltip-165eb353.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-01544069.js +1 -0
- package/dist/post-components/p-02d0c370.js +1 -0
- package/dist/post-components/p-03169497.js +1 -0
- package/dist/post-components/p-06bf6b81.entry.js +1 -0
- package/dist/post-components/p-0ca39161.entry.js +1 -0
- package/dist/post-components/p-0f398677.js +1 -0
- package/dist/post-components/p-10f9d25e.js +1 -0
- package/dist/post-components/p-15da2cf9.js +1 -0
- package/dist/post-components/p-1622ed8c.js +1 -0
- package/dist/post-components/p-1d5e275b.js +1 -0
- package/dist/post-components/p-2a90f66c.js +1 -0
- package/dist/post-components/p-32aa68ac.entry.js +1 -0
- package/dist/post-components/p-3d30acad.entry.js +1 -0
- package/dist/post-components/p-48cd3157.js +1 -0
- package/dist/post-components/p-56da2097.entry.js +1 -0
- package/dist/post-components/p-65824049.entry.js +1 -0
- package/dist/post-components/p-6b31a76a.js +1 -0
- package/dist/post-components/p-722ffaae.js +1 -0
- package/dist/post-components/p-7c6f4c29.js +1 -0
- package/dist/post-components/p-817effd4.js +1 -0
- package/dist/post-components/p-8579ac14.js +8 -0
- package/dist/post-components/p-86859a7b.entry.js +1 -0
- package/dist/post-components/p-8db32dab.js +8 -0
- package/dist/post-components/p-936682bc.entry.js +1 -0
- package/dist/post-components/p-9597127a.js +1 -0
- package/dist/post-components/p-9818ad52.entry.js +1 -0
- package/dist/post-components/{p-5c758f41.js → p-9e461613.js} +1 -1
- package/dist/post-components/p-9ec20111.js +1 -0
- package/dist/post-components/p-a1a39a27.js +1 -0
- package/dist/post-components/p-a1bae666.entry.js +1 -0
- package/dist/post-components/p-a27907cc.js +1 -0
- package/dist/post-components/p-a77a6729.entry.js +1 -0
- package/dist/post-components/p-ab3ab29b.js +1 -0
- package/dist/post-components/p-ad9ffd61.entry.js +1 -0
- package/dist/post-components/p-b8241188.js +1 -0
- package/dist/post-components/p-bece917c.js +1 -0
- package/dist/post-components/p-bf3c80a3.entry.js +1 -0
- package/dist/post-components/p-cd8aef45.entry.js +1 -0
- package/dist/post-components/p-cdd3a06a.entry.js +1 -0
- package/dist/post-components/p-dc702c39.entry.js +1 -0
- package/dist/post-components/p-e077239a.entry.js +1 -0
- package/dist/post-components/p-e653daec.entry.js +1 -0
- package/dist/post-components/p-e8861c07.entry.js +1 -0
- package/dist/post-components/p-f2478a7d.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-breadcrumb/post-breadcrumb.d.ts → post-breadcrumbs/post-breadcrumbs.d.ts} +4 -4
- 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 +4 -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 +2 -5
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +14 -39
- package/dist/types/components/post-menu/post-menu.d.ts +3 -3
- package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +1 -1
- package/dist/types/components/post-popover/post-popover.d.ts +6 -4
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +1 -1
- package/dist/types/components/post-tag/post-tag.d.ts +1 -1
- package/dist/types/components/post-tooltip/post-tooltip.d.ts +9 -4
- package/dist/types/components.d.ts +35 -35
- package/dist/types/index.d.ts +1 -1
- package/dist/types/popover-fn.d.ts +11 -0
- package/dist/types/utils/environment.d.ts +2 -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/get-root.js +7 -1
- package/loaders/index.d.ts +2 -2
- package/loaders/index.js +4 -4
- package/loaders/long-press-event.js +264 -0
- package/loaders/package.js +1 -1
- package/loaders/post-accordion-item2.js +3 -3
- package/loaders/post-accordion.js +3 -3
- package/loaders/post-avatar.js +5 -4
- package/loaders/post-back-to-top.js +8 -8
- package/loaders/post-banner.js +3 -7
- package/loaders/post-breadcrumb-item2.js +2 -2
- package/loaders/{post-breadcrumb.d.ts → post-breadcrumbs.d.ts} +4 -4
- package/loaders/{post-breadcrumb.js → post-breadcrumbs.js} +42 -34
- package/loaders/post-card-control.js +26 -40
- package/loaders/post-closebutton.js +8 -3
- package/loaders/post-collapsible-trigger2.js +19 -31
- package/loaders/post-collapsible2.js +9 -12
- package/loaders/post-footer.js +8 -8
- package/loaders/post-header.js +15 -23
- package/loaders/post-icon2.js +5 -5
- package/loaders/post-language-option.js +4 -11
- package/loaders/post-language-switch.js +9 -18
- package/loaders/post-linkarea.js +5 -4
- package/loaders/post-list-item.js +2 -2
- package/loaders/post-list.js +3 -4
- package/loaders/post-logo.js +3 -2
- package/loaders/post-mainnavigation.js +94 -182
- package/loaders/post-megadropdown-trigger.js +38 -37
- package/loaders/post-megadropdown.js +21 -30
- package/loaders/post-menu-trigger2.js +15 -15
- package/loaders/post-menu2.js +50 -56
- package/loaders/post-popover.js +15 -13
- package/loaders/post-popovercontainer2.js +638 -36
- package/loaders/post-rating.js +3 -13
- package/loaders/post-tab-header.js +5 -4
- package/loaders/post-tab-panel.js +3 -3
- package/loaders/post-tabs.js +3 -10
- package/loaders/post-tag.js +2 -2
- package/loaders/post-togglebutton.js +12 -11
- package/loaders/post-tooltip.js +37 -294
- package/package.json +20 -15
- package/dist/cjs/debounce-158fd76f.js +0 -13
- package/dist/cjs/get-root-7a3498ef.js +0 -11
- package/dist/cjs/post-breadcrumb.cjs.entry.js +0 -13
- package/dist/cjs/post-card-control-155fb433.js +0 -283
- package/dist/cjs/post-popover-858cbd12.js +0 -110
- package/dist/cjs/post-tag-d1a1176c.js +0 -47
- package/dist/collection/components/post-breadcrumb/post-breadcrumb.css +0 -3
- package/dist/components/debounce.js +0 -11
- package/dist/components/post-breadcrumb.js +0 -6
- package/dist/esm/debounce-e54c7131.js +0 -11
- package/dist/esm/get-root-7af2e0d1.js +0 -9
- package/dist/esm/package-da68ab5a.js +0 -3
- package/dist/esm/post-breadcrumb.entry.js +0 -5
- package/dist/esm/post-card-control-aa043898.js +0 -281
- package/dist/esm/post-popover-e51a7a18.js +0 -108
- package/dist/esm/post-tag-a3b989e0.js +0 -45
- package/dist/post-components/p-1376c653.js +0 -1
- package/dist/post-components/p-13835969.js +0 -1
- package/dist/post-components/p-13fdbaf6.entry.js +0 -1
- package/dist/post-components/p-1e2169ae.entry.js +0 -1
- package/dist/post-components/p-23e4c270.entry.js +0 -1
- package/dist/post-components/p-2641e06b.js +0 -1
- package/dist/post-components/p-2d3b16c7.js +0 -1
- package/dist/post-components/p-33c35e15.js +0 -1
- package/dist/post-components/p-3b247d71.entry.js +0 -1
- package/dist/post-components/p-42a5fdf8.js +0 -1
- package/dist/post-components/p-4ed7bab6.js +0 -1
- package/dist/post-components/p-5aeb3656.js +0 -1
- package/dist/post-components/p-5c518421.js +0 -1
- package/dist/post-components/p-6db1a2e0.entry.js +0 -1
- package/dist/post-components/p-6fe98184.entry.js +0 -1
- package/dist/post-components/p-7d731077.entry.js +0 -1
- package/dist/post-components/p-7ee47334.entry.js +0 -1
- package/dist/post-components/p-8223e97b.js +0 -1
- package/dist/post-components/p-8a8376d0.js +0 -1
- package/dist/post-components/p-8bb828cf.entry.js +0 -1
- package/dist/post-components/p-8e55ddd2.js +0 -1
- package/dist/post-components/p-9681efce.js +0 -1
- package/dist/post-components/p-96a59372.entry.js +0 -1
- package/dist/post-components/p-9748a355.js +0 -1
- package/dist/post-components/p-99c8fd43.entry.js +0 -1
- package/dist/post-components/p-ac042f7a.entry.js +0 -1
- package/dist/post-components/p-c34cacb7.js +0 -1
- package/dist/post-components/p-c3a970c5.js +0 -1
- package/dist/post-components/p-c4651d32.entry.js +0 -1
- package/dist/post-components/p-c9b61d31.entry.js +0 -1
- package/dist/post-components/p-d16dd7f9.js +0 -1
- package/dist/post-components/p-d81c5908.entry.js +0 -1
- package/dist/post-components/p-dbe31632.js +0 -1
- package/dist/post-components/p-e1baac59.js +0 -1
- package/dist/post-components/p-e2294014.js +0 -15
- package/dist/post-components/p-e8ff8122.js +0 -1
- package/dist/post-components/p-ed78d04a.entry.js +0 -1
- package/dist/post-components/p-f1c0924a.js +0 -1
- package/dist/post-components/p-f1db96d0.entry.js +0 -1
- package/dist/post-components/p-f7aa917f.entry.js +0 -1
- package/dist/post-components/p-f96b80cc.entry.js +0 -1
- package/dist/post-components/p-fc91cbc2.js +0 -1
- package/dist/post-components/p-fd78716d.js +0 -1
- package/loaders/debounce.js +0 -11
|
@@ -1,25 +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-19b74b08.js');
|
|
5
5
|
const slide = require('./slide-cd1f09b3.js');
|
|
6
6
|
const eventGuard = require('./event-guard-efabc84f.js');
|
|
7
|
+
const breakpoints = require('./breakpoints-cdf1b747.js');
|
|
7
8
|
const index$1 = require('./index-23e36ff7.js');
|
|
8
9
|
const checkNonEmpty = require('./check-non-empty-bd99d236.js');
|
|
9
10
|
const checkType = require('./check-type-cdbf6d29.js');
|
|
10
11
|
const index_browser = require('./index.browser-2f65f583.js');
|
|
11
|
-
const
|
|
12
|
-
|
|
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;
|
|
13
50
|
|
|
14
51
|
const PostClosebutton = class {
|
|
15
52
|
constructor(hostRef) {
|
|
16
53
|
index.registerInstance(this, hostRef);
|
|
17
54
|
}
|
|
18
|
-
get host() { return index.getElement(this); }
|
|
19
55
|
render() {
|
|
20
|
-
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' })))));
|
|
21
57
|
}
|
|
58
|
+
get host() { return index.getElement(this); }
|
|
22
59
|
};
|
|
60
|
+
PostClosebutton.style = PostClosebuttonStyle0;
|
|
23
61
|
|
|
24
62
|
/* eslint-disable no-undefined,no-param-reassign,no-shadow */
|
|
25
63
|
|
|
@@ -155,51 +193,10 @@ function throttle (delay, callback, options) {
|
|
|
155
193
|
return wrapper;
|
|
156
194
|
}
|
|
157
195
|
|
|
158
|
-
const
|
|
159
|
-
'button',
|
|
160
|
-
'input:not([type="hidden"])',
|
|
161
|
-
'[tabindex]',
|
|
162
|
-
'select',
|
|
163
|
-
'textarea',
|
|
164
|
-
'[contenteditable]',
|
|
165
|
-
'a[href]',
|
|
166
|
-
'iframe',
|
|
167
|
-
'audio[controls]',
|
|
168
|
-
'video[controls]',
|
|
169
|
-
'area[href]',
|
|
170
|
-
'details > summary:first-of-type',
|
|
171
|
-
].join(',')})`;
|
|
172
|
-
const focusDisablingSelector = `:where(${[
|
|
173
|
-
'[inert]',
|
|
174
|
-
'[inert] *',
|
|
175
|
-
':disabled',
|
|
176
|
-
'dialog:not([open]) *',
|
|
177
|
-
'[popover]:not(:popover-open) *',
|
|
178
|
-
'details:not([open]) > *:not(details > summary:first-of-type)',
|
|
179
|
-
'details:not([open]) > *:not(details > summary:first-of-type) *',
|
|
180
|
-
'[tabindex^="-"]',
|
|
181
|
-
'[hidden]:not([hidden="false"])',
|
|
182
|
-
].join(',')})`;
|
|
183
|
-
function getFocusableChildren(element) {
|
|
184
|
-
const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
|
|
185
|
-
const visibleFocusableChildren = Array.from(focusableChildren).filter(child => {
|
|
186
|
-
const style = window.getComputedStyle(child.parentElement);
|
|
187
|
-
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
188
|
-
});
|
|
189
|
-
return visibleFocusableChildren;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
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));--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}}";
|
|
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}}";
|
|
193
197
|
const PostHeaderStyle0 = postHeaderCss;
|
|
194
198
|
|
|
195
199
|
const PostHeader = class {
|
|
196
|
-
firstFocusableEl;
|
|
197
|
-
lastFocusableEl;
|
|
198
|
-
mobileMenu;
|
|
199
|
-
mobileMenuAnimation;
|
|
200
|
-
throttledResize = throttle(50, () => this.handleResize());
|
|
201
|
-
scrollParentResizeObserver;
|
|
202
|
-
localHeaderResizeObserver;
|
|
203
200
|
get scrollParent() {
|
|
204
201
|
const frozenScrollParent = document.querySelector('[data-post-scroll-locked]');
|
|
205
202
|
if (frozenScrollParent)
|
|
@@ -214,7 +211,6 @@ const PostHeader = class {
|
|
|
214
211
|
}
|
|
215
212
|
return document.body;
|
|
216
213
|
}
|
|
217
|
-
get host() { return index.getElement(this); }
|
|
218
214
|
lockBody(newValue, _oldValue, propName) {
|
|
219
215
|
const scrollParent = this.scrollParent;
|
|
220
216
|
const mobileMenuExtended = propName === 'mobileMenuExtended' ? newValue : this.mobileMenuExtended;
|
|
@@ -227,13 +223,18 @@ const PostHeader = class {
|
|
|
227
223
|
this.host.removeEventListener('keydown', this.keyboardHandler);
|
|
228
224
|
}
|
|
229
225
|
}
|
|
230
|
-
/**
|
|
231
|
-
* An event emitted when the device has changed
|
|
232
|
-
*/
|
|
233
|
-
postUpdateDevice;
|
|
234
226
|
constructor(hostRef) {
|
|
235
227
|
index.registerInstance(this, hostRef);
|
|
236
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
|
+
};
|
|
237
238
|
this.device = null;
|
|
238
239
|
this.mobileMenuExtended = false;
|
|
239
240
|
this.megadropdownOpen = false;
|
|
@@ -255,10 +256,12 @@ const PostHeader = class {
|
|
|
255
256
|
document.addEventListener('postToggleMegadropdown', this.megedropdownStateHandler);
|
|
256
257
|
this.host.addEventListener('click', this.handleLinkClick);
|
|
257
258
|
this.handleResize();
|
|
258
|
-
this.handleScrollEvent();
|
|
259
259
|
this.handleScrollParentResize();
|
|
260
260
|
this.lockBody(false, this.mobileMenuExtended, 'mobileMenuExtended');
|
|
261
261
|
}
|
|
262
|
+
componentWillRender() {
|
|
263
|
+
this.handleScrollEvent();
|
|
264
|
+
}
|
|
262
265
|
componentDidRender() {
|
|
263
266
|
this.getFocusableElements();
|
|
264
267
|
this.handleLocalHeaderResize();
|
|
@@ -304,14 +307,6 @@ const PostHeader = class {
|
|
|
304
307
|
});
|
|
305
308
|
}
|
|
306
309
|
}
|
|
307
|
-
megedropdownStateHandler = (event) => {
|
|
308
|
-
eventGuard.eventGuard(this.host, event, {
|
|
309
|
-
targetLocalName: 'post-megadropdown',
|
|
310
|
-
delegatorSelector: 'post-header',
|
|
311
|
-
}, () => {
|
|
312
|
-
this.megadropdownOpen = event.detail.isVisible;
|
|
313
|
-
});
|
|
314
|
-
};
|
|
315
310
|
// Get all the focusable elements in the post-header mobile menu
|
|
316
311
|
getFocusableElements() {
|
|
317
312
|
// Get elements in the correct order (different as the DOM order)
|
|
@@ -423,8 +418,9 @@ const PostHeader = class {
|
|
|
423
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" }))))));
|
|
424
419
|
}
|
|
425
420
|
render() {
|
|
426
|
-
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()));
|
|
427
422
|
}
|
|
423
|
+
get host() { return index.getElement(this); }
|
|
428
424
|
static get watchers() { return {
|
|
429
425
|
"device": ["lockBody"],
|
|
430
426
|
"mobileMenuExtended": ["lockBody"]
|
|
@@ -456,8 +452,6 @@ const PostIcon = class {
|
|
|
456
452
|
this.rotate = null;
|
|
457
453
|
this.scale = null;
|
|
458
454
|
}
|
|
459
|
-
isSSR = typeof window === 'undefined';
|
|
460
|
-
get host() { return index.getElement(this); }
|
|
461
455
|
validateAnimation(newValue = this.animation) {
|
|
462
456
|
if (newValue !== undefined)
|
|
463
457
|
index$1.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
|
|
@@ -488,7 +482,7 @@ const PostIcon = class {
|
|
|
488
482
|
// the first definition object which defines a domain, will be used to set the domain of the file url
|
|
489
483
|
// the first definition object which defines a slug, will be used to set the slug of the file url
|
|
490
484
|
const urlDefinitions = [this.getUrlDefinition(this.base, 'both')];
|
|
491
|
-
if (
|
|
485
|
+
if (breakpoints.IS_BROWSER) {
|
|
492
486
|
urlDefinitions.push(this.getUrlDefinition(document.head
|
|
493
487
|
.querySelector('meta[name="design-system-settings"][data-post-icon-base]')
|
|
494
488
|
?.getAttribute('data-post-icon-base'), 'relative'));
|
|
@@ -552,8 +546,9 @@ const PostIcon = class {
|
|
|
552
546
|
this.validateAnimation();
|
|
553
547
|
}
|
|
554
548
|
render() {
|
|
555
|
-
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() })));
|
|
556
550
|
}
|
|
551
|
+
get host() { return index.getElement(this); }
|
|
557
552
|
static get watchers() { return {
|
|
558
553
|
"animation": ["validateAnimation"],
|
|
559
554
|
"base": ["validateBase"],
|
|
@@ -566,7 +561,7 @@ const PostIcon = class {
|
|
|
566
561
|
};
|
|
567
562
|
PostIcon.style = PostIconStyle0;
|
|
568
563
|
|
|
569
|
-
const postLanguageOptionCss = "
|
|
564
|
+
const postLanguageOptionCss = "post-language-option{display:inline-block}post-language-option 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}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option button{background-color:ButtonFace !important}post-language-option button:hover{background-color:Highlight !important}}post-language-option a{color:var(--post-scheme-color-surface-default-fg);text-decoration:none}post-language-option :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:2px;text-transform:uppercase}post-language-option :is(a,button){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-option :is(a,button):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-option :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-option :is(a,button):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-option :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-option:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-option:where([variant=list]) :is(a,button):hover{color:#504f4b}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-option:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-option:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-option:where([variant=menu]){min-width:72px}post-language-option:where([variant=menu])[active]:not([active=false]){display:none}post-language-option:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative}post-language-option:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}";
|
|
570
565
|
const PostLanguageOptionStyle0 = postLanguageOptionCss;
|
|
571
566
|
|
|
572
567
|
const PostLanguageOption = class {
|
|
@@ -580,7 +575,6 @@ const PostLanguageOption = class {
|
|
|
580
575
|
this.name = undefined;
|
|
581
576
|
this.url = undefined;
|
|
582
577
|
}
|
|
583
|
-
get host() { return index.getElement(this); }
|
|
584
578
|
validateCode() {
|
|
585
579
|
checkType.checkType(this, 'code', 'string');
|
|
586
580
|
}
|
|
@@ -605,14 +599,6 @@ const PostLanguageOption = class {
|
|
|
605
599
|
this.postLanguageOptionInitiallyActive.emit(this.code);
|
|
606
600
|
}
|
|
607
601
|
}
|
|
608
|
-
/**
|
|
609
|
-
* An event emitted when the language option is clicked. The payload is the ISO 639 code of the language.
|
|
610
|
-
*/
|
|
611
|
-
postChange;
|
|
612
|
-
/**
|
|
613
|
-
* An event emitted when the language option is initially active. The payload is the ISO 639 code of the language.
|
|
614
|
-
*/
|
|
615
|
-
postLanguageOptionInitiallyActive;
|
|
616
602
|
/**
|
|
617
603
|
* Selects the language option programmatically.
|
|
618
604
|
*/
|
|
@@ -633,8 +619,9 @@ const PostLanguageOption = class {
|
|
|
633
619
|
this.emitChange();
|
|
634
620
|
}
|
|
635
621
|
};
|
|
636
|
-
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)))));
|
|
637
623
|
}
|
|
624
|
+
get host() { return index.getElement(this); }
|
|
638
625
|
static get watchers() { return {
|
|
639
626
|
"code": ["validateCode"],
|
|
640
627
|
"active": ["validateActiveProp"],
|
|
@@ -652,12 +639,15 @@ const PostLanguageSwitchStyle0 = postLanguageSwitchCss;
|
|
|
652
639
|
const PostLanguageSwitch = class {
|
|
653
640
|
constructor(hostRef) {
|
|
654
641
|
index.registerInstance(this, hostRef);
|
|
642
|
+
this.menuId = `p${index_browser.nanoid(11)}`;
|
|
655
643
|
this.caption = undefined;
|
|
656
644
|
this.description = undefined;
|
|
657
645
|
this.variant = 'list';
|
|
658
646
|
this.activeLang = undefined;
|
|
659
647
|
}
|
|
660
|
-
get
|
|
648
|
+
get languageOptions() {
|
|
649
|
+
return Array.from(this.host.querySelectorAll('post-language-option'));
|
|
650
|
+
}
|
|
661
651
|
validateCaption() {
|
|
662
652
|
checkType.checkType(this, 'caption', 'string');
|
|
663
653
|
}
|
|
@@ -675,7 +665,6 @@ const PostLanguageSwitch = class {
|
|
|
675
665
|
// Initially set variants and active language
|
|
676
666
|
// Handles cases where the language-switch is rendered after the language-options have been rendered
|
|
677
667
|
this.updateChildrenVariant();
|
|
678
|
-
this.updateActiveLanguage();
|
|
679
668
|
}
|
|
680
669
|
/**
|
|
681
670
|
* Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
|
|
@@ -706,34 +695,22 @@ const PostLanguageSwitch = class {
|
|
|
706
695
|
handleInitiallyActive(event) {
|
|
707
696
|
this.activeLang = event.detail;
|
|
708
697
|
}
|
|
709
|
-
get languageOptions() {
|
|
710
|
-
return this.host.querySelectorAll('post-language-option');
|
|
711
|
-
}
|
|
712
|
-
get activeLanguageOption() {
|
|
713
|
-
return this.host.querySelector('post-language-option[active]:not([active="false"])');
|
|
714
|
-
}
|
|
715
|
-
handleSlotChange() {
|
|
716
|
-
this.updateActiveLanguage();
|
|
717
|
-
}
|
|
718
|
-
updateActiveLanguage() {
|
|
719
|
-
this.activeLang = this.activeLanguageOption.getAttribute('code');
|
|
720
|
-
}
|
|
721
698
|
// Update post-language-option variant to have the correct style
|
|
722
699
|
updateChildrenVariant() {
|
|
723
700
|
this.languageOptions.forEach(el => {
|
|
724
701
|
el.setAttribute('variant', this.variant);
|
|
725
702
|
});
|
|
726
703
|
}
|
|
727
|
-
menuId = `p${index_browser.nanoid(11)}`;
|
|
728
704
|
renderList() {
|
|
729
|
-
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))));
|
|
730
706
|
}
|
|
731
707
|
renderDropdown() {
|
|
732
|
-
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))));
|
|
733
709
|
}
|
|
734
710
|
render() {
|
|
735
711
|
return this.variant === 'list' ? this.renderList() : this.renderDropdown();
|
|
736
712
|
}
|
|
713
|
+
get host() { return index.getElement(this); }
|
|
737
714
|
static get watchers() { return {
|
|
738
715
|
"caption": ["validateCaption"],
|
|
739
716
|
"description": ["validateDescription"],
|
|
@@ -742,7 +719,7 @@ const PostLanguageSwitch = class {
|
|
|
742
719
|
};
|
|
743
720
|
PostLanguageSwitch.style = PostLanguageSwitchStyle0;
|
|
744
721
|
|
|
745
|
-
const postListCss = "
|
|
722
|
+
const postListCss = "post-list{display:flex;flex-direction:column;gap:var(--post-list-title-gap, 0)}post-list>[role=list]{display:flex;flex-direction:column;gap:var(--post-list-item-gap, 0)}post-list:where([horizontal]:not([horizontal=false])){flex-direction:row;align-items:center}post-list:where([horizontal]:not([horizontal=false]))>[role=list]{flex-direction:row;align-items:center}post-list>.list-title.visually-hidden{width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}post-list>.list-title.visually-hidden:not(caption){position:absolute !important}";
|
|
746
723
|
const PostListStyle0 = postListCss;
|
|
747
724
|
|
|
748
725
|
const PostList = class {
|
|
@@ -752,8 +729,6 @@ const PostList = class {
|
|
|
752
729
|
this.titleHidden = false;
|
|
753
730
|
this.horizontal = false;
|
|
754
731
|
}
|
|
755
|
-
get host() { return index.getElement(this); }
|
|
756
|
-
titleEl;
|
|
757
732
|
componentWillLoad() {
|
|
758
733
|
/**
|
|
759
734
|
* Get the id set on the host element or use a random id by default
|
|
@@ -769,8 +744,9 @@ const PostList = class {
|
|
|
769
744
|
}
|
|
770
745
|
}
|
|
771
746
|
render() {
|
|
772
|
-
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" }))));
|
|
773
748
|
}
|
|
749
|
+
get host() { return index.getElement(this); }
|
|
774
750
|
};
|
|
775
751
|
PostList.style = PostListStyle0;
|
|
776
752
|
|
|
@@ -781,13 +757,13 @@ const PostListItem = class {
|
|
|
781
757
|
constructor(hostRef) {
|
|
782
758
|
index.registerInstance(this, hostRef);
|
|
783
759
|
}
|
|
784
|
-
get host() { return index.getElement(this); }
|
|
785
760
|
connectedCallback() {
|
|
786
761
|
this.host.setAttribute('slot', 'post-list-item');
|
|
787
762
|
}
|
|
788
763
|
render() {
|
|
789
|
-
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' })));
|
|
790
765
|
}
|
|
766
|
+
get host() { return index.getElement(this); }
|
|
791
767
|
};
|
|
792
768
|
PostListItem.style = PostListItemStyle0;
|
|
793
769
|
|
|
@@ -799,7 +775,6 @@ const PostLogo = class {
|
|
|
799
775
|
index.registerInstance(this, hostRef);
|
|
800
776
|
this.url = undefined;
|
|
801
777
|
}
|
|
802
|
-
get host() { return index.getElement(this); }
|
|
803
778
|
validateUrl() {
|
|
804
779
|
index$1.checkEmptyOrUrl(this, 'url');
|
|
805
780
|
}
|
|
@@ -815,252 +790,168 @@ const PostLogo = class {
|
|
|
815
790
|
render() {
|
|
816
791
|
const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
|
|
817
792
|
const LogoTag = logoLink ? 'a' : 'span';
|
|
818
|
-
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" }))))));
|
|
819
794
|
}
|
|
795
|
+
get host() { return index.getElement(this); }
|
|
820
796
|
static get watchers() { return {
|
|
821
797
|
"url": ["validateUrl"]
|
|
822
798
|
}; }
|
|
823
799
|
};
|
|
824
800
|
PostLogo.style = PostLogoStyle0;
|
|
825
801
|
|
|
826
|
-
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(--post-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(--post-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(--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 .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}";
|
|
827
803
|
const PostMainnavigationStyle0 = postMainnavigationCss;
|
|
828
804
|
|
|
829
805
|
const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
|
|
830
806
|
const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
|
|
831
|
-
const NAVIGATION_LIST_SELECTOR = 'post-list > [role="list"]:not(post-megadropdown *)';
|
|
832
|
-
const NAVIGATION_ITEM_SELECTOR = 'post-list-item :is(a, button):not(post-megadropdown *)';
|
|
833
807
|
const PostMainnavigation = class {
|
|
834
808
|
constructor(hostRef) {
|
|
835
809
|
index.registerInstance(this, hostRef);
|
|
836
810
|
this.canScrollLeft = false;
|
|
837
811
|
this.canScrollRight = false;
|
|
838
|
-
this.
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
scrollRepeatInterval;
|
|
845
|
-
navbarDisableTimer;
|
|
846
|
-
resizeObserver;
|
|
847
|
-
mutationObserver = new MutationObserver(async (mutations) => {
|
|
848
|
-
// Wait for all elements to be hydrated
|
|
849
|
-
await Promise.all(mutations
|
|
850
|
-
.flatMap((mutation) => Array.from(mutation.addedNodes))
|
|
851
|
-
.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
|
|
852
|
-
// Recalculate scrollability after DOM changes
|
|
853
|
-
this.checkScrollability();
|
|
854
|
-
});
|
|
855
|
-
get host() { return index.getElement(this); }
|
|
856
|
-
/**
|
|
857
|
-
* Update navbar translation when 'translateAmount' changes and recalculate scrollability
|
|
858
|
-
*/
|
|
859
|
-
onTranslateAmountChanges(value) {
|
|
860
|
-
this.navbar.style.marginInlineStart = `-${value}px`;
|
|
861
|
-
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);
|
|
862
818
|
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
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);
|
|
869
830
|
}
|
|
870
831
|
/**
|
|
871
|
-
*
|
|
832
|
+
* Disconnects observers and remove event listeners when the main navigation is removed from the DOM.
|
|
872
833
|
*/
|
|
873
834
|
disconnectedCallback() {
|
|
874
|
-
this.header = null;
|
|
875
835
|
this.mutationObserver.disconnect();
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
}
|
|
836
|
+
this.resizeObserver.disconnect();
|
|
837
|
+
this.navbar.removeEventListener('scrollend', this.checkScrollability);
|
|
879
838
|
}
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
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);
|
|
884
849
|
});
|
|
885
|
-
//
|
|
886
|
-
|
|
887
|
-
this.resizeObserver.observe(this.navbar);
|
|
888
|
-
const navList = this.navigationList;
|
|
889
|
-
if (navList) {
|
|
890
|
-
this.resizeObserver.observe(navList);
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
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)));
|
|
894
852
|
this.fixLayoutShift();
|
|
895
|
-
|
|
896
|
-
this.navbar.addEventListener('focusin', e => this.adjustTranslation(e));
|
|
853
|
+
this.checkScrollability();
|
|
897
854
|
}
|
|
898
|
-
|
|
855
|
+
get navigationItems() {
|
|
856
|
+
return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Hack to fix the layout shift due to bold text on active elements
|
|
860
|
+
*/
|
|
899
861
|
fixLayoutShift() {
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
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
|
+
});
|
|
904
870
|
}
|
|
905
871
|
handleBackButtonClick() {
|
|
906
|
-
|
|
907
|
-
|
|
872
|
+
const header = this.navbar.closest('post-header');
|
|
873
|
+
if (header)
|
|
874
|
+
header.toggleMobileMenu();
|
|
908
875
|
}
|
|
909
876
|
/**
|
|
910
|
-
*
|
|
877
|
+
* Returns whether scrolling is enabled in either the left or right direction.
|
|
911
878
|
*/
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
if (!this.canScroll || !focusedElement.matches(NAVIGATION_ITEM_SELECTOR))
|
|
915
|
-
return;
|
|
916
|
-
// We need to move the element into the view before it is focused to avoid browser default behavior
|
|
917
|
-
e.preventDefault();
|
|
918
|
-
this.withoutTransition(() => {
|
|
919
|
-
// Try scrolling in both directions, only the necessary translation will actually occur
|
|
920
|
-
this.translateRightTo(focusedElement);
|
|
921
|
-
this.translateLeftTo(focusedElement);
|
|
922
|
-
focusedElement.focus();
|
|
923
|
-
});
|
|
879
|
+
get canScroll() {
|
|
880
|
+
return this.canScrollLeft || this.canScrollRight;
|
|
924
881
|
}
|
|
925
882
|
/**
|
|
926
883
|
* Checks if scrolling is possible in either direction (left or right) and updates the state accordingly.
|
|
927
884
|
*/
|
|
928
885
|
checkScrollability() {
|
|
929
|
-
const { scrollWidth, clientWidth } = this.navbar;
|
|
930
|
-
const couldScroll = this.canScroll;
|
|
886
|
+
const { scrollLeft, scrollWidth, clientWidth } = this.navbar;
|
|
931
887
|
if (scrollWidth === clientWidth) {
|
|
932
888
|
// If scroll width equals client width, scrolling is disabled in both directions
|
|
933
889
|
this.canScrollLeft = this.canScrollRight = false;
|
|
934
890
|
}
|
|
935
891
|
else {
|
|
936
|
-
this.canScrollLeft =
|
|
937
|
-
this.canScrollRight = clientWidth +
|
|
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
|
|
938
894
|
}
|
|
939
|
-
if (couldScroll && !this.canScroll) {
|
|
940
|
-
this.withoutTransition(() => (this.translationAmount = 0));
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
/**
|
|
944
|
-
* Returns whether scrolling is enabled in either the left or right direction.
|
|
945
|
-
*/
|
|
946
|
-
get canScroll() {
|
|
947
|
-
return this.canScrollLeft || this.canScrollRight;
|
|
948
895
|
}
|
|
949
896
|
/**
|
|
950
897
|
* Handles the scrolling behavior when a user clicks on the left or right scroll buttons.
|
|
951
898
|
*/
|
|
952
|
-
handleScrollButtonClick(direction) {
|
|
953
|
-
if (!this.canScroll)
|
|
899
|
+
handleScrollButtonClick(e, direction) {
|
|
900
|
+
if (!this.canScroll || e.button !== 0)
|
|
954
901
|
return;
|
|
955
902
|
// Disable interaction with the navbar during scrolling
|
|
956
|
-
this.
|
|
957
|
-
//
|
|
958
|
-
this.
|
|
903
|
+
this.temporarilyDisableNavbar();
|
|
904
|
+
// Set up the correct scroll function
|
|
905
|
+
const scroll = direction === 'right' ? this.scrollRight : this.scrollLeft;
|
|
906
|
+
scroll();
|
|
959
907
|
// Repeat the scrolling action while the button is held down
|
|
960
908
|
this.scrollRepeatInterval = setInterval(() => {
|
|
961
|
-
|
|
909
|
+
scroll();
|
|
962
910
|
}, SCROLL_REPEAT_INTERVAL);
|
|
963
911
|
}
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
const couldScroll = direction === 'left' ? this.translateLeftTo(item, true) : this.translateRightTo(item, true);
|
|
977
|
-
if (couldScroll)
|
|
978
|
-
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
|
+
}
|
|
979
924
|
}
|
|
980
925
|
}
|
|
981
|
-
|
|
982
|
-
const
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
// Calculate the maximum translation amount to prevent scrolling past the end of the content
|
|
995
|
-
const maximumTranslation = this.navbar.scrollWidth - this.host.clientWidth;
|
|
996
|
-
// Adjust the translation amount, ensuring it doesn't exceed the maximum scrollable area
|
|
997
|
-
const { marginRight } = getComputedStyle(this.navigationList);
|
|
998
|
-
this.translationAmount =
|
|
999
|
-
Math.min(this.translationAmount + translationIncrease, maximumTranslation) +
|
|
1000
|
-
parseInt(marginRight);
|
|
1001
|
-
return true;
|
|
1002
|
-
}
|
|
1003
|
-
translateLeftTo(navigationItem, skipSmallTranslation = false) {
|
|
1004
|
-
const listItem = navigationItem.closest('post-list-item');
|
|
1005
|
-
// Get the left edge position of the list item relative to the left of the screen
|
|
1006
|
-
const leftEdgePosition = listItem.offsetLeft;
|
|
1007
|
-
// Calculate the first visible position on the screen to the left, right after the left scroll button
|
|
1008
|
-
const firstVisiblePosition = this.leftScrollButton.clientWidth;
|
|
1009
|
-
// If the item is already fully visible, no translation is needed
|
|
1010
|
-
if (leftEdgePosition > firstVisiblePosition)
|
|
1011
|
-
return false;
|
|
1012
|
-
const translationDecrease = firstVisiblePosition - leftEdgePosition + 1; // + 1 because offset values are rounded
|
|
1013
|
-
// If the required scroll distance is too small (less than half the width of the item), don't perform the scroll
|
|
1014
|
-
if (skipSmallTranslation && translationDecrease < listItem.clientWidth / 2)
|
|
1015
|
-
return false;
|
|
1016
|
-
// Calculate the minimum allowed translation amount (no negative scrolling allowed)
|
|
1017
|
-
const minimumTranslation = 0;
|
|
1018
|
-
// Adjust the translation amount, ensuring it doesn't go below the minimum scrollable area
|
|
1019
|
-
const { marginLeft } = getComputedStyle(this.navigationList);
|
|
1020
|
-
this.translationAmount = Math.max(this.translationAmount - translationDecrease - parseInt(marginLeft), minimumTranslation);
|
|
1021
|
-
return true;
|
|
1022
|
-
}
|
|
1023
|
-
/**
|
|
1024
|
-
* Returns the navigation list container element
|
|
1025
|
-
*/
|
|
1026
|
-
get navigationList() {
|
|
1027
|
-
return this.navbar.querySelector(NAVIGATION_LIST_SELECTOR);
|
|
1028
|
-
}
|
|
1029
|
-
/**
|
|
1030
|
-
* Returns the navigation items
|
|
1031
|
-
*/
|
|
1032
|
-
get navigationItems() {
|
|
1033
|
-
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
|
+
}
|
|
1034
939
|
}
|
|
1035
940
|
/**
|
|
1036
941
|
* Temporarily disables interactions with the navbar during scrolling to prevent accidental clicks.
|
|
1037
942
|
* Re-enables interactions after a brief delay to avoid blocking the user entirely.
|
|
1038
943
|
*/
|
|
1039
|
-
|
|
944
|
+
temporarilyDisableNavbar() {
|
|
1040
945
|
if (this.navbarDisableTimer)
|
|
1041
946
|
clearTimeout(this.navbarDisableTimer);
|
|
1042
|
-
this.navbar.
|
|
947
|
+
this.navbar.setAttribute('inert', '');
|
|
1043
948
|
this.navbarDisableTimer = setTimeout(() => {
|
|
1044
|
-
this.navbar.
|
|
949
|
+
this.navbar.removeAttribute('inert');
|
|
1045
950
|
}, NAVBAR_DISABLE_DURATION);
|
|
1046
951
|
}
|
|
1047
|
-
/**
|
|
1048
|
-
* Allows to translate the navbar without a transition
|
|
1049
|
-
*/
|
|
1050
|
-
withoutTransition(callback) {
|
|
1051
|
-
const transition = this.navbar.style.transition;
|
|
1052
|
-
this.navbar.style.transition = 'none';
|
|
1053
|
-
callback();
|
|
1054
|
-
setTimeout(() => {
|
|
1055
|
-
this.navbar.style.transition = transition;
|
|
1056
|
-
});
|
|
1057
|
-
}
|
|
1058
952
|
render() {
|
|
1059
|
-
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" }))));
|
|
1060
954
|
}
|
|
1061
|
-
static get watchers() { return {
|
|
1062
|
-
"translationAmount": ["onTranslateAmountChanges"]
|
|
1063
|
-
}; }
|
|
1064
955
|
};
|
|
1065
956
|
PostMainnavigation.style = PostMainnavigationStyle0;
|
|
1066
957
|
|
|
@@ -1071,28 +962,34 @@ const PostMegadropdown = class {
|
|
|
1071
962
|
constructor(hostRef) {
|
|
1072
963
|
index.registerInstance(this, hostRef);
|
|
1073
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
|
+
};
|
|
1074
983
|
this.device = breakpoints.breakpoint.get('name');
|
|
1075
984
|
this.isVisible = false;
|
|
1076
985
|
this.animationClass = null;
|
|
1077
986
|
}
|
|
1078
|
-
firstFocusableEl;
|
|
1079
|
-
lastFocusableEl;
|
|
1080
|
-
get host() { return index.getElement(this); }
|
|
1081
|
-
/** Tracks the currently active dropdown instance. */
|
|
1082
|
-
static activeDropdown = null;
|
|
1083
987
|
breakpointChange(e) {
|
|
1084
988
|
this.device = e.detail;
|
|
1085
989
|
if (this.device === 'desktop' && this.isVisible) {
|
|
1086
990
|
this.animationClass = null;
|
|
1087
991
|
}
|
|
1088
992
|
}
|
|
1089
|
-
/**
|
|
1090
|
-
* Emits when the dropdown is shown or hidden.
|
|
1091
|
-
* The event payload is an object.
|
|
1092
|
-
* `isVisible` is true when the dropdown gets opened and false when it gets closed
|
|
1093
|
-
* `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
|
|
1094
|
-
**/
|
|
1095
|
-
postToggleMegadropdown;
|
|
1096
993
|
disconnectedCallback() {
|
|
1097
994
|
this.removeListeners();
|
|
1098
995
|
window.removeEventListener('postBreakpoint:name', this.breakpointChange.bind(this));
|
|
@@ -1172,24 +1069,6 @@ const PostMegadropdown = class {
|
|
|
1172
1069
|
this.removeListeners();
|
|
1173
1070
|
}
|
|
1174
1071
|
}
|
|
1175
|
-
handleClickOutside = (event) => {
|
|
1176
|
-
if (this.device !== 'desktop')
|
|
1177
|
-
return;
|
|
1178
|
-
const target = event.target;
|
|
1179
|
-
if (this.host.contains(target)) {
|
|
1180
|
-
return;
|
|
1181
|
-
}
|
|
1182
|
-
if (target instanceof HTMLElement) {
|
|
1183
|
-
const trigger = target.closest('post-megadropdown-trigger');
|
|
1184
|
-
if (trigger) {
|
|
1185
|
-
const targetDropdownId = trigger.getAttribute('for');
|
|
1186
|
-
if (targetDropdownId !== this.host.id) {
|
|
1187
|
-
return;
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
this.hide(false);
|
|
1192
|
-
};
|
|
1193
1072
|
addListeners() {
|
|
1194
1073
|
this.host.addEventListener('keydown', e => this.keyboardHandler(e));
|
|
1195
1074
|
document.addEventListener('keyup', e => this.handleTabOutside(e));
|
|
@@ -1232,7 +1111,10 @@ const PostMegadropdown = class {
|
|
|
1232
1111
|
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
1233
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" }))))));
|
|
1234
1113
|
}
|
|
1114
|
+
get host() { return index.getElement(this); }
|
|
1235
1115
|
};
|
|
1116
|
+
/** Tracks the currently active dropdown instance. */
|
|
1117
|
+
PostMegadropdown.activeDropdown = null;
|
|
1236
1118
|
PostMegadropdown.style = PostMegadropdownStyle0;
|
|
1237
1119
|
|
|
1238
1120
|
const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative;z-index:3}";
|
|
@@ -1241,20 +1123,45 @@ const PostMegadropdownTriggerStyle0 = postMegadropdownTriggerCss;
|
|
|
1241
1123
|
const PostMegadropdownTrigger = class {
|
|
1242
1124
|
constructor(hostRef) {
|
|
1243
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
|
+
};
|
|
1244
1162
|
this.for = undefined;
|
|
1245
1163
|
this.ariaExpanded = false;
|
|
1246
1164
|
}
|
|
1247
|
-
get host() { return index.getElement(this); }
|
|
1248
|
-
/**
|
|
1249
|
-
* Reference to the slotted button within the trigger, if present.
|
|
1250
|
-
* Used to manage click and key events for mega dropdown control.
|
|
1251
|
-
*/
|
|
1252
|
-
slottedButton = null;
|
|
1253
|
-
/**
|
|
1254
|
-
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
1255
|
-
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
1256
|
-
*/
|
|
1257
|
-
wasExpanded = false;
|
|
1258
1165
|
/**
|
|
1259
1166
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
1260
1167
|
* @param forValue - The new value of the `for` property.
|
|
@@ -1276,32 +1183,6 @@ const PostMegadropdownTrigger = class {
|
|
|
1276
1183
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
1277
1184
|
}
|
|
1278
1185
|
}
|
|
1279
|
-
handleKeyDown = (event) => {
|
|
1280
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
1281
|
-
event.preventDefault();
|
|
1282
|
-
this.handleToggle();
|
|
1283
|
-
if (this.megadropdown && !this.ariaExpanded) {
|
|
1284
|
-
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
1285
|
-
}
|
|
1286
|
-
}
|
|
1287
|
-
};
|
|
1288
|
-
handleToggleMegadropdown = (event) => {
|
|
1289
|
-
eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-megadropdown' }, () => {
|
|
1290
|
-
if (event.target.id === this.for) {
|
|
1291
|
-
this.ariaExpanded = event.detail.isVisible;
|
|
1292
|
-
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
1293
|
-
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
1294
|
-
setTimeout(() => {
|
|
1295
|
-
this.slottedButton?.focus();
|
|
1296
|
-
}, 100);
|
|
1297
|
-
}
|
|
1298
|
-
this.wasExpanded = this.ariaExpanded;
|
|
1299
|
-
if (this.slottedButton) {
|
|
1300
|
-
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
});
|
|
1304
|
-
};
|
|
1305
1186
|
componentDidLoad() {
|
|
1306
1187
|
this.validateControlFor();
|
|
1307
1188
|
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
@@ -1324,41 +1205,68 @@ const PostMegadropdownTrigger = class {
|
|
|
1324
1205
|
render() {
|
|
1325
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' }))));
|
|
1326
1207
|
}
|
|
1208
|
+
get host() { return index.getElement(this); }
|
|
1327
1209
|
static get watchers() { return {
|
|
1328
1210
|
"for": ["validateControlFor"]
|
|
1329
1211
|
}; }
|
|
1330
1212
|
};
|
|
1331
1213
|
PostMegadropdownTrigger.style = PostMegadropdownTriggerStyle0;
|
|
1332
1214
|
|
|
1333
|
-
const postMenuCss = "
|
|
1215
|
+
const postMenuCss = ":host{display:block}post-popovercontainer{padding:var(--post-menu-padding);background-color:var(--post-menu-bg, #ffffff);border-color:var(--post-menu-bg, #ffffff)}.popover-container{display:flex;flex-direction:column}";
|
|
1334
1216
|
const PostMenuStyle0 = postMenuCss;
|
|
1335
1217
|
|
|
1336
1218
|
const PostMenu = class {
|
|
1337
1219
|
constructor(hostRef) {
|
|
1338
1220
|
index.registerInstance(this, hostRef);
|
|
1339
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
|
+
};
|
|
1340
1267
|
this.placement = 'bottom';
|
|
1341
1268
|
this.isVisible = false;
|
|
1342
1269
|
}
|
|
1343
|
-
popoverRef;
|
|
1344
|
-
lastFocusedElement = null;
|
|
1345
|
-
KEYCODES = {
|
|
1346
|
-
SPACE: ' ',
|
|
1347
|
-
ENTER: 'Enter',
|
|
1348
|
-
UP: 'ArrowUp',
|
|
1349
|
-
DOWN: 'ArrowDown',
|
|
1350
|
-
TAB: 'Tab',
|
|
1351
|
-
HOME: 'Home',
|
|
1352
|
-
END: 'End',
|
|
1353
|
-
ESCAPE: 'Escape',
|
|
1354
|
-
};
|
|
1355
|
-
get host() { return index.getElement(this); }
|
|
1356
|
-
/**
|
|
1357
|
-
* Emits when the menu is shown or hidden.
|
|
1358
|
-
* The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
|
|
1359
|
-
**/
|
|
1360
|
-
toggleMenu;
|
|
1361
|
-
root;
|
|
1362
1270
|
connectedCallback() {
|
|
1363
1271
|
this.root = getRoot.getRoot(this.host);
|
|
1364
1272
|
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
@@ -1409,40 +1317,6 @@ const PostMenu = class {
|
|
|
1409
1317
|
console.error('hide: popoverRef is null or undefined');
|
|
1410
1318
|
}
|
|
1411
1319
|
}
|
|
1412
|
-
handleKeyDown = (e) => {
|
|
1413
|
-
e.stopPropagation();
|
|
1414
|
-
if (e.key === this.KEYCODES.ESCAPE) {
|
|
1415
|
-
this.toggle(this.host);
|
|
1416
|
-
return;
|
|
1417
|
-
}
|
|
1418
|
-
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
1419
|
-
this.controlKeyDownHandler(e);
|
|
1420
|
-
}
|
|
1421
|
-
};
|
|
1422
|
-
handlePostToggle = (event) => {
|
|
1423
|
-
eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-popovercontainer', delegatorSelector: 'post-menu' }, () => {
|
|
1424
|
-
this.isVisible = event.detail;
|
|
1425
|
-
this.toggleMenu.emit(this.isVisible);
|
|
1426
|
-
requestAnimationFrame(() => {
|
|
1427
|
-
if (this.isVisible) {
|
|
1428
|
-
this.lastFocusedElement = this.root?.activeElement;
|
|
1429
|
-
const menuItems = this.getSlottedItems();
|
|
1430
|
-
if (menuItems.length > 0) {
|
|
1431
|
-
menuItems[0].focus();
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
else if (this.lastFocusedElement) {
|
|
1435
|
-
this.lastFocusedElement.focus();
|
|
1436
|
-
}
|
|
1437
|
-
});
|
|
1438
|
-
});
|
|
1439
|
-
};
|
|
1440
|
-
handleClick = (e) => {
|
|
1441
|
-
const target = e.target;
|
|
1442
|
-
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
1443
|
-
this.toggle(this.host);
|
|
1444
|
-
}
|
|
1445
|
-
};
|
|
1446
1320
|
controlKeyDownHandler(e) {
|
|
1447
1321
|
const menuItems = this.getSlottedItems();
|
|
1448
1322
|
if (!menuItems.length) {
|
|
@@ -1489,8 +1363,9 @@ const PostMenu = class {
|
|
|
1489
1363
|
.flatMap(el => Array.from(getFocusableChildren(el))));
|
|
1490
1364
|
}
|
|
1491
1365
|
render() {
|
|
1492
|
-
return (index.h(index.Host, { key: '
|
|
1366
|
+
return (index.h(index.Host, { key: 'dd3bbcbf568e529588bcf5c90b8c2d4d07d454fb', "data-version": _package.version, role: "menu" }, index.h("post-popovercontainer", { key: '17a24933ef087cc8699b00f7165fff33756da9a8', placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: '9ff3d687146c88cf153ea745abcaf7a3267be620', class: "popover-container", part: "popover-container" }, index.h("slot", { key: 'aff50800748410f6e2583690620c12e47b4c7a22' })))));
|
|
1493
1367
|
}
|
|
1368
|
+
get host() { return index.getElement(this); }
|
|
1494
1369
|
};
|
|
1495
1370
|
PostMenu.style = PostMenuStyle0;
|
|
1496
1371
|
|
|
@@ -1500,16 +1375,20 @@ const PostMenuTriggerStyle0 = postMenuTriggerCss;
|
|
|
1500
1375
|
const PostMenuTrigger = class {
|
|
1501
1376
|
constructor(hostRef) {
|
|
1502
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
|
+
};
|
|
1503
1389
|
this.for = undefined;
|
|
1504
1390
|
this.ariaExpanded = false;
|
|
1505
1391
|
}
|
|
1506
|
-
get host() { return index.getElement(this); }
|
|
1507
|
-
/**
|
|
1508
|
-
* Reference to the slotted button within the trigger, if present.
|
|
1509
|
-
* Used to manage click and key events for menu control.
|
|
1510
|
-
*/
|
|
1511
|
-
slottedButton = null;
|
|
1512
|
-
root;
|
|
1513
1392
|
/**
|
|
1514
1393
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
1515
1394
|
* @param forValue - The new value of the `for` property.
|
|
@@ -1529,12 +1408,6 @@ const PostMenuTrigger = class {
|
|
|
1529
1408
|
console.warn(`No post-menu found with ID: ${this.for}`);
|
|
1530
1409
|
}
|
|
1531
1410
|
}
|
|
1532
|
-
handleKeyDown = (e) => {
|
|
1533
|
-
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
1534
|
-
e.preventDefault();
|
|
1535
|
-
this.handleToggle();
|
|
1536
|
-
}
|
|
1537
|
-
};
|
|
1538
1411
|
connectedCallback() {
|
|
1539
1412
|
this.root = getRoot.getRoot(this.host);
|
|
1540
1413
|
}
|
|
@@ -1570,8 +1443,9 @@ const PostMenuTrigger = class {
|
|
|
1570
1443
|
}
|
|
1571
1444
|
}
|
|
1572
1445
|
render() {
|
|
1573
|
-
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' })));
|
|
1574
1447
|
}
|
|
1448
|
+
get host() { return index.getElement(this); }
|
|
1575
1449
|
static get watchers() { return {
|
|
1576
1450
|
"for": ["validateControlFor"]
|
|
1577
1451
|
}; }
|
|
@@ -3622,7 +3496,385 @@ const computePosition = (reference, floating, options) => {
|
|
|
3622
3496
|
});
|
|
3623
3497
|
};
|
|
3624
3498
|
|
|
3625
|
-
|
|
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 {" : ""}
|
|
3626
3878
|
:where([popover]) {
|
|
3627
3879
|
position: fixed;
|
|
3628
3880
|
z-index: 2147483647;
|
|
@@ -3640,6 +3892,14 @@ const computePosition = (reference, floating, options) => {
|
|
|
3640
3892
|
margin: auto;
|
|
3641
3893
|
}
|
|
3642
3894
|
|
|
3895
|
+
:where([popover]:not(.\\:popover-open)) {
|
|
3896
|
+
display: none;
|
|
3897
|
+
}
|
|
3898
|
+
|
|
3899
|
+
:where(dialog[popover].\\:popover-open) {
|
|
3900
|
+
display: block;
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3643
3903
|
:where(dialog[popover][open]) {
|
|
3644
3904
|
display: revert;
|
|
3645
3905
|
}
|
|
@@ -3674,11 +3934,229 @@ const computePosition = (reference, floating, options) => {
|
|
|
3674
3934
|
bottom: 0;
|
|
3675
3935
|
}
|
|
3676
3936
|
}
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
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
|
+
}
|
|
3950
|
+
}
|
|
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
|
+
});
|
|
3680
4061
|
}
|
|
3681
|
-
|
|
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
|
+
}
|
|
3682
4160
|
|
|
3683
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)}";
|
|
3684
4162
|
const PostPopovercontainerStyle0 = postPopovercontainerCss;
|
|
@@ -3693,35 +4171,6 @@ const PostPopovercontainer = class {
|
|
|
3693
4171
|
this.arrow = false;
|
|
3694
4172
|
this.safeSpace = undefined;
|
|
3695
4173
|
}
|
|
3696
|
-
static STATIC_SIDES = {
|
|
3697
|
-
top: 'bottom',
|
|
3698
|
-
right: 'left',
|
|
3699
|
-
bottom: 'top',
|
|
3700
|
-
left: 'right',
|
|
3701
|
-
};
|
|
3702
|
-
static PROPERTIES_TO_CLEAR = [
|
|
3703
|
-
'--safe-space-popover-x',
|
|
3704
|
-
'--safe-space-popover-y',
|
|
3705
|
-
'--safe-space-popover-x-start',
|
|
3706
|
-
'--safe-space-popover-x-end',
|
|
3707
|
-
'--safe-space-popover-y-start',
|
|
3708
|
-
'--safe-space-popover-y-end',
|
|
3709
|
-
'--safe-space-trigger-x',
|
|
3710
|
-
'--safe-space-trigger-y',
|
|
3711
|
-
'--safe-space-trigger-x-start',
|
|
3712
|
-
'--safe-space-trigger-x-end',
|
|
3713
|
-
'--safe-space-trigger-y-start',
|
|
3714
|
-
'--safe-space-trigger-y-end',
|
|
3715
|
-
];
|
|
3716
|
-
get host() { return index.getElement(this); }
|
|
3717
|
-
arrowRef;
|
|
3718
|
-
eventTarget;
|
|
3719
|
-
clearAutoUpdate;
|
|
3720
|
-
toggleTimeoutId;
|
|
3721
|
-
/**
|
|
3722
|
-
* Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
|
|
3723
|
-
*/
|
|
3724
|
-
postToggle;
|
|
3725
4174
|
/**
|
|
3726
4175
|
* Updates cursor position for safe space feature when popover is open.
|
|
3727
4176
|
* Sets CSS custom properties for dynamic styling of safe area.
|
|
@@ -3731,6 +4180,11 @@ const PostPopovercontainer = class {
|
|
|
3731
4180
|
this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
|
|
3732
4181
|
this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
|
|
3733
4182
|
}
|
|
4183
|
+
connectedCallback() {
|
|
4184
|
+
if (breakpoints.IS_BROWSER && !isSupported()) {
|
|
4185
|
+
apply();
|
|
4186
|
+
}
|
|
4187
|
+
}
|
|
3734
4188
|
componentDidLoad() {
|
|
3735
4189
|
this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
|
|
3736
4190
|
}
|
|
@@ -3925,11 +4379,32 @@ const PostPopovercontainer = class {
|
|
|
3925
4379
|
}
|
|
3926
4380
|
}
|
|
3927
4381
|
render() {
|
|
3928
|
-
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 => {
|
|
3929
4383
|
this.arrowRef = el;
|
|
3930
|
-
} })), index.h("slot", { key: '
|
|
4384
|
+
} })), index.h("slot", { key: 'bb9b4b3d8e7c36f024883d02bd34766bf2e9de88' }))));
|
|
3931
4385
|
}
|
|
4386
|
+
get host() { return index.getElement(this); }
|
|
3932
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
|
+
];
|
|
3933
4408
|
PostPopovercontainer.style = PostPopovercontainerStyle0;
|
|
3934
4409
|
|
|
3935
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}";
|
|
@@ -3938,9 +4413,18 @@ const PostTogglebuttonStyle0 = postTogglebuttonCss;
|
|
|
3938
4413
|
const PostTogglebutton = class {
|
|
3939
4414
|
constructor(hostRef) {
|
|
3940
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
|
+
};
|
|
3941
4426
|
this.toggled = false;
|
|
3942
4427
|
}
|
|
3943
|
-
get host() { return index.getElement(this); }
|
|
3944
4428
|
validateToggled() {
|
|
3945
4429
|
checkType.checkType(this, 'toggled', 'boolean');
|
|
3946
4430
|
}
|
|
@@ -3950,19 +4434,10 @@ const PostTogglebutton = class {
|
|
|
3950
4434
|
this.host.addEventListener('click', () => this.handleClick());
|
|
3951
4435
|
this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
|
|
3952
4436
|
}
|
|
3953
|
-
handleClick = () => {
|
|
3954
|
-
this.toggled = !this.toggled;
|
|
3955
|
-
};
|
|
3956
|
-
handleKeydown = (event) => {
|
|
3957
|
-
// perform a click when enter or spaced are pressed to mimic the button behavior
|
|
3958
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
3959
|
-
event.preventDefault(); // prevents the page from scrolling when space is pressed
|
|
3960
|
-
this.host.click();
|
|
3961
|
-
}
|
|
3962
|
-
};
|
|
3963
4437
|
render() {
|
|
3964
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' })));
|
|
3965
4439
|
}
|
|
4440
|
+
get host() { return index.getElement(this); }
|
|
3966
4441
|
static get watchers() { return {
|
|
3967
4442
|
"toggled": ["validateToggled"]
|
|
3968
4443
|
}; }
|