@swisspost/design-system-components 9.0.0-next.32 → 9.0.0-next.33

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.
Files changed (200) hide show
  1. package/dist/cjs/event-guard-efabc84f.js +47 -0
  2. package/dist/cjs/index.cjs.js +21 -20
  3. package/dist/cjs/{package-6f8f430c.js → package-3562c265.js} +1 -1
  4. package/dist/cjs/{post-accordion-e3a6d78e.js → post-accordion-6c5681ba.js} +6 -8
  5. package/dist/cjs/{post-accordion-item-7ed1f630.js → post-accordion-item-05a78451.js} +7 -7
  6. package/dist/cjs/post-accordion-item.cjs.entry.js +3 -2
  7. package/dist/cjs/post-accordion.cjs.entry.js +3 -2
  8. package/dist/cjs/{post-avatar-de8ec197.js → post-avatar-6710a77a.js} +1 -1
  9. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  10. package/dist/cjs/post-back-to-top-d0662842.js +96 -0
  11. package/dist/cjs/post-back-to-top.cjs.entry.js +2 -2
  12. package/dist/cjs/{post-banner-bf523706.js → post-banner-bd97db9c.js} +1 -1
  13. package/dist/cjs/post-banner.cjs.entry.js +2 -2
  14. package/dist/cjs/{post-breadcrumb-da55143a.js → post-breadcrumb-36ab841c.js} +1 -1
  15. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +2 -2
  16. package/dist/cjs/post-breadcrumb.cjs.entry.js +2 -2
  17. package/dist/cjs/{post-card-control-0bcd7d16.js → post-card-control-155fb433.js} +1 -1
  18. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  19. package/dist/cjs/post-closebutton_15.cjs.entry.js +3 -2
  20. package/dist/cjs/{post-collapsible-trigger-a5e4451d.js → post-collapsible-trigger-6601c554.js} +16 -6
  21. package/dist/cjs/post-collapsible_2.cjs.entry.js +3 -2
  22. package/dist/cjs/{post-footer-b15fee73.js → post-footer-23699aef.js} +1 -1
  23. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  24. package/dist/cjs/{post-linkarea-8c85bf5e.js → post-linkarea-8e5e1a9f.js} +1 -1
  25. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  26. package/dist/cjs/{post-menu-item-509877cd.js → post-menu-item-8dd94792.js} +1 -1
  27. package/dist/cjs/{post-popover-1213aa19.js → post-popover-858cbd12.js} +1 -1
  28. package/dist/cjs/post-popover.cjs.entry.js +2 -2
  29. package/dist/cjs/{post-rating-e1f8a668.js → post-rating-ef592484.js} +1 -1
  30. package/dist/cjs/post-rating.cjs.entry.js +2 -2
  31. package/dist/cjs/{post-tab-header-889a6c64.js → post-tab-header-d785e7fc.js} +1 -1
  32. package/dist/cjs/post-tab-header.cjs.entry.js +2 -2
  33. package/dist/cjs/{post-tab-panel-300f39a9.js → post-tab-panel-41ea371e.js} +1 -1
  34. package/dist/cjs/post-tab-panel.cjs.entry.js +2 -2
  35. package/dist/cjs/{post-tabs-dc281228.js → post-tabs-c6f00130.js} +1 -1
  36. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  37. package/dist/cjs/{post-tag-fd9e586f.js → post-tag-d1a1176c.js} +1 -1
  38. package/dist/cjs/post-tag.cjs.entry.js +2 -2
  39. package/dist/cjs/{post-togglebutton-ad6ae1e4.js → post-togglebutton-02c56b7b.js} +72 -49
  40. package/dist/cjs/{post-tooltip-52d690e4.js → post-tooltip-3176e280.js} +1 -1
  41. package/dist/cjs/post-tooltip.cjs.entry.js +2 -2
  42. package/dist/collection/components/post-accordion/post-accordion.js +5 -7
  43. package/dist/collection/components/post-accordion-item/post-accordion-item.js +6 -6
  44. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  45. package/dist/collection/components/post-back-to-top/post-back-to-top.js +32 -12
  46. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +15 -5
  47. package/dist/collection/components/post-header/post-header.css +1 -1
  48. package/dist/collection/components/post-header/post-header.js +12 -6
  49. package/dist/collection/components/post-icon/post-icon.js +2 -2
  50. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  51. package/dist/collection/components/post-language-switch/post-language-switch.js +19 -13
  52. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  53. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  54. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +13 -6
  55. package/dist/collection/components/post-menu/post-menu.js +24 -17
  56. package/dist/collection/utils/event-guard.js +43 -0
  57. package/dist/components/event-guard.js +45 -0
  58. package/dist/components/package.js +1 -1
  59. package/dist/components/post-accordion-item2.js +6 -6
  60. package/dist/components/post-accordion2.js +5 -7
  61. package/dist/components/post-back-to-top2.js +33 -13
  62. package/dist/components/post-collapsible-trigger2.js +15 -5
  63. package/dist/components/post-header2.js +13 -7
  64. package/dist/components/post-icon2.js +2 -2
  65. package/dist/components/post-language-switch2.js +20 -14
  66. package/dist/components/post-mainnavigation2.js +1 -1
  67. package/dist/components/post-megadropdown-trigger2.js +13 -6
  68. package/dist/components/post-megadropdown2.js +1 -1
  69. package/dist/components/post-menu2.js +24 -17
  70. package/dist/docs.json +1 -1
  71. package/dist/esm/event-guard-538ee077.js +45 -0
  72. package/dist/esm/index.js +21 -20
  73. package/dist/esm/package-da68ab5a.js +3 -0
  74. package/dist/esm/{post-accordion-7b6fb9c3.js → post-accordion-024451fa.js} +6 -8
  75. package/dist/esm/{post-accordion-item-d40c0b26.js → post-accordion-item-19b996d1.js} +7 -7
  76. package/dist/esm/post-accordion-item.entry.js +3 -2
  77. package/dist/esm/post-accordion.entry.js +3 -2
  78. package/dist/esm/{post-avatar-04ca6e3e.js → post-avatar-33aed045.js} +1 -1
  79. package/dist/esm/post-avatar.entry.js +2 -2
  80. package/dist/esm/post-back-to-top-7dd43c3b.js +94 -0
  81. package/dist/esm/post-back-to-top.entry.js +2 -2
  82. package/dist/esm/{post-banner-7c37e3ef.js → post-banner-28d18721.js} +1 -1
  83. package/dist/esm/post-banner.entry.js +2 -2
  84. package/dist/esm/{post-breadcrumb-59e4d655.js → post-breadcrumb-d86fae7b.js} +1 -1
  85. package/dist/esm/post-breadcrumb-item_2.entry.js +2 -2
  86. package/dist/esm/post-breadcrumb.entry.js +2 -2
  87. package/dist/esm/{post-card-control-5471488b.js → post-card-control-aa043898.js} +1 -1
  88. package/dist/esm/post-card-control.entry.js +2 -2
  89. package/dist/esm/post-closebutton_15.entry.js +3 -2
  90. package/dist/esm/{post-collapsible-trigger-1f6d816e.js → post-collapsible-trigger-b1612866.js} +16 -6
  91. package/dist/esm/post-collapsible_2.entry.js +3 -2
  92. package/dist/esm/{post-footer-d30f4dc8.js → post-footer-2ed5e520.js} +1 -1
  93. package/dist/esm/post-footer.entry.js +2 -2
  94. package/dist/esm/{post-linkarea-8e1a561e.js → post-linkarea-802bf774.js} +1 -1
  95. package/dist/esm/post-linkarea.entry.js +2 -2
  96. package/dist/esm/{post-menu-item-0c8477eb.js → post-menu-item-d97611d8.js} +1 -1
  97. package/dist/esm/{post-popover-c43969ca.js → post-popover-e51a7a18.js} +1 -1
  98. package/dist/esm/post-popover.entry.js +2 -2
  99. package/dist/esm/{post-rating-94148df7.js → post-rating-e1ac47ce.js} +1 -1
  100. package/dist/esm/post-rating.entry.js +2 -2
  101. package/dist/esm/{post-tab-header-82df0ba9.js → post-tab-header-06dcbf7f.js} +1 -1
  102. package/dist/esm/post-tab-header.entry.js +2 -2
  103. package/dist/esm/{post-tab-panel-a6512f53.js → post-tab-panel-75932601.js} +1 -1
  104. package/dist/esm/post-tab-panel.entry.js +2 -2
  105. package/dist/esm/{post-tabs-d26ce341.js → post-tabs-3ef2ea23.js} +1 -1
  106. package/dist/esm/post-tabs.entry.js +2 -2
  107. package/dist/esm/{post-tag-41d1667e.js → post-tag-a3b989e0.js} +1 -1
  108. package/dist/esm/post-tag.entry.js +2 -2
  109. package/dist/esm/{post-togglebutton-4f94bddb.js → post-togglebutton-db251030.js} +72 -49
  110. package/dist/esm/{post-tooltip-20f916db.js → post-tooltip-c256d714.js} +1 -1
  111. package/dist/esm/post-tooltip.entry.js +2 -2
  112. package/dist/post-components/index.esm.js +1 -1
  113. package/dist/post-components/p-0889c759.js +1 -0
  114. package/dist/post-components/{p-077edb8c.js → p-1376c653.js} +1 -1
  115. package/dist/post-components/{p-6f058a98.js → p-13835969.js} +1 -1
  116. package/dist/post-components/p-13fdbaf6.entry.js +1 -0
  117. package/dist/post-components/{p-22513a27.entry.js → p-1e2169ae.entry.js} +1 -1
  118. package/dist/post-components/p-23e4c270.entry.js +1 -0
  119. package/dist/post-components/{p-c0c71e37.js → p-2641e06b.js} +1 -1
  120. package/dist/post-components/p-2d3b16c7.js +1 -0
  121. package/dist/post-components/{p-5e0f6c12.js → p-33c35e15.js} +1 -1
  122. package/dist/post-components/p-3b247d71.entry.js +1 -0
  123. package/dist/post-components/p-42a5fdf8.js +1 -0
  124. package/dist/post-components/{p-753a1935.js → p-4ed7bab6.js} +1 -1
  125. package/dist/post-components/p-5c518421.js +1 -0
  126. package/dist/post-components/p-6db1a2e0.entry.js +1 -0
  127. package/dist/post-components/p-6fe98184.entry.js +1 -0
  128. package/dist/post-components/p-7d731077.entry.js +1 -0
  129. package/dist/post-components/p-7ee47334.entry.js +1 -0
  130. package/dist/post-components/{p-c554fcf3.js → p-8223e97b.js} +1 -1
  131. package/dist/post-components/p-8a8376d0.js +1 -0
  132. package/dist/post-components/p-8bb828cf.entry.js +1 -0
  133. package/dist/post-components/{p-4397f28e.js → p-8e55ddd2.js} +1 -1
  134. package/dist/post-components/{p-90935fdd.js → p-9681efce.js} +1 -1
  135. package/dist/post-components/p-96a59372.entry.js +1 -0
  136. package/dist/post-components/p-99c8fd43.entry.js +1 -0
  137. package/dist/post-components/p-ac042f7a.entry.js +1 -0
  138. package/dist/post-components/p-c34cacb7.js +1 -0
  139. package/dist/post-components/{p-931c4523.js → p-c3a970c5.js} +1 -1
  140. package/dist/post-components/p-c4651d32.entry.js +1 -0
  141. package/dist/post-components/p-c9b61d31.entry.js +1 -0
  142. package/dist/post-components/{p-6ad7bf0f.js → p-d16dd7f9.js} +1 -1
  143. package/dist/post-components/p-d81c5908.entry.js +1 -0
  144. package/dist/post-components/{p-28e77ad3.js → p-dbe31632.js} +1 -1
  145. package/dist/post-components/{p-737d76cb.js → p-e2294014.js} +1 -1
  146. package/dist/post-components/{p-3638e50d.js → p-e8ff8122.js} +1 -1
  147. package/dist/post-components/p-ed78d04a.entry.js +1 -0
  148. package/dist/post-components/{p-08a13d05.js → p-f1c0924a.js} +1 -1
  149. package/dist/post-components/p-f1db96d0.entry.js +1 -0
  150. package/dist/post-components/p-f7aa917f.entry.js +1 -0
  151. package/dist/post-components/p-f96b80cc.entry.js +1 -0
  152. package/dist/post-components/p-fd78716d.js +1 -0
  153. package/dist/post-components/post-components.esm.js +1 -1
  154. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +3 -1
  155. package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +5 -0
  156. package/dist/types/components/post-language-switch/post-language-switch.d.ts +3 -0
  157. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +2 -0
  158. package/dist/types/components/post-menu/post-menu.d.ts +1 -0
  159. package/dist/types/utils/event-guard.d.ts +4 -0
  160. package/loaders/event-guard.js +45 -0
  161. package/loaders/package.js +1 -1
  162. package/loaders/post-accordion-item2.js +6 -6
  163. package/loaders/post-accordion.js +5 -7
  164. package/loaders/post-back-to-top.js +33 -13
  165. package/loaders/post-collapsible-trigger2.js +15 -5
  166. package/loaders/post-header.js +13 -7
  167. package/loaders/post-icon2.js +2 -2
  168. package/loaders/post-language-switch.js +20 -14
  169. package/loaders/post-mainnavigation.js +1 -1
  170. package/loaders/post-megadropdown-trigger.js +13 -6
  171. package/loaders/post-megadropdown.js +1 -1
  172. package/loaders/post-menu2.js +24 -17
  173. package/package.json +3 -3
  174. package/dist/cjs/post-back-to-top-6a1c1ba4.js +0 -76
  175. package/dist/esm/package-70367d05.js +0 -3
  176. package/dist/esm/post-back-to-top-abe253c1.js +0 -74
  177. package/dist/post-components/p-015361b5.entry.js +0 -1
  178. package/dist/post-components/p-08c3b919.entry.js +0 -1
  179. package/dist/post-components/p-0d7b0c2e.entry.js +0 -1
  180. package/dist/post-components/p-12f9a91e.entry.js +0 -1
  181. package/dist/post-components/p-20137c6a.entry.js +0 -1
  182. package/dist/post-components/p-21254d9c.entry.js +0 -1
  183. package/dist/post-components/p-494a2a31.js +0 -1
  184. package/dist/post-components/p-509987da.entry.js +0 -1
  185. package/dist/post-components/p-5d0bb74d.js +0 -1
  186. package/dist/post-components/p-5f89f4e8.entry.js +0 -1
  187. package/dist/post-components/p-6213f0dc.entry.js +0 -1
  188. package/dist/post-components/p-88a2cdaa.js +0 -1
  189. package/dist/post-components/p-97865e22.entry.js +0 -1
  190. package/dist/post-components/p-a200c9c7.js +0 -1
  191. package/dist/post-components/p-a35c235a.entry.js +0 -1
  192. package/dist/post-components/p-a4264a61.entry.js +0 -1
  193. package/dist/post-components/p-a54c63d0.entry.js +0 -1
  194. package/dist/post-components/p-aebe402d.entry.js +0 -1
  195. package/dist/post-components/p-b43e79e3.entry.js +0 -1
  196. package/dist/post-components/p-c0ca344d.js +0 -1
  197. package/dist/post-components/p-cff7c06f.entry.js +0 -1
  198. package/dist/post-components/p-d1f70a05.entry.js +0 -1
  199. package/dist/post-components/p-dc67e6de.entry.js +0 -1
  200. package/dist/post-components/p-f1ceccf3.js +0 -1
@@ -0,0 +1,43 @@
1
+ export function eventGuard(host, event, options, callback) {
2
+ const target = event.target;
3
+ if (!target)
4
+ return;
5
+ if (target.localName === options.targetLocalName) {
6
+ if (!options.delegatorSelector || shadowClosest(target, options.delegatorSelector) === host) {
7
+ callback();
8
+ }
9
+ }
10
+ }
11
+ /**
12
+ * Traverses up the DOM (including crossing shadow DOM boundaries) starting from the given element
13
+ * to find and return the closest ancestor that matches the specified CSS selector.
14
+ * If no matching element is found, returns null.
15
+ *
16
+ * @param element - The starting element from which the search begins.
17
+ * @param selector - The CSS selector used to test each ancestor element.
18
+ * @returns The closest matching ancestor element or null if none is found.
19
+ */
20
+ function shadowClosest(element, selector) {
21
+ let currentElement = element;
22
+ while (currentElement) {
23
+ if (currentElement.matches(selector)) {
24
+ return currentElement;
25
+ }
26
+ const parent = currentElement.parentElement;
27
+ if (parent) {
28
+ currentElement = parent;
29
+ }
30
+ else {
31
+ const parentNode = currentElement.parentNode;
32
+ // When no parentElement exists, check if the current element is inside a shadow DOM.
33
+ // If so, move up to the shadow host to continue the search outside the shadow boundary.
34
+ if (parentNode instanceof ShadowRoot) {
35
+ currentElement = parentNode.host;
36
+ }
37
+ else {
38
+ currentElement = null;
39
+ }
40
+ }
41
+ }
42
+ return null;
43
+ }
@@ -0,0 +1,45 @@
1
+ function eventGuard(host, event, options, callback) {
2
+ const target = event.target;
3
+ if (!target)
4
+ return;
5
+ if (target.localName === options.targetLocalName) {
6
+ if (!options.delegatorSelector || shadowClosest(target, options.delegatorSelector) === host) {
7
+ callback();
8
+ }
9
+ }
10
+ }
11
+ /**
12
+ * Traverses up the DOM (including crossing shadow DOM boundaries) starting from the given element
13
+ * to find and return the closest ancestor that matches the specified CSS selector.
14
+ * If no matching element is found, returns null.
15
+ *
16
+ * @param element - The starting element from which the search begins.
17
+ * @param selector - The CSS selector used to test each ancestor element.
18
+ * @returns The closest matching ancestor element or null if none is found.
19
+ */
20
+ function shadowClosest(element, selector) {
21
+ let currentElement = element;
22
+ while (currentElement) {
23
+ if (currentElement.matches(selector)) {
24
+ return currentElement;
25
+ }
26
+ const parent = currentElement.parentElement;
27
+ if (parent) {
28
+ currentElement = parent;
29
+ }
30
+ else {
31
+ const parentNode = currentElement.parentNode;
32
+ // When no parentElement exists, check if the current element is inside a shadow DOM.
33
+ // If so, move up to the shadow host to continue the search outside the shadow boundary.
34
+ if (parentNode instanceof ShadowRoot) {
35
+ currentElement = parentNode.host;
36
+ }
37
+ else {
38
+ currentElement = null;
39
+ }
40
+ }
41
+ }
42
+ return null;
43
+ }
44
+
45
+ export { eventGuard as e };
@@ -1,3 +1,3 @@
1
- const version = "9.0.0-next.32";
1
+ const version = "9.0.0-next.33";
2
2
 
3
3
  export { version as v };
@@ -3,6 +3,7 @@ import { v as version } from './package.js';
3
3
  import { H as HEADING_LEVELS } from './heading-levels.js';
4
4
  import { c as checkEmptyOrOneOf } from './index2.js';
5
5
  import { n as nanoid } from './index.browser.js';
6
+ import { e as eventGuard } from './event-guard.js';
6
7
  import { d as defineCustomElement$3 } from './post-collapsible2.js';
7
8
  import { d as defineCustomElement$2 } from './post-collapsible-trigger2.js';
8
9
  import { d as defineCustomElement$1 } from './post-icon2.js';
@@ -31,12 +32,11 @@ const PostAccordionItem = /*@__PURE__*/ proxyCustomElement(class PostAccordionIt
31
32
  componentDidLoad() {
32
33
  this.validateHeadingLevel();
33
34
  }
34
- // capture to make sure the "collapsed" property is updated before the event is consumed
35
+ // Capture to make sure the "collapsed" property is updated before the event is consumed
35
36
  onCollapseToggle(event) {
36
- if (event.target === this.host &&
37
- event.target.localName === 'post-accordion-item') {
37
+ eventGuard(this.host, event, { targetLocalName: 'post-collapsible', delegatorSelector: 'post-accordion-item' }, () => {
38
38
  this.collapsed = !event.detail;
39
- }
39
+ });
40
40
  }
41
41
  /**
42
42
  * Triggers the collapse programmatically.
@@ -53,10 +53,10 @@ const PostAccordionItem = /*@__PURE__*/ proxyCustomElement(class PostAccordionIt
53
53
  render() {
54
54
  const headingLevel = this.host.closest('post-accordion')?.getAttribute('heading-level');
55
55
  const HeadingTag = `h${headingLevel ?? this.headingLevel ?? 2}`;
56
- return (h(Host, { key: '4c4baf7ac22c632de6b0bc332ffc275e50bb4d71', id: this.id, "data-version": version }, h("div", { key: '576529323c3adca347ec685688c071e21a2f3a76', part: "accordion-item", class: "accordion-item" }, h("post-collapsible-trigger", { key: 'cc29c396173e55168a3bec963d5e101cb3fb17b2', for: `${this.id}--collapse` }, h(HeadingTag, { key: '76f8eed33f0c84bf6e1a534b04a8ccc0c69c6380', class: "accordion-header", id: `${this.id}--header` }, h("button", { key: 'f56e67ffc94fea0452d1879d3410318b3b12c4bc', type: "button", class: `accordion-button${this.collapsed ? ' collapsed' : ''}`, part: "button" }, h("span", { key: 'd5f23318d5c498e0cd9dd1f15c13a636e49b7817', class: {
56
+ return (h(Host, { key: '725d3710f7937f82c2382938d15770001e923b61', id: this.id, "data-version": version }, h("div", { key: '679d25d8278fbf9ae68546ee50c27a86ded95999', part: "accordion-item", class: "accordion-item" }, h("post-collapsible-trigger", { key: '7c2af8dc6a1f5265b4ae2cad066be7d2e0bf6a78', for: `${this.id}--collapse` }, h(HeadingTag, { key: 'a10e59a17fdb272fe6308d2ba98f37f90490fab8', class: "accordion-header", id: `${this.id}--header` }, h("button", { key: 'e2b527850c8342a8adf99453d0ac330b6a94760f', type: "button", class: `accordion-button${this.collapsed ? ' collapsed' : ''}`, part: "button" }, h("span", { key: 'b722a4bc51757546eefa58c7c3ea3a688838298a', class: {
57
57
  'logo-container': true,
58
58
  'has-image': !!this.slottedLogo,
59
- } }, h("slot", { key: '051d48cc4201e2d954f4d4bc25c836ddc8e24d0f', name: "logo", onSlotchange: this.onSlotLogoChange.bind(this) })), h("slot", { key: 'e9f687c79fab8bd3bd94e4da022b2aea7e0bba5c', name: "header" }), h("post-icon", { key: 'c1f3486254269ab50a89bd6acf8c714cbbced3b8', name: "2051" })))), h("post-collapsible", { key: '7f3788a90e59cdb4f985fd14c64286cb938a3c23', id: `${this.id}--collapse`, collapsed: this.collapsed, ref: el => (this.collapsible = el) }, h("div", { key: 'e17ae656614ac27d4f09ebba0a7bb547f88f5728', class: "accordion-body", part: "body" }, h("slot", { key: '0387ebe5ce518bbb8b78c66d919715a78b5ae558' }))))));
59
+ } }, h("slot", { key: '1a42494db72a7b437b1d98fa2e8159d73ece22fa', name: "logo", onSlotchange: this.onSlotLogoChange.bind(this) })), h("slot", { key: '049865bb25f833780ef8e27fe8477e06476a2427', name: "header" }), h("post-icon", { key: 'da0cf7078e4f51710dbfd39c0afa90465fcb53c6', name: "2051" })))), h("post-collapsible", { key: '7c3b268e34d3e4f52820b11a6c090aefbc16e3b9', id: `${this.id}--collapse`, collapsed: this.collapsed, ref: el => (this.collapsible = el) }, h("div", { key: '993a7fffbccb557aed2842305f3927e5c3b5047a', class: "accordion-body", part: "body" }, h("slot", { key: '580eb87b1cb4f88acd7dddddecaa1c1982b7f6e3' }))))));
60
60
  }
61
61
  static get watchers() { return {
62
62
  "headingLevel": ["validateHeadingLevel"]
@@ -2,6 +2,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
2
2
  import { v as version } from './package.js';
3
3
  import { H as HEADING_LEVELS } from './heading-levels.js';
4
4
  import { c as checkOneOf } from './check-one-of.js';
5
+ import { e as eventGuard } from './event-guard.js';
5
6
 
6
7
  const postAccordionCss = ":host{display:block}::slotted(post-accordion-item){display:block}::slotted(post-accordion-item:not(:only-of-type:first-of-type)){margin-block-start:calc(var(--post-device-border-width-default)*-1)}::slotted(post-accordion-item:not(:only-of-type):first-of-type){--post-accordion-button-border-top:var(--post-device-border-width-default) var(--post-core-border-style-solid) var(--post-scheme-color-interactive-primary-enabled-stroke)}";
7
8
  const PostAccordionStyle0 = postAccordionCss;
@@ -30,10 +31,7 @@ const PostAccordion = /*@__PURE__*/ proxyCustomElement(class PostAccordion exten
30
31
  this.validateHeadingLevel();
31
32
  }
32
33
  collapseToggleHandler(event) {
33
- event.stopPropagation();
34
- const toggledItem = event.target;
35
- const closestParentAccordion = toggledItem.closest('post-accordion');
36
- if (closestParentAccordion === this.host && toggledItem.localName === 'post-accordion-item') {
34
+ eventGuard(this.host, event, { targetLocalName: 'post-accordion-item', delegatorSelector: 'post-accordion' }, () => {
37
35
  const toggledAccordionItem = event.target;
38
36
  const isClosing = this.expandedItems.has(toggledAccordionItem);
39
37
  if (isClosing) {
@@ -44,13 +42,13 @@ const PostAccordion = /*@__PURE__*/ proxyCustomElement(class PostAccordion exten
44
42
  }
45
43
  if (this.multiple || isClosing)
46
44
  return;
47
- // close other open accordion items to have only one opened at a time
45
+ // Close other open accordion items to ensure only one is open at a time
48
46
  Array.from(this.expandedItems.values())
49
47
  .filter(item => item !== toggledAccordionItem)
50
48
  .forEach(item => {
51
49
  item.toggle(false);
52
50
  });
53
- }
51
+ });
54
52
  }
55
53
  /**
56
54
  * Toggles the `post-accordion-item` with the given id.
@@ -96,7 +94,7 @@ const PostAccordion = /*@__PURE__*/ proxyCustomElement(class PostAccordion exten
96
94
  });
97
95
  }
98
96
  render() {
99
- return (h(Host, { key: '9ec8ca1ceac6587be68272568f216c958460ac0a', "data-version": version }, h("div", { key: '99887626d105f0e8f86b24e211591e7be820738d', class: "accordion" }, h("slot", { key: '4d8a003377c3a90648818a00144fd5f3a65be084', onSlotchange: () => this.registerAccordionItems() }))));
97
+ return (h(Host, { key: '80e15cf7835f213cfee1ca7cf83cc2fd24bba3ff', "data-version": version }, h("div", { key: '1cf03d4960115b52394b5cb07cd2286747c728dd', class: "accordion" }, h("slot", { key: 'b94328a45a3cba6a8d3b418061036eb8af2cf027', onSlotchange: () => this.registerAccordionItems() }))));
100
98
  }
101
99
  static get watchers() { return {
102
100
  "headingLevel": ["validateHeadingLevel"]
@@ -5,7 +5,7 @@ import { c as checkType } from './check-type.js';
5
5
  import { c as checkNonEmpty } from './check-non-empty.js';
6
6
  import { d as defineCustomElement$1 } from './post-icon2.js';
7
7
 
8
- const postBackToTopCss = ":host{--post-floating-button-translate-y:calc(-1 * var(--post-core-dimension-112));position:fixed;inset-block-start:var(--post-device-position-4);inset-inline-end:var(--post-device-position-1)}:host .back-to-top{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;box-shadow:var(--post-device-elevation-300);cursor:pointer;border-radius:var(--post-device-border-radius-round);width:var(--post-device-sizing-interactive-button-height-2);height:var(--post-device-sizing-interactive-button-height-2);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-button-secondary-enabled-stroke);color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);background-color:var(--post-scheme-color-interactive-button-secondary-enabled-bg);display:flex;align-items:center;justify-content:center}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top{background-color:ButtonFace !important}:host .back-to-top:hover{background-color:Highlight !important}}:host .back-to-top{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 .back-to-top: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 .back-to-top:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host .back-to-top: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 .back-to-top:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}:host .back-to-top:hover{border-color:var(--post-scheme-color-interactive-button-secondary-hover-stroke);color:var(--post-scheme-color-interactive-button-secondary-hover-fg);background-color:var(--post-scheme-color-interactive-button-secondary-hover-bg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top:hover{color:HighlightText !important}}:host .back-to-top post-icon{height:var(--post-device-sizing-interactive-button-icon-3);width:var(--post-device-sizing-interactive-button-icon-3)}:host .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
8
+ const postBackToTopCss = ":host{--post-floating-button-position-top:var(--post-device-position-4);--post-back-to-top-position-top:calc( var(--post-header-height) + var(--post-floating-button-position-top) );--post-back-to-top-elevation:var(--post-device-elevation-300);position:fixed;inset-block-start:var(--post-back-to-top-position-top);inset-inline-end:var(--post-device-position-1)}:host .back-to-top{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;box-shadow:var(--post-back-to-top-elevation);cursor:pointer;border-radius:var(--post-device-border-radius-round);width:var(--post-device-sizing-interactive-button-height-2);height:var(--post-device-sizing-interactive-button-height-2);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-button-secondary-enabled-stroke);color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);background-color:var(--post-scheme-color-interactive-button-secondary-enabled-bg);display:flex;align-items:center;justify-content:center}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top{background-color:ButtonFace !important}:host .back-to-top:hover{background-color:Highlight !important}}:host .back-to-top{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 .back-to-top: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 .back-to-top:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host .back-to-top: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 .back-to-top:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}:host .back-to-top:hover{border-color:var(--post-scheme-color-interactive-button-secondary-hover-stroke);color:var(--post-scheme-color-interactive-button-secondary-hover-fg);background-color:var(--post-scheme-color-interactive-button-secondary-hover-bg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .back-to-top:hover{color:HighlightText !important}}:host .back-to-top post-icon{height:var(--post-device-sizing-interactive-button-icon-3);width:var(--post-device-sizing-interactive-button-icon-3)}:host .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
9
9
  const PostBackToTopStyle0 = postBackToTopCss;
10
10
 
11
11
  const PostBackToTop = /*@__PURE__*/ proxyCustomElement(class PostBackToTop extends HTMLElement {
@@ -24,7 +24,7 @@ const PostBackToTop = /*@__PURE__*/ proxyCustomElement(class PostBackToTop exten
24
24
  handleScroll = () => {
25
25
  this.belowFold = this.isBelowFold();
26
26
  };
27
- // Watch for changes in belowFold
27
+ /*Watch for changes in belowFold to show/hide the back to top button*/
28
28
  watchBelowFold(newValue) {
29
29
  if (newValue) {
30
30
  slideDown(this.host, this.translateY);
@@ -36,8 +36,37 @@ const PostBackToTop = /*@__PURE__*/ proxyCustomElement(class PostBackToTop exten
36
36
  scrollToTop() {
37
37
  window.scrollTo({
38
38
  top: 0,
39
+ behavior: 'smooth',
39
40
  });
40
41
  }
42
+ getSecondPixelValue(parts) {
43
+ for (const part of parts) {
44
+ const pixelValues = part.match(/\b\d+px\b/g);
45
+ if (pixelValues && pixelValues.length > 1) {
46
+ return pixelValues[1];
47
+ }
48
+ }
49
+ }
50
+ animateButton() {
51
+ // Get the back-to-top button top postiion
52
+ const positionTop = window.getComputedStyle(this.host).getPropertyValue('top');
53
+ const buttonElement = this.host.shadowRoot.querySelector('button');
54
+ // Extract the elevation height from the back-to-top button elevation token
55
+ const elevation = getComputedStyle(buttonElement).getPropertyValue('--post-back-to-top-elevation');
56
+ const elevationParts = elevation.split(',');
57
+ const elevationHeight = this.getSecondPixelValue(elevationParts);
58
+ // The translateY is calculated as => -100% (btt button height) - topPosition - elevationHeight
59
+ this.translateY =
60
+ String((-1 * 100) / 100 -
61
+ parseFloat(positionTop.replace('px', '')) -
62
+ parseFloat(elevationHeight.replace('px', ''))) + 'px';
63
+ if (this.belowFold) {
64
+ slideDown(this.host, this.translateY);
65
+ }
66
+ if (!this.belowFold) {
67
+ this.host.style.transform = `translateY(${this.translateY})`;
68
+ }
69
+ }
41
70
  // Validate the label
42
71
  validateLabel() {
43
72
  checkType(this, 'label', 'string');
@@ -49,23 +78,14 @@ const PostBackToTop = /*@__PURE__*/ proxyCustomElement(class PostBackToTop exten
49
78
  }
50
79
  componentDidLoad() {
51
80
  window.addEventListener('scroll', this.handleScroll, false);
52
- this.translateY = window
53
- .getComputedStyle(this.host)
54
- .getPropertyValue('--post-floating-button-translate-y');
55
- if (!this.belowFold) {
56
- this.host.style.transform = `translateY(${this.translateY})`;
57
- }
58
- // Initial load
59
- if (this.belowFold) {
60
- slideUp(this.host, this.translateY);
61
- }
81
+ this.animateButton();
62
82
  this.validateLabel();
63
83
  }
64
84
  disconnectedCallback() {
65
85
  window.removeEventListener('scroll', this.handleScroll);
66
86
  }
67
87
  render() {
68
- return (h(Host, { key: '4d8c4e05ebcdd088c924ac0329b2238eb1d3c6ca', "data-version": version }, h("button", { key: 'fc37aff8558d7eb4b27a870f11133fc6984f4e11', class: "back-to-top", "aria-hidden": this.belowFold ? 'false' : 'true', tabindex: this.belowFold ? '0' : '-1', onClick: this.scrollToTop }, h("post-icon", { key: '4b978c44982ec0b02798ce75766b2acdd8497412', "aria-hidden": "true", name: "3026" }), h("span", { key: '4a899be348a6c8721696c634970773cd77f685d9', class: "visually-hidden" }, this.label))));
88
+ return (h(Host, { key: '2198e7aaf2259ea49e4d1037770960e010fb33c9', "data-version": version }, h("button", { key: 'f2e5f0dc2ea445a7fdc89171c7ca3a11ff716916', class: "back-to-top", "aria-hidden": this.belowFold ? 'false' : 'true', tabindex: this.belowFold ? '0' : '-1', onClick: this.scrollToTop }, h("post-icon", { key: '1c749482ad6ea4be61f10973197df9b65a949b82', "aria-hidden": "true", name: "3026" }), h("span", { key: '67d90bbcbfa72b9d593e24ba75d78d55e5d78b18', class: "visually-hidden" }, this.label))));
69
89
  }
70
90
  static get watchers() { return {
71
91
  "belowFold": ["watchBelowFold"],
@@ -4,6 +4,7 @@ import { c as checkType } from './check-type.js';
4
4
  import { c as checkNonEmpty } from './check-non-empty.js';
5
5
  import { d as debounce } from './debounce.js';
6
6
  import { g as getRoot } from './get-root.js';
7
+ import { e as eventGuard } from './event-guard.js';
7
8
 
8
9
  const PostCollapsibleTrigger = /*@__PURE__*/ proxyCustomElement(class PostCollapsibleTrigger extends HTMLElement {
9
10
  constructor() {
@@ -27,6 +28,8 @@ const PostCollapsibleTrigger = /*@__PURE__*/ proxyCustomElement(class PostCollap
27
28
  * Initiate a mutation observer that updates the trigger whenever necessary
28
29
  */
29
30
  connectedCallback() {
31
+ this.root = getRoot(this.host);
32
+ this.root.addEventListener('postToggle', this.handlePostToggle);
30
33
  this.observer.observe(this.host, { childList: true, subtree: true });
31
34
  }
32
35
  /**
@@ -35,11 +38,6 @@ const PostCollapsibleTrigger = /*@__PURE__*/ proxyCustomElement(class PostCollap
35
38
  */
36
39
  componentWillLoad() {
37
40
  this.root = getRoot(this.host);
38
- this.root.addEventListener('postToggle', (e) => {
39
- if (!this.trigger || !e.target.isEqualNode(this.collapsible))
40
- return;
41
- this.trigger.setAttribute('aria-expanded', `${e.detail}`);
42
- });
43
41
  }
44
42
  /**
45
43
  * Add the "data-version" to the host element and set the trigger
@@ -55,6 +53,7 @@ const PostCollapsibleTrigger = /*@__PURE__*/ proxyCustomElement(class PostCollap
55
53
  */
56
54
  disconnectedCallback() {
57
55
  this.observer.disconnect();
56
+ this.root.removeEventListener('postToggle', this.handlePostToggle);
58
57
  }
59
58
  /**
60
59
  * Update the "aria-controls" and "aria-expanded" attributes on the trigger button
@@ -62,6 +61,17 @@ const PostCollapsibleTrigger = /*@__PURE__*/ proxyCustomElement(class PostCollap
62
61
  async update() {
63
62
  this.debouncedUpdate();
64
63
  }
64
+ /**
65
+ * Private handler for the 'postToggle' event.
66
+ * This updates the trigger's "aria-expanded" attribute based on the event detail.
67
+ */
68
+ handlePostToggle(e) {
69
+ eventGuard(this.host, e, { targetLocalName: 'post-collapsible' }, () => {
70
+ if (this.trigger) {
71
+ this.trigger.setAttribute('aria-expanded', `${e.detail}`);
72
+ }
73
+ });
74
+ }
65
75
  debouncedUpdate = debounce(() => {
66
76
  if (!this.trigger)
67
77
  return;
@@ -2,6 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
2
2
  import { v as version } from './package.js';
3
3
  import { a as slideUp, s as slideDown } from './slide.js';
4
4
  import { g as getFocusableChildren } from './get-focusable-children.js';
5
+ import { e as eventGuard } from './event-guard.js';
5
6
 
6
7
  /* eslint-disable no-undefined,no-param-reassign,no-shadow */
7
8
 
@@ -137,7 +138,7 @@ function throttle (delay, callback, options) {
137
138
  return wrapper;
138
139
  }
139
140
 
140
- const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--global-header-height) - var(--global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height) );--logo-height:calc(var(--global-header-height) - var(--header-scroll-top));--global-controls-top:calc(min((var(--header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--global-header-height);--logo-height:var(--global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
141
+ const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--post-global-header-height) - var(--post-global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--post-local-header-height) - var(--post-main-navigation-height)) + var(--post-global-header-reduced-height) );--logo-height:calc(var(--post-global-header-height) - var(--post-header-scroll-top));--global-controls-top:calc(min((var(--post-header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--post-global-header-height);--logo-height:var(--post-global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--post-global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--post-global-header-height);width:var(--post-global-header-height);min-height:var(--post-global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--post-local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--post-global-header-height);padding-block:8px;flex-wrap:wrap;gap:12px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--post-global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--post-header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
141
142
  const PostHeaderStyle0 = postHeaderCss;
142
143
 
143
144
  const PostHeader = /*@__PURE__*/ proxyCustomElement(class PostHeader extends HTMLElement {
@@ -254,9 +255,14 @@ const PostHeader = /*@__PURE__*/ proxyCustomElement(class PostHeader extends HTM
254
255
  });
255
256
  }
256
257
  }
257
- megedropdownStateHandler(event) {
258
- this.megadropdownOpen = event.detail.isVisible;
259
- }
258
+ megedropdownStateHandler = (event) => {
259
+ eventGuard(this.host, event, {
260
+ targetLocalName: 'post-megadropdown',
261
+ delegatorSelector: 'post-header',
262
+ }, () => {
263
+ this.megadropdownOpen = event.detail.isVisible;
264
+ });
265
+ };
260
266
  // Get all the focusable elements in the post-header mobile menu
261
267
  getFocusableElements() {
262
268
  // Get elements in the correct order (different as the DOM order)
@@ -289,11 +295,11 @@ const PostHeader = /*@__PURE__*/ proxyCustomElement(class PostHeader extends HTM
289
295
  }
290
296
  handleScrollEvent() {
291
297
  const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
292
- this.host.style.setProperty('--header-scroll-top', `${scrollTop}px`);
298
+ document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
293
299
  }
294
300
  updateLocalHeaderHeight() {
295
301
  const localHeaderHeight = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
296
- this.host.style.setProperty('--local-header-height', `${localHeaderHeight}px`);
302
+ document.documentElement.style.setProperty('--post-local-header-height', `${localHeaderHeight}px`);
297
303
  }
298
304
  updateScrollParentHeight() {
299
305
  this.host.style.setProperty('--header-scroll-parent-height', `${this.scrollParent.clientHeight}px`);
@@ -368,7 +374,7 @@ const PostHeader = /*@__PURE__*/ proxyCustomElement(class PostHeader extends HTM
368
374
  return (h("div", { class: navigationClasses.join(' '), style: { '--header-navigation-current-inset': `${mobileMenuScrollTop}px` } }, h("div", { class: "mobile-menu", ref: el => (this.mobileMenu = el) }, h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (h("div", { class: "navigation-footer" }, h("slot", { name: "meta-navigation" }), h("slot", { name: "post-language-switch" }))))));
369
375
  }
370
376
  render() {
371
- return (h(Host, { key: '1cc6cb8fb53d744a3e857b39fe6d59dcc52616f6', version: version }, h("div", { key: 'f2b0993095d6173cd6e6652f68a6d86cccaca0cf', class: "global-header" }, h("div", { key: '3199a8bfe40e617b9aa41235a836b0346afe3f5f', class: "global-sub" }, h("div", { key: 'acf05b7b78ca758b75b4c999a262506dc43b1692', class: "logo" }, h("slot", { key: '21d50a2e983f3572ce33828fd69a3eff01983206', name: "post-logo" }))), h("div", { key: '7222c559dca81ae94b18a5a88825169fa05b887e', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: '4948c8d13318987f9c419ac73d901e558f763d0d', name: "meta-navigation" }), h("slot", { key: '2a10e4dc73716b3fd39fd9fb534678c6203f60e3', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: '5786dcda4ca017500916ea4c9da604da46a0e2f5', name: "post-language-switch" }), h("div", { key: 'a2326d26003bb8101dc0236426b26f1f11bdd9df', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: 'e75d428c8a5644bcd979607de1ca85ad435e096d', name: "post-togglebutton" })))), h("div", { key: 'c40d1e10ce6e13e2cae5f8395ad9281dce50975e', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, h("slot", { key: 'e37002ea2d9d74fdfa0773cb2ca90f7e9560f193', name: "title" }), h("div", { key: 'fe1e158e00458d1232c5b0e9ae22c63e77b25ac6', class: "local-sub" }, h("slot", { key: '4b504f9652a403cf89b0a371a803251923758155', name: "local-controls" }), h("slot", { key: 'c02b89240f8df106f138bc14312031511c5462f6' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
377
+ return (h(Host, { key: 'd4e9cc7d4e61f9c6223651b73fdab93e44f868f2', version: version }, h("div", { key: 'be40a49df865621d9a31808d468a2bb342803600', class: "global-header" }, h("div", { key: '776d797b9235211bd283fb0ecb29722f2776f2cd', class: "global-sub" }, h("div", { key: '3e89049f43d0de844674db985c3c9e55d510f054', class: "logo" }, h("slot", { key: 'c96d915df7930d15c316e8761c0cf24ed6b44b95', name: "post-logo" }))), h("div", { key: '8aa06d67efef853e2a913c23703a73e38f2ec779', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: 'cdd0b21cd9c6be0ec5a3aeb29b3b29b3034897a0', name: "meta-navigation" }), h("slot", { key: 'da4c5e8c6db482b031ba3b7ae1cf91f112bda75f', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: '8980fdfa5f5e90d3786b5727ff6a9368dea709c6', name: "post-language-switch" }), h("div", { key: '013e2ad6b5bfd6b61f42b1d6c33c9ac6f0af98c0', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: 'cdac00dcf2cfb182bc8cefe0181054fac65c64be', name: "post-togglebutton" })))), h("div", { key: '0bdaa1b3fe2b9a460c7437b950afe8ce4c2237af', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, h("slot", { key: '1adc944fce891f85deb00dd40ad58dc0402491a9', name: "title" }), h("div", { key: '70f9a42f940b231a6e0dd89ee8e67d34f3b98eb6', class: "local-sub" }, h("slot", { key: 'd0106f5ec6ed548e1dbd5ca7f78b1ac5bcf5d2d4', name: "local-controls" }), h("slot", { key: '62e91cc83b232238ac3dcc1166f4a006754c95c9' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
372
378
  }
373
379
  static get watchers() { return {
374
380
  "device": ["lockBody"],
@@ -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@${version}/public/post-icons/`;
11
11
  const ANIMATION_NAMES = [
12
12
  'cylon',
13
13
  'cylon-vertical',
@@ -126,7 +126,7 @@ const PostIcon = /*@__PURE__*/ proxyCustomElement(class PostIcon extends HTMLEle
126
126
  this.validateAnimation();
127
127
  }
128
128
  render() {
129
- return (h(Host, { key: 'c80aaf693f730902c4ae57ca78360eee5dedf624', "data-version": version }, h("span", { key: '7e01e1cf7e4fec380e8f054d3cc8fa5404c7a829', style: this.getStyles() })));
129
+ return (h(Host, { key: '60f27d2a489e5649aa6ff06a771a146f1b83480d', "data-version": version }, h("span", { key: 'd1e7fe17b1c4b522bf091f248dfe51f838b87896', style: this.getStyles() })));
130
130
  }
131
131
  static get watchers() { return {
132
132
  "animation": ["validateAnimation"],
@@ -2,6 +2,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
2
2
  import { c as checkEmptyOrOneOf } from './index2.js';
3
3
  import { v as version } from './package.js';
4
4
  import { n as nanoid } from './index.browser.js';
5
+ import { e as eventGuard } from './event-guard.js';
5
6
  import { d as defineCustomElement$4 } from './post-icon2.js';
6
7
  import { d as defineCustomElement$3 } from './post-menu2.js';
7
8
  import { d as defineCustomElement$2 } from './post-menu-trigger2.js';
@@ -10,7 +11,7 @@ import { c as checkType } from './check-type.js';
10
11
 
11
12
  const SWITCH_VARIANTS = ['list', 'menu'];
12
13
 
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-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 12px}@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}}";
14
+ const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.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}}";
14
15
  const PostLanguageSwitchStyle0 = postLanguageSwitchCss;
15
16
 
16
17
  const PostLanguageSwitch = /*@__PURE__*/ proxyCustomElement(class PostLanguageSwitch extends HTMLElement {
@@ -43,22 +44,27 @@ const PostLanguageSwitch = /*@__PURE__*/ proxyCustomElement(class PostLanguageSw
43
44
  this.updateChildrenVariant();
44
45
  this.updateActiveLanguage();
45
46
  }
47
+ /**
48
+ * Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
49
+ */
46
50
  handlePostChange(event) {
47
- this.activeLang = event.detail;
48
- // Update the active state in the children post-language-option components
49
- this.languageOptions.forEach(lang => {
50
- if (lang.code && lang.code === this.activeLang) {
51
- lang.setAttribute('active', '');
52
- }
53
- else {
54
- lang.removeAttribute('active');
51
+ eventGuard(this.host, event, { targetLocalName: 'post-language-option', delegatorSelector: 'post-language-switch' }, () => {
52
+ this.activeLang = event.detail;
53
+ // Update the active state in the children post-language-option components
54
+ this.languageOptions.forEach(lang => {
55
+ if (lang.code && lang.code === this.activeLang) {
56
+ lang.setAttribute('active', '');
57
+ }
58
+ else {
59
+ lang.removeAttribute('active');
60
+ }
61
+ });
62
+ // Hides the dropdown when an option has been clicked
63
+ if (this.variant === 'menu') {
64
+ const menu = this.host.shadowRoot.querySelector('post-menu');
65
+ menu.hide();
55
66
  }
56
67
  });
57
- // Hides the dropdown when an option has been clicked
58
- if (this.variant === 'menu') {
59
- const menu = this.host.shadowRoot.querySelector('post-menu');
60
- menu.hide();
61
- }
62
68
  }
63
69
  /**
64
70
  * Handles cases where the language switch is being rendered before options are available
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
2
2
  import { v as version } from './package.js';
3
3
  import { d as defineCustomElement$1 } from './post-icon2.js';
4
4
 
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>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 .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 (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:block;overflow-x:hidden}post-mainnavigation nav{max-width:100%;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.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@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}}@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%;inset-inline-start: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}";
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>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 .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 (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:block;overflow-x:hidden}post-mainnavigation nav{max-width:100%;background:#fff;max-height:var(--post-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(--post-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.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@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}}@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(--post-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%;inset-inline-start: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
@@ -1,6 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { v as version } from './package.js';
3
3
  import { c as checkType } from './check-type.js';
4
+ import { e as eventGuard } from './event-guard.js';
4
5
 
5
6
  const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative;z-index:3}";
6
7
  const PostMegadropdownTriggerStyle0 = postMegadropdownTriggerCss;
@@ -53,13 +54,11 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
53
54
  }
54
55
  }
55
56
  };
56
- componentDidLoad() {
57
- this.validateControlFor();
58
- // Check if the mega dropdown attached to the trigger is expanded or not
59
- document.addEventListener('postToggleMegadropdown', (event) => {
57
+ handleToggleMegadropdown = (event) => {
58
+ eventGuard(this.host, event, { targetLocalName: 'post-megadropdown' }, () => {
60
59
  if (event.target.id === this.for) {
61
60
  this.ariaExpanded = event.detail.isVisible;
62
- // Focus on the trigger parent of the dropdown after it's closed if close button had been clicked
61
+ // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
63
62
  if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
64
63
  setTimeout(() => {
65
64
  this.slottedButton?.focus();
@@ -71,6 +70,11 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
71
70
  }
72
71
  }
73
72
  });
73
+ };
74
+ componentDidLoad() {
75
+ this.validateControlFor();
76
+ // Check if the mega dropdown attached to the trigger is expanded or not
77
+ document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
74
78
  this.slottedButton = this.host.querySelector('button');
75
79
  if (this.slottedButton) {
76
80
  this.slottedButton.setAttribute('aria-haspopup', 'menu');
@@ -83,8 +87,11 @@ const PostMegadropdownTrigger = /*@__PURE__*/ proxyCustomElement(class PostMegad
83
87
  console.warn('No button found within post-megadropdown-trigger');
84
88
  }
85
89
  }
90
+ disconnectedCallback() {
91
+ document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
92
+ }
86
93
  render() {
87
- return (h(Host, { key: 'a879ee7ccf98c76e6cb2b82b3bfbdff39280e2d5', "data-version": version, "tab-index": "-1" }, h("button", { key: '31e506e1bd542050ae731be74b01614e61dd9622' }, h("slot", { key: 'c17394f96e1d54eda841f3d9485d9e5c2457acff' }))));
94
+ return (h(Host, { key: '86b85efede8d9b19f3f0560f500f33f5e172177f', "data-version": version, "tab-index": "-1" }, h("button", { key: '0f810e4c38bc4abf23ac60ab27b36d408e7ced0d' }, h("slot", { key: '2a522ac7e15ef8ac077b73cdebf629b89ea173c6' }))));
88
95
  }
89
96
  static get watchers() { return {
90
97
  "for": ["validateControlFor"]