@swisspost/internet-header 1.10.0 → 1.11.0

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 (213) hide show
  1. package/dist/cjs/{language.service-672abba5.js → language.service-0864d021.js} +6 -1
  2. package/dist/cjs/language.service-0864d021.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/post-klp-login-widget.cjs.entry.js +1 -1
  5. package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -1
  6. package/dist/cjs/post-language-switch.cjs.entry.js +2 -2
  7. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  8. package/dist/cjs/post-logo.cjs.entry.js +1 -1
  9. package/dist/cjs/post-logo.cjs.entry.js.map +1 -1
  10. package/dist/cjs/post-main-navigation.cjs.entry.js +2 -2
  11. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-meta-navigation.cjs.entry.js +1 -1
  13. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  14. package/dist/cjs/post-search.cjs.entry.js +22 -2
  15. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  16. package/dist/cjs/post-skiplinks.cjs.entry.js +2 -2
  17. package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -1
  18. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +6 -5
  19. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  20. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +2 -2
  21. package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -1
  22. package/dist/cjs/swisspost-internet-header.cjs.entry.js +5 -5
  23. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  24. package/dist/cjs/swisspost-internet-header.cjs.js +1 -1
  25. package/dist/collection/assets/i18n/translations.js +5 -0
  26. package/dist/collection/assets/i18n/translations.js.map +1 -1
  27. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +2 -2488
  28. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +23 -4
  29. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -1
  30. package/dist/collection/components/post-internet-footer/post-internet-footer.css +1 -2308
  31. package/dist/collection/components/post-internet-header/post-internet-header.css +1 -403
  32. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +2 -1451
  33. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +1 -1
  34. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -1
  35. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -370
  36. package/dist/collection/components/post-language-switch/post-language-switch.js +2 -2
  37. package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -1
  38. package/dist/collection/components/post-logo/post-logo.css +1 -265
  39. package/dist/collection/components/post-main-navigation/post-main-navigation.css +1 -641
  40. package/dist/collection/components/post-main-navigation/post-main-navigation.js +1 -1
  41. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
  42. package/dist/collection/components/post-meta-navigation/post-meta-navigation.css +1 -345
  43. package/dist/collection/components/post-search/post-search.css +4 -2482
  44. package/dist/collection/components/post-search/post-search.js +25 -5
  45. package/dist/collection/components/post-search/post-search.js.map +1 -1
  46. package/dist/collection/components/post-skiplinks/post-skiplinks.css +1 -21
  47. package/dist/collection/components/post-skiplinks/post-skiplinks.js +1 -1
  48. package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
  49. package/dist/components/language.service.js +5 -0
  50. package/dist/components/language.service.js.map +1 -1
  51. package/dist/components/post-klp-login-widget2.js +1 -1
  52. package/dist/components/post-klp-login-widget2.js.map +1 -1
  53. package/dist/components/post-language-switch2.js +1 -1
  54. package/dist/components/post-language-switch2.js.map +1 -1
  55. package/dist/components/post-logo2.js +1 -1
  56. package/dist/components/post-logo2.js.map +1 -1
  57. package/dist/components/post-main-navigation2.js +1 -1
  58. package/dist/components/post-main-navigation2.js.map +1 -1
  59. package/dist/components/post-meta-navigation2.js +1 -1
  60. package/dist/components/post-meta-navigation2.js.map +1 -1
  61. package/dist/components/post-search2.js +22 -2
  62. package/dist/components/post-search2.js.map +1 -1
  63. package/dist/components/post-skiplinks2.js +1 -1
  64. package/dist/components/post-skiplinks2.js.map +1 -1
  65. package/dist/components/swisspost-internet-breadcrumbs.js +6 -4
  66. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  67. package/dist/components/swisspost-internet-footer.js +1 -1
  68. package/dist/components/swisspost-internet-footer.js.map +1 -1
  69. package/dist/components/swisspost-internet-header.js +4 -4
  70. package/dist/components/swisspost-internet-header.js.map +1 -1
  71. package/dist/docs.json +18 -1
  72. package/dist/esm/{language.service-4289815d.js → language.service-109c485e.js} +6 -1
  73. package/dist/esm/language.service-109c485e.js.map +1 -0
  74. package/dist/esm/loader.js +1 -1
  75. package/dist/esm/post-klp-login-widget.entry.js +1 -1
  76. package/dist/esm/post-klp-login-widget.entry.js.map +1 -1
  77. package/dist/esm/post-language-switch.entry.js +2 -2
  78. package/dist/esm/post-language-switch.entry.js.map +1 -1
  79. package/dist/esm/post-logo.entry.js +1 -1
  80. package/dist/esm/post-logo.entry.js.map +1 -1
  81. package/dist/esm/post-main-navigation.entry.js +2 -2
  82. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  83. package/dist/esm/post-meta-navigation.entry.js +1 -1
  84. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  85. package/dist/esm/post-search.entry.js +22 -2
  86. package/dist/esm/post-search.entry.js.map +1 -1
  87. package/dist/esm/post-skiplinks.entry.js +2 -2
  88. package/dist/esm/post-skiplinks.entry.js.map +1 -1
  89. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +6 -5
  90. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  91. package/dist/esm/swisspost-internet-footer.entry.js +2 -2
  92. package/dist/esm/swisspost-internet-footer.entry.js.map +1 -1
  93. package/dist/esm/swisspost-internet-header.entry.js +5 -5
  94. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  95. package/dist/esm/swisspost-internet-header.js +1 -1
  96. package/dist/esm-es5/language.service-109c485e.js +2 -0
  97. package/dist/esm-es5/language.service-109c485e.js.map +1 -0
  98. package/dist/esm-es5/loader.js +1 -1
  99. package/dist/esm-es5/loader.js.map +1 -1
  100. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  101. package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -1
  102. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  103. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  104. package/dist/esm-es5/post-logo.entry.js +1 -1
  105. package/dist/esm-es5/post-logo.entry.js.map +1 -1
  106. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  107. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  108. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  109. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  110. package/dist/esm-es5/post-search.entry.js +1 -1
  111. package/dist/esm-es5/post-search.entry.js.map +1 -1
  112. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  113. package/dist/esm-es5/post-skiplinks.entry.js.map +1 -1
  114. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +2 -2
  115. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  116. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  117. package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -1
  118. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  119. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  120. package/dist/esm-es5/swisspost-internet-header.js +1 -1
  121. package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
  122. package/dist/swisspost-internet-header/p-0216631b.system.entry.js +2 -0
  123. package/dist/swisspost-internet-header/{p-34da85e6.system.entry.js.map → p-0216631b.system.entry.js.map} +1 -1
  124. package/dist/swisspost-internet-header/p-0352b702.system.entry.js +7 -0
  125. package/dist/swisspost-internet-header/p-0352b702.system.entry.js.map +1 -0
  126. package/dist/swisspost-internet-header/p-0e4299a3.entry.js +2 -0
  127. package/dist/swisspost-internet-header/{p-6bb07a80.entry.js.map → p-0e4299a3.entry.js.map} +1 -1
  128. package/dist/swisspost-internet-header/p-10bfe973.system.entry.js +2 -0
  129. package/dist/swisspost-internet-header/p-10bfe973.system.entry.js.map +1 -0
  130. package/dist/swisspost-internet-header/p-142627fa.entry.js +2 -0
  131. package/dist/swisspost-internet-header/{p-33f6c69f.entry.js.map → p-142627fa.entry.js.map} +1 -1
  132. package/dist/swisspost-internet-header/p-194475b8.system.js +2 -0
  133. package/dist/swisspost-internet-header/p-194475b8.system.js.map +1 -0
  134. package/dist/swisspost-internet-header/p-1a526dc3.system.entry.js +2 -0
  135. package/dist/swisspost-internet-header/{p-43320028.system.entry.js.map → p-1a526dc3.system.entry.js.map} +1 -1
  136. package/dist/swisspost-internet-header/p-28bcc0a1.entry.js +2 -0
  137. package/dist/swisspost-internet-header/p-28bcc0a1.entry.js.map +1 -0
  138. package/dist/swisspost-internet-header/p-312fcf55.system.entry.js +2 -0
  139. package/dist/swisspost-internet-header/{p-fed8d74d.system.entry.js.map → p-312fcf55.system.entry.js.map} +1 -1
  140. package/dist/swisspost-internet-header/p-334412b2.entry.js +2 -0
  141. package/dist/swisspost-internet-header/p-334412b2.entry.js.map +1 -0
  142. package/dist/swisspost-internet-header/p-334616bc.system.entry.js +2 -0
  143. package/dist/swisspost-internet-header/{p-0de024c6.system.entry.js.map → p-334616bc.system.entry.js.map} +1 -1
  144. package/dist/swisspost-internet-header/p-37872478.entry.js +7 -0
  145. package/dist/swisspost-internet-header/p-37872478.entry.js.map +1 -0
  146. package/dist/swisspost-internet-header/p-4da084d9.entry.js +2 -0
  147. package/dist/swisspost-internet-header/{p-2ab12ef9.entry.js.map → p-4da084d9.entry.js.map} +1 -1
  148. package/dist/swisspost-internet-header/p-5d893017.system.js +1 -1
  149. package/dist/swisspost-internet-header/p-5d893017.system.js.map +1 -1
  150. package/dist/swisspost-internet-header/p-77426673.entry.js +2 -0
  151. package/dist/swisspost-internet-header/{p-02df8ca4.entry.js.map → p-77426673.entry.js.map} +1 -1
  152. package/dist/swisspost-internet-header/p-7ddfd160.entry.js +2 -0
  153. package/dist/swisspost-internet-header/{p-3cfe4534.entry.js.map → p-7ddfd160.entry.js.map} +1 -1
  154. package/dist/swisspost-internet-header/p-8120031d.system.entry.js +2 -0
  155. package/dist/swisspost-internet-header/{p-3c8504b4.system.entry.js.map → p-8120031d.system.entry.js.map} +1 -1
  156. package/dist/swisspost-internet-header/p-935c70e1.js +2 -0
  157. package/dist/swisspost-internet-header/p-935c70e1.js.map +1 -0
  158. package/dist/swisspost-internet-header/p-95a1384f.system.entry.js +2 -0
  159. package/dist/swisspost-internet-header/p-95a1384f.system.entry.js.map +1 -0
  160. package/dist/swisspost-internet-header/p-b5937320.entry.js +2 -0
  161. package/dist/swisspost-internet-header/p-b5937320.entry.js.map +1 -0
  162. package/dist/swisspost-internet-header/p-c291d766.system.entry.js +2 -0
  163. package/dist/swisspost-internet-header/{p-a691c791.system.entry.js.map → p-c291d766.system.entry.js.map} +1 -1
  164. package/dist/swisspost-internet-header/p-cfc4dbfd.entry.js +2 -0
  165. package/dist/swisspost-internet-header/{p-51c15273.entry.js.map → p-cfc4dbfd.entry.js.map} +1 -1
  166. package/dist/swisspost-internet-header/p-d4106bf6.system.entry.js +2 -0
  167. package/dist/swisspost-internet-header/{p-cf9fb780.system.entry.js.map → p-d4106bf6.system.entry.js.map} +1 -1
  168. package/dist/swisspost-internet-header/swisspost-internet-header.css +2 -2
  169. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  170. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
  171. package/dist/types/assets/i18n/translations.d.ts +5 -0
  172. package/dist/types/components/post-internet-breadcrumbs/post-internet-breadcrumbs.d.ts +5 -1
  173. package/dist/types/components/post-klp-login-widget/post-klp-login-widget.d.ts +1 -1
  174. package/dist/types/components/post-search/post-search.d.ts +6 -0
  175. package/dist/types/components/post-skiplinks/post-skiplinks.d.ts +1 -1
  176. package/dist/types/components.d.ts +8 -0
  177. package/dist/types/services/language.service.d.ts +5 -0
  178. package/package.json +3 -3
  179. package/dist/cjs/language.service-672abba5.js.map +0 -1
  180. package/dist/esm/language.service-4289815d.js.map +0 -1
  181. package/dist/esm-es5/language.service-4289815d.js +0 -2
  182. package/dist/esm-es5/language.service-4289815d.js.map +0 -1
  183. package/dist/swisspost-internet-header/p-02df8ca4.entry.js +0 -2
  184. package/dist/swisspost-internet-header/p-0de024c6.system.entry.js +0 -2
  185. package/dist/swisspost-internet-header/p-2ab12ef9.entry.js +0 -2
  186. package/dist/swisspost-internet-header/p-33f6c69f.entry.js +0 -2
  187. package/dist/swisspost-internet-header/p-34da85e6.system.entry.js +0 -2
  188. package/dist/swisspost-internet-header/p-3c8504b4.system.entry.js +0 -2
  189. package/dist/swisspost-internet-header/p-3cfe4534.entry.js +0 -2
  190. package/dist/swisspost-internet-header/p-43320028.system.entry.js +0 -2
  191. package/dist/swisspost-internet-header/p-51c15273.entry.js +0 -2
  192. package/dist/swisspost-internet-header/p-55fbc914.entry.js +0 -2
  193. package/dist/swisspost-internet-header/p-55fbc914.entry.js.map +0 -1
  194. package/dist/swisspost-internet-header/p-6bb07a80.entry.js +0 -2
  195. package/dist/swisspost-internet-header/p-6dc0fc47.system.entry.js +0 -2
  196. package/dist/swisspost-internet-header/p-6dc0fc47.system.entry.js.map +0 -1
  197. package/dist/swisspost-internet-header/p-75dde9a2.entry.js +0 -7
  198. package/dist/swisspost-internet-header/p-75dde9a2.entry.js.map +0 -1
  199. package/dist/swisspost-internet-header/p-781ea7c2.system.entry.js +0 -2
  200. package/dist/swisspost-internet-header/p-781ea7c2.system.entry.js.map +0 -1
  201. package/dist/swisspost-internet-header/p-a5f5bb55.js +0 -2
  202. package/dist/swisspost-internet-header/p-a5f5bb55.js.map +0 -1
  203. package/dist/swisspost-internet-header/p-a691c791.system.entry.js +0 -2
  204. package/dist/swisspost-internet-header/p-b5758d6a.system.entry.js +0 -7
  205. package/dist/swisspost-internet-header/p-b5758d6a.system.entry.js.map +0 -1
  206. package/dist/swisspost-internet-header/p-bf99c127.system.js +0 -2
  207. package/dist/swisspost-internet-header/p-bf99c127.system.js.map +0 -1
  208. package/dist/swisspost-internet-header/p-cbba35a8.entry.js +0 -2
  209. package/dist/swisspost-internet-header/p-cbba35a8.entry.js.map +0 -1
  210. package/dist/swisspost-internet-header/p-cf9fb780.system.entry.js +0 -2
  211. package/dist/swisspost-internet-header/p-db8023e1.entry.js +0 -2
  212. package/dist/swisspost-internet-header/p-db8023e1.entry.js.map +0 -1
  213. package/dist/swisspost-internet-header/p-fed8d74d.system.entry.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"names":["LevelOneAction","props","TagName","level","url","h","class","active","isActiveOverride","focus","isOpen","href","title","_a","trim","_b","_c","text","undefined","tabindex","noFlyout","onTouchEnd","e","onKeyDown","onClick","translate","postMainNavigationCss","PostMainNavigation","this","resizeTimer","mouseLeaveTimer","mouseEnterTimer","connectedCallback","throttledResize","throttle","handleResize","window","addEventListener","passive","setWindowHeight","disconnectedCallback","removeEventListener","clearTimeout","host","classList","add","setTimeout","remove","style","setProperty","innerHeight","openFlyout","id","flyout","shadowRoot","getElementById","activeFlyout","addFlyoutAnimation","flyoutToggled","emit","closeFlyout","manageFocus","direction","userPrefersReducedMotion","querySelector","parentElement","once","isActiveFlyout","handleMouseEnter","innerWidth","length","handleMouseLeave","handleTouchEnd","event","cancelable","preventDefault","handleKeyPress","key","handleClick","async","force","mobileMenuOpen","dropdownToggled","open","element","firstLink","render","state","localizedConfig","header","headerConfig","Host","SvgSprite","translations","navMainAriaLabel","role","navMain","map","levelOne","onMouseLeave","onMouseEnter","renderLevelOneFlyout","bind","SvgIcon","name","classNames","backButtonText","mobileNavToggleClose","i","linkList","link","target"],"sources":["./src/components/post-main-navigation/components/level-one-action.component.tsx","./src/components/post-main-navigation/post-main-navigation.scss?tag=post-main-navigation&encapsulation=shadow","./src/components/post-main-navigation/post-main-navigation.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavMainEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\n\nexport const LevelOneAction = (props: {\n level: NavMainEntity;\n isOpen: boolean;\n onTouchEnd: (e: any) => void;\n onKeyDown: (e: any) => void;\n onClick: (e: any) => void;\n}) => {\n const TagName = props.level.url ? 'a' : 'button';\n\n return (\n <TagName\n class={{\n 'main-link': true,\n 'active': !!props.level.isActiveOverride,\n 'focus': props.isOpen,\n }}\n href={props.level.url}\n title={\n props.level.title?.trim() && props.level.title?.trim() !== props.level.text?.trim()\n ? props.level.title\n : undefined\n }\n tabindex={props.level.url ? undefined : 0}\n aria-haspopup={!props.level.noFlyout + ''}\n aria-expanded={props.level.noFlyout ? null : props.isOpen + ''}\n onTouchEnd={e => props.onTouchEnd(e)}\n onKeyDown={e => props.onKeyDown(e)}\n onClick={e => props.onClick(e)}\n >\n <span>{props.level.text}</span>\n {props.level.isActiveOverride ? (\n <span class=\"visually-hidden\">{translate('Active navigation element')}</span>\n ) : null}\n <svg aria-hidden=\"true\">\n <use href=\"#pi-pointy-arrow-right\" />\n </svg>\n </TagName>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/placeholders/text';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n\n:host {\n --host-window-height: var(--window-height, 100vh);\n --calculated-header-height: calc(var(--header-height) + 1px);\n\n display: block;\n min-width: 0;\n height: var(--header-height);\n}\n\n:host(.no-animation) {\n * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n.main-navigation,\n.main-container,\n.main-container li,\n.main-link {\n @include mixins.min(lg) {\n height: 100%;\n }\n}\n\n.main-navigation {\n font-size: functions.px-to-rem(18px);\n\n @include mixins.min(lg) {\n font-size: functions.px-to-rem(16px);\n margin: 0 0.75rem;\n }\n\n @include mixins.min(xl) {\n font-size: functions.px-to-rem(18px);\n }\n\n @include mixins.min(xxl) {\n font-size: functions.px-to-rem(20px);\n }\n\n @include mixins.max(lg) {\n position: absolute;\n top: var(--calculated-header-height);\n left: 0;\n background: white;\n height: calc(var(--host-window-height) - var(--calculated-header-height));\n width: 100%;\n margin: 0;\n overflow: hidden scroll;\n -webkit-overflow-scrolling: touch;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n z-index: -1;\n visibility: hidden;\n transform: translateY(-100%);\n transition: transform 0.35s, visibility 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: translateY(0);\n visibility: visible;\n }\n }\n}\n\n.main-container {\n @extend %no-list;\n\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n @include mixins.max(lg) {\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n\n > li + li {\n border-top: 1px solid color.$gray-10;\n }\n }\n\n @include mixins.min(lg) {\n padding-right: 0;\n padding-left: 0;\n }\n\n > li {\n flex: 0 1 auto;\n min-width: 0;\n }\n}\n\n.main-link {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n text-align: left;\n cursor: pointer;\n width: 100%;\n\n @include mixins.min(lg) {\n svg {\n display: none;\n }\n }\n\n @include mixins.max(lg) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-weight: 300;\n padding: 0.625rem 0;\n width: 100%;\n text-align: left;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n.main-link,\n.flyout-link {\n position: relative;\n color: black;\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n width: 100%;\n height: 4px;\n background-color: transparent;\n opacity: 0;\n transform: scaleX(0.8);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n\n &:hover,\n &.focus {\n &::after {\n background-color: color.$gray-20;\n opacity: 1;\n transform: scale(1);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n }\n }\n\n &.active {\n font-weight: 700;\n\n &::after {\n background-color: color.$yellow;\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n.flyout {\n left: 0;\n width: 100%;\n background: white;\n padding-bottom: 3rem;\n overflow: auto;\n overscroll-behavior: contain;\n visibility: hidden;\n\n @include mixins.min(lg) {\n position: absolute;\n top: 100%;\n max-height: calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);\n z-index: -1;\n box-shadow: 0 0 1px 0 rgb(0 0 0 / 40%);\n transform: translateY(-100%);\n\n &.open {\n box-shadow: 0 0 8px 0 rgb(0 0 0 / 40%);\n transform: translateY(0);\n }\n }\n\n @include mixins.max(lg) {\n position: fixed;\n top: 0;\n height: 100%;\n z-index: 1;\n transform: translateX(100%);\n\n &.open {\n transform: translateX(0);\n }\n }\n\n &.open {\n visibility: visible;\n }\n\n &.animate {\n transition: transform 0.35s, visibility 0.35s, box-shadow 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n\n.flyout-nav {\n @extend %font-curve-small;\n\n display: flex;\n justify-content: space-between;\n min-height: 3.5rem;\n\n // Change box-sizing to content-box to add 1px border width to flyout-nav hight.\n // This ensures flyout-nav has same hight as main-navigation-container.\n box-sizing: content-box;\n}\n\n.flyout-row {\n display: flex;\n gap: 1.5rem;\n\n @include mixins.max(lg) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n\n @include mixins.max(rg) {\n grid-template-columns: 1fr;\n }\n}\n\n.flyout-column {\n flex: 1;\n max-width: 25%;\n\n @include mixins.max(lg) {\n max-width: none;\n }\n\n h3 {\n @extend %font-curve-small;\n margin-top: 0;\n }\n}\n\n.flyout-back-button {\n @include mixins.container-padding();\n\n display: flex;\n align-items: center;\n font-size: functions.px-to-rem(16px);\n font-weight: 400;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n\n.flyout-close-button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n margin-left: auto;\n padding: 0 1.5rem;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.max(lg) {\n display: none;\n }\n}\n\n.flyout-linklist {\n @extend %no-list;\n\n li {\n border-top: 1px solid color.$gray-10;\n }\n\n &:first-child > li {\n border-top-color: transparent;\n }\n}\n\n.flyout-link {\n @extend %nav-link;\n\n display: block;\n padding: 0.75rem 0;\n}\n\n.flyout-title {\n @extend %font-curve-bigger-regular;\n\n margin: 2.5rem 0 1.5rem 0;\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n","import { Component, Host, h, State, Method, Event, Element, EventEmitter } from '@stencil/core';\nimport { throttle } from 'throttle-debounce';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n IsFocusable,\n NavMainEntity,\n} from '../../models/header.model';\nimport { userPrefersReducedMotion } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { LevelOneAction } from './components/level-one-action.component';\n\n@Component({\n tag: 'post-main-navigation',\n styleUrl: 'post-main-navigation.scss',\n shadow: true,\n})\nexport class PostMainNavigation implements HasDropdown, IsFocusable {\n @State() activeFlyout: string | null;\n @State() mobileMenuOpen: boolean;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event() flyoutToggled: EventEmitter<string | null>;\n @Element() host: DropdownElement;\n private throttledResize: throttle<() => void>;\n private resizeTimer: number | null = null;\n private mouseLeaveTimer: number | null = null;\n private mouseEnterTimer: number | null = null;\n\n connectedCallback() {\n this.throttledResize = throttle(300, () => this.handleResize());\n window.addEventListener('resize', this.throttledResize, { passive: true });\n this.setWindowHeight();\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.throttledResize);\n if (this.mouseEnterTimer !== null) window.clearTimeout(this.mouseEnterTimer);\n if (this.mouseLeaveTimer !== null) window.clearTimeout(this.mouseLeaveTimer);\n }\n\n handleResize() {\n // Suspend all animations and transitions on window resize\n this.host.classList.add('no-animation');\n if (this.resizeTimer !== null) window.clearTimeout(this.resizeTimer);\n this.resizeTimer = window.setTimeout(() => {\n this.host.classList.remove('no-animation');\n }, 300);\n\n this.setWindowHeight();\n }\n\n // Update window height var\n setWindowHeight() {\n if (!this.host) {\n return;\n }\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n\n // Safari might or might not show a blank bar at the bottom where the browser\n // controls should be. This timeout waits for this bar to appear before resetting the available height\n window.setTimeout(() => {\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n }, 100);\n }\n\n openFlyout(id: string) {\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout && this.activeFlyout !== '') {\n // Add flyout animation if there's no flyout open\n this.addFlyoutAnimation(flyout, 'expand');\n }\n\n this.activeFlyout = id;\n this.flyoutToggled.emit(id);\n this.setWindowHeight();\n\n if (this.mouseLeaveTimer !== null) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n }\n\n closeFlyout(id?: string, manageFocus = true) {\n if (id === undefined) return;\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout) {\n // Add flyout animation for close action\n this.addFlyoutAnimation(flyout, 'collapse', manageFocus);\n }\n\n this.activeFlyout = null;\n this.flyoutToggled.emit();\n }\n\n addFlyoutAnimation(flyout: HTMLElement, direction?: 'expand' | 'collapse', manageFocus = true) {\n // Check if user prefers to see animations or not\n if (!userPrefersReducedMotion()) {\n flyout.classList.add('animate');\n\n // Remove flyout animation after transition ended\n flyout.addEventListener(\n 'transitionend',\n () => {\n if (manageFocus) {\n if (direction === 'expand') {\n flyout.querySelector<HTMLElement>('button.flyout-back-button')?.focus();\n } else if (direction === 'collapse') {\n flyout.parentElement?.querySelector<HTMLElement>('a.main-link')?.focus();\n }\n }\n\n flyout.classList.remove('animate');\n },\n {\n once: true,\n },\n );\n }\n }\n\n isActiveFlyout(id?: string) {\n return id === this.activeFlyout;\n }\n\n handleMouseEnter(level: NavMainEntity) {\n // Cancel opening the flyout if there already is one scheduled to open\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n this.mouseEnterTimer = null;\n }\n\n // Cancel closing if we enter again\n if (this.mouseLeaveTimer && this.activeFlyout === level.id) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0 && this.activeFlyout !== level.id) {\n // Delay opening the flyout for a moment to give users a chance to move the mouse over the navigation without triggering the flyout\n this.mouseEnterTimer = window.setTimeout(() => {\n this.mouseEnterTimer = null;\n if (level.id !== undefined) this.openFlyout(level.id);\n }, 200);\n }\n }\n\n handleMouseLeave(level: NavMainEntity) {\n // Cancel opening the flyout if a mouseleave event happens before the flyout opened\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n }\n\n // Don't close an open flyout if the mouseleave is from another mainnav entry\n if (this.activeFlyout && this.activeFlyout !== level.id) {\n return;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0) {\n // Allow the pointer to shortly leave the flyout without closing it. This\n // allows for user mistakes and makes the experience less nervous\n this.mouseLeaveTimer = window.setTimeout(() => {\n this.closeFlyout(level.id, false);\n }, 300);\n }\n }\n\n handleTouchEnd(event: TouchEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first touchstart and has a flyout, prevent link activation and open the flyout\n if (event.cancelable) event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleKeyPress(event: KeyboardEvent, level: NavMainEntity) {\n if (event.key === 'Enter' && !this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first enter keypress and has a flyout, prevent link activation and open the flyout\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleClick(event: MouseEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first click, always open the flyout, never the link\n // This is relevant for desktop with active screenreader which\n // translates an enter keypress to a click\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n /**\n * Toggle the main navigation (only visible on mobile)\n * @param force Force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.mobileMenuOpen = force === undefined ? !this.mobileMenuOpen : force;\n this.dropdownToggled.emit({ open: this.mobileMenuOpen, element: this.host });\n\n if (force === false) {\n this.closeFlyout();\n }\n\n this.setWindowHeight();\n\n return this.mobileMenuOpen;\n }\n\n /**\n * Focus the main navigation toggle button\n */\n @Method()\n async setFocus() {\n const firstLink = this.host.shadowRoot?.querySelector<HTMLElement>('.main-link');\n if (firstLink) {\n firstLink.focus();\n }\n }\n\n /**\n * Open a specific flyout\n * @param id Flyout ID\n */\n @Method()\n async setActiveFlyout(id: string | null) {\n this.activeFlyout = id;\n this.flyoutToggled.emit(this.activeFlyout);\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const headerConfig = state.localizedConfig.header;\n\n return (\n <Host>\n <SvgSprite />\n <nav\n aria-label={headerConfig.translations.navMainAriaLabel}\n id=\"post-internet-header-main-navigation\"\n class={{ 'main-navigation': true, 'open': this.mobileMenuOpen }}\n role=\"menu\"\n >\n <ul class=\"main-container container\">\n {headerConfig.navMain.map(levelOne => (\n <li\n key={levelOne.text}\n onMouseLeave={() => this.handleMouseLeave(levelOne)}\n onMouseEnter={() => this.handleMouseEnter(levelOne)}\n >\n <LevelOneAction\n level={levelOne}\n isOpen={this.isActiveFlyout(levelOne.id)}\n onTouchEnd={e => this.handleTouchEnd(e, levelOne)}\n onKeyDown={e => this.handleKeyPress(e, levelOne)}\n onClick={e => this.handleClick(e, levelOne)}\n />\n {!levelOne.noFlyout ? renderLevelOneFlyout.bind(this)(levelOne) : null}\n </li>\n ))}\n </ul>\n <slot></slot>\n </nav>\n </Host>\n );\n\n function renderLevelOneFlyout(levelOne: NavMainEntity) {\n return (\n <div id={levelOne.id} class={{ flyout: true, open: this.isActiveFlyout(levelOne.id) }}>\n <div class=\"wide-container\">\n <div class=\"flyout-nav\">\n <button\n class=\"nav-link flyout-back-button\"\n onClick={() => this.closeFlyout(levelOne.id)}\n >\n <SvgIcon name=\"pi-pointy-arrow-right\" classNames=\"mirrored\" />\n <span>{headerConfig.translations.backButtonText}</span>\n </button>\n <button class=\"flyout-close-button\" onClick={() => this.closeFlyout(levelOne.id)}>\n <span class=\"visually-hidden\">\n {levelOne.text}, {headerConfig.translations.mobileNavToggleClose}\n </span>\n <SvgIcon name=\"pi-close\" />\n </button>\n </div>\n <h2 class=\"flyout-title container\">\n <a href={levelOne.url} class=\"nav-link\">\n {levelOne.text}\n </a>\n </h2>\n <div class=\"flyout-row container\">\n {levelOne.flyout.map((flyout, i) => (\n <div key={flyout.title} class=\"flyout-column\">\n {flyout.title ? <h3 id={`${levelOne.id}-column-${i}`}>{flyout.title}</h3> : null}\n <ul\n class=\"flyout-linklist\"\n aria-labelledby={flyout.title ? `${levelOne.id}-column-${i}` : undefined}\n >\n {flyout.linkList.map(link => (\n <li key={link.url}>\n <a\n class={{\n 'flyout-link': true,\n 'active': !!link?.isActiveOverride,\n }}\n href={link.url}\n target={link.target}\n >\n {link.title}\n {link?.isActiveOverride ? (\n <span class=\"visually-hidden\">\n , {translate('Active navigation element')}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["LevelOneAction","props","TagName","level","url","h","class","active","isActiveOverride","focus","isOpen","href","title","_a","trim","_b","_c","text","undefined","tabindex","noFlyout","onTouchEnd","e","onKeyDown","onClick","translate","postMainNavigationCss","PostMainNavigation","this","resizeTimer","mouseLeaveTimer","mouseEnterTimer","connectedCallback","throttledResize","throttle","handleResize","window","addEventListener","passive","setWindowHeight","disconnectedCallback","removeEventListener","clearTimeout","host","classList","add","setTimeout","remove","style","setProperty","innerHeight","openFlyout","id","flyout","shadowRoot","getElementById","activeFlyout","addFlyoutAnimation","flyoutToggled","emit","closeFlyout","manageFocus","direction","userPrefersReducedMotion","querySelector","parentElement","once","isActiveFlyout","handleMouseEnter","innerWidth","length","handleMouseLeave","handleTouchEnd","event","cancelable","preventDefault","handleKeyPress","key","handleClick","async","force","mobileMenuOpen","dropdownToggled","open","element","firstLink","render","state","localizedConfig","header","headerConfig","Host","SvgSprite","translations","navMainAriaLabel","role","navMain","map","levelOne","onMouseLeave","onMouseEnter","renderLevelOneFlyout","bind","SvgIcon","name","classNames","backButtonText","mobileNavToggleClose","i","linkList","link","target"],"sources":["./src/components/post-main-navigation/components/level-one-action.component.tsx","./src/components/post-main-navigation/post-main-navigation.scss?tag=post-main-navigation&encapsulation=shadow","./src/components/post-main-navigation/post-main-navigation.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavMainEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\n\nexport const LevelOneAction = (props: {\n level: NavMainEntity;\n isOpen: boolean;\n onTouchEnd: (e: any) => void;\n onKeyDown: (e: any) => void;\n onClick: (e: any) => void;\n}) => {\n const TagName = props.level.url ? 'a' : 'button';\n\n return (\n <TagName\n class={{\n 'main-link': true,\n 'active': !!props.level.isActiveOverride,\n 'focus': props.isOpen,\n }}\n href={props.level.url}\n title={\n props.level.title?.trim() && props.level.title?.trim() !== props.level.text?.trim()\n ? props.level.title\n : undefined\n }\n tabindex={props.level.url ? undefined : 0}\n aria-haspopup={!props.level.noFlyout + ''}\n aria-expanded={props.level.noFlyout ? null : props.isOpen + ''}\n onTouchEnd={e => props.onTouchEnd(e)}\n onKeyDown={e => props.onKeyDown(e)}\n onClick={e => props.onClick(e)}\n >\n <span>{props.level.text}</span>\n {props.level.isActiveOverride ? (\n <span class=\"visually-hidden\">{translate('Active navigation element')}</span>\n ) : null}\n <svg aria-hidden=\"true\">\n <use href=\"#pi-pointy-arrow-right\" />\n </svg>\n </TagName>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/placeholders/text';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n\n:host {\n --host-window-height: var(--window-height, 100vh);\n --calculated-header-height: calc(var(--header-height) + 1px);\n\n display: block;\n min-width: 0;\n height: var(--header-height);\n}\n\n:host(.no-animation) {\n * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n.main-navigation,\n.main-container,\n.main-container li,\n.main-link {\n @include mixins.min(lg) {\n height: 100%;\n }\n}\n\n.main-navigation {\n font-size: functions.px-to-rem(18px);\n\n @include mixins.min(lg) {\n font-size: functions.px-to-rem(16px);\n margin: 0 0.75rem;\n }\n\n @include mixins.min(xl) {\n font-size: functions.px-to-rem(18px);\n }\n\n @include mixins.min(xxl) {\n font-size: functions.px-to-rem(20px);\n }\n\n @include mixins.max(lg) {\n position: absolute;\n top: var(--calculated-header-height);\n left: 0;\n background: white;\n height: calc(var(--host-window-height) - var(--calculated-header-height));\n width: 100%;\n margin: 0;\n overflow: hidden scroll;\n -webkit-overflow-scrolling: touch;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n z-index: -1;\n visibility: hidden;\n transform: translateY(-100%);\n transition: transform 0.35s, visibility 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: translateY(0);\n visibility: visible;\n }\n }\n}\n\n.main-container {\n @extend %no-list;\n\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n @include mixins.max(lg) {\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n\n > li + li {\n border-top: 1px solid color.$gray-10;\n }\n }\n\n @include mixins.min(lg) {\n padding-right: 0;\n padding-left: 0;\n }\n\n > li {\n flex: 0 1 auto;\n min-width: 0;\n }\n}\n\n.main-link {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n text-align: left;\n cursor: pointer;\n width: 100%;\n\n @include mixins.min(lg) {\n svg {\n display: none;\n }\n }\n\n @include mixins.max(lg) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-weight: 300;\n padding: 0.625rem 0;\n width: 100%;\n text-align: left;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n.main-link,\n.flyout-link {\n position: relative;\n color: black;\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n width: 100%;\n height: 4px;\n background-color: transparent;\n opacity: 0;\n transform: scaleX(0.8);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n\n &:hover,\n &.focus {\n &::after {\n background-color: color.$gray-20;\n opacity: 1;\n transform: scale(1);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n }\n }\n\n &.active {\n font-weight: 700;\n\n &::after {\n background-color: color.$yellow;\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n.flyout {\n left: 0;\n width: 100%;\n background: white;\n padding-bottom: 3rem;\n overflow: auto;\n overscroll-behavior: contain;\n visibility: hidden;\n\n @include mixins.min(lg) {\n position: absolute;\n top: 100%;\n max-height: calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);\n z-index: -1;\n box-shadow: 0 0 1px 0 rgb(0 0 0 / 40%);\n transform: translateY(-100%);\n\n &.open {\n box-shadow: 0 0 8px 0 rgb(0 0 0 / 40%);\n transform: translateY(0);\n }\n }\n\n @include mixins.max(lg) {\n position: fixed;\n top: 0;\n height: 100%;\n z-index: 1;\n transform: translateX(100%);\n\n &.open {\n transform: translateX(0);\n }\n }\n\n &.open {\n visibility: visible;\n }\n\n &.animate {\n transition: transform 0.35s, visibility 0.35s, box-shadow 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n\n.flyout-nav {\n @extend %font-curve-small;\n\n display: flex;\n justify-content: space-between;\n min-height: 3.5rem;\n\n // Change box-sizing to content-box to add 1px border width to flyout-nav hight.\n // This ensures flyout-nav has same hight as main-navigation-container.\n box-sizing: content-box;\n}\n\n.flyout-row {\n display: flex;\n gap: 1.5rem;\n\n @include mixins.max(lg) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n\n @include mixins.max(rg) {\n grid-template-columns: 1fr;\n }\n}\n\n.flyout-column {\n flex: 1;\n max-width: 25%;\n\n @include mixins.max(lg) {\n max-width: none;\n }\n\n h3 {\n @extend %font-curve-small;\n margin-top: 0;\n }\n}\n\n.flyout-back-button {\n @include mixins.container-padding();\n\n display: flex;\n align-items: center;\n font-size: functions.px-to-rem(16px);\n font-weight: 400;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n\n.flyout-close-button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n margin-left: auto;\n padding: 0 1.5rem;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.max(lg) {\n display: none;\n }\n}\n\n.flyout-linklist {\n @extend %no-list;\n\n li {\n border-top: 1px solid color.$gray-10;\n }\n\n &:first-child > li {\n border-top-color: transparent;\n }\n}\n\n.flyout-link {\n @extend %nav-link;\n\n display: block;\n padding: 0.75rem 0;\n}\n\n.flyout-title {\n @extend %font-curve-bigger-regular;\n\n margin: 2.5rem 0 1.5rem 0;\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, State } from '@stencil/core';\nimport { throttle } from 'throttle-debounce';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n IsFocusable,\n NavMainEntity,\n} from '../../models/header.model';\nimport { userPrefersReducedMotion } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { LevelOneAction } from './components/level-one-action.component';\n\n@Component({\n tag: 'post-main-navigation',\n styleUrl: 'post-main-navigation.scss',\n shadow: true,\n})\nexport class PostMainNavigation implements HasDropdown, IsFocusable {\n @State() activeFlyout: string | null;\n @State() mobileMenuOpen: boolean;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event() flyoutToggled: EventEmitter<string | null>;\n @Element() host: DropdownElement;\n private throttledResize: throttle<() => void>;\n private resizeTimer: number | null = null;\n private mouseLeaveTimer: number | null = null;\n private mouseEnterTimer: number | null = null;\n\n connectedCallback() {\n this.throttledResize = throttle(300, () => this.handleResize());\n window.addEventListener('resize', this.throttledResize, { passive: true });\n this.setWindowHeight();\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.throttledResize);\n if (this.mouseEnterTimer !== null) window.clearTimeout(this.mouseEnterTimer);\n if (this.mouseLeaveTimer !== null) window.clearTimeout(this.mouseLeaveTimer);\n }\n\n handleResize() {\n // Suspend all animations and transitions on window resize\n this.host.classList.add('no-animation');\n if (this.resizeTimer !== null) window.clearTimeout(this.resizeTimer);\n this.resizeTimer = window.setTimeout(() => {\n this.host.classList.remove('no-animation');\n }, 300);\n\n this.setWindowHeight();\n }\n\n // Update window height var\n setWindowHeight() {\n if (!this.host) {\n return;\n }\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n\n // Safari might or might not show a blank bar at the bottom where the browser\n // controls should be. This timeout waits for this bar to appear before resetting the available height\n window.setTimeout(() => {\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n }, 100);\n }\n\n openFlyout(id: string) {\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout && this.activeFlyout !== '') {\n // Add flyout animation if there's no flyout open\n this.addFlyoutAnimation(flyout, 'expand');\n }\n\n this.activeFlyout = id;\n this.flyoutToggled.emit(id);\n this.setWindowHeight();\n\n if (this.mouseLeaveTimer !== null) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n }\n\n closeFlyout(id?: string, manageFocus = true) {\n if (id === undefined) return;\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout) {\n // Add flyout animation for close action\n this.addFlyoutAnimation(flyout, 'collapse', manageFocus);\n }\n\n this.activeFlyout = null;\n this.flyoutToggled.emit();\n }\n\n addFlyoutAnimation(flyout: HTMLElement, direction?: 'expand' | 'collapse', manageFocus = true) {\n // Check if user prefers to see animations or not\n if (!userPrefersReducedMotion()) {\n flyout.classList.add('animate');\n\n // Remove flyout animation after transition ended\n flyout.addEventListener(\n 'transitionend',\n () => {\n if (manageFocus) {\n if (direction === 'expand') {\n flyout.querySelector<HTMLElement>('button.flyout-back-button')?.focus();\n } else if (direction === 'collapse') {\n flyout.parentElement?.querySelector<HTMLElement>('a.main-link')?.focus();\n }\n }\n\n flyout.classList.remove('animate');\n },\n {\n once: true,\n },\n );\n }\n }\n\n isActiveFlyout(id?: string) {\n return id === this.activeFlyout;\n }\n\n handleMouseEnter(level: NavMainEntity) {\n // Cancel opening the flyout if there already is one scheduled to open\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n this.mouseEnterTimer = null;\n }\n\n // Cancel closing if we enter again\n if (this.mouseLeaveTimer && this.activeFlyout === level.id) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0 && this.activeFlyout !== level.id) {\n // Delay opening the flyout for a moment to give users a chance to move the mouse over the navigation without triggering the flyout\n this.mouseEnterTimer = window.setTimeout(() => {\n this.mouseEnterTimer = null;\n if (level.id !== undefined) this.openFlyout(level.id);\n }, 200);\n }\n }\n\n handleMouseLeave(level: NavMainEntity) {\n // Cancel opening the flyout if a mouseleave event happens before the flyout opened\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n }\n\n // Don't close an open flyout if the mouseleave is from another mainnav entry\n if (this.activeFlyout && this.activeFlyout !== level.id) {\n return;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0) {\n // Allow the pointer to shortly leave the flyout without closing it. This\n // allows for user mistakes and makes the experience less nervous\n this.mouseLeaveTimer = window.setTimeout(() => {\n this.closeFlyout(level.id, false);\n }, 300);\n }\n }\n\n handleTouchEnd(event: TouchEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first touchstart and has a flyout, prevent link activation and open the flyout\n if (event.cancelable) event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleKeyPress(event: KeyboardEvent, level: NavMainEntity) {\n if (event.key === 'Enter' && !this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first enter keypress and has a flyout, prevent link activation and open the flyout\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleClick(event: MouseEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first click, always open the flyout, never the link\n // This is relevant for desktop with active screenreader which\n // translates an enter keypress to a click\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n /**\n * Toggle the main navigation (only visible on mobile)\n * @param force Force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.mobileMenuOpen = force === undefined ? !this.mobileMenuOpen : force;\n this.dropdownToggled.emit({ open: this.mobileMenuOpen, element: this.host });\n\n if (force === false) {\n this.closeFlyout();\n }\n\n this.setWindowHeight();\n\n return this.mobileMenuOpen;\n }\n\n /**\n * Focus the main navigation toggle button\n */\n @Method()\n async setFocus() {\n const firstLink = this.host.shadowRoot?.querySelector<HTMLElement>('.main-link');\n if (firstLink) {\n firstLink.focus();\n }\n }\n\n /**\n * Open a specific flyout\n * @param id Flyout ID\n */\n @Method()\n async setActiveFlyout(id: string | null) {\n this.activeFlyout = id;\n this.flyoutToggled.emit(this.activeFlyout);\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const headerConfig = state.localizedConfig.header;\n\n return (\n <Host>\n <SvgSprite />\n <nav\n aria-label={headerConfig.translations.navMainAriaLabel}\n id=\"post-internet-header-main-navigation\"\n class={{ 'main-navigation': true, 'open': this.mobileMenuOpen }}\n role=\"menu\"\n >\n <ul class=\"main-container container\">\n {headerConfig.navMain.map(levelOne => (\n <li\n key={levelOne.text}\n onMouseLeave={() => this.handleMouseLeave(levelOne)}\n onMouseEnter={() => this.handleMouseEnter(levelOne)}\n >\n <LevelOneAction\n level={levelOne}\n isOpen={this.isActiveFlyout(levelOne.id)}\n onTouchEnd={e => this.handleTouchEnd(e, levelOne)}\n onKeyDown={e => this.handleKeyPress(e, levelOne)}\n onClick={e => this.handleClick(e, levelOne)}\n />\n {!levelOne.noFlyout ? renderLevelOneFlyout.bind(this)(levelOne) : null}\n </li>\n ))}\n </ul>\n <slot></slot>\n </nav>\n </Host>\n );\n\n function renderLevelOneFlyout(levelOne: NavMainEntity) {\n return (\n <div id={levelOne.id} class={{ flyout: true, open: this.isActiveFlyout(levelOne.id) }}>\n <div class=\"wide-container\">\n <div class=\"flyout-nav\">\n <button\n class=\"nav-link flyout-back-button\"\n onClick={() => this.closeFlyout(levelOne.id)}\n >\n <SvgIcon name=\"pi-pointy-arrow-right\" classNames=\"mirrored\" />\n <span>{headerConfig.translations.backButtonText}</span>\n </button>\n <button class=\"flyout-close-button\" onClick={() => this.closeFlyout(levelOne.id)}>\n <span class=\"visually-hidden\">\n {levelOne.text}, {headerConfig.translations.mobileNavToggleClose}\n </span>\n <SvgIcon name=\"pi-close\" />\n </button>\n </div>\n <h2 class=\"flyout-title container\">\n <a href={levelOne.url} class=\"nav-link\">\n {levelOne.text}\n </a>\n </h2>\n <div class=\"flyout-row container\">\n {levelOne.flyout.map((flyout, i) => (\n <div key={flyout.title} class=\"flyout-column\">\n {flyout.title ? <h3 id={`${levelOne.id}-column-${i}`}>{flyout.title}</h3> : null}\n <ul\n class=\"flyout-linklist\"\n aria-labelledby={flyout.title ? `${levelOne.id}-column-${i}` : undefined}\n >\n {flyout.linkList.map(link => (\n <li key={link.url}>\n <a\n class={{\n 'flyout-link': true,\n 'active': !!link?.isActiveOverride,\n }}\n href={link.url}\n target={link.target}\n >\n {link.title}\n {link?.isActiveOverride ? (\n <span class=\"visually-hidden\">\n , {translate('Active navigation element')}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["./p-1d455921.system.js"],(function(e,t){"use strict";var s,o;return{setters:[function(t){s=t.p;o=t.b;e("setNonce",t.s)}],execute:function(){var e=function(){var e=t.meta.url;var o={};if(e!==""){o.resourcesUrl=new URL(".",e).href}return s(o)};e().then((function(e){return o([["p-43320028.system",[[1,"swisspost-internet-header",{project:[1],stickyness:[1],language:[1],meta:[4],login:[4],search:[4],skiplinks:[4],configProxy:[1,"config-proxy"],environment:[1],languageSwitchOverrides:[1,"language-switch-overrides"],customConfig:[1,"custom-config"],languageCookieKey:[1,"language-cookie-key"],languageLocalStorageKey:[1,"language-local-storage-key"],activeRoute:[8,"active-route"],osFlyoutOverrides:[1,"os-flyout-overrides"],fullWidth:[4,"full-width"],activeFlyout:[32],activeDropdownElement:[32],getCurrentLanguage:[64]},[[0,"languageChanged","handleLanguageChangeEvent"]]]]],["p-b5758d6a.system",[[1,"swisspost-internet-breadcrumbs",{customItems:[1,"custom-items"],customBreadcrumbItems:[32],overlayVisible:[32],isConcatenated:[32],dropdownOpen:[32],refsReady:[32],toggleOverlayById:[64]}]]],["p-34da85e6.system",[[1,"swisspost-internet-footer",{liveSupportEnabled:[32],cookieSettingsEnabled:[32]}]]],["p-0de024c6.system",[[1,"post-klp-login-widget",{setFocus:[64]}]]],["p-a691c791.system",[[1,"post-language-switch",{mode:[1],langSwitchOpen:[32],toggleDropdown:[64]}]]],["p-fed8d74d.system",[[1,"post-logo"]]],["p-cf9fb780.system",[[1,"post-main-navigation",{activeFlyout:[32],mobileMenuOpen:[32],toggleDropdown:[64],setFocus:[64],setActiveFlyout:[64]}]]],["p-3c8504b4.system",[[1,"post-meta-navigation",{orientation:[1],fullWidth:[4,"full-width"]}]]],["p-6dc0fc47.system",[[1,"post-search",{searchDropdownOpen:[32],coveoSuggestions:[32],placeSuggestions:[32],parcelSuggestion:[32],toggleDropdown:[64],setFocus:[64]}]]],["p-781ea7c2.system",[[0,"post-skiplinks"]]]],e)}))}}}));
1
+ System.register(["./p-1d455921.system.js"],(function(e,t){"use strict";var s,o;return{setters:[function(t){s=t.p;o=t.b;e("setNonce",t.s)}],execute:function(){var e=function(){var e=t.meta.url;var o={};if(e!==""){o.resourcesUrl=new URL(".",e).href}return s(o)};e().then((function(e){return o([["p-1a526dc3.system",[[1,"swisspost-internet-header",{project:[1],stickyness:[1],language:[1],meta:[4],login:[4],search:[4],skiplinks:[4],configProxy:[1,"config-proxy"],environment:[1],languageSwitchOverrides:[1,"language-switch-overrides"],customConfig:[1,"custom-config"],languageCookieKey:[1,"language-cookie-key"],languageLocalStorageKey:[1,"language-local-storage-key"],activeRoute:[8,"active-route"],osFlyoutOverrides:[1,"os-flyout-overrides"],fullWidth:[4,"full-width"],activeFlyout:[32],activeDropdownElement:[32],getCurrentLanguage:[64]},[[0,"languageChanged","handleLanguageChangeEvent"]]]]],["p-0352b702.system",[[1,"swisspost-internet-breadcrumbs",{customItems:[1,"custom-items"],hideButtons:[4,"hide-buttons"],customBreadcrumbItems:[32],overlayVisible:[32],isConcatenated:[32],dropdownOpen:[32],refsReady:[32],toggleOverlayById:[64]}]]],["p-0216631b.system",[[1,"swisspost-internet-footer",{liveSupportEnabled:[32],cookieSettingsEnabled:[32]}]]],["p-334616bc.system",[[1,"post-klp-login-widget",{setFocus:[64]}]]],["p-c291d766.system",[[1,"post-language-switch",{mode:[1],langSwitchOpen:[32],toggleDropdown:[64]}]]],["p-312fcf55.system",[[1,"post-logo"]]],["p-d4106bf6.system",[[1,"post-main-navigation",{activeFlyout:[32],mobileMenuOpen:[32],toggleDropdown:[64],setFocus:[64],setActiveFlyout:[64]}]]],["p-8120031d.system",[[1,"post-meta-navigation",{orientation:[1],fullWidth:[4,"full-width"]}]]],["p-10bfe973.system",[[1,"post-search",{searchDropdownOpen:[32],coveoSuggestions:[32],placeSuggestions:[32],parcelSuggestion:[32],toggleDropdown:[64],setFocus:[64]}]]],["p-95a1384f.system",[[0,"post-skiplinks"]]]],e)}))}}}));
2
2
  //# sourceMappingURL=p-5d893017.system.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["patchBrowser","importMeta","module","meta","url","opts","resourcesUrl","URL","href","promiseResolve","then","options","bootstrapLazy","project","stickyness","language","login","search","skiplinks","configProxy","environment","languageSwitchOverrides","customConfig","languageCookieKey","languageLocalStorageKey","activeRoute","osFlyoutOverrides","fullWidth","activeFlyout","activeDropdownElement","getCurrentLanguage","customItems","customBreadcrumbItems","overlayVisible","isConcatenated","dropdownOpen","refsReady","toggleOverlayById","liveSupportEnabled","cookieSettingsEnabled","setFocus","mode","langSwitchOpen","toggleDropdown","mobileMenuOpen","setActiveFlyout","orientation","searchDropdownOpen","coveoSuggestions","placeSuggestions","parcelSuggestion"],"sources":["../../node_modules/.pnpm/@stencil+core@3.4.2/node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v3.4.2 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@stencil/core';\n/**\n * Helper method for querying a `meta` tag that contains a nonce value\n * out of a DOM's head.\n *\n * @param doc The DOM containing the `head` to query against\n * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag\n * exists or the tag has no content.\n */\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;\n}\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\\s|-/g, '_')}`;\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n if (BUILD.cssVarShim) {\n // shim css vars\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n plt.$cssShim$ = win.__cssshim;\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n if (BUILD.profile && !performance.mark) {\n // not all browsers support performance.mark/measure (Safari 10)\n // because the mark/measure APIs are designed to write entries to a buffer in the browser that does not exist,\n // simply stub the implementations out.\n // TODO(STENCIL-323): Remove this patch when support for older browsers is removed (breaking)\n // @ts-ignore\n performance.mark = performance.measure = () => {\n /*noop*/\n };\n performance.getEntriesByName = () => [];\n }\n // @ts-ignore\n const scriptElm = \n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})['data-opts'] || {} : {};\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {\n // Safari < v11 support: This IF is true if it's Safari below v11.\n // This fn cannot use async/await since Safari didn't support it until v11,\n // however, Safari 10 did support modules. Safari 10 also didn't support \"nomodule\",\n // so both the ESM file and nomodule file would get downloaded. Only Safari\n // has 'onbeforeload' in the script, and \"history.scrollRestoration\" was added\n // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.\n // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.\n return {\n then() {\n /* promise noop */\n },\n };\n }\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (!BUILD.safari10 && importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n }\n else if (BUILD.dynamicImportShim || BUILD.safari10) {\n opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim) {\n patchDynamicImport(opts.resourcesUrl, scriptElm);\n }\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim && !win.customElements) {\n // module support, but no custom elements support (Old Edge)\n // @ts-ignore\n return import(/* webpackChunkName: \"polyfills-dom\" */ './dom.js').then(() => opts);\n }\n }\n return promiseResolve(opts);\n};\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst patchDynamicImport = (base, orgScriptElm) => {\n const importFunctionName = getDynamicImportFunction(NAMESPACE);\n try {\n // test if this browser supports dynamic imports\n // There is a caching issue in V8, that breaks using import() in Function\n // By generating a random string, we can workaround it\n // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info\n win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);\n }\n catch (e) {\n // this shim is specifically for browsers that do support \"esm\" imports\n // however, they do NOT support \"dynamic\" imports\n // basically this code is for old Edge, v18 and below\n const moduleMap = new Map();\n win[importFunctionName] = (src) => {\n var _a;\n const url = new URL(src, base).href;\n let mod = moduleMap.get(url);\n if (!mod) {\n const script = doc.createElement('script');\n script.type = 'module';\n script.crossOrigin = orgScriptElm.crossOrigin;\n script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {\n type: 'application/javascript',\n }));\n // Apply CSP nonce to the script tag if it exists\n const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n script.setAttribute('nonce', nonce);\n }\n mod = new Promise((resolve) => {\n script.onload = () => {\n resolve(win[importFunctionName].m);\n script.remove();\n };\n });\n moduleMap.set(url, mod);\n doc.head.appendChild(script);\n }\n return mod;\n };\n }\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"8JAmBA,IAAMA,EAAe,WAkCjB,IAAMC,EAAaC,EAAAC,KAAAC,IACnB,IAAMC,EAAqE,GAiB3E,GAAuBJ,IAAe,GAAI,CACtCI,EAAKC,aAAe,IAAIC,IAAI,IAAKN,GAAYO,I,CAiBjD,OAAOC,EAAeJ,EAC1B,ECtFAL,IAAeU,MAAK,SAAAC,GAElB,OAAOC,EAAc,sDAAuC,CAAAC,QAAA,IAAAC,WAAA,IAAAC,SAAA,IAAAZ,KAAA,IAAAa,MAAA,IAAAC,OAAA,IAAAC,UAAA,IAAAC,YAAA,mBAAAC,YAAA,IAAAC,wBAAA,gCAAAC,aAAA,oBAAAC,kBAAA,0BAAAC,wBAAA,iCAAAC,YAAA,mBAAAC,kBAAA,0BAAAC,UAAA,iBAAAC,aAAA,KAAAC,sBAAA,KAAAC,mBAAA,wHAAAC,YAAA,mBAAAC,sBAAA,KAAAC,eAAA,KAAAC,eAAA,KAAAC,aAAA,KAAAC,UAAA,KAAAC,kBAAA,+DAAAC,mBAAA,KAAAC,sBAAA,2DAAAC,SAAA,0DAAAC,KAAA,IAAAC,eAAA,KAAAC,eAAA,kGAAAf,aAAA,KAAAgB,eAAA,KAAAD,eAAA,KAAAH,SAAA,KAAAK,gBAAA,0DAAAC,YAAA,IAAAnB,UAAA,6DAAAoB,mBAAA,KAAAC,iBAAA,KAAAC,iBAAA,KAAAC,iBAAA,KAAAP,eAAA,KAAAH,SAAA,uDAAA7B,EAC9D,G"}
1
+ {"version":3,"names":["patchBrowser","importMeta","module","meta","url","opts","resourcesUrl","URL","href","promiseResolve","then","options","bootstrapLazy","project","stickyness","language","login","search","skiplinks","configProxy","environment","languageSwitchOverrides","customConfig","languageCookieKey","languageLocalStorageKey","activeRoute","osFlyoutOverrides","fullWidth","activeFlyout","activeDropdownElement","getCurrentLanguage","customItems","hideButtons","customBreadcrumbItems","overlayVisible","isConcatenated","dropdownOpen","refsReady","toggleOverlayById","liveSupportEnabled","cookieSettingsEnabled","setFocus","mode","langSwitchOpen","toggleDropdown","mobileMenuOpen","setActiveFlyout","orientation","searchDropdownOpen","coveoSuggestions","placeSuggestions","parcelSuggestion"],"sources":["../../node_modules/.pnpm/@stencil+core@3.4.2/node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v3.4.2 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@stencil/core';\n/**\n * Helper method for querying a `meta` tag that contains a nonce value\n * out of a DOM's head.\n *\n * @param doc The DOM containing the `head` to query against\n * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag\n * exists or the tag has no content.\n */\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;\n}\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\\s|-/g, '_')}`;\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n if (BUILD.cssVarShim) {\n // shim css vars\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n plt.$cssShim$ = win.__cssshim;\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n if (BUILD.profile && !performance.mark) {\n // not all browsers support performance.mark/measure (Safari 10)\n // because the mark/measure APIs are designed to write entries to a buffer in the browser that does not exist,\n // simply stub the implementations out.\n // TODO(STENCIL-323): Remove this patch when support for older browsers is removed (breaking)\n // @ts-ignore\n performance.mark = performance.measure = () => {\n /*noop*/\n };\n performance.getEntriesByName = () => [];\n }\n // @ts-ignore\n const scriptElm = \n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})['data-opts'] || {} : {};\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {\n // Safari < v11 support: This IF is true if it's Safari below v11.\n // This fn cannot use async/await since Safari didn't support it until v11,\n // however, Safari 10 did support modules. Safari 10 also didn't support \"nomodule\",\n // so both the ESM file and nomodule file would get downloaded. Only Safari\n // has 'onbeforeload' in the script, and \"history.scrollRestoration\" was added\n // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.\n // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.\n return {\n then() {\n /* promise noop */\n },\n };\n }\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (!BUILD.safari10 && importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n }\n else if (BUILD.dynamicImportShim || BUILD.safari10) {\n opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim) {\n patchDynamicImport(opts.resourcesUrl, scriptElm);\n }\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim && !win.customElements) {\n // module support, but no custom elements support (Old Edge)\n // @ts-ignore\n return import(/* webpackChunkName: \"polyfills-dom\" */ './dom.js').then(() => opts);\n }\n }\n return promiseResolve(opts);\n};\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst patchDynamicImport = (base, orgScriptElm) => {\n const importFunctionName = getDynamicImportFunction(NAMESPACE);\n try {\n // test if this browser supports dynamic imports\n // There is a caching issue in V8, that breaks using import() in Function\n // By generating a random string, we can workaround it\n // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info\n win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);\n }\n catch (e) {\n // this shim is specifically for browsers that do support \"esm\" imports\n // however, they do NOT support \"dynamic\" imports\n // basically this code is for old Edge, v18 and below\n const moduleMap = new Map();\n win[importFunctionName] = (src) => {\n var _a;\n const url = new URL(src, base).href;\n let mod = moduleMap.get(url);\n if (!mod) {\n const script = doc.createElement('script');\n script.type = 'module';\n script.crossOrigin = orgScriptElm.crossOrigin;\n script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {\n type: 'application/javascript',\n }));\n // Apply CSP nonce to the script tag if it exists\n const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n script.setAttribute('nonce', nonce);\n }\n mod = new Promise((resolve) => {\n script.onload = () => {\n resolve(win[importFunctionName].m);\n script.remove();\n };\n });\n moduleMap.set(url, mod);\n doc.head.appendChild(script);\n }\n return mod;\n };\n }\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"8JAmBA,IAAMA,EAAe,WAkCjB,IAAMC,EAAaC,EAAAC,KAAAC,IACnB,IAAMC,EAAqE,GAiB3E,GAAuBJ,IAAe,GAAI,CACtCI,EAAKC,aAAe,IAAIC,IAAI,IAAKN,GAAYO,I,CAiBjD,OAAOC,EAAeJ,EAC1B,ECtFAL,IAAeU,MAAK,SAAAC,GAElB,OAAOC,EAAc,sDAAuC,CAAAC,QAAA,IAAAC,WAAA,IAAAC,SAAA,IAAAZ,KAAA,IAAAa,MAAA,IAAAC,OAAA,IAAAC,UAAA,IAAAC,YAAA,mBAAAC,YAAA,IAAAC,wBAAA,gCAAAC,aAAA,oBAAAC,kBAAA,0BAAAC,wBAAA,iCAAAC,YAAA,mBAAAC,kBAAA,0BAAAC,UAAA,iBAAAC,aAAA,KAAAC,sBAAA,KAAAC,mBAAA,wHAAAC,YAAA,mBAAAC,YAAA,mBAAAC,sBAAA,KAAAC,eAAA,KAAAC,eAAA,KAAAC,aAAA,KAAAC,UAAA,KAAAC,kBAAA,+DAAAC,mBAAA,KAAAC,sBAAA,2DAAAC,SAAA,0DAAAC,KAAA,IAAAC,eAAA,KAAAC,eAAA,kGAAAhB,aAAA,KAAAiB,eAAA,KAAAD,eAAA,KAAAH,SAAA,KAAAK,gBAAA,0DAAAC,YAAA,IAAApB,UAAA,6DAAAqB,mBAAA,KAAAC,iBAAA,KAAAC,iBAAA,KAAAC,iBAAA,KAAAP,eAAA,KAAAH,SAAA,uDAAA9B,EAC9D,G"}
@@ -0,0 +1,2 @@
1
+ import{h as t,r as o,c as e,H as n,g as i}from"./p-8e0a4d18.js";import{S as r}from"./p-b762fba9.js";import{S as s}from"./p-11d05acc.js";import{s as a}from"./p-459c3983.js";import{e as l,u as d}from"./p-45db66a6.js";import{t as f}from"./p-935c70e1.js";const p=o=>{var e;if(((e=a.localizedConfig)===null||e===void 0?void 0:e.header)===undefined)return;const n=a.localizedConfig.header;return t("nav",{class:"language-switch-dropdown",ref:t=>o.dropdownRef(t),"aria-label":n.translations.navLangAriaLabel},t("ul",{"aria-label":f("Change language")},o.navLang.filter((t=>!t.isCurrent)).map((e=>{const n=e.url?"a":"button";return t("li",{key:e.lang},t(n,{onClick:()=>o.switchLanguage(e),href:e.url,lang:e.lang,title:e.title},t("span",{class:"visually-hidden"},e.title),t("span",{"aria-hidden":"true"},e.text)))}))))};const g='@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff") format("woff")}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-blank{background-color:rgba(0,0,0,0);border:none;border-radius:0;padding:0}.nav-link,.language-switch-dropdown a,.language-switch-dropdown button{outline:none;outline-offset:2px;text-decoration:none;color:rgba(0,0,0,.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:rgba(0,0,0,0);-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:.5rem}.nav-link:is(:focus-visible,:focus-within,.pretend-focus),.language-switch-dropdown a:is(:focus-visible,:focus-within,.pretend-focus),.language-switch-dropdown button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.nav-link:hover,.language-switch-dropdown a:hover,.language-switch-dropdown button:hover,.nav-link:focus,.language-switch-dropdown a:focus,.language-switch-dropdown button:focus{color:#000}.nav-link:is(:focus-visible,:focus-within,.pretend-focus),.language-switch-dropdown a:is(:focus-visible,:focus-within,.pretend-focus),.language-switch-dropdown button:is(:focus-visible,:focus-within,.pretend-focus){z-index:1;position:relative}.nav-link>svg,.language-switch-dropdown a>svg,.language-switch-dropdown button>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span,.language-switch-dropdown a>span,.language-switch-dropdown button>span{-ms-flex-negative:1;flex-shrink:1}.no-list,.language-switch-dropdown ul{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post",system-ui,sans-serif}button{font:inherit;padding:0}a,button{border-radius:4px;outline:none;outline-offset:2px}a:is(:focus-visible,:focus-within,.pretend-focus),button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color);border-radius:4px}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:#fff}}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px)and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{--separator-display:none;--separator-height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-item-align:stretch;align-self:stretch}:host::before{position:relative;content:"";display:var(--separator-display);height:var(--separator-height);border-left:1px solid #e6e6e6}.lang-btn{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:100%;padding:0 1rem;border:none;-webkit-box-shadow:none;box-shadow:none;background:none;text-transform:uppercase;cursor:pointer;color:rgba(0,0,0,.8)}.lang-btn:hover,.lang-btn:focus{color:#000;position:relative;z-index:1}.lang-btn svg{width:1.5em;height:1.5em;-webkit-transition:-webkit-transform 250ms;transition:-webkit-transform 250ms;transition:transform 250ms;transition:transform 250ms, -webkit-transform 250ms}.lang-btn svg.rotated{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.language-switch{position:relative;-ms-flex-item-align:stretch;align-self:stretch;height:100%}.language-switch.list{margin-top:1.5rem;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.current-language{text-transform:uppercase;border-right:1px solid #ccc;padding:.5rem 1rem .5rem 0}.dropdown .language-switch-dropdown{position:absolute;top:100%;width:100%;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2),0 2px 6px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.2),0 2px 6px 2px rgba(0,0,0,.1);z-index:1;-webkit-transform:scale(0.1);transform:scale(0.1);-webkit-transform-origin:center top;transform-origin:center top;-webkit-transition:-webkit-transform .1s;transition:-webkit-transform .1s;transition:transform .1s;transition:transform .1s, -webkit-transform .1s;margin-top:var(--language-dropdown-margin-top)}@media (prefers-reduced-motion: reduce){.dropdown .language-switch-dropdown{-webkit-transition:none;transition:none}}.dropdown .language-switch-dropdown.open{-webkit-transform:scale(1);transform:scale(1)}.list .language-switch-dropdown ul{display:-ms-flexbox;display:flex}.list .language-switch-dropdown ul>li+li{border-left:1px solid #ccc}.language-switch-dropdown a,.language-switch-dropdown button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:3rem;padding:0 .25rem;text-transform:uppercase;cursor:pointer;-webkit-transition:background-color 200ms,color 200ms;transition:background-color 200ms,color 200ms}.language-switch-dropdown a:hover,.language-switch-dropdown a:focus,.language-switch-dropdown button:hover,.language-switch-dropdown button:focus{background:#f4f3f1}.language-switch-dropdown a span,.language-switch-dropdown button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.list .language-switch-dropdown a,.list .language-switch-dropdown button{color:#000;height:auto;padding:.5rem 1rem}';const u=class{constructor(t){o(this,t);this.dropdownToggled=e(this,"dropdownToggled",7);this.languageChanged=e(this,"languageChanged",7);this.mode=undefined;this.langSwitchOpen=false}componentWillUpdate(){if(this.languageSwitchDropdown&&!this.langSwitchOpen&&this.mode=="dropdown"){this.languageSwitchDropdown.classList.remove("open");if(l(this.languageSwitchDropdown,"transform")&&!d()){return new Promise((t=>{var o;(o=this.languageSwitchDropdown)===null||o===void 0?void 0:o.addEventListener("transitionend",(o=>{if(o.propertyName==="transform"){t(true)}}))}))}}}componentDidUpdate(){if(this.languageSwitchDropdown&&this.langSwitchOpen){this.languageSwitchDropdown.getBoundingClientRect();this.languageSwitchDropdown.classList.add("open")}}async toggleDropdown(t){this.langSwitchOpen=t!==null&&t!==void 0?t:!this.langSwitchOpen;this.dropdownToggled.emit({open:this.langSwitchOpen,element:this.host});return this.langSwitchOpen}switchLanguage(t){this.languageChanged.emit(t.lang);this.toggleDropdown(false)}getMergedLanguageConfig(t,o){if(o===undefined){return t}return t.map((t=>Object.assign({},t,o.find((o=>o.lang===t.lang)))))}setDropdownRef(t){this.languageSwitchDropdown=t}render(){var o;if(((o=a.localizedConfig)===null||o===void 0?void 0:o.header)===undefined)return;const e=a.localizedConfig.header;const i=this.getMergedLanguageConfig(e.navLang,a.languageSwitchOverrides);return t(n,null,t("div",{class:`language-switch ${this.mode}`},t(r,null),this.mode==="dropdown"?t("button",{class:"lang-btn","aria-expanded":`${this.langSwitchOpen}`,"aria-haspopup":"listbox",onClick:()=>this.toggleDropdown()},t("span",{class:"visually-hidden"},e.translations.navLangAriaLabel,", ",f("Current language is English")),t("span",{"aria-hidden":"true"},a.currentLanguage),t(s,{name:"pi-arrow-down",classNames:this.langSwitchOpen?"rotated":""})):t("span",{class:"bold current-language"},t("span",{class:"visually-hidden"},f("Current language is English")),t("span",null,a.currentLanguage)),this.langSwitchOpen||this.mode==="list"?t(p,{navLang:i,switchLanguage:t=>this.switchLanguage(t),dropdownRef:t=>t!==undefined&&this.setDropdownRef(t)}):null))}get host(){return i(this)}};u.style=g;export{u as post_language_switch};
2
+ //# sourceMappingURL=p-77426673.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PostLanguageSwitchList","props","_a","state","localizedConfig","header","undefined","config","h","class","ref","e","dropdownRef","translations","navLangAriaLabel","translate","navLang","filter","lang","isCurrent","map","TagName","url","key","onClick","switchLanguage","href","title","text","postLanguageSwitchCss","PostLanguageSwitch","componentWillUpdate","this","languageSwitchDropdown","langSwitchOpen","mode","classList","remove","elementHasTransition","userPrefersReducedMotion","Promise","resolve","addEventListener","event","propertyName","componentDidUpdate","getBoundingClientRect","add","async","force","dropdownToggled","emit","open","element","host","newLang","languageChanged","toggleDropdown","getMergedLanguageConfig","overrides","langConfig","Object","assign","find","l","setDropdownRef","render","mergedConfig","languageSwitchOverrides","Host","SvgSprite","currentLanguage","SvgIcon","name","classNames"],"sources":["./src/components/post-language-switch/components/post-language-switch-list.tsx","./src/components/post-language-switch/post-language-switch.scss?tag=post-language-switch&encapsulation=shadow","./src/components/post-language-switch/post-language-switch.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavLangEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\nimport { state } from '../../../data/store';\n\nexport const PostLanguageSwitchList = (props: {\n navLang: NavLangEntity[];\n switchLanguage: (lang: NavLangEntity) => void;\n dropdownRef: (element: HTMLElement | undefined) => void;\n}) => {\n if (state.localizedConfig?.header === undefined) return;\n const config = state.localizedConfig.header;\n\n return (\n <nav\n class=\"language-switch-dropdown\"\n ref={e => props.dropdownRef(e)}\n aria-label={config.translations.navLangAriaLabel}\n >\n <ul aria-label={translate('Change language')}>\n {props.navLang\n .filter(lang => !lang.isCurrent)\n .map(lang => {\n const TagName = lang.url ? 'a' : 'button';\n return (\n <li key={lang.lang}>\n <TagName\n onClick={() => props.switchLanguage(lang)}\n href={lang.url}\n lang={lang.lang}\n title={lang.title}\n >\n <span class=\"visually-hidden\">{lang.title}</span>\n <span aria-hidden=\"true\">{lang.text}</span>\n </TagName>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n\n:host {\n --separator-display: none;\n --separator-height: 100%;\n\n display: flex;\n align-items: center;\n align-self: stretch;\n\n &::before {\n position: relative;\n content: '';\n display: var(--separator-display);\n height: var(--separator-height);\n border-left: 1px solid color.$gray-10;\n }\n}\n\n.lang-btn {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 1rem;\n border: none;\n box-shadow: none;\n background: none;\n text-transform: uppercase;\n cursor: pointer;\n color: rgba(color.$black, 0.8);\n\n &:hover,\n &:focus {\n color: black;\n position: relative;\n z-index: 1;\n }\n\n svg {\n width: 1.5em;\n height: 1.5em;\n transition: transform 250ms;\n\n &.rotated {\n transform: rotate(180deg);\n }\n }\n}\n\n.language-switch {\n position: relative;\n align-self: stretch;\n height: 100%;\n\n &.list {\n margin-top: 1.5rem;\n display: flex;\n align-items: center;\n }\n}\n\n.current-language {\n text-transform: uppercase;\n border-right: 1px solid color.$gray-20;\n padding: 0.5rem 1rem 0.5rem 0;\n}\n\n.language-switch-dropdown {\n .dropdown & {\n position: absolute;\n top: 100%;\n width: 100%;\n background: white;\n box-shadow: 0 1px 2px rgb(0 0 0 / 20%), 0 2px 6px 2px rgb(0 0 0 / 10%);\n z-index: 1;\n transform: scale(0.1);\n transform-origin: center top;\n transition: transform 0.1s;\n margin-top: var(--language-dropdown-margin-top);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: scale(1);\n }\n }\n\n ul {\n @extend %no-list;\n\n .list & {\n display: flex;\n\n > li + li {\n border-left: 1px solid color.$gray-20;\n }\n }\n }\n\n a,\n button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: functions.px-to-rem(48px);\n padding: 0 0.25rem;\n text-transform: uppercase;\n cursor: pointer;\n transition: background-color 200ms, color 200ms;\n\n &:hover,\n &:focus {\n background: color.$gray-background;\n }\n\n span {\n // Worst case scenario\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .list & {\n color: black;\n height: auto;\n padding: 0.5rem 1rem;\n }\n }\n}\n","import {\n Component,\n Event,\n Host,\n h,\n Method,\n EventEmitter,\n State,\n Prop,\n Element,\n} from '@stencil/core';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n NavLangEntity,\n} from '../../models/header.model';\nimport { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { PostLanguageSwitchList } from './components/post-language-switch-list';\nimport { IAvailableLanguage } from '../../models/language.model';\n\n@Component({\n tag: 'post-language-switch',\n styleUrl: 'post-language-switch.scss',\n shadow: true,\n})\nexport class PostLanguageSwitch implements HasDropdown {\n @Prop() mode: 'dropdown' | 'list';\n @State() langSwitchOpen = false;\n @Element() host: DropdownElement;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event({ bubbles: true }) languageChanged: EventEmitter<string>;\n private languageSwitchDropdown: HTMLElement | undefined;\n\n componentWillUpdate() {\n // Check if language switch got set to close and if mode is dropdown\n if (this.languageSwitchDropdown && !this.langSwitchOpen && this.mode == 'dropdown') {\n this.languageSwitchDropdown.classList.remove('open');\n\n // Check if element has transition applied and whether user prefers to see animations or not\n if (\n elementHasTransition(this.languageSwitchDropdown, 'transform') &&\n !userPrefersReducedMotion()\n ) {\n // Wait for CSS transition 'transform' to end before continuing\n return new Promise<boolean>(resolve => {\n this.languageSwitchDropdown?.addEventListener('transitionend', event => {\n if (event.propertyName === 'transform') {\n resolve(true);\n }\n });\n });\n }\n }\n }\n\n componentDidUpdate() {\n // Language switch got set to open\n if (this.languageSwitchDropdown && this.langSwitchOpen) {\n // Force browser to redraw/refresh DOM before adding 'open' class\n this.languageSwitchDropdown.getBoundingClientRect();\n this.languageSwitchDropdown.classList.add('open');\n }\n }\n\n /**\n * Open or close the language switch programatically\n * @param force Boolean to force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.langSwitchOpen = force ?? !this.langSwitchOpen;\n this.dropdownToggled.emit({ open: this.langSwitchOpen, element: this.host });\n return this.langSwitchOpen;\n }\n\n /**\n * Emit a language change to the parent component\n *\n * @param newLang Config of the new language\n */\n switchLanguage(newLang: NavLangEntity) {\n this.languageChanged.emit(newLang.lang);\n this.toggleDropdown(false);\n }\n\n private getMergedLanguageConfig(config: NavLangEntity[], overrides?: IAvailableLanguage[]) {\n if (overrides === undefined) {\n return config;\n }\n\n return config.map(langConfig =>\n Object.assign(\n {},\n langConfig,\n overrides.find(l => l.lang === langConfig.lang),\n ),\n );\n }\n\n private setDropdownRef(element: HTMLElement | undefined) {\n this.languageSwitchDropdown = element;\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const config = state.localizedConfig.header;\n const mergedConfig = this.getMergedLanguageConfig(\n config.navLang,\n state.languageSwitchOverrides,\n );\n\n return (\n <Host>\n <div class={`language-switch ${this.mode}`}>\n <SvgSprite />\n {this.mode === 'dropdown' ? (\n <button\n class=\"lang-btn\"\n aria-expanded={`${this.langSwitchOpen}`}\n aria-haspopup=\"listbox\"\n onClick={() => this.toggleDropdown()}\n >\n <span class=\"visually-hidden\">\n {config.translations.navLangAriaLabel}, {translate('Current language is English')}\n </span>\n <span aria-hidden=\"true\">{state.currentLanguage}</span>\n <SvgIcon name=\"pi-arrow-down\" classNames={this.langSwitchOpen ? 'rotated' : ''} />\n </button>\n ) : (\n <span class=\"bold current-language\">\n <span class=\"visually-hidden\">{translate('Current language is English')}</span>\n <span>{state.currentLanguage}</span>\n </span>\n )}\n {this.langSwitchOpen || this.mode === 'list' ? (\n <PostLanguageSwitchList\n navLang={mergedConfig}\n switchLanguage={e => this.switchLanguage(e)}\n dropdownRef={e => e !== undefined && this.setDropdownRef(e)}\n />\n ) : null}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"2PAKO,MAAMA,EAA0BC,I,MAKrC,KAAIC,EAAAC,EAAMC,mBAAe,MAAAF,SAAA,SAAAA,EAAEG,UAAWC,UAAW,OACjD,MAAMC,EAASJ,EAAMC,gBAAgBC,OAErC,OACEG,EAAA,OACEC,MAAM,2BACNC,IAAKC,GAAKV,EAAMW,YAAYD,GAAE,aAClBJ,EAAOM,aAAaC,kBAEhCN,EAAA,mBAAgBO,EAAU,oBACvBd,EAAMe,QACJC,QAAOC,IAASA,EAAKC,YACrBC,KAAIF,IACH,MAAMG,EAAUH,EAAKI,IAAM,IAAM,SACjC,OACEd,EAAA,MAAIe,IAAKL,EAAKA,MACZV,EAACa,EAAO,CACNG,QAAS,IAAMvB,EAAMwB,eAAeP,GACpCQ,KAAMR,EAAKI,IACXJ,KAAMA,EAAKA,KACXS,MAAOT,EAAKS,OAEZnB,EAAA,QAAMC,MAAM,mBAAmBS,EAAKS,OACpCnB,EAAA,sBAAkB,QAAQU,EAAKU,OAE9B,KAIT,ECvCV,MAAMC,EAAwB,6qP,MC8BjBC,EAAkB,M,mKAEH,K,CAM1BC,sBAEE,GAAIC,KAAKC,yBAA2BD,KAAKE,gBAAkBF,KAAKG,MAAQ,WAAY,CAClFH,KAAKC,uBAAuBG,UAAUC,OAAO,QAG7C,GACEC,EAAqBN,KAAKC,uBAAwB,eACjDM,IACD,CAEA,OAAO,IAAIC,SAAiBC,I,OAC1BvC,EAAA8B,KAAKC,0BAAsB,MAAA/B,SAAA,SAAAA,EAAEwC,iBAAiB,iBAAiBC,IAC7D,GAAIA,EAAMC,eAAiB,YAAa,CACtCH,EAAQ,K,IAEV,G,GAMVI,qBAEE,GAAIb,KAAKC,wBAA0BD,KAAKE,eAAgB,CAEtDF,KAAKC,uBAAuBa,wBAC5Bd,KAAKC,uBAAuBG,UAAUW,IAAI,O,EAU9CC,qBAAqBC,GACnBjB,KAAKE,eAAiBe,IAAK,MAALA,SAAK,EAALA,GAAUjB,KAAKE,eACrCF,KAAKkB,gBAAgBC,KAAK,CAAEC,KAAMpB,KAAKE,eAAgBmB,QAASrB,KAAKsB,OACrE,OAAOtB,KAAKE,c,CAQdT,eAAe8B,GACbvB,KAAKwB,gBAAgBL,KAAKI,EAAQrC,MAClCc,KAAKyB,eAAe,M,CAGdC,wBAAwBnD,EAAyBoD,GACvD,GAAIA,IAAcrD,UAAW,CAC3B,OAAOC,C,CAGT,OAAOA,EAAOa,KAAIwC,GAChBC,OAAOC,OACL,GACAF,EACAD,EAAUI,MAAKC,GAAKA,EAAE9C,OAAS0C,EAAW1C,S,CAKxC+C,eAAeZ,GACrBrB,KAAKC,uBAAyBoB,C,CAGhCa,S,MACE,KAAIhE,EAAAC,EAAMC,mBAAe,MAAAF,SAAA,SAAAA,EAAEG,UAAWC,UAAW,OACjD,MAAMC,EAASJ,EAAMC,gBAAgBC,OACrC,MAAM8D,EAAenC,KAAK0B,wBACxBnD,EAAOS,QACPb,EAAMiE,yBAGR,OACE5D,EAAC6D,EAAI,KACH7D,EAAA,OAAKC,MAAO,mBAAmBuB,KAAKG,QAClC3B,EAAC8D,EAAS,MACTtC,KAAKG,OAAS,WACb3B,EAAA,UACEC,MAAM,WAAU,gBACD,GAAGuB,KAAKE,iBAAgB,gBACzB,UACdV,QAAS,IAAMQ,KAAKyB,kBAEpBjD,EAAA,QAAMC,MAAM,mBACTF,EAAOM,aAAaC,iBAAgB,KAAIC,EAAU,gCAErDP,EAAA,sBAAkB,QAAQL,EAAMoE,iBAChC/D,EAACgE,EAAO,CAACC,KAAK,gBAAgBC,WAAY1C,KAAKE,eAAiB,UAAY,MAG9E1B,EAAA,QAAMC,MAAM,yBACVD,EAAA,QAAMC,MAAM,mBAAmBM,EAAU,gCACzCP,EAAA,YAAOL,EAAMoE,kBAGhBvC,KAAKE,gBAAkBF,KAAKG,OAAS,OACpC3B,EAACR,EAAsB,CACrBgB,QAASmD,EACT1C,eAAgBd,GAAKqB,KAAKP,eAAed,GACzCC,YAAaD,GAAKA,IAAML,WAAa0B,KAAKiC,eAAetD,KAEzD,M"}
1
+ {"version":3,"names":["PostLanguageSwitchList","props","_a","state","localizedConfig","header","undefined","config","h","class","ref","e","dropdownRef","translations","navLangAriaLabel","translate","navLang","filter","lang","isCurrent","map","TagName","url","key","onClick","switchLanguage","href","title","text","postLanguageSwitchCss","PostLanguageSwitch","componentWillUpdate","this","languageSwitchDropdown","langSwitchOpen","mode","classList","remove","elementHasTransition","userPrefersReducedMotion","Promise","resolve","addEventListener","event","propertyName","componentDidUpdate","getBoundingClientRect","add","async","force","dropdownToggled","emit","open","element","host","newLang","languageChanged","toggleDropdown","getMergedLanguageConfig","overrides","langConfig","Object","assign","find","l","setDropdownRef","render","mergedConfig","languageSwitchOverrides","Host","SvgSprite","currentLanguage","SvgIcon","name","classNames"],"sources":["./src/components/post-language-switch/components/post-language-switch-list.tsx","./src/components/post-language-switch/post-language-switch.scss?tag=post-language-switch&encapsulation=shadow","./src/components/post-language-switch/post-language-switch.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavLangEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\nimport { state } from '../../../data/store';\n\nexport const PostLanguageSwitchList = (props: {\n navLang: NavLangEntity[];\n switchLanguage: (lang: NavLangEntity) => void;\n dropdownRef: (element: HTMLElement | undefined) => void;\n}) => {\n if (state.localizedConfig?.header === undefined) return;\n const config = state.localizedConfig.header;\n\n return (\n <nav\n class=\"language-switch-dropdown\"\n ref={e => props.dropdownRef(e)}\n aria-label={config.translations.navLangAriaLabel}\n >\n <ul aria-label={translate('Change language')}>\n {props.navLang\n .filter(lang => !lang.isCurrent)\n .map(lang => {\n const TagName = lang.url ? 'a' : 'button';\n return (\n <li key={lang.lang}>\n <TagName\n onClick={() => props.switchLanguage(lang)}\n href={lang.url}\n lang={lang.lang}\n title={lang.title}\n >\n <span class=\"visually-hidden\">{lang.title}</span>\n <span aria-hidden=\"true\">{lang.text}</span>\n </TagName>\n </li>\n );\n })}\n </ul>\n </nav>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n\n:host {\n --separator-display: none;\n --separator-height: 100%;\n\n display: flex;\n align-items: center;\n align-self: stretch;\n\n &::before {\n position: relative;\n content: '';\n display: var(--separator-display);\n height: var(--separator-height);\n border-left: 1px solid color.$gray-10;\n }\n}\n\n.lang-btn {\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 1rem;\n border: none;\n box-shadow: none;\n background: none;\n text-transform: uppercase;\n cursor: pointer;\n color: rgba(color.$black, 0.8);\n\n &:hover,\n &:focus {\n color: black;\n position: relative;\n z-index: 1;\n }\n\n svg {\n width: 1.5em;\n height: 1.5em;\n transition: transform 250ms;\n\n &.rotated {\n transform: rotate(180deg);\n }\n }\n}\n\n.language-switch {\n position: relative;\n align-self: stretch;\n height: 100%;\n\n &.list {\n margin-top: 1.5rem;\n display: flex;\n align-items: center;\n }\n}\n\n.current-language {\n text-transform: uppercase;\n border-right: 1px solid color.$gray-20;\n padding: 0.5rem 1rem 0.5rem 0;\n}\n\n.language-switch-dropdown {\n .dropdown & {\n position: absolute;\n top: 100%;\n width: 100%;\n background: white;\n box-shadow: 0 1px 2px rgb(0 0 0 / 20%), 0 2px 6px 2px rgb(0 0 0 / 10%);\n z-index: 1;\n transform: scale(0.1);\n transform-origin: center top;\n transition: transform 0.1s;\n margin-top: var(--language-dropdown-margin-top);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: scale(1);\n }\n }\n\n ul {\n @extend %no-list;\n\n .list & {\n display: flex;\n\n > li + li {\n border-left: 1px solid color.$gray-20;\n }\n }\n }\n\n a,\n button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: functions.px-to-rem(48px);\n padding: 0 0.25rem;\n text-transform: uppercase;\n cursor: pointer;\n transition: background-color 200ms, color 200ms;\n\n &:hover,\n &:focus {\n background: color.$gray-background;\n }\n\n span {\n // Worst case scenario\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .list & {\n color: black;\n height: auto;\n padding: 0.5rem 1rem;\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n NavLangEntity,\n} from '../../models/header.model';\nimport { elementHasTransition, userPrefersReducedMotion } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { PostLanguageSwitchList } from './components/post-language-switch-list';\nimport { IAvailableLanguage } from '../../models/language.model';\n\n@Component({\n tag: 'post-language-switch',\n styleUrl: 'post-language-switch.scss',\n shadow: true,\n})\nexport class PostLanguageSwitch implements HasDropdown {\n @Prop() mode: 'dropdown' | 'list';\n @State() langSwitchOpen = false;\n @Element() host: DropdownElement;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event({ bubbles: true }) languageChanged: EventEmitter<string>;\n private languageSwitchDropdown: HTMLElement | undefined;\n\n componentWillUpdate() {\n // Check if language switch got set to close and if mode is dropdown\n if (this.languageSwitchDropdown && !this.langSwitchOpen && this.mode == 'dropdown') {\n this.languageSwitchDropdown.classList.remove('open');\n\n // Check if element has transition applied and whether user prefers to see animations or not\n if (\n elementHasTransition(this.languageSwitchDropdown, 'transform') &&\n !userPrefersReducedMotion()\n ) {\n // Wait for CSS transition 'transform' to end before continuing\n return new Promise<boolean>(resolve => {\n this.languageSwitchDropdown?.addEventListener('transitionend', event => {\n if (event.propertyName === 'transform') {\n resolve(true);\n }\n });\n });\n }\n }\n }\n\n componentDidUpdate() {\n // Language switch got set to open\n if (this.languageSwitchDropdown && this.langSwitchOpen) {\n // Force browser to redraw/refresh DOM before adding 'open' class\n this.languageSwitchDropdown.getBoundingClientRect();\n this.languageSwitchDropdown.classList.add('open');\n }\n }\n\n /**\n * Open or close the language switch programatically\n * @param force Boolean to force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.langSwitchOpen = force ?? !this.langSwitchOpen;\n this.dropdownToggled.emit({ open: this.langSwitchOpen, element: this.host });\n return this.langSwitchOpen;\n }\n\n /**\n * Emit a language change to the parent component\n *\n * @param newLang Config of the new language\n */\n switchLanguage(newLang: NavLangEntity) {\n this.languageChanged.emit(newLang.lang);\n this.toggleDropdown(false);\n }\n\n private getMergedLanguageConfig(config: NavLangEntity[], overrides?: IAvailableLanguage[]) {\n if (overrides === undefined) {\n return config;\n }\n\n return config.map(langConfig =>\n Object.assign(\n {},\n langConfig,\n overrides.find(l => l.lang === langConfig.lang),\n ),\n );\n }\n\n private setDropdownRef(element: HTMLElement | undefined) {\n this.languageSwitchDropdown = element;\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const config = state.localizedConfig.header;\n const mergedConfig = this.getMergedLanguageConfig(\n config.navLang,\n state.languageSwitchOverrides,\n );\n\n return (\n <Host>\n <div class={`language-switch ${this.mode}`}>\n <SvgSprite />\n {this.mode === 'dropdown' ? (\n <button\n class=\"lang-btn\"\n aria-expanded={`${this.langSwitchOpen}`}\n aria-haspopup=\"listbox\"\n onClick={() => this.toggleDropdown()}\n >\n <span class=\"visually-hidden\">\n {config.translations.navLangAriaLabel}, {translate('Current language is English')}\n </span>\n <span aria-hidden=\"true\">{state.currentLanguage}</span>\n <SvgIcon name=\"pi-arrow-down\" classNames={this.langSwitchOpen ? 'rotated' : ''} />\n </button>\n ) : (\n <span class=\"bold current-language\">\n <span class=\"visually-hidden\">{translate('Current language is English')}</span>\n <span>{state.currentLanguage}</span>\n </span>\n )}\n {this.langSwitchOpen || this.mode === 'list' ? (\n <PostLanguageSwitchList\n navLang={mergedConfig}\n switchLanguage={e => this.switchLanguage(e)}\n dropdownRef={e => e !== undefined && this.setDropdownRef(e)}\n />\n ) : null}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as i,H as o,g as n}from"./p-8e0a4d18.js";import{d as s,t as r}from"./p-a74b380d.js";import{g as a,p as l,t as d}from"./p-935c70e1.js";import{u as c}from"./p-8bf099a8.js";import{s as h,d as f}from"./p-459c3983.js";import{S as u}from"./p-b762fba9.js";import{S as p}from"./p-11d05acc.js";import{I as g}from"./p-a2f9d462.js";const m=(t,e)=>{if(e===false){return t}let i;t=y(t);if(e==="auto"||e==="exact"){if(v(t)){return w(t)}i=new URL(window.location.href)}else{try{i=new URL(e,document.location.origin)}catch(i){console.warn(`Active Route: ${e} is not a valid URL. Navigation highlighting has been disabled.`);return t}}const o=b(t,i,e);if(o.length===0){return t}const n=o[0];n.main.isActiveOverride=true;if(n.sub)n.sub.isActiveOverride=true;return t};const v=t=>t.filter((t=>t.isActive)).length>0;const w=t=>t.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:t.isActive,flyout:t.flyout.map((t=>Object.assign(Object.assign({},t),{linkList:t.linkList.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:t.isActive})))})))})));const y=t=>t.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:false,flyout:t.flyout.map((t=>Object.assign(Object.assign({},t),{linkList:t.linkList.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:false})))})))})));const b=(t,e,i)=>{let o=false;const n=[];t.filter((t=>!o&&t)).forEach((t=>{try{const s=k(e,new URL(t.url),i);o=x(n,s,{main:t,score:s},o)}catch(t){}t.flyout.forEach((s=>{var r;(r=s.linkList)===null||r===void 0?void 0:r.forEach((s=>{if(s.isActive&&(i==="auto"||i==="exact")){o=true;return}try{const r=new URL(s.url);const a=k(e,r,i);o=x(n,a,{main:t,sub:s,score:a},o)}catch(t){}}))}))}));return n.sort(((t,e)=>e.score-t.score))};function x(t,e,i,o){let n=o;if(e>0){if(e===Infinity)n=true;t.push(i)}return n}const k=(t,e,i)=>{if(!t||!e||t.origin!==e.origin){return 0}const o=t.pathname.toLocaleLowerCase();const n=e.pathname.toLocaleLowerCase();if(o===n){return Infinity}if(t.pathname.length<e.pathname.length){return 0}if(i==="auto"){const i=[t.origin.toLocaleLowerCase(),...o.split("/").filter((t=>!!t))];const s=[e.origin.toLocaleLowerCase(),...n.split("/").filter((t=>!!t))];const r=j(i,s);return Math.min(i.length,s.length)===r?r:0}return 0};const j=(t,e)=>{if(!(t===null||t===void 0?void 0:t.length)||!(e===null||e===void 0?void 0:e.length)){return 0}let i=0;for(;i<Math.min(t.length,e.length);i++){if(t[i]!==e[i]){return 0}}return i};let O=null;let C=null;const F=()=>{const t=document.querySelector("#PPM_HEADER_DATA");if(t===null||t===void 0?void 0:t.textContent){return JSON.parse(t.textContent)}return null};const N=async({projectId:t,environment:e,language:i,cookieKey:o,localStorageKey:n,activeRouteProp:s,localizedCustomConfig:r,osFlyoutOverrides:d})=>{var c,h;const f=F();let u;let p=null;let g;if(f){u=f;g=document.documentElement.lang}else{if(!O){O=I(t,e)}p=await O;g=a(Object.keys(p),i,n,o);if(g===undefined){throw new Error("Internet Header: unable to determine current language")}u=Object.assign({},p[g])}if(r){const t=((c=r===null||r===void 0?void 0:r.header)===null||c===void 0?void 0:c.navMain)?Object.assign(Object.assign({},u.header),{navMain:[...u.header.navMain,...r.header.navMain]}):u.header;u=Object.assign(Object.assign({},u),{header:t})}if(d)u.header.navMain=P(u,d);if(s)u.header.navMain=m(u.header.navMain,s);R((h=u===null||u===void 0?void 0:u.header)===null||h===void 0?void 0:h.navMain);l(g,o,n);return u};const P=(t,e)=>{if(!e)return t.header.navMain;return t.header.navMain.map((t=>{var i,o;if(t.id!=="flyout_os")return t;if(C===null){C=JSON.parse(JSON.stringify(t))}const n=(i=e.text)!==null&&i!==void 0?i:C.text;const s=(o=e.title)!==null&&o!==void 0?o:C.title;if(!C.flyout||C.flyout.length===0||!e.flyout||e.flyout.length===0)return Object.assign(Object.assign({},t),{title:s,text:n});const r=[...C.flyout.map(((t,i)=>{var o;const n=e.flyout[i];const s=(o=n.title)!==null&&o!==void 0?o:t.title;const r=n.linkList?e.flyout[i].linkList:[];return{title:s,linkList:[...t.linkList,...r]}})),...e.flyout.slice(C.flyout.length)];return Object.assign(Object.assign({},t),{text:n,title:s,flyout:r})}))};const I=async(t,e)=>{if(!L(t)){throw new Error(`Internet Header: invalid project id "${t}"`)}if(t==="test"){e="int01"}let i=S(t,e);try{const t=await fetch(i);return await t.json()}catch(t){throw new Error(`Internet Header: fetching config failed. ${t.message}`)}};const S=(t,e)=>{if(t==="test")return"assets/config/test-configuration.json";const i=e.toLowerCase();const o=i==="prod";const n=`https://${o?"www":"int"}.post.ch`;try{return new URL(`${n}/api/headerjs/Json?serviceid=${encodeURIComponent(t)}${!o?"&environment="+i:""}`).toString()}catch(t){throw new Error(`Internet Header: Config URL is invalid.`)}};const L=t=>t!==""&&t.length>0&&/^[a-zA-Z][\w-]*[a-zA-Z0-9]$/.test(t);const z=(t,e)=>{var i;let o;try{o=typeof t==="string"?JSON.parse(t):t}catch(t){throw new Error(`Internet Header: Custom config is invalid. Make sure your custom config contains valid JSON syntax and matches the definition. `)}let n=o[e];if((i=n===null||n===void 0?void 0:n.header)===null||i===void 0?void 0:i.navMain)R(n.header.navMain);return n};const R=t=>{t.forEach((t=>{t.id=t.id==="flyout_os"?t.id:c("main-nav-")}))};const A="@swisspost/internet-header";const E="1.11.0";const K="The header for client facing applications.";const M="Swiss Post <oss@post.ch>";const T="Apache-2.0";const W={type:"git",url:"https://github.com/swisspost/design-system.git"};const $="https://next.design-system.post.ch";const D={url:"https://github.com/swisspost/design-system/issues"};const H="loader/index.cjs.js";const J="loader/index.js";const U="loader/index.es2017.js";const B="loader/index.es2017.js";const _="loader/index.d.ts";const q="dist/collection/collection-manifest.json";const G="loader/cdn.js";const V={access:"public"};const X=["dist/","loader/"];const Z={dev:"stencil build --serve --watch --docs-readme",start:"stencil build --watch --docs-readme",build:"stencil build --docs-readme",clean:"rimraf www dist loader",test:"npm run unit",unit:"jest","unit:watch":"jest --watch",e2e:"cypress run","e2e:watch":"cypress open",lint:"eslint src/**/*{.ts,.tsx}","lint:fix":"eslint src/**/*{.ts,.tsx} --fix",generate:"stencil generate"};const Q={"@stencil/core":"3.4.2","@stencil/store":"2.0.9","@swisspost/design-system-styles":"workspace:6.4.2","body-scroll-lock":"4.0.0-beta.0","iframe-resizer":"4.3.7",jquery:"3.7.1",tabbable:"6.2.0","throttle-debounce":"5.0.0","url-polyfill":"1.1.12"};const Y={"@babel/core":"7.22.20","@percy/cli":"1.27.2","@percy/cypress":"3.1.2","@stencil-community/eslint-plugin":"0.5.0","@stencil/sass":"3.0.5","@types/body-scroll-lock":"3.1.0","@types/iframe-resizer":"3.5.9","@types/jest":"27.5.2","@types/jquery":"3.5.19","@types/node":"18.17.19","@types/throttle-debounce":"5.0.0","babel-loader":"9.1.3",bootstrap:"5.3.2",cypress:"13.2.0","cypress-each":"1.13.3","cypress-storybook":"0.5.1","eslint-plugin-react":"7.33.2",globby:"13.2.2",jest:"27.5.1",rimraf:"5.0.1","rollup-plugin-node-polyfills":"0.2.1","rollup-plugin-scss":"4.0.0","rollup-plugin-visualizer":"5.9.2",sass:"1.68.0","start-server-and-test":"2.0.1","ts-jest":"27.1.5",typescript:"4.9.5"};const tt={name:A,version:E,description:K,author:M,license:T,repository:W,homepage:$,bugs:D,main:H,module:J,es2015:U,es2017:B,"jsnext:main":"loader/index.es2017.js",types:_,collection:q,"collection:main":"dist/collection/index.js",unpkg:G,publishConfig:V,files:X,scripts:Z,dependencies:Q,devDependencies:Y};const et=t=>{if(!(t instanceof HTMLElement||t instanceof SVGElement)){return false}const e=getComputedStyle(t);return["overflow","overflow-x","overflow-y"].some((t=>{const i=e.getPropertyValue(t);return i==="auto"||i==="scroll"}))};const it=t=>{let e=t.parentElement;while(e){if(et(e)){return e}e=e.parentElement}return document};const ot=(t,e)=>{const i=it(e);const o=()=>{const o=h.stickyness==="full";let n=1;const s=e.clientHeight-1;const r=i instanceof Element?i.scrollTop:i.documentElement.scrollTop;const a=o?0:r;if(t.clientHeight>0){n=Math.max((s-Math.max(a,0))/(s-t.clientHeight),1)}e.style.setProperty("--logo-scale",n.toString())};const n=s(150,o);const r=new IntersectionObserver((t=>{t.forEach((t=>{if(t.isIntersecting&&t.intersectionRatio>0){i.addEventListener("scroll",o,{passive:true});window.addEventListener("resize",n);window.requestAnimationFrame(o)}else{i.removeEventListener("scroll",o);window.removeEventListener("resize",n);window.requestAnimationFrame(o)}}))}),{threshold:[0,.001]});r.observe(t);return o};const nt='@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff2") format("woff2"),url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff") format("woff")}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-blank{background-color:rgba(0,0,0,0);border:none;border-radius:0;padding:0}.nav-link{outline:none;outline-offset:2px;text-decoration:none;color:rgba(0,0,0,.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:rgba(0,0,0,0);-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:.5rem}.nav-link:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.nav-link:hover,.nav-link:focus{color:#000}.nav-link:is(:focus-visible,:focus-within,.pretend-focus){z-index:1;position:relative}.nav-link>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span{-ms-flex-negative:1;flex-shrink:1}.no-list{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post",system-ui,sans-serif}button{font:inherit;padding:0}a,button{border-radius:4px;outline:none;outline-offset:2px}a:is(:focus-visible,:focus-within,.pretend-focus),button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color);border-radius:4px}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:#fff}}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px)and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{--logo-scale:1}@media (max-width: 1023.98px){:host{--logo-scale:1 !important}}post-logo{height:var(--header-height);-webkit-transform-origin:bottom left;transform-origin:bottom left;-webkit-transform:scale(var(--logo-scale));transform:scale(var(--logo-scale))}post-main-navigation{margin-left:calc(var(--header-height)*var(--logo-scale) - var(--header-height))}:host{display:block;position:relative;font-size:1rem;font-weight:300;z-index:var(--header-z-index, 10);--header-height:3.5rem;--meta-header-height:0px;--language-dropdown-margin-top:0px}@media (min-width: 1024px){:host{--meta-header-height:3rem;--header-height:4rem}}@media (min-width: 1280px){:host{--header-height:4.5rem}}:host([meta=false]){--meta-header-height:0px;--language-dropdown-margin-top:1px}@supports ((position: -webkit-sticky) or (position: sticky)){:host(:not(.stickyness-none)){position:-webkit-sticky;position:sticky}:host(.stickyness-full){top:0}:host(.stickyness-main){top:calc(var(--meta-header-height, 0px)*-1)}:host(.stickyness-minimal){top:calc((var(--header-height, 0px) + var(--meta-header-height, 0px) + 1px)*-1);-webkit-transition:top 200ms ease-in;transition:top 200ms ease-in}:host(.stickyness-minimal.scrolling-up),:host(.stickyness-minimal.dropdown-open){top:calc(var(--meta-header-height, 0px)*-1);-webkit-transition:top 200ms ease-out;transition:top 200ms ease-out}}.post-internet-header{border-bottom:1px solid #e6e6e6;background-color:#fff}.main-navigation-container{display:-ms-flexbox;display:flex}.main-navigation-container>.main-navigation-controls{-ms-flex:0 0 auto;flex:0 0 auto}.main-navigation{display:-ms-flexbox;display:flex}.sub-navigation-container{position:absolute;top:100%;left:0;width:100%;display:-ms-flexbox;display:flex;background:#fff;visibility:hidden}.main-navigation-item:hover .sub-navigation-container{visibility:visible}.main-navigation-controls{display:-ms-flexbox;display:flex;margin-left:auto}@media (max-width: 1023.98px){.main-navigation-controls{font-weight:400}}@media (min-width: 1024px){.main-navigation-controls{font-size:1.0625rem}}.main-navigation-controls>*{border-left:1px solid #e6e6e6}.menu-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0 calc(1rem - 1px);font-weight:300;cursor:pointer;border-left:1px solid #e6e6e6;-ms-flex-order:1;order:1}@media (min-width: 1024px){.menu-button{display:none}}@media (min-width: 600px)and (max-width: 1023.98px){.menu-button .visually-hidden{position:static;width:auto;height:auto;margin:auto;overflow:visible;clip:auto;visibility:visible;margin-right:.5rem}}.menu-button svg{width:1.5rem;height:1.5rem}.full-width .wide-container{max-width:none}';const st=class{async getCurrentLanguage(){var t;return(t=h.currentLanguage)!==null&&t!==void 0?t:"de"}constructor(i){t(this,i);this.headerLoaded=e(this,"headerLoaded",7);this.lastScrollTop=window.scrollY||document.documentElement.scrollTop;this.lastWindowWidth=window.innerWidth;this.handleClickOutsideBound=this.handleClickOutside.bind(this);this.project=undefined;this.stickyness="minimal";this.language=undefined;this.meta=true;this.login=true;this.search=true;this.skiplinks=true;this.configProxy=undefined;this.environment="prod";this.languageSwitchOverrides=undefined;this.customConfig=undefined;this.languageCookieKey=undefined;this.languageLocalStorageKey="swisspost-internet-header-language";this.activeRoute="auto";this.osFlyoutOverrides=undefined;this.fullWidth=false;this.activeFlyout=null;this.activeDropdownElement=null;if(this.project===undefined||this.project===""||!L(this.project)){throw new Error(`Internet Header project key is "${this.project}". Please provide a valid project key.`)}}connectedCallback(){this.throttledScroll=r(300,(()=>this.handleScrollEvent()));this.debouncedResize=s(200,(()=>this.handleResize()))}disconnectedCallback(){this.scrollParent.removeEventListener("scroll",this.throttledScroll);this.scrollParent.removeEventListener("resize",this.debouncedResize);f()}async componentWillLoad(){this.scrollParent=it(this.host);this.scrollParent.addEventListener("scroll",this.throttledScroll,{passive:true});this.scrollParent.addEventListener("resize",this.debouncedResize,{passive:true});try{h.projectId=this.project;h.stickyness=this.stickyness;h.environment=this.environment.toLocaleLowerCase();if(this.language!==undefined)h.currentLanguage=this.language;h.languageSwitchOverrides=typeof this.languageSwitchOverrides==="string"?JSON.parse(this.languageSwitchOverrides):this.languageSwitchOverrides;h.osFlyoutOverrides=typeof this.osFlyoutOverrides==="string"?JSON.parse(this.osFlyoutOverrides):this.osFlyoutOverrides;if(this.customConfig!==undefined){const t=Object.keys(typeof this.customConfig==="string"?JSON.parse(this.customConfig):this.customConfig);const e=h.currentLanguage||a(t,this.language);h.localizedCustomConfig=z(this.customConfig,e)}h.localizedConfig=await N({projectId:this.project,environment:h.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}catch(t){console.error(t)}}componentDidLoad(){window.requestAnimationFrame((()=>{this.handleResize();this.headerLoaded.emit();this.host.classList.add("header-loaded");if(this.meta&&this.metaNav){this.updateLogoAnimation=ot(this.metaNav,this.host)}}));if(this.stickyness==="full")console.warn('Internet Header: The stickyness="full" option is deprecated.')}async handleLanguageChange(t){h.currentLanguage=t;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:t,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides});if(this.customConfig)h.localizedCustomConfig=z(this.customConfig,t)}handleAvailableLanguagesChange(t){h.languageSwitchOverrides=typeof t==="string"?JSON.parse(t):t}async handleOsFlyoutOverrides(t){h.osFlyoutOverrides=typeof t==="string"?JSON.parse(t):t;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}async handleActiveRouteChange(t){h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:t,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}async handleCustomConfigChange(t){if(this.language===undefined)return;const e=z(t,this.language);h.localizedCustomConfig=e;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:e,osFlyoutOverrides:h.osFlyoutOverrides})}handleSearchChange(t){h.search=t}handleLoginChange(t){h.login=t}handleMetaChange(t){h.meta=t}handleLanguageChangeEvent(t){void this.handleLanguageChange(t.detail)}handleStickynessChange(t){h.stickyness=t;if(typeof this.updateLogoAnimation==="function")this.updateLogoAnimation()}handleClickOutside(t){if(this.activeDropdownElement&&!t.composedPath().includes(this.activeDropdownElement)){void this.activeDropdownElement.toggleDropdown(false)}}handleKeyUp(t){if(t.key==="Escape"){if(this.activeDropdownElement){void this.activeDropdownElement.toggleDropdown(false)}if(this.activeFlyout!==null&&this.mainNav){void this.mainNav.toggleDropdown(false)}}}handleScrollEvent(){const t=this.scrollParent instanceof Document?this.scrollParent.documentElement.scrollTop:this.scrollParent.scrollTop;if(this.stickyness==="minimal"){this.host.classList.toggle("scrolling-up",t<=this.lastScrollTop)}this.lastScrollTop=t<=0?0:t}handleResize(){var t;if(this.isMainNavOpen()&&this.lastWindowWidth<1024&&window.innerWidth>=1024){(t=this.activeDropdownElement)===null||t===void 0?void 0:t.toggleDropdown(false)}this.lastWindowWidth=window.innerWidth}handleDropdownToggled(t){if(!t.detail.open&&this.activeDropdownElement!==t.detail.element){return}if(t.detail.open){if(this.activeDropdownElement){void this.activeDropdownElement.toggleDropdown(false)}this.activeDropdownElement=t.detail.element;if(window.innerWidth>=1024){window.setTimeout((()=>{window.addEventListener("click",this.handleClickOutsideBound)}),10)}if(this.activeFlyout!==null&&this.mainNav){void this.mainNav.setActiveFlyout(null)}}else{this.activeDropdownElement=null;window.removeEventListener("click",this.handleClickOutsideBound)}}handleFlyoutToggled(t){this.activeFlyout=t.detail;if(this.activeDropdownElement&&t.detail&&!this.isMainNavOpen()){void this.activeDropdownElement.toggleDropdown(false)}}toggleMobileDropdown(){var t;(t=this.mainNav)===null||t===void 0?void 0:t.toggleDropdown()}isMainNavOpen(){return this.activeDropdownElement&&this.activeDropdownElement.tagName==="POST-MAIN-NAVIGATION"}render(){var t,e,n;if(!((t=h.localizedConfig)===null||t===void 0?void 0:t.header)){console.error(new Error("Internet Header: Config cannot be loaded"));return}const s=h.localizedConfig;const r=this.meta&&s.header.navMeta!==undefined&&((e=s.header.navMeta)===null||e===void 0?void 0:e.filter((t=>!t.isHomeLink)).length)>0;const a=((n=this.login)!==null&&n!==void 0?n:!s.header.isLoginWidgetHidden)&&s.header.loginWidgetOptions;const l=s.header.navLang.length>1;return i(o,{class:`stickyness-${this.stickyness} ${Boolean(this.activeDropdownElement)||Boolean(this.activeFlyout)?"dropdown-open":""}`,"data-version":tt.version,onKeyup:t=>this.handleKeyUp(t)},i("header",{class:`post-internet-header${this.fullWidth?" full-width":""}`},i(u,null),i("h1",{class:"visually-hidden"},d("Navigate on post.ch")),i(g,{condition:this.skiplinks},i("post-skiplinks",null)),i(g,{condition:r},i("post-meta-navigation",{orientation:"horizontal",class:"hidden-lg","full-width":this.fullWidth,ref:t=>this.metaNav=t},i(g,{condition:l},i("post-language-switch",{id:"post-language-switch-desktop",mode:"dropdown",onDropdownToggled:t=>this.handleDropdownToggled(t)})))),i("div",{class:"main-navigation-container wide-container"},i("post-logo",null),i("button",{class:"menu-button nav-link",onClick:()=>this.toggleMobileDropdown(),"aria-haspopup":"menu","aria-controls":"post-internet-header-main-navigation","aria-expanded":this.activeDropdownElement?"true":"false"},i("span",{class:"menu-button-text visually-hidden"},s.header.mobileMenu.text),i(p,{name:this.isMainNavOpen()?"pi-close":"pi-menu"})),i("post-main-navigation",{onDropdownToggled:t=>this.handleDropdownToggled(t),onFlyoutToggled:t=>this.handleFlyoutToggled(t),ref:t=>this.mainNav=t},i(g,{condition:r},i("post-meta-navigation",{orientation:"vertical"},i(g,{condition:l},i("post-language-switch",{id:"post-language-switch-mobile",mode:"list"}))))),i("div",{class:"main-navigation-controls"},i(g,{condition:this.search},i("post-search",{onDropdownToggled:t=>this.handleDropdownToggled(t)})),i(g,{condition:!!a},i("post-klp-login-widget",null,i("slot",{name:"login-widget"}))),i(g,{condition:!r&&l},i("post-language-switch",{id:"post-language-switch-no-meta",onDropdownToggled:t=>this.handleDropdownToggled(t),mode:"dropdown"})),i("slot",{name:"main"})))))}get host(){return n(this)}static get watchers(){return{language:["handleLanguageChange"],languageSwitchOverrides:["handleAvailableLanguagesChange"],osFlyoutOverrides:["handleOsFlyoutOverrides"],activeRoute:["handleActiveRouteChange"],customConfig:["handleCustomConfigChange"],search:["handleSearchChange"],login:["handleLoginChange"],meta:["handleMetaChange"],stickyness:["handleStickynessChange"]}}};st.style=nt;export{st as swisspost_internet_header};
2
+ //# sourceMappingURL=p-7ddfd160.entry.js.map