@swisspost/design-system-components 9.0.0-next.9 → 10.0.0-next.37
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/.config/bindings.angular.js +4 -0
- package/dist/cjs/breakpoints-cdf1b747.js +59 -0
- package/dist/cjs/check-non-empty-bd99d236.js +15 -0
- package/dist/cjs/check-one-of-75d270b5.js +13 -0
- package/dist/cjs/check-type-cdbf6d29.js +21 -0
- package/dist/cjs/check-url-220a286c.js +19 -0
- package/dist/cjs/event-guard-efabc84f.js +47 -0
- package/dist/cjs/fade-72d5ef55.js +14 -0
- package/dist/cjs/get-root-8102fecd.js +17 -0
- package/dist/cjs/index-23e36ff7.js +37 -0
- package/dist/cjs/{index-010dc207.js → index-b60129c4.js} +17 -10
- package/dist/cjs/index.browser-4af21c17.js +16 -0
- package/dist/cjs/index.cjs.js +36 -31
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/long-press-event-6e62d113.js +266 -0
- package/dist/cjs/{package-8e810a59.js → package-8121f093.js} +1 -1
- package/dist/cjs/{post-accordion-b9df8522.js → post-accordion-beac7c9f.js} +11 -12
- package/dist/cjs/post-accordion-item-4846fbee.js +64 -0
- package/dist/cjs/post-accordion-item.cjs.entry.js +10 -7
- package/dist/cjs/post-accordion.cjs.entry.js +6 -4
- package/dist/cjs/{post-avatar-f7236084.js → post-avatar-a36991fb.js} +10 -13
- package/dist/cjs/post-avatar.cjs.entry.js +5 -4
- package/dist/cjs/post-back-to-top-32aa9017.js +96 -0
- package/dist/cjs/post-back-to-top.cjs.entry.js +7 -6
- package/dist/cjs/post-banner-be0e8909.js +92 -0
- package/dist/cjs/post-banner.cjs.entry.js +11 -9
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +8 -7
- package/dist/cjs/post-breadcrumbs-6ef82a41.js +120 -0
- package/dist/cjs/post-breadcrumbs.cjs.entry.js +13 -0
- package/dist/cjs/post-card-control-fe919333.js +269 -0
- package/dist/cjs/post-card-control.cjs.entry.js +6 -5
- package/dist/cjs/post-closebutton_15.cjs.entry.js +13 -10
- package/dist/cjs/{post-collapsible-trigger-143cf84a.js → post-collapsible-trigger-f42be607.js} +59 -60
- package/dist/cjs/post-collapsible_2.cjs.entry.js +11 -10
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/{post-footer-5f7fdf96.js → post-footer-5179aa17.js} +11 -57
- package/dist/cjs/post-footer.cjs.entry.js +4 -3
- package/dist/cjs/post-linkarea-27125078.js +30 -0
- package/dist/cjs/post-linkarea.cjs.entry.js +11 -0
- package/dist/cjs/{post-menu-item-bb0b0b9e.js → post-menu-item-d78a9121.js} +11 -17
- package/dist/cjs/post-popover-feb1e773.js +135 -0
- package/dist/cjs/post-popover.cjs.entry.js +4 -4
- package/dist/cjs/{post-rating-1082197c.js → post-rating-6d153a2c.js} +4 -4
- package/dist/cjs/post-rating.cjs.entry.js +3 -3
- package/dist/cjs/post-tab-header-e4532918.js +34 -0
- package/dist/cjs/post-tab-header.cjs.entry.js +6 -4
- package/dist/cjs/{post-tab-panel-60f211a5.js → post-tab-panel-40df21ad.js} +5 -4
- package/dist/cjs/post-tab-panel.cjs.entry.js +4 -3
- package/dist/cjs/{post-tabs-1f797ce4.js → post-tabs-45db2696.js} +13 -15
- package/dist/cjs/post-tabs.cjs.entry.js +5 -4
- package/dist/cjs/post-tag-0967bb1e.js +47 -0
- package/dist/cjs/post-tag.cjs.entry.js +3 -3
- package/dist/cjs/post-togglebutton-42b7d166.js +4494 -0
- package/dist/cjs/post-tooltip-f833d51d.js +73 -0
- package/dist/cjs/{post-tooltip-38c839a4.js → post-tooltip-trigger-3ceac010.js} +143 -456
- package/dist/cjs/post-tooltip-trigger.cjs.entry.js +13 -0
- package/dist/cjs/post-tooltip.cjs.entry.js +5 -9
- package/dist/cjs/{slide-5d51abe8.js → slide-cd1f09b3.js} +8 -8
- package/dist/collection/animations/collapse.js +8 -6
- package/dist/collection/animations/fade.js +6 -2
- package/dist/collection/animations/slide.js +8 -8
- package/dist/collection/collection-manifest.json +5 -3
- package/dist/collection/components/post-accordion/post-accordion.css +1 -1
- package/dist/collection/components/post-accordion/post-accordion.js +6 -8
- package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +12 -12
- package/dist/collection/components/post-avatar/post-avatar.css +1 -3
- package/dist/collection/components/post-avatar/post-avatar.js +7 -11
- package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +38 -18
- package/dist/collection/components/post-banner/post-banner.css +1 -3
- package/dist/collection/components/post-banner/post-banner.js +13 -12
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +11 -8
- 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} +20 -21
- package/dist/collection/components/post-card-control/post-card-control.css +1 -3
- package/dist/collection/components/post-card-control/post-card-control.js +15 -19
- package/dist/collection/components/post-closebutton/post-closebutton.css +1 -0
- package/dist/collection/components/post-closebutton/post-closebutton.js +12 -1
- package/dist/collection/components/post-collapsible/post-collapsible.css +1 -1
- package/dist/collection/components/post-collapsible/post-collapsible.js +3 -2
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +43 -45
- package/dist/collection/components/post-footer/post-footer.js +8 -8
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +212 -52
- package/dist/collection/components/post-icon/post-icon.css +1 -1
- package/dist/collection/components/post-icon/post-icon.js +71 -29
- package/dist/collection/components/post-language-option/post-language-option.css +1 -3
- package/dist/collection/components/post-language-option/post-language-option.js +34 -12
- package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +56 -33
- package/dist/collection/components/post-language-switch/switch-variants.js +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.css +1 -0
- package/dist/collection/components/post-linkarea/post-linkarea.js +30 -0
- package/dist/collection/components/post-list/post-list.css +1 -3
- package/dist/collection/components/post-list/post-list.js +4 -3
- package/dist/collection/components/post-list-item/post-list-item.js +2 -1
- package/dist/collection/components/post-logo/post-logo.css +1 -1
- package/dist/collection/components/post-logo/post-logo.js +2 -2
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +157 -25
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +179 -55
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +1 -1
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +41 -12
- package/dist/collection/components/post-menu/post-menu.css +1 -3
- package/dist/collection/components/post-menu/post-menu.js +44 -30
- package/dist/collection/components/post-menu-item/post-menu-item.js +1 -13
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +16 -10
- package/dist/collection/components/post-popover/post-popover.css +1 -3
- package/dist/collection/components/post-popover/post-popover.js +23 -16
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +217 -56
- package/dist/collection/components/post-rating/post-rating.css +1 -3
- package/dist/collection/components/post-rating/post-rating.js +1 -1
- package/dist/collection/components/post-tab-header/post-tab-header.css +1 -3
- package/dist/collection/components/post-tab-header/post-tab-header.js +6 -5
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +4 -3
- package/dist/collection/components/post-tabs/post-tabs.css +1 -1
- package/dist/collection/components/post-tabs/post-tabs.js +6 -14
- package/dist/collection/components/post-tag/post-tag.css +1 -3
- package/dist/collection/components/post-tag/post-tag.js +2 -2
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +3 -3
- package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
- package/dist/collection/components/post-tooltip/post-tooltip.js +62 -212
- package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.css +1 -0
- package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +230 -0
- package/dist/collection/index.js +3 -1
- package/dist/collection/utils/attribute-observer.js +6 -5
- package/dist/collection/utils/breakpoints.js +21 -15
- package/dist/collection/utils/component-on-ready.js +4 -4
- package/dist/collection/utils/debounce.js +2 -1
- package/dist/collection/utils/environment.js +2 -0
- package/dist/collection/utils/event-guard.js +43 -0
- package/dist/collection/utils/{is-focusable.js → get-focusable-children.js} +10 -3
- 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/collection/utils/property-checkers/check-non-empty.js +6 -2
- package/dist/collection/utils/property-checkers/check-one-of.js +8 -3
- package/dist/collection/utils/property-checkers/check-pattern.js +8 -3
- package/dist/collection/utils/property-checkers/check-type.js +11 -6
- package/dist/collection/utils/property-checkers/check-url.js +11 -6
- package/dist/collection/utils/property-checkers/empty-or.js +5 -2
- package/dist/collection/utils/sass-export.js +8 -5
- package/dist/components/breakpoints.js +56 -0
- package/dist/components/check-non-empty.js +6 -2
- package/dist/components/check-one-of.js +8 -3
- package/dist/components/check-type.js +11 -6
- package/dist/components/event-guard.js +45 -0
- package/dist/components/fade.js +6 -2
- package/dist/components/get-focusable-children.js +35 -0
- package/dist/components/get-root.js +7 -1
- package/dist/components/index.browser.js +14 -0
- package/dist/components/index.js +3 -1
- package/dist/components/index2.js +24 -11
- package/dist/components/long-press-event.js +264 -0
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +14 -13
- package/dist/components/post-accordion2.js +8 -9
- package/dist/components/post-avatar2.js +8 -11
- package/dist/components/post-back-to-top2.js +41 -20
- package/dist/components/post-banner2.js +15 -13
- package/dist/components/post-breadcrumb-item2.js +9 -9
- package/dist/components/post-breadcrumbs.d.ts +11 -0
- package/dist/components/post-breadcrumbs.js +6 -0
- package/dist/components/post-breadcrumbs2.js +177 -0
- package/dist/components/post-card-control2.js +16 -19
- package/dist/components/post-closebutton2.js +7 -2
- package/dist/components/post-collapsible-trigger2.js +46 -48
- package/dist/components/post-collapsible2.js +13 -10
- package/dist/components/post-footer2.js +8 -54
- package/dist/components/post-header2.js +174 -51
- package/dist/components/post-icon2.js +72 -29
- package/dist/components/post-language-option2.js +21 -12
- package/dist/components/post-language-switch2.js +44 -45
- package/dist/components/{post-breadcrumb.d.ts → post-linkarea.d.ts} +4 -4
- package/dist/components/post-linkarea.js +6 -0
- package/dist/components/post-linkarea2.js +43 -0
- package/dist/components/post-list-item2.js +2 -1
- package/dist/components/post-list2.js +5 -4
- package/dist/components/post-logo2.js +4 -3
- package/dist/components/post-mainnavigation2.js +150 -15
- package/dist/components/post-megadropdown-trigger2.js +43 -13
- package/dist/components/post-megadropdown2.js +136 -39
- package/dist/components/post-menu-item2.js +2 -8
- package/dist/components/post-menu-trigger2.js +17 -10
- package/dist/components/post-menu2.js +43 -54
- package/dist/components/post-popover2.js +46 -15
- package/dist/components/post-popovercontainer2.js +921 -111
- package/dist/components/post-rating2.js +2 -2
- package/dist/components/post-tab-header2.js +8 -6
- package/dist/components/post-tab-panel2.js +4 -3
- package/dist/components/post-tabs2.js +10 -12
- package/dist/components/post-tag2.js +2 -2
- package/dist/components/post-togglebutton2.js +4 -3
- package/dist/components/post-tooltip-trigger.d.ts +11 -0
- package/dist/components/post-tooltip-trigger.js +6 -0
- package/dist/components/post-tooltip-trigger2.js +4705 -0
- package/dist/components/post-tooltip2.js +34 -4960
- package/dist/components/slide.js +9 -9
- package/dist/docs.json +567 -252
- package/dist/esm/breakpoints-7812702e.js +56 -0
- package/dist/esm/check-non-empty-258a56b3.js +13 -0
- package/dist/esm/check-one-of-0bee20f5.js +11 -0
- package/dist/esm/check-type-37d5d307.js +19 -0
- package/dist/esm/check-url-17962bc8.js +17 -0
- package/dist/esm/event-guard-538ee077.js +45 -0
- package/dist/esm/fade-1f3cacf4.js +11 -0
- package/dist/esm/get-root-1b1af46f.js +15 -0
- package/dist/esm/index-8f8fe5b0.js +32 -0
- package/dist/esm/{index-fb8d6be7.js → index-f4d19816.js} +17 -10
- package/dist/esm/index.browser-ff103197.js +14 -0
- package/dist/esm/index.js +33 -30
- package/dist/esm/loader.js +3 -3
- package/dist/esm/long-press-event-04d24397.js +264 -0
- package/dist/esm/package-d9237b44.js +3 -0
- package/dist/esm/{post-accordion-ee54a3ef.js → post-accordion-fdcf7205.js} +11 -12
- package/dist/esm/post-accordion-item-e11e3804.js +62 -0
- package/dist/esm/post-accordion-item.entry.js +10 -7
- package/dist/esm/post-accordion.entry.js +6 -4
- package/dist/esm/{post-avatar-5572fa73.js → post-avatar-d360c6d2.js} +10 -13
- package/dist/esm/post-avatar.entry.js +5 -4
- package/dist/esm/post-back-to-top-85796c8b.js +94 -0
- package/dist/esm/post-back-to-top.entry.js +7 -6
- package/dist/esm/post-banner-a3090f67.js +90 -0
- package/dist/esm/post-banner.entry.js +11 -9
- package/dist/esm/post-breadcrumb-item_2.entry.js +8 -7
- package/dist/esm/post-breadcrumbs-15ec5a26.js +118 -0
- package/dist/esm/post-breadcrumbs.entry.js +5 -0
- package/dist/esm/post-card-control-6142534e.js +267 -0
- package/dist/esm/post-card-control.entry.js +6 -5
- package/dist/esm/post-closebutton_15.entry.js +13 -10
- package/dist/esm/{post-collapsible-trigger-1c7833f8.js → post-collapsible-trigger-68306358.js} +59 -60
- package/dist/esm/post-collapsible_2.entry.js +11 -10
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/{post-footer-b18875e7.js → post-footer-d2a3270e.js} +10 -56
- package/dist/esm/post-footer.entry.js +4 -3
- package/dist/esm/post-linkarea-64998c67.js +28 -0
- package/dist/esm/post-linkarea.entry.js +3 -0
- package/dist/esm/{post-menu-item-2906384b.js → post-menu-item-95a0a647.js} +11 -17
- package/dist/esm/post-popover-c5f81087.js +133 -0
- package/dist/esm/post-popover.entry.js +4 -4
- package/dist/esm/{post-rating-95cbdbb8.js → post-rating-7bfedafb.js} +4 -4
- package/dist/esm/post-rating.entry.js +3 -3
- package/dist/esm/post-tab-header-08033da4.js +32 -0
- package/dist/esm/post-tab-header.entry.js +6 -4
- package/dist/esm/{post-tab-panel-cafd9e04.js → post-tab-panel-be701793.js} +5 -4
- package/dist/esm/post-tab-panel.entry.js +4 -3
- package/dist/esm/{post-tabs-beef8eae.js → post-tabs-c69e2842.js} +13 -15
- package/dist/esm/post-tabs.entry.js +5 -4
- package/dist/esm/post-tag-ebac7f3e.js +45 -0
- package/dist/esm/post-tag.entry.js +3 -3
- package/dist/esm/post-togglebutton-706e3af0.js +4478 -0
- package/dist/esm/post-tooltip-9a195d47.js +71 -0
- package/dist/esm/{post-tooltip-b298039a.js → post-tooltip-trigger-7d6f234b.js} +143 -456
- package/dist/esm/post-tooltip-trigger.entry.js +5 -0
- package/dist/esm/post-tooltip.entry.js +5 -9
- package/dist/esm/{slide-3422b8a3.js → slide-cd2850ee.js} +9 -9
- package/dist/post-components/index.esm.js +1 -1
- package/dist/post-components/p-034715ec.js +1 -0
- package/dist/post-components/p-0717fe4c.js +1 -0
- package/dist/post-components/p-0889c759.js +1 -0
- package/dist/post-components/p-0c03547b.js +1 -0
- package/dist/post-components/p-0de8d05f.js +1 -0
- package/dist/post-components/p-1373a79b.entry.js +1 -0
- package/dist/post-components/{p-4f9746f6.js → p-17dc4170.js} +2 -9
- package/dist/post-components/p-181c73d5.js +1 -0
- package/dist/post-components/p-1a21fd8d.js +1 -0
- package/dist/post-components/p-1ab3eba4.entry.js +1 -0
- package/dist/post-components/p-2d6c0670.js +1 -0
- package/dist/post-components/p-2dc0a2d0.js +1 -0
- package/dist/post-components/p-35ad2e11.entry.js +1 -0
- package/dist/post-components/p-368c473a.js +1 -0
- package/dist/post-components/p-38f778a7.entry.js +1 -0
- package/dist/post-components/p-39a8df3c.entry.js +1 -0
- package/dist/post-components/p-3c7f6003.js +1 -0
- package/dist/post-components/p-474a41bc.entry.js +1 -0
- package/dist/post-components/p-64e3de38.js +1 -0
- package/dist/post-components/p-69bc8eaf.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-72310bf0.entry.js +1 -0
- package/dist/post-components/p-7709c14a.js +1 -0
- package/dist/post-components/p-804b61b7.entry.js +1 -0
- package/dist/post-components/p-85fdc2d3.js +1 -0
- package/dist/post-components/p-89247caa.js +1 -0
- package/dist/post-components/p-89dc67c7.entry.js +1 -0
- package/dist/post-components/p-8db32dab.js +8 -0
- package/dist/post-components/p-8f7f5200.entry.js +1 -0
- package/dist/post-components/p-964f9581.js +1 -0
- package/dist/post-components/p-9b052461.js +1 -0
- package/dist/post-components/{p-c0ae9886.js → p-9e461613.js} +2 -2
- package/dist/post-components/p-a52b2d34.js +1 -0
- package/dist/post-components/p-ab566526.js +1 -0
- package/dist/post-components/p-b648e537.entry.js +1 -0
- package/dist/post-components/p-bc33a6d9.js +1 -0
- package/dist/post-components/p-bcfdbd0b.entry.js +1 -0
- package/dist/post-components/p-beb67979.js +1 -0
- package/dist/post-components/p-c41868b1.js +1 -0
- package/dist/post-components/p-c65f32b0.js +1 -0
- package/dist/post-components/p-c71700a7.js +1 -0
- package/dist/post-components/p-cb027003.js +1 -0
- package/dist/post-components/p-cc5b1437.js +1 -0
- package/dist/post-components/p-ceda889e.entry.js +1 -0
- package/dist/post-components/p-d45df336.js +1 -0
- package/dist/post-components/p-de4d4274.js +1 -0
- package/dist/post-components/p-deb9efcf.entry.js +1 -0
- package/dist/post-components/p-e585c6fe.js +1 -0
- package/dist/post-components/p-e9f1cc46.entry.js +1 -0
- package/dist/post-components/p-ee4e776d.entry.js +1 -0
- package/dist/post-components/p-ee7c3bcc.entry.js +1 -0
- package/dist/post-components/p-f56482fa.entry.js +1 -0
- package/dist/post-components/p-f8c652ce.entry.js +1 -0
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/types/animations/collapse.d.ts +2 -2
- package/dist/types/animations/fade.d.ts +2 -2
- package/dist/types/animations/slide.d.ts +2 -2
- package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +1 -1
- package/dist/types/components/post-avatar/post-avatar.d.ts +1 -1
- package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +4 -2
- package/dist/types/components/post-banner/post-banner.d.ts +5 -5
- package/dist/types/components/post-breadcrumb-item/post-breadcrumb-item.d.ts +4 -0
- 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 +3 -3
- package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +9 -14
- package/dist/types/components/post-footer/post-footer.d.ts +2 -2
- package/dist/types/components/post-header/post-header.d.ts +38 -10
- package/dist/types/components/post-icon/post-icon.d.ts +11 -7
- package/dist/types/components/post-language-option/post-language-option.d.ts +9 -5
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +16 -8
- package/dist/types/components/post-language-switch/switch-variants.d.ts +1 -1
- package/dist/types/components/post-linkarea/post-linkarea.d.ts +5 -0
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +36 -9
- package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +37 -13
- package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +9 -1
- package/dist/types/components/post-menu/post-menu.d.ts +4 -3
- package/dist/types/components/post-menu-item/post-menu-item.d.ts +0 -1
- package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +4 -3
- package/dist/types/components/post-popover/post-popover.d.ts +6 -4
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +40 -14
- package/dist/types/components/post-tab-header/post-tab-header.d.ts +1 -1
- package/dist/types/components/post-tabs/post-tabs.d.ts +1 -1
- package/dist/types/components/post-tag/post-tag.d.ts +1 -1
- package/dist/types/components/post-togglebutton/post-togglebutton.d.ts +1 -1
- package/dist/types/components/post-tooltip/post-tooltip.d.ts +21 -34
- package/dist/types/components/post-tooltip-trigger/post-tooltip-trigger.d.ts +46 -0
- package/dist/types/components.d.ts +181 -94
- package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/.config/bindings.angular.d.ts +2 -0
- package/dist/types/index.d.ts +5 -3
- package/dist/types/popover-fn.d.ts +11 -0
- package/dist/types/utils/attribute-observer.d.ts +1 -1
- package/dist/types/utils/breakpoints.d.ts +1 -0
- package/dist/types/utils/component-on-ready.d.ts +1 -1
- package/dist/types/utils/environment.d.ts +2 -0
- package/dist/types/utils/event-guard.d.ts +4 -0
- package/dist/types/utils/get-focusable-children.d.ts +1 -0
- package/dist/types/utils/get-root.d.ts +5 -1
- package/dist/types/utils/index.d.ts +5 -0
- package/dist/types/utils/property-checkers/check-non-empty.d.ts +3 -1
- package/dist/types/utils/property-checkers/check-one-of.d.ts +3 -1
- package/dist/types/utils/property-checkers/check-pattern.d.ts +3 -1
- package/dist/types/utils/property-checkers/check-type.d.ts +3 -1
- package/dist/types/utils/property-checkers/check-url.d.ts +3 -1
- package/dist/types/utils/property-checkers/index.d.ts +12 -4
- package/dist/types/utils/sass-export.d.ts +5 -1
- package/loaders/breakpoints.js +56 -0
- package/loaders/check-non-empty.js +6 -2
- package/loaders/check-one-of.js +8 -3
- package/loaders/check-type.js +11 -6
- package/loaders/event-guard.js +45 -0
- package/loaders/fade.js +6 -2
- package/loaders/get-focusable-children.js +35 -0
- package/loaders/get-root.js +7 -1
- package/loaders/index.browser.js +14 -0
- package/loaders/index.d.ts +6 -2
- package/loaders/index.js +8 -5
- package/loaders/index2.js +25 -12
- package/loaders/long-press-event.js +264 -0
- package/loaders/package.js +1 -1
- package/loaders/post-accordion-item2.js +15 -14
- package/loaders/post-accordion.js +8 -9
- package/loaders/post-avatar.js +8 -11
- package/loaders/post-back-to-top.js +41 -20
- package/loaders/post-banner.js +16 -14
- package/loaders/post-breadcrumb-item2.js +9 -9
- package/loaders/post-breadcrumbs.d.ts +11 -0
- package/loaders/post-breadcrumbs.js +180 -0
- package/loaders/post-card-control.js +16 -19
- package/loaders/post-closebutton.js +7 -2
- package/loaders/post-collapsible-trigger2.js +46 -48
- package/loaders/post-collapsible2.js +14 -11
- package/loaders/post-footer.js +8 -54
- package/loaders/post-header.js +174 -51
- package/loaders/post-icon2.js +73 -30
- package/loaders/post-language-option.js +22 -13
- package/loaders/post-language-switch.js +45 -46
- package/loaders/{post-breadcrumb.d.ts → post-linkarea.d.ts} +4 -4
- package/loaders/post-linkarea.js +46 -0
- package/loaders/post-list-item.js +2 -1
- package/loaders/post-list.js +5 -4
- package/loaders/post-logo.js +4 -3
- package/loaders/post-mainnavigation.js +150 -15
- package/loaders/post-megadropdown-trigger.js +43 -13
- package/loaders/post-megadropdown.js +136 -39
- package/loaders/post-menu-item2.js +2 -8
- package/loaders/post-menu-trigger2.js +17 -10
- package/loaders/post-menu2.js +43 -54
- package/loaders/post-popover.js +46 -15
- package/loaders/post-popovercontainer2.js +921 -111
- package/loaders/post-rating.js +2 -2
- package/loaders/post-tab-header.js +8 -6
- package/loaders/post-tab-panel.js +4 -3
- package/loaders/post-tabs.js +10 -12
- package/loaders/post-tag.js +2 -2
- package/loaders/post-togglebutton.js +4 -3
- package/loaders/post-tooltip-trigger.d.ts +11 -0
- package/loaders/post-tooltip-trigger.js +4708 -0
- package/loaders/post-tooltip.js +34 -4960
- package/loaders/slide.js +9 -9
- package/package.json +41 -32
- package/dist/cjs/attribute-observer-10f08c04.js +0 -27
- package/dist/cjs/check-non-empty-eeaa8f77.js +0 -11
- package/dist/cjs/check-one-of-f4f5d0c0.js +0 -8
- package/dist/cjs/check-type-64af82a9.js +0 -16
- package/dist/cjs/check-url-3ffdd2fb.js +0 -14
- package/dist/cjs/debounce-1151afe3.js +0 -12
- package/dist/cjs/fade-35a3633a.js +0 -10
- package/dist/cjs/get-root-7a3498ef.js +0 -11
- package/dist/cjs/index-5d4e0aed.js +0 -29
- package/dist/cjs/post-accordion-item-ecc6749f.js +0 -63
- package/dist/cjs/post-back-to-top-60762f8e.js +0 -75
- package/dist/cjs/post-banner-9662f22c.js +0 -90
- package/dist/cjs/post-breadcrumb-b40732fc.js +0 -111
- package/dist/cjs/post-breadcrumb.cjs.entry.js +0 -13
- package/dist/cjs/post-card-control-039c9a4b.js +0 -272
- package/dist/cjs/post-popover-d0ce9dc6.js +0 -104
- package/dist/cjs/post-tab-header-4b6d8d54.js +0 -32
- package/dist/cjs/post-tag-ddaaaedc.js +0 -47
- package/dist/cjs/post-togglebutton-0984a694.js +0 -3239
- package/dist/collection/components/post-breadcrumb/post-breadcrumb.css +0 -3
- package/dist/collection/components/post-menu-item/post-menu-item.css +0 -1
- package/dist/components/attribute-observer.js +0 -25
- package/dist/components/debounce.js +0 -10
- package/dist/components/post-breadcrumb.js +0 -6
- package/dist/components/post-breadcrumb2.js +0 -168
- package/dist/esm/attribute-observer-37fa950a.js +0 -25
- package/dist/esm/check-non-empty-58bd6b17.js +0 -9
- package/dist/esm/check-one-of-6b3ef8eb.js +0 -6
- package/dist/esm/check-type-8828dbe4.js +0 -14
- package/dist/esm/check-url-a974431e.js +0 -12
- package/dist/esm/debounce-abe98cc2.js +0 -10
- package/dist/esm/fade-7fd71785.js +0 -7
- package/dist/esm/get-root-7af2e0d1.js +0 -9
- package/dist/esm/index-b49c9904.js +0 -24
- package/dist/esm/package-4d81f3c2.js +0 -3
- package/dist/esm/post-accordion-item-e10452dc.js +0 -61
- package/dist/esm/post-back-to-top-1d823c43.js +0 -73
- package/dist/esm/post-banner-78480475.js +0 -88
- package/dist/esm/post-breadcrumb-aaa77f74.js +0 -109
- package/dist/esm/post-breadcrumb.entry.js +0 -5
- package/dist/esm/post-card-control-862aa961.js +0 -270
- package/dist/esm/post-popover-2432bb3f.js +0 -102
- package/dist/esm/post-tab-header-dfea00ea.js +0 -30
- package/dist/esm/post-tag-a77e7af6.js +0 -45
- package/dist/esm/post-togglebutton-395bf3f0.js +0 -3223
- package/dist/post-components/p-0711f76d.entry.js +0 -1
- package/dist/post-components/p-095a06f6.entry.js +0 -1
- package/dist/post-components/p-0b5a5f32.js +0 -1
- package/dist/post-components/p-135fa60f.js +0 -1
- package/dist/post-components/p-18e38d8a.js +0 -1
- package/dist/post-components/p-2737eaf5.js +0 -1
- package/dist/post-components/p-2e1ec074.entry.js +0 -1
- package/dist/post-components/p-4202b433.entry.js +0 -1
- package/dist/post-components/p-45773f59.js +0 -1
- package/dist/post-components/p-4953de7e.js +0 -1
- package/dist/post-components/p-4a3f67ab.js +0 -1
- package/dist/post-components/p-4f67c5f5.entry.js +0 -1
- package/dist/post-components/p-5075c672.entry.js +0 -1
- package/dist/post-components/p-515e0f96.js +0 -1
- package/dist/post-components/p-5467b223.js +0 -1
- package/dist/post-components/p-611b3c41.js +0 -1
- package/dist/post-components/p-67036798.entry.js +0 -1
- package/dist/post-components/p-6adeaa6c.js +0 -1
- package/dist/post-components/p-6d953fb2.js +0 -1
- package/dist/post-components/p-6edb0ac5.js +0 -1
- package/dist/post-components/p-6f8f39ca.js +0 -1
- package/dist/post-components/p-7503a623.js +0 -1
- package/dist/post-components/p-761b24c7.entry.js +0 -1
- package/dist/post-components/p-77c4c1d2.js +0 -1
- package/dist/post-components/p-7cf0c2ad.js +0 -1
- package/dist/post-components/p-856c14d6.entry.js +0 -1
- package/dist/post-components/p-866bf50a.entry.js +0 -1
- package/dist/post-components/p-8d621781.js +0 -1
- package/dist/post-components/p-8fe2d72c.entry.js +0 -1
- package/dist/post-components/p-9ad5088f.entry.js +0 -1
- package/dist/post-components/p-a1d2b90e.js +0 -1
- package/dist/post-components/p-a521419d.entry.js +0 -1
- package/dist/post-components/p-aa538648.js +0 -1
- package/dist/post-components/p-afdbee2f.js +0 -1
- package/dist/post-components/p-b02817f2.entry.js +0 -1
- package/dist/post-components/p-b095519d.js +0 -1
- package/dist/post-components/p-b157dcba.entry.js +0 -1
- package/dist/post-components/p-b22656b1.js +0 -1
- package/dist/post-components/p-bdbd11cb.js +0 -1
- package/dist/post-components/p-c537e196.entry.js +0 -1
- package/dist/post-components/p-d4f93f2b.js +0 -1
- package/dist/post-components/p-dca4246a.entry.js +0 -1
- package/dist/post-components/p-f319b026.js +0 -1
- package/dist/post-components/p-f4b7b379.js +0 -1
- package/dist/post-components/p-fac66087.entry.js +0 -1
- package/dist/post-components/p-fc91cbc2.js +0 -1
- package/dist/types/utils/is-focusable.d.ts +0 -1
- package/loaders/attribute-observer.js +0 -25
- package/loaders/debounce.js +0 -10
- package/loaders/post-breadcrumb.js +0 -171
|
@@ -1,23 +1,153 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { version } from "../../../../package";
|
|
3
|
+
const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
|
|
4
|
+
const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
|
|
2
5
|
export class PostMainnavigation {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.canScrollLeft = false;
|
|
8
|
+
this.canScrollRight = false;
|
|
9
|
+
this.scrollRight = this.scrollRight.bind(this);
|
|
10
|
+
this.scrollLeft = this.scrollLeft.bind(this);
|
|
11
|
+
this.handleMutations = this.handleMutations.bind(this);
|
|
12
|
+
this.checkScrollability = this.checkScrollability.bind(this);
|
|
13
|
+
this.resizeObserver = new ResizeObserver(this.checkScrollability);
|
|
14
|
+
this.mutationObserver = new MutationObserver(this.handleMutations);
|
|
15
|
+
}
|
|
16
|
+
componentDidLoad() {
|
|
17
|
+
setTimeout(() => {
|
|
18
|
+
this.fixLayoutShift();
|
|
19
|
+
this.checkScrollability();
|
|
20
|
+
});
|
|
21
|
+
// Observe the navbar for size changes
|
|
22
|
+
this.resizeObserver.observe(this.navbar);
|
|
23
|
+
// Observe the navabar for mutation changes
|
|
24
|
+
this.mutationObserver.observe(this.navbar, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
|
|
25
|
+
// Ensure the scroll buttons are correctly displayed or hidden whenever the navbar is scrolled
|
|
26
|
+
this.navbar.addEventListener('scrollend', this.checkScrollability);
|
|
27
|
+
}
|
|
3
28
|
/**
|
|
4
|
-
*
|
|
29
|
+
* Disconnects observers and remove event listeners when the main navigation is removed from the DOM.
|
|
5
30
|
*/
|
|
6
|
-
|
|
7
|
-
this.
|
|
31
|
+
disconnectedCallback() {
|
|
32
|
+
this.mutationObserver.disconnect();
|
|
33
|
+
this.resizeObserver.disconnect();
|
|
34
|
+
this.navbar.removeEventListener('scrollend', this.checkScrollability);
|
|
8
35
|
}
|
|
9
36
|
/**
|
|
10
|
-
*
|
|
37
|
+
* Stops the repeated scrolling when the mouse button is released.
|
|
11
38
|
*/
|
|
12
|
-
|
|
13
|
-
this.
|
|
39
|
+
stopScrolling() {
|
|
40
|
+
if (this.scrollRepeatInterval)
|
|
41
|
+
clearInterval(this.scrollRepeatInterval);
|
|
42
|
+
}
|
|
43
|
+
async handleMutations(mutations) {
|
|
44
|
+
const addedNodes = mutations.flatMap((mutation) => {
|
|
45
|
+
return Array.from(mutation.addedNodes);
|
|
46
|
+
});
|
|
47
|
+
// Wait for all elements to be hydrated
|
|
48
|
+
await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
|
|
49
|
+
this.fixLayoutShift();
|
|
50
|
+
this.checkScrollability();
|
|
51
|
+
}
|
|
52
|
+
get navigationItems() {
|
|
53
|
+
return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Hack to fix the layout shift due to bold text on active elements
|
|
57
|
+
*/
|
|
58
|
+
fixLayoutShift() {
|
|
59
|
+
this.navigationItems
|
|
60
|
+
.filter(item => !item.matches(':has(.nav-el-active)'))
|
|
61
|
+
.forEach(item => {
|
|
62
|
+
item.innerHTML = `
|
|
63
|
+
<span class="nav-el-active">${item.innerHTML}</span>
|
|
64
|
+
<span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
|
|
65
|
+
`;
|
|
66
|
+
});
|
|
14
67
|
}
|
|
15
68
|
handleBackButtonClick() {
|
|
16
|
-
|
|
17
|
-
|
|
69
|
+
const header = this.navbar.closest('post-header');
|
|
70
|
+
if (header)
|
|
71
|
+
header.toggleMobileMenu();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns whether scrolling is enabled in either the left or right direction.
|
|
75
|
+
*/
|
|
76
|
+
get canScroll() {
|
|
77
|
+
return this.canScrollLeft || this.canScrollRight;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks if scrolling is possible in either direction (left or right) and updates the state accordingly.
|
|
81
|
+
*/
|
|
82
|
+
checkScrollability() {
|
|
83
|
+
const { scrollLeft, scrollWidth, clientWidth } = this.navbar;
|
|
84
|
+
if (scrollWidth === clientWidth) {
|
|
85
|
+
// If scroll width equals client width, scrolling is disabled in both directions
|
|
86
|
+
this.canScrollLeft = this.canScrollRight = false;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.canScrollLeft = Math.floor(scrollLeft) > 0; // Scrolling left is possible if not at the start
|
|
90
|
+
this.canScrollRight = Math.ceil(clientWidth + scrollLeft) < scrollWidth; // Scrolling right is possible if not at the end
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Handles the scrolling behavior when a user clicks on the left or right scroll buttons.
|
|
95
|
+
*/
|
|
96
|
+
handleScrollButtonClick(e, direction) {
|
|
97
|
+
if (!this.canScroll || e.button !== 0)
|
|
98
|
+
return;
|
|
99
|
+
// Disable interaction with the navbar during scrolling
|
|
100
|
+
this.temporarilyDisableNavbar();
|
|
101
|
+
// Set up the correct scroll function
|
|
102
|
+
const scroll = direction === 'right' ? this.scrollRight : this.scrollLeft;
|
|
103
|
+
scroll();
|
|
104
|
+
// Repeat the scrolling action while the button is held down
|
|
105
|
+
this.scrollRepeatInterval = setInterval(() => {
|
|
106
|
+
scroll();
|
|
107
|
+
}, SCROLL_REPEAT_INTERVAL);
|
|
108
|
+
}
|
|
109
|
+
scrollRight() {
|
|
110
|
+
const scrollRightLeftEdge = document
|
|
111
|
+
.querySelector('.scroll-right')
|
|
112
|
+
.getBoundingClientRect().left;
|
|
113
|
+
for (const navigationItem of this.navigationItems) {
|
|
114
|
+
const { right, width } = navigationItem.getBoundingClientRect();
|
|
115
|
+
// Scroll to the first navigation item that is less than 75% visible
|
|
116
|
+
const isThreeQuartersVisible = right - 0.25 * width < scrollRightLeftEdge;
|
|
117
|
+
if (!isThreeQuartersVisible) {
|
|
118
|
+
this.navbar.scrollBy({ left: right - scrollRightLeftEdge });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
scrollLeft() {
|
|
124
|
+
const scrollLeftRightEdge = document
|
|
125
|
+
.querySelector('.scroll-left')
|
|
126
|
+
.getBoundingClientRect().right;
|
|
127
|
+
for (const navigationItem of this.navigationItems.reverse()) {
|
|
128
|
+
const { left, width } = navigationItem.getBoundingClientRect();
|
|
129
|
+
// Scroll to the first navigation item that is less than 75% visible
|
|
130
|
+
const isThreeQuartersVisible = left + 0.25 * width > scrollLeftRightEdge;
|
|
131
|
+
if (!isThreeQuartersVisible) {
|
|
132
|
+
this.navbar.scrollBy({ left: left - scrollLeftRightEdge });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Temporarily disables interactions with the navbar during scrolling to prevent accidental clicks.
|
|
139
|
+
* Re-enables interactions after a brief delay to avoid blocking the user entirely.
|
|
140
|
+
*/
|
|
141
|
+
temporarilyDisableNavbar() {
|
|
142
|
+
if (this.navbarDisableTimer)
|
|
143
|
+
clearTimeout(this.navbarDisableTimer);
|
|
144
|
+
this.navbar.setAttribute('inert', '');
|
|
145
|
+
this.navbarDisableTimer = setTimeout(() => {
|
|
146
|
+
this.navbar.removeAttribute('inert');
|
|
147
|
+
}, NAVBAR_DISABLE_DURATION);
|
|
18
148
|
}
|
|
19
149
|
render() {
|
|
20
|
-
return (h(Host, { key: '
|
|
150
|
+
return (h(Host, { key: '6cd850555585d87eb25e3f6892b8010f5e4d23d6', slot: "post-mainnavigation", version: version }, h("div", { key: '3411008120d072920f4de0b71c9dc014748f1390', onClick: () => this.handleBackButtonClick(), class: "back-button" }, h("slot", { key: '2e3747380cb546bd6da77e5ffba2403586205a55', name: "back-button" })), h("div", { key: 'e9eedd836b3f679ba2861109db2d0811c1142677', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, h("post-icon", { key: '628511a2c1812a08828e1aa2b51f26ad01a5a2cf', "aria-hidden": "true", name: "chevronleft" })), h("nav", { key: '1b660d65e1984e8701a98a369046f391fd177338', ref: el => (this.navbar = el) }, h("slot", { key: '0eb35366ac0bd58509afd6a12f68c2b09396a497' })), h("div", { key: '11145ad6602e2df78d3c3f4643cc6e4e960775aa', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, h("post-icon", { key: '26e795cd00221dbfb1a7632453d0d48993584b0b', "aria-hidden": "true", name: "chevronright" }))));
|
|
21
151
|
}
|
|
22
152
|
static get is() { return "post-mainnavigation"; }
|
|
23
153
|
static get originalStyleUrls() {
|
|
@@ -30,23 +160,25 @@ export class PostMainnavigation {
|
|
|
30
160
|
"$": ["post-mainnavigation.css"]
|
|
31
161
|
};
|
|
32
162
|
}
|
|
33
|
-
static get
|
|
163
|
+
static get states() {
|
|
164
|
+
return {
|
|
165
|
+
"canScrollLeft": {},
|
|
166
|
+
"canScrollRight": {}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
static get listeners() {
|
|
34
170
|
return [{
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
"resolved": "any",
|
|
47
|
-
"references": {}
|
|
48
|
-
}
|
|
171
|
+
"name": "mouseup",
|
|
172
|
+
"method": "stopScrolling",
|
|
173
|
+
"target": "window",
|
|
174
|
+
"capture": false,
|
|
175
|
+
"passive": true
|
|
176
|
+
}, {
|
|
177
|
+
"name": "mouseleave",
|
|
178
|
+
"method": "stopScrolling",
|
|
179
|
+
"target": "window",
|
|
180
|
+
"capture": false,
|
|
181
|
+
"passive": true
|
|
49
182
|
}];
|
|
50
183
|
}
|
|
51
|
-
static get elementRef() { return "host"; }
|
|
52
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}*,::before,::after{box-sizing:border-box}
|
|
1
|
+
@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;position:fixed;inset-block-start:var(--post-header-navigation-current-inset);inset-inline:0;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--post-header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:"";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:"";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}
|
|
@@ -1,59 +1,157 @@
|
|
|
1
|
+
import { getFocusableChildren } from "../../utils/get-focusable-children";
|
|
1
2
|
import { h, Host } from "@stencil/core";
|
|
3
|
+
import { version } from "../../../../package";
|
|
4
|
+
import { breakpoint } from "../../utils/breakpoints";
|
|
2
5
|
export class PostMegadropdown {
|
|
3
6
|
constructor() {
|
|
7
|
+
this.handleClickOutside = (event) => {
|
|
8
|
+
if (this.device !== 'desktop')
|
|
9
|
+
return;
|
|
10
|
+
const target = event.target;
|
|
11
|
+
if (this.host.contains(target)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (target instanceof HTMLElement) {
|
|
15
|
+
const trigger = target.closest('post-megadropdown-trigger');
|
|
16
|
+
if (trigger) {
|
|
17
|
+
const targetDropdownId = trigger.getAttribute('for');
|
|
18
|
+
if (targetDropdownId !== this.host.id) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
this.hide(false);
|
|
24
|
+
};
|
|
25
|
+
this.device = breakpoint.get('name');
|
|
4
26
|
this.isVisible = false;
|
|
5
27
|
this.animationClass = null;
|
|
6
28
|
}
|
|
7
|
-
|
|
8
|
-
this.
|
|
9
|
-
|
|
10
|
-
this.
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
29
|
+
breakpointChange(e) {
|
|
30
|
+
this.device = e.detail;
|
|
31
|
+
if (this.device === 'desktop' && this.isVisible) {
|
|
32
|
+
this.animationClass = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
disconnectedCallback() {
|
|
36
|
+
this.removeListeners();
|
|
37
|
+
window.removeEventListener('postBreakpoint:name', this.breakpointChange.bind(this));
|
|
38
|
+
if (PostMegadropdown.activeDropdown === this) {
|
|
39
|
+
PostMegadropdown.activeDropdown = null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
componentWillRender() {
|
|
43
|
+
this.getFocusableElements();
|
|
17
44
|
}
|
|
18
45
|
/**
|
|
19
46
|
* Toggles the dropdown visibility based on its current state.
|
|
20
47
|
*/
|
|
21
|
-
async toggle(
|
|
22
|
-
this.isVisible
|
|
48
|
+
async toggle() {
|
|
49
|
+
if (this.isVisible) {
|
|
50
|
+
this.hide();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
await this.show();
|
|
54
|
+
}
|
|
23
55
|
}
|
|
24
56
|
/**
|
|
25
|
-
* Displays the
|
|
26
|
-
*
|
|
27
|
-
* @param target - The HTML element relative to which the popover dropdown should be displayed.
|
|
57
|
+
* Displays the dropdown.
|
|
28
58
|
*/
|
|
29
|
-
async show(
|
|
30
|
-
if (this
|
|
31
|
-
|
|
32
|
-
|
|
59
|
+
async show() {
|
|
60
|
+
if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
|
|
61
|
+
// Close the previously active dropdown without animation
|
|
62
|
+
PostMegadropdown.activeDropdown.forceClose();
|
|
33
63
|
}
|
|
34
64
|
else {
|
|
35
|
-
|
|
65
|
+
this.animationClass = 'slide-in';
|
|
66
|
+
}
|
|
67
|
+
this.isVisible = true;
|
|
68
|
+
PostMegadropdown.activeDropdown = this;
|
|
69
|
+
this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
|
|
70
|
+
if (this.firstFocusableEl &&
|
|
71
|
+
window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
|
|
72
|
+
this.firstFocusableEl.focus();
|
|
36
73
|
}
|
|
74
|
+
this.addListeners();
|
|
37
75
|
}
|
|
38
76
|
/**
|
|
39
|
-
* Hides the
|
|
77
|
+
* Hides the dropdown with an animation.
|
|
40
78
|
*/
|
|
41
|
-
hide() {
|
|
42
|
-
|
|
43
|
-
|
|
79
|
+
async hide(focusParent = true, forceClose = false) {
|
|
80
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
|
|
81
|
+
if (forceClose) {
|
|
82
|
+
this.forceClose();
|
|
44
83
|
}
|
|
45
84
|
else {
|
|
46
|
-
|
|
85
|
+
this.animationClass = 'slide-out';
|
|
47
86
|
}
|
|
48
87
|
}
|
|
49
|
-
|
|
50
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Sets focus to the first focusable element within the component.
|
|
90
|
+
*/
|
|
91
|
+
async focusFirst() {
|
|
92
|
+
this.firstFocusableEl?.focus();
|
|
51
93
|
}
|
|
52
|
-
|
|
53
|
-
this.
|
|
94
|
+
connectedCallback() {
|
|
95
|
+
window.addEventListener('postBreakpoint:name', this.breakpointChange.bind(this));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Forces the dropdown to close without animation.
|
|
99
|
+
*/
|
|
100
|
+
forceClose() {
|
|
101
|
+
this.isVisible = false;
|
|
102
|
+
this.animationClass = null;
|
|
103
|
+
this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
|
|
104
|
+
this.removeListeners();
|
|
105
|
+
}
|
|
106
|
+
handleAnimationEnd() {
|
|
107
|
+
if (this.animationClass === 'slide-out') {
|
|
108
|
+
this.isVisible = false;
|
|
109
|
+
this.animationClass = null;
|
|
110
|
+
PostMegadropdown.activeDropdown = null;
|
|
111
|
+
this.removeListeners();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
addListeners() {
|
|
115
|
+
this.host.addEventListener('keydown', e => this.keyboardHandler(e));
|
|
116
|
+
document.addEventListener('keyup', e => this.handleTabOutside(e));
|
|
117
|
+
document.addEventListener('mousedown', this.handleClickOutside);
|
|
118
|
+
}
|
|
119
|
+
removeListeners() {
|
|
120
|
+
this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
|
|
121
|
+
document.removeEventListener('keyup', e => this.handleTabOutside(e));
|
|
122
|
+
document.removeEventListener('mousedown', this.handleClickOutside);
|
|
123
|
+
}
|
|
124
|
+
getFocusableElements() {
|
|
125
|
+
const focusableEls = Array.from(this.host.querySelectorAll('post-list-item, h3, .back-button'));
|
|
126
|
+
const focusableChildren = focusableEls.flatMap(el => Array.from(getFocusableChildren(el)));
|
|
127
|
+
this.firstFocusableEl = focusableChildren[0];
|
|
128
|
+
this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
|
|
129
|
+
}
|
|
130
|
+
// Loop through the focusable children
|
|
131
|
+
keyboardHandler(e) {
|
|
132
|
+
if (e.key === 'Tab' && this.device !== 'desktop') {
|
|
133
|
+
if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
|
|
134
|
+
// If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
this.lastFocusableEl.focus();
|
|
137
|
+
}
|
|
138
|
+
else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
|
|
139
|
+
// If TAB and last element is focused, focus goes back to the first element of the megadropdown
|
|
140
|
+
e.preventDefault();
|
|
141
|
+
this.firstFocusableEl.focus();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
handleTabOutside(e) {
|
|
146
|
+
if (e.key === 'Tab' && this.device === 'desktop') {
|
|
147
|
+
if (!this.host.contains(e.target)) {
|
|
148
|
+
this.hide(false);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
54
151
|
}
|
|
55
152
|
render() {
|
|
56
|
-
|
|
153
|
+
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
154
|
+
return (h(Host, { key: '7426a12ebaeac0ce3b8402c3da4d5393daca059b', version: version }, h("div", { key: 'd47b60c334577f5662f19912f12ce941b4b52d94', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '2798f217b2b3e43c3c63072884bbbbe7d99ed62f', class: "megadropdown" }, h("slot", { key: 'b61f82bbc7f87f65d9b6957e7a4e5d6790b6dd00', name: "megadropdown-title" }), h("div", { key: 'f4996a819511cb59185faeedbdcec4be6e6f8a24', class: "megadropdown-content" }, h("slot", { key: '54f695c3b3d30a6a1aae7f7dc6f65f4d4d27de68' })), h("div", { key: 'b1334295c7d758e20c85b6c6c8cefc31dcf09e20', onClick: () => this.hide(true), class: "back-button" }, h("slot", { key: 'c4db69fa3207ce4cb47b725e37b1993820a2a64c', name: "back-button" })), h("div", { key: '68b22a3222382586fc749dec63e36edae84360c1', onClick: () => this.hide(true), class: "close-button" }, h("slot", { key: '8023b75c931a95dbd9552c1a713790e77e40f526', name: "close-button" }))))));
|
|
57
155
|
}
|
|
58
156
|
static get is() { return "post-megadropdown"; }
|
|
59
157
|
static get originalStyleUrls() {
|
|
@@ -68,6 +166,7 @@ export class PostMegadropdown {
|
|
|
68
166
|
}
|
|
69
167
|
static get states() {
|
|
70
168
|
return {
|
|
169
|
+
"device": {},
|
|
71
170
|
"isVisible": {},
|
|
72
171
|
"animationClass": {}
|
|
73
172
|
};
|
|
@@ -81,11 +180,11 @@ export class PostMegadropdown {
|
|
|
81
180
|
"composed": true,
|
|
82
181
|
"docs": {
|
|
83
182
|
"tags": [],
|
|
84
|
-
"text": "Emits when the dropdown is shown or hidden.\nThe event payload is
|
|
183
|
+
"text": "Emits when the dropdown is shown or hidden.\nThe event payload is an object.\n`isVisible` is true when the dropdown gets opened and false when it gets closed\n`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"
|
|
85
184
|
},
|
|
86
185
|
"complexType": {
|
|
87
|
-
"original": "boolean",
|
|
88
|
-
"resolved": "boolean",
|
|
186
|
+
"original": "{ isVisible: boolean; focusParent?: boolean }",
|
|
187
|
+
"resolved": "{ isVisible: boolean; focusParent?: boolean; }",
|
|
89
188
|
"references": {}
|
|
90
189
|
}
|
|
91
190
|
}];
|
|
@@ -94,20 +193,12 @@ export class PostMegadropdown {
|
|
|
94
193
|
return {
|
|
95
194
|
"toggle": {
|
|
96
195
|
"complexType": {
|
|
97
|
-
"signature": "(
|
|
98
|
-
"parameters": [
|
|
99
|
-
"name": "target",
|
|
100
|
-
"type": "HTMLElement",
|
|
101
|
-
"docs": ""
|
|
102
|
-
}],
|
|
196
|
+
"signature": "() => Promise<void>",
|
|
197
|
+
"parameters": [],
|
|
103
198
|
"references": {
|
|
104
199
|
"Promise": {
|
|
105
200
|
"location": "global",
|
|
106
201
|
"id": "global::Promise"
|
|
107
|
-
},
|
|
108
|
-
"HTMLElement": {
|
|
109
|
-
"location": "global",
|
|
110
|
-
"id": "global::HTMLElement"
|
|
111
202
|
}
|
|
112
203
|
},
|
|
113
204
|
"return": "Promise<void>"
|
|
@@ -119,33 +210,66 @@ export class PostMegadropdown {
|
|
|
119
210
|
},
|
|
120
211
|
"show": {
|
|
121
212
|
"complexType": {
|
|
122
|
-
"signature": "(
|
|
213
|
+
"signature": "() => Promise<void>",
|
|
214
|
+
"parameters": [],
|
|
215
|
+
"references": {
|
|
216
|
+
"Promise": {
|
|
217
|
+
"location": "global",
|
|
218
|
+
"id": "global::Promise"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"return": "Promise<void>"
|
|
222
|
+
},
|
|
223
|
+
"docs": {
|
|
224
|
+
"text": "Displays the dropdown.",
|
|
225
|
+
"tags": []
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"hide": {
|
|
229
|
+
"complexType": {
|
|
230
|
+
"signature": "(focusParent?: boolean, forceClose?: boolean) => Promise<void>",
|
|
123
231
|
"parameters": [{
|
|
124
|
-
"name": "
|
|
125
|
-
"type": "
|
|
126
|
-
"docs": "
|
|
232
|
+
"name": "focusParent",
|
|
233
|
+
"type": "boolean",
|
|
234
|
+
"docs": ""
|
|
235
|
+
}, {
|
|
236
|
+
"name": "forceClose",
|
|
237
|
+
"type": "boolean",
|
|
238
|
+
"docs": ""
|
|
127
239
|
}],
|
|
128
240
|
"references": {
|
|
129
241
|
"Promise": {
|
|
130
242
|
"location": "global",
|
|
131
243
|
"id": "global::Promise"
|
|
132
|
-
}
|
|
133
|
-
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"return": "Promise<void>"
|
|
247
|
+
},
|
|
248
|
+
"docs": {
|
|
249
|
+
"text": "Hides the dropdown with an animation.",
|
|
250
|
+
"tags": []
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
"focusFirst": {
|
|
254
|
+
"complexType": {
|
|
255
|
+
"signature": "() => Promise<void>",
|
|
256
|
+
"parameters": [],
|
|
257
|
+
"references": {
|
|
258
|
+
"Promise": {
|
|
134
259
|
"location": "global",
|
|
135
|
-
"id": "global::
|
|
260
|
+
"id": "global::Promise"
|
|
136
261
|
}
|
|
137
262
|
},
|
|
138
263
|
"return": "Promise<void>"
|
|
139
264
|
},
|
|
140
265
|
"docs": {
|
|
141
|
-
"text": "
|
|
142
|
-
"tags": [
|
|
143
|
-
"name": "param",
|
|
144
|
-
"text": "target - The HTML element relative to which the popover dropdown should be displayed."
|
|
145
|
-
}]
|
|
266
|
+
"text": "Sets focus to the first focusable element within the component.",
|
|
267
|
+
"tags": []
|
|
146
268
|
}
|
|
147
269
|
}
|
|
148
270
|
};
|
|
149
271
|
}
|
|
150
272
|
static get elementRef() { return "host"; }
|
|
151
273
|
}
|
|
274
|
+
/** Tracks the currently active dropdown instance. */
|
|
275
|
+
PostMegadropdown.activeDropdown = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
post-megadropdown-trigger{width:100
|
|
1
|
+
post-megadropdown-trigger{width:100%;position:relative;z-index:3}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
import { checkType } from "../../utils/index";
|
|
4
|
+
import { eventGuard } from "../../utils/event-gua";
|
|
4
5
|
export class PostMegadropdownTrigger {
|
|
5
6
|
constructor() {
|
|
6
7
|
/**
|
|
@@ -8,6 +9,37 @@ export class PostMegadropdownTrigger {
|
|
|
8
9
|
* Used to manage click and key events for mega dropdown control.
|
|
9
10
|
*/
|
|
10
11
|
this.slottedButton = null;
|
|
12
|
+
/**
|
|
13
|
+
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
14
|
+
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
15
|
+
*/
|
|
16
|
+
this.wasExpanded = false;
|
|
17
|
+
this.handleKeyDown = (event) => {
|
|
18
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
19
|
+
event.preventDefault();
|
|
20
|
+
this.handleToggle();
|
|
21
|
+
if (this.megadropdown && !this.ariaExpanded) {
|
|
22
|
+
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
this.handleToggleMegadropdown = (event) => {
|
|
27
|
+
eventGuard(this.host, event, { targetLocalName: 'post-megadropdown' }, () => {
|
|
28
|
+
if (event.target.id === this.for) {
|
|
29
|
+
this.ariaExpanded = event.detail.isVisible;
|
|
30
|
+
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
31
|
+
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
32
|
+
setTimeout(() => {
|
|
33
|
+
this.slottedButton?.focus();
|
|
34
|
+
}, 100);
|
|
35
|
+
}
|
|
36
|
+
this.wasExpanded = this.ariaExpanded;
|
|
37
|
+
if (this.slottedButton) {
|
|
38
|
+
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
11
43
|
this.for = undefined;
|
|
12
44
|
this.ariaExpanded = false;
|
|
13
45
|
}
|
|
@@ -15,8 +47,8 @@ export class PostMegadropdownTrigger {
|
|
|
15
47
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
16
48
|
* @param forValue - The new value of the `for` property.
|
|
17
49
|
*/
|
|
18
|
-
validateControlFor(
|
|
19
|
-
checkType(
|
|
50
|
+
validateControlFor() {
|
|
51
|
+
checkType(this, 'for', 'string');
|
|
20
52
|
}
|
|
21
53
|
get megadropdown() {
|
|
22
54
|
const ref = document.getElementById(this.for);
|
|
@@ -26,7 +58,7 @@ export class PostMegadropdownTrigger {
|
|
|
26
58
|
}
|
|
27
59
|
handleToggle() {
|
|
28
60
|
if (this.megadropdown) {
|
|
29
|
-
this.megadropdown.toggle(
|
|
61
|
+
this.megadropdown.toggle();
|
|
30
62
|
}
|
|
31
63
|
else {
|
|
32
64
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
@@ -35,27 +67,24 @@ export class PostMegadropdownTrigger {
|
|
|
35
67
|
componentDidLoad() {
|
|
36
68
|
this.validateControlFor();
|
|
37
69
|
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
38
|
-
document.addEventListener('postToggleMegadropdown',
|
|
39
|
-
if (event.target.id === this.for) {
|
|
40
|
-
this.ariaExpanded = event.detail;
|
|
41
|
-
if (this.slottedButton) {
|
|
42
|
-
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
});
|
|
70
|
+
document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
46
71
|
this.slottedButton = this.host.querySelector('button');
|
|
47
72
|
if (this.slottedButton) {
|
|
48
73
|
this.slottedButton.setAttribute('aria-haspopup', 'menu');
|
|
49
74
|
this.slottedButton.addEventListener('click', () => {
|
|
50
75
|
this.handleToggle();
|
|
51
76
|
});
|
|
77
|
+
this.slottedButton.addEventListener('keydown', this.handleKeyDown);
|
|
52
78
|
}
|
|
53
79
|
else {
|
|
54
80
|
console.warn('No button found within post-megadropdown-trigger');
|
|
55
81
|
}
|
|
56
82
|
}
|
|
83
|
+
disconnectedCallback() {
|
|
84
|
+
document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
85
|
+
}
|
|
57
86
|
render() {
|
|
58
|
-
return (h(Host, { key: '
|
|
87
|
+
return (h(Host, { key: '86b85efede8d9b19f3f0560f500f33f5e172177f', "data-version": version, "tab-index": "-1" }, h("button", { key: '0f810e4c38bc4abf23ac60ab27b36d408e7ced0d' }, h("slot", { key: '2a522ac7e15ef8ac077b73cdebf629b89ea173c6' }))));
|
|
59
88
|
}
|
|
60
89
|
static get is() { return "post-megadropdown-trigger"; }
|
|
61
90
|
static get originalStyleUrls() {
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright 2021 by Swiss Post, Information Technology
|
|
3
|
-
*/:host{display:block}post-popovercontainer{padding:var(--post-menu-padding);background-color:var(--post-menu-bg, #ffffff);border-color:var(--post-menu-bg, #ffffff)}
|
|
1
|
+
@keyframes popIn{from{transform:scale(0.9);opacity:0;transition-property:transform,opacity,overlay,display;transition-behavior:allow-discrete;transition-duration:var(--post-transition-duration, 0.35s);transition-timing-function:linear(0, 0.007, 0.029 2.2%, 0.118 4.7%, 0.625 14.4%, 0.826 19%, 0.902, 0.962, 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%, 0.999 61.6%, 0.995 71.2%, 1)}to{opacity:1;transform:scale(1)}}: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}
|