@swisspost/design-system-components 9.0.0-next.17 → 9.0.0-next.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{check-url-1ff4cf75.js → check-url-4c524d85.js} +1 -1
- package/dist/cjs/{index-f2eedfeb.js → index-d4222dcb.js} +1 -1
- package/dist/cjs/index.cjs.js +22 -22
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{package-6000ba84.js → package-1403e51d.js} +1 -1
- package/dist/cjs/{post-accordion-562d63d3.js → post-accordion-e84c9d23.js} +1 -1
- package/dist/cjs/{post-accordion-item-2b9a7c01.js → post-accordion-item-d1ef00c3.js} +3 -3
- package/dist/cjs/post-accordion-item.cjs.entry.js +4 -4
- package/dist/cjs/post-accordion.cjs.entry.js +2 -2
- package/dist/cjs/{post-avatar-d9194b7f.js → post-avatar-7a8860df.js} +1 -1
- package/dist/cjs/post-avatar.cjs.entry.js +2 -2
- package/dist/cjs/{post-back-to-top-fa8d4e1d.js → post-back-to-top-6c7057f9.js} +2 -2
- package/dist/cjs/post-back-to-top.cjs.entry.js +2 -2
- package/dist/cjs/{post-banner-3b91a695.js → post-banner-ecc46714.js} +3 -3
- package/dist/cjs/post-banner.cjs.entry.js +4 -4
- package/dist/cjs/{post-breadcrumb-839a2652.js → post-breadcrumb-dbb85db9.js} +2 -2
- package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -4
- package/dist/cjs/post-breadcrumb.cjs.entry.js +3 -3
- package/dist/cjs/{post-card-control-14a4dfc8.js → post-card-control-76f6a5b3.js} +1 -1
- package/dist/cjs/post-card-control.cjs.entry.js +2 -2
- package/dist/cjs/post-closebutton_15.cjs.entry.js +4 -4
- package/dist/cjs/{post-collapsible-trigger-05be3759.js → post-collapsible-trigger-8b242323.js} +2 -2
- package/dist/cjs/post-collapsible_2.cjs.entry.js +4 -4
- package/dist/cjs/post-components.cjs.js +1 -1
- package/dist/cjs/{post-footer-a70591e7.js → post-footer-eeec84e0.js} +1 -1
- package/dist/cjs/post-footer.cjs.entry.js +2 -2
- package/dist/cjs/post-linkarea-61dbfe5d.js +30 -0
- package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
- package/dist/cjs/{post-menu-item-e20f184b.js → post-menu-item-12639f7c.js} +2 -2
- package/dist/cjs/{post-popover-e398bdfb.js → post-popover-9569b144.js} +2 -2
- package/dist/cjs/post-popover.cjs.entry.js +2 -2
- package/dist/cjs/{post-rating-7aff1856.js → post-rating-5645cae4.js} +2 -2
- package/dist/cjs/post-rating.cjs.entry.js +2 -2
- package/dist/cjs/{post-tab-header-a2dbedd3.js → post-tab-header-82e8ccd0.js} +3 -3
- package/dist/cjs/post-tab-header.cjs.entry.js +2 -2
- package/dist/cjs/{post-tab-panel-5be6d90e.js → post-tab-panel-ef3df53e.js} +2 -2
- package/dist/cjs/post-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/{post-tabs-c0ff849b.js → post-tabs-8f1e74d9.js} +2 -2
- package/dist/cjs/post-tabs.cjs.entry.js +2 -2
- package/dist/cjs/{post-tag-0d9d3036.js → post-tag-c353e30c.js} +2 -2
- package/dist/cjs/post-tag.cjs.entry.js +2 -2
- package/dist/cjs/{post-togglebutton-46c57375.js → post-togglebutton-8949d278.js} +341 -161
- package/dist/cjs/{post-tooltip-fd1b7b47.js → post-tooltip-cf18ac29.js} +4 -4
- package/dist/cjs/post-tooltip.cjs.entry.js +4 -4
- package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
- package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
- package/dist/collection/components/post-banner/post-banner.css +1 -1
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +13 -3
- package/dist/collection/components/post-icon/post-icon.js +41 -37
- package/dist/collection/components/post-language-option/post-language-option.css +1 -1
- package/dist/collection/components/post-language-option/post-language-option.js +2 -2
- package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +6 -6
- package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.js +12 -14
- package/dist/collection/components/post-list/post-list.js +2 -2
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +55 -34
- package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +64 -21
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +24 -2
- package/dist/collection/components/post-menu/post-menu.js +17 -13
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -7
- package/dist/collection/components/post-popover/post-popover.css +1 -1
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +141 -33
- package/dist/collection/components/post-rating/post-rating.js +1 -1
- package/dist/collection/components/post-tab-header/post-tab-header.css +1 -1
- package/dist/collection/components/post-tab-header/post-tab-header.js +1 -1
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
- package/dist/collection/components/post-tabs/post-tabs.js +1 -1
- package/dist/collection/components/post-tag/post-tag.js +1 -1
- 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/utils/property-checkers/check-url.js +1 -1
- package/dist/components/index2.js +1 -1
- package/dist/components/package.js +1 -1
- package/dist/components/post-accordion-item2.js +1 -1
- package/dist/components/post-back-to-top2.js +1 -1
- package/dist/components/post-banner2.js +1 -1
- package/dist/components/post-header2.js +14 -4
- package/dist/components/post-icon2.js +41 -37
- package/dist/components/post-language-option2.js +2 -2
- package/dist/components/post-language-switch2.js +6 -6
- package/dist/components/post-linkarea2.js +12 -14
- package/dist/components/post-list2.js +2 -2
- package/dist/components/post-mainnavigation2.js +57 -36
- package/dist/components/post-megadropdown-trigger2.js +24 -2
- package/dist/components/post-megadropdown2.js +42 -19
- package/dist/components/post-menu-trigger2.js +13 -7
- package/dist/components/post-menu2.js +17 -13
- package/dist/components/post-popover2.js +1 -1
- package/dist/components/post-popovercontainer2.js +125 -33
- package/dist/components/post-rating2.js +1 -1
- package/dist/components/post-tab-header2.js +2 -2
- package/dist/components/post-tab-panel2.js +1 -1
- package/dist/components/post-tabs2.js +1 -1
- package/dist/components/post-tag2.js +1 -1
- package/dist/components/post-togglebutton2.js +1 -1
- package/dist/components/post-tooltip2.js +2 -2
- package/dist/docs.json +71 -11
- package/dist/esm/{check-url-8ab230de.js → check-url-f84034b1.js} +1 -1
- package/dist/esm/{index-0aec278f.js → index-1b263a63.js} +1 -1
- package/dist/esm/index.js +22 -22
- package/dist/esm/loader.js +1 -1
- package/dist/esm/package-21cb9eb8.js +3 -0
- package/dist/esm/{post-accordion-ae79061a.js → post-accordion-db14e23a.js} +1 -1
- package/dist/esm/{post-accordion-item-6aa9b5bd.js → post-accordion-item-c1f42c05.js} +3 -3
- package/dist/esm/post-accordion-item.entry.js +4 -4
- package/dist/esm/post-accordion.entry.js +2 -2
- package/dist/esm/{post-avatar-2384ca3b.js → post-avatar-ccda94eb.js} +1 -1
- package/dist/esm/post-avatar.entry.js +2 -2
- package/dist/esm/{post-back-to-top-ec1c2754.js → post-back-to-top-f038d599.js} +2 -2
- package/dist/esm/post-back-to-top.entry.js +2 -2
- package/dist/esm/{post-banner-c7b88ac2.js → post-banner-a24ccf11.js} +3 -3
- package/dist/esm/post-banner.entry.js +4 -4
- package/dist/esm/{post-breadcrumb-d48cb773.js → post-breadcrumb-e3e4b50c.js} +2 -2
- package/dist/esm/post-breadcrumb-item_2.entry.js +4 -4
- package/dist/esm/post-breadcrumb.entry.js +3 -3
- package/dist/esm/{post-card-control-b63a2837.js → post-card-control-0a4497d8.js} +1 -1
- package/dist/esm/post-card-control.entry.js +2 -2
- package/dist/esm/post-closebutton_15.entry.js +4 -4
- package/dist/esm/{post-collapsible-trigger-8f4daf1e.js → post-collapsible-trigger-6b0253d8.js} +2 -2
- package/dist/esm/post-collapsible_2.entry.js +4 -4
- package/dist/esm/post-components.js +1 -1
- package/dist/esm/{post-footer-b4b75c94.js → post-footer-fa4a2a32.js} +1 -1
- package/dist/esm/post-footer.entry.js +2 -2
- package/dist/esm/post-linkarea-1458faa8.js +28 -0
- package/dist/esm/post-linkarea.entry.js +2 -2
- package/dist/esm/{post-menu-item-d087d910.js → post-menu-item-b9af8b46.js} +2 -2
- package/dist/esm/{post-popover-a096ee08.js → post-popover-425eb5c9.js} +2 -2
- package/dist/esm/post-popover.entry.js +2 -2
- package/dist/esm/{post-rating-0ead6a2a.js → post-rating-4057a5b5.js} +2 -2
- package/dist/esm/post-rating.entry.js +2 -2
- package/dist/esm/{post-tab-header-e29d371b.js → post-tab-header-602eb0cb.js} +3 -3
- package/dist/esm/post-tab-header.entry.js +2 -2
- package/dist/esm/{post-tab-panel-57840a1a.js → post-tab-panel-fccea5b6.js} +2 -2
- package/dist/esm/post-tab-panel.entry.js +2 -2
- package/dist/esm/{post-tabs-70dfc43c.js → post-tabs-b9f41051.js} +2 -2
- package/dist/esm/post-tabs.entry.js +2 -2
- package/dist/esm/{post-tag-be1ad18d.js → post-tag-54b70906.js} +2 -2
- package/dist/esm/post-tag.entry.js +2 -2
- package/dist/esm/{post-togglebutton-8da6d613.js → post-togglebutton-f6746062.js} +341 -161
- package/dist/esm/{post-tooltip-cb549b9f.js → post-tooltip-eccf3d93.js} +4 -4
- package/dist/esm/post-tooltip.entry.js +4 -4
- package/dist/post-components/index.esm.js +1 -1
- package/dist/post-components/p-0337eb03.entry.js +1 -0
- package/dist/post-components/p-0470d5af.entry.js +1 -0
- package/dist/post-components/p-07b75b18.entry.js +1 -0
- package/dist/post-components/{p-c3135c18.js → p-0d879e8b.js} +1 -1
- package/dist/post-components/{p-9b46c8f2.js → p-0f6fee8f.js} +1 -1
- package/dist/post-components/p-114bb8ba.js +1 -0
- package/dist/post-components/{p-fa65c799.js → p-18fa847f.js} +1 -1
- package/dist/post-components/{p-fb8f5195.js → p-1c1a614d.js} +1 -1
- package/dist/post-components/p-202156ad.js +1 -0
- package/dist/post-components/p-2f5425e2.entry.js +1 -0
- package/dist/post-components/p-39586235.js +1 -0
- package/dist/post-components/p-3b1c2b8a.entry.js +1 -0
- package/dist/post-components/{p-16d20563.js → p-46accc5f.js} +1 -1
- package/dist/post-components/{p-f513fd5d.js → p-470c7464.js} +1 -1
- package/dist/post-components/{p-77eb06d0.js → p-509fc6e6.js} +1 -1
- package/dist/post-components/{p-7f09a864.js → p-541c7be9.js} +2 -2
- package/dist/post-components/p-54c98790.js +1 -0
- package/dist/post-components/p-5afa25c7.entry.js +1 -0
- package/dist/post-components/{p-49b69e0e.js → p-5b1c57d5.js} +1 -1
- package/dist/post-components/p-5cf79fe3.entry.js +1 -0
- package/dist/post-components/p-5d9c1fc3.entry.js +1 -0
- package/dist/post-components/p-608ba689.entry.js +1 -0
- package/dist/post-components/p-64776810.entry.js +1 -0
- package/dist/post-components/{p-faaa4c0a.js → p-6651164c.js} +1 -1
- package/dist/post-components/p-7085e0e7.entry.js +1 -0
- package/dist/post-components/{p-904b3028.entry.js → p-7bf39758.entry.js} +1 -1
- package/dist/post-components/p-7dc1ccf0.entry.js +1 -0
- package/dist/post-components/p-81eac2e5.entry.js +1 -0
- package/dist/post-components/p-8a31b2fc.entry.js +1 -0
- package/dist/post-components/p-8e7e9942.entry.js +1 -0
- package/dist/post-components/p-a24bf798.js +1 -0
- package/dist/post-components/p-a621090d.js +1 -0
- package/dist/post-components/p-a926c755.js +1 -0
- package/dist/post-components/{p-ce76e0bf.js → p-b27b7d03.js} +1 -1
- package/dist/post-components/{p-76bbd883.js → p-b8100b63.js} +1 -1
- package/dist/post-components/p-c48553bd.entry.js +1 -0
- package/dist/post-components/{p-26951eb6.js → p-cb472e20.js} +1 -1
- package/dist/post-components/p-cea81e00.entry.js +1 -0
- package/dist/post-components/p-d2d2681a.js +1 -0
- package/dist/post-components/{p-baf06ea0.js → p-d8b179fb.js} +1 -1
- package/dist/post-components/p-f405f29e.entry.js +1 -0
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/types/components/post-header/post-header.d.ts +1 -0
- package/dist/types/components/post-icon/post-icon.d.ts +5 -0
- package/dist/types/components/post-language-option/post-language-option.d.ts +1 -1
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +1 -1
- package/dist/types/components/post-linkarea/post-linkarea.d.ts +2 -2
- package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +2 -5
- package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +12 -5
- package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +6 -0
- package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +2 -1
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +15 -1
- package/dist/types/components.d.ts +19 -10
- package/loaders/index2.js +1 -1
- package/loaders/package.js +1 -1
- package/loaders/post-accordion-item2.js +1 -1
- package/loaders/post-back-to-top.js +1 -1
- package/loaders/post-banner.js +1 -1
- package/loaders/post-header.js +14 -4
- package/loaders/post-icon2.js +41 -37
- package/loaders/post-language-option.js +2 -2
- package/loaders/post-language-switch.js +6 -6
- package/loaders/post-linkarea.js +12 -14
- package/loaders/post-list.js +2 -2
- package/loaders/post-mainnavigation.js +57 -36
- package/loaders/post-megadropdown-trigger.js +24 -2
- package/loaders/post-megadropdown.js +42 -19
- package/loaders/post-menu-trigger2.js +13 -7
- package/loaders/post-menu2.js +17 -13
- package/loaders/post-popover.js +1 -1
- package/loaders/post-popovercontainer2.js +125 -33
- package/loaders/post-rating.js +1 -1
- package/loaders/post-tab-header.js +2 -2
- package/loaders/post-tab-panel.js +1 -1
- package/loaders/post-tabs.js +1 -1
- package/loaders/post-tag.js +1 -1
- package/loaders/post-togglebutton.js +1 -1
- package/loaders/post-tooltip.js +2 -2
- package/package.json +3 -3
- package/dist/cjs/post-linkarea-199a2615.js +0 -32
- package/dist/esm/package-0d05729a.js +0 -3
- package/dist/esm/post-linkarea-d3ae37f9.js +0 -30
- package/dist/post-components/p-0ca3d16c.entry.js +0 -1
- package/dist/post-components/p-1a695d66.entry.js +0 -1
- package/dist/post-components/p-1eb54abb.entry.js +0 -1
- package/dist/post-components/p-2bcf91f6.entry.js +0 -1
- package/dist/post-components/p-3e94d076.entry.js +0 -1
- package/dist/post-components/p-3ef59370.entry.js +0 -1
- package/dist/post-components/p-3fdd351e.js +0 -1
- package/dist/post-components/p-413b656c.entry.js +0 -1
- package/dist/post-components/p-480169b9.js +0 -1
- package/dist/post-components/p-59373941.js +0 -1
- package/dist/post-components/p-78ae731e.js +0 -1
- package/dist/post-components/p-78b6020e.entry.js +0 -1
- package/dist/post-components/p-88c5e0bf.entry.js +0 -1
- package/dist/post-components/p-8c732622.entry.js +0 -1
- package/dist/post-components/p-8f2e8a63.entry.js +0 -1
- package/dist/post-components/p-9a5111ca.entry.js +0 -1
- package/dist/post-components/p-9ae6517d.entry.js +0 -1
- package/dist/post-components/p-a2806a35.js +0 -1
- package/dist/post-components/p-c6a239f2.entry.js +0 -1
- package/dist/post-components/p-ceb96aaa.js +0 -1
- package/dist/post-components/p-d2646369.entry.js +0 -1
- package/dist/post-components/p-debe5b2d.entry.js +0 -1
- package/dist/post-components/p-f2ed28e5.js +0 -1
- package/dist/post-components/p-f3c23d8c.entry.js +0 -1
- package/dist/post-components/p-f573860f.js +0 -1
- package/dist/post-components/p-facba41d.entry.js +0 -1
|
@@ -7,7 +7,7 @@ import { c as checkType } from './check-type.js';
|
|
|
7
7
|
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)}}";
|
|
8
8
|
const PostIconStyle0 = postIconCss;
|
|
9
9
|
|
|
10
|
-
const CDN_URL = 'https://unpkg.com/@swisspost/design-system-icons/public/post-icons';
|
|
10
|
+
const CDN_URL = 'https://unpkg.com/@swisspost/design-system-icons/public/post-icons/';
|
|
11
11
|
const ANIMATION_NAMES = [
|
|
12
12
|
'cylon',
|
|
13
13
|
'cylon-vertical',
|
|
@@ -30,6 +30,7 @@ const PostIcon = /*@__PURE__*/ proxyCustomElement(class PostIcon extends HTMLEle
|
|
|
30
30
|
this.rotate = null;
|
|
31
31
|
this.scale = null;
|
|
32
32
|
}
|
|
33
|
+
isSSR = typeof window === 'undefined';
|
|
33
34
|
get host() { return this; }
|
|
34
35
|
validateAnimation(newValue = this.animation) {
|
|
35
36
|
if (newValue !== undefined)
|
|
@@ -56,50 +57,53 @@ const PostIcon = /*@__PURE__*/ proxyCustomElement(class PostIcon extends HTMLEle
|
|
|
56
57
|
}
|
|
57
58
|
// Construct the icon url from different possible sources
|
|
58
59
|
getUrl() {
|
|
60
|
+
let url;
|
|
61
|
+
const file = `${this.name}.svg`;
|
|
59
62
|
// the first definition object which defines a domain, will be used to set the domain of the file url
|
|
60
63
|
// the first definition object which defines a slug, will be used to set the slug of the file url
|
|
61
|
-
const urlDefinitions = [
|
|
62
|
-
|
|
63
|
-
getUrlDefinition(document.head
|
|
64
|
+
const urlDefinitions = [this.getUrlDefinition(this.base, 'both')];
|
|
65
|
+
if (!this.isSSR) {
|
|
66
|
+
urlDefinitions.push(this.getUrlDefinition(document.head
|
|
64
67
|
.querySelector('meta[name="design-system-settings"][data-post-icon-base]')
|
|
65
|
-
?.getAttribute('data-post-icon-base'), 'relative')
|
|
66
|
-
getUrlDefinition(document.querySelector('base[href]')?.getAttribute('href'), 'both')
|
|
67
|
-
|
|
68
|
-
// in case no
|
|
69
|
-
const origin = urlDefinitions.find(d => d.definesDomain)?.url?.origin
|
|
70
|
-
// in case no
|
|
68
|
+
?.getAttribute('data-post-icon-base'), 'relative'));
|
|
69
|
+
urlDefinitions.push(this.getUrlDefinition(document.querySelector('base[href]')?.getAttribute('href'), 'both'));
|
|
70
|
+
}
|
|
71
|
+
// in case no definition defines a domain, a relative url is used to load the icon
|
|
72
|
+
const origin = urlDefinitions.find(d => d.definesDomain)?.url?.origin;
|
|
73
|
+
// in case no definition defines a slug either, the cdn url is used as a fallback
|
|
71
74
|
const slug = urlDefinitions.find(d => d.definesSlug)?.url?.pathname;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
if (origin && slug) {
|
|
76
|
+
url = `${origin}${slug}${file}`;
|
|
77
|
+
}
|
|
78
|
+
else if (!origin && slug) {
|
|
79
|
+
url = `${slug}${file}`;
|
|
76
80
|
}
|
|
77
81
|
else {
|
|
78
|
-
url =
|
|
82
|
+
url = `${CDN_URL}${file}`;
|
|
79
83
|
}
|
|
80
84
|
return url;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
function definesDomain(url) {
|
|
96
|
-
return url ? /^https?:\/\//.test(url) : false;
|
|
97
|
-
}
|
|
98
|
-
function definesSlug(url) {
|
|
99
|
-
const urlObject = getUrlObject(url);
|
|
100
|
-
return Boolean(/^\/.+/.test(urlObject?.pathname));
|
|
101
|
-
}
|
|
85
|
+
}
|
|
86
|
+
getUrlDefinition(url, allow) {
|
|
87
|
+
return {
|
|
88
|
+
url: this.getUrlObject(url),
|
|
89
|
+
definesDomain: allow !== 'relative' ? this.definesDomain(url) : false,
|
|
90
|
+
definesSlug: allow !== 'absolute' ? this.definesSlug(url) : false,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
getUrlObject(url) {
|
|
94
|
+
if (url) {
|
|
95
|
+
url = url?.endsWith('/') ? url : `${url}/`;
|
|
96
|
+
return new URL(url, 'https://url.base');
|
|
102
97
|
}
|
|
98
|
+
else {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
definesDomain(url) {
|
|
103
|
+
return url ? /^https?:\/\//.test(url) : false;
|
|
104
|
+
}
|
|
105
|
+
definesSlug(url) {
|
|
106
|
+
return Boolean(/^\/.+/.test(this.getUrlObject(url)?.pathname));
|
|
103
107
|
}
|
|
104
108
|
getStyles() {
|
|
105
109
|
const url = this.getUrl();
|
|
@@ -122,7 +126,7 @@ const PostIcon = /*@__PURE__*/ proxyCustomElement(class PostIcon extends HTMLEle
|
|
|
122
126
|
this.validateAnimation();
|
|
123
127
|
}
|
|
124
128
|
render() {
|
|
125
|
-
return (h(Host, { key: '
|
|
129
|
+
return (h(Host, { key: '77c38a8fb35ceca1c5cf63fdd44fd9ab23aee62c', "data-version": version }, h("span", { key: 'cc8072420ff881f0d7531ae09bbafad992400296', style: this.getStyles() })));
|
|
126
130
|
}
|
|
127
131
|
static get watchers() { return {
|
|
128
132
|
"animation": ["validateAnimation"],
|
|
@@ -3,7 +3,7 @@ import { e as checkEmptyOrType } from './index2.js';
|
|
|
3
3
|
import { v as version } from './package.js';
|
|
4
4
|
import { c as checkType } from './check-type.js';
|
|
5
5
|
|
|
6
|
-
const postLanguageOptionCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */post-language-option{display:inline-block}post-language-option button{padding:0;overflow:visible;border:0;background:none;color:
|
|
6
|
+
const postLanguageOptionCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */post-language-option{display:inline-block}post-language-option 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-option button{background-color:ButtonFace !important}post-language-option button:hover{background-color:Highlight !important}}post-language-option a{color:inherit;text-decoration:none}post-language-option :is(a,button){cursor:pointer;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:2px;text-transform:uppercase}post-language-option :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-option :is(a,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){post-language-option :is(a,button):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-language-option :is(a,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){post-language-option :is(a,button):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-language-option:where([variant=list]) :is(a,button){padding-inline:0;width:40px;height:40px;border-radius:2px}post-language-option:where([variant=list]) :is(a,button):hover{color:#504f4b}post-language-option:where([variant=list]):not([active=false]) :is(a,button){background-color:#050400 !important;color:#fff;pointer-events:none}post-language-option:where([variant=list]):not([active=false]) :hover{color:#fff}post-language-option:where([variant=menu]){width:100%}post-language-option:where([variant=menu]):not([active=false]){display:none}post-language-option:where([variant=menu]) :is(a,button){padding-block:13px;padding-inline:24px;box-sizing:border-box;position:relative;left:-1px;width:calc(100% + 2px)}";
|
|
7
7
|
const PostLanguageOptionStyle0 = postLanguageOptionCss;
|
|
8
8
|
|
|
9
9
|
const PostLanguageOption = /*@__PURE__*/ proxyCustomElement(class PostLanguageOption extends HTMLElement {
|
|
@@ -63,7 +63,7 @@ const PostLanguageOption = /*@__PURE__*/ proxyCustomElement(class PostLanguageOp
|
|
|
63
63
|
this.emitChange();
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
|
-
return (h(Host, { key: '
|
|
66
|
+
return (h(Host, { key: 'e13eda12ed933d86c46be60d883d7007de0ba93e', "data-version": version, role: this.variant ? `${this.variant}item` : null }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null))) : (h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null)))));
|
|
67
67
|
}
|
|
68
68
|
static get watchers() { return {
|
|
69
69
|
"code": ["validateCode"],
|
|
@@ -10,7 +10,7 @@ import { c as checkType } from './check-type.js';
|
|
|
10
10
|
|
|
11
11
|
const SWITCH_VARIANTS = ['list', 'menu'];
|
|
12
12
|
|
|
13
|
-
const postLanguageSwitchCss = ":host{display:flex
|
|
13
|
+
const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-dropdown-container>*{width:100%}.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:16px;width:16px}";
|
|
14
14
|
const PostLanguageSwitchStyle0 = postLanguageSwitchCss;
|
|
15
15
|
|
|
16
16
|
const PostLanguageSwitch = /*@__PURE__*/ proxyCustomElement(class PostLanguageSwitch extends HTMLElement {
|
|
@@ -36,9 +36,9 @@ const PostLanguageSwitch = /*@__PURE__*/ proxyCustomElement(class PostLanguageSw
|
|
|
36
36
|
connectedCallback() {
|
|
37
37
|
this.updateChildrenVariant();
|
|
38
38
|
// Get the active language based on children's active state
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.getAttribute('code');
|
|
39
|
+
const activeLanguageOption = this.host.querySelector('post-language-option[active]:not([active="false"])');
|
|
40
|
+
if (activeLanguageOption)
|
|
41
|
+
this.activeLang = activeLanguageOption.getAttribute('code');
|
|
42
42
|
}
|
|
43
43
|
// Update post-language-option variant to have the correct style
|
|
44
44
|
updateChildrenVariant() {
|
|
@@ -74,10 +74,10 @@ const PostLanguageSwitch = /*@__PURE__*/ proxyCustomElement(class PostLanguageSw
|
|
|
74
74
|
}
|
|
75
75
|
menuId = `p${nanoid(11)}`;
|
|
76
76
|
renderList() {
|
|
77
|
-
return (h(Host, { "data-version": version, role: "list", "aria-label": this.caption }, h("
|
|
77
|
+
return (h(Host, { "data-version": version, role: "list", "aria-label": this.caption }, h("div", { class: "post-language-switch-list", role: "group", "aria-label": this.description }, h("slot", null))));
|
|
78
78
|
}
|
|
79
79
|
renderDropdown() {
|
|
80
|
-
return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang
|
|
80
|
+
return (h(Host, { "data-version": version }, h("post-menu-trigger", { for: this.menuId }, h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang, h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", "aria-label": this.caption }, h("slot", null))));
|
|
81
81
|
}
|
|
82
82
|
render() {
|
|
83
83
|
return this.variant === 'list' ? this.renderList() : this.renderDropdown();
|
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { v as version } from './package.js';
|
|
3
3
|
|
|
4
|
-
const postLinkareaCss = "
|
|
4
|
+
const postLinkareaCss = "post-linkarea{display:contents;cursor:pointer}";
|
|
5
5
|
const PostLinkareaStyle0 = postLinkareaCss;
|
|
6
6
|
|
|
7
|
+
const INTERACTIVE_ELEMENTS = ['a'].join(',');
|
|
8
|
+
const INTERACTIVE_ELEMENTS_SELECTOR = `:where(${INTERACTIVE_ELEMENTS})`;
|
|
7
9
|
const PostLinkarea = /*@__PURE__*/ proxyCustomElement(class PostLinkarea extends HTMLElement {
|
|
8
10
|
constructor() {
|
|
9
11
|
super();
|
|
10
12
|
this.__registerHost();
|
|
11
13
|
}
|
|
12
|
-
get
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
:
|
|
18
|
-
if (linkElement.href) {
|
|
19
|
-
window.location.href = linkElement.href;
|
|
14
|
+
get host() { return this; }
|
|
15
|
+
dispatchClick({ ctrlKey, shiftKey, altKey, metaKey }) {
|
|
16
|
+
const interactiveElement = this.host.querySelector(`[data-link]${INTERACTIVE_ELEMENTS_SELECTOR}`) ??
|
|
17
|
+
this.host.querySelector(INTERACTIVE_ELEMENTS_SELECTOR);
|
|
18
|
+
if (!interactiveElement) {
|
|
19
|
+
throw new Error(`The \`post-linkarea\` component must contain an interactive element. Possible elements are: ${INTERACTIVE_ELEMENTS}.`);
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
};
|
|
21
|
+
interactiveElement.dispatchEvent(new MouseEvent('click', { ctrlKey, shiftKey, altKey, metaKey }));
|
|
22
|
+
}
|
|
25
23
|
render() {
|
|
26
|
-
return (h(Host, { key: '
|
|
24
|
+
return (h(Host, { key: 'c27bb1e548eecbef9b981ebadea8a9a30a06a89c', "data-version": version, onClick: e => this.dispatchClick(e), tabindex: "0" }, h("slot", { key: '9e5bd5c6032ed87bc2c6e9eed96dc79f19295325' })));
|
|
27
25
|
}
|
|
28
26
|
static get style() { return PostLinkareaStyle0; }
|
|
29
27
|
}, [4, "post-linkarea"]);
|
|
@@ -26,11 +26,11 @@ const PostList = /*@__PURE__*/ proxyCustomElement(class PostList extends HTMLEle
|
|
|
26
26
|
}
|
|
27
27
|
checkTitle() {
|
|
28
28
|
if (!this.titleEl.textContent.trim()) {
|
|
29
|
-
|
|
29
|
+
console.error('Please provide a title to the list component. Title is mandatory for accessibility purposes.');
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
render() {
|
|
33
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '085a63d7b4cc85461f2c8fd0c7b9d9f48f42055a', "data-version": version }, h("div", { key: 'd13a66ba16b71eff1a86666b04ca2f41957962e1', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, h("slot", { key: '0270bcd71c8a3a34390b98b6374a1a2f06e0d606' })), h("div", { key: 'de04b08bf94900435c53f972c8fcd0798c8a5faf', role: "list", "aria-labelledby": this.titleId }, h("slot", { key: 'f7aa9976b3283ee4da3d32d84b36e2549c29e80f', name: "post-list-item" }))));
|
|
34
34
|
}
|
|
35
35
|
static get style() { return PostListStyle0; }
|
|
36
36
|
}, [4, "post-list", {
|
|
@@ -2,20 +2,20 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
|
|
|
2
2
|
import { t as throttle } from './index3.js';
|
|
3
3
|
import { d as defineCustomElement$1 } from './post-icon2.js';
|
|
4
4
|
|
|
5
|
-
const postMainnavigationCss = "post-mainnavigation{flex:0 0 auto}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:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}post-mainnavigation post-list-item post-megadropdown-trigger 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-mainnavigation post-list-item post-megadropdown-trigger 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){post-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-mainnavigation post-list-item post-megadropdown-trigger 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){post-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:focus-within,.pretend-focus){outline-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:var(--post-core-dimension-4)}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:var(--post-core-font-size-16)}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:var(--post-core-font-size-14)}}@media screen and (min-width: 1024px){post-mainnavigation{display:block}post-mainnavigation nav{max-width:100vw;background:var(--post-core-color-brand-white);max-height:var(--main-navigation-height);user-select:none;transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{position:absolute;inset-block:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;background:var(--post-core-color-brand-white);padding:var(--post-core-dimension-16);box-shadow:var(--post-core-elevation-5);line-height:var(--post-core-line-height-100);height:100%}post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}post-mainnavigation post-list{margin-inline:var(--post-core-dimension-4)}post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw;transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}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:var(--post-core-dimension-12);height:var(--main-navigation-height);gap:var(--post-core-dimension-4);font-size:var(--post-core-font-size-16);border-block:0 solid rgba(0,0,0,0);border-block-end-color:currentColor}}@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:3}}@media screen and (min-width: 1024px)and (min-width: 1024px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{z-index:4}}@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{border-block-width:var(--post-core-dimension-2)}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{border-block-width:var(--post-core-dimension-4);font-weight:var(--post-core-font-weight-700)}}@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:var(--post-core-font-size-14)}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:var(--post-core-dimension-12);transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24);transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::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(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:var(--post-core-dimension-48);padding-inline-end:calc(var(--post-core-dimension-6) + var(--post-core-dimension-24) + var(--post-core-dimension-16));gap:var(--post-core-dimension-16);font-weight:var(--post-core-font-weight-400);position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:currentColor;bottom:0;width:100%;height:var(--post-core-dimension-1);position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{height:var(--post-core-dimension-3)}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::after,post-mainnavigation post-megadropdown a:hover::after{content:\"\";display:block;margin-right:calc((var(--post-core-dimension-24) + var(--post-core-dimension-16))*-1);mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='m31.95 16-9.11 9.11c-.2.2-.45.29-.71.29s-.51-.1-.71-.29a.996.996 0 0 1 0-1.41l6.69-6.69H-.05v-2h28.17l-6.69-6.69a.996.996 0 1 1 1.41-1.41l9.11 9.11Z'%3E%3C/path%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;width:var(--post-core-dimension-20);min-width:var(--post-core-dimension-20);height:var(--post-core-dimension-20)}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{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:var(--post-core-dimension-48);padding-inline-end:calc(var(--post-core-dimension-6) + var(--post-core-dimension-24) + var(--post-core-dimension-16));gap:var(--post-core-dimension-16);font-weight:var(--post-core-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:currentColor;bottom:0;width:100%;height:var(--post-core-dimension-1);position:absolute;left:0}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{height:var(--post-core-dimension-3)}post-mainnavigation post-list-item>a:hover::after,post-mainnavigation post-list-item>button:hover::after,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::after{content:\"\";display:block;margin-right:calc((var(--post-core-dimension-24) + var(--post-core-dimension-16))*-1);mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='m31.95 16-9.11 9.11c-.2.2-.45.29-.71.29s-.51-.1-.71-.29a.996.996 0 0 1 0-1.41l6.69-6.69H-.05v-2h28.17l-6.69-6.69a.996.996 0 1 1 1.41-1.41l9.11 9.11Z'%3E%3C/path%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;width:var(--post-core-dimension-20);min-width:var(--post-core-dimension-20);height:var(--post-core-dimension-20)}}post-mainnavigation .back-button .btn{padding-inline:0}";
|
|
5
|
+
const postMainnavigationCss = "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 post-megadropdown-trigger 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-mainnavigation post-list-item post-megadropdown-trigger 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){post-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-mainnavigation post-list-item post-megadropdown-trigger 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){post-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:focus-within,.pretend-focus){outline-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}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media screen and (min-width: 1024px){post-mainnavigation{display:block}post-mainnavigation nav{max-width:100vw;background:#fff;max-height:var(--main-navigation-height);user-select:none;transition:margin 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{z-index:4;position:absolute;inset-block-end:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button 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;background:#fff;padding:16px;box-shadow:var(--post-device-elevation-500);line-height:100%;height:var(--main-navigation-height)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{background-color:ButtonFace !important}post-mainnavigation .left-scroll-button button:hover,post-mainnavigation .right-scroll-button button:hover{background-color:Highlight !important}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}}@media screen and (min-width: 1024px){post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}}@media screen and (min-width: 1024px){post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw;margin-inline:4px}}@media screen and (min-width: 1024px){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(--main-navigation-height);gap:4px;font-size:16px;z-index:4}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}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%;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,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.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .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.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}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.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::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(.btn-icon-close),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(.btn-icon-close)::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(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{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.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,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)}}post-mainnavigation .back-button .btn{padding-inline:0}";
|
|
6
6
|
const PostMainnavigationStyle0 = postMainnavigationCss;
|
|
7
7
|
|
|
8
8
|
const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
|
|
9
9
|
const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
|
|
10
|
-
const NAVIGATION_LIST_SELECTOR = 'post-list
|
|
11
|
-
const NAVIGATION_ITEM_SELECTOR = '
|
|
10
|
+
const NAVIGATION_LIST_SELECTOR = 'post-list > [role="list"]:not(post-megadropdown *)';
|
|
11
|
+
const NAVIGATION_ITEM_SELECTOR = 'post-list-item :is(a, button):not(post-megadropdown *)';
|
|
12
12
|
const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnavigation extends HTMLElement {
|
|
13
13
|
constructor() {
|
|
14
14
|
super();
|
|
15
15
|
this.__registerHost();
|
|
16
16
|
this.canScrollLeft = false;
|
|
17
17
|
this.canScrollRight = false;
|
|
18
|
-
this.
|
|
18
|
+
this.translationAmount = 0;
|
|
19
19
|
}
|
|
20
20
|
header;
|
|
21
21
|
navbar;
|
|
@@ -36,7 +36,7 @@ const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnaviga
|
|
|
36
36
|
* Update navbar translation when 'translateAmount' changes and recalculate scrollability
|
|
37
37
|
*/
|
|
38
38
|
onTranslateAmountChanges(value) {
|
|
39
|
-
this.navbar.style.
|
|
39
|
+
this.navbar.style.marginInlineStart = `-${value}px`;
|
|
40
40
|
this.checkScrollability();
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
@@ -56,11 +56,19 @@ const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnaviga
|
|
|
56
56
|
componentDidLoad() {
|
|
57
57
|
setTimeout(() => this.checkScrollability()); // Initial check to determine if scrolling is needed
|
|
58
58
|
this.mutationObserver.observe(this.navigationList, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
|
|
59
|
+
this.fixLayoutShift();
|
|
59
60
|
window.addEventListener('resize', // Recheck scrollability on window resize
|
|
60
61
|
throttle(100, () => this.checkScrollability()));
|
|
61
62
|
// Handle focus changes and adjust scroll as needed
|
|
62
63
|
this.navbar.addEventListener('focusin', e => this.adjustTranslation(e));
|
|
63
64
|
}
|
|
65
|
+
// Hack that duplicates navigation elements to fix the layout shift on active elements
|
|
66
|
+
fixLayoutShift() {
|
|
67
|
+
// Select first level of main navigation elements, both the links and the megadropdown trigger buttons
|
|
68
|
+
const children = this.host.querySelectorAll('nav > post-list > div > post-list-item > a, nav > post-list > div > post-list-item > post-megadropdown-trigger > button');
|
|
69
|
+
// Update HTML so that the content is duplicated
|
|
70
|
+
children.forEach(child => (child.innerHTML = `<span class="nav-el-active">${child.innerHTML}</span><span class="nav-el-inactive"aria-hidden="true">${child.innerHTML}</span>`));
|
|
71
|
+
}
|
|
64
72
|
handleBackButtonClick() {
|
|
65
73
|
if (this.header)
|
|
66
74
|
this.header.toggleMobileMenu();
|
|
@@ -92,11 +100,11 @@ const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnaviga
|
|
|
92
100
|
this.canScrollLeft = this.canScrollRight = false;
|
|
93
101
|
}
|
|
94
102
|
else {
|
|
95
|
-
this.canScrollLeft = this.
|
|
96
|
-
this.canScrollRight = clientWidth + this.
|
|
103
|
+
this.canScrollLeft = this.translationAmount > 0; // Scrolling left is possible if not at the start
|
|
104
|
+
this.canScrollRight = clientWidth + this.translationAmount < scrollWidth; // Scrolling right is possible if not at the end
|
|
97
105
|
}
|
|
98
106
|
if (couldScroll && !this.canScroll) {
|
|
99
|
-
this.withoutTransition(() => (this.
|
|
107
|
+
this.withoutTransition(() => (this.translationAmount = 0));
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
/**
|
|
@@ -132,40 +140,53 @@ const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnaviga
|
|
|
132
140
|
if (direction === 'left')
|
|
133
141
|
navigationItems.reverse();
|
|
134
142
|
for (const item of navigationItems) {
|
|
135
|
-
const couldScroll = direction === 'left' ? this.translateLeftTo(item) : this.translateRightTo(item);
|
|
143
|
+
const couldScroll = direction === 'left' ? this.translateLeftTo(item, true) : this.translateRightTo(item, true);
|
|
136
144
|
if (couldScroll)
|
|
137
145
|
break;
|
|
138
146
|
}
|
|
139
147
|
}
|
|
140
|
-
translateRightTo(navigationItem) {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
translateRightTo(navigationItem, skipSmallTranslation = false) {
|
|
149
|
+
const listItem = navigationItem.closest('post-list-item');
|
|
150
|
+
// Calculate the right edge position of the list item relative to the left of the screen
|
|
151
|
+
const rightEdgePosition = listItem.offsetLeft + listItem.offsetWidth;
|
|
152
|
+
// Calculate the last visible position on the screen, right before the right scroll button
|
|
153
|
+
const lastVisiblePosition = this.host.clientWidth - this.rightScrollButton.clientWidth;
|
|
154
|
+
// If the item is already fully visible, no translation is needed
|
|
155
|
+
if (rightEdgePosition < lastVisiblePosition)
|
|
156
|
+
return false;
|
|
157
|
+
const translationIncrease = rightEdgePosition - lastVisiblePosition + 1; // + 1 because offset values are rounded
|
|
158
|
+
// If the required scroll distance is too small (less than half the width of the item), avoid unnecessary scroll
|
|
159
|
+
if (skipSmallTranslation && translationIncrease < listItem.clientWidth / 2)
|
|
145
160
|
return false;
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
|
|
161
|
+
// Calculate the maximum translation amount to prevent scrolling past the end of the content
|
|
162
|
+
const maximumTranslation = this.navbar.scrollWidth - this.host.clientWidth;
|
|
163
|
+
// Adjust the translation amount, ensuring it doesn't exceed the maximum scrollable area
|
|
164
|
+
const { marginRight } = getComputedStyle(this.navigationList);
|
|
165
|
+
this.translationAmount =
|
|
166
|
+
Math.min(this.translationAmount + translationIncrease, maximumTranslation) +
|
|
167
|
+
parseInt(marginRight);
|
|
149
168
|
return true;
|
|
150
169
|
}
|
|
151
|
-
translateLeftTo(navigationItem) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
170
|
+
translateLeftTo(navigationItem, skipSmallTranslation = false) {
|
|
171
|
+
const listItem = navigationItem.closest('post-list-item');
|
|
172
|
+
// Get the left edge position of the list item relative to the left of the screen
|
|
173
|
+
const leftEdgePosition = listItem.offsetLeft;
|
|
174
|
+
// Calculate the first visible position on the screen to the left, right after the left scroll button
|
|
175
|
+
const firstVisiblePosition = this.leftScrollButton.clientWidth;
|
|
176
|
+
// If the item is already fully visible, no translation is needed
|
|
177
|
+
if (leftEdgePosition > firstVisiblePosition)
|
|
178
|
+
return false;
|
|
179
|
+
const translationDecrease = firstVisiblePosition - leftEdgePosition + 1; // + 1 because offset values are rounded
|
|
180
|
+
// If the required scroll distance is too small (less than half the width of the item), don't perform the scroll
|
|
181
|
+
if (skipSmallTranslation && translationDecrease < listItem.clientWidth / 2)
|
|
156
182
|
return false;
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
|
|
183
|
+
// Calculate the minimum allowed translation amount (no negative scrolling allowed)
|
|
184
|
+
const minimumTranslation = 0;
|
|
185
|
+
// Adjust the translation amount, ensuring it doesn't go below the minimum scrollable area
|
|
186
|
+
const { marginLeft } = getComputedStyle(this.navigationList);
|
|
187
|
+
this.translationAmount = Math.max(this.translationAmount - translationDecrease - parseInt(marginLeft), minimumTranslation);
|
|
160
188
|
return true;
|
|
161
189
|
}
|
|
162
|
-
/**
|
|
163
|
-
* Calculate the margin required for focus outline around navigation items
|
|
164
|
-
*/
|
|
165
|
-
getFocusMargin(navigationItem) {
|
|
166
|
-
const { outlineWidth, outlineOffset } = getComputedStyle(navigationItem);
|
|
167
|
-
return parseInt(outlineWidth) + parseInt(outlineOffset) + 1;
|
|
168
|
-
}
|
|
169
190
|
/**
|
|
170
191
|
* Returns the navigation list container element
|
|
171
192
|
*/
|
|
@@ -202,18 +223,18 @@ const PostMainnavigation = /*@__PURE__*/ proxyCustomElement(class PostMainnaviga
|
|
|
202
223
|
});
|
|
203
224
|
}
|
|
204
225
|
render() {
|
|
205
|
-
return (h(Host, { key: '
|
|
226
|
+
return (h(Host, { key: 'd9be56167f714c041eb05283832986ec38c451cd', slot: "post-mainnavigation" }, h("div", { key: '5852c66b93a6eb9697fd7c7b1379e748804c6917', onClick: () => this.handleBackButtonClick(), class: "back-button" }, h("slot", { key: '0d4d98897fb5a8f8cf1c0871037ac01023c41cc2', name: "back-button" })), h("nav", { key: 'c60635b5db5a54b9e7661b92eeec29ed6d453cfe', ref: el => (this.navbar = el) }, h("slot", { key: 'd83facd6cb8c2a892ad432e42357123660c647ed' })), h("div", { key: 'e9afc48596b3e877d9efb9a4189abb8c84aadb6d', class: `left-scroll-button${this.canScrollLeft ? '' : ' d-none'}`, "aria-hidden": "true" }, h("button", { key: 'ef11720ec4f6d7811eb10027871a336e46ba6b84', type: "button", tabindex: "-1", ref: el => (this.leftScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('left') }, h("post-icon", { key: 'f85ff2ef87841409f4b4f6c33e6d0dca4c764cc6', "aria-hidden": "true", name: "chevronleft" }))), h("div", { key: '181dc100ddedcba3f07b5f0ff9aedf165499f74f', class: `right-scroll-button${this.canScrollRight ? '' : ' d-none'}`, "aria-hidden": "true" }, h("button", { key: '83a8a824fcfe499207f6030e11381e68d530c67d', type: "button", tabindex: "-1", ref: el => (this.rightScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('right') }, h("post-icon", { key: '52caec8a9a8c15e97ea5702ec3fe30bd4777c728', "aria-hidden": "true", name: "chevronright" })))));
|
|
206
227
|
}
|
|
207
228
|
static get watchers() { return {
|
|
208
|
-
"
|
|
229
|
+
"translationAmount": ["onTranslateAmountChanges"]
|
|
209
230
|
}; }
|
|
210
231
|
static get style() { return PostMainnavigationStyle0; }
|
|
211
232
|
}, [4, "post-mainnavigation", {
|
|
212
233
|
"canScrollLeft": [32],
|
|
213
234
|
"canScrollRight": [32],
|
|
214
|
-
"
|
|
235
|
+
"translationAmount": [32]
|
|
215
236
|
}, [[9, "mouseup", "stopScrolling"]], {
|
|
216
|
-
"
|
|
237
|
+
"translationAmount": ["onTranslateAmountChanges"]
|
|
217
238
|
}]);
|
|
218
239
|
function defineCustomElement() {
|
|
219
240
|
if (typeof customElements === "undefined") {
|
|
@@ -18,6 +18,11 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
|
|
|
18
18
|
* Used to manage click and key events for mega dropdown control.
|
|
19
19
|
*/
|
|
20
20
|
slottedButton = null;
|
|
21
|
+
/**
|
|
22
|
+
* Tracks whether this trigger's dropdown was expanded before a state change.
|
|
23
|
+
* Used to determine if this trigger should handle focus when its dropdown closes.
|
|
24
|
+
*/
|
|
25
|
+
wasExpanded = false;
|
|
21
26
|
/**
|
|
22
27
|
* Watch for changes to the `for` property to validate its type and ensure it is a string.
|
|
23
28
|
* @param forValue - The new value of the `for` property.
|
|
@@ -39,12 +44,28 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
|
|
|
39
44
|
console.warn(`No post-megadropdown found with ID: ${this.for}`);
|
|
40
45
|
}
|
|
41
46
|
}
|
|
47
|
+
handleKeyDown = (event) => {
|
|
48
|
+
if (event.key === 'Enter') {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
this.handleToggle();
|
|
51
|
+
if (this.megadropdown && !this.ariaExpanded) {
|
|
52
|
+
setTimeout(() => this.megadropdown.focusFirst(), 100);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
42
56
|
componentDidLoad() {
|
|
43
57
|
this.validateControlFor();
|
|
44
58
|
// Check if the mega dropdown attached to the trigger is expanded or not
|
|
45
59
|
document.addEventListener('postToggleMegadropdown', (event) => {
|
|
46
60
|
if (event.target.id === this.for) {
|
|
47
|
-
this.ariaExpanded = event.detail;
|
|
61
|
+
this.ariaExpanded = event.detail.isVisible;
|
|
62
|
+
// Focus on the trigger parent of the dropdown after it's closed if close button had been clicked
|
|
63
|
+
if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
this.slottedButton?.focus();
|
|
66
|
+
}, 100);
|
|
67
|
+
}
|
|
68
|
+
this.wasExpanded = this.ariaExpanded;
|
|
48
69
|
if (this.slottedButton) {
|
|
49
70
|
this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
|
|
50
71
|
}
|
|
@@ -56,13 +77,14 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
|
|
|
56
77
|
this.slottedButton.addEventListener('click', () => {
|
|
57
78
|
this.handleToggle();
|
|
58
79
|
});
|
|
80
|
+
this.slottedButton.addEventListener('keydown', this.handleKeyDown);
|
|
59
81
|
}
|
|
60
82
|
else {
|
|
61
83
|
console.warn('No button found within post-megadropdown-trigger');
|
|
62
84
|
}
|
|
63
85
|
}
|
|
64
86
|
render() {
|
|
65
|
-
return (h(Host, { key: '
|
|
87
|
+
return (h(Host, { key: '108c3703a2abb21bda4e907e3dfbbaf7a572ff0a', "data-version": version, "tab-index": "-1" }, h("button", { key: 'd7ab70fef0db1dcaa908fdc75b8d751e94d04bb9' }, h("slot", { key: 'c2c4c633794da7777849bc1e6380e98a4bf0f1b5' }))));
|
|
66
88
|
}
|
|
67
89
|
static get watchers() { return {
|
|
68
90
|
"for": ["validateControlFor"]
|