@swisspost/design-system-components 9.0.0-next.12 → 9.0.0-next.14
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/{attribute-observer-10f08c04.js → attribute-observer-6d8b886b.js} +4 -4
- package/dist/cjs/{check-one-of-f4f5d0c0.js → check-one-of-ef931478.js} +2 -1
- package/dist/cjs/{check-type-64af82a9.js → check-type-696d2c51.js} +4 -4
- package/dist/cjs/{check-url-3ffdd2fb.js → check-url-1cf6fb0d.js} +2 -1
- package/dist/cjs/{debounce-1151afe3.js → debounce-158fd76f.js} +2 -1
- package/dist/cjs/fade-72d5ef55.js +14 -0
- package/dist/cjs/{index-f1b08cdb.js → index-0ee3ab4a.js} +334 -152
- package/dist/cjs/{index-5d4e0aed.js → index-bea4ac42.js} +7 -5
- package/dist/cjs/index.cjs.js +30 -28
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{package-0bd6fb0d.js → package-7d11b6ea.js} +1 -1
- package/dist/cjs/{post-accordion-7aadd881.js → post-accordion-29861d97.js} +15 -8
- package/dist/cjs/{post-accordion-item-bd033c7f.js → post-accordion-item-0da0f7aa.js} +20 -13
- package/dist/cjs/post-accordion-item.cjs.entry.js +7 -7
- package/dist/cjs/post-accordion.cjs.entry.js +4 -4
- package/dist/cjs/{post-avatar-5dbdf70d.js → post-avatar-01b9cd6d.js} +29 -21
- package/dist/cjs/post-avatar.cjs.entry.js +3 -3
- package/dist/cjs/post-back-to-top-9a5647f7.js +80 -0
- package/dist/cjs/post-back-to-top.cjs.entry.js +5 -5
- package/dist/cjs/post-banner-33929088.js +110 -0
- package/dist/cjs/post-banner.cjs.entry.js +8 -8
- package/dist/cjs/{post-breadcrumb-531c4f79.js → post-breadcrumb-1384018e.js} +41 -34
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +7 -7
- package/dist/cjs/post-breadcrumb.cjs.entry.js +5 -5
- package/dist/cjs/post-card-control-4c85eda3.js +314 -0
- package/dist/cjs/post-card-control.cjs.entry.js +4 -4
- package/dist/cjs/post-closebutton_15.cjs.entry.js +8 -8
- package/dist/cjs/{post-collapsible-trigger-02924200.js → post-collapsible-trigger-0fb2596a.js} +47 -35
- package/dist/cjs/post-collapsible_2.cjs.entry.js +8 -8
- package/dist/cjs/post-components.cjs.js +3 -3
- package/dist/cjs/{post-footer-96d7bd47.js → post-footer-f621a563.js} +18 -12
- package/dist/cjs/post-footer.cjs.entry.js +3 -3
- package/dist/cjs/post-linkarea-865079c1.js +32 -0
- package/dist/cjs/post-linkarea.cjs.entry.js +11 -0
- package/dist/cjs/{post-menu-item-3f73fb4d.js → post-menu-item-ab3e2e7e.js} +12 -9
- package/dist/cjs/{post-popover-64195ffd.js → post-popover-a2ba9226.js} +24 -10
- package/dist/cjs/post-popover.cjs.entry.js +4 -4
- package/dist/cjs/{post-rating-bd27ebfc.js → post-rating-c402c294.js} +33 -10
- package/dist/cjs/post-rating.cjs.entry.js +3 -3
- package/dist/cjs/post-tab-header-c819517d.js +36 -0
- package/dist/cjs/post-tab-header.cjs.entry.js +3 -3
- package/dist/cjs/{post-tab-panel-3eedcd19.js → post-tab-panel-3cb207f3.js} +9 -6
- package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
- package/dist/cjs/{post-tabs-ea94b243.js → post-tabs-b6fa39c3.js} +29 -18
- package/dist/cjs/post-tabs.cjs.entry.js +4 -4
- package/dist/cjs/{post-tag-1d75024b.js → post-tag-9c366519.js} +20 -9
- package/dist/cjs/post-tag.cjs.entry.js +3 -3
- package/dist/cjs/{post-togglebutton-876f7892.js → post-togglebutton-d49bec2c.js} +682 -221
- package/dist/cjs/{post-tooltip-e4ef3c7e.js → post-tooltip-425c01ba.js} +24 -12
- package/dist/cjs/post-tooltip.cjs.entry.js +8 -8
- package/dist/cjs/{slide-5d51abe8.js → slide-8ae17ee4.js} +4 -4
- package/dist/collection/animations/collapse.js +5 -5
- package/dist/collection/animations/fade.js +6 -2
- package/dist/collection/animations/slide.js +4 -4
- package/dist/collection/collection-manifest.json +4 -3
- package/dist/collection/components/post-accordion/post-accordion.js +16 -6
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +21 -11
- package/dist/collection/components/post-avatar/post-avatar.js +35 -20
- 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 +14 -8
- package/dist/collection/components/post-banner/post-banner.css +1 -1
- package/dist/collection/components/post-banner/post-banner.js +40 -14
- package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +41 -31
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +10 -6
- package/dist/collection/components/post-card-control/post-card-control.css +1 -1
- package/dist/collection/components/post-card-control/post-card-control.js +104 -43
- package/dist/collection/components/post-closebutton/post-closebutton.js +2 -1
- package/dist/collection/components/post-collapsible/post-collapsible.js +16 -6
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +25 -21
- package/dist/collection/components/post-footer/post-footer.js +9 -5
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +90 -15
- package/dist/collection/components/post-icon/post-icon.js +93 -23
- package/dist/collection/components/post-language-option/post-language-option.js +37 -8
- package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +24 -7
- package/dist/collection/components/post-linkarea/post-linkarea.css +1 -0
- package/dist/collection/components/post-linkarea/post-linkarea.js +32 -0
- package/dist/collection/components/post-list/post-list.js +19 -6
- package/dist/collection/components/post-list-item/post-list-item.js +2 -1
- package/dist/collection/components/post-logo/post-logo.js +8 -4
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +197 -17
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +134 -64
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +1 -1
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +18 -11
- package/dist/collection/components/post-menu/post-menu.js +56 -33
- package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +24 -16
- package/dist/collection/components/post-popover/post-popover.css +1 -1
- package/dist/collection/components/post-popover/post-popover.js +26 -5
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +55 -8
- package/dist/collection/components/post-rating/post-rating.js +39 -7
- package/dist/collection/components/post-tab-header/post-tab-header.css +1 -1
- package/dist/collection/components/post-tab-header/post-tab-header.js +9 -5
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -5
- package/dist/collection/components/post-tabs/post-tabs.css +1 -1
- package/dist/collection/components/post-tabs/post-tabs.js +25 -18
- package/dist/collection/components/post-tag/post-tag.css +1 -1
- package/dist/collection/components/post-tag/post-tag.js +23 -5
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +18 -14
- package/dist/collection/components/post-tooltip/post-tooltip.js +26 -9
- package/dist/collection/index.js +1 -0
- package/dist/collection/utils/attribute-observer.js +4 -4
- package/dist/collection/utils/breakpoints.js +9 -6
- package/dist/collection/utils/component-on-ready.js +4 -4
- package/dist/collection/utils/debounce.js +2 -1
- package/dist/collection/utils/get-focusable-children.js +2 -2
- package/dist/collection/utils/property-checkers/check-one-of.js +2 -1
- package/dist/collection/utils/property-checkers/check-pattern.js +2 -1
- package/dist/collection/utils/property-checkers/check-type.js +4 -4
- package/dist/collection/utils/property-checkers/check-url.js +2 -1
- package/dist/collection/utils/property-checkers/empty-or.js +2 -1
- package/dist/collection/utils/sass-export.js +8 -5
- package/dist/components/index.js +36 -35
- package/dist/components/{post-collapsible-trigger2.js → p-05590ac0.js} +30 -27
- package/dist/components/{post-breadcrumb2.js → p-146677d1.js} +50 -43
- package/dist/components/p-1ee1742f.js +237 -0
- package/dist/components/p-2083ae2c.js +3 -0
- package/dist/components/{post-megadropdown-trigger2.js → p-27edc023.js} +21 -15
- package/dist/components/{post-tooltip2.js → p-2d9b46b4.js} +26 -14
- package/dist/components/p-38778a14.js +345 -0
- package/dist/components/p-3aba7629.js +29 -0
- package/dist/components/{post-togglebutton2.js → p-3cee636a.js} +20 -17
- package/dist/components/p-3e8554e7.js +1646 -0
- package/dist/components/p-424d5ea9.js +199 -0
- package/dist/components/p-46a6c5ec.js +168 -0
- package/dist/components/p-4965cfe1.js +145 -0
- package/{loaders/slide.js → dist/components/p-4af6dbed.js} +4 -4
- package/dist/components/{post-list2.js → p-536eba02.js} +19 -9
- package/dist/components/p-5653923a.js +44 -0
- package/dist/components/{post-footer2.js → p-58878996.js} +23 -17
- package/dist/components/{post-logo2.js → p-5f51ec58.js} +10 -7
- package/{loaders/post-popovercontainer2.js → dist/components/p-60cf53cc.js} +34 -11
- package/dist/components/p-64e3de38.js +11 -0
- package/dist/components/{post-accordion-item2.js → p-68ecd276.js} +26 -19
- package/dist/components/p-75b8b652.js +54 -0
- package/dist/components/{post-tab-panel2.js → p-78e1d893.js} +11 -8
- package/dist/components/{check-type.js → p-8562c7dc.js} +4 -4
- package/{loaders/post-menu-trigger2.js → dist/components/p-8b053fd5.js} +27 -20
- package/dist/components/{post-icon2.js → p-91031e3b.js} +85 -28
- package/dist/components/{post-menu2.js → p-91882483.js} +60 -65
- package/dist/{esm/attribute-observer-37fa950a.js → components/p-9748a355.js} +4 -4
- package/dist/components/{post-list-item2.js → p-9e4b1f10.js} +4 -4
- package/dist/components/{post-accordion2.js → p-a3a004e6.js} +17 -10
- package/dist/components/{post-popover2.js → p-af23f7de.js} +26 -12
- package/dist/components/{post-collapsible2.js → p-b018d864.js} +23 -14
- package/dist/components/{check-non-empty.js → p-b095519d.js} +1 -1
- package/dist/components/{check-one-of.js → p-bacd3e2c.js} +2 -1
- package/dist/components/{post-closebutton2.js → p-bf14d264.js} +6 -6
- package/dist/components/{post-breadcrumb-item2.js → p-c7c1d466.js} +13 -10
- package/dist/components/{post-tag2.js → p-cab43cee.js} +22 -11
- package/dist/components/{post-menu-item2.js → p-ccccf0c3.js} +4 -4
- package/dist/components/{post-tabs2.js → p-ce854a7d.js} +30 -19
- package/dist/components/{post-avatar2.js → p-d3fb70af.js} +31 -23
- package/dist/components/{post-language-option2.js → p-d47bb5bf.js} +32 -12
- package/dist/components/{debounce.js → p-e1baac59.js} +2 -1
- package/dist/components/{post-back-to-top2.js → p-e20366a6.js} +20 -15
- package/dist/components/{index2.js → p-eabb09ad.js} +9 -6
- package/dist/components/{post-language-switch2.js → p-f6d80d76.js} +29 -17
- package/dist/components/p-f7b9f90a.js +135 -0
- package/dist/components/{post-rating2.js → p-fc59de7c.js} +35 -12
- package/dist/components/post-accordion-item.js +1 -1
- package/dist/components/post-accordion.js +1 -1
- package/dist/components/post-avatar.js +1 -1
- package/dist/components/post-back-to-top.js +1 -1
- package/dist/components/post-banner.js +1 -1
- package/dist/components/post-breadcrumb-item.js +1 -1
- package/dist/components/post-breadcrumb.js +1 -1
- package/dist/components/post-card-control.js +1 -1
- package/dist/components/post-closebutton.js +1 -1
- package/dist/components/post-collapsible-trigger.js +1 -1
- package/dist/components/post-collapsible.js +1 -1
- package/dist/components/post-footer.js +1 -1
- package/dist/components/post-header.js +1 -1
- package/dist/components/post-icon.js +1 -1
- package/dist/components/post-language-option.js +1 -1
- package/dist/components/post-language-switch.js +1 -1
- package/dist/components/post-linkarea.d.ts +11 -0
- package/dist/components/post-linkarea.js +6 -0
- package/dist/components/post-list-item.js +1 -1
- package/dist/components/post-list.js +1 -1
- package/dist/components/post-logo.js +1 -1
- package/dist/components/post-mainnavigation.js +1 -1
- package/dist/components/post-megadropdown-trigger.js +1 -1
- package/dist/components/post-megadropdown.js +1 -1
- package/dist/components/post-menu-item.js +1 -1
- package/dist/components/post-menu-trigger.js +1 -1
- package/dist/components/post-menu.js +1 -1
- package/dist/components/post-popover.js +1 -1
- package/dist/components/post-popovercontainer.js +1 -1
- package/dist/components/post-rating.js +1 -1
- package/dist/components/post-tab-header.js +1 -1
- package/dist/components/post-tab-panel.js +1 -1
- package/dist/components/post-tabs.js +1 -1
- package/dist/components/post-tag.js +1 -1
- package/dist/components/post-togglebutton.js +1 -1
- package/dist/components/post-tooltip.js +1 -1
- package/dist/docs.d.ts +8 -0
- package/dist/docs.json +335 -156
- package/{loaders/attribute-observer.js → dist/esm/attribute-observer-2f203993.js} +4 -4
- package/{loaders/check-one-of.js → dist/esm/check-one-of-0d5858c0.js} +2 -1
- package/dist/esm/{check-type-8828dbe4.js → check-type-a6ccc9a3.js} +4 -4
- package/dist/esm/{check-url-a974431e.js → check-url-0bd876f7.js} +2 -1
- package/dist/esm/{debounce-abe98cc2.js → debounce-e54c7131.js} +2 -1
- package/dist/esm/fade-1f3cacf4.js +11 -0
- package/dist/esm/{index-6bfe6554.js → index-2c232bf2.js} +334 -152
- package/dist/esm/{index-b49c9904.js → index-d1bbbd88.js} +7 -5
- package/dist/esm/index.js +29 -28
- package/dist/esm/loader.js +3 -3
- package/dist/esm/package-8c98af5e.js +3 -0
- package/dist/esm/{post-accordion-ca48eb18.js → post-accordion-49fba403.js} +15 -8
- package/dist/esm/{post-accordion-item-a461f2a7.js → post-accordion-item-c516517a.js} +20 -13
- package/dist/esm/post-accordion-item.entry.js +7 -7
- package/dist/esm/post-accordion.entry.js +4 -4
- package/dist/esm/{post-avatar-0da1a2e8.js → post-avatar-b527ac63.js} +29 -21
- package/dist/esm/post-avatar.entry.js +3 -3
- package/dist/esm/post-back-to-top-f514c1f0.js +78 -0
- package/dist/esm/post-back-to-top.entry.js +5 -5
- package/dist/esm/post-banner-0ad7758b.js +108 -0
- package/dist/esm/post-banner.entry.js +8 -8
- package/dist/esm/{post-breadcrumb-85ffd02f.js → post-breadcrumb-57bca9dd.js} +41 -34
- package/dist/esm/post-breadcrumb-item_2.entry.js +7 -7
- package/dist/esm/post-breadcrumb.entry.js +5 -5
- package/dist/esm/post-card-control-ea741f60.js +312 -0
- package/dist/esm/post-card-control.entry.js +4 -4
- package/dist/esm/post-closebutton_15.entry.js +8 -8
- package/dist/esm/{post-collapsible-trigger-883db3bf.js → post-collapsible-trigger-31155750.js} +47 -35
- package/dist/esm/post-collapsible_2.entry.js +8 -8
- package/dist/esm/post-components.js +4 -4
- package/dist/esm/{post-footer-7b0eb067.js → post-footer-cdde2086.js} +18 -12
- package/dist/esm/post-footer.entry.js +3 -3
- package/dist/esm/post-linkarea-cad95623.js +30 -0
- package/dist/esm/post-linkarea.entry.js +3 -0
- package/dist/esm/{post-menu-item-37f637a3.js → post-menu-item-db732728.js} +12 -9
- package/dist/esm/{post-popover-c24ecd38.js → post-popover-00f427ac.js} +24 -10
- package/dist/esm/post-popover.entry.js +4 -4
- package/dist/esm/{post-rating-e1c66e5c.js → post-rating-cdcb2a1d.js} +33 -10
- package/dist/esm/post-rating.entry.js +3 -3
- package/dist/esm/post-tab-header-1d4113cb.js +34 -0
- package/dist/esm/post-tab-header.entry.js +3 -3
- package/dist/esm/{post-tab-panel-73b56a16.js → post-tab-panel-7a5c03ef.js} +9 -6
- package/dist/esm/post-tab-panel.entry.js +3 -3
- package/dist/esm/{post-tabs-02e523b8.js → post-tabs-308190c0.js} +29 -18
- package/dist/esm/post-tabs.entry.js +4 -4
- package/dist/esm/{post-tag-43aba068.js → post-tag-aebbda10.js} +20 -9
- package/dist/esm/post-tag.entry.js +3 -3
- package/dist/esm/{post-togglebutton-c2231709.js → post-togglebutton-95ba85d2.js} +682 -221
- package/dist/esm/{post-tooltip-8271950c.js → post-tooltip-918d3a54.js} +24 -12
- package/dist/esm/post-tooltip.entry.js +8 -8
- package/dist/{components/slide.js → esm/slide-62768431.js} +4 -4
- package/dist/post-components/index.esm.js +1 -1
- package/dist/post-components/p-037d6ef2.entry.js +1 -0
- package/dist/post-components/p-1e69a72f.js +1 -0
- package/dist/post-components/p-1fda117c.js +1 -0
- package/dist/post-components/p-2083ae2c.js +1 -0
- package/dist/post-components/p-24297444.js +1 -0
- package/dist/post-components/{p-e2f886ab.js → p-267f52a9.js} +3 -3
- package/dist/post-components/p-2e6c5b60.js +1 -0
- package/dist/post-components/p-3591d4e3.entry.js +1 -0
- package/dist/post-components/p-3dec4425.entry.js +1 -0
- package/dist/post-components/p-423aecd4.js +1 -0
- package/dist/post-components/p-43221de8.entry.js +1 -0
- package/dist/post-components/p-48fd00e7.entry.js +1 -0
- package/dist/post-components/p-4af6dbed.js +1 -0
- package/dist/post-components/p-4ca79b52.js +1 -0
- package/dist/post-components/p-4d2dee9f.entry.js +1 -0
- package/dist/post-components/p-4fedef65.js +1 -0
- package/dist/post-components/p-59109b3b.entry.js +1 -0
- package/dist/post-components/p-64e3de38.js +1 -0
- package/dist/post-components/p-675352c3.entry.js +1 -0
- package/dist/post-components/p-6e4527d9.entry.js +1 -0
- package/dist/post-components/p-726bfda2.js +1 -0
- package/dist/post-components/p-767c0bf3.js +1 -0
- package/dist/post-components/p-796968bd.entry.js +1 -0
- package/dist/post-components/p-7c9758fa.js +1 -0
- package/dist/post-components/p-8a452260.js +1 -0
- package/dist/post-components/p-8a50b900.js +1 -0
- package/dist/post-components/p-8de4f677.entry.js +1 -0
- package/dist/post-components/p-93632808.js +1 -0
- package/dist/post-components/p-9748a355.js +1 -0
- package/dist/post-components/p-9aca3d07.entry.js +1 -0
- package/dist/post-components/p-9f0c5164.js +1 -0
- package/dist/post-components/p-a6436e7f.js +1 -0
- package/dist/post-components/p-ad246c0d.js +1 -0
- package/dist/post-components/p-b015efcb.entry.js +1 -0
- package/dist/post-components/p-b0afc087.entry.js +1 -0
- package/dist/post-components/p-b1adc221.js +1 -0
- package/dist/post-components/p-b2c0d21a.js +1 -0
- package/dist/post-components/p-b5a566f1.js +1 -0
- package/dist/post-components/p-c0961047.entry.js +1 -0
- package/dist/post-components/p-c388b7bb.entry.js +1 -0
- package/dist/post-components/{p-c510d968.entry.js → p-ca41b899.entry.js} +1 -1
- package/dist/post-components/p-d2395ae9.entry.js +1 -0
- package/dist/post-components/p-d9833667.js +2 -0
- package/dist/post-components/p-da261c46.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-header/post-header.d.ts +11 -2
- package/dist/types/components/post-icon/post-icon.d.ts +1 -1
- package/dist/types/components/post-language-switch/post-language-switch.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 +57 -3
- package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +26 -12
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +4 -0
- package/dist/types/components/post-tabs/post-tabs.d.ts +1 -1
- package/dist/types/components.d.ts +51 -25
- 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 +3 -2
- package/dist/types/stencil-public-runtime.d.ts +6 -0
- package/dist/types/utils/attribute-observer.d.ts +1 -1
- package/dist/types/utils/component-on-ready.d.ts +1 -1
- package/dist/types/utils/get-focusable-children.d.ts +1 -1
- package/dist/types/utils/sass-export.d.ts +5 -1
- package/loaders/index.d.ts +2 -0
- package/loaders/index.js +3 -2
- package/loaders/{post-collapsible-trigger2.js → p-05590ac0.js} +30 -27
- package/loaders/{post-breadcrumb-item2.js → p-1beacb73.js} +13 -10
- package/loaders/p-2083ae2c.js +3 -0
- package/loaders/p-3aba7629.js +29 -0
- package/loaders/p-3e8554e7.js +1646 -0
- package/{dist/esm/slide-3422b8a3.js → loaders/p-4af6dbed.js} +4 -4
- package/loaders/{index2.js → p-56ad4838.js} +9 -6
- package/{dist/components/post-popovercontainer2.js → loaders/p-60cf53cc.js} +34 -11
- package/loaders/p-64e3de38.js +11 -0
- package/loaders/{post-accordion-item2.js → p-83baa315.js} +26 -19
- package/loaders/{check-type.js → p-8562c7dc.js} +4 -4
- package/{dist/components/post-menu-trigger2.js → loaders/p-8b053fd5.js} +27 -20
- package/loaders/{post-menu2.js → p-91882483.js} +60 -65
- package/{dist/components/attribute-observer.js → loaders/p-9748a355.js} +4 -4
- package/loaders/{post-collapsible2.js → p-9fac5d7d.js} +23 -14
- package/loaders/{check-non-empty.js → p-b095519d.js} +1 -1
- package/{dist/esm/check-one-of-6b3ef8eb.js → loaders/p-bacd3e2c.js} +2 -1
- package/loaders/{post-menu-item2.js → p-ccccf0c3.js} +4 -4
- package/loaders/{debounce.js → p-e1baac59.js} +2 -1
- package/loaders/{post-icon2.js → p-f7177e26.js} +85 -28
- package/loaders/p-f7b9f90a.js +135 -0
- package/loaders/post-accordion-item.js +1 -1
- package/loaders/post-accordion.js +17 -10
- package/loaders/post-avatar.js +31 -23
- package/loaders/post-back-to-top.js +20 -15
- package/loaders/post-banner.js +42 -23
- package/loaders/post-breadcrumb-item.js +1 -1
- package/loaders/post-breadcrumb.js +50 -43
- package/loaders/post-card-control.js +93 -51
- package/loaders/post-closebutton.js +6 -6
- package/loaders/post-collapsible-trigger.js +1 -1
- package/loaders/post-collapsible.js +1 -1
- package/loaders/post-footer.js +23 -17
- package/loaders/post-header.js +74 -154
- package/loaders/post-icon.js +1 -1
- package/loaders/post-language-option.js +32 -12
- package/loaders/post-language-switch.js +29 -17
- package/loaders/post-linkarea.d.ts +11 -0
- package/loaders/post-linkarea.js +47 -0
- package/loaders/post-list-item.js +4 -4
- package/loaders/post-list.js +19 -9
- package/loaders/post-logo.js +10 -7
- package/loaders/post-mainnavigation.js +197 -8
- package/loaders/post-megadropdown-trigger.js +21 -15
- package/loaders/post-megadropdown.js +119 -51
- package/loaders/post-menu-item.js +1 -1
- package/loaders/post-menu-trigger.js +1 -1
- package/loaders/post-menu.js +1 -1
- package/loaders/post-popover.js +26 -12
- package/loaders/post-popovercontainer.js +1 -1
- package/loaders/post-rating.js +35 -12
- package/loaders/post-tab-header.js +13 -10
- package/loaders/post-tab-panel.js +11 -8
- package/loaders/post-tabs.js +30 -19
- package/loaders/post-tag.js +22 -11
- package/loaders/post-togglebutton.js +20 -17
- package/loaders/post-tooltip.js +26 -14
- package/package.json +19 -16
- package/dist/cjs/fade-35a3633a.js +0 -10
- package/dist/cjs/post-back-to-top-71bc912c.js +0 -75
- package/dist/cjs/post-banner-d4e0c73c.js +0 -91
- package/dist/cjs/post-card-control-332f6f1f.js +0 -272
- package/dist/cjs/post-tab-header-1f057694.js +0 -33
- package/dist/components/fade.js +0 -7
- package/dist/components/package.js +0 -3
- package/dist/components/post-banner2.js +0 -126
- package/dist/components/post-card-control2.js +0 -303
- package/dist/components/post-header2.js +0 -279
- package/dist/components/post-mainnavigation2.js +0 -48
- package/dist/components/post-megadropdown2.js +0 -100
- package/dist/components/post-tab-header2.js +0 -51
- package/dist/esm/fade-7fd71785.js +0 -7
- package/dist/esm/package-f8f7bb40.js +0 -3
- package/dist/esm/post-back-to-top-77471a90.js +0 -73
- package/dist/esm/post-banner-b0af5bd3.js +0 -89
- package/dist/esm/post-card-control-3225eb57.js +0 -270
- package/dist/esm/post-tab-header-6a9b0153.js +0 -31
- package/dist/post-components/p-025688e5.js +0 -1
- package/dist/post-components/p-08b51b35.entry.js +0 -1
- package/dist/post-components/p-0e216cc4.js +0 -2
- package/dist/post-components/p-24c92608.js +0 -1
- package/dist/post-components/p-25a57971.js +0 -1
- package/dist/post-components/p-2737eaf5.js +0 -1
- package/dist/post-components/p-2cb4a8f1.js +0 -1
- package/dist/post-components/p-33b64e0c.js +0 -1
- package/dist/post-components/p-34d70cd5.js +0 -1
- package/dist/post-components/p-350f3900.entry.js +0 -1
- package/dist/post-components/p-35bc4554.js +0 -1
- package/dist/post-components/p-38b259a4.entry.js +0 -1
- package/dist/post-components/p-3c6cef1e.entry.js +0 -1
- package/dist/post-components/p-4a713cf8.js +0 -1
- package/dist/post-components/p-4b5e2b24.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-54e58fc2.entry.js +0 -1
- package/dist/post-components/p-637759d6.js +0 -1
- package/dist/post-components/p-6adeaa6c.js +0 -1
- package/dist/post-components/p-7589a19f.js +0 -1
- package/dist/post-components/p-7cce7342.entry.js +0 -1
- package/dist/post-components/p-819e19de.js +0 -1
- package/dist/post-components/p-82d48128.js +0 -1
- package/dist/post-components/p-85171893.entry.js +0 -1
- package/dist/post-components/p-882fdd0c.entry.js +0 -1
- package/dist/post-components/p-94399c69.js +0 -1
- package/dist/post-components/p-9a02b162.entry.js +0 -1
- package/dist/post-components/p-b1f5bc26.js +0 -1
- package/dist/post-components/p-b2f239a1.entry.js +0 -1
- package/dist/post-components/p-b571e5c8.js +0 -1
- package/dist/post-components/p-ba530822.js +0 -1
- package/dist/post-components/p-bae1c85f.entry.js +0 -1
- package/dist/post-components/p-bdabdec5.js +0 -1
- package/dist/post-components/p-c1225174.entry.js +0 -1
- package/dist/post-components/p-c372a141.entry.js +0 -1
- package/dist/post-components/p-c87c5d59.entry.js +0 -1
- package/dist/post-components/p-d04c1b7f.entry.js +0 -1
- package/dist/post-components/p-da300843.entry.js +0 -1
- package/dist/post-components/p-fec04a15.entry.js +0 -1
- package/loaders/fade.js +0 -7
- package/loaders/package.js +0 -3
- /package/dist/components/{heading-levels.js → p-247a1668.js} +0 -0
- /package/dist/components/{constants.js → p-440193f4.js} +0 -0
- /package/dist/components/{index.browser.js → p-5959f2bd.js} +0 -0
- /package/dist/components/{get-root.js → p-fc91cbc2.js} +0 -0
- /package/dist/post-components/{p-4a3f67ab.js → p-8562c7dc.js} +0 -0
- /package/dist/post-components/{p-611b3c41.js → p-bacd3e2c.js} +0 -0
- /package/dist/post-components/{p-b22656b1.js → p-cb9ab938.js} +0 -0
- /package/dist/post-components/{p-d4f93f2b.js → p-e1baac59.js} +0 -0
- /package/loaders/{heading-levels.js → p-247a1668.js} +0 -0
- /package/loaders/{constants.js → p-440193f4.js} +0 -0
- /package/loaders/{index.browser.js → p-5959f2bd.js} +0 -0
- /package/loaders/{get-root.js → p-fc91cbc2.js} +0 -0
|
@@ -1,66 +1,137 @@
|
|
|
1
|
+
import { getFocusableChildren } from "../../utils/get-focusable-children";
|
|
1
2
|
import { h, Host } from "@stencil/core";
|
|
2
3
|
export class PostMegadropdown {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
header;
|
|
5
|
+
firstFocusableEl;
|
|
6
|
+
lastFocusableEl;
|
|
7
|
+
device;
|
|
8
|
+
host;
|
|
9
|
+
/** Tracks the currently active dropdown instance. */
|
|
10
|
+
static activeDropdown = null;
|
|
11
|
+
/**
|
|
12
|
+
* Holds the current visibility state of the dropdown.
|
|
13
|
+
* This state is internally managed to track whether the dropdown is open (`true`) or closed (`false`),
|
|
14
|
+
* and updates automatically when the dropdown is toggled.
|
|
15
|
+
*/
|
|
16
|
+
isVisible = false;
|
|
17
|
+
/** Holds the current animation class. */
|
|
18
|
+
animationClass = null;
|
|
19
|
+
/**
|
|
20
|
+
* Emits when the dropdown is shown or hidden.
|
|
21
|
+
* The event payload is a boolean: `true` when the dropdown was opened, `false` when it was closed.
|
|
22
|
+
**/
|
|
23
|
+
postToggleMegadropdown;
|
|
24
|
+
disconnectedCallback() {
|
|
25
|
+
this.removeOutsideClickListener();
|
|
26
|
+
if (PostMegadropdown.activeDropdown === this) {
|
|
27
|
+
PostMegadropdown.activeDropdown = null;
|
|
28
|
+
}
|
|
6
29
|
}
|
|
7
|
-
|
|
8
|
-
this.
|
|
9
|
-
this.isVisible = event.detail;
|
|
10
|
-
this.postToggleMegadropdown.emit(this.isVisible);
|
|
11
|
-
});
|
|
12
|
-
this.popoverRef.addEventListener('animationend', () => {
|
|
13
|
-
if (this.animationClass === 'slide-out') {
|
|
14
|
-
this.hide();
|
|
15
|
-
}
|
|
16
|
-
});
|
|
30
|
+
componentWillRender() {
|
|
31
|
+
this.getFocusableElements();
|
|
17
32
|
}
|
|
18
33
|
/**
|
|
19
34
|
* Toggles the dropdown visibility based on its current state.
|
|
20
35
|
*/
|
|
21
|
-
async toggle(
|
|
22
|
-
this.isVisible
|
|
36
|
+
async toggle() {
|
|
37
|
+
if (this.isVisible) {
|
|
38
|
+
this.hide();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
await this.show();
|
|
42
|
+
}
|
|
23
43
|
}
|
|
24
44
|
/**
|
|
25
|
-
* Displays the
|
|
26
|
-
*
|
|
27
|
-
* @param target - The HTML element relative to which the popover dropdown should be displayed.
|
|
45
|
+
* Displays the dropdown.
|
|
28
46
|
*/
|
|
29
|
-
async show(
|
|
30
|
-
if (this
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
async show() {
|
|
48
|
+
if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
|
|
49
|
+
// Close the previously active dropdown without animation
|
|
50
|
+
PostMegadropdown.activeDropdown.forceClose();
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
this.isVisible = true;
|
|
53
|
+
this.host.addEventListener('keydown', e => this.keyboardHandler(e));
|
|
54
|
+
this.animationClass = 'slide-in';
|
|
55
|
+
PostMegadropdown.activeDropdown = this;
|
|
56
|
+
this.postToggleMegadropdown.emit(this.isVisible);
|
|
57
|
+
this.addOutsideClickListener();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Hides the dropdown with an animation.
|
|
61
|
+
*/
|
|
62
|
+
async hide() {
|
|
63
|
+
this.animationClass = 'slide-out';
|
|
64
|
+
this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
|
|
65
|
+
}
|
|
66
|
+
connectedCallback() {
|
|
67
|
+
this.header = this.host.closest('post-header');
|
|
68
|
+
if (this.header) {
|
|
69
|
+
this.header.addEventListener('postUpdateDevice', (event) => (this.device = event.detail));
|
|
36
70
|
}
|
|
37
71
|
}
|
|
38
72
|
/**
|
|
39
|
-
*
|
|
73
|
+
* Forces the dropdown to close without animation.
|
|
40
74
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
75
|
+
forceClose() {
|
|
76
|
+
this.isVisible = false;
|
|
77
|
+
this.animationClass = null;
|
|
78
|
+
this.postToggleMegadropdown.emit(this.isVisible);
|
|
79
|
+
this.removeOutsideClickListener();
|
|
80
|
+
}
|
|
81
|
+
handleAnimationEnd() {
|
|
82
|
+
if (this.animationClass === 'slide-out') {
|
|
83
|
+
this.isVisible = false;
|
|
84
|
+
this.animationClass = null;
|
|
85
|
+
this.postToggleMegadropdown.emit(this.isVisible);
|
|
86
|
+
this.removeOutsideClickListener();
|
|
44
87
|
}
|
|
45
|
-
|
|
46
|
-
|
|
88
|
+
}
|
|
89
|
+
handleClickOutside = (event) => {
|
|
90
|
+
const target = event.target;
|
|
91
|
+
if (this.host.contains(target)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (target instanceof HTMLElement) {
|
|
95
|
+
const trigger = target.closest('post-megadropdown-trigger');
|
|
96
|
+
if (trigger) {
|
|
97
|
+
const targetDropdownId = trigger.getAttribute('for');
|
|
98
|
+
if (targetDropdownId !== this.host.id) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
47
102
|
}
|
|
103
|
+
this.hide();
|
|
104
|
+
};
|
|
105
|
+
addOutsideClickListener() {
|
|
106
|
+
document.addEventListener('mousedown', this.handleClickOutside);
|
|
48
107
|
}
|
|
49
|
-
|
|
50
|
-
|
|
108
|
+
removeOutsideClickListener() {
|
|
109
|
+
document.removeEventListener('mousedown', this.handleClickOutside);
|
|
51
110
|
}
|
|
52
|
-
|
|
53
|
-
this.
|
|
111
|
+
getFocusableElements() {
|
|
112
|
+
const focusableEls = Array.from(this.host.querySelectorAll('post-list-item, h3, .back-button'));
|
|
113
|
+
const focusableChildren = focusableEls.flatMap(el => Array.from(getFocusableChildren(el)));
|
|
114
|
+
this.firstFocusableEl = focusableChildren[0];
|
|
115
|
+
this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
|
|
54
116
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
117
|
+
// Loop through the focusable children
|
|
118
|
+
keyboardHandler(e) {
|
|
119
|
+
if (e.key === 'Tab' && this.device !== 'desktop') {
|
|
120
|
+
if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
|
|
121
|
+
// If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
this.lastFocusableEl.focus();
|
|
124
|
+
}
|
|
125
|
+
else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
|
|
126
|
+
// If TAB and last element is focused, focus goes back to the first element of the megadropdown
|
|
127
|
+
e.preventDefault();
|
|
128
|
+
this.firstFocusableEl.focus();
|
|
129
|
+
}
|
|
60
130
|
}
|
|
61
131
|
}
|
|
62
132
|
render() {
|
|
63
|
-
|
|
133
|
+
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
134
|
+
return (h(Host, { key: '5aa08b01be715325182c245e1b0ae2456bcc5df6' }, h("div", { key: '0737c9368ecbffac59bbdf47fabac3f3b94ae7bb', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: 'efe49f3f9cdcd99e2feca78b772c944405e19f21', class: "megadropdown" }, h("div", { key: '14dd7ff2f7e7b1eb91f2673a25d7ccafffe4f9d0', onClick: () => this.hide(), class: "back-button" }, h("slot", { key: '554e30e6408c0bef0549f5e2c31dcd8b90ceee40', name: "back-button" })), h("div", { key: '4e7335152d7b6649918adf075213ebbf8b8ddeaa', onClick: () => this.hide(), class: "close-button" }, h("slot", { key: 'db90f3a5334ce723c0ee672a96167197ca25b545', name: "close-button" })), h("slot", { key: 'b11b1d16147f88103f2eb24c8dd21394de53f69c', name: "megadropdown-title" }), h("div", { key: '6d837c1a70f66f00097fb531058750fbac6fd41a', class: "megadropdown-content" }, h("slot", { key: 'be685185f04e44d867167f918494d086856b5928' }))))));
|
|
64
135
|
}
|
|
65
136
|
static get is() { return "post-megadropdown"; }
|
|
66
137
|
static get originalStyleUrls() {
|
|
@@ -75,6 +146,7 @@ export class PostMegadropdown {
|
|
|
75
146
|
}
|
|
76
147
|
static get states() {
|
|
77
148
|
return {
|
|
149
|
+
"device": {},
|
|
78
150
|
"isVisible": {},
|
|
79
151
|
"animationClass": {}
|
|
80
152
|
};
|
|
@@ -101,20 +173,12 @@ export class PostMegadropdown {
|
|
|
101
173
|
return {
|
|
102
174
|
"toggle": {
|
|
103
175
|
"complexType": {
|
|
104
|
-
"signature": "(
|
|
105
|
-
"parameters": [
|
|
106
|
-
"name": "target",
|
|
107
|
-
"type": "HTMLElement",
|
|
108
|
-
"docs": ""
|
|
109
|
-
}],
|
|
176
|
+
"signature": "() => Promise<void>",
|
|
177
|
+
"parameters": [],
|
|
110
178
|
"references": {
|
|
111
179
|
"Promise": {
|
|
112
180
|
"location": "global",
|
|
113
181
|
"id": "global::Promise"
|
|
114
|
-
},
|
|
115
|
-
"HTMLElement": {
|
|
116
|
-
"location": "global",
|
|
117
|
-
"id": "global::HTMLElement"
|
|
118
182
|
}
|
|
119
183
|
},
|
|
120
184
|
"return": "Promise<void>"
|
|
@@ -126,30 +190,36 @@ export class PostMegadropdown {
|
|
|
126
190
|
},
|
|
127
191
|
"show": {
|
|
128
192
|
"complexType": {
|
|
129
|
-
"signature": "(
|
|
130
|
-
"parameters": [
|
|
131
|
-
"name": "target",
|
|
132
|
-
"type": "HTMLElement",
|
|
133
|
-
"docs": "- The HTML element relative to which the popover dropdown should be displayed."
|
|
134
|
-
}],
|
|
193
|
+
"signature": "() => Promise<void>",
|
|
194
|
+
"parameters": [],
|
|
135
195
|
"references": {
|
|
136
196
|
"Promise": {
|
|
137
197
|
"location": "global",
|
|
138
198
|
"id": "global::Promise"
|
|
139
|
-
}
|
|
140
|
-
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"return": "Promise<void>"
|
|
202
|
+
},
|
|
203
|
+
"docs": {
|
|
204
|
+
"text": "Displays the dropdown.",
|
|
205
|
+
"tags": []
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"hide": {
|
|
209
|
+
"complexType": {
|
|
210
|
+
"signature": "() => Promise<void>",
|
|
211
|
+
"parameters": [],
|
|
212
|
+
"references": {
|
|
213
|
+
"Promise": {
|
|
141
214
|
"location": "global",
|
|
142
|
-
"id": "global::
|
|
215
|
+
"id": "global::Promise"
|
|
143
216
|
}
|
|
144
217
|
},
|
|
145
218
|
"return": "Promise<void>"
|
|
146
219
|
},
|
|
147
220
|
"docs": {
|
|
148
|
-
"text": "
|
|
149
|
-
"tags": [
|
|
150
|
-
"name": "param",
|
|
151
|
-
"text": "target - The HTML element relative to which the popover dropdown should be displayed."
|
|
152
|
-
}]
|
|
221
|
+
"text": "Hides the dropdown with an animation.",
|
|
222
|
+
"tags": []
|
|
153
223
|
}
|
|
154
224
|
}
|
|
155
225
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
post-megadropdown-trigger{width:100
|
|
1
|
+
post-megadropdown-trigger{width:100%;position:relative;z-index:3}
|
|
@@ -2,15 +2,20 @@ import { h, Host } from "@stencil/core";
|
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
import { checkType } from "../../utils/index";
|
|
4
4
|
export class PostMegadropdownTrigger {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
/**
|
|
6
|
+
* ID of the mega dropdown element that this trigger is linked to. Used to open and close the specified mega dropdown.
|
|
7
|
+
*/
|
|
8
|
+
for;
|
|
9
|
+
host;
|
|
10
|
+
/**
|
|
11
|
+
* Manages the accessibility attribute `aria-expanded` to indicate whether the associated mega dropdown is expanded or collapsed.
|
|
12
|
+
*/
|
|
13
|
+
ariaExpanded = false;
|
|
14
|
+
/**
|
|
15
|
+
* Reference to the slotted button within the trigger, if present.
|
|
16
|
+
* Used to manage click and key events for mega dropdown control.
|
|
17
|
+
*/
|
|
18
|
+
slottedButton = null;
|
|
14
19
|
/**
|
|
15
20
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
16
21
|
* @param forValue - The new value of the `for` property.
|
|
@@ -26,7 +31,7 @@ export class PostMegadropdownTrigger {
|
|
|
26
31
|
}
|
|
27
32
|
handleToggle() {
|
|
28
33
|
if (this.megadropdown) {
|
|
29
|
-
this.megadropdown.toggle(
|
|
34
|
+
this.megadropdown.toggle();
|
|
30
35
|
}
|
|
31
36
|
else {
|
|
32
37
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
@@ -55,7 +60,7 @@ export class PostMegadropdownTrigger {
|
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
render() {
|
|
58
|
-
return (h(Host, { key: '
|
|
63
|
+
return (h(Host, { key: '2e009cb0dbfd81785d3a8ce5802a4fab0e84a52e', "data-version": version, "tab-index": "-1" }, h("button", { key: 'd77d9a5eb5786a63cf7453c639647adc705892bc' }, h("slot", { key: '19f4b17dc2d073b0770c33d6acfb763c1e47735a' }))));
|
|
59
64
|
}
|
|
60
65
|
static get is() { return "post-megadropdown-trigger"; }
|
|
61
66
|
static get originalStyleUrls() {
|
|
@@ -84,6 +89,8 @@ export class PostMegadropdownTrigger {
|
|
|
84
89
|
"tags": [],
|
|
85
90
|
"text": "ID of the mega dropdown element that this trigger is linked to. Used to open and close the specified mega dropdown."
|
|
86
91
|
},
|
|
92
|
+
"getter": false,
|
|
93
|
+
"setter": false,
|
|
87
94
|
"attribute": "for",
|
|
88
95
|
"reflect": false
|
|
89
96
|
}
|
|
@@ -3,37 +3,37 @@ import { version } from "../../../../package";
|
|
|
3
3
|
import { getFocusableChildren } from "../../utils/get-focusable-children";
|
|
4
4
|
import { getRoot } from "../../utils/index";
|
|
5
5
|
export class PostMenu {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
6
|
+
popoverRef;
|
|
7
|
+
lastFocusedElement = null;
|
|
8
|
+
KEYCODES = {
|
|
9
|
+
SPACE: ' ',
|
|
10
|
+
ENTER: 'Enter',
|
|
11
|
+
UP: 'ArrowUp',
|
|
12
|
+
DOWN: 'ArrowDown',
|
|
13
|
+
TAB: 'Tab',
|
|
14
|
+
HOME: 'Home',
|
|
15
|
+
END: 'End',
|
|
16
|
+
ESCAPE: 'Escape',
|
|
17
|
+
};
|
|
18
|
+
host;
|
|
19
|
+
/**
|
|
20
|
+
* Defines the placement of the tooltip according to the floating-ui options available at https://floating-ui.com/docs/computePosition#placement.
|
|
21
|
+
* Tooltips are automatically flipped to the opposite side if there is not enough available space and are shifted
|
|
22
|
+
* towards the viewport if they would overlap edge boundaries.
|
|
23
|
+
*/
|
|
24
|
+
placement = 'bottom';
|
|
25
|
+
/**
|
|
26
|
+
* Holds the current visibility state of the menu.
|
|
27
|
+
* This state is internally managed to track whether the menu is open (`true`) or closed (`false`),
|
|
28
|
+
* and updates automatically when the menu is toggled.
|
|
29
|
+
*/
|
|
30
|
+
isVisible = false;
|
|
31
|
+
/**
|
|
32
|
+
* Emits when the menu is shown or hidden.
|
|
33
|
+
* The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
|
|
34
|
+
**/
|
|
35
|
+
toggleMenu;
|
|
36
|
+
root;
|
|
37
37
|
connectedCallback() {
|
|
38
38
|
this.root = getRoot(this.host);
|
|
39
39
|
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
@@ -53,7 +53,12 @@ export class PostMenu {
|
|
|
53
53
|
* Toggles the menu visibility based on its current state.
|
|
54
54
|
*/
|
|
55
55
|
async toggle(target) {
|
|
56
|
-
this.isVisible
|
|
56
|
+
if (this.isVisible) {
|
|
57
|
+
await this.hide();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
await this.show(target);
|
|
61
|
+
}
|
|
57
62
|
}
|
|
58
63
|
/**
|
|
59
64
|
* Displays the popover menu, focusing the first menu item.
|
|
@@ -87,6 +92,22 @@ export class PostMenu {
|
|
|
87
92
|
console.error('hide: popoverRef is null or undefined');
|
|
88
93
|
}
|
|
89
94
|
}
|
|
95
|
+
handleKeyDown = (e) => {
|
|
96
|
+
e.stopPropagation();
|
|
97
|
+
if (e.key === this.KEYCODES.ESCAPE) {
|
|
98
|
+
this.toggle(this.host);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
102
|
+
this.controlKeyDownHandler(e);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
handleClick = (e) => {
|
|
106
|
+
const target = e.target;
|
|
107
|
+
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
108
|
+
this.toggle(this.host);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
90
111
|
controlKeyDownHandler(e) {
|
|
91
112
|
const menuItems = this.getSlottedItems();
|
|
92
113
|
if (!menuItems.length) {
|
|
@@ -137,7 +158,7 @@ export class PostMenu {
|
|
|
137
158
|
.flatMap(el => Array.from(getFocusableChildren(el))));
|
|
138
159
|
}
|
|
139
160
|
render() {
|
|
140
|
-
return (h(Host, { key: '
|
|
161
|
+
return (h(Host, { key: '071532c327f80197dda662f77e5cb2444281087d', "data-version": version }, h("post-popovercontainer", { key: '9f70ca4009139e0547026b26be610a02f4f1a95a', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '3ff1048a8fb27402a82cedc3dc300366063c9601', class: "popover-container", part: "popover-container" }, h("slot", { key: 'bed6c96b7502e0032b746ac6fdf8c3dd6d782e48' })))));
|
|
141
162
|
}
|
|
142
163
|
static get is() { return "post-menu"; }
|
|
143
164
|
static get encapsulation() { return "shadow"; }
|
|
@@ -173,6 +194,8 @@ export class PostMenu {
|
|
|
173
194
|
"tags": [],
|
|
174
195
|
"text": "Defines the placement of the tooltip according to the floating-ui options available at https://floating-ui.com/docs/computePosition#placement.\nTooltips are automatically flipped to the opposite side if there is not enough available space and are shifted\ntowards the viewport if they would overlap edge boundaries."
|
|
175
196
|
},
|
|
197
|
+
"getter": false,
|
|
198
|
+
"setter": false,
|
|
176
199
|
"attribute": "placement",
|
|
177
200
|
"reflect": false,
|
|
178
201
|
"defaultValue": "'bottom'"
|
|
@@ -2,7 +2,7 @@ import { h, Host } from "@stencil/core";
|
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
export class PostMenuItem {
|
|
4
4
|
render() {
|
|
5
|
-
return (h(Host, { key: '
|
|
5
|
+
return (h(Host, { key: '376ce17a520b6cb74c55c009843df878f99ef411', role: "menuitem", "data-version": version }, h("slot", { key: 'e489c5c09f1527e527e052e9f4349c5b26db6ea9' })));
|
|
6
6
|
}
|
|
7
7
|
static get is() { return "post-menu-item"; }
|
|
8
8
|
}
|
|
@@ -2,21 +2,21 @@ import { h, Host } from "@stencil/core";
|
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
import { checkType, getRoot } from "../../utils/index";
|
|
4
4
|
export class PostMenuTrigger {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
/**
|
|
6
|
+
* ID of the menu element that this trigger is linked to. Used to open and close the specified menu.
|
|
7
|
+
*/
|
|
8
|
+
for;
|
|
9
|
+
host;
|
|
10
|
+
/**
|
|
11
|
+
* Manages the accessibility attribute `aria-expanded` to indicate whether the associated menu is expanded or collapsed.
|
|
12
|
+
*/
|
|
13
|
+
ariaExpanded = false;
|
|
14
|
+
/**
|
|
15
|
+
* Reference to the slotted button within the trigger, if present.
|
|
16
|
+
* Used to manage click and key events for menu control.
|
|
17
|
+
*/
|
|
18
|
+
slottedButton = null;
|
|
19
|
+
root;
|
|
20
20
|
/**
|
|
21
21
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
22
22
|
* @param forValue - The new value of the `for` property.
|
|
@@ -39,6 +39,12 @@ export class PostMenuTrigger {
|
|
|
39
39
|
console.warn(`No post-menu found with ID: ${this.for}`);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
handleKeyDown = (e) => {
|
|
43
|
+
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
this.handleToggle();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
42
48
|
componentDidLoad() {
|
|
43
49
|
this.root = getRoot(this.host);
|
|
44
50
|
this.validateControlFor();
|
|
@@ -65,7 +71,7 @@ export class PostMenuTrigger {
|
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
73
|
render() {
|
|
68
|
-
return (h(Host, { key: '
|
|
74
|
+
return (h(Host, { key: 'a0fff619978087ce0c67d7d327982424e3784ff0', "data-version": version, "tab-index": "-1" }, h("slot", { key: '93e26150b59e9a01275a6815096e09ff5fac146b' })));
|
|
69
75
|
}
|
|
70
76
|
static get is() { return "post-menu-trigger"; }
|
|
71
77
|
static get originalStyleUrls() {
|
|
@@ -94,6 +100,8 @@ export class PostMenuTrigger {
|
|
|
94
100
|
"tags": [],
|
|
95
101
|
"text": "ID of the menu element that this trigger is linked to. Used to open and close the specified menu."
|
|
96
102
|
},
|
|
103
|
+
"getter": false,
|
|
104
|
+
"setter": false,
|
|
97
105
|
"attribute": "for",
|
|
98
106
|
"reflect": false
|
|
99
107
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright 2021 by Swiss Post, Information Technology
|
|
3
|
-
*/.btn-close{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:"";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color
|
|
3
|
+
*/.btn-close{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:"";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color:#999}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{color:CanvasText;forced-color-adjust:none}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:Highlight}}.btn-close-white{color:#e6e6e6}.btn-close-white:focus,.btn-close-white:not(:disabled):hover,.btn-close-white.pretend-hover{color:#fff}.btn-close-white:disabled{color:#999}*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:280px;max-width:100%}.popover-content{padding:.5em;flex-grow:1}.btn-close{color:inherit}
|
|
@@ -14,7 +14,7 @@ const globalToggleHandler = (e) => {
|
|
|
14
14
|
if (!popoverTarget || ('key' in e && e.key !== 'Enter'))
|
|
15
15
|
return;
|
|
16
16
|
const popover = document.getElementById(popoverTarget);
|
|
17
|
-
popover
|
|
17
|
+
popover?.toggle(target);
|
|
18
18
|
};
|
|
19
19
|
// Initialize a mutation observer for patching accessibility features
|
|
20
20
|
const triggerObserver = getAttributeObserver(popoverTargetAttribute, trigger => {
|
|
@@ -22,10 +22,25 @@ const triggerObserver = getAttributeObserver(popoverTargetAttribute, trigger =>
|
|
|
22
22
|
trigger.setAttribute('aria-expanded', force ? 'false' : null);
|
|
23
23
|
});
|
|
24
24
|
export class PostPopover {
|
|
25
|
+
popoverRef;
|
|
26
|
+
localBeforeToggleHandler;
|
|
27
|
+
host;
|
|
28
|
+
/**
|
|
29
|
+
* Defines the placement of the popover according to the floating-ui options available at https://floating-ui.com/docs/computePosition#placement.
|
|
30
|
+
* Popoverss are automatically flipped to the opposite side if there is not enough available space and are shifted
|
|
31
|
+
* towards the viewport if they would overlap edge boundaries.
|
|
32
|
+
*/
|
|
33
|
+
placement = 'top';
|
|
34
|
+
/**
|
|
35
|
+
* Define the caption of the close button for assistive technology
|
|
36
|
+
*/
|
|
37
|
+
closeButtonCaption;
|
|
38
|
+
/**
|
|
39
|
+
* Show a little indicator arrow
|
|
40
|
+
*/
|
|
41
|
+
// eslint-disable-next-line @stencil-community/ban-default-true
|
|
42
|
+
arrow = true;
|
|
25
43
|
constructor() {
|
|
26
|
-
this.placement = 'top';
|
|
27
|
-
this.closeButtonCaption = undefined;
|
|
28
|
-
this.arrow = true;
|
|
29
44
|
this.localBeforeToggleHandler = this.beforeToggleHandler.bind(this);
|
|
30
45
|
}
|
|
31
46
|
connectedCallback() {
|
|
@@ -88,7 +103,7 @@ export class PostPopover {
|
|
|
88
103
|
this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
|
|
89
104
|
}
|
|
90
105
|
render() {
|
|
91
|
-
return (h(Host, { key: '
|
|
106
|
+
return (h(Host, { key: 'a7976e6c960015ed9b318c75fc8a74afc2337661', "data-version": version }, h("post-popovercontainer", { key: '1b71f4bce3a6866e19c3900c0e82f814508f8144', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'b15e45e7fd31edc36fa4c912332984daf0ce9cbc', class: "popover-container" }, h("div", { key: 'adc170a2738c7f88c60e8885d8ee84f10fa1d546', class: "popover-content" }, h("slot", { key: '235dbd1a184353de8d8da038c8c31e3dd7f6dab7' })), h("button", { key: '679fccf088d5589b548ec2186facc6c767aace93', class: "btn-close", onClick: () => this.hide() }, h("span", { key: 'e8f61719cc6e9b6ddf85756005f17b9103406055', class: "visually-hidden" }, this.closeButtonCaption))))));
|
|
92
107
|
}
|
|
93
108
|
static get is() { return "post-popover"; }
|
|
94
109
|
static get encapsulation() { return "shadow"; }
|
|
@@ -124,6 +139,8 @@ export class PostPopover {
|
|
|
124
139
|
"tags": [],
|
|
125
140
|
"text": "Defines the placement of the popover according to the floating-ui options available at https://floating-ui.com/docs/computePosition#placement.\nPopoverss are automatically flipped to the opposite side if there is not enough available space and are shifted\ntowards the viewport if they would overlap edge boundaries."
|
|
126
141
|
},
|
|
142
|
+
"getter": false,
|
|
143
|
+
"setter": false,
|
|
127
144
|
"attribute": "placement",
|
|
128
145
|
"reflect": false,
|
|
129
146
|
"defaultValue": "'top'"
|
|
@@ -142,6 +159,8 @@ export class PostPopover {
|
|
|
142
159
|
"tags": [],
|
|
143
160
|
"text": "Define the caption of the close button for assistive technology"
|
|
144
161
|
},
|
|
162
|
+
"getter": false,
|
|
163
|
+
"setter": false,
|
|
145
164
|
"attribute": "close-button-caption",
|
|
146
165
|
"reflect": false
|
|
147
166
|
},
|
|
@@ -159,6 +178,8 @@ export class PostPopover {
|
|
|
159
178
|
"tags": [],
|
|
160
179
|
"text": "Show a little indicator arrow"
|
|
161
180
|
},
|
|
181
|
+
"getter": false,
|
|
182
|
+
"setter": false,
|
|
162
183
|
"attribute": "arrow",
|
|
163
184
|
"reflect": false,
|
|
164
185
|
"defaultValue": "true"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\:popover-open){display:none}}}:where(post-popovercontainer){box-shadow
|
|
1
|
+
@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\:popover-open){display:none}}}:where(post-popovercontainer){box-shadow:var(--post-device-elevation-300);background:var(--post-current-palette-bg);color:var(--post-current-palette-fg);position:fixed;z-index:1060;width:max-content;margin:0;padding:0;box-sizing:border-box;border:2px solid rgba(0,0,0,0);border-radius:4px;overflow:visible}: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):not(:has(.arrow)){box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow){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){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){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){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-left:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-right:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-left:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-right:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}
|