@swisspost/design-system-components 9.0.0-next.32 → 9.0.0-next.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{attribute-observer-6d8b886b.js → attribute-observer-c3a805b2.js} +3 -1
- package/dist/cjs/{breakpoints-c6247c71.js → breakpoints-cdf1b747.js} +12 -7
- package/dist/cjs/event-guard-efabc84f.js +47 -0
- package/dist/cjs/get-root-8102fecd.js +17 -0
- package/dist/cjs/{index-d6bf2c66.js → index-b60129c4.js} +2 -2
- package/dist/cjs/index.cjs.js +25 -25
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/long-press-event-6e62d113.js +266 -0
- package/dist/cjs/{package-6f8f430c.js → package-3426e8f7.js} +1 -1
- package/dist/cjs/{post-accordion-e3a6d78e.js → post-accordion-3ac8dca8.js} +10 -12
- package/dist/cjs/{post-accordion-item-7ed1f630.js → post-accordion-item-aace6bc2.js} +10 -10
- package/dist/cjs/post-accordion-item.cjs.entry.js +5 -3
- package/dist/cjs/post-accordion.cjs.entry.js +5 -3
- package/dist/cjs/{post-avatar-de8ec197.js → post-avatar-53abd22f.js} +5 -4
- package/dist/cjs/post-avatar.cjs.entry.js +4 -3
- package/dist/cjs/post-back-to-top-b231fc1c.js +96 -0
- package/dist/cjs/post-back-to-top.cjs.entry.js +4 -3
- package/dist/cjs/{post-banner-bf523706.js → post-banner-e6d14bf1.js} +4 -8
- package/dist/cjs/post-banner.cjs.entry.js +4 -3
- package/dist/cjs/{post-breadcrumb-da55143a.js → post-breadcrumb-a929f2a6.js} +30 -22
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -3
- package/dist/cjs/post-breadcrumb.cjs.entry.js +4 -4
- package/dist/cjs/{post-card-control-0bcd7d16.js → post-card-control-cbee7b86.js} +26 -40
- package/dist/cjs/post-card-control.cjs.entry.js +4 -3
- package/dist/cjs/post-closebutton_15.cjs.entry.js +6 -5
- package/dist/cjs/{post-collapsible-trigger-a5e4451d.js → post-collapsible-trigger-d1cb592a.js} +39 -46
- package/dist/cjs/post-collapsible_2.cjs.entry.js +6 -5
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/{post-footer-b15fee73.js → post-footer-4290dafc.js} +11 -11
- package/dist/cjs/post-footer.cjs.entry.js +4 -4
- package/dist/cjs/{post-linkarea-8c85bf5e.js → post-linkarea-f22f4f92.js} +5 -5
- package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
- package/dist/cjs/{post-menu-item-509877cd.js → post-menu-item-afabaa61.js} +4 -4
- package/dist/cjs/{post-popover-1213aa19.js → post-popover-a4c72d38.js} +16 -14
- package/dist/cjs/post-popover.cjs.entry.js +5 -4
- package/dist/cjs/{post-rating-e1f8a668.js → post-rating-b87616fc.js} +4 -14
- package/dist/cjs/post-rating.cjs.entry.js +3 -3
- package/dist/cjs/{post-tab-header-889a6c64.js → post-tab-header-45cb6bb4.js} +5 -4
- package/dist/cjs/post-tab-header.cjs.entry.js +4 -3
- package/dist/cjs/{post-tab-panel-300f39a9.js → post-tab-panel-00d16ba7.js} +4 -4
- package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
- package/dist/cjs/{post-tabs-dc281228.js → post-tabs-2c3a89d0.js} +5 -12
- package/dist/cjs/post-tabs.cjs.entry.js +4 -3
- package/dist/cjs/{post-tag-fd9e586f.js → post-tag-370a2f4d.js} +3 -3
- package/dist/cjs/post-tag.cjs.entry.js +3 -3
- package/dist/cjs/{post-togglebutton-ad6ae1e4.js → post-togglebutton-2c9552e3.js} +969 -471
- package/dist/cjs/{post-tooltip-52d690e4.js → post-tooltip-4d4d2ea9.js} +39 -296
- package/dist/cjs/post-tooltip.cjs.entry.js +5 -4
- package/dist/collection/animations/collapse.js +3 -1
- package/dist/collection/components/post-accordion/post-accordion.js +6 -10
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +6 -8
- package/dist/collection/components/post-avatar/post-avatar.js +3 -4
- package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +37 -19
- package/dist/collection/components/post-banner/post-banner.js +0 -6
- package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +16 -19
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +0 -2
- package/dist/collection/components/post-card-control/post-card-control.js +24 -40
- package/dist/collection/components/post-closebutton/post-closebutton.css +1 -0
- package/dist/collection/components/post-closebutton/post-closebutton.js +12 -2
- package/dist/collection/components/post-collapsible/post-collapsible.js +4 -10
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +29 -32
- package/dist/collection/components/post-footer/post-footer.js +8 -9
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +16 -19
- package/dist/collection/components/post-icon/post-icon.js +5 -7
- package/dist/collection/components/post-language-option/post-language-option.js +1 -10
- package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +25 -31
- package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.js +2 -2
- package/dist/collection/components/post-list/post-list.js +1 -3
- package/dist/collection/components/post-list-item/post-list-item.js +1 -2
- package/dist/collection/components/post-logo/post-logo.js +1 -2
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +98 -182
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +20 -30
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +42 -36
- package/dist/collection/components/post-menu/post-menu.js +51 -52
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -15
- package/dist/collection/components/post-popover/post-popover.js +12 -12
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +30 -33
- package/dist/collection/components/post-rating/post-rating.js +1 -12
- package/dist/collection/components/post-tab-header/post-tab-header.js +2 -3
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +2 -3
- package/dist/collection/components/post-tabs/post-tabs.js +1 -10
- package/dist/collection/components/post-tag/post-tag.js +0 -1
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +10 -11
- package/dist/collection/components/post-tooltip/post-tooltip.js +36 -32
- package/dist/collection/utils/attribute-observer.js +2 -1
- package/dist/collection/utils/breakpoints.js +9 -7
- package/dist/collection/utils/environment.js +2 -0
- package/dist/collection/utils/event-guard.js +43 -0
- package/dist/collection/utils/get-root.js +6 -1
- package/dist/collection/utils/index.js +5 -0
- package/dist/collection/utils/is-motion-reduced.js +2 -1
- package/dist/components/attribute-observer.js +3 -1
- package/dist/components/breakpoints.js +12 -8
- package/dist/components/event-guard.js +45 -0
- package/dist/components/get-root.js +7 -1
- package/dist/components/long-press-event.js +264 -0
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +8 -8
- package/dist/components/post-accordion2.js +8 -10
- package/dist/components/post-avatar2.js +4 -3
- package/dist/components/post-back-to-top2.js +40 -20
- package/dist/components/post-banner2.js +2 -6
- package/dist/components/post-breadcrumb-item2.js +2 -2
- package/dist/components/post-breadcrumb2.js +28 -20
- package/dist/components/post-card-control2.js +25 -39
- package/dist/components/post-closebutton2.js +8 -3
- package/dist/components/post-collapsible-trigger2.js +33 -35
- package/dist/components/post-collapsible2.js +9 -12
- package/dist/components/post-footer2.js +8 -8
- package/dist/components/post-header2.js +18 -20
- package/dist/components/post-icon2.js +6 -6
- package/dist/components/post-language-option2.js +3 -10
- package/dist/components/post-language-switch2.js +28 -31
- package/dist/components/post-linkarea2.js +5 -4
- package/dist/components/post-list-item2.js +2 -2
- package/dist/components/post-list2.js +2 -3
- package/dist/components/post-logo2.js +3 -2
- package/dist/components/post-mainnavigation2.js +94 -182
- package/dist/components/post-megadropdown-trigger2.js +44 -36
- package/dist/components/post-megadropdown2.js +22 -31
- package/dist/components/post-menu-trigger2.js +15 -15
- package/dist/components/post-menu2.js +53 -52
- package/dist/components/post-popover2.js +14 -12
- package/dist/components/post-popovercontainer2.js +638 -36
- package/dist/components/post-rating2.js +2 -12
- package/dist/components/post-tab-header2.js +4 -3
- package/dist/components/post-tab-panel2.js +3 -3
- package/dist/components/post-tabs2.js +3 -10
- package/dist/components/post-tag2.js +1 -1
- package/dist/components/post-togglebutton2.js +12 -11
- package/dist/components/post-tooltip2.js +37 -294
- package/dist/docs.json +21 -15
- package/dist/esm/{attribute-observer-2f203993.js → attribute-observer-009deee5.js} +3 -1
- package/dist/esm/{breakpoints-bbe0c54e.js → breakpoints-7812702e.js} +12 -8
- package/dist/esm/event-guard-538ee077.js +45 -0
- package/dist/esm/get-root-1b1af46f.js +15 -0
- package/dist/esm/{index-3419e46d.js → index-f4d19816.js} +2 -2
- package/dist/esm/index.js +25 -25
- package/dist/esm/loader.js +3 -3
- package/dist/esm/long-press-event-04d24397.js +264 -0
- package/dist/esm/package-8986a24c.js +3 -0
- package/dist/esm/{post-accordion-7b6fb9c3.js → post-accordion-577b52a0.js} +10 -12
- package/dist/esm/{post-accordion-item-d40c0b26.js → post-accordion-item-99053b41.js} +10 -10
- package/dist/esm/post-accordion-item.entry.js +5 -3
- package/dist/esm/post-accordion.entry.js +5 -3
- package/dist/esm/{post-avatar-04ca6e3e.js → post-avatar-2914706c.js} +5 -4
- package/dist/esm/post-avatar.entry.js +4 -3
- package/dist/esm/post-back-to-top-4c7b1b47.js +94 -0
- package/dist/esm/post-back-to-top.entry.js +4 -3
- package/dist/esm/{post-banner-7c37e3ef.js → post-banner-295fd0f5.js} +4 -8
- package/dist/esm/post-banner.entry.js +4 -3
- package/dist/esm/{post-breadcrumb-59e4d655.js → post-breadcrumb-1abfb312.js} +30 -22
- package/dist/esm/post-breadcrumb-item_2.entry.js +4 -3
- package/dist/esm/post-breadcrumb.entry.js +4 -4
- package/dist/esm/{post-card-control-5471488b.js → post-card-control-ad72d4f8.js} +26 -40
- package/dist/esm/post-card-control.entry.js +4 -3
- package/dist/esm/post-closebutton_15.entry.js +6 -5
- package/dist/esm/{post-collapsible-trigger-1f6d816e.js → post-collapsible-trigger-6b4ece20.js} +39 -46
- package/dist/esm/post-collapsible_2.entry.js +6 -5
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/{post-footer-d30f4dc8.js → post-footer-a5105e66.js} +11 -11
- package/dist/esm/post-footer.entry.js +4 -4
- package/dist/esm/{post-linkarea-8e1a561e.js → post-linkarea-22f97a88.js} +5 -5
- package/dist/esm/post-linkarea.entry.js +3 -3
- package/dist/esm/{post-menu-item-0c8477eb.js → post-menu-item-9465a1f3.js} +4 -4
- package/dist/esm/{post-popover-c43969ca.js → post-popover-e9b4569c.js} +16 -14
- package/dist/esm/post-popover.entry.js +5 -4
- package/dist/esm/{post-rating-94148df7.js → post-rating-ae16e3c9.js} +4 -14
- package/dist/esm/post-rating.entry.js +3 -3
- package/dist/esm/{post-tab-header-82df0ba9.js → post-tab-header-11f23150.js} +5 -4
- package/dist/esm/post-tab-header.entry.js +4 -3
- package/dist/esm/{post-tab-panel-a6512f53.js → post-tab-panel-0f3a952e.js} +4 -4
- package/dist/esm/post-tab-panel.entry.js +3 -3
- package/dist/esm/{post-tabs-d26ce341.js → post-tabs-1192509c.js} +5 -12
- package/dist/esm/post-tabs.entry.js +4 -3
- package/dist/esm/{post-tag-41d1667e.js → post-tag-8be0a71c.js} +3 -3
- package/dist/esm/post-tag.entry.js +3 -3
- package/dist/esm/{post-togglebutton-4f94bddb.js → post-togglebutton-b634fc7c.js} +969 -471
- package/dist/esm/{post-tooltip-20f916db.js → post-tooltip-f64bd0cc.js} +39 -296
- package/dist/esm/post-tooltip.entry.js +5 -4
- package/dist/post-components/index.esm.js +1 -1
- package/dist/post-components/p-0889c759.js +1 -0
- package/dist/post-components/p-0f398677.js +1 -0
- package/dist/post-components/p-1038fc25.js +1 -0
- package/dist/post-components/p-30f94eca.entry.js +1 -0
- package/dist/post-components/p-31bb6dc5.entry.js +1 -0
- package/dist/post-components/p-32173742.js +1 -0
- package/dist/post-components/p-338a2507.js +1 -0
- package/dist/post-components/p-36540dd6.entry.js +1 -0
- package/dist/post-components/p-3aa766a6.js +1 -0
- package/dist/post-components/p-3b0158b3.js +1 -0
- package/dist/post-components/p-40db8cd5.js +1 -0
- package/dist/post-components/p-44f13ce4.entry.js +1 -0
- package/dist/post-components/p-46a9324f.entry.js +1 -0
- package/dist/post-components/p-49c5aa99.js +1 -0
- package/dist/post-components/p-4cd4a936.entry.js +1 -0
- package/dist/post-components/p-548ef2f5.entry.js +1 -0
- package/dist/post-components/p-58f453dd.js +1 -0
- package/dist/post-components/p-5f54b77f.js +1 -0
- package/dist/post-components/p-60bb7f26.js +1 -0
- package/dist/post-components/p-60bfa4be.entry.js +1 -0
- package/dist/post-components/p-6b31a76a.js +1 -0
- package/dist/post-components/p-6ee81c5d.js +1 -0
- package/dist/post-components/p-6faad212.entry.js +1 -0
- package/dist/post-components/p-722ffaae.js +1 -0
- package/dist/post-components/p-74a0b44c.entry.js +1 -0
- package/dist/post-components/{p-28e77ad3.js → p-78b4c699.js} +1 -1
- package/dist/post-components/p-7aa0468b.entry.js +1 -0
- package/dist/post-components/p-7afc495e.entry.js +1 -0
- package/dist/post-components/p-8db32dab.js +8 -0
- package/dist/post-components/p-96034ba4.entry.js +1 -0
- package/dist/post-components/p-9aaf9f54.js +1 -0
- package/dist/post-components/{p-5c758f41.js → p-9e461613.js} +1 -1
- package/dist/post-components/p-ab4073be.js +1 -0
- package/dist/post-components/p-abd7eb91.js +8 -0
- package/dist/post-components/p-afb8a487.entry.js +1 -0
- package/dist/post-components/p-b003b381.js +1 -0
- package/dist/post-components/p-b97dea1e.entry.js +1 -0
- package/dist/post-components/p-be37cf2a.js +1 -0
- package/dist/post-components/p-c31b56ed.js +1 -0
- package/dist/post-components/p-ccbb51fe.js +1 -0
- package/dist/post-components/p-d3900385.entry.js +1 -0
- package/dist/post-components/p-ef49153c.entry.js +1 -0
- package/dist/post-components/p-f27e5691.js +1 -0
- package/dist/post-components/p-f553019f.entry.js +1 -0
- package/dist/post-components/p-ffc1db17.entry.js +1 -0
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/types/components/post-avatar/post-avatar.d.ts +1 -1
- package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +3 -1
- package/dist/types/components/post-card-control/post-card-control.d.ts +1 -1
- package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +9 -14
- package/dist/types/components/post-footer/post-footer.d.ts +2 -2
- package/dist/types/components/post-header/post-header.d.ts +1 -0
- package/dist/types/components/post-icon/post-icon.d.ts +0 -1
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +5 -5
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +14 -39
- package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +2 -0
- package/dist/types/components/post-menu/post-menu.d.ts +1 -0
- package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +1 -1
- package/dist/types/components/post-popover/post-popover.d.ts +3 -1
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +1 -1
- package/dist/types/components/post-tooltip/post-tooltip.d.ts +6 -1
- package/dist/types/components.d.ts +4 -4
- package/dist/types/popover-fn.d.ts +11 -0
- package/dist/types/utils/environment.d.ts +2 -0
- package/dist/types/utils/event-guard.d.ts +4 -0
- package/dist/types/utils/get-root.d.ts +4 -0
- package/dist/types/utils/index.d.ts +5 -0
- package/loaders/attribute-observer.js +3 -1
- package/loaders/breakpoints.js +12 -8
- package/loaders/event-guard.js +45 -0
- package/loaders/get-root.js +7 -1
- package/loaders/index.js +3 -3
- package/loaders/long-press-event.js +264 -0
- package/loaders/package.js +1 -1
- package/loaders/post-accordion-item2.js +8 -8
- package/loaders/post-accordion.js +8 -10
- package/loaders/post-avatar.js +4 -3
- package/loaders/post-back-to-top.js +40 -20
- package/loaders/post-banner.js +2 -6
- package/loaders/post-breadcrumb-item2.js +2 -2
- package/loaders/post-breadcrumb.js +28 -20
- package/loaders/post-card-control.js +25 -39
- package/loaders/post-closebutton.js +8 -3
- package/loaders/post-collapsible-trigger2.js +33 -35
- package/loaders/post-collapsible2.js +9 -12
- package/loaders/post-footer.js +8 -8
- package/loaders/post-header.js +18 -20
- package/loaders/post-icon2.js +6 -6
- package/loaders/post-language-option.js +3 -10
- package/loaders/post-language-switch.js +28 -31
- package/loaders/post-linkarea.js +5 -4
- package/loaders/post-list-item.js +2 -2
- package/loaders/post-list.js +2 -3
- package/loaders/post-logo.js +3 -2
- package/loaders/post-mainnavigation.js +94 -182
- package/loaders/post-megadropdown-trigger.js +44 -36
- package/loaders/post-megadropdown.js +22 -31
- package/loaders/post-menu-trigger2.js +15 -15
- package/loaders/post-menu2.js +53 -52
- package/loaders/post-popover.js +14 -12
- package/loaders/post-popovercontainer2.js +638 -36
- package/loaders/post-rating.js +2 -12
- package/loaders/post-tab-header.js +4 -3
- package/loaders/post-tab-panel.js +3 -3
- package/loaders/post-tabs.js +3 -10
- package/loaders/post-tag.js +1 -1
- package/loaders/post-togglebutton.js +12 -11
- package/loaders/post-tooltip.js +37 -294
- package/package.json +5 -5
- package/dist/cjs/debounce-158fd76f.js +0 -13
- package/dist/cjs/get-root-7a3498ef.js +0 -11
- package/dist/cjs/post-back-to-top-6a1c1ba4.js +0 -76
- package/dist/components/debounce.js +0 -11
- package/dist/esm/debounce-e54c7131.js +0 -11
- package/dist/esm/get-root-7af2e0d1.js +0 -9
- package/dist/esm/package-70367d05.js +0 -3
- package/dist/esm/post-back-to-top-abe253c1.js +0 -74
- package/dist/post-components/p-015361b5.entry.js +0 -1
- package/dist/post-components/p-077edb8c.js +0 -1
- package/dist/post-components/p-08a13d05.js +0 -1
- package/dist/post-components/p-08c3b919.entry.js +0 -1
- package/dist/post-components/p-0d7b0c2e.entry.js +0 -1
- package/dist/post-components/p-12f9a91e.entry.js +0 -1
- package/dist/post-components/p-20137c6a.entry.js +0 -1
- package/dist/post-components/p-21254d9c.entry.js +0 -1
- package/dist/post-components/p-22513a27.entry.js +0 -1
- package/dist/post-components/p-3638e50d.js +0 -1
- package/dist/post-components/p-4397f28e.js +0 -1
- package/dist/post-components/p-494a2a31.js +0 -1
- package/dist/post-components/p-509987da.entry.js +0 -1
- package/dist/post-components/p-5aeb3656.js +0 -1
- package/dist/post-components/p-5d0bb74d.js +0 -1
- package/dist/post-components/p-5e0f6c12.js +0 -1
- package/dist/post-components/p-5f89f4e8.entry.js +0 -1
- package/dist/post-components/p-6213f0dc.entry.js +0 -1
- package/dist/post-components/p-6ad7bf0f.js +0 -1
- package/dist/post-components/p-6f058a98.js +0 -1
- package/dist/post-components/p-737d76cb.js +0 -15
- package/dist/post-components/p-753a1935.js +0 -1
- package/dist/post-components/p-88a2cdaa.js +0 -1
- package/dist/post-components/p-90935fdd.js +0 -1
- package/dist/post-components/p-931c4523.js +0 -1
- package/dist/post-components/p-9748a355.js +0 -1
- package/dist/post-components/p-97865e22.entry.js +0 -1
- package/dist/post-components/p-a200c9c7.js +0 -1
- package/dist/post-components/p-a35c235a.entry.js +0 -1
- package/dist/post-components/p-a4264a61.entry.js +0 -1
- package/dist/post-components/p-a54c63d0.entry.js +0 -1
- package/dist/post-components/p-aebe402d.entry.js +0 -1
- package/dist/post-components/p-b43e79e3.entry.js +0 -1
- package/dist/post-components/p-c0c71e37.js +0 -1
- package/dist/post-components/p-c0ca344d.js +0 -1
- package/dist/post-components/p-c554fcf3.js +0 -1
- package/dist/post-components/p-cff7c06f.entry.js +0 -1
- package/dist/post-components/p-d1f70a05.entry.js +0 -1
- package/dist/post-components/p-dc67e6de.entry.js +0 -1
- package/dist/post-components/p-e1baac59.js +0 -1
- package/dist/post-components/p-f1ceccf3.js +0 -1
- package/dist/post-components/p-fc91cbc2.js +0 -1
- package/loaders/debounce.js +0 -11
|
@@ -2,30 +2,57 @@ import { h, Host, } from "@stencil/core";
|
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
import { getFocusableChildren } from "../../utils/get-focusable-children";
|
|
4
4
|
import { getRoot } from "../../utils/index";
|
|
5
|
+
import { eventGuard } from "../../utils/event-gua";
|
|
5
6
|
export class PostMenu {
|
|
6
7
|
constructor() {
|
|
8
|
+
this.lastFocusedElement = null;
|
|
9
|
+
this.KEYCODES = {
|
|
10
|
+
SPACE: ' ',
|
|
11
|
+
ENTER: 'Enter',
|
|
12
|
+
UP: 'ArrowUp',
|
|
13
|
+
DOWN: 'ArrowDown',
|
|
14
|
+
TAB: 'Tab',
|
|
15
|
+
HOME: 'Home',
|
|
16
|
+
END: 'End',
|
|
17
|
+
ESCAPE: 'Escape',
|
|
18
|
+
};
|
|
19
|
+
this.handleKeyDown = (e) => {
|
|
20
|
+
e.stopPropagation();
|
|
21
|
+
if (e.key === this.KEYCODES.ESCAPE) {
|
|
22
|
+
this.toggle(this.host);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
26
|
+
this.controlKeyDownHandler(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
this.handlePostToggle = (event) => {
|
|
30
|
+
eventGuard(this.host, event, { targetLocalName: 'post-popovercontainer', delegatorSelector: 'post-menu' }, () => {
|
|
31
|
+
this.isVisible = event.detail;
|
|
32
|
+
this.toggleMenu.emit(this.isVisible);
|
|
33
|
+
requestAnimationFrame(() => {
|
|
34
|
+
if (this.isVisible) {
|
|
35
|
+
this.lastFocusedElement = this.root?.activeElement;
|
|
36
|
+
const menuItems = this.getSlottedItems();
|
|
37
|
+
if (menuItems.length > 0) {
|
|
38
|
+
menuItems[0].focus();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (this.lastFocusedElement) {
|
|
42
|
+
this.lastFocusedElement.focus();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
this.handleClick = (e) => {
|
|
48
|
+
const target = e.target;
|
|
49
|
+
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
50
|
+
this.toggle(this.host);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
7
53
|
this.placement = 'bottom';
|
|
8
54
|
this.isVisible = false;
|
|
9
55
|
}
|
|
10
|
-
popoverRef;
|
|
11
|
-
lastFocusedElement = null;
|
|
12
|
-
KEYCODES = {
|
|
13
|
-
SPACE: ' ',
|
|
14
|
-
ENTER: 'Enter',
|
|
15
|
-
UP: 'ArrowUp',
|
|
16
|
-
DOWN: 'ArrowDown',
|
|
17
|
-
TAB: 'Tab',
|
|
18
|
-
HOME: 'Home',
|
|
19
|
-
END: 'End',
|
|
20
|
-
ESCAPE: 'Escape',
|
|
21
|
-
};
|
|
22
|
-
host;
|
|
23
|
-
/**
|
|
24
|
-
* Emits when the menu is shown or hidden.
|
|
25
|
-
* The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
|
|
26
|
-
**/
|
|
27
|
-
toggleMenu;
|
|
28
|
-
root;
|
|
29
56
|
connectedCallback() {
|
|
30
57
|
this.root = getRoot(this.host);
|
|
31
58
|
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
@@ -34,24 +61,12 @@ export class PostMenu {
|
|
|
34
61
|
disconnectedCallback() {
|
|
35
62
|
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
36
63
|
this.host.removeEventListener('click', this.handleClick);
|
|
64
|
+
this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
|
|
37
65
|
}
|
|
38
66
|
componentDidLoad() {
|
|
39
|
-
this.popoverRef
|
|
40
|
-
this.
|
|
41
|
-
|
|
42
|
-
requestAnimationFrame(() => {
|
|
43
|
-
if (this.isVisible) {
|
|
44
|
-
this.lastFocusedElement = this.root.activeElement;
|
|
45
|
-
const menuItems = this.getSlottedItems();
|
|
46
|
-
if (menuItems.length > 0) {
|
|
47
|
-
menuItems[0].focus();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else if (this.lastFocusedElement) {
|
|
51
|
-
this.lastFocusedElement.focus();
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
});
|
|
67
|
+
if (this.popoverRef) {
|
|
68
|
+
this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
|
|
69
|
+
}
|
|
55
70
|
}
|
|
56
71
|
/**
|
|
57
72
|
* Toggles the menu visibility based on its current state.
|
|
@@ -88,22 +103,6 @@ export class PostMenu {
|
|
|
88
103
|
console.error('hide: popoverRef is null or undefined');
|
|
89
104
|
}
|
|
90
105
|
}
|
|
91
|
-
handleKeyDown = (e) => {
|
|
92
|
-
e.stopPropagation();
|
|
93
|
-
if (e.key === this.KEYCODES.ESCAPE) {
|
|
94
|
-
this.toggle(this.host);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (Object.values(this.KEYCODES).includes(e.key)) {
|
|
98
|
-
this.controlKeyDownHandler(e);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
handleClick = (e) => {
|
|
102
|
-
const target = e.target;
|
|
103
|
-
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
104
|
-
this.toggle(this.host);
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
106
|
controlKeyDownHandler(e) {
|
|
108
107
|
const menuItems = this.getSlottedItems();
|
|
109
108
|
if (!menuItems.length) {
|
|
@@ -152,7 +151,7 @@ export class PostMenu {
|
|
|
152
151
|
.flatMap(el => Array.from(getFocusableChildren(el))));
|
|
153
152
|
}
|
|
154
153
|
render() {
|
|
155
|
-
return (h(Host, { key: '
|
|
154
|
+
return (h(Host, { key: 'a86276a1fefccbb1f2b50f1ad74dd98ddcbdae5d', "data-version": version, role: "menu" }, h("post-popovercontainer", { key: 'a0b2a35714ba370b7a73d92d1d6c036aa7039aea', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '98da2e21f8e4b4e02b4c347bc4f9238edc635b77', class: "popover-container", part: "popover-container" }, h("slot", { key: 'd3060c46482c5f3179827b8996a9a4b24abf49fa' })))));
|
|
156
155
|
}
|
|
157
156
|
static get is() { return "post-menu"; }
|
|
158
157
|
static get encapsulation() { return "shadow"; }
|
|
@@ -3,16 +3,20 @@ import { version } from "../../../../package";
|
|
|
3
3
|
import { checkType, getRoot } from "../../utils/index";
|
|
4
4
|
export class PostMenuTrigger {
|
|
5
5
|
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* Reference to the slotted button within the trigger, if present.
|
|
8
|
+
* Used to manage click and key events for menu control.
|
|
9
|
+
*/
|
|
10
|
+
this.slottedButton = null;
|
|
11
|
+
this.handleKeyDown = (e) => {
|
|
12
|
+
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
13
|
+
e.preventDefault();
|
|
14
|
+
this.handleToggle();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
6
17
|
this.for = undefined;
|
|
7
18
|
this.ariaExpanded = false;
|
|
8
19
|
}
|
|
9
|
-
host;
|
|
10
|
-
/**
|
|
11
|
-
* Reference to the slotted button within the trigger, if present.
|
|
12
|
-
* Used to manage click and key events for menu control.
|
|
13
|
-
*/
|
|
14
|
-
slottedButton = null;
|
|
15
|
-
root;
|
|
16
20
|
/**
|
|
17
21
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
18
22
|
* @param forValue - The new value of the `for` property.
|
|
@@ -32,12 +36,6 @@ export class PostMenuTrigger {
|
|
|
32
36
|
console.warn(`No post-menu found with ID: ${this.for}`);
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
|
-
handleKeyDown = (e) => {
|
|
36
|
-
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
37
|
-
e.preventDefault();
|
|
38
|
-
this.handleToggle();
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
39
|
connectedCallback() {
|
|
42
40
|
this.root = getRoot(this.host);
|
|
43
41
|
}
|
|
@@ -73,7 +71,7 @@ export class PostMenuTrigger {
|
|
|
73
71
|
}
|
|
74
72
|
}
|
|
75
73
|
render() {
|
|
76
|
-
return (h(Host, { key: '
|
|
74
|
+
return (h(Host, { key: '1b9589febc2976d17eed3363d91b4321473b7b5e', "data-version": version, "tab-index": "-1" }, h("slot", { key: 'bec55f97274084ab4721dc085dc9e1c3a216c0a3' })));
|
|
77
75
|
}
|
|
78
76
|
static get is() { return "post-menu-trigger"; }
|
|
79
77
|
static get originalStyleUrls() {
|
|
@@ -103,7 +101,7 @@ export class PostMenuTrigger {
|
|
|
103
101
|
"text": "ID of the menu element that this trigger is linked to. Used to open and close the specified menu."
|
|
104
102
|
},
|
|
105
103
|
"attribute": "for",
|
|
106
|
-
"reflect":
|
|
104
|
+
"reflect": true
|
|
107
105
|
}
|
|
108
106
|
};
|
|
109
107
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { IS_BROWSER, getAttributeObserver } from "../../utils/index";
|
|
2
3
|
import { version } from "../../../../package";
|
|
3
|
-
import { getAttributeObserver } from "../../utils/attribute-observer";
|
|
4
4
|
/**
|
|
5
5
|
* @slot default - Slot for placing content inside the popover.
|
|
6
6
|
*/
|
|
@@ -20,16 +20,12 @@ const globalToggleHandler = (e) => {
|
|
|
20
20
|
const popover = document.getElementById(popoverTarget);
|
|
21
21
|
popover?.toggle(currentElement);
|
|
22
22
|
};
|
|
23
|
-
// Initialize a mutation observer for patching accessibility features
|
|
24
|
-
const triggerObserver = getAttributeObserver(popoverTargetAttribute, trigger => {
|
|
25
|
-
const force = trigger.hasAttribute(popoverTargetAttribute);
|
|
26
|
-
trigger.setAttribute('aria-expanded', force ? 'false' : null);
|
|
27
|
-
});
|
|
28
23
|
export class PostPopover {
|
|
29
|
-
popoverRef;
|
|
30
|
-
localBeforeToggleHandler;
|
|
31
|
-
host;
|
|
32
24
|
constructor() {
|
|
25
|
+
// Initialize a mutation observer for patching accessibility features
|
|
26
|
+
this.triggerObserver = IS_BROWSER
|
|
27
|
+
? getAttributeObserver(popoverTargetAttribute, this.patchAccessibilityFeatures)
|
|
28
|
+
: null;
|
|
33
29
|
this.placement = 'top';
|
|
34
30
|
this.closeButtonCaption = undefined;
|
|
35
31
|
this.arrow = true;
|
|
@@ -40,7 +36,7 @@ export class PostPopover {
|
|
|
40
36
|
if (popoverInstances === 0) {
|
|
41
37
|
window.addEventListener('pointerup', globalToggleHandler);
|
|
42
38
|
window.addEventListener('keydown', globalToggleHandler);
|
|
43
|
-
triggerObserver
|
|
39
|
+
this.triggerObserver?.observe(document.body, {
|
|
44
40
|
subtree: true,
|
|
45
41
|
childList: true,
|
|
46
42
|
attributeFilter: [popoverTargetAttribute],
|
|
@@ -58,7 +54,7 @@ export class PostPopover {
|
|
|
58
54
|
if (popoverInstances === 0) {
|
|
59
55
|
window.removeEventListener('click', globalToggleHandler);
|
|
60
56
|
window.removeEventListener('keydown', globalToggleHandler);
|
|
61
|
-
triggerObserver
|
|
57
|
+
this.triggerObserver?.disconnect();
|
|
62
58
|
}
|
|
63
59
|
this.popoverRef.removeEventListener('beforetoggle', this.localBeforeToggleHandler);
|
|
64
60
|
this.triggers.forEach(trigger => trigger.removeAttribute('aria-expanded'));
|
|
@@ -94,8 +90,12 @@ export class PostPopover {
|
|
|
94
90
|
beforeToggleHandler() {
|
|
95
91
|
this.triggers.forEach(trigger => trigger.setAttribute('aria-expanded', 'false'));
|
|
96
92
|
}
|
|
93
|
+
patchAccessibilityFeatures(trigger) {
|
|
94
|
+
const force = trigger.hasAttribute(popoverTargetAttribute);
|
|
95
|
+
trigger.setAttribute('aria-expanded', force ? 'false' : null);
|
|
96
|
+
}
|
|
97
97
|
render() {
|
|
98
|
-
return (h(Host, { key: '
|
|
98
|
+
return (h(Host, { key: '0eee6a532fc25170b70f2424b7238ae31f0efa2e', "data-version": version }, h("post-popovercontainer", { key: '52af51e794bd070a000fbdd5f0c05ee2f0c3ac1c', arrow: this.arrow, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '772b5efef90b136a38b69fccfce2d5607d46035a', class: "popover-container" }, h("div", { key: '8bfdf07447daa58f88c788f04fdfab483783ca7e', class: "popover-content" }, h("slot", { key: '7866899dbf93c856253e2448a0ca696499c94c12' })), h("button", { key: '5056fcd7654309c1f9810b8136ce472b6cf7946f', class: "btn-close", onClick: () => this.hide() }, h("span", { key: '9f9c9b8007a6431367197d824ca42cfd7ca91761', class: "visually-hidden" }, this.closeButtonCaption))))));
|
|
99
99
|
}
|
|
100
100
|
static get is() { return "post-popover"; }
|
|
101
101
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { IS_BROWSER } from "../../utils/index";
|
|
3
|
+
import { version } from "../../../../package";
|
|
2
4
|
import { arrow, autoUpdate, computePosition, flip, inline, limitShift, offset, shift, size, } from "@floating-ui/dom";
|
|
3
5
|
// Polyfill for popovers, can be removed when https://caniuse.com/?search=popover is green
|
|
4
|
-
import "@oddbird/popover-polyfill";
|
|
5
|
-
import { version } from "../../../../package";
|
|
6
|
+
import { apply, isSupported } from "@oddbird/popover-polyfill/dist/popover-fn.js";
|
|
6
7
|
/**
|
|
7
8
|
* @slot - Default slot for placing content inside the popovercontainer.
|
|
8
9
|
*/
|
|
@@ -14,35 +15,6 @@ export class PostPopovercontainer {
|
|
|
14
15
|
this.arrow = false;
|
|
15
16
|
this.safeSpace = undefined;
|
|
16
17
|
}
|
|
17
|
-
static STATIC_SIDES = {
|
|
18
|
-
top: 'bottom',
|
|
19
|
-
right: 'left',
|
|
20
|
-
bottom: 'top',
|
|
21
|
-
left: 'right',
|
|
22
|
-
};
|
|
23
|
-
static PROPERTIES_TO_CLEAR = [
|
|
24
|
-
'--safe-space-popover-x',
|
|
25
|
-
'--safe-space-popover-y',
|
|
26
|
-
'--safe-space-popover-x-start',
|
|
27
|
-
'--safe-space-popover-x-end',
|
|
28
|
-
'--safe-space-popover-y-start',
|
|
29
|
-
'--safe-space-popover-y-end',
|
|
30
|
-
'--safe-space-trigger-x',
|
|
31
|
-
'--safe-space-trigger-y',
|
|
32
|
-
'--safe-space-trigger-x-start',
|
|
33
|
-
'--safe-space-trigger-x-end',
|
|
34
|
-
'--safe-space-trigger-y-start',
|
|
35
|
-
'--safe-space-trigger-y-end',
|
|
36
|
-
];
|
|
37
|
-
host;
|
|
38
|
-
arrowRef;
|
|
39
|
-
eventTarget;
|
|
40
|
-
clearAutoUpdate;
|
|
41
|
-
toggleTimeoutId;
|
|
42
|
-
/**
|
|
43
|
-
* Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
|
|
44
|
-
*/
|
|
45
|
-
postToggle;
|
|
46
18
|
/**
|
|
47
19
|
* Updates cursor position for safe space feature when popover is open.
|
|
48
20
|
* Sets CSS custom properties for dynamic styling of safe area.
|
|
@@ -52,6 +24,11 @@ export class PostPopovercontainer {
|
|
|
52
24
|
this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
|
|
53
25
|
this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
|
|
54
26
|
}
|
|
27
|
+
connectedCallback() {
|
|
28
|
+
if (IS_BROWSER && !isSupported()) {
|
|
29
|
+
apply();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
55
32
|
componentDidLoad() {
|
|
56
33
|
this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
|
|
57
34
|
}
|
|
@@ -246,9 +223,9 @@ export class PostPopovercontainer {
|
|
|
246
223
|
}
|
|
247
224
|
}
|
|
248
225
|
render() {
|
|
249
|
-
return (h(Host, { key: '
|
|
226
|
+
return (h(Host, { key: 'bbd430fbda9344c351d59f3d59cf84049992709b', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: 'e359cac588d1dd1359c88f8e472828be845fdad7' }, this.arrow && (h("span", { key: '45329ae23722e93410132746e4e39e88e86cd310', class: "arrow", ref: el => {
|
|
250
227
|
this.arrowRef = el;
|
|
251
|
-
} })), h("slot", { key: '
|
|
228
|
+
} })), h("slot", { key: 'bb9b4b3d8e7c36f024883d02bd34766bf2e9de88' }))));
|
|
252
229
|
}
|
|
253
230
|
static get is() { return "post-popovercontainer"; }
|
|
254
231
|
static get originalStyleUrls() {
|
|
@@ -464,3 +441,23 @@ export class PostPopovercontainer {
|
|
|
464
441
|
}
|
|
465
442
|
static get elementRef() { return "host"; }
|
|
466
443
|
}
|
|
444
|
+
PostPopovercontainer.STATIC_SIDES = {
|
|
445
|
+
top: 'bottom',
|
|
446
|
+
right: 'left',
|
|
447
|
+
bottom: 'top',
|
|
448
|
+
left: 'right',
|
|
449
|
+
};
|
|
450
|
+
PostPopovercontainer.PROPERTIES_TO_CLEAR = [
|
|
451
|
+
'--safe-space-popover-x',
|
|
452
|
+
'--safe-space-popover-y',
|
|
453
|
+
'--safe-space-popover-x-start',
|
|
454
|
+
'--safe-space-popover-x-end',
|
|
455
|
+
'--safe-space-popover-y-start',
|
|
456
|
+
'--safe-space-popover-y-end',
|
|
457
|
+
'--safe-space-trigger-x',
|
|
458
|
+
'--safe-space-trigger-y',
|
|
459
|
+
'--safe-space-trigger-x-start',
|
|
460
|
+
'--safe-space-trigger-x-end',
|
|
461
|
+
'--safe-space-trigger-y-start',
|
|
462
|
+
'--safe-space-trigger-y-end',
|
|
463
|
+
];
|
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { version } from "../../../../package";
|
|
3
3
|
export class PostRating {
|
|
4
|
-
hasChanged = false;
|
|
5
|
-
host;
|
|
6
|
-
/**
|
|
7
|
-
* An event emitted whenever the component's value has changed (on input).
|
|
8
|
-
* The event payload can be used like so: `event.detail.value`.
|
|
9
|
-
*/
|
|
10
|
-
postInput;
|
|
11
|
-
/**
|
|
12
|
-
* An event emitted whenever the component's value has changed (on blur).
|
|
13
|
-
* The event payload can be used like so: `event.detail.value`.
|
|
14
|
-
*/
|
|
15
|
-
postChange;
|
|
16
4
|
constructor() {
|
|
5
|
+
this.hasChanged = false;
|
|
17
6
|
this.hoveredIndex = undefined;
|
|
18
7
|
this.label = 'Rating';
|
|
19
8
|
this.stars = 5;
|
|
@@ -10,7 +10,6 @@ export class PostTabHeader {
|
|
|
10
10
|
this.tabId = undefined;
|
|
11
11
|
this.panel = undefined;
|
|
12
12
|
}
|
|
13
|
-
host;
|
|
14
13
|
validateFor() {
|
|
15
14
|
checkNonEmpty(this, 'panel');
|
|
16
15
|
}
|
|
@@ -18,7 +17,7 @@ export class PostTabHeader {
|
|
|
18
17
|
this.tabId = `tab-${this.host.id || nanoid(6)}`;
|
|
19
18
|
}
|
|
20
19
|
render() {
|
|
21
|
-
return (h(Host, { key: '
|
|
20
|
+
return (h(Host, { key: '5046c46fa27fd6586c694420abf197b227b56520', id: this.tabId, role: "tab", "data-version": version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, h("slot", { key: '78c2f660e4f2307ca95a63f4cfd90d08cc6942df' })));
|
|
22
21
|
}
|
|
23
22
|
static get is() { return "post-tab-header"; }
|
|
24
23
|
static get encapsulation() { return "shadow"; }
|
|
@@ -54,7 +53,7 @@ export class PostTabHeader {
|
|
|
54
53
|
"text": "The name of the panel controlled by the tab header."
|
|
55
54
|
},
|
|
56
55
|
"attribute": "panel",
|
|
57
|
-
"reflect":
|
|
56
|
+
"reflect": true
|
|
58
57
|
}
|
|
59
58
|
};
|
|
60
59
|
}
|
|
@@ -9,13 +9,12 @@ export class PostTabPanel {
|
|
|
9
9
|
this.panelId = undefined;
|
|
10
10
|
this.name = undefined;
|
|
11
11
|
}
|
|
12
|
-
host;
|
|
13
12
|
componentWillLoad() {
|
|
14
13
|
// get the id set on the host element or use a random id by default
|
|
15
14
|
this.panelId = `panel-${this.host.id || nanoid(6)}`;
|
|
16
15
|
}
|
|
17
16
|
render() {
|
|
18
|
-
return (h(Host, { key: '
|
|
17
|
+
return (h(Host, { key: '98427b35c6637af65930b69b75ea56facf044000', "data-version": version, id: this.panelId, role: "tabpanel" }, h("slot", { key: '4fa02667e8ff088c10122e010cfd7efe8ff3af57' })));
|
|
19
18
|
}
|
|
20
19
|
static get is() { return "post-tab-panel"; }
|
|
21
20
|
static get encapsulation() { return "shadow"; }
|
|
@@ -46,7 +45,7 @@ export class PostTabPanel {
|
|
|
46
45
|
"text": "The name of the panel, used to associate it with a tab header."
|
|
47
46
|
},
|
|
48
47
|
"attribute": "name",
|
|
49
|
-
"reflect":
|
|
48
|
+
"reflect": true
|
|
50
49
|
}
|
|
51
50
|
};
|
|
52
51
|
}
|
|
@@ -10,21 +10,12 @@ import { componentOnReady } from "../../utils/index";
|
|
|
10
10
|
*/
|
|
11
11
|
export class PostTabs {
|
|
12
12
|
constructor() {
|
|
13
|
+
this.isLoaded = false;
|
|
13
14
|
this.activePanel = undefined;
|
|
14
15
|
}
|
|
15
|
-
activeTab;
|
|
16
|
-
showing;
|
|
17
|
-
hiding;
|
|
18
|
-
isLoaded = false;
|
|
19
16
|
get tabs() {
|
|
20
17
|
return Array.from(this.host.querySelectorAll('post-tab-header')).filter(tab => tab.closest('post-tabs') === this.host);
|
|
21
18
|
}
|
|
22
|
-
host;
|
|
23
|
-
/**
|
|
24
|
-
* An event emitted after the active tab changes, when the fade in transition of its associated panel is finished.
|
|
25
|
-
* The payload is the name of the newly shown panel.
|
|
26
|
-
*/
|
|
27
|
-
postChange;
|
|
28
19
|
componentDidLoad() {
|
|
29
20
|
this.moveMisplacedTabs();
|
|
30
21
|
this.enableTabs();
|
|
@@ -4,7 +4,6 @@ import { version } from "../../../../package";
|
|
|
4
4
|
* @slot default - Content to place in the `default` slot.<p>Markup accepted: <a href="https://developer.mozilla.org/en-US/docs/Glossary/Inline-level_content">inline content</a>.</p>
|
|
5
5
|
*/
|
|
6
6
|
export class PostTag {
|
|
7
|
-
host;
|
|
8
7
|
constructor() {
|
|
9
8
|
this.classes = undefined;
|
|
10
9
|
this.variant = undefined;
|
|
@@ -6,9 +6,18 @@ import { checkType } from "../../utils/index";
|
|
|
6
6
|
*/
|
|
7
7
|
export class PostTogglebutton {
|
|
8
8
|
constructor() {
|
|
9
|
+
this.handleClick = () => {
|
|
10
|
+
this.toggled = !this.toggled;
|
|
11
|
+
};
|
|
12
|
+
this.handleKeydown = (event) => {
|
|
13
|
+
// perform a click when enter or spaced are pressed to mimic the button behavior
|
|
14
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
15
|
+
event.preventDefault(); // prevents the page from scrolling when space is pressed
|
|
16
|
+
this.host.click();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
9
19
|
this.toggled = false;
|
|
10
20
|
}
|
|
11
|
-
host;
|
|
12
21
|
validateToggled() {
|
|
13
22
|
checkType(this, 'toggled', 'boolean');
|
|
14
23
|
}
|
|
@@ -18,16 +27,6 @@ export class PostTogglebutton {
|
|
|
18
27
|
this.host.addEventListener('click', () => this.handleClick());
|
|
19
28
|
this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
|
|
20
29
|
}
|
|
21
|
-
handleClick = () => {
|
|
22
|
-
this.toggled = !this.toggled;
|
|
23
|
-
};
|
|
24
|
-
handleKeydown = (event) => {
|
|
25
|
-
// perform a click when enter or spaced are pressed to mimic the button behavior
|
|
26
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
27
|
-
event.preventDefault(); // prevents the page from scrolling when space is pressed
|
|
28
|
-
this.host.click();
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
30
|
render() {
|
|
32
31
|
return (h(Host, { key: '3a1429a9b67b8cfafae184fe0d060ee3a04974e0', "data-version": version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, h("slot", { key: '9ab1537574423740fc335fde732c699698acac25' })));
|
|
33
32
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
|
-
import { version } from "../../../../package";
|
|
3
2
|
import isFocusable from "ally.js/is/focusable";
|
|
4
|
-
import "
|
|
5
|
-
import {
|
|
6
|
-
|
|
3
|
+
import { IS_BROWSER, checkEmptyOrType, getAttributeObserver } from "../../utils/index";
|
|
4
|
+
import { version } from "../../../../package";
|
|
5
|
+
if (IS_BROWSER) {
|
|
6
|
+
(async () => {
|
|
7
|
+
await import('long-press-event');
|
|
8
|
+
})();
|
|
9
|
+
}
|
|
7
10
|
const OPEN_DELAY = 650; // matches HTML title delay
|
|
8
11
|
/**
|
|
9
12
|
* @slot default - Slot for the content of the tooltip.
|
|
@@ -28,7 +31,8 @@ let tooltipTimeout = null;
|
|
|
28
31
|
* @returns
|
|
29
32
|
*/
|
|
30
33
|
const globalInterestHandler = (e) => {
|
|
31
|
-
const
|
|
34
|
+
const eventTarget = e.target;
|
|
35
|
+
const targetElement = eventTarget.closest(tooltipTargetAttributeSelector);
|
|
32
36
|
globalCurrentTarget = targetElement;
|
|
33
37
|
if (!targetElement || !('getAttribute' in targetElement)) {
|
|
34
38
|
clearTimeout(tooltipTimeout);
|
|
@@ -40,7 +44,7 @@ const globalInterestHandler = (e) => {
|
|
|
40
44
|
const tooltip = document.getElementById(tooltipTarget);
|
|
41
45
|
// Determine if the tooltip was triggered by a focus event
|
|
42
46
|
const triggeredByFocus = e.type === 'focusin';
|
|
43
|
-
|
|
47
|
+
tooltip?.show(targetElement, triggeredByFocus);
|
|
44
48
|
if (hideTooltipTimeout) {
|
|
45
49
|
window.clearTimeout(hideTooltipTimeout);
|
|
46
50
|
hideTooltipTimeout = null;
|
|
@@ -73,34 +77,17 @@ const globalHideTooltip = (tooltip) => {
|
|
|
73
77
|
hideTooltipTimeout = null;
|
|
74
78
|
}, 42);
|
|
75
79
|
};
|
|
76
|
-
/**
|
|
77
|
-
* Patch some accessibility features that are hard to remember or understand
|
|
78
|
-
* @param {HTMLElement} trigger
|
|
79
|
-
*/
|
|
80
|
-
const patchAccessibilityFeatures = (trigger) => {
|
|
81
|
-
const describedBy = trigger.getAttribute('aria-describedby');
|
|
82
|
-
const id = trigger.getAttribute(tooltipTargetAttribute);
|
|
83
|
-
// Add tooltip to aria-describedby
|
|
84
|
-
if (!describedBy?.includes(id)) {
|
|
85
|
-
const newDescribedBy = describedBy ? `${describedBy} ${id}` : id;
|
|
86
|
-
trigger.setAttribute('aria-describedby', newDescribedBy);
|
|
87
|
-
}
|
|
88
|
-
// Make element focusable
|
|
89
|
-
if (!isFocusable(trigger)) {
|
|
90
|
-
trigger.setAttribute('tabindex', '0');
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
// Initialize a mutation observer for patching accessibility features
|
|
94
|
-
const triggerObserver = getAttributeObserver(tooltipTargetAttribute, patchAccessibilityFeatures);
|
|
95
80
|
export class PostTooltip {
|
|
96
81
|
constructor() {
|
|
82
|
+
this.wasOpenedByFocus = false;
|
|
83
|
+
// Initialize a mutation observer for patching accessibility features
|
|
84
|
+
this.triggerObserver = IS_BROWSER
|
|
85
|
+
? getAttributeObserver(tooltipTargetAttribute, this.patchAccessibilityFeatures)
|
|
86
|
+
: null;
|
|
97
87
|
this.placement = 'top';
|
|
98
88
|
this.arrow = true;
|
|
99
89
|
this.delayed = false;
|
|
100
90
|
}
|
|
101
|
-
popoverRef;
|
|
102
|
-
wasOpenedByFocus = false;
|
|
103
|
-
host;
|
|
104
91
|
validateDelayed() {
|
|
105
92
|
checkEmptyOrType(this, 'delayed', 'boolean');
|
|
106
93
|
}
|
|
@@ -127,9 +114,9 @@ export class PostTooltip {
|
|
|
127
114
|
document.addEventListener('focusout', globalInterestLostHandler);
|
|
128
115
|
document.addEventListener('long-press', globalInterestHandler);
|
|
129
116
|
// Initially run the accessibility patcher on all triggers
|
|
130
|
-
document.querySelectorAll('[data-tooltip-target]').forEach(patchAccessibilityFeatures);
|
|
117
|
+
document.querySelectorAll('[data-tooltip-target]').forEach(this.patchAccessibilityFeatures);
|
|
131
118
|
// Start watching for future triggers
|
|
132
|
-
triggerObserver
|
|
119
|
+
this.triggerObserver?.observe(document.body, {
|
|
133
120
|
subtree: true,
|
|
134
121
|
childList: true,
|
|
135
122
|
attributeFilter: [tooltipTargetAttribute],
|
|
@@ -150,7 +137,7 @@ export class PostTooltip {
|
|
|
150
137
|
document.removeEventListener('focusin', globalInterestHandler);
|
|
151
138
|
document.removeEventListener('focusout', globalInterestLostHandler);
|
|
152
139
|
document.removeEventListener('long-press', globalInterestHandler);
|
|
153
|
-
triggerObserver
|
|
140
|
+
this.triggerObserver?.disconnect();
|
|
154
141
|
}
|
|
155
142
|
}
|
|
156
143
|
/**
|
|
@@ -214,9 +201,26 @@ export class PostTooltip {
|
|
|
214
201
|
globalHideTooltip(this);
|
|
215
202
|
this.host.style.pointerEvents = 'auto';
|
|
216
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Patch some accessibility features that are hard to remember or understand
|
|
206
|
+
* @param {HTMLElement} trigger
|
|
207
|
+
*/
|
|
208
|
+
patchAccessibilityFeatures(trigger) {
|
|
209
|
+
const describedBy = trigger.getAttribute('aria-describedby');
|
|
210
|
+
const id = trigger.getAttribute(tooltipTargetAttribute);
|
|
211
|
+
// Add tooltip to aria-describedby
|
|
212
|
+
if (!describedBy?.includes(id)) {
|
|
213
|
+
const newDescribedBy = describedBy ? `${describedBy} ${id}` : id;
|
|
214
|
+
trigger.setAttribute('aria-describedby', newDescribedBy);
|
|
215
|
+
}
|
|
216
|
+
// Make element focusable
|
|
217
|
+
if (!isFocusable(trigger)) {
|
|
218
|
+
trigger.setAttribute('tabindex', '0');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
217
221
|
render() {
|
|
218
222
|
const popoverClass = `${this.arrow ? ' has-arrow' : ''}`;
|
|
219
|
-
return (h(Host, { key: '
|
|
223
|
+
return (h(Host, { key: 'f6e535d23220c3b53840913882b7302d54cc6a89', "data-version": version, role: "tooltip", onPointerOver: this.handleInterest, onPointerOut: this.handleInterestLost, onFocusIn: this.handleInterest, onFocusOut: this.handleInterestLost }, h("post-popovercontainer", { key: '25aaaee555958fdacd3aa204b90d09ab14289b51', class: popoverClass, arrow: this.arrow, placement: this.placement, ref: (el) => (this.popoverRef = el) }, h("slot", { key: '81ae53f9ab5189253a256861b6df5a2cd31fe678' }))));
|
|
220
224
|
}
|
|
221
225
|
static get is() { return "post-tooltip"; }
|
|
222
226
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IS_BROWSER } from "./environment";
|
|
1
2
|
export function getAttributeObserver(attribute, handler) {
|
|
2
3
|
/**
|
|
3
4
|
* Handle attribute changes and childList changes from the observer
|
|
@@ -19,5 +20,5 @@ export function getAttributeObserver(attribute, handler) {
|
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
22
|
// Initialize a mutation observer for patching accessibility features
|
|
22
|
-
return new MutationObserver(observerHandler);
|
|
23
|
+
return IS_BROWSER ? new MutationObserver(observerHandler) : null;
|
|
23
24
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { IS_BROWSER } from "./environment";
|
|
1
2
|
export class Breakpoint {
|
|
2
|
-
breakpointMap;
|
|
3
|
-
current = {
|
|
4
|
-
key: '',
|
|
5
|
-
name: '',
|
|
6
|
-
};
|
|
7
3
|
constructor() {
|
|
8
|
-
|
|
4
|
+
this.current = {
|
|
5
|
+
key: '',
|
|
6
|
+
name: '',
|
|
7
|
+
};
|
|
8
|
+
if (IS_BROWSER && !this.breakpointMap) {
|
|
9
9
|
const keys = this.getStyles('--post-breakpoint-keys');
|
|
10
10
|
const names = this.getStyles('--post-breakpoint-names');
|
|
11
11
|
const widths = this.getStyles('--post-breakpoint-widths');
|
|
@@ -40,7 +40,9 @@ export class Breakpoint {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
dispatchEvent(type) {
|
|
43
|
-
|
|
43
|
+
if (IS_BROWSER) {
|
|
44
|
+
window.dispatchEvent(new CustomEvent(`postBreakpoint:${type}`, { detail: this.current[type] }));
|
|
45
|
+
}
|
|
44
46
|
}
|
|
45
47
|
get(type) {
|
|
46
48
|
this.updateHandler(false);
|