@swisspost/design-system-components 9.0.0-next.18 → 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.
Files changed (257) hide show
  1. package/dist/cjs/{check-url-1ff4cf75.js → check-url-4c524d85.js} +1 -1
  2. package/dist/cjs/{index-f2eedfeb.js → index-d4222dcb.js} +1 -1
  3. package/dist/cjs/index.cjs.js +22 -22
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{package-5e20c234.js → package-1403e51d.js} +1 -1
  6. package/dist/cjs/{post-accordion-75c0c474.js → post-accordion-e84c9d23.js} +1 -1
  7. package/dist/cjs/{post-accordion-item-1157ea24.js → post-accordion-item-d1ef00c3.js} +3 -3
  8. package/dist/cjs/post-accordion-item.cjs.entry.js +4 -4
  9. package/dist/cjs/post-accordion.cjs.entry.js +2 -2
  10. package/dist/cjs/{post-avatar-35dcad67.js → post-avatar-7a8860df.js} +1 -1
  11. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  12. package/dist/cjs/{post-back-to-top-4de4041e.js → post-back-to-top-6c7057f9.js} +2 -2
  13. package/dist/cjs/post-back-to-top.cjs.entry.js +2 -2
  14. package/dist/cjs/{post-banner-2114b7e3.js → post-banner-ecc46714.js} +3 -3
  15. package/dist/cjs/post-banner.cjs.entry.js +4 -4
  16. package/dist/cjs/{post-breadcrumb-5bfcf477.js → post-breadcrumb-dbb85db9.js} +2 -2
  17. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -4
  18. package/dist/cjs/post-breadcrumb.cjs.entry.js +3 -3
  19. package/dist/cjs/{post-card-control-404ee898.js → post-card-control-76f6a5b3.js} +1 -1
  20. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  21. package/dist/cjs/post-closebutton_15.cjs.entry.js +4 -4
  22. package/dist/cjs/{post-collapsible-trigger-476cb22d.js → post-collapsible-trigger-8b242323.js} +2 -2
  23. package/dist/cjs/post-collapsible_2.cjs.entry.js +4 -4
  24. package/dist/cjs/post-components.cjs.js +1 -1
  25. package/dist/cjs/{post-footer-4318962c.js → post-footer-eeec84e0.js} +1 -1
  26. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  27. package/dist/cjs/post-linkarea-61dbfe5d.js +30 -0
  28. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  29. package/dist/cjs/{post-menu-item-bce515b2.js → post-menu-item-12639f7c.js} +2 -2
  30. package/dist/cjs/{post-popover-5363267c.js → post-popover-9569b144.js} +2 -2
  31. package/dist/cjs/post-popover.cjs.entry.js +2 -2
  32. package/dist/cjs/{post-rating-a3f7c5df.js → post-rating-5645cae4.js} +2 -2
  33. package/dist/cjs/post-rating.cjs.entry.js +2 -2
  34. package/dist/cjs/{post-tab-header-68fcb0ed.js → post-tab-header-82e8ccd0.js} +3 -3
  35. package/dist/cjs/post-tab-header.cjs.entry.js +2 -2
  36. package/dist/cjs/{post-tab-panel-909efe62.js → post-tab-panel-ef3df53e.js} +2 -2
  37. package/dist/cjs/post-tab-panel.cjs.entry.js +2 -2
  38. package/dist/cjs/{post-tabs-8515f7a8.js → post-tabs-8f1e74d9.js} +2 -2
  39. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  40. package/dist/cjs/{post-tag-f66f6506.js → post-tag-c353e30c.js} +2 -2
  41. package/dist/cjs/post-tag.cjs.entry.js +2 -2
  42. package/dist/cjs/{post-togglebutton-c773c4f5.js → post-togglebutton-8949d278.js} +341 -171
  43. package/dist/cjs/{post-tooltip-dc0fef88.js → post-tooltip-cf18ac29.js} +4 -4
  44. package/dist/cjs/post-tooltip.cjs.entry.js +4 -4
  45. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  46. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  47. package/dist/collection/components/post-banner/post-banner.css +1 -1
  48. package/dist/collection/components/post-header/post-header.css +1 -1
  49. package/dist/collection/components/post-header/post-header.js +10 -2
  50. package/dist/collection/components/post-icon/post-icon.js +41 -37
  51. package/dist/collection/components/post-language-option/post-language-option.css +1 -1
  52. package/dist/collection/components/post-language-option/post-language-option.js +1 -25
  53. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  54. package/dist/collection/components/post-language-switch/post-language-switch.js +8 -40
  55. package/dist/collection/components/post-language-switch/switch-variants.js +0 -1
  56. package/dist/collection/components/post-linkarea/post-linkarea.js +12 -14
  57. package/dist/collection/components/post-list/post-list.js +2 -2
  58. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  59. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +55 -34
  60. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  61. package/dist/collection/components/post-megadropdown/post-megadropdown.js +64 -21
  62. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +24 -2
  63. package/dist/collection/components/post-menu/post-menu.js +17 -13
  64. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -7
  65. package/dist/collection/components/post-popover/post-popover.css +1 -1
  66. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  67. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +141 -33
  68. package/dist/collection/components/post-rating/post-rating.js +1 -1
  69. package/dist/collection/components/post-tab-header/post-tab-header.css +1 -1
  70. package/dist/collection/components/post-tab-header/post-tab-header.js +1 -1
  71. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  72. package/dist/collection/components/post-tabs/post-tabs.js +1 -1
  73. package/dist/collection/components/post-tag/post-tag.js +1 -1
  74. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  75. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
  76. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  77. package/dist/collection/utils/property-checkers/check-url.js +1 -1
  78. package/dist/components/index2.js +1 -1
  79. package/dist/components/package.js +1 -1
  80. package/dist/components/post-accordion-item2.js +1 -1
  81. package/dist/components/post-back-to-top2.js +1 -1
  82. package/dist/components/post-banner2.js +1 -1
  83. package/dist/components/post-header2.js +11 -3
  84. package/dist/components/post-icon2.js +41 -37
  85. package/dist/components/post-language-option2.js +2 -4
  86. package/dist/components/post-language-switch2.js +10 -19
  87. package/dist/components/post-linkarea2.js +11 -13
  88. package/dist/components/post-list2.js +2 -2
  89. package/dist/components/post-mainnavigation2.js +57 -36
  90. package/dist/components/post-megadropdown-trigger2.js +24 -2
  91. package/dist/components/post-megadropdown2.js +42 -19
  92. package/dist/components/post-menu-trigger2.js +13 -7
  93. package/dist/components/post-menu2.js +17 -13
  94. package/dist/components/post-popover2.js +1 -1
  95. package/dist/components/post-popovercontainer2.js +125 -33
  96. package/dist/components/post-rating2.js +1 -1
  97. package/dist/components/post-tab-header2.js +2 -2
  98. package/dist/components/post-tab-panel2.js +1 -1
  99. package/dist/components/post-tabs2.js +1 -1
  100. package/dist/components/post-tag2.js +1 -1
  101. package/dist/components/post-togglebutton2.js +1 -1
  102. package/dist/components/post-tooltip2.js +2 -2
  103. package/dist/docs.json +69 -79
  104. package/dist/esm/{check-url-8ab230de.js → check-url-f84034b1.js} +1 -1
  105. package/dist/esm/{index-0aec278f.js → index-1b263a63.js} +1 -1
  106. package/dist/esm/index.js +22 -22
  107. package/dist/esm/loader.js +1 -1
  108. package/dist/esm/package-21cb9eb8.js +3 -0
  109. package/dist/esm/{post-accordion-e5330c72.js → post-accordion-db14e23a.js} +1 -1
  110. package/dist/esm/{post-accordion-item-4e13a044.js → post-accordion-item-c1f42c05.js} +3 -3
  111. package/dist/esm/post-accordion-item.entry.js +4 -4
  112. package/dist/esm/post-accordion.entry.js +2 -2
  113. package/dist/esm/{post-avatar-d6612e0e.js → post-avatar-ccda94eb.js} +1 -1
  114. package/dist/esm/post-avatar.entry.js +2 -2
  115. package/dist/esm/{post-back-to-top-d5b3d5f5.js → post-back-to-top-f038d599.js} +2 -2
  116. package/dist/esm/post-back-to-top.entry.js +2 -2
  117. package/dist/esm/{post-banner-ae45a03b.js → post-banner-a24ccf11.js} +3 -3
  118. package/dist/esm/post-banner.entry.js +4 -4
  119. package/dist/esm/{post-breadcrumb-c7caf609.js → post-breadcrumb-e3e4b50c.js} +2 -2
  120. package/dist/esm/post-breadcrumb-item_2.entry.js +4 -4
  121. package/dist/esm/post-breadcrumb.entry.js +3 -3
  122. package/dist/esm/{post-card-control-c51f4406.js → post-card-control-0a4497d8.js} +1 -1
  123. package/dist/esm/post-card-control.entry.js +2 -2
  124. package/dist/esm/post-closebutton_15.entry.js +4 -4
  125. package/dist/esm/{post-collapsible-trigger-e086c018.js → post-collapsible-trigger-6b0253d8.js} +2 -2
  126. package/dist/esm/post-collapsible_2.entry.js +4 -4
  127. package/dist/esm/post-components.js +1 -1
  128. package/dist/esm/{post-footer-fac4e9a3.js → post-footer-fa4a2a32.js} +1 -1
  129. package/dist/esm/post-footer.entry.js +2 -2
  130. package/dist/esm/post-linkarea-1458faa8.js +28 -0
  131. package/dist/esm/post-linkarea.entry.js +2 -2
  132. package/dist/esm/{post-menu-item-bdfe59ae.js → post-menu-item-b9af8b46.js} +2 -2
  133. package/dist/esm/{post-popover-15208f18.js → post-popover-425eb5c9.js} +2 -2
  134. package/dist/esm/post-popover.entry.js +2 -2
  135. package/dist/esm/{post-rating-261def37.js → post-rating-4057a5b5.js} +2 -2
  136. package/dist/esm/post-rating.entry.js +2 -2
  137. package/dist/esm/{post-tab-header-f2e84ba5.js → post-tab-header-602eb0cb.js} +3 -3
  138. package/dist/esm/post-tab-header.entry.js +2 -2
  139. package/dist/esm/{post-tab-panel-389e0709.js → post-tab-panel-fccea5b6.js} +2 -2
  140. package/dist/esm/post-tab-panel.entry.js +2 -2
  141. package/dist/esm/{post-tabs-79ea5b62.js → post-tabs-b9f41051.js} +2 -2
  142. package/dist/esm/post-tabs.entry.js +2 -2
  143. package/dist/esm/{post-tag-887d422c.js → post-tag-54b70906.js} +2 -2
  144. package/dist/esm/post-tag.entry.js +2 -2
  145. package/dist/esm/{post-togglebutton-70b0f44e.js → post-togglebutton-f6746062.js} +341 -171
  146. package/dist/esm/{post-tooltip-1be020fd.js → post-tooltip-eccf3d93.js} +4 -4
  147. package/dist/esm/post-tooltip.entry.js +4 -4
  148. package/dist/post-components/index.esm.js +1 -1
  149. package/dist/post-components/p-0337eb03.entry.js +1 -0
  150. package/dist/post-components/p-0470d5af.entry.js +1 -0
  151. package/dist/post-components/p-07b75b18.entry.js +1 -0
  152. package/dist/post-components/{p-5171e02f.js → p-0d879e8b.js} +1 -1
  153. package/dist/post-components/{p-6c3ac622.js → p-0f6fee8f.js} +1 -1
  154. package/dist/post-components/p-114bb8ba.js +1 -0
  155. package/dist/post-components/{p-99502c06.js → p-18fa847f.js} +1 -1
  156. package/dist/post-components/{p-fb8f5195.js → p-1c1a614d.js} +1 -1
  157. package/dist/post-components/p-202156ad.js +1 -0
  158. package/dist/post-components/p-2f5425e2.entry.js +1 -0
  159. package/dist/post-components/p-39586235.js +1 -0
  160. package/dist/post-components/p-3b1c2b8a.entry.js +1 -0
  161. package/dist/post-components/{p-5f1f7b49.js → p-46accc5f.js} +1 -1
  162. package/dist/post-components/{p-eb8b3ffa.js → p-470c7464.js} +1 -1
  163. package/dist/post-components/{p-9b179f0f.js → p-509fc6e6.js} +1 -1
  164. package/dist/post-components/{p-898d9196.js → p-541c7be9.js} +2 -2
  165. package/dist/post-components/p-54c98790.js +1 -0
  166. package/dist/post-components/p-5afa25c7.entry.js +1 -0
  167. package/dist/post-components/{p-a2ae208a.js → p-5b1c57d5.js} +1 -1
  168. package/dist/post-components/p-5cf79fe3.entry.js +1 -0
  169. package/dist/post-components/p-5d9c1fc3.entry.js +1 -0
  170. package/dist/post-components/p-608ba689.entry.js +1 -0
  171. package/dist/post-components/p-64776810.entry.js +1 -0
  172. package/dist/post-components/{p-bff8004e.js → p-6651164c.js} +1 -1
  173. package/dist/post-components/p-7085e0e7.entry.js +1 -0
  174. package/dist/post-components/{p-76257bba.entry.js → p-7bf39758.entry.js} +1 -1
  175. package/dist/post-components/p-7dc1ccf0.entry.js +1 -0
  176. package/dist/post-components/p-81eac2e5.entry.js +1 -0
  177. package/dist/post-components/p-8a31b2fc.entry.js +1 -0
  178. package/dist/post-components/p-8e7e9942.entry.js +1 -0
  179. package/dist/post-components/p-a24bf798.js +1 -0
  180. package/dist/post-components/p-a621090d.js +1 -0
  181. package/dist/post-components/p-a926c755.js +1 -0
  182. package/dist/post-components/{p-e7bec3de.js → p-b27b7d03.js} +1 -1
  183. package/dist/post-components/{p-74122649.js → p-b8100b63.js} +1 -1
  184. package/dist/post-components/p-c48553bd.entry.js +1 -0
  185. package/dist/post-components/{p-dc8af283.js → p-cb472e20.js} +1 -1
  186. package/dist/post-components/p-cea81e00.entry.js +1 -0
  187. package/dist/post-components/p-d2d2681a.js +1 -0
  188. package/dist/post-components/{p-ce34c58e.js → p-d8b179fb.js} +1 -1
  189. package/dist/post-components/p-f405f29e.entry.js +1 -0
  190. package/dist/post-components/post-components.esm.js +1 -1
  191. package/dist/types/components/post-header/post-header.d.ts +1 -0
  192. package/dist/types/components/post-icon/post-icon.d.ts +5 -0
  193. package/dist/types/components/post-language-option/post-language-option.d.ts +1 -5
  194. package/dist/types/components/post-language-switch/post-language-switch.d.ts +2 -7
  195. package/dist/types/components/post-language-switch/switch-variants.d.ts +0 -2
  196. package/dist/types/components/post-linkarea/post-linkarea.d.ts +2 -2
  197. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +2 -5
  198. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +12 -5
  199. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +6 -0
  200. package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +2 -1
  201. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +15 -1
  202. package/dist/types/components.d.ts +17 -24
  203. package/loaders/index2.js +1 -1
  204. package/loaders/package.js +1 -1
  205. package/loaders/post-accordion-item2.js +1 -1
  206. package/loaders/post-back-to-top.js +1 -1
  207. package/loaders/post-banner.js +1 -1
  208. package/loaders/post-header.js +11 -3
  209. package/loaders/post-icon2.js +41 -37
  210. package/loaders/post-language-option.js +2 -4
  211. package/loaders/post-language-switch.js +10 -19
  212. package/loaders/post-linkarea.js +11 -13
  213. package/loaders/post-list.js +2 -2
  214. package/loaders/post-mainnavigation.js +57 -36
  215. package/loaders/post-megadropdown-trigger.js +24 -2
  216. package/loaders/post-megadropdown.js +42 -19
  217. package/loaders/post-menu-trigger2.js +13 -7
  218. package/loaders/post-menu2.js +17 -13
  219. package/loaders/post-popover.js +1 -1
  220. package/loaders/post-popovercontainer2.js +125 -33
  221. package/loaders/post-rating.js +1 -1
  222. package/loaders/post-tab-header.js +2 -2
  223. package/loaders/post-tab-panel.js +1 -1
  224. package/loaders/post-tabs.js +1 -1
  225. package/loaders/post-tag.js +1 -1
  226. package/loaders/post-togglebutton.js +1 -1
  227. package/loaders/post-tooltip.js +2 -2
  228. package/package.json +3 -3
  229. package/dist/cjs/post-linkarea-abe3848a.js +0 -32
  230. package/dist/esm/package-52c62831.js +0 -3
  231. package/dist/esm/post-linkarea-12db6e2a.js +0 -30
  232. package/dist/post-components/p-14312d05.entry.js +0 -1
  233. package/dist/post-components/p-19aa8e97.entry.js +0 -1
  234. package/dist/post-components/p-19d9ae56.entry.js +0 -1
  235. package/dist/post-components/p-3a8aa86c.entry.js +0 -1
  236. package/dist/post-components/p-4575b6be.js +0 -1
  237. package/dist/post-components/p-47e21420.js +0 -1
  238. package/dist/post-components/p-4f608797.entry.js +0 -1
  239. package/dist/post-components/p-59373941.js +0 -1
  240. package/dist/post-components/p-5c5b1fc0.entry.js +0 -1
  241. package/dist/post-components/p-7a7ce5d1.js +0 -1
  242. package/dist/post-components/p-7ed1123b.entry.js +0 -1
  243. package/dist/post-components/p-7ff34767.js +0 -1
  244. package/dist/post-components/p-82e405cc.entry.js +0 -1
  245. package/dist/post-components/p-98c7bec2.entry.js +0 -1
  246. package/dist/post-components/p-9f202ea3.entry.js +0 -1
  247. package/dist/post-components/p-a24295d5.entry.js +0 -1
  248. package/dist/post-components/p-bac3cb12.js +0 -1
  249. package/dist/post-components/p-bd85e141.js +0 -1
  250. package/dist/post-components/p-c9c86df8.entry.js +0 -1
  251. package/dist/post-components/p-d3c4e8ea.entry.js +0 -1
  252. package/dist/post-components/p-d72abd74.entry.js +0 -1
  253. package/dist/post-components/p-dfcee8dc.entry.js +0 -1
  254. package/dist/post-components/p-e0c0467e.entry.js +0 -1
  255. package/dist/post-components/p-f41b0150.entry.js +0 -1
  256. package/dist/post-components/p-f580d6dd.entry.js +0 -1
  257. package/dist/post-components/p-ff065ad4.js +0 -1
@@ -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$2 } 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)}}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:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}@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)}}@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.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:var(--post-core-font-weight-700)}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size: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{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:8px 12px;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:#050400;bottom:0;width:100%;height:var(--post-core-dimension-1);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:var(--post-core-dimension-48);padding-inline:8px 12px;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:#050400;bottom:0;width:100%;height:var(--post-core-dimension-1);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>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 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:not(post-megadropdown *) > [role="list"]';
11
- const NAVIGATION_ITEM_SELECTOR = ':is(post-list-item > a, post-list-item > post-megadropdown-trigger > button):not(post-megadropdown *)';
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$1 = /*@__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.translateAmount = 0;
18
+ this.translationAmount = 0;
19
19
  }
20
20
  header;
21
21
  navbar;
@@ -36,7 +36,7 @@ const PostMainnavigation$1 = /*@__PURE__*/ proxyCustomElement(class PostMainnavi
36
36
  * Update navbar translation when 'translateAmount' changes and recalculate scrollability
37
37
  */
38
38
  onTranslateAmountChanges(value) {
39
- this.navbar.style.transform = `translateX(-${value}px)`;
39
+ this.navbar.style.marginInlineStart = `-${value}px`;
40
40
  this.checkScrollability();
41
41
  }
42
42
  /**
@@ -56,11 +56,19 @@ const PostMainnavigation$1 = /*@__PURE__*/ proxyCustomElement(class PostMainnavi
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$1 = /*@__PURE__*/ proxyCustomElement(class PostMainnavi
92
100
  this.canScrollLeft = this.canScrollRight = false;
93
101
  }
94
102
  else {
95
- this.canScrollLeft = this.translateAmount !== 0; // Scrolling left is possible if not at the start
96
- this.canScrollRight = clientWidth + this.translateAmount !== scrollWidth; // Scrolling right is possible if not at the end
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.translateAmount = 0));
107
+ this.withoutTransition(() => (this.translationAmount = 0));
100
108
  }
101
109
  }
102
110
  /**
@@ -132,40 +140,53 @@ const PostMainnavigation$1 = /*@__PURE__*/ proxyCustomElement(class PostMainnavi
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 itemRightEdgePosition = navigationItem.offsetLeft + navigationItem.offsetWidth + this.getFocusMargin(navigationItem);
142
- const lastVisiblePosition = this.navbar.clientWidth + this.translateAmount;
143
- // If the item is already fully visible, don't scroll
144
- if (itemRightEdgePosition < lastVisiblePosition)
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
- const maxTranslateAmount = this.navbar.scrollWidth - this.navbar.clientWidth;
147
- const newRightEdgePosition = itemRightEdgePosition + this.rightScrollButton.clientWidth - this.navbar.clientWidth;
148
- this.translateAmount = Math.min(maxTranslateAmount, newRightEdgePosition);
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 itemLeftEdgePosition = navigationItem.offsetLeft - this.getFocusMargin(navigationItem);
153
- const firstVisiblePosition = this.translateAmount;
154
- // If the item is already fully visible, don't scroll
155
- if (itemLeftEdgePosition > firstVisiblePosition)
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
- const minTranslateAmount = 0;
158
- const newRightEdgePosition = itemLeftEdgePosition - this.leftScrollButton.clientWidth;
159
- this.translateAmount = Math.max(minTranslateAmount, newRightEdgePosition);
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$1 = /*@__PURE__*/ proxyCustomElement(class PostMainnavi
202
223
  });
203
224
  }
204
225
  render() {
205
- return (h(Host, { key: '3280c55d0f8e7aec6e1dc3f59744114b2557cb04', slot: "post-mainnavigation" }, h("div", { key: '446ede19ef62a21022a771edb8a6e8eb30a5c5d3', onClick: () => this.handleBackButtonClick(), class: "back-button" }, h("slot", { key: '5e923b62133d3452676445349624157fd7d3d957', name: "back-button" })), h("nav", { key: 'd67723ba6b42ec2b083197091ec7226dc258897e', ref: el => (this.navbar = el) }, h("slot", { key: 'ea1a0fd7f76e02b89789713a49fc4d7fd6e8a022' })), h("div", { key: '1a3d640acfe23ae5c5f9ab26a7bca9c3c2bc4434', class: `left-scroll-button${this.canScrollLeft ? '' : ' d-none'}`, "aria-hidden": "true" }, h("button", { key: 'a3260bba8104bf9155120e04fed6ba0aa102e529', type: "button", tabindex: "-1", ref: el => (this.leftScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('left') }, h("post-icon", { key: '0bba0a76f93098267be8432636391641f55d5df8', "aria-hidden": "true", name: "chevronleft" }))), h("div", { key: '401ef6821f258737d17ed54ae1c577cc4783a3f9', class: `right-scroll-button${this.canScrollRight ? '' : ' d-none'}`, "aria-hidden": "true" }, h("button", { key: 'd964f4b74ad8fef86115b12fcda12cc54da936f3', type: "button", tabindex: "-1", ref: el => (this.rightScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('right') }, h("post-icon", { key: '5758f48df24b4a3ea241f43464b448878e31977d', "aria-hidden": "true", name: "chevronright" })))));
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
- "translateAmount": ["onTranslateAmountChanges"]
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
- "translateAmount": [32]
235
+ "translationAmount": [32]
215
236
  }, [[9, "mouseup", "stopScrolling"]], {
216
- "translateAmount": ["onTranslateAmountChanges"]
237
+ "translationAmount": ["onTranslateAmountChanges"]
217
238
  }]);
218
239
  function defineCustomElement$1() {
219
240
  if (typeof customElements === "undefined") {
@@ -18,6 +18,11 @@ const PostMegadropdownTrigger$1 = /*@__PURE__*/ proxyCustomElement(class PostMeg
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$1 = /*@__PURE__*/ proxyCustomElement(class PostMeg
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$1 = /*@__PURE__*/ proxyCustomElement(class PostMeg
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: '2e009cb0dbfd81785d3a8ce5802a4fab0e84a52e', "data-version": version, "tab-index": "-1" }, h("button", { key: 'd77d9a5eb5786a63cf7453c639647adc705892bc' }, h("slot", { key: '19f4b17dc2d073b0770c33d6acfb763c1e47735a' }))));
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"]
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { g as getFocusableChildren } from './get-focusable-children.js';
3
3
 
4
- const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{--post-main-header-height:56px;--post-global-header-height:72px;--post-header-height:calc(var(--post-global-header-height) + var(--post-main-header-height));box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;border-top:1px solid #e1e0dc;width:100%;top:100%;left:0;border-radius:0}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{--post-global-header-height:64px;z-index:4;top:0 !important;left:0;width:100%;position:fixed;height:calc(100vh - var(--post-header-height));max-height:calc(100vh - var(--header-height));border-top:unset;overflow:auto}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-top:0;margin-bottom:8px;font-weight:900}.megadropdown h2 a{text-decoration:none;font-weight:inherit;border-bottom:0;border-top:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:2px;position:absolute;left:0}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:var(--post-core-dimension-48);padding-inline:8px 12px;gap:var(--post-core-dimension-16);font-weight:var(--post-core-font-weight-400);position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:var(--post-core-dimension-1);position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-bottom:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{display:block}}.megadropdown .close-button{position:absolute;top:1rem;right:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
4
+ const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;border-top:1px solid #e1e0dc;width:100%;top:100%;left:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;top:0 !important;left:0;width:100%;position:fixed;height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));border-top:unset;overflow:auto}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-top:0;margin-bottom:8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-bottom:0;border-top:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:2px;position:absolute;left:0}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-bottom:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;top:1rem;right:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
5
5
  const PostMegadropdownStyle0 = postMegadropdownCss;
6
6
 
7
7
  const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown extends HTMLElement {
@@ -21,11 +21,13 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
21
21
  static activeDropdown = null;
22
22
  /**
23
23
  * Emits when the dropdown is shown or hidden.
24
- * The event payload is a boolean: `true` when the dropdown was opened, `false` when it was closed.
24
+ * The event payload is an object.
25
+ * `isVisible` is true when the dropdown gets opened and false when it gets closed
26
+ * `focusParent` determines whether after the closing of the mega dropdown, the focus should go back to the trigger parent or naturally go to the next focusable element in the page
25
27
  **/
26
28
  postToggleMegadropdown;
27
29
  disconnectedCallback() {
28
- this.removeOutsideClickListener();
30
+ this.removeListeners();
29
31
  if (PostMegadropdown.activeDropdown === this) {
30
32
  PostMegadropdown.activeDropdown = null;
31
33
  }
@@ -56,23 +58,32 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
56
58
  this.animationClass = 'slide-in';
57
59
  }
58
60
  this.isVisible = true;
59
- this.host.addEventListener('keydown', e => this.keyboardHandler(e));
60
61
  PostMegadropdown.activeDropdown = this;
61
- this.postToggleMegadropdown.emit(this.isVisible);
62
- this.addOutsideClickListener();
62
+ this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
63
+ requestAnimationFrame(() => {
64
+ if (this.firstFocusableEl &&
65
+ window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
66
+ this.firstFocusableEl.focus();
67
+ }
68
+ });
69
+ this.addListeners();
63
70
  }
64
71
  /**
65
72
  * Hides the dropdown with an animation.
66
73
  */
67
- async hide() {
74
+ async hide(focusParent = true) {
75
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
68
76
  this.animationClass = 'slide-out';
69
- PostMegadropdown.activeDropdown = null;
70
- this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
77
+ }
78
+ async focusFirst() {
79
+ this.firstFocusableEl?.focus();
71
80
  }
72
81
  connectedCallback() {
73
82
  this.header = this.host.closest('post-header');
74
83
  if (this.header) {
75
- this.header.addEventListener('postUpdateDevice', (event) => (this.device = event.detail));
84
+ this.header.addEventListener('postUpdateDevice', (event) => {
85
+ this.device = event.detail;
86
+ });
76
87
  }
77
88
  }
78
89
  /**
@@ -81,15 +92,15 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
81
92
  forceClose() {
82
93
  this.isVisible = false;
83
94
  this.animationClass = null;
84
- this.postToggleMegadropdown.emit(this.isVisible);
85
- this.removeOutsideClickListener();
95
+ this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
96
+ this.removeListeners();
86
97
  }
87
98
  handleAnimationEnd() {
88
99
  if (this.animationClass === 'slide-out') {
89
100
  this.isVisible = false;
90
101
  this.animationClass = null;
91
- this.postToggleMegadropdown.emit(this.isVisible);
92
- this.removeOutsideClickListener();
102
+ PostMegadropdown.activeDropdown = null;
103
+ this.removeListeners();
93
104
  }
94
105
  }
95
106
  handleClickOutside = (event) => {
@@ -106,12 +117,16 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
106
117
  }
107
118
  }
108
119
  }
109
- this.hide();
120
+ this.hide(false);
110
121
  };
111
- addOutsideClickListener() {
122
+ addListeners() {
123
+ this.host.addEventListener('keydown', e => this.keyboardHandler(e));
124
+ document.addEventListener('keyup', e => this.handleTabOutside(e));
112
125
  document.addEventListener('mousedown', this.handleClickOutside);
113
126
  }
114
- removeOutsideClickListener() {
127
+ removeListeners() {
128
+ this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
129
+ document.removeEventListener('keyup', e => this.handleTabOutside(e));
115
130
  document.removeEventListener('mousedown', this.handleClickOutside);
116
131
  }
117
132
  getFocusableElements() {
@@ -135,9 +150,16 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
135
150
  }
136
151
  }
137
152
  }
153
+ handleTabOutside(e) {
154
+ if (e.key === 'Tab' && this.device === 'desktop') {
155
+ if (!this.host.contains(e.target)) {
156
+ this.hide(false);
157
+ }
158
+ }
159
+ }
138
160
  render() {
139
161
  const containerStyle = this.isVisible ? {} : { display: 'none' };
140
- return (h(Host, { key: '11be74da0c6d35e1a50c954735a6b1f079cd0eb6' }, h("div", { key: '202023b2495012f78ba761f20aef1ba0325a98f0', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '87ac87a83de7ce798f5d9057b992893bfc00f2e1', class: "megadropdown" }, h("div", { key: '650738a55e5007b9ae0c3ee30fb2f1ae53152744', onClick: () => this.hide(), class: "back-button" }, h("slot", { key: 'a7b70ce1fbc7090807b8d60efce6cb83eb06674e', name: "back-button" })), h("div", { key: '812d3458649669e867d7d761079299b64d9e4e4d', onClick: () => this.hide(), class: "close-button" }, h("slot", { key: '2ee2df463dfd6667b729fd1b47987ea40e8d9d5f', name: "close-button" })), h("slot", { key: 'a5d0029319e34b652923d07fcddd5cb647912b03', name: "megadropdown-title" }), h("div", { key: 'c563cf50e3d9a1a466b9aec386982c80569ac094', class: "megadropdown-content" }, h("slot", { key: 'a05eeceb8fdbfc4373ee7d42d4f583475b44b4dc' }))))));
162
+ return (h(Host, { key: '83c6439c9f8b225a4252b2c9c525589bfe6d72b9' }, h("div", { key: 'fa59247d65f5c47699ae2ccca2cbb70706c22582', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '937d784bb303920d1e44337eb5a3d5bb8971f276', class: "megadropdown" }, h("slot", { key: '5b5196fd0427f52390d7d07505d03090b3e240cf', name: "megadropdown-title" }), h("div", { key: '8e339d051513396b24247c21b5e6d21bee1ba5d8', class: "megadropdown-content" }, h("slot", { key: '57209bb8428ebc4b6273a1442e96cb88d6af86d1' })), h("div", { key: '3aa4e57e7b523ed5c21108ac53d6664d81351c6c', onClick: () => this.hide(true), class: "back-button" }, h("slot", { key: '44584be04f555e288dfa2cc9078010b7bfc93b97', name: "back-button" })), h("div", { key: '67e1aa1ac0d0071f46705608f9a965d5258c0263', onClick: () => this.hide(true), class: "close-button" }, h("slot", { key: '7b3198f9581b725d9b43608a3d903e8c09689217', name: "close-button" }))))));
141
163
  }
142
164
  static get style() { return PostMegadropdownStyle0; }
143
165
  }, [4, "post-megadropdown", {
@@ -146,7 +168,8 @@ const PostMegadropdown$1 = /*@__PURE__*/ proxyCustomElement(class PostMegadropdo
146
168
  "animationClass": [32],
147
169
  "toggle": [64],
148
170
  "show": [64],
149
- "hide": [64]
171
+ "hide": [64],
172
+ "focusFirst": [64]
150
173
  }]);
151
174
  function defineCustomElement$1() {
152
175
  if (typeof customElements === "undefined") {
@@ -32,11 +32,8 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
32
32
  return ref && ref.localName === 'post-menu' ? ref : null;
33
33
  }
34
34
  handleToggle() {
35
- const menu = this.menu;
36
- if (menu && this.slottedButton) {
37
- this.ariaExpanded = !this.ariaExpanded;
38
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
39
- menu.toggle(this.host);
35
+ if (this.menu) {
36
+ this.menu.toggle(this.host);
40
37
  }
41
38
  else {
42
39
  console.warn(`No post-menu found with ID: ${this.for}`);
@@ -48,8 +45,10 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
48
45
  this.handleToggle();
49
46
  }
50
47
  };
51
- componentDidLoad() {
48
+ connectedCallback() {
52
49
  this.root = getRoot(this.host);
50
+ }
51
+ componentDidLoad() {
53
52
  this.validateControlFor();
54
53
  this.slottedButton = this.host.querySelector('button');
55
54
  // Check if the slottedButton is within a web component
@@ -64,6 +63,13 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
64
63
  }
65
64
  if (this.slottedButton) {
66
65
  this.slottedButton.setAttribute('aria-haspopup', 'menu');
66
+ // Listen to the `toggleMenu` event emitted by the `post-menu` component
67
+ if (this.menu && this.slottedButton) {
68
+ this.menu.addEventListener('toggleMenu', (event) => {
69
+ this.ariaExpanded = event.detail;
70
+ this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
71
+ });
72
+ }
67
73
  this.slottedButton.addEventListener('click', () => {
68
74
  this.handleToggle();
69
75
  });
@@ -74,7 +80,7 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
74
80
  }
75
81
  }
76
82
  render() {
77
- return (h(Host, { key: 'a0fff619978087ce0c67d7d327982424e3784ff0', "data-version": version, "tab-index": "-1" }, h("slot", { key: '93e26150b59e9a01275a6815096e09ff5fac146b' })));
83
+ return (h(Host, { key: '39bea077fd4d85f442b7b1d56969a203c470a269', "data-version": version, "tab-index": "-1" }, h("slot", { key: '9f7777a4167cdfbf9f1ab2dfe7c3d6e759c8a83b' })));
78
84
  }
79
85
  static get watchers() { return {
80
86
  "for": ["validateControlFor"]
@@ -48,17 +48,29 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
48
48
  this.popoverRef.addEventListener('postToggle', (event) => {
49
49
  this.isVisible = event.detail;
50
50
  this.toggleMenu.emit(this.isVisible);
51
+ requestAnimationFrame(() => {
52
+ if (this.isVisible) {
53
+ this.lastFocusedElement = this.root.activeElement;
54
+ const menuItems = this.getSlottedItems();
55
+ if (menuItems.length > 0) {
56
+ menuItems[0].focus();
57
+ }
58
+ }
59
+ else if (this.lastFocusedElement) {
60
+ this.lastFocusedElement.focus();
61
+ }
62
+ });
51
63
  });
52
64
  }
53
65
  /**
54
66
  * Toggles the menu visibility based on its current state.
55
67
  */
56
68
  async toggle(target) {
57
- if (this.isVisible) {
58
- await this.hide();
69
+ if (this.popoverRef) {
70
+ await this.popoverRef.toggle(target);
59
71
  }
60
72
  else {
61
- await this.show(target);
73
+ console.error('toggle: popoverRef is null or undefined');
62
74
  }
63
75
  }
64
76
  /**
@@ -69,11 +81,6 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
69
81
  async show(target) {
70
82
  if (this.popoverRef) {
71
83
  await this.popoverRef.show(target);
72
- this.lastFocusedElement = this.root.activeElement; // Use root's activeElement
73
- const menuItems = this.getSlottedItems();
74
- if (menuItems.length > 0) {
75
- menuItems[0].focus();
76
- }
77
84
  }
78
85
  else {
79
86
  console.error('show: popoverRef is null or undefined');
@@ -85,9 +92,6 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
85
92
  async hide() {
86
93
  if (this.popoverRef) {
87
94
  await this.popoverRef.hide();
88
- if (this.lastFocusedElement) {
89
- this.lastFocusedElement.focus();
90
- }
91
95
  }
92
96
  else {
93
97
  console.error('hide: popoverRef is null or undefined');
@@ -131,10 +135,10 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
131
135
  currentIndex = 0;
132
136
  break;
133
137
  case this.KEYCODES.END:
138
+ e.preventDefault();
134
139
  currentIndex = menuItems.length - 1;
135
140
  break;
136
141
  case this.KEYCODES.SPACE:
137
- case this.KEYCODES.ENTER:
138
142
  this.toggle(this.host);
139
143
  return;
140
144
  case this.KEYCODES.TAB:
@@ -157,7 +161,7 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
157
161
  .flatMap(el => Array.from(getFocusableChildren(el))));
158
162
  }
159
163
  render() {
160
- return (h(Host, { key: '071532c327f80197dda662f77e5cb2444281087d', "data-version": version }, h("post-popovercontainer", { key: '9f70ca4009139e0547026b26be610a02f4f1a95a', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '3ff1048a8fb27402a82cedc3dc300366063c9601', class: "popover-container", part: "popover-container" }, h("slot", { key: 'bed6c96b7502e0032b746ac6fdf8c3dd6d782e48' })))));
164
+ return (h(Host, { key: '3a79b9df5a5d4c121aa9ca36883d6e17cbf2a66e', "data-version": version }, h("post-popovercontainer", { key: '9c8a37a2c70b98ff9a960f467ab951af10c34726', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '0cda7fc8df3f201d4b4e0170bb8a94e72e123814', class: "popover-container", part: "popover-container" }, h("slot", { key: 'ac20e448dededb6ea79715c2c29122dccf0d7309' })))));
161
165
  }
162
166
  static get style() { return PostMenuStyle0; }
163
167
  }, [1, "post-menu", {
@@ -3,7 +3,7 @@ import { v as version } from './package.js';
3
3
  import { g as getAttributeObserver } from './attribute-observer.js';
4
4
  import { d as defineCustomElement$2 } from './post-popovercontainer2.js';
5
5
 
6
- const postPopoverCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.btn-close{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:\"\";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color:#999}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{color:CanvasText;forced-color-adjust:none}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:Highlight}}.btn-close-white{color:#e6e6e6}.btn-close-white:focus,.btn-close-white:not(:disabled):hover,.btn-close-white.pretend-hover{color:#fff}.btn-close-white:disabled{color:#999}*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:280px;max-width:100%}.popover-content{padding:.5em;flex-grow:1}.btn-close{color:inherit}";
6
+ const postPopoverCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.btn-close{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;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{background-color:ButtonFace !important}.btn-close:hover{background-color:Highlight !important}}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:\"\";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color:#999}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{color:CanvasText;forced-color-adjust:none}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:Highlight}}.btn-close-white{color:#e6e6e6}.btn-close-white:focus,.btn-close-white:not(:disabled):hover,.btn-close-white.pretend-hover{color:#fff}.btn-close-white:disabled{color:#999}*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:280px;max-width:100%}.popover-content{padding:.5em;flex-grow:1}.btn-close{color:inherit}";
7
7
  const PostPopoverStyle0 = postPopoverCss;
8
8
 
9
9
  /**