@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,16 +1,19 @@
|
|
|
1
|
-
import { r as registerInstance, h, H as Host, a as getElement, c as createEvent } from './index-
|
|
2
|
-
import { v as version } from './package-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { a as getFocusableChildren } from './get-focusable-children-
|
|
6
|
-
import { E as EventFrom } from './event-from-
|
|
1
|
+
import { r as registerInstance, h, H as Host, a as getElement, c as createEvent } from './index-1ReqxAnI.js';
|
|
2
|
+
import { v as version } from './package-DZ5m2Ttg.js';
|
|
3
|
+
import { f as checkEmptyOrOneOf, c as checkRequiredAndType, t as throttle, e as breakpoint, b as checkEmptyOrType, i as checkEmptyOrUrl } from './breakpoints-DYoSKGHO.js';
|
|
4
|
+
import { f as fade } from './fade-DsgPYmAa.js';
|
|
5
|
+
import { g as getDeepFocusableChildren, a as getFocusableChildren } from './get-focusable-children-BXNs2_sw.js';
|
|
6
|
+
import { E as EventFrom } from './event-from-rEfV4v4a.js';
|
|
7
|
+
import { a as IS_BROWSER } from './environment-CEmnRoA6.js';
|
|
7
8
|
import { n as nanoid } from './index.browser-BLchVpF6.js';
|
|
9
|
+
import { r as resolveEasing } from './utils-CoDiS_Ik.js';
|
|
10
|
+
import { f as fadeSlide } from './fade-slide-CvOvauo9.js';
|
|
8
11
|
import { P as PLACEMENT_TYPES } from './placement-DRiVosES.js';
|
|
9
|
-
import { g as getRoot } from './get-root-
|
|
12
|
+
import { g as getRoot } from './get-root-CXfAA093.js';
|
|
10
13
|
|
|
11
14
|
const BUTTON_TYPES = ['button', 'submit', 'reset'];
|
|
12
15
|
|
|
13
|
-
const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
|
|
16
|
+
const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
|
|
14
17
|
|
|
15
18
|
const PostClosebutton = class {
|
|
16
19
|
constructor(hostRef) {
|
|
@@ -46,7 +49,7 @@ const PostClosebutton = class {
|
|
|
46
49
|
}
|
|
47
50
|
}
|
|
48
51
|
render() {
|
|
49
|
-
return (h(Host, { key: '
|
|
52
|
+
return (h(Host, { key: '6965a8cb5fb765b4fcec0439ceeafe19d34970c2', "data-version": version }, h("button", { key: '7e718f70b0a4ac79e9439784dac46bd1ffd60fd1', class: "btn", type: this.buttonType }, h("post-icon", { key: '70acda3fbe6c9420f0be708fde6b29a7d5337d13', "aria-hidden": "true", name: "closex" }), h("span", { key: '899b3814c0898b521e4166e1cd951af628558e78', class: "visually-hidden" }, h("slot", { key: 'b13d0e95fd567c86e93e5185389909c7c0e7107d' })))));
|
|
50
53
|
}
|
|
51
54
|
get host() { return getElement(this); }
|
|
52
55
|
static get watchers() { return {
|
|
@@ -55,31 +58,34 @@ const PostClosebutton = class {
|
|
|
55
58
|
};
|
|
56
59
|
PostClosebutton.style = postClosebuttonCss;
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
61
|
+
/**
|
|
62
|
+
* Used by PostMegadropdown (burger menu)
|
|
63
|
+
*/
|
|
64
|
+
const defaultOptions = {
|
|
65
|
+
translate: 100,
|
|
66
|
+
duration: 500,
|
|
67
|
+
easing: 'ease',
|
|
68
|
+
fill: 'none',
|
|
69
|
+
};
|
|
70
|
+
function animateSlide(el, keyframes, options) {
|
|
71
|
+
const { duration, easing, fill } = { ...defaultOptions, ...options };
|
|
72
|
+
return el.animate(keyframes, { duration, easing: resolveEasing(easing), fill });
|
|
70
73
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
function slide(el, direction, options = {}) {
|
|
75
|
+
const mergedOptions = {
|
|
76
|
+
...defaultOptions,
|
|
77
|
+
...options,
|
|
78
|
+
};
|
|
79
|
+
const { translate } = mergedOptions;
|
|
80
|
+
const baseKeyframes = [
|
|
81
|
+
{ transform: `translateX(${translate}%)` },
|
|
82
|
+
{ transform: 'translateX(0)' },
|
|
83
|
+
];
|
|
84
|
+
const keyframes = direction === 'in' ? baseKeyframes : [...baseKeyframes].reverse();
|
|
85
|
+
return animateSlide(el, keyframes, options);
|
|
80
86
|
}
|
|
81
87
|
|
|
82
|
-
const postHeaderCss = "
|
|
88
|
+
const postHeaderCss = ":host{--post-global-header-top:calc( var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height) );--post-header-top:calc(var(--post-header-reduced-height) - var(--post-header-expanded-height));--post-logo-height:calc( var(--post-global-header-expanded-height) - var(--post-header-scroll-top, 0px) );--post-global-controls-top:clamp( 1000 * (var(--post-global-header-reduced-height) - var(--post-global-header-expanded-height)), calc( -1 * min(var(--post-header-scroll-top, 0px) / 4, var(--post-global-header-reduced-height)) ), 0px )}@media screen and (min-width: 1024px){:host{--post-header-gap:0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.5rem}}@media screen and (min-width: 600px)and (max-width: 1023.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0.25rem;--post-global-header-padding-inline-end:0.25rem;--post-local-header-padding-inline-start:0.75rem;--post-local-header-padding-inline-end:0.25rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:2.5rem;--post-burger-menu-body-gap:2rem;--post-burger-menu-footer-gap:1.5rem}}@media screen and (min-width: 600px)and (max-width: 779.98px){:host{--post-burger-menu-padding-inline:1rem}}@media screen and (min-width: 0)and (max-width: 599.98px){:host{--post-header-gap:0.75rem 0.25rem;--post-global-header-padding-inline-start:0rem;--post-global-header-padding-inline-end:0.5rem;--post-local-header-padding-inline-start:0.5rem;--post-local-header-padding-inline-end:0.5rem;--post-local-header-padding-block:0rem;--post-burger-menu-padding-inline:1rem;--post-burger-menu-body-gap:1.5rem;--post-burger-menu-footer-gap:1rem}}:host([data-expanded]),:host([data-menu-extended]){--post-header-top:0;--post-global-header-top:-0.001px;--post-global-controls-top:0;--post-logo-height:var(--post-global-header-expanded-height)}*,::before,::after{box-sizing:border-box}:host,header,.global-header,.local-header{transition:inset-block-start 150ms cubic-bezier(0.4, 0, 0.2, 1)}.global-header,.local-header,.burger-menu{box-shadow:var(--post-device-elevation-300)}.global-header,.sliding-controls,.local-header,.navigation{display:flex;align-items:center;justify-content:space-between;gap:var(--post-header-gap)}:host{container-type:inline-size;display:block;position:sticky;inset-block-start:var(--post-header-top);z-index:1020}:host post-togglebutton{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)}:host post-togglebutton:hover{text-decoration:none}:host post-togglebutton:disabled{border-style:var(--post-core-border-style-dash)}:host post-togglebutton{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host post-togglebutton: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){:host post-togglebutton:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host post-togglebutton: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){:host post-togglebutton: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){:host post-togglebutton:is(a){color:LinkText;border:unset}:host post-togglebutton:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}:host post-togglebutton:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}:host post-togglebutton: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)}:host post-togglebutton: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)}:host post-togglebutton: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)}@media screen and (min-width: 0)and (max-width: 599.98px){:host post-togglebutton{padding:.625rem}:host post-togglebutton>:not(post-icon){display:none}:host post-togglebutton>post-icon{font-size:1.5rem}}.global-header{z-index:2;position:sticky;inset-block-start:var(--post-global-header-top);background-color:#fc0;height:var(--post-global-header-expanded-height);padding-inline-start:var(--post-global-header-padding-inline-start);padding-inline-end:var(--post-global-header-padding-inline-end)}.global-header:has(~.local-header:not(.no-title.no-navigation)),.global-header:has(~.burger-menu.extended){box-shadow:none}.global-header .logo{align-self:flex-end;width:var(--post-global-header-expanded-height);height:var(--post-logo-height);min-height:var(--post-global-header-reduced-height);max-height:100%;margin-inline-end:calc(1.25rem - var(--post-header-gap))}.global-header .sliding-controls{flex-grow:1;justify-content:flex-end;position:relative;inset-block-start:var(--post-global-controls-top)}.global-header .audience{margin-inline-end:auto}.global-header.no-audience .audience{display:none}.local-header{position:relative;flex-wrap:wrap;background-color:#fff;min-height:var(--post-local-header-expanded-min-height);padding-inline-start:var(--post-local-header-padding-inline-start);padding-inline-end:var(--post-local-header-padding-inline-end);padding-block:var(--post-local-header-padding-block)}.local-header:not(.no-title,.no-navigation){padding-block-start:1.125rem}.local-header.no-title.no-navigation{display:none}.local-header:has(.navigation.megadropdown-open),.local-header:has(~.burger-menu.extended){box-shadow:none}.local-header:has(.navigation.megadropdown-open)::after,.local-header:has(~.burger-menu.extended)::after{content:\"\";display:block;position:absolute;inset-inline:0;inset-block-end:0;height:1px;background-color:#e1e0dc}.local-header .navigation{flex:1 0 100%;height:var(--post-main-navigation-height);margin-inline-start:calc(-1*var(--post-local-header-padding-inline-start));max-width:100cqw}.local-header.no-navigation .navigation{display:none}.local-header .local-nav{flex:0 0 auto}.local-header.no-local-nav .navigation{margin-inline-end:calc(-1*var(--post-local-header-padding-inline-end))}.local-header.no-local-nav .local-nav{display:none}.burger-menu{z-index:-1;position:absolute;inset-inline:0;inset-block-start:100%;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));overflow:hidden auto;display:flex;flex-direction:column;background-color:#fafafa}.burger-menu.extended.megadropdown-open{overflow:hidden}.burger-menu:not(.extended){transform:translateY(-100%);display:none}.burger-menu:not(.extended)>*{display:none}.burger-menu .burger-menu-body,.burger-menu .burger-menu-footer{display:flex;flex-direction:column;padding-inline:var(--post-burger-menu-padding-inline)}.burger-menu .burger-menu-body{flex-grow:1;padding-block:1.5rem;gap:var(--post-burger-menu-body-gap)}.burger-menu .burger-menu-footer{background-color:#f0efed;padding-block:1rem 1.5rem;gap:var(--post-burger-menu-footer-gap)}.burger-menu .local-nav{min-height:3.5rem;display:flex;align-items:center;justify-content:flex-end;padding-inline:.25rem}.burger-menu.no-local-nav .local-nav{display:none}";
|
|
83
89
|
|
|
84
90
|
var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
85
91
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -92,7 +98,7 @@ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators,
|
|
|
92
98
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
93
99
|
};
|
|
94
100
|
const PostHeader = class {
|
|
95
|
-
get
|
|
101
|
+
get hasBurgerMenu() {
|
|
96
102
|
return this.device !== 'desktop' && this.hasNavigation;
|
|
97
103
|
}
|
|
98
104
|
get scrollParent() {
|
|
@@ -109,10 +115,13 @@ const PostHeader = class {
|
|
|
109
115
|
}
|
|
110
116
|
return document.body;
|
|
111
117
|
}
|
|
118
|
+
validateTextMenu() {
|
|
119
|
+
checkRequiredAndType(this, 'textMenu', 'string');
|
|
120
|
+
}
|
|
112
121
|
lockBody(newValue, _oldValue, propName) {
|
|
113
122
|
const scrollParent = this.scrollParent;
|
|
114
|
-
const
|
|
115
|
-
if (this.device !== 'desktop' &&
|
|
123
|
+
const burgerMenuExtended = propName === 'burgerMenuExtended' ? newValue : this.burgerMenuExtended;
|
|
124
|
+
if (this.device !== 'desktop' && burgerMenuExtended) {
|
|
116
125
|
scrollParent.setAttribute('data-post-scroll-locked', '');
|
|
117
126
|
this.host.addEventListener('keydown', this.keyboardHandler);
|
|
118
127
|
}
|
|
@@ -124,16 +133,22 @@ const PostHeader = class {
|
|
|
124
133
|
constructor(hostRef) {
|
|
125
134
|
registerInstance(this, hostRef);
|
|
126
135
|
this.throttledResize = throttle(50, () => this.updateLocalHeaderHeight());
|
|
136
|
+
this.animationOptions = {
|
|
137
|
+
duration: 350,
|
|
138
|
+
easing: 'headerEase',
|
|
139
|
+
};
|
|
127
140
|
this.device = breakpoint.get('device');
|
|
128
141
|
this.hasNavigation = false;
|
|
142
|
+
this.hasLocalNav = false;
|
|
143
|
+
this.hasAudience = false;
|
|
129
144
|
this.hasTitle = false;
|
|
130
|
-
this.
|
|
145
|
+
this.burgerMenuExtended = false;
|
|
131
146
|
this.megadropdownOpen = false;
|
|
132
147
|
this.breakpointChange = (e) => {
|
|
133
148
|
this.device = e.detail;
|
|
134
149
|
this.switchLanguageSwitchMode();
|
|
135
|
-
if (this.device === 'desktop' && this.
|
|
136
|
-
this.
|
|
150
|
+
if (this.device === 'desktop' && this.burgerMenuExtended) {
|
|
151
|
+
this.closeBurgerMenu();
|
|
137
152
|
}
|
|
138
153
|
if (this.device !== 'desktop') {
|
|
139
154
|
Array.from(this.host.querySelectorAll('post-megadropdown')).forEach(dropdown => {
|
|
@@ -142,14 +157,14 @@ const PostHeader = class {
|
|
|
142
157
|
this.megadropdownOpen = false;
|
|
143
158
|
}
|
|
144
159
|
};
|
|
145
|
-
this.megadropdownStateHandler = (event) => {
|
|
146
|
-
this.megadropdownOpen = event.detail.isVisible;
|
|
147
|
-
};
|
|
148
160
|
this.handleScrollEvent = this.handleScrollEvent.bind(this);
|
|
149
161
|
this.updateScrollParentHeight = this.updateScrollParentHeight.bind(this);
|
|
150
162
|
this.updateLocalHeaderHeight = this.updateLocalHeaderHeight.bind(this);
|
|
151
163
|
this.keyboardHandler = this.keyboardHandler.bind(this);
|
|
152
164
|
this.handleLinkClick = this.handleLinkClick.bind(this);
|
|
165
|
+
this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
|
|
166
|
+
this.checkSlottedContent = this.checkSlottedContent.bind(this);
|
|
167
|
+
this.megadropdownStateHandler = this.megadropdownStateHandler.bind(this);
|
|
153
168
|
}
|
|
154
169
|
connectedCallback() {
|
|
155
170
|
window.addEventListener('resize', this.throttledResize, { passive: true });
|
|
@@ -160,23 +175,23 @@ const PostHeader = class {
|
|
|
160
175
|
passive: true,
|
|
161
176
|
});
|
|
162
177
|
document.addEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
|
|
163
|
-
this.host.addEventListener('click', this.handleLinkClick);
|
|
164
178
|
window.addEventListener('postBreakpoint:device', this.breakpointChange);
|
|
165
|
-
this.checkNavigationExistence();
|
|
166
|
-
this.checkTitleExistence();
|
|
167
|
-
this.switchLanguageSwitchMode();
|
|
168
179
|
this.handleScrollParentResize();
|
|
169
|
-
this.lockBody(false, this.
|
|
180
|
+
this.lockBody(false, this.burgerMenuExtended, 'burgerMenuExtended');
|
|
170
181
|
}
|
|
171
182
|
componentWillRender() {
|
|
172
183
|
this.handleScrollEvent();
|
|
184
|
+
this.handleSlottedContentChanges();
|
|
185
|
+
this.switchLanguageSwitchMode();
|
|
173
186
|
}
|
|
174
187
|
componentDidRender() {
|
|
188
|
+
this.validateTextMenu();
|
|
175
189
|
this.getFocusableElements();
|
|
176
190
|
this.handleLocalHeaderResize();
|
|
177
191
|
}
|
|
178
192
|
componentDidLoad() {
|
|
179
193
|
this.updateLocalHeaderHeight();
|
|
194
|
+
this.host.shadowRoot.addEventListener('click', this.handleLinkClick);
|
|
180
195
|
}
|
|
181
196
|
// Clean up possible side effects when post-header is disconnected
|
|
182
197
|
disconnectedCallback() {
|
|
@@ -188,7 +203,9 @@ const PostHeader = class {
|
|
|
188
203
|
scrollParent.removeEventListener('scroll', this.handleScrollEvent);
|
|
189
204
|
document.removeEventListener('postToggleMegadropdown', this.megadropdownStateHandler);
|
|
190
205
|
this.host.removeEventListener('keydown', this.keyboardHandler);
|
|
191
|
-
this.host.
|
|
206
|
+
if (this.host.shadowRoot) {
|
|
207
|
+
this.host.shadowRoot.removeEventListener('click', this.handleLinkClick);
|
|
208
|
+
}
|
|
192
209
|
if (this.scrollParentResizeObserver) {
|
|
193
210
|
this.scrollParentResizeObserver.disconnect();
|
|
194
211
|
this.scrollParentResizeObserver = null;
|
|
@@ -197,81 +214,72 @@ const PostHeader = class {
|
|
|
197
214
|
this.localHeaderResizeObserver.disconnect();
|
|
198
215
|
this.localHeaderResizeObserver = null;
|
|
199
216
|
}
|
|
200
|
-
this.
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
this.hasNavigation = this.host.querySelectorAll('post-mainnavigation').length > 0;
|
|
204
|
-
}
|
|
205
|
-
checkTitleExistence() {
|
|
206
|
-
this.hasTitle = this.host.querySelectorAll('[slot="title"]').length > 0;
|
|
207
|
-
}
|
|
208
|
-
async closeMobileMenu() {
|
|
209
|
-
this.mobileMenuAnimation.finish();
|
|
210
|
-
const menuButton = this.getMenuButton();
|
|
211
|
-
if (menuButton) {
|
|
212
|
-
menuButton.toggled = false;
|
|
217
|
+
if (this.slottedContentObserver) {
|
|
218
|
+
this.slottedContentObserver.disconnect();
|
|
219
|
+
this.slottedContentObserver = null;
|
|
213
220
|
}
|
|
214
|
-
this.
|
|
221
|
+
this.burgerMenuExtended = false;
|
|
222
|
+
}
|
|
223
|
+
async closeBurgerMenu() {
|
|
224
|
+
this.burgerMenuAnimation?.finish();
|
|
225
|
+
if (this.burgerMenuButton)
|
|
226
|
+
this.burgerMenuButton.toggled = false;
|
|
227
|
+
this.burgerMenuExtended = false;
|
|
215
228
|
}
|
|
216
229
|
/**
|
|
217
|
-
* Toggles the
|
|
230
|
+
* Toggles the burger navigation menu.
|
|
218
231
|
*/
|
|
219
|
-
async
|
|
232
|
+
async toggleBurgerMenu(force) {
|
|
220
233
|
if (this.device === 'desktop')
|
|
221
234
|
return;
|
|
222
|
-
this.
|
|
223
|
-
?
|
|
224
|
-
:
|
|
235
|
+
this.burgerMenuAnimation = this.burgerMenuExtended
|
|
236
|
+
? fade(this.burgerMenu, 'out', this.animationOptions)
|
|
237
|
+
: fade(this.burgerMenu, 'in', this.animationOptions);
|
|
225
238
|
// Update the state of the toggle button
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
if (this.
|
|
239
|
+
if (this.burgerMenuButton)
|
|
240
|
+
this.burgerMenuButton.toggled = force ?? !this.burgerMenuExtended;
|
|
241
|
+
if (this.burgerMenuExtended) {
|
|
229
242
|
// Wait for the close animation to finish before hiding megadropdowns
|
|
230
|
-
await this.
|
|
231
|
-
this.
|
|
232
|
-
if (this.
|
|
243
|
+
await this.burgerMenuAnimation.finished;
|
|
244
|
+
this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
|
|
245
|
+
if (this.burgerMenuExtended === false) {
|
|
233
246
|
this.closeAllMegadropdowns();
|
|
247
|
+
this.burgerMenu.scrollTop = 0;
|
|
234
248
|
}
|
|
235
249
|
}
|
|
236
250
|
else {
|
|
237
|
-
this.
|
|
251
|
+
this.burgerMenuExtended = force ?? !this.burgerMenuExtended;
|
|
238
252
|
// If opening, close any open megadropdowns immediately
|
|
239
253
|
if (this.megadropdownOpen) {
|
|
240
254
|
this.closeAllMegadropdowns();
|
|
241
255
|
}
|
|
242
256
|
}
|
|
243
257
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
// Get elements in the correct order (different as the DOM order)
|
|
247
|
-
const focusableEls = [
|
|
248
|
-
...Array.from(this.host.querySelectorAll('.list-inline:not([slot="meta-navigation"]) > li')),
|
|
249
|
-
...Array.from(this.host.querySelectorAll('nav > post-list > div > post-list-item, post-megadropdown-trigger')),
|
|
250
|
-
...Array.from(this.host.querySelectorAll('.list-inline[slot="meta-navigation"] > li, post-language-option')),
|
|
251
|
-
];
|
|
252
|
-
// Add the main toggle menu button to the list of focusable children
|
|
253
|
-
const focusableChildren = [
|
|
254
|
-
this.host.querySelector('post-togglebutton'),
|
|
255
|
-
...focusableEls.flatMap(el => Array.from(getFocusableChildren(el))),
|
|
256
|
-
];
|
|
257
|
-
this.firstFocusableEl = focusableChildren[0];
|
|
258
|
-
this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
|
|
258
|
+
megadropdownStateHandler(event) {
|
|
259
|
+
this.megadropdownOpen = event.detail.isVisible;
|
|
259
260
|
}
|
|
260
|
-
|
|
261
|
-
|
|
261
|
+
// Get all the focusable elements in the post-header burger menu
|
|
262
|
+
getFocusableElements() {
|
|
263
|
+
if (!this.burgerMenu)
|
|
264
|
+
return;
|
|
265
|
+
const focusableElements = [this.burgerMenuButton];
|
|
266
|
+
focusableElements.push(...getDeepFocusableChildren(this.localHeader, el => !el.matches('post-megadropdown')), ...getDeepFocusableChildren(this.burgerMenu, el => !el.matches('post-megadropdown')));
|
|
267
|
+
this.firstFocusableEl = focusableElements[0];
|
|
268
|
+
this.lastFocusableEl = focusableElements[focusableElements.length - 1];
|
|
262
269
|
}
|
|
263
270
|
keyboardHandler(e) {
|
|
264
|
-
if (e.key
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
271
|
+
if (e.key !== 'Tab' || !this.burgerMenuExtended)
|
|
272
|
+
return;
|
|
273
|
+
const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
|
|
274
|
+
if (e.shiftKey && activeElement === this.firstFocusableEl) {
|
|
275
|
+
// If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
|
|
276
|
+
e.preventDefault();
|
|
277
|
+
this.lastFocusableEl.focus();
|
|
278
|
+
}
|
|
279
|
+
else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
|
|
280
|
+
// If Tab and last element is focused, focus goes back to the first element of the megadropdown
|
|
281
|
+
e.preventDefault();
|
|
282
|
+
this.firstFocusableEl.focus();
|
|
275
283
|
}
|
|
276
284
|
}
|
|
277
285
|
closeAllMegadropdowns() {
|
|
@@ -282,7 +290,7 @@ const PostHeader = class {
|
|
|
282
290
|
}
|
|
283
291
|
handleScrollEvent() {
|
|
284
292
|
const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
|
|
285
|
-
document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
|
|
293
|
+
document.documentElement.style.setProperty('--post-header-scroll-top', `${Math.max(scrollTop, 0)}px`);
|
|
286
294
|
}
|
|
287
295
|
updateLocalHeaderHeight() {
|
|
288
296
|
const localHeaderElement = this.host.shadowRoot.querySelector('.local-header');
|
|
@@ -300,8 +308,8 @@ const PostHeader = class {
|
|
|
300
308
|
if (!isLinkInMainNav && !isLinkInMegadropdown) {
|
|
301
309
|
return;
|
|
302
310
|
}
|
|
303
|
-
if (this.
|
|
304
|
-
this.
|
|
311
|
+
if (this.burgerMenuExtended && (isLinkInMainNav || isLinkInMegadropdown)) {
|
|
312
|
+
this.toggleBurgerMenu(false);
|
|
305
313
|
}
|
|
306
314
|
if (this.device === 'desktop' && isLinkInMegadropdown) {
|
|
307
315
|
const megadropdownLink = target.closest('post-megadropdown a');
|
|
@@ -323,38 +331,80 @@ const PostHeader = class {
|
|
|
323
331
|
this.localHeaderResizeObserver.observe(localHeader);
|
|
324
332
|
}
|
|
325
333
|
}
|
|
334
|
+
handleSlottedContentChanges() {
|
|
335
|
+
if (!this.slottedContentObserver) {
|
|
336
|
+
this.checkSlottedContent();
|
|
337
|
+
this.slottedContentObserver = new MutationObserver(this.checkSlottedContent);
|
|
338
|
+
this.slottedContentObserver.observe(this.host, { childList: true });
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
checkSlottedContent() {
|
|
342
|
+
this.hasNavigation = !!this.host.querySelector('[slot="main-nav"]');
|
|
343
|
+
this.hasLocalNav = !!this.host.querySelector('[slot="local-nav"]');
|
|
344
|
+
this.hasAudience = !!this.host.querySelector('[slot="audience"]');
|
|
345
|
+
this.hasTitle = !!this.host.querySelector('[slot="title"]');
|
|
346
|
+
}
|
|
326
347
|
switchLanguageSwitchMode() {
|
|
327
|
-
const variant = this.
|
|
328
|
-
Array.from(this.host.querySelectorAll('post-language-
|
|
348
|
+
const variant = this.hasBurgerMenu ? 'list' : 'menu';
|
|
349
|
+
Array.from(this.host.querySelectorAll('post-language-menu')).forEach(languageSwitch => {
|
|
329
350
|
languageSwitch?.setAttribute('variant', variant);
|
|
330
351
|
});
|
|
331
352
|
}
|
|
353
|
+
onFocusChange(e) {
|
|
354
|
+
const alwaysVisibleElements = this.device === 'desktop'
|
|
355
|
+
? '.navigation' // logo isn’t included since it would be too small to focus on effectively.
|
|
356
|
+
: '.global-header, .burger-menu';
|
|
357
|
+
const isHeaderExpanded =
|
|
358
|
+
// ensure the expanded state stays accurate during focus changes,
|
|
359
|
+
// e.g., when the focused element is removed from the DOM
|
|
360
|
+
// during a window resize
|
|
361
|
+
e.target === document.activeElement &&
|
|
362
|
+
this.host.matches(':focus-within') &&
|
|
363
|
+
!this.host.shadowRoot.querySelector(`:where(${alwaysVisibleElements}):focus-within`);
|
|
364
|
+
if (isHeaderExpanded) {
|
|
365
|
+
this.host.setAttribute('data-expanded', '');
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
this.host.removeAttribute('data-expanded');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
332
371
|
renderNavigation() {
|
|
333
|
-
const
|
|
372
|
+
const localNav = !this.hasTitle && (h("div", { class: "local-nav" }, h("slot", { name: "local-nav" })));
|
|
334
373
|
if (this.device === 'desktop') {
|
|
335
|
-
return (h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } },
|
|
374
|
+
return (h("div", { class: { 'navigation': true, 'megadropdown-open': this.megadropdownOpen } }, h("slot", { name: "main-nav" }), localNav));
|
|
336
375
|
}
|
|
337
|
-
return (h("div", { class: {
|
|
376
|
+
return (h("div", { class: {
|
|
377
|
+
'burger-menu': true,
|
|
378
|
+
'extended': this.burgerMenuExtended,
|
|
379
|
+
'no-local-nav': !this.hasLocalNav,
|
|
380
|
+
'megadropdown-open': this.megadropdownOpen,
|
|
381
|
+
}, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, localNav, h("div", { class: "burger-menu-body" }, h("slot", { name: "audience" }), h("slot", { name: "main-nav" })), h("div", { class: "burger-menu-footer" }, h("slot", { name: "global-nav-secondary" }), h("slot", { name: "language-menu" }))));
|
|
338
382
|
}
|
|
339
383
|
render() {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
384
|
+
return (h(Host, { key: '15de1ff6ccac94813df10fc0b41a518de68dee94', "data-version": version, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, h("header", { key: '0af40c8b8944c7ffcf2bf0fe704671f4012ae8c8' }, h("div", { key: 'cd4564c5c375c015c673df195ba04fe4d89ff1c2', class: {
|
|
385
|
+
'global-header': true,
|
|
386
|
+
'no-audience': !this.hasAudience,
|
|
387
|
+
} }, h("div", { key: 'c4ad8a22fed57e54266c6584548f5203a499b63c', class: "logo" }, h("slot", { key: 'bf86f7ccf2e46263365023f287f18305160cede6', name: "post-logo" })), h("div", { key: 'e89c405cf97ddb08850d3b15ab8977e7e484ba73', class: "sliding-controls" }, this.device === 'desktop' && (h("div", { key: 'c3e9f49a105894d0df44a3d2654065b452292154', class: "audience" }, h("slot", { key: '20effc0592ca8665de464cc5d45d11ef02894acb', name: "audience" }))), h("slot", { key: 'f0ca8a59134520ccbb38907e32bedd4c05800d36', name: "global-nav-primary" }), !this.hasBurgerMenu && [
|
|
388
|
+
h("slot", { key: '7e2b2982403f491f083fc9f32cee46cbaeca7c50', name: "global-nav-secondary" }),
|
|
389
|
+
h("slot", { key: '3e7b5f6cb16b2cf2bc64b9b11c70f8b363e80134', name: "language-menu" }),
|
|
390
|
+
], h("slot", { key: 'd91059cc4dd4529040aa6436db46f66f2db84e71', name: "post-login" }), this.hasNavigation && this.device !== 'desktop' && (h("div", { key: 'f97161e09b27c11c6f85d112e85a59ddf2925aec', onClick: () => this.toggleBurgerMenu(), class: "burger-menu-toggle" }, h("slot", { key: '18304b858fa2173b63e842ba4d0512bd438a89b0', name: "post-togglebutton" }))), this.hasNavigation && this.device !== 'desktop' && (h("post-togglebutton", { key: '0599e4d106262b7be6557b476becacaf9f5656ba', ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, h("span", { key: '3f3578f6172a9d87c531b5bef6a201b255042511' }, this.textMenu), h("post-icon", { key: '7a92cec5793716225cf9dc4646ccff585e02723b', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), h("post-icon", { key: '9170844d117e8f0bf7f35049debe973ff391158e', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" }))))), h("div", { key: 'db13d084905b4633595bb1d4d83cc88c82c3c679', ref: el => (this.localHeader = el), class: {
|
|
391
|
+
'local-header': true,
|
|
392
|
+
'no-title': !this.hasTitle,
|
|
393
|
+
'no-audience': !this.hasAudience,
|
|
394
|
+
'no-navigation': this.device !== 'desktop' || !this.hasNavigation,
|
|
395
|
+
'no-local-nav': !this.hasLocalNav,
|
|
396
|
+
} }, h("slot", { key: 'f6fb25aef128bf1712995427014c5ff62c3710d0', name: "title" }), this.hasTitle && h("slot", { key: '8cba1c7b544d950140d59336baaf7398a4fb23d8', name: "local-nav" }), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation())));
|
|
348
397
|
}
|
|
349
398
|
get host() { return getElement(this); }
|
|
350
399
|
static get watchers() { return {
|
|
400
|
+
"textMenu": ["validateTextMenu"],
|
|
351
401
|
"device": ["lockBody"],
|
|
352
|
-
"
|
|
402
|
+
"burgerMenuExtended": ["lockBody"]
|
|
353
403
|
}; }
|
|
354
404
|
};
|
|
355
405
|
__decorate$3([
|
|
356
406
|
EventFrom('post-megadropdown')
|
|
357
|
-
], PostHeader.prototype, "megadropdownStateHandler",
|
|
407
|
+
], PostHeader.prototype, "megadropdownStateHandler", null);
|
|
358
408
|
PostHeader.style = postHeaderCss;
|
|
359
409
|
|
|
360
410
|
const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
|
|
@@ -419,9 +469,11 @@ const PostIcon = class {
|
|
|
419
469
|
const baseHref = IS_BROWSER
|
|
420
470
|
? document.querySelector('base[href]')?.getAttribute('href') || ''
|
|
421
471
|
: '';
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
472
|
+
let metaIconBase = '';
|
|
473
|
+
if (IS_BROWSER) {
|
|
474
|
+
const metaTag = document.querySelector('meta[name="design-system-settings"]');
|
|
475
|
+
metaIconBase = metaTag?.getAttribute('data-post-icon-base') || '';
|
|
476
|
+
}
|
|
425
477
|
// Function to build the first part of the URL when 'this.base' or 'metaIconBase' are relative
|
|
426
478
|
const buildUrlWithBase = (relativeUrl) => {
|
|
427
479
|
const normalizedHref = normalizeUrl(baseHref);
|
|
@@ -468,7 +520,7 @@ const PostIcon = class {
|
|
|
468
520
|
this.validateAnimation();
|
|
469
521
|
}
|
|
470
522
|
render() {
|
|
471
|
-
return (h(Host, { key: '
|
|
523
|
+
return (h(Host, { key: '6469b748f2792c383593dacd1d9f1f17daf9cde0', "data-version": version }, h("span", { key: '9f4d9766dc97a07a2562dbc3bb0931de29fe9757', style: this.getStyles() })));
|
|
472
524
|
}
|
|
473
525
|
get host() { return getElement(this); }
|
|
474
526
|
static get watchers() { return {
|
|
@@ -483,70 +535,7 @@ PostIcon.style = postIconCss;
|
|
|
483
535
|
|
|
484
536
|
const SWITCH_VARIANTS = ['list', 'menu'];
|
|
485
537
|
|
|
486
|
-
const
|
|
487
|
-
|
|
488
|
-
const PostLanguageOption = class {
|
|
489
|
-
constructor(hostRef) {
|
|
490
|
-
registerInstance(this, hostRef);
|
|
491
|
-
this.postChange = createEvent(this, "postChange");
|
|
492
|
-
this.postLanguageOptionInitiallyActive = createEvent(this, "postLanguageOptionInitiallyActive");
|
|
493
|
-
}
|
|
494
|
-
validateCode() {
|
|
495
|
-
checkRequiredAndType(this, 'code', 'string');
|
|
496
|
-
}
|
|
497
|
-
validateVariant() {
|
|
498
|
-
checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
|
|
499
|
-
}
|
|
500
|
-
validateName() {
|
|
501
|
-
checkEmptyOrType(this, 'name', 'string');
|
|
502
|
-
}
|
|
503
|
-
validateUrl() {
|
|
504
|
-
checkEmptyOrUrl(this, 'url');
|
|
505
|
-
}
|
|
506
|
-
componentDidLoad() {
|
|
507
|
-
this.validateCode();
|
|
508
|
-
this.validateName();
|
|
509
|
-
this.validateUrl();
|
|
510
|
-
if (!this.name && this.isNameRequired()) {
|
|
511
|
-
throw new Error('The "name" property of the post-language-option component is required when the full language name is not displayed.');
|
|
512
|
-
}
|
|
513
|
-
if (this.active) {
|
|
514
|
-
this.postLanguageOptionInitiallyActive.emit(this.code);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
/**
|
|
518
|
-
* Selects the language option programmatically.
|
|
519
|
-
*/
|
|
520
|
-
async select() {
|
|
521
|
-
this.active = true;
|
|
522
|
-
this.emitChange();
|
|
523
|
-
}
|
|
524
|
-
emitChange() {
|
|
525
|
-
this.postChange.emit(this.code);
|
|
526
|
-
}
|
|
527
|
-
isNameRequired() {
|
|
528
|
-
return this.host.textContent.toLowerCase() === this.code.toLowerCase();
|
|
529
|
-
}
|
|
530
|
-
render() {
|
|
531
|
-
const lang = this.code.toLowerCase();
|
|
532
|
-
const emitOnKeyDown = (e) => {
|
|
533
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
534
|
-
this.emitChange();
|
|
535
|
-
}
|
|
536
|
-
};
|
|
537
|
-
return (h(Host, { key: 'b86bf33feb890e5dfbfae16f45ce2e56fdfaf16a', "data-version": version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)))));
|
|
538
|
-
}
|
|
539
|
-
get host() { return getElement(this); }
|
|
540
|
-
static get watchers() { return {
|
|
541
|
-
"code": ["validateCode"],
|
|
542
|
-
"variant": ["validateVariant"],
|
|
543
|
-
"name": ["validateName"],
|
|
544
|
-
"url": ["validateUrl"]
|
|
545
|
-
}; }
|
|
546
|
-
};
|
|
547
|
-
PostLanguageOption.style = postLanguageOptionCss;
|
|
548
|
-
|
|
549
|
-
const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px 10px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{background-color:ButtonFace !important}.post-language-switch-trigger:hover{background-color:Highlight !important}}.post-language-switch-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-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)}.post-language-switch-trigger post-icon{height:24px;width:24px}.post-language-switch-trigger[aria-expanded=true]{background-color:#050400;color:#fff}.post-language-switch-trigger[aria-expanded=true] post-icon{transform:rotate(180deg)}.post-language-switch-trigger[aria-expanded=true]:hover{background-color:#504f4b;color:#fff}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{border:1px solid ButtonBorder}.post-language-switch-trigger[aria-expanded=true] post-icon,.post-language-switch-trigger:hover post-icon{color:HighlightText}}post-menu::part(menu){padding-block:0}";
|
|
538
|
+
const postLanguageMenuCss = ":host{display:flex !important}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.post-language-menu-dropdown-container{display:flex;flex-direction:column}.post-language-menu-trigger{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);text-transform:uppercase;cursor:pointer}.post-language-menu-trigger:hover{text-decoration:none}.post-language-menu-trigger:disabled{border-style:var(--post-core-border-style-dash)}.post-language-menu-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-menu-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-menu-trigger: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){.post-language-menu-trigger:is(a){color:LinkText;border:unset}.post-language-menu-trigger:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.post-language-menu-trigger:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.post-language-menu-trigger: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)}.post-language-menu-trigger: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)}.post-language-menu-trigger: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)}.post-language-menu-trigger post-icon{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.post-language-menu-trigger:is([aria-current],[aria-pressed=true],[aria-expanded=true]) post-icon{transform:rotate(180deg)}post-menu::part(post-menu){padding-block:0}.post-language-menu-list{margin-top:1rem}";
|
|
550
539
|
|
|
551
540
|
var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
552
541
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -558,7 +547,7 @@ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators,
|
|
|
558
547
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
559
548
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
560
549
|
};
|
|
561
|
-
const
|
|
550
|
+
const PostLanguageMenu = class {
|
|
562
551
|
constructor(hostRef) {
|
|
563
552
|
registerInstance(this, hostRef);
|
|
564
553
|
this.menuId = `p${nanoid(11)}`;
|
|
@@ -569,13 +558,13 @@ const PostLanguageSwitch = class {
|
|
|
569
558
|
this.variant = 'list';
|
|
570
559
|
}
|
|
571
560
|
get languageOptions() {
|
|
572
|
-
return Array.from(this.host.querySelectorAll('post-language-
|
|
561
|
+
return Array.from(this.host.querySelectorAll('post-language-menu-item'));
|
|
573
562
|
}
|
|
574
563
|
validateCaption() {
|
|
575
|
-
checkRequiredAndType(this, '
|
|
564
|
+
checkRequiredAndType(this, 'textChangeLanguage', 'string');
|
|
576
565
|
}
|
|
577
566
|
validateDescription() {
|
|
578
|
-
checkRequiredAndType(this, '
|
|
567
|
+
checkRequiredAndType(this, 'textCurrentLanguage', 'string');
|
|
579
568
|
}
|
|
580
569
|
validateVariant() {
|
|
581
570
|
checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
|
|
@@ -590,11 +579,11 @@ const PostLanguageSwitch = class {
|
|
|
590
579
|
this.updateChildrenVariant();
|
|
591
580
|
}
|
|
592
581
|
/**
|
|
593
|
-
* Listen for the postChange event and guard it to run only for events originating from a <post-language-
|
|
582
|
+
* Listen for the postChange event and guard it to run only for events originating from a <post-language-menu-item> element.
|
|
594
583
|
*/
|
|
595
584
|
handlePostChange(event) {
|
|
596
585
|
this.activeLang = event.detail;
|
|
597
|
-
// Update the active state in the children post-language-
|
|
586
|
+
// Update the active state in the children post-language-menu-item components
|
|
598
587
|
this.languageOptions.forEach(lang => {
|
|
599
588
|
if (lang.code && lang.code === this.activeLang) {
|
|
600
589
|
lang.setAttribute('active', '');
|
|
@@ -611,90 +600,102 @@ const PostLanguageSwitch = class {
|
|
|
611
600
|
}
|
|
612
601
|
/**
|
|
613
602
|
* Handles cases where the language switch is being rendered before options are available
|
|
614
|
-
* @param event Initially emitted by <post-
|
|
603
|
+
* @param event Initially emitted by <post-language-menu-item>
|
|
615
604
|
*/
|
|
616
605
|
handleInitiallyActive(event) {
|
|
617
606
|
this.activeLang = event.detail;
|
|
618
607
|
}
|
|
619
|
-
// Update post-language-
|
|
608
|
+
// Update post-language-menu-item variant to have the correct style
|
|
620
609
|
updateChildrenVariant() {
|
|
621
610
|
this.languageOptions.forEach(el => {
|
|
622
611
|
el.setAttribute('variant', this.variant);
|
|
623
612
|
});
|
|
624
613
|
}
|
|
625
614
|
renderList() {
|
|
626
|
-
return (h(Host, { "data-version": version }, h("div", { class: "post-language-
|
|
615
|
+
return (h(Host, { "data-version": version }, h("div", { class: "post-language-menu-list", role: "list", "aria-label": this.textChangeLanguage, "aria-describedby": this.listSpanId }, h("span", { id: this.listSpanId, class: "visually-hidden" }, this.textCurrentLanguage), h("slot", null))));
|
|
627
616
|
}
|
|
628
617
|
renderDropdown() {
|
|
629
|
-
return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-
|
|
618
|
+
return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-menu-trigger" }, this.activeLang, h("span", { class: "visually-hidden" }, this.textChangeLanguage), h("span", { class: "visually-hidden" }, this.textCurrentLanguage), h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), h("post-menu", { id: this.menuId, class: "post-language-menu-dropdown-container", label: this.textChangeLanguage, placement: "bottom-end" }, h("slot", null))));
|
|
630
619
|
}
|
|
631
620
|
render() {
|
|
632
621
|
return this.variant === 'list' ? this.renderList() : this.renderDropdown();
|
|
633
622
|
}
|
|
634
623
|
get host() { return getElement(this); }
|
|
635
624
|
static get watchers() { return {
|
|
636
|
-
"
|
|
637
|
-
"
|
|
625
|
+
"textChangeLanguage": ["validateCaption"],
|
|
626
|
+
"textCurrentLanguage": ["validateDescription"],
|
|
638
627
|
"variant": ["validateVariant"]
|
|
639
628
|
}; }
|
|
640
629
|
};
|
|
641
630
|
__decorate$2([
|
|
642
|
-
EventFrom('post-language-
|
|
643
|
-
],
|
|
644
|
-
|
|
631
|
+
EventFrom('post-language-menu-item')
|
|
632
|
+
], PostLanguageMenu.prototype, "handlePostChange", null);
|
|
633
|
+
PostLanguageMenu.style = postLanguageMenuCss;
|
|
645
634
|
|
|
646
|
-
const
|
|
635
|
+
const postLanguageMenuItemCss = "post-language-menu-item{display:inline-block}post-language-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item button{background-color:ButtonFace !important}post-language-menu-item button:hover{background-color:Highlight !important}}post-language-menu-item button .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-language-menu-item a{color:var(--post-current-fg);text-decoration:none}post-language-menu-item :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase}post-language-menu-item :is(a,button){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-menu-item:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-menu-item:where([variant=list]) :is(a,button):hover{color:#504f4b}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list]) :is(a,button){border:1px solid ButtonBorder;color:ButtonText}}post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-language-menu-item:where([variant=list])[active]:not([active=false]) :is(a,button){background-color:Highlight !important;color:HighlightText}}post-language-menu-item:where([variant=menu]){min-width:72px}post-language-menu-item:where([variant=menu])[active]:not([active=false]){display:none}post-language-menu-item:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:16px;box-sizing:border-box;justify-content:flex-start;position:relative;border-radius:0}post-language-menu-item:where([variant=menu]) :is(a,button):hover{color:#fff;background-color:#504f4b}post-language-menu-item:where([variant=menu]):first-child :is(a,button){border-start-start-radius:4px;border-start-end-radius:4px}post-language-menu-item:where([variant=menu]):last-child :is(a,button){border-end-start-radius:4px;border-end-end-radius:4px}";
|
|
647
636
|
|
|
648
|
-
const
|
|
637
|
+
const PostLanguageMenuItem = class {
|
|
649
638
|
constructor(hostRef) {
|
|
650
639
|
registerInstance(this, hostRef);
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
*/
|
|
654
|
-
this.titleHidden = false;
|
|
655
|
-
/**
|
|
656
|
-
* The list can become horizontal by setting `horizontal="true"` or just `horizontal`
|
|
657
|
-
*/
|
|
658
|
-
this.horizontal = false;
|
|
640
|
+
this.postChange = createEvent(this, "postChange");
|
|
641
|
+
this.postLanguageMenuItemInitiallyActive = createEvent(this, "postLanguageMenuItemInitiallyActive");
|
|
659
642
|
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
* Get the id set on the host element or use a random id by default
|
|
663
|
-
*/
|
|
664
|
-
this.titleId = `title-${this.host.id || nanoid(6)}`;
|
|
643
|
+
validateCode() {
|
|
644
|
+
checkRequiredAndType(this, 'code', 'string');
|
|
665
645
|
}
|
|
666
|
-
|
|
667
|
-
this
|
|
646
|
+
validateVariant() {
|
|
647
|
+
checkEmptyOrOneOf(this, 'variant', SWITCH_VARIANTS);
|
|
648
|
+
}
|
|
649
|
+
validateName() {
|
|
650
|
+
checkEmptyOrType(this, 'name', 'string');
|
|
668
651
|
}
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
652
|
+
validateUrl() {
|
|
653
|
+
checkEmptyOrUrl(this, 'url');
|
|
654
|
+
}
|
|
655
|
+
componentDidLoad() {
|
|
656
|
+
this.validateCode();
|
|
657
|
+
this.validateName();
|
|
658
|
+
this.validateUrl();
|
|
659
|
+
if (!this.name && this.isNameRequired()) {
|
|
660
|
+
throw new Error('The "name" property of the post-language-menu-item component is required when the full language name is not displayed.');
|
|
661
|
+
}
|
|
662
|
+
if (this.active) {
|
|
663
|
+
this.postLanguageMenuItemInitiallyActive.emit(this.code);
|
|
672
664
|
}
|
|
673
665
|
}
|
|
674
|
-
|
|
675
|
-
|
|
666
|
+
/**
|
|
667
|
+
* Selects the language option programmatically.
|
|
668
|
+
*/
|
|
669
|
+
async select() {
|
|
670
|
+
this.active = true;
|
|
671
|
+
this.emitChange();
|
|
676
672
|
}
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
PostList.style = postListCss;
|
|
680
|
-
|
|
681
|
-
const postListItemCss = ":host{display:flex}";
|
|
682
|
-
|
|
683
|
-
const PostListItem = class {
|
|
684
|
-
constructor(hostRef) {
|
|
685
|
-
registerInstance(this, hostRef);
|
|
673
|
+
emitChange() {
|
|
674
|
+
this.postChange.emit(this.code);
|
|
686
675
|
}
|
|
687
|
-
|
|
688
|
-
this.host.
|
|
676
|
+
isNameRequired() {
|
|
677
|
+
return this.host.textContent.toLowerCase() === this.code.toLowerCase();
|
|
689
678
|
}
|
|
690
679
|
render() {
|
|
691
|
-
|
|
680
|
+
const lang = this.code.toLowerCase();
|
|
681
|
+
const emitOnKeyDown = (e) => {
|
|
682
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
683
|
+
this.emitChange();
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
return (h(Host, { key: '0a0f6a2e04d61991696e86fa9a20b34d154e89ac', "data-version": version, role: this.variant === 'list' ? 'listitem' : undefined }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name))) : (h("button", { "aria-current": this.active ? 'true' : undefined, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null), h("span", { class: "visually-hidden" }, this.name)))));
|
|
692
687
|
}
|
|
693
688
|
get host() { return getElement(this); }
|
|
689
|
+
static get watchers() { return {
|
|
690
|
+
"code": ["validateCode"],
|
|
691
|
+
"variant": ["validateVariant"],
|
|
692
|
+
"name": ["validateName"],
|
|
693
|
+
"url": ["validateUrl"]
|
|
694
|
+
}; }
|
|
694
695
|
};
|
|
695
|
-
|
|
696
|
+
PostLanguageMenuItem.style = postLanguageMenuItemCss;
|
|
696
697
|
|
|
697
|
-
const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{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}.logo-link: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){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link: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){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link :focus,:focus-visible{border-radius
|
|
698
|
+
const postLogoCss = ":host,.logo{display:inline-block}:host,:host .logo>svg,.logo,.logo .logo>svg{height:100%}.description{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.logo-link{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}.logo-link: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){.logo-link:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.logo-link: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){.logo-link:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.logo-link{outline-offset:calc(\n -2px - var(--post-device-border-width-focus)\n ) !important}.logo-link :focus,:focus-visible{border-radius:.5rem}";
|
|
698
699
|
|
|
699
700
|
const PostLogo = class {
|
|
700
701
|
constructor(hostRef) {
|
|
@@ -715,7 +716,7 @@ const PostLogo = class {
|
|
|
715
716
|
render() {
|
|
716
717
|
const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
|
|
717
718
|
const LogoTag = logoLink ? 'a' : 'span';
|
|
718
|
-
return (h(Host, { key: '
|
|
719
|
+
return (h(Host, { key: '39444d3dd1a87425c7134de5af6ad623a68197c0', "data-version": version }, h(LogoTag, { key: '8f41d8c85212f7fde23c11fa0a0fb506deb5e0c9', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, h("span", { key: '06b777726f42914b941a980bce9dd4ba3dc3637e', class: "description" }, h("slot", { key: 'd95f99a2d3b09ffab6d0e7c11b99178d6c1fb7ef', onSlotchange: () => this.checkDescription() })), h("svg", { key: '57fa969750327b0907cd3f5abefd14b52d176dd8', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, h("g", { key: '61172060743d8d155bcde7d636da3c5569ec1951', id: "Logo" }, h("rect", { key: 'ef042aea64e01c52d241ff599290646af309f868', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), h("polygon", { key: 'ef5b2d4666dc676157fddacfe9b3f15c017e2e02', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), h("path", { key: '816fd96b39a89ba22571e7e3257758e39b2599b0', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
|
|
719
720
|
}
|
|
720
721
|
get host() { return getElement(this); }
|
|
721
722
|
static get watchers() { return {
|
|
@@ -724,25 +725,27 @@ const PostLogo = class {
|
|
|
724
725
|
};
|
|
725
726
|
PostLogo.style = postLogoCss;
|
|
726
727
|
|
|
727
|
-
const postMainnavigationCss = ":root{--post-icon-chevrondown:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbmRvd24iPjxzeW1ib2wgaWQ9InMxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNMi4wMSA1LjIyYzAtLjE5LjA3LS4zOC4yMi0uNTMuMjktLjI5Ljc3LS4yOSAxLjA2IDBsNC43MiA0LjcyIDQuNzItNC43MmMuMjktLjI5Ljc3LS4yOSAxLjA2IDBzLjI5Ljc3IDAgMS4wNmwtNS43OCA1Ljc4LTUuNzgtNS43OGEuNzQuNzQgMCAwIDEtLjIyLS41MyIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InMyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMy4yNiA3Ljg1YzAtLjIyLjA4LS40NS4yNi0uNjIuMzQtLjM0LjktLjM0IDEuMjQgMGw3LjI2IDcuMjYgNy4yNi03LjI2Yy4zNC0uMzQuOS0uMzQgMS4yNCAwcy4zNC45IDAgMS4yNGwtOC41IDguNS04LjUxLTguNWEuOS45IDAgMCAxLS4yNi0uNjJaIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczMyIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik00LjUgMTAuNTRjMC0uMjYuMS0uNTEuMjktLjcxYS45OTYuOTk2IDAgMCAxIDEuNDEgMGw5Ljc5IDkuNzkgOS44LTkuOGEuOTk2Ljk5NiAwIDEgMSAxLjQxIDEuNDFMMTUuOTkgMjIuNDQgNC44IDExLjI1Yy0uMi0uMi0uMjktLjQ1LS4yOS0uNzFaIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczQwIiB2aWV3Qm94PSIwIDAgNDAgNDAiPjxwYXRoIGQ9Ik01LjggMTMuMTdhMS4xMjMgMS4xMjMgMCAwIDEgMS45Mi0uOEwyMC4wNSAyNC43bDEyLjM0LTEyLjM0Yy40NC0uNDQgMS4xNS0uNDQgMS41OSAwcy40NCAxLjE1IDAgMS41OUwyMC4wNSAyNy44OCA2LjEzIDEzLjk3Yy0uMjItLjIyLS4zMy0uNTEtLjMzLS44Ii8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczQ4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik03IDE1Ljg3YzAtLjMyLjEyLS42NC4zNy0uODhhMS4yNSAxLjI1IDAgMCAxIDEuNzcgMGwxNC44NyAxNC44NyAxNC44OC0xNC44OGMuNDktLjQ5IDEuMjgtLjQ5IDEuNzcgMHMuNDkgMS4yOCAwIDEuNzdMMjQuMDIgMzMuMzkgNy4zNyAxNi43NWMtLjI0LS4yNC0uMzctLjU2LS4zNy0uODgiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHBhdGggZD0iTTkuNjMgMjEuMjRhMS4zOCAxLjM4IDAgMCAxIDIuMzUtLjk3TDMyLjAxIDQwLjNsMjAuMDQtMjAuMDRjLjU0LS41NCAxLjQxLS41NCAxLjk1IDBzLjU0IDEuNDEgMCAxLjk1TDMyLjAxIDQ0LjE5IDEwLjAzIDIyLjIyYy0uMjctLjI3LS40LS42Mi0uNC0uOTdaTTAgLjAzaDY0djY0SDB6Ii8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25kb3duIi8+PC9nPjwvc3ZnPg==\")}post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:var(--post-icon-chevrondown);background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:flex;overflow:hidden;height:var(--post-main-navigation-height, 0);background:#fff;user-select:none}post-mainnavigation nav{flex:1 1 auto;overflow:hidden;scroll-behavior:smooth}post-mainnavigation .scroll-control{cursor:pointer;z-index:5;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}post-mainnavigation .scroll-control.scroll-left{margin-inline-end:-3rem}post-mainnavigation .scroll-control.scroll-right{margin-inline-start:-3rem}post-mainnavigation .scroll-control.d-none{display:none}post-mainnavigation .scroll-control post-icon{font-size:1rem}post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--post-main-navigation-height, 0);gap:4px;font-size:16px;z-index:4}}@media screen and (min-width: 1024px)and (max-width: 1023.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{z-index:5}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a.active,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.active,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *),post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.active .nav-el-active,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.active .nav-el-active,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.active .nav-el-inactive,post-mainnavigation post-list-item>a[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.active .nav-el-inactive,post-mainnavigation post-list-item>button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.active .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page]:not(post-megadropdown *) .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)).active,post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-current=page],post-mainnavigation post-megadropdown button:not(:is(post-closebutton *))[aria-expanded=true],post-mainnavigation post-megadropdown a.active,post-mainnavigation post-megadropdown a[aria-current=page],post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(:is(post-closebutton *)):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .scroll-control{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.active,post-mainnavigation post-list-item>a[aria-current=page],post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.active,post-mainnavigation post-list-item>button[aria-current=page],post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-current=page],post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}";
|
|
728
|
+
const postMainnavigationCss = ":host{display:flex;user-select:none}@media screen and (min-width: 1024px){:host{overflow:hidden}}nav{flex:1 1 auto}@media screen and (min-width: 1024px){nav{scroll-behavior:smooth;max-width:100vw;overflow:hidden;height:var(--post-main-navigation-height)}}.scroll-control{z-index:1;cursor:pointer;padding:1rem;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}.scroll-control.scroll-left{margin-inline-end:-3rem}.scroll-control.scroll-right{margin-inline-start:-3rem}.scroll-control.d-none{display:none}.scroll-control post-icon{font-size:1rem}";
|
|
728
729
|
|
|
729
730
|
const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
|
|
730
731
|
const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
|
|
731
732
|
const PostMainnavigation = class {
|
|
733
|
+
validateTextMain() {
|
|
734
|
+
checkRequiredAndType(this, 'textMain', 'string');
|
|
735
|
+
}
|
|
732
736
|
constructor(hostRef) {
|
|
733
737
|
registerInstance(this, hostRef);
|
|
734
738
|
this.canScrollLeft = false;
|
|
735
739
|
this.canScrollRight = false;
|
|
736
740
|
this.scrollRight = this.scrollRight.bind(this);
|
|
737
741
|
this.scrollLeft = this.scrollLeft.bind(this);
|
|
738
|
-
this.handleMutations = this.handleMutations.bind(this);
|
|
739
742
|
this.checkScrollability = this.checkScrollability.bind(this);
|
|
740
743
|
this.resizeObserver = new ResizeObserver(this.checkScrollability);
|
|
741
|
-
this.mutationObserver = new MutationObserver(this.
|
|
744
|
+
this.mutationObserver = new MutationObserver(this.checkScrollability);
|
|
742
745
|
}
|
|
743
746
|
componentDidLoad() {
|
|
747
|
+
this.validateTextMain();
|
|
744
748
|
setTimeout(() => {
|
|
745
|
-
this.fixLayoutShift();
|
|
746
749
|
this.checkScrollability();
|
|
747
750
|
});
|
|
748
751
|
// Observe the navbar for size changes
|
|
@@ -767,30 +770,8 @@ const PostMainnavigation = class {
|
|
|
767
770
|
if (this.scrollRepeatInterval)
|
|
768
771
|
clearInterval(this.scrollRepeatInterval);
|
|
769
772
|
}
|
|
770
|
-
async handleMutations(mutations) {
|
|
771
|
-
const addedNodes = mutations.flatMap((mutation) => {
|
|
772
|
-
return Array.from(mutation.addedNodes);
|
|
773
|
-
});
|
|
774
|
-
// Wait for all elements to be hydrated
|
|
775
|
-
await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
|
|
776
|
-
this.fixLayoutShift();
|
|
777
|
-
this.checkScrollability();
|
|
778
|
-
}
|
|
779
773
|
get navigationItems() {
|
|
780
|
-
return Array.from(this.
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Hack to fix the layout shift due to bold text on active elements
|
|
784
|
-
*/
|
|
785
|
-
fixLayoutShift() {
|
|
786
|
-
this.navigationItems
|
|
787
|
-
.filter(item => !item.matches(':has(.nav-el-active)'))
|
|
788
|
-
.forEach(item => {
|
|
789
|
-
item.innerHTML = `
|
|
790
|
-
<span class="nav-el-active">${item.innerHTML}</span>
|
|
791
|
-
<span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
|
|
792
|
-
`;
|
|
793
|
-
});
|
|
774
|
+
return Array.from(this.host.querySelectorAll('a:not(post-megadropdown *), post-megadropdown-trigger'));
|
|
794
775
|
}
|
|
795
776
|
/**
|
|
796
777
|
* Returns whether scrolling is enabled in either the left or right direction.
|
|
@@ -829,7 +810,7 @@ const PostMainnavigation = class {
|
|
|
829
810
|
}, SCROLL_REPEAT_INTERVAL);
|
|
830
811
|
}
|
|
831
812
|
scrollRight() {
|
|
832
|
-
const scrollRightLeftEdge =
|
|
813
|
+
const scrollRightLeftEdge = this.host.shadowRoot
|
|
833
814
|
.querySelector('.scroll-right')
|
|
834
815
|
.getBoundingClientRect().left;
|
|
835
816
|
for (const navigationItem of this.navigationItems) {
|
|
@@ -843,7 +824,7 @@ const PostMainnavigation = class {
|
|
|
843
824
|
}
|
|
844
825
|
}
|
|
845
826
|
scrollLeft() {
|
|
846
|
-
const scrollLeftRightEdge =
|
|
827
|
+
const scrollLeftRightEdge = this.host.shadowRoot
|
|
847
828
|
.querySelector('.scroll-left')
|
|
848
829
|
.getBoundingClientRect().right;
|
|
849
830
|
for (const navigationItem of this.navigationItems.reverse()) {
|
|
@@ -869,17 +850,38 @@ const PostMainnavigation = class {
|
|
|
869
850
|
}, NAVBAR_DISABLE_DURATION);
|
|
870
851
|
}
|
|
871
852
|
render() {
|
|
872
|
-
return (h(Host, { key: '
|
|
853
|
+
return (h(Host, { key: '14ca9714f09e1dbbe8c976b8947db07906ec2eb8', version: version, class: this.canScroll ? 'scrollable' : '' }, h("div", { key: 'e886823d21e52db04afc91ecbd12149c47d69038', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, h("post-icon", { key: '3afd56232da3cf120038b68c714c560db16ac30e', "aria-hidden": "true", name: "chevronleft" })), h("nav", { key: '69c39d75c1f90f01c12904c98fc6e3f8de2ba09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, h("slot", { key: '9251d7cec53c05bf9146d0b2c75533c50f7fe070' })), h("div", { key: '649e7ec3c9f65447a2da965bb7fe0c92b3ff8207', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, h("post-icon", { key: 'ac2823ab5195c59ea2831ffb24a1d8a033f7266a', "aria-hidden": "true", name: "chevronright" }))));
|
|
873
854
|
}
|
|
855
|
+
get host() { return getElement(this); }
|
|
856
|
+
static get watchers() { return {
|
|
857
|
+
"textMain": ["validateTextMain"]
|
|
858
|
+
}; }
|
|
874
859
|
};
|
|
875
860
|
PostMainnavigation.style = postMainnavigationCss;
|
|
876
861
|
|
|
877
|
-
const postMegadropdownCss = "
|
|
862
|
+
const postMegadropdownCss = "*,::before,::after{box-sizing:border-box}.megadropdown{position:absolute;inset-inline:0;overflow-y:auto;background-color:#fafafa;box-shadow:var(--post-device-elevation-300)}@media screen and (min-width: 1024px){.megadropdown{z-index:-1;inset-block-start:100%;max-height:calc(100vh - var(--post-header-height) - 3rem);padding:2rem 2.5rem 2.5rem}.megadropdown.slide-in{animation:slide-down 350ms forwards}.megadropdown.slide-out{animation:slide-up 350ms forwards}}@media screen and (max-width: 1023.98px){.megadropdown{z-index:1;inset-block-start:var(--post-header-navigation-current-inset);overscroll-behavior:contain;height:calc(min(var(--post-header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));padding-inline:var(--post-burger-menu-padding-inline);padding-block:1.5rem;display:flex;flex-direction:column}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown{border-block-end:1px solid CanvasText}}.megadropdown-title{margin-block:0 1rem;font-weight:950}@media screen and (min-width: 600px)and (max-width: 1023.98px){.megadropdown-title{font-size:1.25rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.megadropdown-title{font-size:1.125rem}}.back-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;min-height:var(--post-device-sizing-interactive-button-height-4);gap:var(--post-device-spacing-gap-inline-11);padding:0 var(--post-device-spacing-padding-inline-7);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);order:-1;width:fit-content;padding-inline:0}.back-button:hover{text-decoration:none}.back-button:disabled{border-style:var(--post-core-border-style-dash)}.back-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}.back-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){.back-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.back-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){.back-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){.back-button:is(a){color:LinkText;border:unset}.back-button:is(button){background-color:ButtonFace !important;border:1px solid ButtonBorder !important}.back-button:not(:disabled,.disabled):is(button):hover{background-color:Highlight !important}.back-button:not(:disabled,.disabled):is(button):hover>post-icon{color:HighlightText !important}}.back-button>post-icon{width:var(--post-device-sizing-interactive-button-icon-5);height:var(--post-device-sizing-interactive-button-icon-5)}.back-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)}@media screen and (min-width: 600px)and (max-width: 1023.98px){.back-button{margin-block-end:2rem}}@media screen and (min-width: 0)and (max-width: 599.98px){.back-button{margin-block-end:1.5rem}}.close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.close-button{display:none}}";
|
|
878
863
|
|
|
879
864
|
const PostMegadropdown = class {
|
|
865
|
+
validateTextClose() {
|
|
866
|
+
checkRequiredAndType(this, 'textClose', 'string');
|
|
867
|
+
}
|
|
868
|
+
validateTextBack() {
|
|
869
|
+
checkRequiredAndType(this, 'textBack', 'string');
|
|
870
|
+
}
|
|
871
|
+
get megadropdownTrigger() {
|
|
872
|
+
const hostId = this.host.getAttribute('id');
|
|
873
|
+
return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
|
|
874
|
+
}
|
|
880
875
|
constructor(hostRef) {
|
|
881
876
|
registerInstance(this, hostRef);
|
|
882
877
|
this.postToggleMegadropdown = createEvent(this, "postToggleMegadropdown");
|
|
878
|
+
this.currentAnimation = null;
|
|
879
|
+
this.isAnimating = false;
|
|
880
|
+
this.fsAnimationOptions = {
|
|
881
|
+
translate: -10,
|
|
882
|
+
duration: 350,
|
|
883
|
+
easing: 'headerEase',
|
|
884
|
+
};
|
|
883
885
|
this.device = breakpoint.get('device');
|
|
884
886
|
/**
|
|
885
887
|
* Holds the current visibility state of the dropdown.
|
|
@@ -890,13 +892,17 @@ const PostMegadropdown = class {
|
|
|
890
892
|
this.trigger = false;
|
|
891
893
|
/** Holds the current animation class. */
|
|
892
894
|
this.animationClass = null;
|
|
893
|
-
this.handleClickOutside = (event) => {
|
|
895
|
+
this.handleClickOutside = async (event) => {
|
|
894
896
|
if (this.device !== 'desktop')
|
|
895
897
|
return;
|
|
896
898
|
const target = event.target;
|
|
897
899
|
if (this.host.contains(target)) {
|
|
898
900
|
return;
|
|
899
901
|
}
|
|
902
|
+
// Ignore clicks on the trigger or its contents to prevent running hide() twice
|
|
903
|
+
if (this.megadropdownTrigger.contains(target)) {
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
900
906
|
if (target instanceof HTMLElement) {
|
|
901
907
|
const trigger = target.closest('post-megadropdown-trigger');
|
|
902
908
|
if (trigger) {
|
|
@@ -906,14 +912,11 @@ const PostMegadropdown = class {
|
|
|
906
912
|
}
|
|
907
913
|
}
|
|
908
914
|
}
|
|
909
|
-
this.hide(false);
|
|
915
|
+
await this.hide(false);
|
|
910
916
|
};
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
return hostId
|
|
915
|
-
? document.querySelector(`post-megadropdown-trigger[for="${hostId}"] > button`)
|
|
916
|
-
: null;
|
|
917
|
+
this.keyboardHandler = this.keyboardHandler.bind(this);
|
|
918
|
+
this.handleTabOutside = this.handleTabOutside.bind(this);
|
|
919
|
+
this.handleClickOutside = this.handleClickOutside.bind(this);
|
|
917
920
|
}
|
|
918
921
|
connectedCallback() {
|
|
919
922
|
window.addEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
|
|
@@ -922,16 +925,17 @@ const PostMegadropdown = class {
|
|
|
922
925
|
this.getFocusableElements();
|
|
923
926
|
}
|
|
924
927
|
componentDidLoad() {
|
|
928
|
+
this.validateTextClose();
|
|
929
|
+
this.validateTextBack();
|
|
925
930
|
this.checkInitialAriaCurrent();
|
|
926
931
|
this.setupObserver();
|
|
927
932
|
this.handleAriaCurrentChange([]);
|
|
928
933
|
}
|
|
929
934
|
disconnectedCallback() {
|
|
930
|
-
this.removeListeners();
|
|
931
935
|
window.removeEventListener('postBreakpoint:device', this.breakpointChange.bind(this));
|
|
932
|
-
if (PostMegadropdown.activeDropdown === this)
|
|
936
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
933
937
|
PostMegadropdown.activeDropdown = null;
|
|
934
|
-
|
|
938
|
+
this.removeListeners();
|
|
935
939
|
if (this.defaultSlotObserver) {
|
|
936
940
|
this.defaultSlotObserver.disconnect();
|
|
937
941
|
}
|
|
@@ -940,41 +944,70 @@ const PostMegadropdown = class {
|
|
|
940
944
|
* Toggles the dropdown visibility based on its current state.
|
|
941
945
|
*/
|
|
942
946
|
async toggle() {
|
|
943
|
-
if (this.
|
|
944
|
-
this
|
|
945
|
-
|
|
946
|
-
else {
|
|
947
|
-
await this.show();
|
|
947
|
+
if (this.isAnimating) {
|
|
948
|
+
// If this is already animating towards a future state -> reverse intent
|
|
949
|
+
return this.isVisible ? this.show() : this.hide();
|
|
948
950
|
}
|
|
951
|
+
return this.isVisible ? this.hide() : this.show();
|
|
949
952
|
}
|
|
950
953
|
/**
|
|
951
954
|
* Displays the dropdown.
|
|
952
955
|
*/
|
|
953
956
|
async show() {
|
|
957
|
+
if (this.device !== 'desktop') {
|
|
958
|
+
const trigger = this.megadropdownTrigger;
|
|
959
|
+
if (trigger)
|
|
960
|
+
this.megadropdownTitle = trigger.innerHTML;
|
|
961
|
+
}
|
|
954
962
|
if (PostMegadropdown.activeDropdown && PostMegadropdown.activeDropdown !== this) {
|
|
955
963
|
// Close the previously active dropdown without animation
|
|
956
964
|
PostMegadropdown.activeDropdown.forceClose();
|
|
957
965
|
}
|
|
958
|
-
this.
|
|
966
|
+
this.cancelAnimation();
|
|
967
|
+
// Set the megadropdown visible and mark it as the active dropdown
|
|
959
968
|
this.isVisible = true;
|
|
960
969
|
PostMegadropdown.activeDropdown = this;
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
this.
|
|
970
|
+
// Update trigger state
|
|
971
|
+
this.postToggleMegadropdown.emit({ isVisible: true });
|
|
972
|
+
try {
|
|
973
|
+
await this.animate('in');
|
|
974
|
+
this.focusFirst();
|
|
975
|
+
// After the megadropdown has finished entry animation
|
|
976
|
+
this.addListeners();
|
|
977
|
+
}
|
|
978
|
+
catch {
|
|
979
|
+
// Open animation was cancelled - reset state
|
|
980
|
+
this.removeListeners();
|
|
981
|
+
this.isVisible = false;
|
|
982
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
983
|
+
PostMegadropdown.activeDropdown = null;
|
|
984
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: true });
|
|
965
985
|
}
|
|
966
|
-
this.addListeners();
|
|
967
986
|
}
|
|
968
987
|
/**
|
|
969
988
|
* Hides the dropdown with an animation.
|
|
970
989
|
*/
|
|
971
990
|
async hide(focusParent = true, forceClose = false) {
|
|
972
|
-
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
|
|
973
991
|
if (forceClose) {
|
|
974
992
|
this.forceClose();
|
|
993
|
+
return;
|
|
975
994
|
}
|
|
976
|
-
|
|
977
|
-
|
|
995
|
+
// Update trigger state
|
|
996
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
|
|
997
|
+
try {
|
|
998
|
+
await this.animate('out');
|
|
999
|
+
// After the closing animation finishes set the megadropdown as non visible
|
|
1000
|
+
this.isVisible = false;
|
|
1001
|
+
this.removeListeners();
|
|
1002
|
+
if (PostMegadropdown.activeDropdown === this)
|
|
1003
|
+
PostMegadropdown.activeDropdown = null;
|
|
1004
|
+
}
|
|
1005
|
+
catch {
|
|
1006
|
+
// Closing animation was cancelled - reset state
|
|
1007
|
+
PostMegadropdown.activeDropdown = this;
|
|
1008
|
+
this.addListeners();
|
|
1009
|
+
this.isVisible = true;
|
|
1010
|
+
this.postToggleMegadropdown.emit({ isVisible: true, focusParent: false });
|
|
978
1011
|
}
|
|
979
1012
|
}
|
|
980
1013
|
/**
|
|
@@ -983,68 +1016,79 @@ const PostMegadropdown = class {
|
|
|
983
1016
|
async focusFirst() {
|
|
984
1017
|
this.firstFocusableEl?.focus();
|
|
985
1018
|
}
|
|
986
|
-
breakpointChange(e) {
|
|
987
|
-
this.device = e.detail;
|
|
988
|
-
if (this.device === 'desktop' && this.isVisible) {
|
|
989
|
-
this.animationClass = null;
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
1019
|
/**
|
|
993
1020
|
* Forces the dropdown to close without animation.
|
|
994
1021
|
*/
|
|
995
1022
|
forceClose() {
|
|
996
|
-
this.isVisible = false;
|
|
997
|
-
this.animationClass = null;
|
|
998
|
-
this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
|
|
999
1023
|
this.removeListeners();
|
|
1024
|
+
this.postToggleMegadropdown.emit({ isVisible: false, focusParent: false });
|
|
1025
|
+
this.isVisible = false;
|
|
1000
1026
|
}
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
this.
|
|
1005
|
-
PostMegadropdown.activeDropdown = null;
|
|
1006
|
-
this.removeListeners();
|
|
1027
|
+
// Run the respective animation
|
|
1028
|
+
createAnimation(direction) {
|
|
1029
|
+
if (this.device === 'desktop') {
|
|
1030
|
+
return fadeSlide(this.animatedContainer, direction, this.fsAnimationOptions);
|
|
1007
1031
|
}
|
|
1032
|
+
return slide(this.animatedContainer, direction, {
|
|
1033
|
+
translate: 100,
|
|
1034
|
+
duration: 350,
|
|
1035
|
+
easing: direction === 'in' ? 'ease-in' : 'ease-out',
|
|
1036
|
+
});
|
|
1037
|
+
}
|
|
1038
|
+
async animate(direction) {
|
|
1039
|
+
this.cancelAnimation();
|
|
1040
|
+
this.currentAnimation = this.createAnimation(direction);
|
|
1041
|
+
// Flag isAnimating used to avoid toggle() de-sync
|
|
1042
|
+
this.isAnimating = true;
|
|
1043
|
+
await this.currentAnimation.finished;
|
|
1044
|
+
this.isAnimating = false;
|
|
1045
|
+
this.currentAnimation = null;
|
|
1046
|
+
}
|
|
1047
|
+
cancelAnimation() {
|
|
1048
|
+
this.currentAnimation?.cancel();
|
|
1049
|
+
this.currentAnimation = null;
|
|
1050
|
+
}
|
|
1051
|
+
breakpointChange(e) {
|
|
1052
|
+
this.device = e.detail;
|
|
1053
|
+
this.cancelAnimation();
|
|
1008
1054
|
}
|
|
1009
1055
|
addListeners() {
|
|
1010
|
-
this.host.addEventListener('keydown',
|
|
1011
|
-
document.addEventListener('keyup',
|
|
1056
|
+
this.host.addEventListener('keydown', this.keyboardHandler);
|
|
1057
|
+
document.addEventListener('keyup', this.handleTabOutside);
|
|
1012
1058
|
document.addEventListener('mousedown', this.handleClickOutside);
|
|
1013
1059
|
}
|
|
1014
1060
|
removeListeners() {
|
|
1015
|
-
this.host.removeEventListener('keydown',
|
|
1016
|
-
document.removeEventListener('keyup',
|
|
1061
|
+
this.host.removeEventListener('keydown', this.keyboardHandler);
|
|
1062
|
+
document.removeEventListener('keyup', this.handleTabOutside);
|
|
1017
1063
|
document.removeEventListener('mousedown', this.handleClickOutside);
|
|
1018
1064
|
}
|
|
1019
1065
|
getFocusableElements() {
|
|
1020
|
-
const
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
}
|
|
1027
|
-
this.firstFocusableEl = focusableChildren[0];
|
|
1028
|
-
this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
|
|
1066
|
+
const focusableElements = [
|
|
1067
|
+
...getFocusableChildren(this.host),
|
|
1068
|
+
...getFocusableChildren(this.host.shadowRoot),
|
|
1069
|
+
];
|
|
1070
|
+
this.firstFocusableEl = focusableElements[0];
|
|
1071
|
+
this.lastFocusableEl = focusableElements[focusableElements.length - 1];
|
|
1029
1072
|
}
|
|
1030
1073
|
// Loop through the focusable children
|
|
1031
1074
|
keyboardHandler(e) {
|
|
1032
|
-
if (e.key
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1075
|
+
if (e.key !== 'Tab' || this.device === 'desktop')
|
|
1076
|
+
return;
|
|
1077
|
+
const activeElement = this.host.shadowRoot.activeElement || document.activeElement;
|
|
1078
|
+
if (e.shiftKey && activeElement === this.firstFocusableEl) {
|
|
1079
|
+
// If back tab (TAB + Shift) and first element is focused, focus goes to the last element of the megadropdown
|
|
1080
|
+
e.preventDefault();
|
|
1081
|
+
this.lastFocusableEl.focus();
|
|
1082
|
+
}
|
|
1083
|
+
else if (!e.shiftKey && activeElement === this.lastFocusableEl) {
|
|
1084
|
+
// If TAB and last element is focused, focus goes back to the first element of the megadropdown
|
|
1085
|
+
e.preventDefault();
|
|
1086
|
+
this.firstFocusableEl.focus();
|
|
1043
1087
|
}
|
|
1044
1088
|
}
|
|
1045
1089
|
handleTabOutside(e) {
|
|
1046
1090
|
if (e.key === 'Tab' && this.device === 'desktop') {
|
|
1047
|
-
if (!this.host.contains(e.target)) {
|
|
1091
|
+
if (this.isVisible && !this.host.contains(e.target)) {
|
|
1048
1092
|
this.hide(false);
|
|
1049
1093
|
}
|
|
1050
1094
|
}
|
|
@@ -1070,14 +1114,8 @@ const PostMegadropdown = class {
|
|
|
1070
1114
|
*/
|
|
1071
1115
|
setTriggerActive(isActive) {
|
|
1072
1116
|
const trigger = this.megadropdownTrigger;
|
|
1073
|
-
if (
|
|
1074
|
-
|
|
1075
|
-
if (isActive) {
|
|
1076
|
-
trigger.classList.add('active');
|
|
1077
|
-
}
|
|
1078
|
-
else {
|
|
1079
|
-
trigger.classList.remove('active');
|
|
1080
|
-
}
|
|
1117
|
+
if (trigger)
|
|
1118
|
+
trigger.setAttribute('active', isActive.toString());
|
|
1081
1119
|
}
|
|
1082
1120
|
/**
|
|
1083
1121
|
* Updates the megadropdown trigger state when the megadropdown content changes.
|
|
@@ -1101,15 +1139,19 @@ const PostMegadropdown = class {
|
|
|
1101
1139
|
}
|
|
1102
1140
|
render() {
|
|
1103
1141
|
const containerStyle = this.isVisible ? {} : { display: 'none' };
|
|
1104
|
-
return (h(Host, { key: '
|
|
1142
|
+
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)))));
|
|
1105
1143
|
}
|
|
1106
1144
|
get host() { return getElement(this); }
|
|
1145
|
+
static get watchers() { return {
|
|
1146
|
+
"textClose": ["validateTextClose"],
|
|
1147
|
+
"textBack": ["validateTextBack"]
|
|
1148
|
+
}; }
|
|
1107
1149
|
};
|
|
1108
1150
|
/** Tracks the currently active dropdown instance. */
|
|
1109
1151
|
PostMegadropdown.activeDropdown = null;
|
|
1110
1152
|
PostMegadropdown.style = postMegadropdownCss;
|
|
1111
1153
|
|
|
1112
|
-
const postMegadropdownTriggerCss = "post-
|
|
1154
|
+
const postMegadropdownTriggerCss = "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(\n -2px - var(--post-device-border-width-focus)\n ) !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}}";
|
|
1113
1155
|
|
|
1114
1156
|
var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
1115
1157
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -1122,101 +1164,85 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
|
|
|
1122
1164
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1123
1165
|
};
|
|
1124
1166
|
const PostMegadropdownTrigger = class {
|
|
1167
|
+
validateFor() {
|
|
1168
|
+
checkRequiredAndType(this, 'for', 'string');
|
|
1169
|
+
}
|
|
1125
1170
|
constructor(hostRef) {
|
|
1126
1171
|
registerInstance(this, hostRef);
|
|
1172
|
+
this.mutationObserver = new MutationObserver(this.cloneSlottedButton.bind(this));
|
|
1173
|
+
this.isMegadropdownExpanded = false;
|
|
1174
|
+
this.slottedContent = null;
|
|
1127
1175
|
/**
|
|
1128
|
-
*
|
|
1129
|
-
*/
|
|
1130
|
-
this.ariaExpanded = false;
|
|
1131
|
-
/**
|
|
1132
|
-
* Reference to the slotted button within the trigger, if present.
|
|
1133
|
-
* Used to manage click and key events for mega dropdown control.
|
|
1176
|
+
* Sets the trigger state to be active or inactive.
|
|
1134
1177
|
*/
|
|
1135
|
-
this.
|
|
1136
|
-
|
|
1137
|
-
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
1138
|
-
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
1139
|
-
*/
|
|
1140
|
-
this.wasExpanded = false;
|
|
1141
|
-
this.handleKeyDown = (event) => {
|
|
1142
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
1143
|
-
event.preventDefault();
|
|
1144
|
-
this.handleToggle();
|
|
1145
|
-
if (this.megadropdown && !this.ariaExpanded) {
|
|
1146
|
-
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
};
|
|
1150
|
-
this.handleToggleMegadropdown = (event) => {
|
|
1151
|
-
if (event.target.id === this.for) {
|
|
1152
|
-
this.ariaExpanded = event.detail.isVisible;
|
|
1153
|
-
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
1154
|
-
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
1155
|
-
setTimeout(() => {
|
|
1156
|
-
this.slottedButton?.focus();
|
|
1157
|
-
}, 100);
|
|
1158
|
-
}
|
|
1159
|
-
this.wasExpanded = this.ariaExpanded;
|
|
1160
|
-
if (this.slottedButton) {
|
|
1161
|
-
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
1162
|
-
}
|
|
1163
|
-
}
|
|
1164
|
-
};
|
|
1178
|
+
this.active = false;
|
|
1179
|
+
this.onMegadropdownToggled = this.onMegadropdownToggled.bind(this);
|
|
1165
1180
|
}
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1181
|
+
connectedCallback() {
|
|
1182
|
+
this.mutationObserver.observe(this.host, { childList: true, subtree: true });
|
|
1183
|
+
}
|
|
1184
|
+
componentWillLoad() {
|
|
1185
|
+
this.cloneSlottedButton();
|
|
1186
|
+
}
|
|
1187
|
+
componentDidLoad() {
|
|
1188
|
+
this.validateFor();
|
|
1189
|
+
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
1190
|
+
if (IS_BROWSER)
|
|
1191
|
+
document.addEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
|
|
1192
|
+
}
|
|
1193
|
+
disconnectedCallback() {
|
|
1194
|
+
document.removeEventListener('postToggleMegadropdown', this.onMegadropdownToggled);
|
|
1195
|
+
}
|
|
1196
|
+
cloneSlottedButton() {
|
|
1197
|
+
this.slottedContent = this.host.innerHTML;
|
|
1172
1198
|
}
|
|
1173
1199
|
get megadropdown() {
|
|
1174
1200
|
const ref = document.getElementById(this.for);
|
|
1175
|
-
|
|
1176
|
-
? ref
|
|
1177
|
-
: null;
|
|
1178
|
-
}
|
|
1179
|
-
handleToggle() {
|
|
1180
|
-
if (this.megadropdown) {
|
|
1181
|
-
this.megadropdown.toggle();
|
|
1182
|
-
}
|
|
1183
|
-
else {
|
|
1201
|
+
if (ref?.localName !== 'post-megadropdown') {
|
|
1184
1202
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
1203
|
+
return null;
|
|
1185
1204
|
}
|
|
1205
|
+
return ref;
|
|
1186
1206
|
}
|
|
1187
|
-
|
|
1188
|
-
this.
|
|
1189
|
-
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
1190
|
-
document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
|
|
1191
|
-
this.slottedButton = this.host.querySelector('button');
|
|
1192
|
-
if (this.slottedButton) {
|
|
1193
|
-
this.slottedButton.setAttribute('aria-haspopup', 'menu');
|
|
1194
|
-
this.slottedButton.addEventListener('click', () => {
|
|
1195
|
-
this.handleToggle();
|
|
1196
|
-
});
|
|
1197
|
-
this.slottedButton.addEventListener('keydown', this.handleKeyDown);
|
|
1198
|
-
}
|
|
1199
|
-
else {
|
|
1200
|
-
console.warn('No button found within post-megadropdown-trigger');
|
|
1201
|
-
}
|
|
1207
|
+
onClick() {
|
|
1208
|
+
this.megadropdown?.toggle();
|
|
1202
1209
|
}
|
|
1203
|
-
|
|
1204
|
-
|
|
1210
|
+
onKeyDown(event) {
|
|
1211
|
+
if (event.key !== 'Enter' && event.key !== ' ')
|
|
1212
|
+
return;
|
|
1213
|
+
const megadropdown = this.megadropdown;
|
|
1214
|
+
if (!megadropdown)
|
|
1215
|
+
return;
|
|
1216
|
+
event.preventDefault();
|
|
1217
|
+
this.megadropdown.toggle();
|
|
1218
|
+
}
|
|
1219
|
+
onMegadropdownToggled(event) {
|
|
1220
|
+
if (event.target.id === this.for) {
|
|
1221
|
+
const wasMegadropdownExpanded = this.isMegadropdownExpanded;
|
|
1222
|
+
this.isMegadropdownExpanded = event.detail.isVisible;
|
|
1223
|
+
const haveBeenClosed = wasMegadropdownExpanded && !this.isMegadropdownExpanded;
|
|
1224
|
+
if (!haveBeenClosed || !event.detail.focusParent)
|
|
1225
|
+
return;
|
|
1226
|
+
// Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
|
|
1227
|
+
setTimeout(() => {
|
|
1228
|
+
this.interactiveButton.focus();
|
|
1229
|
+
}, 100);
|
|
1230
|
+
}
|
|
1205
1231
|
}
|
|
1206
1232
|
render() {
|
|
1207
|
-
return (h(Host, { key: '
|
|
1233
|
+
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" }))));
|
|
1208
1234
|
}
|
|
1209
1235
|
get host() { return getElement(this); }
|
|
1210
1236
|
static get watchers() { return {
|
|
1211
|
-
"for": ["
|
|
1237
|
+
"for": ["validateFor"]
|
|
1212
1238
|
}; }
|
|
1213
1239
|
};
|
|
1214
1240
|
__decorate$1([
|
|
1215
1241
|
EventFrom('post-megadropdown', { ignoreNestedComponents: false })
|
|
1216
|
-
], PostMegadropdownTrigger.prototype, "
|
|
1242
|
+
], PostMegadropdownTrigger.prototype, "onMegadropdownToggled", null);
|
|
1217
1243
|
PostMegadropdownTrigger.style = postMegadropdownTriggerCss;
|
|
1218
1244
|
|
|
1219
|
-
const postMenuCss = ":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}}";
|
|
1245
|
+
const postMenuCss = ":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}}";
|
|
1220
1246
|
|
|
1221
1247
|
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
1222
1248
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -1265,35 +1291,6 @@ const PostMenu = class {
|
|
|
1265
1291
|
this.controlKeyDownHandler(e);
|
|
1266
1292
|
}
|
|
1267
1293
|
};
|
|
1268
|
-
this.handlePostShown = (event) => {
|
|
1269
|
-
// Only for the first open
|
|
1270
|
-
if (event.detail.first) {
|
|
1271
|
-
// Add "menu" and "menuitem" aria roles and aria-label
|
|
1272
|
-
this.host.setAttribute('role', 'menu');
|
|
1273
|
-
const menuItems = this.getSlottedItems();
|
|
1274
|
-
for (const item of menuItems) {
|
|
1275
|
-
item.setAttribute('role', 'menuitem');
|
|
1276
|
-
}
|
|
1277
|
-
if (this.label)
|
|
1278
|
-
this.host.setAttribute('aria-label', this.label);
|
|
1279
|
-
}
|
|
1280
|
-
};
|
|
1281
|
-
this.handlePostToggled = (event) => {
|
|
1282
|
-
this.isVisible = event.detail.isOpen;
|
|
1283
|
-
this.toggleMenu.emit(this.isVisible);
|
|
1284
|
-
if (this.isVisible) {
|
|
1285
|
-
this.lastFocusedElement = this.root?.activeElement;
|
|
1286
|
-
requestAnimationFrame(() => {
|
|
1287
|
-
const menuItems = this.getSlottedItems();
|
|
1288
|
-
if (menuItems.length > 0) {
|
|
1289
|
-
menuItems[0].focus();
|
|
1290
|
-
}
|
|
1291
|
-
});
|
|
1292
|
-
}
|
|
1293
|
-
else if (this.lastFocusedElement) {
|
|
1294
|
-
this.lastFocusedElement.focus();
|
|
1295
|
-
}
|
|
1296
|
-
};
|
|
1297
1294
|
this.handleClick = (e) => {
|
|
1298
1295
|
const target = e.target;
|
|
1299
1296
|
if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
|
@@ -1355,6 +1352,35 @@ const PostMenu = class {
|
|
|
1355
1352
|
console.error('hide: popoverRef is null or undefined');
|
|
1356
1353
|
}
|
|
1357
1354
|
}
|
|
1355
|
+
handlePostShown(event) {
|
|
1356
|
+
// Only for the first open
|
|
1357
|
+
if (event.detail.first) {
|
|
1358
|
+
// Add "menu" and "menuitem" aria roles and aria-label
|
|
1359
|
+
this.host.setAttribute('role', 'menu');
|
|
1360
|
+
const menuItems = this.getSlottedItems();
|
|
1361
|
+
for (const item of menuItems) {
|
|
1362
|
+
item.setAttribute('role', 'menuitem');
|
|
1363
|
+
}
|
|
1364
|
+
if (this.label)
|
|
1365
|
+
this.host.setAttribute('aria-label', this.label);
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
handlePostToggled(event) {
|
|
1369
|
+
this.isVisible = event.detail.isOpen;
|
|
1370
|
+
this.toggleMenu.emit(this.isVisible);
|
|
1371
|
+
if (this.isVisible) {
|
|
1372
|
+
this.lastFocusedElement = this.root?.activeElement;
|
|
1373
|
+
requestAnimationFrame(() => {
|
|
1374
|
+
const menuItems = this.getSlottedItems();
|
|
1375
|
+
if (menuItems.length > 0) {
|
|
1376
|
+
menuItems[0].focus();
|
|
1377
|
+
}
|
|
1378
|
+
});
|
|
1379
|
+
}
|
|
1380
|
+
else if (this.lastFocusedElement) {
|
|
1381
|
+
this.lastFocusedElement.focus();
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1358
1384
|
controlKeyDownHandler(e) {
|
|
1359
1385
|
const menuItems = this.getSlottedItems();
|
|
1360
1386
|
if (!menuItems.length) {
|
|
@@ -1402,7 +1428,7 @@ const PostMenu = class {
|
|
|
1402
1428
|
.flatMap(el => Array.from(getFocusableChildren(el))));
|
|
1403
1429
|
}
|
|
1404
1430
|
render() {
|
|
1405
|
-
return (h(Host, { key: '
|
|
1431
|
+
return (h(Host, { key: '08285b17608e5bc3133a3da6015a5a0d4de6ec29', "data-version": version }, h("post-popovercontainer", { key: '17e45869b5e76cdd9bd43ca77b2f0b3876462014', onPostShow: this.handlePostShown.bind(this), onPostToggle: this.handlePostToggled.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: 'e2486aa099ffc8ac59885a0971ebb13649a49a35', part: "post-menu" }, h("slot", { key: '9f0e05f211fe18cf5beed8e1b33bde26d4974e24', name: "header" }), h("slot", { key: '971ac8ad433467a2ebe2429574cb10dbdadbcf25' })))));
|
|
1406
1432
|
}
|
|
1407
1433
|
get host() { return getElement(this); }
|
|
1408
1434
|
static get watchers() { return {
|
|
@@ -1412,10 +1438,10 @@ const PostMenu = class {
|
|
|
1412
1438
|
};
|
|
1413
1439
|
__decorate([
|
|
1414
1440
|
EventFrom('post-popovercontainer')
|
|
1415
|
-
], PostMenu.prototype, "handlePostShown",
|
|
1441
|
+
], PostMenu.prototype, "handlePostShown", null);
|
|
1416
1442
|
__decorate([
|
|
1417
1443
|
EventFrom('post-popovercontainer')
|
|
1418
|
-
], PostMenu.prototype, "handlePostToggled",
|
|
1444
|
+
], PostMenu.prototype, "handlePostToggled", null);
|
|
1419
1445
|
PostMenu.style = postMenuCss;
|
|
1420
1446
|
|
|
1421
1447
|
const postMenuTriggerCss = ":host{display:inline-block}";
|
|
@@ -1493,7 +1519,7 @@ const PostMenuTrigger = class {
|
|
|
1493
1519
|
}
|
|
1494
1520
|
}
|
|
1495
1521
|
render() {
|
|
1496
|
-
return (h(Host, { key: '
|
|
1522
|
+
return (h(Host, { key: '3ef7e372c9c655bf1da5d5a7d4bca6925a010f65', "data-version": version, "tab-index": "-1" }, h("slot", { key: '771db943ad5aa639c325f055ba6f9d763bf4256d' })));
|
|
1497
1523
|
}
|
|
1498
1524
|
get host() { return getElement(this); }
|
|
1499
1525
|
static get watchers() { return {
|
|
@@ -4223,7 +4249,7 @@ function popIn(el) {
|
|
|
4223
4249
|
});
|
|
4224
4250
|
}
|
|
4225
4251
|
|
|
4226
|
-
const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-block-
|
|
4252
|
+
const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer)>div{border:2px solid rgba(0,0,0,0)}}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{--arrow-size: 0.5825rem;position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-bottom-right-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-bottom-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-top-left-radius:2px}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-top-right-radius:2px}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:where(post-popovercontainer) .arrow[dynamic-placement=top]{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);bottom:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=left]{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);right:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=right]{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);left:-0.3796735336rem !important}:where(post-popovercontainer) .arrow[dynamic-placement=bottom]{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);top:-0.3796735336rem !important}}";
|
|
4227
4253
|
|
|
4228
4254
|
const PostPopovercontainer = class {
|
|
4229
4255
|
constructor(hostRef) {
|
|
@@ -4252,10 +4278,6 @@ const PostPopovercontainer = class {
|
|
|
4252
4278
|
* Whether or not to display a little pointer arrow
|
|
4253
4279
|
*/
|
|
4254
4280
|
this.arrow = false;
|
|
4255
|
-
/**
|
|
4256
|
-
* Whether or not the popovercontainer should close when user clicks outside of it
|
|
4257
|
-
*/
|
|
4258
|
-
this.manualClose = false;
|
|
4259
4281
|
this.currentAnimation = null;
|
|
4260
4282
|
}
|
|
4261
4283
|
validatePlacement() {
|
|
@@ -4301,10 +4323,35 @@ const PostPopovercontainer = class {
|
|
|
4301
4323
|
this.calculatePosition();
|
|
4302
4324
|
this.host.showPopover();
|
|
4303
4325
|
}
|
|
4326
|
+
/**
|
|
4327
|
+
* Programmatically hide the popovercontainer
|
|
4328
|
+
*/
|
|
4329
|
+
async hide() {
|
|
4330
|
+
if (!this.toggleTimeoutId) {
|
|
4331
|
+
this.eventTarget = null;
|
|
4332
|
+
this.host.hidePopover();
|
|
4333
|
+
this.postHide.emit();
|
|
4334
|
+
}
|
|
4335
|
+
}
|
|
4336
|
+
/**
|
|
4337
|
+
* Toggle popovercontainer display
|
|
4338
|
+
* @param target A focusable element inside the <post-popover-trigger> component that controls the popover
|
|
4339
|
+
* @param force Pass true to always show or false to always hide
|
|
4340
|
+
*/
|
|
4341
|
+
async toggle(target, force) {
|
|
4342
|
+
this.eventTarget = target;
|
|
4343
|
+
// Prevent instant double toggle
|
|
4344
|
+
if (!this.toggleTimeoutId) {
|
|
4345
|
+
this.calculatePosition();
|
|
4346
|
+
this.host.togglePopover(force);
|
|
4347
|
+
this.toggleTimeoutId = null;
|
|
4348
|
+
}
|
|
4349
|
+
return this.host.matches(':where(:popover-open, .popover-open)');
|
|
4350
|
+
}
|
|
4304
4351
|
/**
|
|
4305
4352
|
* Handles the popover opening process and emits related events.
|
|
4306
4353
|
*/
|
|
4307
|
-
|
|
4354
|
+
open() {
|
|
4308
4355
|
const content = this.host.querySelector('.popover-content');
|
|
4309
4356
|
this.startAutoupdates();
|
|
4310
4357
|
if (content) {
|
|
@@ -4329,7 +4376,7 @@ const PostPopovercontainer = class {
|
|
|
4329
4376
|
/**
|
|
4330
4377
|
* Handles the popover closing process and emits related events.
|
|
4331
4378
|
*/
|
|
4332
|
-
|
|
4379
|
+
close() {
|
|
4333
4380
|
if (typeof this.clearAutoUpdate === 'function') {
|
|
4334
4381
|
this.clearAutoUpdate();
|
|
4335
4382
|
}
|
|
@@ -4375,31 +4422,6 @@ const PostPopovercontainer = class {
|
|
|
4375
4422
|
}
|
|
4376
4423
|
}
|
|
4377
4424
|
}
|
|
4378
|
-
/**
|
|
4379
|
-
* Programmatically hide the popovercontainer
|
|
4380
|
-
*/
|
|
4381
|
-
async hide() {
|
|
4382
|
-
if (!this.toggleTimeoutId) {
|
|
4383
|
-
this.eventTarget = null;
|
|
4384
|
-
this.host.hidePopover();
|
|
4385
|
-
this.postHide.emit();
|
|
4386
|
-
}
|
|
4387
|
-
}
|
|
4388
|
-
/**
|
|
4389
|
-
* Toggle popovercontainer display
|
|
4390
|
-
* @param target A focusable element inside the <post-popover-trigger> component that controls the popover
|
|
4391
|
-
* @param force Pass true to always show or false to always hide
|
|
4392
|
-
*/
|
|
4393
|
-
async toggle(target, force) {
|
|
4394
|
-
this.eventTarget = target;
|
|
4395
|
-
// Prevent instant double toggle
|
|
4396
|
-
if (!this.toggleTimeoutId) {
|
|
4397
|
-
this.calculatePosition();
|
|
4398
|
-
this.host.togglePopover(force);
|
|
4399
|
-
this.toggleTimeoutId = null;
|
|
4400
|
-
}
|
|
4401
|
-
return this.host.matches(':where(:popover-open, .popover-open)');
|
|
4402
|
-
}
|
|
4403
4425
|
/**
|
|
4404
4426
|
* Start or stop auto updates based on popovercontainer events.
|
|
4405
4427
|
* Popovercontainers can be closed or opened with other methods than class members,
|
|
@@ -4433,6 +4455,7 @@ const PostPopovercontainer = class {
|
|
|
4433
4455
|
async calculatePosition() {
|
|
4434
4456
|
const { x, y, middlewareData, placement } = await this.computeMainPosition();
|
|
4435
4457
|
const currentPlacement = placement.split('-')[0];
|
|
4458
|
+
this.dynamicPlacement = currentPlacement;
|
|
4436
4459
|
// Position popover
|
|
4437
4460
|
this.host.style.left = `${x}px`;
|
|
4438
4461
|
this.host.style.top = `${y}px`;
|
|
@@ -4440,11 +4463,20 @@ const PostPopovercontainer = class {
|
|
|
4440
4463
|
if (this.arrow && middlewareData.arrow) {
|
|
4441
4464
|
const { x: arrowX, y: arrowY } = middlewareData.arrow;
|
|
4442
4465
|
const staticSide = PostPopovercontainer.STATIC_SIDES[currentPlacement];
|
|
4466
|
+
const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
4467
|
+
// Calculate dynamically the half side which provides the static side offset
|
|
4468
|
+
const arrowSizeValue = getComputedStyle(this.arrowRef)
|
|
4469
|
+
.getPropertyValue('--arrow-size')
|
|
4470
|
+
.trim();
|
|
4471
|
+
const arrowSizePx = arrowSizeValue.endsWith('rem')
|
|
4472
|
+
? Number.parseFloat(arrowSizeValue) * rootFontSize
|
|
4473
|
+
: Number.parseFloat(arrowSizeValue);
|
|
4474
|
+
const halfSide = -0.5 * arrowSizePx;
|
|
4443
4475
|
if (staticSide) {
|
|
4444
4476
|
Object.assign(this.arrowRef.style, {
|
|
4445
4477
|
left: arrowX ? `${arrowX}px` : '',
|
|
4446
4478
|
top: arrowY ? `${arrowY}px` : '',
|
|
4447
|
-
[staticSide]:
|
|
4479
|
+
[staticSide]: `${halfSide}px`,
|
|
4448
4480
|
});
|
|
4449
4481
|
}
|
|
4450
4482
|
}
|
|
@@ -4545,9 +4577,9 @@ const PostPopovercontainer = class {
|
|
|
4545
4577
|
}
|
|
4546
4578
|
}
|
|
4547
4579
|
render() {
|
|
4548
|
-
return (h(Host, { key: '
|
|
4580
|
+
return (h(Host, { key: '0aaf70cb284e7227149f2e500aa7c72cab69d90a', "data-version": version, popover: "auto" }, h("div", { key: '9762887bdddca93acc6dfda715f2f41f4f6c98d6', class: "popover-content" }, this.arrow && (h("span", { key: 'e77f16be0b3b0cdb02886ea928aa6986d3f477e3', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
|
|
4549
4581
|
this.arrowRef = el;
|
|
4550
|
-
} })), h("slot", { key: '
|
|
4582
|
+
} })), h("slot", { key: 'e8737e5acec3a20d258d462a7d82278d303ba353' }))));
|
|
4551
4583
|
}
|
|
4552
4584
|
get host() { return getElement(this); }
|
|
4553
4585
|
static get watchers() { return {
|
|
@@ -4604,10 +4636,10 @@ const PostTogglebutton = class {
|
|
|
4604
4636
|
this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
|
|
4605
4637
|
}
|
|
4606
4638
|
render() {
|
|
4607
|
-
return (h(Host, { key: '
|
|
4639
|
+
return (h(Host, { key: 'a526ab3b0ae14c93bb4e1a8dc6d3ded4ff1bf014', "data-version": version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, h("slot", { key: 'e8a5bdd99d9270cfcf014306a8d7fe8a2b6b79ba' })));
|
|
4608
4640
|
}
|
|
4609
4641
|
get host() { return getElement(this); }
|
|
4610
4642
|
};
|
|
4611
4643
|
PostTogglebutton.style = postTogglebuttonCss;
|
|
4612
4644
|
|
|
4613
|
-
export { PostClosebutton as post_closebutton, PostHeader as post_header, PostIcon as post_icon,
|
|
4645
|
+
export { PostClosebutton as post_closebutton, PostHeader as post_header, PostIcon as post_icon, PostLanguageMenu as post_language_menu, PostLanguageMenuItem as post_language_menu_item, PostLogo as post_logo, PostMainnavigation as post_mainnavigation, PostMegadropdown as post_megadropdown, PostMegadropdownTrigger as post_megadropdown_trigger, PostMenu as post_menu, PostMenuTrigger as post_menu_trigger, PostPopovercontainer as post_popovercontainer, PostTogglebutton as post_togglebutton };
|