@swisspost/design-system-components 10.0.0-next.54 → 10.0.0-next.56
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/{components/react/p-CJ80BZ06.js → cjs/breakpoints-Df03Ct7n.js} +103 -5
- package/dist/cjs/debounce-BsIBi_-2.js +13 -0
- package/dist/cjs/environment-BQE9Unf_.js +52 -0
- package/dist/cjs/{event-from-CLvtSUKf.js → event-from-CwMw19f8.js} +2 -2
- package/dist/cjs/fade-CPQhl1fP.js +26 -0
- package/dist/cjs/fade-slide-dPhQa-I1.js +38 -0
- package/dist/cjs/{get-focusable-children-Bx63XUQg.js → get-focusable-children-ChETM1wK.js} +29 -21
- package/dist/cjs/{get-root-CyMf3Vsd.js → get-root-CUAv4k4C.js} +2 -2
- package/dist/cjs/{index-Cb8CTrOz.js → index-CKNxhb0S.js} +29 -13
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{package-CvZxvdTJ.js → package-CY7IOoiw.js} +1 -1
- package/dist/cjs/post-accordion_2.cjs.entry.js +12 -12
- package/dist/cjs/post-avatar.cjs.entry.js +11 -11
- package/dist/cjs/post-back-to-top.cjs.entry.js +16 -40
- package/dist/cjs/post-banner.cjs.entry.js +11 -10
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +7 -7
- package/dist/cjs/post-breadcrumbs.cjs.entry.js +22 -31
- package/dist/cjs/post-card-control.cjs.entry.js +16 -16
- package/dist/cjs/{post-closebutton_15.cjs.entry.js → post-closebutton_13.cjs.entry.js} +537 -507
- package/dist/cjs/post-collapsible_2.cjs.entry.js +39 -38
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/post-env-test.cjs.entry.js +15 -0
- package/dist/cjs/post-footer.cjs.entry.js +21 -19
- package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
- package/dist/cjs/post-pagination.cjs.entry.js +589 -0
- package/dist/cjs/post-popover-trigger.cjs.entry.js +46 -30
- package/dist/cjs/post-popover.cjs.entry.js +12 -12
- package/dist/cjs/post-rating.cjs.entry.js +13 -13
- package/dist/cjs/post-stepper-item.cjs.entry.js +18 -0
- package/dist/cjs/post-stepper.cjs.entry.js +109 -0
- package/dist/cjs/post-tab-item.cjs.entry.js +49 -0
- package/dist/cjs/post-tab-panel.cjs.entry.js +9 -9
- package/dist/cjs/post-tabs.cjs.entry.js +191 -38
- package/dist/cjs/post-tooltip-trigger.cjs.entry.js +8 -8
- package/dist/cjs/post-tooltip.cjs.entry.js +7 -7
- package/dist/cjs/utils-s05L2ulk.js +26 -0
- package/dist/collection/animations/collapse.js +3 -3
- package/dist/collection/animations/fade-slide.js +33 -0
- package/dist/collection/animations/fade.js +19 -7
- package/dist/collection/animations/index.js +2 -0
- package/dist/collection/animations/slide.js +25 -21
- package/dist/collection/animations/types.js +14 -0
- package/dist/collection/animations/utils.js +8 -0
- package/dist/collection/collection-manifest.json +8 -6
- package/dist/collection/components/post-accordion/post-accordion.css +1 -1
- package/dist/collection/components/post-accordion/post-accordion.js +2 -2
- package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
- package/dist/collection/components/post-accordion-item/post-accordion-item.js +4 -4
- package/dist/collection/components/post-avatar/post-avatar.css +1 -1
- package/dist/collection/components/post-avatar/post-avatar.js +1 -1
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +14 -14
- package/dist/collection/components/post-banner/post-banner.css +4 -1
- package/dist/collection/components/post-banner/post-banner.js +3 -3
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +28 -28
- package/dist/collection/components/post-card-control/post-card-control.js +3 -3
- package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
- package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
- package/dist/collection/components/post-collapsible/post-collapsible.js +27 -27
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +6 -5
- package/dist/collection/components/post-footer/post-footer.css +1 -1
- package/dist/collection/components/post-footer/post-footer.js +18 -16
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +186 -105
- package/dist/collection/components/post-icon/post-icon.js +6 -4
- package/dist/collection/components/post-language-menu/post-language-menu.css +1 -0
- package/dist/collection/components/{post-language-switch/post-language-switch.js → post-language-menu/post-language-menu.js} +25 -25
- package/dist/collection/components/post-language-menu-item/post-language-menu-item.css +1 -0
- package/dist/collection/components/{post-language-option/post-language-option.js → post-language-menu-item/post-language-menu-item.js} +14 -14
- package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
- package/dist/collection/components/post-logo/post-logo.css +3 -1
- package/dist/collection/components/post-logo/post-logo.js +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +41 -29
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +184 -75
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +3 -1
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +80 -74
- package/dist/collection/components/post-menu/post-menu.css +1 -1
- package/dist/collection/components/post-menu/post-menu.js +35 -35
- package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
- package/dist/collection/components/post-pagination/post-pagination.css +1 -0
- package/dist/collection/components/post-pagination/post-pagination.js +838 -0
- package/dist/collection/components/post-popover/post-popover.css +1 -1
- package/dist/collection/components/post-popover/post-popover.js +10 -10
- package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +43 -27
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +45 -92
- package/dist/collection/components/post-rating/post-rating.js +3 -3
- package/dist/collection/components/post-stepper/post-stepper.css +1 -0
- package/dist/collection/components/post-stepper/post-stepper.js +207 -0
- package/dist/collection/components/post-stepper-item/post-stepper-item.css +7 -0
- package/dist/collection/components/post-stepper-item/post-stepper-item.js +18 -0
- package/dist/collection/components/post-tab-item/post-tab-item.css +1 -0
- package/dist/collection/components/post-tab-item/post-tab-item.js +86 -0
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -9
- package/dist/collection/components/post-tabs/post-tabs.js +230 -57
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
- package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
- package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
- package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
- package/dist/collection/utils/environment.js +47 -2
- package/dist/collection/utils/event-from.js +2 -2
- package/dist/collection/utils/get-focusable-children.js +29 -21
- package/dist/collection/utils/is-motion-reduced.js +1 -1
- package/dist/collection/utils/tests/environment/hydrate-app-helper.js +16 -0
- package/dist/collection/utils/tests/environment/post-env-test.js +9 -0
- package/dist/component-names.json +6 -5
- package/dist/components/breakpoints.js +90 -3
- package/dist/components/debounce.js +11 -0
- package/dist/components/environment.js +49 -0
- package/dist/components/event-from.js +2 -2
- package/dist/components/fade-slide.js +36 -0
- package/dist/components/fade.js +21 -8
- package/dist/components/get-focusable-children.js +29 -21
- package/dist/components/get-root.js +1 -1
- package/dist/components/index.d.ts +14 -10
- package/dist/components/index.js +7 -5
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +4 -5
- package/dist/components/post-accordion2.js +4 -5
- package/dist/components/post-avatar.js +3 -4
- package/dist/components/post-back-to-top.js +14 -40
- package/dist/components/post-banner.js +5 -6
- package/dist/components/post-breadcrumb-item2.js +2 -3
- package/dist/components/post-breadcrumbs.js +24 -34
- package/dist/components/post-card-control.js +4 -5
- package/dist/components/post-closebutton2.js +3 -4
- package/dist/components/post-collapsible-trigger2.js +10 -10
- package/dist/components/post-collapsible2.js +25 -25
- package/dist/components/{post-list.d.ts → post-env-test.d.ts} +4 -4
- package/dist/components/post-env-test.js +31 -0
- package/dist/components/post-footer.js +17 -16
- package/dist/components/post-header.js +156 -119
- package/dist/components/post-icon2.js +8 -6
- package/dist/components/post-language-menu-item.d.ts +11 -0
- package/dist/components/post-language-menu-item.js +98 -0
- package/dist/components/{post-language-switch.d.ts → post-language-menu.d.ts} +4 -4
- package/dist/components/post-language-menu.js +156 -0
- package/dist/components/post-linkarea.js +1 -1
- package/dist/components/post-logo.js +3 -4
- package/dist/components/post-mainnavigation.js +21 -32
- package/dist/components/post-megadropdown-trigger.js +72 -79
- package/dist/components/post-megadropdown.js +183 -78
- package/dist/components/post-menu-item2.js +1 -1
- package/dist/components/post-menu-trigger2.js +2 -3
- package/dist/components/post-menu2.js +35 -36
- package/dist/components/post-pagination.d.ts +11 -0
- package/dist/components/post-pagination.js +635 -0
- package/dist/components/post-popover-trigger.js +41 -26
- package/dist/components/post-popover.js +9 -10
- package/dist/components/post-popovercontainer2.js +44 -40
- package/dist/components/post-rating.js +3 -4
- package/dist/components/post-stepper-item.d.ts +11 -0
- package/dist/components/post-stepper-item.js +33 -0
- package/dist/components/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
- package/dist/components/post-stepper.js +136 -0
- package/dist/components/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
- package/dist/components/post-tab-item.js +70 -0
- package/dist/components/post-tab-panel.js +8 -9
- package/dist/components/post-tabs.js +192 -37
- package/dist/components/post-togglebutton.js +1 -51
- package/dist/components/post-togglebutton2.js +53 -0
- package/dist/components/post-tooltip-trigger.js +3 -3
- package/dist/components/post-tooltip.js +3 -4
- package/dist/components/react/index.js +1 -1
- package/dist/{cjs/breakpoints-CEkeixld.js → components/react/p-B8YiQ3mz.js} +89 -6
- package/dist/components/react/{p-2U_BGLjc.js → p-BOLlAY91.js} +9 -7
- package/dist/components/react/p-BVCjnh6Q.js +36 -0
- package/dist/components/react/{p-CBFgkSgY.js → p-BVGcVycs.js} +1 -1
- package/dist/components/react/{p-D4NSCxrX.js → p-BYCGzO-t.js} +13 -13
- package/dist/components/react/p-C9hMpmsD.js +11 -0
- package/dist/components/react/{p-BVXiQdHq.js → p-CJ13r5fi.js} +29 -21
- package/dist/components/react/{p-nSFSgY-P.js → p-CnZWXrbA.js} +40 -41
- package/dist/components/react/p-CoDiS_Ik.js +24 -0
- package/dist/components/react/p-CyniMNY-.js +54 -0
- package/dist/components/react/p-D5knoiyy.js +24 -0
- package/dist/components/react/{p-Ccgu_WOx.js → p-DBO6FfHt.js} +4 -5
- package/dist/components/react/{p-BfLuYwf7.js → p-DRfa3MOV.js} +26 -26
- package/dist/components/react/{p-BUxAs8N5.js → p-DYImHx0e.js} +4 -5
- package/dist/components/react/p-DZ5m2Ttg.js +3 -0
- package/dist/components/react/p-FxUVQ4Tx.js +49 -0
- package/dist/components/react/{p-BK474oMI.js → p-L36-yvgK.js} +2 -2
- package/dist/components/react/{p-DVxZMuPW.js → p-NCAcc7ZZ.js} +6 -7
- package/dist/components/react/{p-mENtrn2l.js → p-QNPIvxLq.js} +45 -41
- package/dist/components/react/{p-D3CFjhAf.js → p-_pLhqTys.js} +5 -6
- package/dist/components/react/p-c6yNOQwn.js +113 -0
- package/dist/components/react/{p-CzIKqBrS.js → p-rEfV4v4a.js} +2 -2
- package/dist/components/react/post-accordion-item.js +1 -1
- package/dist/components/react/post-accordion.js +1 -1
- package/dist/components/react/post-avatar.js +4 -5
- package/dist/components/react/post-back-to-top.js +16 -42
- package/dist/components/react/post-banner.js +7 -8
- package/dist/components/react/post-breadcrumb-item.js +1 -1
- package/dist/components/react/post-breadcrumbs.js +31 -41
- package/dist/components/react/post-card-control.js +6 -7
- package/dist/components/react/post-closebutton.js +1 -1
- package/dist/components/react/post-collapsible-trigger.js +1 -1
- package/dist/components/react/post-collapsible.js +1 -1
- package/dist/components/react/{post-list.d.ts → post-env-test.d.ts} +4 -4
- package/dist/components/react/post-env-test.js +32 -0
- package/dist/components/react/post-footer.js +23 -22
- package/dist/components/react/post-header.js +158 -121
- package/dist/components/react/post-icon.js +1 -1
- package/dist/components/react/post-language-menu-item.d.ts +11 -0
- package/dist/components/react/post-language-menu-item.js +99 -0
- package/dist/components/react/{post-language-option.d.ts → post-language-menu.d.ts} +4 -4
- package/dist/components/react/post-language-menu.js +157 -0
- package/dist/components/react/post-linkarea.js +2 -2
- package/dist/components/react/post-logo.js +4 -5
- package/dist/components/react/post-mainnavigation.js +23 -34
- package/dist/components/react/post-megadropdown-trigger.js +74 -81
- package/dist/components/react/post-megadropdown.js +185 -80
- package/dist/components/react/post-menu-item.js +1 -1
- package/dist/components/react/post-menu-trigger.js +1 -1
- package/dist/components/react/post-menu.js +1 -1
- package/dist/components/react/post-pagination.d.ts +11 -0
- package/dist/components/react/post-pagination.js +636 -0
- package/dist/components/react/post-popover-trigger.js +42 -27
- package/dist/components/react/post-popover.js +14 -15
- package/dist/components/react/post-popovercontainer.js +1 -1
- package/dist/components/react/post-rating.js +5 -6
- package/dist/components/react/post-stepper-item.d.ts +11 -0
- package/dist/components/react/post-stepper-item.js +34 -0
- package/dist/components/react/{post-list-item.d.ts → post-stepper.d.ts} +4 -4
- package/dist/components/react/post-stepper.js +137 -0
- package/dist/components/react/{post-tab-header.d.ts → post-tab-item.d.ts} +4 -4
- package/dist/components/react/post-tab-item.js +71 -0
- package/dist/components/react/post-tab-panel.js +9 -10
- package/dist/components/react/post-tabs.js +193 -38
- package/dist/components/react/post-togglebutton.js +1 -52
- package/dist/components/react/post-tooltip-trigger.js +4 -4
- package/dist/components/react/post-tooltip.js +5 -6
- package/dist/components/utils.js +24 -0
- package/dist/docs.json +968 -563
- package/dist/esm/{breakpoints-CJ80BZ06.js → breakpoints-DYoSKGHO.js} +90 -3
- package/dist/esm/debounce-C9hMpmsD.js +11 -0
- package/dist/esm/environment-CEmnRoA6.js +49 -0
- package/dist/esm/{event-from-CzIKqBrS.js → event-from-rEfV4v4a.js} +2 -2
- package/dist/esm/fade-DsgPYmAa.js +24 -0
- package/dist/esm/fade-slide-CvOvauo9.js +36 -0
- package/dist/esm/{get-focusable-children-D9ZHp2FP.js → get-focusable-children-BXNs2_sw.js} +29 -21
- package/dist/esm/{get-root-BkQ3CrLq.js → get-root-CXfAA093.js} +1 -1
- package/dist/esm/{index-CFNKgUjL.js → index-1ReqxAnI.js} +29 -13
- package/dist/esm/loader.js +3 -3
- package/dist/esm/package-DZ5m2Ttg.js +3 -0
- package/dist/esm/post-accordion_2.entry.js +10 -10
- package/dist/esm/post-avatar.entry.js +6 -6
- package/dist/esm/post-back-to-top.entry.js +16 -40
- package/dist/esm/post-banner.entry.js +10 -9
- package/dist/esm/post-breadcrumb-item_2.entry.js +6 -6
- package/dist/esm/post-breadcrumbs.entry.js +20 -29
- package/dist/esm/post-card-control.entry.js +6 -6
- package/dist/esm/{post-closebutton_15.entry.js → post-closebutton_13.entry.js} +518 -486
- package/dist/esm/post-collapsible_2.entry.js +36 -35
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/post-env-test.entry.js +13 -0
- package/dist/esm/post-footer.entry.js +18 -16
- package/dist/esm/post-linkarea.entry.js +3 -3
- package/dist/esm/post-pagination.entry.js +587 -0
- package/dist/esm/post-popover-trigger.entry.js +44 -28
- package/dist/esm/post-popover.entry.js +11 -11
- package/dist/esm/post-rating.entry.js +5 -5
- package/dist/esm/post-stepper-item.entry.js +16 -0
- package/dist/esm/post-stepper.entry.js +107 -0
- package/dist/esm/post-tab-item.entry.js +47 -0
- package/dist/esm/post-tab-panel.entry.js +9 -9
- package/dist/esm/post-tabs.entry.js +191 -38
- package/dist/esm/post-tooltip-trigger.entry.js +5 -5
- package/dist/esm/post-tooltip.entry.js +6 -6
- package/dist/esm/utils-CoDiS_Ik.js +24 -0
- package/dist/post-components/{p-8f0fc02a.entry.js → p-130eb074.entry.js} +1 -1
- package/dist/post-components/p-13d018fe.entry.js +1 -0
- package/dist/post-components/p-143e5a84.entry.js +1 -0
- package/dist/post-components/p-1ReqxAnI.js +2 -0
- package/dist/post-components/p-2b220851.entry.js +1 -0
- package/dist/post-components/{p-96750e25.entry.js → p-390f111f.entry.js} +1 -1
- package/dist/post-components/p-3cf09fbd.entry.js +1 -0
- package/dist/post-components/p-52e584ca.entry.js +1 -0
- package/dist/post-components/p-56a4040c.entry.js +1 -0
- package/dist/post-components/p-675dab57.entry.js +1 -0
- package/dist/post-components/p-6857fd9d.entry.js +1 -0
- package/dist/post-components/p-7cd00e3e.entry.js +1 -0
- package/dist/post-components/p-7f5d2487.entry.js +1 -0
- package/dist/post-components/{p-bf41fe56.entry.js → p-88201353.entry.js} +1 -1
- package/dist/post-components/p-89360cd1.entry.js +1 -0
- package/dist/post-components/p-B7ebLhHc.js +1 -0
- package/dist/post-components/p-BVCjnh6Q.js +1 -0
- package/dist/post-components/p-BXNs2_sw.js +1 -0
- package/dist/post-components/p-C9hMpmsD.js +1 -0
- package/dist/post-components/p-CEmnRoA6.js +1 -0
- package/dist/post-components/p-CoDiS_Ik.js +1 -0
- package/dist/post-components/p-D5knoiyy.js +1 -0
- package/dist/post-components/p-DI-h_mEL.js +1 -0
- package/dist/post-components/p-DZ5m2Ttg.js +1 -0
- package/dist/post-components/p-a740eaed.entry.js +1 -0
- package/dist/post-components/{p-261b1452.entry.js → p-a79590f5.entry.js} +1 -1
- package/dist/post-components/p-b708d96a.entry.js +1 -0
- package/dist/post-components/p-bcf5786f.entry.js +1 -0
- package/dist/post-components/p-c92512f5.entry.js +1 -0
- package/dist/post-components/{p-658b1ccc.entry.js → p-d7cb3a61.entry.js} +1 -1
- package/dist/post-components/p-d7f33813.entry.js +1 -0
- package/dist/post-components/p-da97ee21.entry.js +1 -0
- package/dist/post-components/{p-11c204e0.entry.js → p-ed4db774.entry.js} +1 -1
- package/dist/post-components/post-components.css +1 -1
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/prebuild.js +46 -0
- package/dist/types/animations/collapse.d.ts +1 -0
- package/dist/types/animations/fade-slide.d.ts +11 -0
- package/dist/types/animations/fade.d.ts +2 -2
- package/dist/types/animations/index.d.ts +2 -0
- package/dist/types/animations/slide.d.ts +9 -2
- package/dist/types/animations/types.d.ts +13 -0
- package/dist/types/animations/utils.d.ts +2 -0
- package/dist/types/components/post-accordion-item/heading-levels.d.ts +1 -1
- package/dist/types/components/post-accordion-item/post-accordion-item.d.ts +2 -2
- package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -2
- package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -6
- package/dist/types/components/post-collapsible/post-collapsible.d.ts +4 -5
- package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +1 -0
- package/dist/types/components/post-footer/post-footer.d.ts +4 -4
- package/dist/types/components/post-header/post-header.d.ts +28 -19
- package/dist/types/components/{post-language-switch/post-language-switch.d.ts → post-language-menu/post-language-menu.d.ts} +6 -6
- package/dist/types/components/{post-language-option/post-language-option.d.ts → post-language-menu-item/post-language-menu-item.d.ts} +5 -5
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +6 -5
- package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +20 -2
- package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +17 -23
- package/dist/types/components/post-menu/post-menu.d.ts +4 -4
- package/dist/types/components/post-pagination/post-pagination.d.ts +224 -0
- package/dist/types/components/post-popover/post-popover.d.ts +3 -3
- package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +2 -1
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +13 -16
- package/dist/types/components/post-rating/post-rating.d.ts +1 -1
- package/dist/types/components/post-stepper/post-stepper.d.ts +39 -0
- package/dist/types/components/post-stepper-item/post-stepper-item.d.ts +3 -0
- package/dist/types/components/post-tab-item/post-tab-item.d.ts +19 -0
- package/dist/types/components/post-tab-panel/post-tab-panel.d.ts +3 -3
- package/dist/types/components/post-tabs/post-tabs.d.ts +33 -12
- package/dist/types/components.d.ts +357 -186
- package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/prebuild.d.ts +9 -0
- package/dist/types/types/heading-levels.d.ts +1 -1
- package/dist/types/utils/environment.d.ts +25 -1
- package/dist/types/utils/get-focusable-children.d.ts +2 -2
- package/dist/types/utils/tests/environment/hydrate-app-helper.d.ts +5 -0
- package/dist/types/utils/tests/environment/post-env-test.d.ts +3 -0
- package/hydrate/index.js +1882 -833
- package/hydrate/index.mjs +1882 -833
- package/package.json +9 -11
- package/dist/cjs/fade-nS5zzDQS.js +0 -14
- package/dist/cjs/index-DtvYdwe1.js +0 -96
- package/dist/cjs/post-tab-header.cjs.entry.js +0 -31
- package/dist/collection/animations/slide-and-fade.js +0 -25
- package/dist/collection/components/post-language-option/post-language-option.css +0 -1
- package/dist/collection/components/post-language-switch/post-language-switch.css +0 -1
- package/dist/collection/components/post-list/post-list.css +0 -1
- package/dist/collection/components/post-list/post-list.js +0 -97
- package/dist/collection/components/post-list-item/post-list-item.css +0 -1
- package/dist/collection/components/post-list-item/post-list-item.js +0 -26
- package/dist/collection/components/post-tab-header/post-tab-header.css +0 -1
- package/dist/collection/components/post-tab-header/post-tab-header.js +0 -65
- package/dist/components/index2.js +0 -88
- package/dist/components/post-language-option.d.ts +0 -11
- package/dist/components/post-language-option.js +0 -99
- package/dist/components/post-language-switch.js +0 -157
- package/dist/components/post-list-item.js +0 -38
- package/dist/components/post-list.js +0 -61
- package/dist/components/post-tab-header.js +0 -52
- package/dist/components/react/p-BXRsHuTS.js +0 -3
- package/dist/components/react/p-CV7fm1rW.js +0 -88
- package/dist/components/react/p-Dj7qWba5.js +0 -114
- package/dist/components/react/p-SbIC4aZX.js +0 -11
- package/dist/components/react/post-language-option.js +0 -100
- package/dist/components/react/post-language-switch.d.ts +0 -11
- package/dist/components/react/post-language-switch.js +0 -158
- package/dist/components/react/post-list-item.js +0 -39
- package/dist/components/react/post-list.js +0 -62
- package/dist/components/react/post-tab-header.js +0 -53
- package/dist/esm/fade-SbIC4aZX.js +0 -11
- package/dist/esm/index-VmK3ABCB.js +0 -88
- package/dist/esm/package-BXRsHuTS.js +0 -3
- package/dist/esm/post-tab-header.entry.js +0 -29
- package/dist/post-components/p-02ea3ec5.entry.js +0 -1
- package/dist/post-components/p-0e92dbef.entry.js +0 -1
- package/dist/post-components/p-0ec2bdd7.entry.js +0 -1
- package/dist/post-components/p-197a0f25.entry.js +0 -1
- package/dist/post-components/p-3274ab81.entry.js +0 -1
- package/dist/post-components/p-77e43032.entry.js +0 -1
- package/dist/post-components/p-BXRsHuTS.js +0 -1
- package/dist/post-components/p-CBFgkSgY.js +0 -1
- package/dist/post-components/p-CFNKgUjL.js +0 -2
- package/dist/post-components/p-CJ80BZ06.js +0 -1
- package/dist/post-components/p-D9ZHp2FP.js +0 -1
- package/dist/post-components/p-SbIC4aZX.js +0 -1
- package/dist/post-components/p-VmK3ABCB.js +0 -1
- package/dist/post-components/p-b5b5e4b9.entry.js +0 -1
- package/dist/post-components/p-b8059ba1.entry.js +0 -1
- package/dist/post-components/p-d6134e24.entry.js +0 -1
- package/dist/post-components/p-e7029b9e.entry.js +0 -1
- package/dist/post-components/p-e90688ab.entry.js +0 -1
- package/dist/post-components/p-ea5da614.entry.js +0 -1
- package/dist/post-components/p-f1b815b6.entry.js +0 -1
- package/dist/types/animations/slide-and-fade.d.ts +0 -2
- package/dist/types/components/post-list/post-list.d.ts +0 -24
- package/dist/types/components/post-list-item/post-list-item.d.ts +0 -8
- package/dist/types/components/post-tab-header/post-tab-header.d.ts +0 -14
- /package/dist/collection/components/{post-language-switch → post-language-menu}/switch-variants.js +0 -0
- /package/dist/post-components/{p-CzIKqBrS.js → p-rEfV4v4a.js} +0 -0
- /package/dist/types/components/{post-language-switch → post-language-menu}/switch-variants.d.ts +0 -0
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import { getFocusableChildren } from "../../utils/get-focusable-children";
|
|
2
|
-
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { h, Host, } from "@stencil/core";
|
|
3
3
|
import { version } from "../../../../package";
|
|
4
4
|
import { breakpoint } from "../../utils/breakpoints";
|
|
5
|
+
import { slide } from "../../animations/index";
|
|
6
|
+
import { fadeSlide } from "../../animations/fade-slide";
|
|
7
|
+
import { checkRequiredAndType } from "../../utils/index";
|
|
5
8
|
export class PostMegadropdown {
|
|
9
|
+
validateTextClose() {
|
|
10
|
+
checkRequiredAndType(this, 'textClose', 'string');
|
|
11
|
+
}
|
|
12
|
+
validateTextBack() {
|
|
13
|
+
checkRequiredAndType(this, 'textBack', 'string');
|
|
14
|
+
}
|
|
15
|
+
get megadropdownTrigger() {
|
|
16
|
+
const hostId = this.host.getAttribute('id');
|
|
17
|
+
return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
|
|
18
|
+
}
|
|
6
19
|
constructor() {
|
|
20
|
+
this.currentAnimation = null;
|
|
21
|
+
this.isAnimating = false;
|
|
22
|
+
this.fsAnimationOptions = {
|
|
23
|
+
translate: -10,
|
|
24
|
+
duration: 350,
|
|
25
|
+
easing: 'headerEase',
|
|
26
|
+
};
|
|
7
27
|
this.device = breakpoint.get('device');
|
|
8
28
|
/**
|
|
9
29
|
* Holds the current visibility state of the dropdown.
|
|
@@ -14,13 +34,17 @@ export class PostMegadropdown {
|
|
|
14
34
|
this.trigger = false;
|
|
15
35
|
/** Holds the current animation class. */
|
|
16
36
|
this.animationClass = null;
|
|
17
|
-
this.handleClickOutside = (event) => {
|
|
37
|
+
this.handleClickOutside = async (event) => {
|
|
18
38
|
if (this.device !== 'desktop')
|
|
19
39
|
return;
|
|
20
40
|
const target = event.target;
|
|
21
41
|
if (this.host.contains(target)) {
|
|
22
42
|
return;
|
|
23
43
|
}
|
|
44
|
+
// Ignore clicks on the trigger or its contents to prevent running hide() twice
|
|
45
|
+
if (this.megadropdownTrigger.contains(target)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
24
48
|
if (target instanceof HTMLElement) {
|
|
25
49
|
const trigger = target.closest('post-megadropdown-trigger');
|
|
26
50
|
if (trigger) {
|
|
@@ -30,14 +54,11 @@ export class PostMegadropdown {
|
|
|
30
54
|
}
|
|
31
55
|
}
|
|
32
56
|
}
|
|
33
|
-
this.hide(false);
|
|
57
|
+
await this.hide(false);
|
|
34
58
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return hostId
|
|
39
|
-
? document.querySelector(`post-megadropdown-trigger[for="${hostId}"] > button`)
|
|
40
|
-
: null;
|
|
59
|
+
this.keyboardHandler = this.keyboardHandler.bind(this);
|
|
60
|
+
this.handleTabOutside = this.handleTabOutside.bind(this);
|
|
61
|
+
this.handleClickOutside = this.handleClickOutside.bind(this);
|
|
41
62
|
}
|
|
42
63
|
connectedCallback() {
|
|
43
64
|
window.addEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
|
|
@@ -46,16 +67,17 @@ export class PostMegadropdown {
|
|
|
46
67
|
this.getFocusableElements();
|
|
47
68
|
}
|
|
48
69
|
componentDidLoad() {
|
|
70
|
+
this.validateTextClose();
|
|
71
|
+
this.validateTextBack();
|
|
49
72
|
this.checkInitialAriaCurrent();
|
|
50
73
|
this.setupObserver();
|
|
51
74
|
this.handleAriaCurrentChange([]);
|
|
52
75
|
}
|
|
53
76
|
disconnectedCallback() {
|
|
54
|
-
this.removeListeners();
|
|
55
77
|
window.removeEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
|
|
56
|
-
if (PostMegadropdown.activeDropdown === this)
|
|
78
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
57
79
|
PostMegadropdown.activeDropdown = null;
|
|
58
|
-
|
|
80
|
+
this.removeListeners();
|
|
59
81
|
if (this.defaultSlotObserver) {
|
|
60
82
|
this.defaultSlotObserver.disconnect();
|
|
61
83
|
}
|
|
@@ -64,41 +86,70 @@ export class PostMegadropdown {
|
|
|
64
86
|
* Toggles the dropdown visibility based on its current state.
|
|
65
87
|
*/
|
|
66
88
|
async toggle() {
|
|
67
|
-
if (this.
|
|
68
|
-
this
|
|
69
|
-
|
|
70
|
-
else {
|
|
71
|
-
await this.show();
|
|
89
|
+
if (this.isAnimating) {
|
|
90
|
+
// If this is already animating towards a future state -> reverse intent
|
|
91
|
+
return this.isVisible ? this.show() : this.hide();
|
|
72
92
|
}
|
|
93
|
+
return this.isVisible ? this.hide() : this.show();
|
|
73
94
|
}
|
|
74
95
|
/**
|
|
75
96
|
* Displays the dropdown.
|
|
76
97
|
*/
|
|
77
98
|
async show() {
|
|
99
|
+
if (this.device !== 'desktop') {
|
|
100
|
+
const trigger = this.megadropdownTrigger;
|
|
101
|
+
if (trigger)
|
|
102
|
+
this.megadropdownTitle = trigger.innerHTML;
|
|
103
|
+
}
|
|
78
104
|
if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
|
|
79
105
|
// Close the previously active dropdown without animation
|
|
80
106
|
PostMegadropdown.activeDropdown.forceClose();
|
|
81
107
|
}
|
|
82
|
-
this.
|
|
108
|
+
this.cancelAnimation();
|
|
109
|
+
// Set the megadropdown visible and mark it as the active dropdown
|
|
83
110
|
this.isVisible = true;
|
|
84
111
|
PostMegadropdown.activeDropdown = this;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.
|
|
112
|
+
// Update trigger state
|
|
113
|
+
this.postToggleMegadropdown.emit({ isVisible: true });
|
|
114
|
+
try {
|
|
115
|
+
await this.animate('in');
|
|
116
|
+
this.focusFirst();
|
|
117
|
+
// After the megadropdown has finished entry animation
|
|
118
|
+
this.addListeners();
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Open animation was cancelled - reset state
|
|
122
|
+
this.removeListeners();
|
|
123
|
+
this.isVisible = false;
|
|
124
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
125
|
+
PostMegadropdown.activeDropdown = null;
|
|
126
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: true });
|
|
89
127
|
}
|
|
90
|
-
this.addListeners();
|
|
91
128
|
}
|
|
92
129
|
/**
|
|
93
130
|
* Hides the dropdown with an animation.
|
|
94
131
|
*/
|
|
95
132
|
async hide(focusParent = true, forceClose = false) {
|
|
96
|
-
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
|
|
97
133
|
if (forceClose) {
|
|
98
134
|
this.forceClose();
|
|
135
|
+
return;
|
|
99
136
|
}
|
|
100
|
-
|
|
101
|
-
|
|
137
|
+
// Update trigger state
|
|
138
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
|
|
139
|
+
try {
|
|
140
|
+
await this.animate('out');
|
|
141
|
+
// After the closing animation finishes set the megadropdown as non visible
|
|
142
|
+
this.isVisible = false;
|
|
143
|
+
this.removeListeners();
|
|
144
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
145
|
+
PostMegadropdown.activeDropdown = null;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Closing animation was cancelled - reset state
|
|
149
|
+
PostMegadropdown.activeDropdown = this;
|
|
150
|
+
this.addListeners();
|
|
151
|
+
this.isVisible = true;
|
|
152
|
+
this.postToggleMegadropdown.emit({ isVisible: true, focusParent: false });
|
|
102
153
|
}
|
|
103
154
|
}
|
|
104
155
|
/**
|
|
@@ -107,68 +158,79 @@ export class PostMegadropdown {
|
|
|
107
158
|
async focusFirst() {
|
|
108
159
|
this.firstFocusableEl?.focus();
|
|
109
160
|
}
|
|
110
|
-
breakpointChange(e) {
|
|
111
|
-
this.device = e.detail;
|
|
112
|
-
if (this.device === 'desktop' && this.isVisible) {
|
|
113
|
-
this.animationClass = null;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
161
|
/**
|
|
117
162
|
* Forces the dropdown to close without animation.
|
|
118
163
|
*/
|
|
119
164
|
forceClose() {
|
|
120
|
-
this.isVisible = false;
|
|
121
|
-
this.animationClass = null;
|
|
122
|
-
this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
|
|
123
165
|
this.removeListeners();
|
|
166
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: false });
|
|
167
|
+
this.isVisible = false;
|
|
124
168
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.
|
|
129
|
-
PostMegadropdown.activeDropdown = null;
|
|
130
|
-
this.removeListeners();
|
|
169
|
+
// Run the respective animation
|
|
170
|
+
createAnimation(direction) {
|
|
171
|
+
if (this.device === 'desktop') {
|
|
172
|
+
return fadeSlide(this.animatedContainer, direction, this.fsAnimationOptions);
|
|
131
173
|
}
|
|
174
|
+
return slide(this.animatedContainer, direction, {
|
|
175
|
+
translate: 100,
|
|
176
|
+
duration: 350,
|
|
177
|
+
easing: direction === 'in' ? 'ease-in' : 'ease-out',
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
async animate(direction) {
|
|
181
|
+
this.cancelAnimation();
|
|
182
|
+
this.currentAnimation = this.createAnimation(direction);
|
|
183
|
+
// Flag isAnimating used to avoid toggle() de-sync
|
|
184
|
+
this.isAnimating = true;
|
|
185
|
+
await this.currentAnimation.finished;
|
|
186
|
+
this.isAnimating = false;
|
|
187
|
+
this.currentAnimation = null;
|
|
188
|
+
}
|
|
189
|
+
cancelAnimation() {
|
|
190
|
+
this.currentAnimation?.cancel();
|
|
191
|
+
this.currentAnimation = null;
|
|
192
|
+
}
|
|
193
|
+
breakpointChange(e) {
|
|
194
|
+
this.device = e.detail;
|
|
195
|
+
this.cancelAnimation();
|
|
132
196
|
}
|
|
133
197
|
addListeners() {
|
|
134
|
-
this.host.addEventListener('keydown',
|
|
135
|
-
document.addEventListener('keyup',
|
|
198
|
+
this.host.addEventListener('keydown', this.keyboardHandler);
|
|
199
|
+
document.addEventListener('keyup', this.handleTabOutside);
|
|
136
200
|
document.addEventListener('mousedown', this.handleClickOutside);
|
|
137
201
|
}
|
|
138
202
|
removeListeners() {
|
|
139
|
-
this.host.removeEventListener('keydown',
|
|
140
|
-
document.removeEventListener('keyup',
|
|
203
|
+
this.host.removeEventListener('keydown', this.keyboardHandler);
|
|
204
|
+
document.removeEventListener('keyup', this.handleTabOutside);
|
|
141
205
|
document.removeEventListener('mousedown', this.handleClickOutside);
|
|
142
206
|
}
|
|
143
207
|
getFocusableElements() {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
this.firstFocusableEl = focusableChildren[0];
|
|
152
|
-
this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
|
|
208
|
+
const focusableElements = [
|
|
209
|
+
...getFocusableChildren(this.host),
|
|
210
|
+
...getFocusableChildren(this.host.shadowRoot),
|
|
211
|
+
];
|
|
212
|
+
this.firstFocusableEl = focusableElements[0];
|
|
213
|
+
this.lastFocusableEl = focusableElements[focusableElements.length - 1];
|
|
153
214
|
}
|
|
154
215
|
// Loop through the focusable children
|
|
155
216
|
keyboardHandler(e) {
|
|
156
|
-
if (e.key
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
217
|
+
if (e.key !== 'Tab' || this.device === 'desktop')
|
|
218
|
+
return;
|
|
219
|
+
const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
|
|
220
|
+
if (e.shiftKey && activeElement === this.firstFocusableEl) {
|
|
221
|
+
// If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
|
|
222
|
+
e.preventDefault();
|
|
223
|
+
this.lastFocusableEl.focus();
|
|
224
|
+
}
|
|
225
|
+
else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
|
|
226
|
+
// If TAB and last element is focused, focus goes back to the first element of the megadropdown
|
|
227
|
+
e.preventDefault();
|
|
228
|
+
this.firstFocusableEl.focus();
|
|
167
229
|
}
|
|
168
230
|
}
|
|
169
231
|
handleTabOutside(e) {
|
|
170
232
|
if (e.key === 'Tab' && this.device === 'desktop') {
|
|
171
|
-
if (!this.host.contains(e.target)) {
|
|
233
|
+
if (this.isVisible && !this.host.contains(e.target)) {
|
|
172
234
|
this.hide(false);
|
|
173
235
|
}
|
|
174
236
|
}
|
|
@@ -194,14 +256,8 @@ export class PostMegadropdown {
|
|
|
194
256
|
*/
|
|
195
257
|
setTriggerActive(isActive) {
|
|
196
258
|
const trigger = this.megadropdownTrigger;
|
|
197
|
-
if (
|
|
198
|
-
|
|
199
|
-
if (isActive) {
|
|
200
|
-
trigger.classList.add('active');
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
trigger.classList.remove('active');
|
|
204
|
-
}
|
|
259
|
+
if (trigger)
|
|
260
|
+
trigger.setAttribute('active', isActive.toString());
|
|
205
261
|
}
|
|
206
262
|
/**
|
|
207
263
|
* Updates the megadropdown trigger state when the megadropdown content changes.
|
|
@@ -225,9 +281,10 @@ export class PostMegadropdown {
|
|
|
225
281
|
}
|
|
226
282
|
render() {
|
|
227
283
|
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
228
|
-
return (h(Host, { key: '
|
|
284
|
+
return (h(Host, { key: 'f099891f24c60ca48ddceeadf754debdf3d8bff1', version: version }, h("div", { key: 'd964a72ec31632a6061f8c656fcc171bc584b764', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, this.device !== 'desktop' && this.megadropdownTitle && (h("p", { key: 'b04d8fb83e5658365a1d722572d82237a7bf4eba', class: "megadropdown-title" }, this.megadropdownTitle)), h("div", { key: 'b7e654a69375c4e8f3af2e8ff65f0a5b7b2ee2cd', class: "megadropdown-content" }, h("slot", { key: '9608aa8b0d9458b593917e66e3fd4db9c447cac2' })), this.device === 'desktop' ? (h("post-closebutton", { onClick: () => this.hide(true), class: "close-button" }, this.textClose)) : (h("button", { onClick: () => this.hide(true), class: "back-button" }, h("post-icon", { name: "arrowleft" }), this.textBack)))));
|
|
229
285
|
}
|
|
230
286
|
static get is() { return "post-megadropdown"; }
|
|
287
|
+
static get encapsulation() { return "shadow"; }
|
|
231
288
|
static get originalStyleUrls() {
|
|
232
289
|
return {
|
|
233
290
|
"$": ["post-megadropdown.scss"]
|
|
@@ -238,11 +295,54 @@ export class PostMegadropdown {
|
|
|
238
295
|
"$": ["post-megadropdown.css"]
|
|
239
296
|
};
|
|
240
297
|
}
|
|
298
|
+
static get properties() {
|
|
299
|
+
return {
|
|
300
|
+
"textClose": {
|
|
301
|
+
"type": "string",
|
|
302
|
+
"attribute": "text-close",
|
|
303
|
+
"mutable": false,
|
|
304
|
+
"complexType": {
|
|
305
|
+
"original": "string",
|
|
306
|
+
"resolved": "string",
|
|
307
|
+
"references": {}
|
|
308
|
+
},
|
|
309
|
+
"required": true,
|
|
310
|
+
"optional": false,
|
|
311
|
+
"docs": {
|
|
312
|
+
"tags": [],
|
|
313
|
+
"text": "An accessible label for the close button visible on desktop"
|
|
314
|
+
},
|
|
315
|
+
"getter": false,
|
|
316
|
+
"setter": false,
|
|
317
|
+
"reflect": true
|
|
318
|
+
},
|
|
319
|
+
"textBack": {
|
|
320
|
+
"type": "string",
|
|
321
|
+
"attribute": "text-back",
|
|
322
|
+
"mutable": false,
|
|
323
|
+
"complexType": {
|
|
324
|
+
"original": "string",
|
|
325
|
+
"resolved": "string",
|
|
326
|
+
"references": {}
|
|
327
|
+
},
|
|
328
|
+
"required": true,
|
|
329
|
+
"optional": false,
|
|
330
|
+
"docs": {
|
|
331
|
+
"tags": [],
|
|
332
|
+
"text": "A label for the back button visible on tablet and mobile"
|
|
333
|
+
},
|
|
334
|
+
"getter": false,
|
|
335
|
+
"setter": false,
|
|
336
|
+
"reflect": true
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
}
|
|
241
340
|
static get states() {
|
|
242
341
|
return {
|
|
243
342
|
"device": {},
|
|
244
343
|
"isVisible": {},
|
|
245
344
|
"trigger": {},
|
|
345
|
+
"megadropdownTitle": {},
|
|
246
346
|
"animationClass": {}
|
|
247
347
|
};
|
|
248
348
|
}
|
|
@@ -345,6 +445,15 @@ export class PostMegadropdown {
|
|
|
345
445
|
};
|
|
346
446
|
}
|
|
347
447
|
static get elementRef() { return "host"; }
|
|
448
|
+
static get watchers() {
|
|
449
|
+
return [{
|
|
450
|
+
"propName": "textClose",
|
|
451
|
+
"methodName": "validateTextClose"
|
|
452
|
+
}, {
|
|
453
|
+
"propName": "textBack",
|
|
454
|
+
"methodName": "validateTextBack"
|
|
455
|
+
}];
|
|
456
|
+
}
|
|
348
457
|
}
|
|
349
458
|
/** Tracks the currently active dropdown instance. */
|
|
350
459
|
PostMegadropdown.activeDropdown = null;
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
button{display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;border:unset;font-weight:unset;display:flex;padding:.25rem .625rem;gap:.375rem;font-size:1rem;border-color:var(--post-scheme-color-interactive-button-tertiary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}button:hover{text-decoration:none}button:disabled{border-style:var(--post-core-border-style-dash)}button{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){button:is(a){color:LinkText;border:unset}button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}button:hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:var(--post-device-elevation-100);border-color:var(--post-scheme-color-interactive-button-primary-enabled-stroke);background-color:var(--post-scheme-color-interactive-button-primary-enabled-bg);color:var(--post-scheme-color-interactive-button-primary-enabled-fg)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active):hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button{--post-nav-item-border-width: 1px;width:100%;justify-content:start;position:relative;padding:.75rem .75rem calc(.75rem - var(--post-nav-item-border-width)) .5rem;gap:1rem;border-radius:0;line-height:1.5;outline-color:currentColor !important;height:100%}button::before{content:"";background-color:#050400;position:absolute;inset-inline:0;inset-block-end:0;height:var(--post-nav-item-border-width)}button:hover{border-color:var(--post-scheme-color-interactive-button-primary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-primary-hover-bg);color:var(--post-scheme-color-interactive-button-primary-hover-fg)}button:hover::before{background-color:rgba(0,0,0,0)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){box-shadow:none}button{outline-offset:calc(
|
|
2
|
+
-2px - var(--post-device-border-width-focus)
|
|
3
|
+
) !important}button>post-icon:where(:last-child){margin-inline-start:auto}@media screen and (min-width: 0)and (max-width: 599.98px){button{padding:calc(.5rem + 1.5px) .75rem calc(.5rem + 1.5px - var(--post-nav-item-border-width)) .5rem;gap:.5rem;font-size:.875rem}button>post-icon{font-size:1rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){button>post-icon{font-size:1.5rem}}@media screen and (min-width: 1024px){button{padding:1rem .75rem;gap:.5rem}button::before{content:unset}}:host{position:relative;display:inline-block}button post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}button:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}button>span{position:relative}button>span>span[aria-hidden]{font-weight:700;visibility:hidden}button>span>span:not([aria-hidden]){position:absolute;inset:0}@media screen and (min-width: 1024px){button:is([aria-current],[aria-pressed=true],[aria-expanded=true],.active){font-weight:700}}@media screen and (max-width: 1023.98px){button post-icon{margin-inline-start:auto;transform:rotate(-90deg) !important}}
|
|
@@ -10,92 +10,77 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
10
10
|
};
|
|
11
11
|
import { h, Host } from "@stencil/core";
|
|
12
12
|
import { version } from "../../../../package";
|
|
13
|
-
import { checkRequiredAndType, EventFrom } from "../../utils/index";
|
|
13
|
+
import { checkRequiredAndType, EventFrom, IS_BROWSER } from "../../utils/index";
|
|
14
14
|
export class PostMegadropdownTrigger {
|
|
15
|
+
validateFor() {
|
|
16
|
+
checkRequiredAndType(this, 'for', 'string');
|
|
17
|
+
}
|
|
15
18
|
constructor() {
|
|
19
|
+
this.mutationObserver = new MutationObserver(this.cloneSlottedButton.bind(this));
|
|
20
|
+
this.isMegadropdownExpanded = false;
|
|
21
|
+
this.slottedContent = null;
|
|
16
22
|
/**
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
this.ariaExpanded = false;
|
|
20
|
-
/**
|
|
21
|
-
* Reference to the slotted button within the trigger, if present.
|
|
22
|
-
* Used to manage click and key events for mega dropdown control.
|
|
23
|
-
*/
|
|
24
|
-
this.slottedButton = null;
|
|
25
|
-
/**
|
|
26
|
-
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
27
|
-
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
23
|
+
* Sets the trigger state to be active or inactive.
|
|
28
24
|
*/
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
32
|
-
event.preventDefault();
|
|
33
|
-
this.handleToggle();
|
|
34
|
-
if (this.megadropdown && !this.ariaExpanded) {
|
|
35
|
-
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
this.handleToggleMegadropdown = (event) => {
|
|
40
|
-
if (event.target.id === this.for) {
|
|
41
|
-
this.ariaExpanded = event.detail.isVisible;
|
|
42
|
-
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
43
|
-
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
44
|
-
setTimeout(() => {
|
|
45
|
-
this.slottedButton?.focus();
|
|
46
|
-
}, 100);
|
|
47
|
-
}
|
|
48
|
-
this.wasExpanded = this.ariaExpanded;
|
|
49
|
-
if (this.slottedButton) {
|
|
50
|
-
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
25
|
+
this.active = false;
|
|
26
|
+
this.onMegadropdownToggled = this.onMegadropdownToggled.bind(this);
|
|
54
27
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
this.mutationObserver.observe(this.host, { childList: true, subtree: true });
|
|
30
|
+
}
|
|
31
|
+
componentWillLoad() {
|
|
32
|
+
this.cloneSlottedButton();
|
|
33
|
+
}
|
|
34
|
+
componentDidLoad() {
|
|
35
|
+
this.validateFor();
|
|
36
|
+
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
37
|
+
if (IS_BROWSER)
|
|
38
|
+
document.addEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
|
|
39
|
+
}
|
|
40
|
+
disconnectedCallback() {
|
|
41
|
+
document.removeEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
|
|
42
|
+
}
|
|
43
|
+
cloneSlottedButton() {
|
|
44
|
+
this.slottedContent = this.host.innerHTML;
|
|
61
45
|
}
|
|
62
46
|
get megadropdown() {
|
|
63
47
|
const ref = document.getElementById(this.for);
|
|
64
|
-
|
|
65
|
-
? ref
|
|
66
|
-
: null;
|
|
67
|
-
}
|
|
68
|
-
handleToggle() {
|
|
69
|
-
if (this.megadropdown) {
|
|
70
|
-
this.megadropdown.toggle();
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
48
|
+
if (ref?.localName !== 'post-megadropdown') {
|
|
73
49
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
50
|
+
return null;
|
|
74
51
|
}
|
|
52
|
+
return ref;
|
|
75
53
|
}
|
|
76
|
-
|
|
77
|
-
this.
|
|
78
|
-
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
79
|
-
document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
80
|
-
this.slottedButton = this.host.querySelector('button');
|
|
81
|
-
if (this.slottedButton) {
|
|
82
|
-
this.slottedButton.setAttribute('aria-haspopup', 'menu');
|
|
83
|
-
this.slottedButton.addEventListener('click', () => {
|
|
84
|
-
this.handleToggle();
|
|
85
|
-
});
|
|
86
|
-
this.slottedButton.addEventListener('keydown', this.handleKeyDown);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.warn('No button found within post-megadropdown-trigger');
|
|
90
|
-
}
|
|
54
|
+
onClick() {
|
|
55
|
+
this.megadropdown?.toggle();
|
|
91
56
|
}
|
|
92
|
-
|
|
93
|
-
|
|
57
|
+
onKeyDown(event) {
|
|
58
|
+
if (event.key !== 'Enter' && event.key !== ' ')
|
|
59
|
+
return;
|
|
60
|
+
const megadropdown = this.megadropdown;
|
|
61
|
+
if (!megadropdown)
|
|
62
|
+
return;
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
this.megadropdown.toggle();
|
|
65
|
+
}
|
|
66
|
+
onMegadropdownToggled(event) {
|
|
67
|
+
if (event.target.id === this.for) {
|
|
68
|
+
const wasMegadropdownExpanded = this.isMegadropdownExpanded;
|
|
69
|
+
this.isMegadropdownExpanded = event.detail.isVisible;
|
|
70
|
+
const haveBeenClosed = wasMegadropdownExpanded && !this.isMegadropdownExpanded;
|
|
71
|
+
if (!haveBeenClosed || !event.detail.focusParent)
|
|
72
|
+
return;
|
|
73
|
+
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
74
|
+
setTimeout(() => {
|
|
75
|
+
this.interactiveButton.focus();
|
|
76
|
+
}, 100);
|
|
77
|
+
}
|
|
94
78
|
}
|
|
95
79
|
render() {
|
|
96
|
-
return (h(Host, { key: '
|
|
80
|
+
return (h(Host, { key: '73479c3c80cda63b9f82ec584c962ffa53b7b85c', "data-version": version }, h("button", { key: 'e76d5077f1ac2e6c16e365799ea79f6985ec0d14', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, h("span", { key: 'a60b5838443ccd75fc08e07f791cb4ef088343f3' }, h("span", { key: 'da180bb66704712c0cba7b575ba260765a0df36f' }, h("slot", { key: 'c27dbc706a82fc49acb3414855e0e57d1dac0923' })), h("span", { key: '87ebe5fdcba5a160b2698965284fc5ce66d0fa90', "aria-hidden": "true", innerHTML: this.slottedContent })), h("post-icon", { key: '76f620188ebc3ad60b04523ea70ee4f3b642a2e8', name: "chevrondown" }))));
|
|
97
81
|
}
|
|
98
82
|
static get is() { return "post-megadropdown-trigger"; }
|
|
83
|
+
static get encapsulation() { return "shadow"; }
|
|
99
84
|
static get originalStyleUrls() {
|
|
100
85
|
return {
|
|
101
86
|
"$": ["post-megadropdown-trigger.scss"]
|
|
@@ -108,6 +93,26 @@ export class PostMegadropdownTrigger {
|
|
|
108
93
|
}
|
|
109
94
|
static get properties() {
|
|
110
95
|
return {
|
|
96
|
+
"active": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"attribute": "active",
|
|
99
|
+
"mutable": false,
|
|
100
|
+
"complexType": {
|
|
101
|
+
"original": "boolean",
|
|
102
|
+
"resolved": "boolean",
|
|
103
|
+
"references": {}
|
|
104
|
+
},
|
|
105
|
+
"required": false,
|
|
106
|
+
"optional": false,
|
|
107
|
+
"docs": {
|
|
108
|
+
"tags": [],
|
|
109
|
+
"text": "Sets the trigger state to be active or inactive."
|
|
110
|
+
},
|
|
111
|
+
"getter": false,
|
|
112
|
+
"setter": false,
|
|
113
|
+
"reflect": true,
|
|
114
|
+
"defaultValue": "false"
|
|
115
|
+
},
|
|
111
116
|
"for": {
|
|
112
117
|
"type": "string",
|
|
113
118
|
"attribute": "for",
|
|
@@ -125,23 +130,24 @@ export class PostMegadropdownTrigger {
|
|
|
125
130
|
},
|
|
126
131
|
"getter": false,
|
|
127
132
|
"setter": false,
|
|
128
|
-
"reflect":
|
|
133
|
+
"reflect": true
|
|
129
134
|
}
|
|
130
135
|
};
|
|
131
136
|
}
|
|
132
137
|
static get states() {
|
|
133
138
|
return {
|
|
134
|
-
"
|
|
139
|
+
"isMegadropdownExpanded": {},
|
|
140
|
+
"slottedContent": {}
|
|
135
141
|
};
|
|
136
142
|
}
|
|
137
143
|
static get elementRef() { return "host"; }
|
|
138
144
|
static get watchers() {
|
|
139
145
|
return [{
|
|
140
146
|
"propName": "for",
|
|
141
|
-
"methodName": "
|
|
147
|
+
"methodName": "validateFor"
|
|
142
148
|
}];
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
__decorate([
|
|
146
152
|
EventFrom('post-megadropdown', { ignoreNestedComponents: false })
|
|
147
|
-
], PostMegadropdownTrigger.prototype, "
|
|
153
|
+
], PostMegadropdownTrigger.prototype, "onMegadropdownToggled", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:host{display:block}:where([part=menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}
|
|
1
|
+
:host{display:block}:where([part=post-menu]){display:flex;flex-direction:column;padding-block:.5rem}::slotted([slot=header]){margin-top:-0.5rem;padding:1rem;display:flex;align-items:center;gap:.5rem;border-block-end:1px solid #050400;font-weight:700}@media screen and (max-width: 1023.98px){::slotted([slot=header]){padding:.75rem 1rem}}@media screen and (max-width: 779.98px){::slotted([slot=header]){padding:.5rem 1rem}}
|