@swisspost/internet-header 1.5.0-beta.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 (508) hide show
  1. package/LICENSE +202 -0
  2. package/dist/cjs/_commonjsHelpers-537d719a.js +22 -0
  3. package/dist/cjs/_commonjsHelpers-537d719a.js.map +1 -0
  4. package/dist/cjs/bodyScrollLock.esm-59f17217.js +285 -0
  5. package/dist/cjs/bodyScrollLock.esm-59f17217.js.map +1 -0
  6. package/dist/cjs/if.component-313f59b8.js +12 -0
  7. package/dist/cjs/if.component-313f59b8.js.map +1 -0
  8. package/dist/cjs/index-5751975e.js +1735 -0
  9. package/dist/cjs/index-5751975e.js.map +1 -0
  10. package/dist/cjs/index-e7245d60.js +144 -0
  11. package/dist/cjs/index-e7245d60.js.map +1 -0
  12. package/dist/cjs/index.cjs.js +4 -0
  13. package/dist/cjs/index.cjs.js.map +1 -0
  14. package/dist/cjs/klp-widget.controller-675b23db.js +15862 -0
  15. package/dist/cjs/klp-widget.controller-675b23db.js.map +1 -0
  16. package/dist/cjs/language.service-a80ae01d.js +152 -0
  17. package/dist/cjs/language.service-a80ae01d.js.map +1 -0
  18. package/dist/cjs/loader.cjs.js +24 -0
  19. package/dist/cjs/loader.cjs.js.map +1 -0
  20. package/dist/cjs/post-klp-login-widget.cjs.entry.js +46 -0
  21. package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -0
  22. package/dist/cjs/post-language-switch.cjs.entry.js +103 -0
  23. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -0
  24. package/dist/cjs/post-logo.cjs.entry.js +67 -0
  25. package/dist/cjs/post-logo.cjs.entry.js.map +1 -0
  26. package/dist/cjs/post-main-navigation.cjs.entry.js +243 -0
  27. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -0
  28. package/dist/cjs/post-meta-navigation.cjs.entry.js +28 -0
  29. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -0
  30. package/dist/cjs/post-search.cjs.entry.js +2739 -0
  31. package/dist/cjs/post-search.cjs.entry.js.map +1 -0
  32. package/dist/cjs/post-skiplinks.cjs.entry.js +54 -0
  33. package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -0
  34. package/dist/cjs/store-47e14589.js +202 -0
  35. package/dist/cjs/store-47e14589.js.map +1 -0
  36. package/dist/cjs/svg-icon.component-10fbda11.js +10 -0
  37. package/dist/cjs/svg-icon.component-10fbda11.js.map +1 -0
  38. package/dist/cjs/svg-sprite.component-c3b454b3.js +48 -0
  39. package/dist/cjs/svg-sprite.component-c3b454b3.js.map +1 -0
  40. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +3488 -0
  41. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -0
  42. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +148 -0
  43. package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -0
  44. package/dist/cjs/swisspost-internet-header.cjs.entry.js +704 -0
  45. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -0
  46. package/dist/cjs/swisspost-internet-header.cjs.js +28 -0
  47. package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -0
  48. package/dist/cjs/ui.service-db4a8252.js +35 -0
  49. package/dist/cjs/ui.service-db4a8252.js.map +1 -0
  50. package/dist/cjs/utils-b6014257.js +22 -0
  51. package/dist/cjs/utils-b6014257.js.map +1 -0
  52. package/dist/collection/assets/config/test-configuration.json +4067 -0
  53. package/dist/collection/assets/i18n/translations.js +38 -0
  54. package/dist/collection/assets/i18n/translations.js.map +1 -0
  55. package/dist/collection/assets/js/klp-login-widget.js +1716 -0
  56. package/dist/collection/assets/js/sockjs-client.js +5134 -0
  57. package/dist/collection/collection-manifest.json +27 -0
  58. package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js +11 -0
  59. package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js.map +1 -0
  60. package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js +42 -0
  61. package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js.map +1 -0
  62. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +8 -0
  63. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -0
  64. package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js +6 -0
  65. package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js.map +1 -0
  66. package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js +12 -0
  67. package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js.map +1 -0
  68. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +2724 -0
  69. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +253 -0
  70. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -0
  71. package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js +12 -0
  72. package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js.map +1 -0
  73. package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js +24 -0
  74. package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js.map +1 -0
  75. package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js +6 -0
  76. package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js.map +1 -0
  77. package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js +6 -0
  78. package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js.map +1 -0
  79. package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js +5 -0
  80. package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js.map +1 -0
  81. package/dist/collection/components/post-internet-footer/post-internet-footer.css +2501 -0
  82. package/dist/collection/components/post-internet-footer/post-internet-footer.js +86 -0
  83. package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -0
  84. package/dist/collection/components/post-internet-header/post-internet-header.css +340 -0
  85. package/dist/collection/components/post-internet-header/post-internet-header.js +676 -0
  86. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -0
  87. package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js +14 -0
  88. package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js.map +1 -0
  89. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +1341 -0
  90. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +67 -0
  91. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -0
  92. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +9 -0
  93. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -0
  94. package/dist/collection/components/post-language-switch/post-language-switch.css +321 -0
  95. package/dist/collection/components/post-language-switch/post-language-switch.js +186 -0
  96. package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -0
  97. package/dist/collection/components/post-logo/logo-sprite.component.js +4 -0
  98. package/dist/collection/components/post-logo/logo-sprite.component.js.map +1 -0
  99. package/dist/collection/components/post-logo/post-logo.css +239 -0
  100. package/dist/collection/components/post-logo/post-logo.js +60 -0
  101. package/dist/collection/components/post-logo/post-logo.js.map +1 -0
  102. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +13 -0
  103. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -0
  104. package/dist/collection/components/post-main-navigation/post-main-navigation.css +592 -0
  105. package/dist/collection/components/post-main-navigation/post-main-navigation.js +347 -0
  106. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -0
  107. package/dist/collection/components/post-meta-navigation/post-meta-navigation.css +290 -0
  108. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +67 -0
  109. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -0
  110. package/dist/collection/components/post-search/post-search.css +3028 -0
  111. package/dist/collection/components/post-search/post-search.js +362 -0
  112. package/dist/collection/components/post-search/post-search.js.map +1 -0
  113. package/dist/collection/components/post-skiplinks/post-skiplinks.css +20 -0
  114. package/dist/collection/components/post-skiplinks/post-skiplinks.js +51 -0
  115. package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -0
  116. package/dist/collection/data/store.js +11 -0
  117. package/dist/collection/data/store.js.map +1 -0
  118. package/dist/collection/index.js +2 -0
  119. package/dist/collection/index.js.map +1 -0
  120. package/dist/collection/models/breadcrumbs.model.js +2 -0
  121. package/dist/collection/models/breadcrumbs.model.js.map +1 -0
  122. package/dist/collection/models/coveo.model.js +2 -0
  123. package/dist/collection/models/coveo.model.js.map +1 -0
  124. package/dist/collection/models/footer.model.js +2 -0
  125. package/dist/collection/models/footer.model.js.map +1 -0
  126. package/dist/collection/models/general.model.js +2 -0
  127. package/dist/collection/models/general.model.js.map +1 -0
  128. package/dist/collection/models/geocode.model.js +10 -0
  129. package/dist/collection/models/geocode.model.js.map +1 -0
  130. package/dist/collection/models/header.model.js +2 -0
  131. package/dist/collection/models/header.model.js.map +1 -0
  132. package/dist/collection/models/implementor.model.js +2 -0
  133. package/dist/collection/models/implementor.model.js.map +1 -0
  134. package/dist/collection/models/language.model.js +2 -0
  135. package/dist/collection/models/language.model.js.map +1 -0
  136. package/dist/collection/models/track-and-trace.model.js +2 -0
  137. package/dist/collection/models/track-and-trace.model.js.map +1 -0
  138. package/dist/collection/services/config.service.js +170 -0
  139. package/dist/collection/services/config.service.js.map +1 -0
  140. package/dist/collection/services/language.service.js +107 -0
  141. package/dist/collection/services/language.service.js.map +1 -0
  142. package/dist/collection/services/route.service.js +163 -0
  143. package/dist/collection/services/route.service.js.map +1 -0
  144. package/dist/collection/services/search/coveo.service.js +34 -0
  145. package/dist/collection/services/search/coveo.service.js.map +1 -0
  146. package/dist/collection/services/search/coveo.settings.js +19 -0
  147. package/dist/collection/services/search/coveo.settings.js.map +1 -0
  148. package/dist/collection/services/search/parcel.service.js +54 -0
  149. package/dist/collection/services/search/parcel.service.js.map +1 -0
  150. package/dist/collection/services/search/places.service.js +95 -0
  151. package/dist/collection/services/search/places.service.js.map +1 -0
  152. package/dist/collection/services/search/places.settings.js +16 -0
  153. package/dist/collection/services/search/places.settings.js.map +1 -0
  154. package/dist/collection/services/search/search-utilities.js +26 -0
  155. package/dist/collection/services/search/search-utilities.js.map +1 -0
  156. package/dist/collection/services/search/search.service.js +42 -0
  157. package/dist/collection/services/search/search.service.js.map +1 -0
  158. package/dist/collection/services/ui.service.js +30 -0
  159. package/dist/collection/services/ui.service.js.map +1 -0
  160. package/dist/collection/tests/setup-tests.js +14 -0
  161. package/dist/collection/tests/setup-tests.js.map +1 -0
  162. package/dist/collection/utils/highlighted.component.js +11 -0
  163. package/dist/collection/utils/highlighted.component.js.map +1 -0
  164. package/dist/collection/utils/if.component.js +7 -0
  165. package/dist/collection/utils/if.component.js.map +1 -0
  166. package/dist/collection/utils/svg-icon.component.js +3 -0
  167. package/dist/collection/utils/svg-icon.component.js.map +1 -0
  168. package/dist/collection/utils/svg-sprite.component.js +3 -0
  169. package/dist/collection/utils/svg-sprite.component.js.map +1 -0
  170. package/dist/collection/utils/utils.js +16 -0
  171. package/dist/collection/utils/utils.js.map +1 -0
  172. package/dist/components/_commonjsHelpers.js +19 -0
  173. package/dist/components/_commonjsHelpers.js.map +1 -0
  174. package/dist/components/bodyScrollLock.esm.js +281 -0
  175. package/dist/components/bodyScrollLock.esm.js.map +1 -0
  176. package/dist/components/index.d.ts +39 -0
  177. package/dist/components/index.js +36 -0
  178. package/dist/components/index.js.map +1 -0
  179. package/dist/components/index2.js +141 -0
  180. package/dist/components/index2.js.map +1 -0
  181. package/dist/components/klp-widget.controller.js +15860 -0
  182. package/dist/components/klp-widget.controller.js.map +1 -0
  183. package/dist/components/language.service.js +148 -0
  184. package/dist/components/language.service.js.map +1 -0
  185. package/dist/components/post-klp-login-widget.d.ts +11 -0
  186. package/dist/components/post-klp-login-widget.js +8 -0
  187. package/dist/components/post-klp-login-widget.js.map +1 -0
  188. package/dist/components/post-klp-login-widget2.js +59 -0
  189. package/dist/components/post-klp-login-widget2.js.map +1 -0
  190. package/dist/components/post-language-switch.d.ts +11 -0
  191. package/dist/components/post-language-switch.js +8 -0
  192. package/dist/components/post-language-switch.js.map +1 -0
  193. package/dist/components/post-language-switch2.js +118 -0
  194. package/dist/components/post-language-switch2.js.map +1 -0
  195. package/dist/components/post-logo.d.ts +11 -0
  196. package/dist/components/post-logo.js +8 -0
  197. package/dist/components/post-logo.js.map +1 -0
  198. package/dist/components/post-logo2.js +80 -0
  199. package/dist/components/post-logo2.js.map +1 -0
  200. package/dist/components/post-main-navigation.d.ts +11 -0
  201. package/dist/components/post-main-navigation.js +8 -0
  202. package/dist/components/post-main-navigation.js.map +1 -0
  203. package/dist/components/post-main-navigation2.js +260 -0
  204. package/dist/components/post-main-navigation2.js.map +1 -0
  205. package/dist/components/post-meta-navigation.d.ts +11 -0
  206. package/dist/components/post-meta-navigation.js +8 -0
  207. package/dist/components/post-meta-navigation.js.map +1 -0
  208. package/dist/components/post-meta-navigation2.js +42 -0
  209. package/dist/components/post-meta-navigation2.js.map +1 -0
  210. package/dist/components/post-search.d.ts +11 -0
  211. package/dist/components/post-search.js +8 -0
  212. package/dist/components/post-search.js.map +1 -0
  213. package/dist/components/post-search2.js +2763 -0
  214. package/dist/components/post-search2.js.map +1 -0
  215. package/dist/components/post-skiplinks.d.ts +11 -0
  216. package/dist/components/post-skiplinks.js +8 -0
  217. package/dist/components/post-skiplinks.js.map +1 -0
  218. package/dist/components/post-skiplinks2.js +64 -0
  219. package/dist/components/post-skiplinks2.js.map +1 -0
  220. package/dist/components/store.js +199 -0
  221. package/dist/components/store.js.map +1 -0
  222. package/dist/components/svg-icon.component.js +8 -0
  223. package/dist/components/svg-icon.component.js.map +1 -0
  224. package/dist/components/svg-sprite.component.js +46 -0
  225. package/dist/components/svg-sprite.component.js.map +1 -0
  226. package/dist/components/swisspost-internet-breadcrumbs.d.ts +11 -0
  227. package/dist/components/swisspost-internet-breadcrumbs.js +3509 -0
  228. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -0
  229. package/dist/components/swisspost-internet-footer.d.ts +11 -0
  230. package/dist/components/swisspost-internet-footer.js +164 -0
  231. package/dist/components/swisspost-internet-footer.js.map +1 -0
  232. package/dist/components/swisspost-internet-header.d.ts +11 -0
  233. package/dist/components/swisspost-internet-header.js +779 -0
  234. package/dist/components/swisspost-internet-header.js.map +1 -0
  235. package/dist/components/ui.service.js +32 -0
  236. package/dist/components/ui.service.js.map +1 -0
  237. package/dist/components/utils.js +19 -0
  238. package/dist/components/utils.js.map +1 -0
  239. package/dist/esm/_commonjsHelpers-9943807e.js +19 -0
  240. package/dist/esm/_commonjsHelpers-9943807e.js.map +1 -0
  241. package/dist/esm/bodyScrollLock.esm-afcc00e3.js +281 -0
  242. package/dist/esm/bodyScrollLock.esm-afcc00e3.js.map +1 -0
  243. package/dist/esm/if.component-542fb8c3.js +10 -0
  244. package/dist/esm/if.component-542fb8c3.js.map +1 -0
  245. package/dist/esm/index-066666f4.js +1704 -0
  246. package/dist/esm/index-066666f4.js.map +1 -0
  247. package/dist/esm/index-a75df186.js +141 -0
  248. package/dist/esm/index-a75df186.js.map +1 -0
  249. package/dist/esm/index.js +3 -0
  250. package/dist/esm/index.js.map +1 -0
  251. package/dist/esm/klp-widget.controller-be1eeb16.js +15860 -0
  252. package/dist/esm/klp-widget.controller-be1eeb16.js.map +1 -0
  253. package/dist/esm/language.service-e49858e0.js +148 -0
  254. package/dist/esm/language.service-e49858e0.js.map +1 -0
  255. package/dist/esm/loader.js +20 -0
  256. package/dist/esm/loader.js.map +1 -0
  257. package/dist/esm/polyfills/core-js.js +11 -0
  258. package/dist/esm/polyfills/css-shim.js +1 -0
  259. package/dist/esm/polyfills/dom.js +79 -0
  260. package/dist/esm/polyfills/es5-html-element.js +1 -0
  261. package/dist/esm/polyfills/index.js +34 -0
  262. package/dist/esm/polyfills/system.js +6 -0
  263. package/dist/esm/post-klp-login-widget.entry.js +42 -0
  264. package/dist/esm/post-klp-login-widget.entry.js.map +1 -0
  265. package/dist/esm/post-language-switch.entry.js +99 -0
  266. package/dist/esm/post-language-switch.entry.js.map +1 -0
  267. package/dist/esm/post-logo.entry.js +63 -0
  268. package/dist/esm/post-logo.entry.js.map +1 -0
  269. package/dist/esm/post-main-navigation.entry.js +239 -0
  270. package/dist/esm/post-main-navigation.entry.js.map +1 -0
  271. package/dist/esm/post-meta-navigation.entry.js +24 -0
  272. package/dist/esm/post-meta-navigation.entry.js.map +1 -0
  273. package/dist/esm/post-search.entry.js +2735 -0
  274. package/dist/esm/post-search.entry.js.map +1 -0
  275. package/dist/esm/post-skiplinks.entry.js +50 -0
  276. package/dist/esm/post-skiplinks.entry.js.map +1 -0
  277. package/dist/esm/store-d495dc07.js +199 -0
  278. package/dist/esm/store-d495dc07.js.map +1 -0
  279. package/dist/esm/svg-icon.component-1b1b27a2.js +8 -0
  280. package/dist/esm/svg-icon.component-1b1b27a2.js.map +1 -0
  281. package/dist/esm/svg-sprite.component-ec0ac38c.js +46 -0
  282. package/dist/esm/svg-sprite.component-ec0ac38c.js.map +1 -0
  283. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +3484 -0
  284. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -0
  285. package/dist/esm/swisspost-internet-footer.entry.js +144 -0
  286. package/dist/esm/swisspost-internet-footer.entry.js.map +1 -0
  287. package/dist/esm/swisspost-internet-header.entry.js +700 -0
  288. package/dist/esm/swisspost-internet-header.entry.js.map +1 -0
  289. package/dist/esm/swisspost-internet-header.js +23 -0
  290. package/dist/esm/swisspost-internet-header.js.map +1 -0
  291. package/dist/esm/ui.service-1d9b0f51.js +32 -0
  292. package/dist/esm/ui.service-1d9b0f51.js.map +1 -0
  293. package/dist/esm/utils-5bf107ff.js +19 -0
  294. package/dist/esm/utils-5bf107ff.js.map +1 -0
  295. package/dist/esm-es5/_commonjsHelpers-9943807e.js +2 -0
  296. package/dist/esm-es5/_commonjsHelpers-9943807e.js.map +1 -0
  297. package/dist/esm-es5/bodyScrollLock.esm-afcc00e3.js +2 -0
  298. package/dist/esm-es5/bodyScrollLock.esm-afcc00e3.js.map +1 -0
  299. package/dist/esm-es5/if.component-542fb8c3.js +2 -0
  300. package/dist/esm-es5/if.component-542fb8c3.js.map +1 -0
  301. package/dist/esm-es5/index-066666f4.js +3 -0
  302. package/dist/esm-es5/index-066666f4.js.map +1 -0
  303. package/dist/esm-es5/index-a75df186.js +2 -0
  304. package/dist/esm-es5/index-a75df186.js.map +1 -0
  305. package/dist/esm-es5/index.js +2 -0
  306. package/dist/esm-es5/index.js.map +1 -0
  307. package/dist/esm-es5/klp-widget.controller-be1eeb16.js +27 -0
  308. package/dist/esm-es5/klp-widget.controller-be1eeb16.js.map +1 -0
  309. package/dist/esm-es5/language.service-e49858e0.js +2 -0
  310. package/dist/esm-es5/language.service-e49858e0.js.map +1 -0
  311. package/dist/esm-es5/loader.js +2 -0
  312. package/dist/esm-es5/loader.js.map +1 -0
  313. package/dist/esm-es5/post-klp-login-widget.entry.js +2 -0
  314. package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -0
  315. package/dist/esm-es5/post-language-switch.entry.js +2 -0
  316. package/dist/esm-es5/post-language-switch.entry.js.map +1 -0
  317. package/dist/esm-es5/post-logo.entry.js +2 -0
  318. package/dist/esm-es5/post-logo.entry.js.map +1 -0
  319. package/dist/esm-es5/post-main-navigation.entry.js +2 -0
  320. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -0
  321. package/dist/esm-es5/post-meta-navigation.entry.js +2 -0
  322. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -0
  323. package/dist/esm-es5/post-search.entry.js +2 -0
  324. package/dist/esm-es5/post-search.entry.js.map +1 -0
  325. package/dist/esm-es5/post-skiplinks.entry.js +2 -0
  326. package/dist/esm-es5/post-skiplinks.entry.js.map +1 -0
  327. package/dist/esm-es5/store-d495dc07.js +2 -0
  328. package/dist/esm-es5/store-d495dc07.js.map +1 -0
  329. package/dist/esm-es5/svg-icon.component-1b1b27a2.js +2 -0
  330. package/dist/esm-es5/svg-icon.component-1b1b27a2.js.map +1 -0
  331. package/dist/esm-es5/svg-sprite.component-ec0ac38c.js +2 -0
  332. package/dist/esm-es5/svg-sprite.component-ec0ac38c.js.map +1 -0
  333. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +6 -0
  334. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -0
  335. package/dist/esm-es5/swisspost-internet-footer.entry.js +2 -0
  336. package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -0
  337. package/dist/esm-es5/swisspost-internet-header.entry.js +2 -0
  338. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -0
  339. package/dist/esm-es5/swisspost-internet-header.js +2 -0
  340. package/dist/esm-es5/swisspost-internet-header.js.map +1 -0
  341. package/dist/esm-es5/ui.service-1d9b0f51.js +2 -0
  342. package/dist/esm-es5/ui.service-1d9b0f51.js.map +1 -0
  343. package/dist/esm-es5/utils-5bf107ff.js +2 -0
  344. package/dist/esm-es5/utils-5bf107ff.js.map +1 -0
  345. package/dist/index.cjs.js +1 -0
  346. package/dist/index.js +1 -0
  347. package/dist/swisspost-internet-header/assets/config/test-configuration.json +4067 -0
  348. package/dist/swisspost-internet-header/index.esm.js +2 -0
  349. package/dist/swisspost-internet-header/index.esm.js.map +1 -0
  350. package/dist/swisspost-internet-header/p-00fd320e.entry.js +2 -0
  351. package/dist/swisspost-internet-header/p-00fd320e.entry.js.map +1 -0
  352. package/dist/swisspost-internet-header/p-0e2ec555.js +2 -0
  353. package/dist/swisspost-internet-header/p-0e2ec555.js.map +1 -0
  354. package/dist/swisspost-internet-header/p-112455b1.js +2 -0
  355. package/dist/swisspost-internet-header/p-112455b1.js.map +1 -0
  356. package/dist/swisspost-internet-header/p-17a47667.system.js +2 -0
  357. package/dist/swisspost-internet-header/p-17a47667.system.js.map +1 -0
  358. package/dist/swisspost-internet-header/p-1b8f9bc8.system.js +3 -0
  359. package/dist/swisspost-internet-header/p-1b8f9bc8.system.js.map +1 -0
  360. package/dist/swisspost-internet-header/p-2eb04045.entry.js +2 -0
  361. package/dist/swisspost-internet-header/p-2eb04045.entry.js.map +1 -0
  362. package/dist/swisspost-internet-header/p-3ba40afe.js +2 -0
  363. package/dist/swisspost-internet-header/p-3ba40afe.js.map +1 -0
  364. package/dist/swisspost-internet-header/p-3eb881c3.js +2 -0
  365. package/dist/swisspost-internet-header/p-3eb881c3.js.map +1 -0
  366. package/dist/swisspost-internet-header/p-43cbbf42.entry.js +2 -0
  367. package/dist/swisspost-internet-header/p-43cbbf42.entry.js.map +1 -0
  368. package/dist/swisspost-internet-header/p-4654b2af.system.js +2 -0
  369. package/dist/swisspost-internet-header/p-4654b2af.system.js.map +1 -0
  370. package/dist/swisspost-internet-header/p-4c9ec2d8.system.js +27 -0
  371. package/dist/swisspost-internet-header/p-4c9ec2d8.system.js.map +1 -0
  372. package/dist/swisspost-internet-header/p-5032057e.js +3 -0
  373. package/dist/swisspost-internet-header/p-5032057e.js.map +1 -0
  374. package/dist/swisspost-internet-header/p-50ea2036.system.js +2 -0
  375. package/dist/swisspost-internet-header/p-50ea2036.system.js.map +1 -0
  376. package/dist/swisspost-internet-header/p-549b62ba.system.js +2 -0
  377. package/dist/swisspost-internet-header/p-549b62ba.system.js.map +1 -0
  378. package/dist/swisspost-internet-header/p-5e43c5e0.js +2 -0
  379. package/dist/swisspost-internet-header/p-5e43c5e0.js.map +1 -0
  380. package/dist/swisspost-internet-header/p-69c64c29.js +2 -0
  381. package/dist/swisspost-internet-header/p-69c64c29.js.map +1 -0
  382. package/dist/swisspost-internet-header/p-6a09e0b4.system.entry.js +2 -0
  383. package/dist/swisspost-internet-header/p-6a09e0b4.system.entry.js.map +1 -0
  384. package/dist/swisspost-internet-header/p-74932c29.entry.js +6 -0
  385. package/dist/swisspost-internet-header/p-74932c29.entry.js.map +1 -0
  386. package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js +2 -0
  387. package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js.map +1 -0
  388. package/dist/swisspost-internet-header/p-78f653be.system.entry.js +2 -0
  389. package/dist/swisspost-internet-header/p-78f653be.system.entry.js.map +1 -0
  390. package/dist/swisspost-internet-header/p-7e653a26.js +27 -0
  391. package/dist/swisspost-internet-header/p-7e653a26.js.map +1 -0
  392. package/dist/swisspost-internet-header/p-7f16a46b.entry.js +2 -0
  393. package/dist/swisspost-internet-header/p-7f16a46b.entry.js.map +1 -0
  394. package/dist/swisspost-internet-header/p-8717445f.entry.js +2 -0
  395. package/dist/swisspost-internet-header/p-8717445f.entry.js.map +1 -0
  396. package/dist/swisspost-internet-header/p-883f9547.system.entry.js +2 -0
  397. package/dist/swisspost-internet-header/p-883f9547.system.entry.js.map +1 -0
  398. package/dist/swisspost-internet-header/p-9509f6c7.system.js +2 -0
  399. package/dist/swisspost-internet-header/p-9509f6c7.system.js.map +1 -0
  400. package/dist/swisspost-internet-header/p-9d0a7039.entry.js +2 -0
  401. package/dist/swisspost-internet-header/p-9d0a7039.entry.js.map +1 -0
  402. package/dist/swisspost-internet-header/p-a119b38d.js +2 -0
  403. package/dist/swisspost-internet-header/p-a119b38d.js.map +1 -0
  404. package/dist/swisspost-internet-header/p-a4160d23.entry.js +2 -0
  405. package/dist/swisspost-internet-header/p-a4160d23.entry.js.map +1 -0
  406. package/dist/swisspost-internet-header/p-a51ad207.system.entry.js +2 -0
  407. package/dist/swisspost-internet-header/p-a51ad207.system.entry.js.map +1 -0
  408. package/dist/swisspost-internet-header/p-a9c4b2d0.system.entry.js +2 -0
  409. package/dist/swisspost-internet-header/p-a9c4b2d0.system.entry.js.map +1 -0
  410. package/dist/swisspost-internet-header/p-b3014611.system.js +2 -0
  411. package/dist/swisspost-internet-header/p-b3014611.system.js.map +1 -0
  412. package/dist/swisspost-internet-header/p-bdabd6ac.js +2 -0
  413. package/dist/swisspost-internet-header/p-bdabd6ac.js.map +1 -0
  414. package/dist/swisspost-internet-header/p-bdfd2460.entry.js +2 -0
  415. package/dist/swisspost-internet-header/p-bdfd2460.entry.js.map +1 -0
  416. package/dist/swisspost-internet-header/p-c29ec122.system.js +2 -0
  417. package/dist/swisspost-internet-header/p-c29ec122.system.js.map +1 -0
  418. package/dist/swisspost-internet-header/p-c69923cd.system.js +2 -0
  419. package/dist/swisspost-internet-header/p-c69923cd.system.js.map +1 -0
  420. package/dist/swisspost-internet-header/p-c8296f63.system.js +2 -0
  421. package/dist/swisspost-internet-header/p-c8296f63.system.js.map +1 -0
  422. package/dist/swisspost-internet-header/p-c946c5b8.system.entry.js +2 -0
  423. package/dist/swisspost-internet-header/p-c946c5b8.system.entry.js.map +1 -0
  424. package/dist/swisspost-internet-header/p-cb06a633.system.entry.js +2 -0
  425. package/dist/swisspost-internet-header/p-cb06a633.system.entry.js.map +1 -0
  426. package/dist/swisspost-internet-header/p-cb3de015.system.entry.js +2 -0
  427. package/dist/swisspost-internet-header/p-cb3de015.system.entry.js.map +1 -0
  428. package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js +7 -0
  429. package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js.map +1 -0
  430. package/dist/swisspost-internet-header/p-ddcb8258.entry.js +2 -0
  431. package/dist/swisspost-internet-header/p-ddcb8258.entry.js.map +1 -0
  432. package/dist/swisspost-internet-header/p-ec80c8fc.js +2 -0
  433. package/dist/swisspost-internet-header/p-ec80c8fc.js.map +1 -0
  434. package/dist/swisspost-internet-header/p-ee915bbe.system.js +2 -0
  435. package/dist/swisspost-internet-header/p-ee915bbe.system.js.map +1 -0
  436. package/dist/swisspost-internet-header/p-eeff8b03.js +2 -0
  437. package/dist/swisspost-internet-header/p-eeff8b03.js.map +1 -0
  438. package/dist/swisspost-internet-header/p-f4ff1e9e.system.js +2 -0
  439. package/dist/swisspost-internet-header/p-f4ff1e9e.system.js.map +1 -0
  440. package/dist/swisspost-internet-header/p-f887c8bb.system.js +2 -0
  441. package/dist/swisspost-internet-header/p-f887c8bb.system.js.map +1 -0
  442. package/dist/swisspost-internet-header/swisspost-internet-header.css +29 -0
  443. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +2 -0
  444. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -0
  445. package/dist/swisspost-internet-header/swisspost-internet-header.js +131 -0
  446. package/dist/types/assets/i18n/translations.d.ts +37 -0
  447. package/dist/types/components/post-internet-breadcrumbs/components/breadcrumb-list.component.d.ts +9 -0
  448. package/dist/types/components/post-internet-breadcrumbs/components/focus-trap.component.d.ts +12 -0
  449. package/dist/types/components/post-internet-breadcrumbs/components/middle-dropdown.component.d.ts +7 -0
  450. package/dist/types/components/post-internet-breadcrumbs/components/middle-links.component.d.ts +6 -0
  451. package/dist/types/components/post-internet-breadcrumbs/components/overlay.component.d.ts +16 -0
  452. package/dist/types/components/post-internet-breadcrumbs/post-internet-breadcrumbs.d.ts +45 -0
  453. package/dist/types/components/post-internet-footer/components/post-footer-block-address.component.d.ts +5 -0
  454. package/dist/types/components/post-internet-footer/components/post-footer-block-contact.component.d.ts +6 -0
  455. package/dist/types/components/post-internet-footer/components/post-footer-block-custom.component.d.ts +4 -0
  456. package/dist/types/components/post-internet-footer/components/post-footer-block-list.component.d.ts +5 -0
  457. package/dist/types/components/post-internet-footer/components/post-footer-block-socials.component.d.ts +5 -0
  458. package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +10 -0
  459. package/dist/types/components/post-internet-header/post-internet-header.d.ts +124 -0
  460. package/dist/types/components/post-klp-login-widget/klp-widget.controller.d.ts +3 -0
  461. package/dist/types/components/post-klp-login-widget/post-klp-login-widget.d.ts +10 -0
  462. package/dist/types/components/post-language-switch/components/post-language-switch-list.d.ts +6 -0
  463. package/dist/types/components/post-language-switch/post-language-switch.d.ts +27 -0
  464. package/dist/types/components/post-logo/logo-sprite.component.d.ts +4 -0
  465. package/dist/types/components/post-logo/post-logo.d.ts +11 -0
  466. package/dist/types/components/post-main-navigation/components/level-one-action.component.d.ts +8 -0
  467. package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +48 -0
  468. package/dist/types/components/post-meta-navigation/post-meta-navigation.d.ts +5 -0
  469. package/dist/types/components/post-search/post-search.d.ts +61 -0
  470. package/dist/types/components/post-skiplinks/post-skiplinks.d.ts +9 -0
  471. package/dist/types/components.d.ts +365 -0
  472. package/dist/types/data/store.d.ts +16 -0
  473. package/dist/types/index.d.ts +1 -0
  474. package/dist/types/models/breadcrumbs.model.d.ts +36 -0
  475. package/dist/types/models/coveo.model.d.ts +22 -0
  476. package/dist/types/models/footer.model.d.ts +48 -0
  477. package/dist/types/models/general.model.d.ts +46 -0
  478. package/dist/types/models/geocode.model.d.ts +52 -0
  479. package/dist/types/models/header.model.d.ts +163 -0
  480. package/dist/types/models/implementor.model.d.ts +22 -0
  481. package/dist/types/models/language.model.d.ts +6 -0
  482. package/dist/types/models/track-and-trace.model.d.ts +25 -0
  483. package/dist/types/services/config.service.d.ts +56 -0
  484. package/dist/types/services/language.service.d.ts +65 -0
  485. package/dist/types/services/route.service.d.ts +39 -0
  486. package/dist/types/services/search/coveo.service.d.ts +9 -0
  487. package/dist/types/services/search/coveo.settings.d.ts +2 -0
  488. package/dist/types/services/search/parcel.service.d.ts +28 -0
  489. package/dist/types/services/search/places.service.d.ts +24 -0
  490. package/dist/types/services/search/places.settings.d.ts +3 -0
  491. package/dist/types/services/search/search-utilities.d.ts +15 -0
  492. package/dist/types/services/search/search.service.d.ts +24 -0
  493. package/dist/types/services/ui.service.d.ts +23 -0
  494. package/dist/types/stencil-public-runtime.d.ts +1637 -0
  495. package/dist/types/tests/setup-tests.d.ts +0 -0
  496. package/dist/types/utils/highlighted.component.d.ts +4 -0
  497. package/dist/types/utils/if.component.d.ts +4 -0
  498. package/dist/types/utils/svg-icon.component.d.ts +4 -0
  499. package/dist/types/utils/svg-sprite.component.d.ts +1 -0
  500. package/dist/types/utils/utils.d.ts +8 -0
  501. package/loader/cdn.js +3 -0
  502. package/loader/index.cjs.js +3 -0
  503. package/loader/index.d.ts +21 -0
  504. package/loader/index.es2017.js +3 -0
  505. package/loader/index.js +4 -0
  506. package/loader/package.json +11 -0
  507. package/package.json +71 -0
  508. package/readme.md +15 -0
@@ -0,0 +1,362 @@
1
+ import { Host, h } from '@stencil/core';
2
+ import { throttle } from 'throttle-debounce';
3
+ import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';
4
+ import { state } from '../../data/store';
5
+ import { getSearchRedirectUrl, equalizeArrays } from '../../services/search/search.service';
6
+ import { getCoveoSuggestions } from '../../services/search/coveo.service';
7
+ import { getPlacesUrl, highlightPlacesString, queryPlaces, } from '../../services/search/places.service';
8
+ import { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';
9
+ import { HighlightedText } from '../../utils/highlighted.component';
10
+ import { SvgSprite } from '../../utils/svg-sprite.component';
11
+ import { SvgIcon } from '../../utils/svg-icon.component';
12
+ import { getParcelSuggestion } from '../../services/search/parcel.service';
13
+ import { If } from '../../utils/if.component';
14
+ export class PostSearch {
15
+ constructor() {
16
+ this.searchDropdownOpen = false;
17
+ this.coveoSuggestions = [];
18
+ this.placeSuggestions = [];
19
+ this.parcelSuggestion = null;
20
+ }
21
+ connectedCallback() {
22
+ this.throttledResize = throttle(300, () => this.handleResize());
23
+ window.addEventListener('resize', this.throttledResize, { passive: true });
24
+ }
25
+ disconnectedCallback() {
26
+ window.removeEventListener('resize', this.throttledResize);
27
+ clearAllBodyScrollLocks();
28
+ }
29
+ componentWillUpdate() {
30
+ // Check if search flyout got set to close
31
+ if (this.searchFlyout && !this.searchDropdownOpen) {
32
+ this.searchFlyout.classList.remove('open');
33
+ // Check if element has transition applied and whether user prefers to see animations or not
34
+ if (elementHasTransition(this.searchFlyout, 'transform') && !userPrefersReducedMotion()) {
35
+ // Wait for CSS transition 'transform' to end before continuing
36
+ return new Promise(resolve => {
37
+ if (this.searchFlyout === undefined) {
38
+ return resolve(true);
39
+ }
40
+ this.searchFlyout.addEventListener('transitionend', event => {
41
+ if (event.propertyName === 'transform') {
42
+ resolve(true);
43
+ }
44
+ });
45
+ });
46
+ }
47
+ }
48
+ }
49
+ componentDidUpdate() {
50
+ // Search flyout got set to open
51
+ if (this.searchFlyout && this.searchDropdownOpen) {
52
+ // Force browser to redraw/refresh DOM before adding 'open' class
53
+ this.searchFlyout.getBoundingClientRect();
54
+ this.searchFlyout.classList.add('open');
55
+ }
56
+ // Focus on the searchBox whenever the dropdown is opened
57
+ if (this.searchDropdownOpen && this.searchBox) {
58
+ this.searchBox.focus({ preventScroll: true });
59
+ }
60
+ }
61
+ /**
62
+ * Toggle the dropdown and optionally force an open/closed state
63
+ * @param force Boolean to force open/closed state
64
+ * @returns Boolean indicating open state of the component
65
+ */
66
+ async toggleDropdown(force) {
67
+ this.searchDropdownOpen =
68
+ force === undefined || typeof force !== 'boolean' ? !this.searchDropdownOpen : force;
69
+ this.dropdownToggled.emit({ open: this.searchDropdownOpen, element: this.host });
70
+ if (!this.searchDropdownOpen) {
71
+ // Reset suggestions when dropdown closes
72
+ this.coveoSuggestions = [];
73
+ this.placeSuggestions = [];
74
+ if (this.searchBox)
75
+ this.searchBox.value = '';
76
+ this.setFocus();
77
+ }
78
+ else {
79
+ // Get basic suggestions when dropdown opens
80
+ try {
81
+ this.coveoSuggestions = await getCoveoSuggestions('');
82
+ }
83
+ catch (_a) { }
84
+ }
85
+ this.setBodyScroll();
86
+ return this.searchDropdownOpen;
87
+ }
88
+ /**
89
+ * Sets the focus on the search button
90
+ */
91
+ async setFocus() {
92
+ const shadowRoot = this.host.shadowRoot;
93
+ if (shadowRoot === null) {
94
+ return;
95
+ }
96
+ const toggleButton = shadowRoot.querySelector('.search-button');
97
+ if (toggleButton) {
98
+ toggleButton.focus();
99
+ }
100
+ }
101
+ handleResize() {
102
+ // Only enable/disable body scroll on resize if the search dropdown is open, otherwise this could lead to side effects in other controls
103
+ if (this.searchDropdownOpen) {
104
+ this.setBodyScroll();
105
+ }
106
+ }
107
+ /**
108
+ * Disable or re-enable body scrolling, depending on whether search dropdown is open or closed in mobile view (width < 1024px)
109
+ */
110
+ setBodyScroll() {
111
+ if (this.searchDropdownOpen && window.innerWidth < 1024) {
112
+ disableBodyScroll(this.searchFlyout);
113
+ }
114
+ else {
115
+ enableBodyScroll(this.searchFlyout);
116
+ }
117
+ }
118
+ /**
119
+ * Fetch suggestions from all available sources
120
+ */
121
+ async handleSearchInput() {
122
+ var _a;
123
+ if (this.searchBox === undefined || ((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header.search) === undefined) {
124
+ return;
125
+ }
126
+ const query = this.searchBox.value.trim();
127
+ const [placeSuggestions, coveoSuggestions, trackAndTraceInfo] = await Promise.all([
128
+ queryPlaces(query),
129
+ getCoveoSuggestions(query),
130
+ getParcelSuggestion(query, state.localizedConfig.header.search),
131
+ ]);
132
+ // Parcel suggestion is more important than any other
133
+ if (trackAndTraceInfo) {
134
+ this.parcelSuggestion = trackAndTraceInfo;
135
+ this.placeSuggestions = [];
136
+ this.coveoSuggestions = [];
137
+ }
138
+ else {
139
+ [this.coveoSuggestions, this.placeSuggestions] = equalizeArrays(coveoSuggestions, placeSuggestions, 8);
140
+ }
141
+ this.deselectSuggestion();
142
+ }
143
+ /**
144
+ * Start search on enter
145
+ * @param event
146
+ */
147
+ handleKeyDown(event) {
148
+ var _a, _b, _c, _d;
149
+ if (this.searchFlyout === undefined) {
150
+ return;
151
+ }
152
+ let selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');
153
+ switch (event.key.toLowerCase()) {
154
+ case 'enter':
155
+ if (selectedSuggestion) {
156
+ const selectedHref = selectedSuggestion.getAttribute('href');
157
+ if (selectedHref !== null) {
158
+ window.location.href = selectedHref;
159
+ }
160
+ }
161
+ else {
162
+ this.startSearch();
163
+ }
164
+ break;
165
+ case 'arrowdown':
166
+ case 'arrowup':
167
+ const suggestions = this.searchFlyout.querySelectorAll('.suggestions > li > a');
168
+ this.deselectSuggestion();
169
+ if (event.key.toLowerCase() === 'arrowdown') {
170
+ if ((_b = (_a = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.parentElement) === null || _a === void 0 ? void 0 : _a.nextElementSibling) === null || _b === void 0 ? void 0 : _b.firstElementChild) {
171
+ // Select next suggestion if there's any, otherwise none will be selected
172
+ selectedSuggestion.parentElement.nextElementSibling.firstElementChild.classList.add('selected');
173
+ }
174
+ else {
175
+ // If there are any suggestions, select first suggestion in list
176
+ if (suggestions.length > 0) {
177
+ suggestions[0].classList.add('selected');
178
+ }
179
+ }
180
+ }
181
+ else if (event.key.toLowerCase() === 'arrowup') {
182
+ if ((_d = (_c = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.parentElement) === null || _c === void 0 ? void 0 : _c.previousElementSibling) === null || _d === void 0 ? void 0 : _d.firstElementChild) {
183
+ // Select previous suggestion if there's any, otherwise none will be selected
184
+ selectedSuggestion.parentElement.previousElementSibling.firstElementChild.classList.add('selected');
185
+ }
186
+ else {
187
+ // If there are any suggestions, select last suggestion in list
188
+ if (suggestions.length > 0) {
189
+ suggestions[suggestions.length - 1].classList.add('selected');
190
+ }
191
+ }
192
+ }
193
+ // Get the newly selected suggestion
194
+ selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');
195
+ const suggestedText = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.dataset.suggestionText;
196
+ // Update search box value with selected suggestion text
197
+ if (suggestedText !== undefined && this.searchBox) {
198
+ this.searchBox.value = suggestedText;
199
+ }
200
+ break;
201
+ }
202
+ }
203
+ /**
204
+ * Set selected suggestion on mouse enter
205
+ * @param event
206
+ */
207
+ handleMouseEnterSuggestion(event) {
208
+ this.deselectSuggestion();
209
+ // Set hovered suggestion element as selected
210
+ event.target.classList.add('selected');
211
+ }
212
+ /**
213
+ * Set selected suggestion on mouse enter
214
+ * @param event
215
+ */
216
+ handleMouseLeaveSuggestions() {
217
+ this.deselectSuggestion();
218
+ }
219
+ /**
220
+ * Deselect any previously selected suggestion
221
+ */
222
+ deselectSuggestion() {
223
+ if (this.searchFlyout === undefined)
224
+ return;
225
+ const selectedSuggestion = this.searchFlyout.querySelector('.suggestions .selected');
226
+ if (selectedSuggestion) {
227
+ selectedSuggestion.classList.remove('selected');
228
+ }
229
+ }
230
+ /**
231
+ * Redirect to the post search page
232
+ */
233
+ async startSearch() {
234
+ var _a;
235
+ if (this.searchBox && ((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header.search)) {
236
+ const redirectUrl = await getSearchRedirectUrl(this.searchBox.value.trim(), state.localizedConfig.header.search);
237
+ if (!redirectUrl)
238
+ return;
239
+ window.location.href = redirectUrl;
240
+ }
241
+ }
242
+ render() {
243
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
244
+ if (((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header) === undefined) {
245
+ return;
246
+ }
247
+ const { translations, search } = state.localizedConfig.header;
248
+ const showPortalRecommendations = ((_b = this.searchBox) === null || _b === void 0 ? void 0 : _b.value) === '' && ((_c = search.searchRecommendations) === null || _c === void 0 ? void 0 : _c.links.length) > 0;
249
+ return (h(Host, null, h(SvgSprite, null), h("div", { class: "search" }, h("button", { id: "post-internet-header-search-button", class: "search-button", type: "button", "aria-expanded": `${this.searchDropdownOpen}`, onClick: e => this.toggleDropdown(e) }, h("span", { class: "visually-hidden" }, this.searchDropdownOpen
250
+ ? translations.searchToggleExpanded
251
+ : translations.searchToggle), h(SvgIcon, { name: this.searchDropdownOpen ? 'pi-close' : 'pi-search' })), h(If, { condition: this.searchDropdownOpen }, h("div", { class: "flyout", ref: e => (this.searchFlyout = e) }, h("div", { class: "container box" }, h("div", { class: "row" }, h("div", { class: "col-xs-12 col-md-10 col-lg-8" }, h("div", { class: "form-group form-floating" }, h("input", { type: "text", id: "searchBox", class: "form-control form-control-lg", placeholder: translations.flyoutSearchBoxFloatingLabel, autocomplete: "off", ref: el => (this.searchBox = el), onInput: () => this.handleSearchInput(), onKeyDown: e => this.handleKeyDown(e) }), h("label", { htmlFor: "searchBox" }, translations.flyoutSearchBoxFloatingLabel), h("button", { onClick: () => this.startSearch(), class: "nav-link start-search-button" }, h("span", { class: "visually-hidden" }, translations.searchSubmit), h(SvgIcon, { name: "pi-search" }))), showPortalRecommendations && (h("h2", { class: "bold" }, search.searchRecommendations.title)), h("ul", { class: "suggestions no-list", onMouseLeave: () => this.handleMouseLeaveSuggestions() }, showPortalRecommendations &&
252
+ search.searchRecommendations.links.map(recommendation => (h("li", { key: recommendation.href }, h("a", { class: "nav-link search-recommendation", href: new URL(recommendation.href, 'https://post.ch').href, "data-suggestion-text": recommendation.label, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h("span", { class: "search-recommendation__icon", innerHTML: recommendation.inlineSvg }), h("span", null, recommendation.label))))), this.parcelSuggestion && this.parcelSuggestion.ok && (h("li", null, h("a", { class: "nav-link parcel-suggestion", href: this.parcelSuggestion.url, "data-suggestion-text": (_d = this.searchBox) === null || _d === void 0 ? void 0 : _d.value, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-letter-parcel" }), h("span", { class: "bold" }, (_f = (_e = this.parcelSuggestion) === null || _e === void 0 ? void 0 : _e.sending) === null || _f === void 0 ? void 0 :
253
+ _f.id, ":\u00A0"), h("span", null, (_h = (_g = this.parcelSuggestion) === null || _g === void 0 ? void 0 : _g.sending) === null || _h === void 0 ? void 0 :
254
+ _h.product, ",", ' ', (_k = (_j = this.parcelSuggestion) === null || _j === void 0 ? void 0 : _j.sending) === null || _k === void 0 ? void 0 :
255
+ _k.recipient.zipcode, ' ', (_m = (_l = this.parcelSuggestion) === null || _l === void 0 ? void 0 : _l.sending) === null || _m === void 0 ? void 0 :
256
+ _m.recipient.city, ",", ' ', (_p = (_o = this.parcelSuggestion) === null || _o === void 0 ? void 0 : _o.sending) === null || _p === void 0 ? void 0 :
257
+ _p.state)))), !showPortalRecommendations &&
258
+ this.coveoSuggestions &&
259
+ this.coveoSuggestions.map(suggestion => (h("li", { key: suggestion.objectId }, h("a", { class: "nav-link", href: suggestion.redirectUrl, "data-suggestion-text": suggestion.expression, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-search" }), h(HighlightedText, { text: suggestion.highlighted }))))), !showPortalRecommendations &&
260
+ this.placeSuggestions &&
261
+ this.placeSuggestions.map(suggestion => {
262
+ var _a, _b;
263
+ return (h("li", { key: suggestion.id }, h("a", { class: "nav-link", href: getPlacesUrl(suggestion), "data-suggestion-text": suggestion.name, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-place" }), h(HighlightedText, { text: highlightPlacesString((_b = (_a = this.searchBox) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim(), suggestion.name) }))));
264
+ }))))))))));
265
+ }
266
+ static get is() { return "post-search"; }
267
+ static get encapsulation() { return "shadow"; }
268
+ static get originalStyleUrls() {
269
+ return {
270
+ "$": ["post-search.scss"]
271
+ };
272
+ }
273
+ static get styleUrls() {
274
+ return {
275
+ "$": ["post-search.css"]
276
+ };
277
+ }
278
+ static get states() {
279
+ return {
280
+ "searchDropdownOpen": {},
281
+ "coveoSuggestions": {},
282
+ "placeSuggestions": {},
283
+ "parcelSuggestion": {}
284
+ };
285
+ }
286
+ static get events() {
287
+ return [{
288
+ "method": "dropdownToggled",
289
+ "name": "dropdownToggled",
290
+ "bubbles": true,
291
+ "cancelable": true,
292
+ "composed": true,
293
+ "docs": {
294
+ "tags": [],
295
+ "text": ""
296
+ },
297
+ "complexType": {
298
+ "original": "DropdownEvent",
299
+ "resolved": "{ open: boolean; element: DropdownElement; }",
300
+ "references": {
301
+ "DropdownEvent": {
302
+ "location": "import",
303
+ "path": "../../models/header.model"
304
+ }
305
+ }
306
+ }
307
+ }];
308
+ }
309
+ static get methods() {
310
+ return {
311
+ "toggleDropdown": {
312
+ "complexType": {
313
+ "signature": "(force?: unknown) => Promise<boolean>",
314
+ "parameters": [{
315
+ "tags": [{
316
+ "name": "param",
317
+ "text": "force Boolean to force open/closed state"
318
+ }],
319
+ "text": "Boolean to force open/closed state"
320
+ }],
321
+ "references": {
322
+ "Promise": {
323
+ "location": "global"
324
+ }
325
+ },
326
+ "return": "Promise<boolean>"
327
+ },
328
+ "docs": {
329
+ "text": "Toggle the dropdown and optionally force an open/closed state",
330
+ "tags": [{
331
+ "name": "param",
332
+ "text": "force Boolean to force open/closed state"
333
+ }, {
334
+ "name": "returns",
335
+ "text": "Boolean indicating open state of the component"
336
+ }]
337
+ }
338
+ },
339
+ "setFocus": {
340
+ "complexType": {
341
+ "signature": "() => Promise<void>",
342
+ "parameters": [],
343
+ "references": {
344
+ "Promise": {
345
+ "location": "global"
346
+ },
347
+ "HTMLElement": {
348
+ "location": "global"
349
+ }
350
+ },
351
+ "return": "Promise<void>"
352
+ },
353
+ "docs": {
354
+ "text": "Sets the focus on the search button",
355
+ "tags": []
356
+ }
357
+ }
358
+ };
359
+ }
360
+ static get elementRef() { return "host"; }
361
+ }
362
+ //# sourceMappingURL=post-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-search.js","sourceRoot":"","sources":["../../../../src/components/post-search/post-search.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, State, Event, EventEmitter, Method, Element } from '@stencil/core';\r\nimport { throttle } from 'throttle-debounce';\r\nimport { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\r\nimport { state } from '../../data/store';\r\nimport { CoveoCompletion } from '../../models/coveo.model';\r\nimport { GeocodeLocation } from '../../models/geocode.model';\r\nimport {\r\n DropdownElement,\r\n DropdownEvent,\r\n HasDropdown,\r\n IsFocusable,\r\n} from '../../models/header.model';\r\nimport { getSearchRedirectUrl, equalizeArrays } from '../../services/search/search.service';\r\nimport { getCoveoSuggestions } from '../../services/search/coveo.service';\r\nimport {\r\n getPlacesUrl,\r\n highlightPlacesString,\r\n queryPlaces,\r\n} from '../../services/search/places.service';\r\nimport { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';\r\nimport { HighlightedText } from '../../utils/highlighted.component';\r\nimport { SvgSprite } from '../../utils/svg-sprite.component';\r\nimport { SvgIcon } from '../../utils/svg-icon.component';\r\nimport { TrackAndTraceInfo } from '../../models/track-and-trace.model';\r\nimport { getParcelSuggestion } from '../../services/search/parcel.service';\r\nimport { If } from '../../utils/if.component';\r\n\r\n@Component({\r\n tag: 'post-search',\r\n styleUrl: 'post-search.scss',\r\n shadow: true,\r\n})\r\nexport class PostSearch implements HasDropdown, IsFocusable {\r\n @State() searchDropdownOpen = false;\r\n @State() coveoSuggestions: CoveoCompletion[] = [];\r\n @State() placeSuggestions: GeocodeLocation[] = [];\r\n @State() parcelSuggestion: (TrackAndTraceInfo & { url: string }) | null = null;\r\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\r\n @Element() host: DropdownElement;\r\n private searchBox?: HTMLInputElement;\r\n private searchFlyout: HTMLElement | undefined;\r\n private throttledResize: throttle<() => void>;\r\n\r\n connectedCallback() {\r\n this.throttledResize = throttle(300, () => this.handleResize());\r\n window.addEventListener('resize', this.throttledResize, { passive: true });\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.throttledResize);\r\n clearAllBodyScrollLocks();\r\n }\r\n\r\n componentWillUpdate() {\r\n // Check if search flyout got set to close\r\n if (this.searchFlyout && !this.searchDropdownOpen) {\r\n this.searchFlyout.classList.remove('open');\r\n\r\n // Check if element has transition applied and whether user prefers to see animations or not\r\n if (elementHasTransition(this.searchFlyout, 'transform') && !userPrefersReducedMotion()) {\r\n // Wait for CSS transition 'transform' to end before continuing\r\n return new Promise<boolean>(resolve => {\r\n if (this.searchFlyout === undefined) {\r\n return resolve(true);\r\n }\r\n\r\n this.searchFlyout.addEventListener('transitionend', event => {\r\n if (event.propertyName === 'transform') {\r\n resolve(true);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n // Search flyout got set to open\r\n if (this.searchFlyout && this.searchDropdownOpen) {\r\n // Force browser to redraw/refresh DOM before adding 'open' class\r\n this.searchFlyout.getBoundingClientRect();\r\n this.searchFlyout.classList.add('open');\r\n }\r\n\r\n // Focus on the searchBox whenever the dropdown is opened\r\n if (this.searchDropdownOpen && this.searchBox) {\r\n this.searchBox.focus({ preventScroll: true });\r\n }\r\n }\r\n\r\n public async toggleDropdown(event?: Event): Promise<boolean>;\r\n public async toggleDropdown(force?: boolean): Promise<boolean>;\r\n\r\n /**\r\n * Toggle the dropdown and optionally force an open/closed state\r\n * @param force Boolean to force open/closed state\r\n * @returns Boolean indicating open state of the component\r\n */\r\n @Method()\r\n async toggleDropdown(force?: unknown) {\r\n this.searchDropdownOpen =\r\n force === undefined || typeof force !== 'boolean' ? !this.searchDropdownOpen : force;\r\n this.dropdownToggled.emit({ open: this.searchDropdownOpen, element: this.host });\r\n\r\n if (!this.searchDropdownOpen) {\r\n // Reset suggestions when dropdown closes\r\n this.coveoSuggestions = [];\r\n this.placeSuggestions = [];\r\n if (this.searchBox) this.searchBox.value = '';\r\n this.setFocus();\r\n } else {\r\n // Get basic suggestions when dropdown opens\r\n try {\r\n this.coveoSuggestions = await getCoveoSuggestions('');\r\n } catch {}\r\n }\r\n\r\n this.setBodyScroll();\r\n\r\n return this.searchDropdownOpen;\r\n }\r\n\r\n /**\r\n * Sets the focus on the search button\r\n */\r\n @Method()\r\n public async setFocus() {\r\n const shadowRoot = this.host.shadowRoot;\r\n if (shadowRoot === null) {\r\n return;\r\n }\r\n const toggleButton = shadowRoot.querySelector<HTMLElement>('.search-button');\r\n if (toggleButton) {\r\n toggleButton.focus();\r\n }\r\n }\r\n\r\n private handleResize() {\r\n // Only enable/disable body scroll on resize if the search dropdown is open, otherwise this could lead to side effects in other controls\r\n if (this.searchDropdownOpen) {\r\n this.setBodyScroll();\r\n }\r\n }\r\n\r\n /**\r\n * Disable or re-enable body scrolling, depending on whether search dropdown is open or closed in mobile view (width < 1024px)\r\n */\r\n private setBodyScroll() {\r\n if (this.searchDropdownOpen && window.innerWidth < 1024) {\r\n disableBodyScroll(this.searchFlyout);\r\n } else {\r\n enableBodyScroll(this.searchFlyout);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch suggestions from all available sources\r\n */\r\n private async handleSearchInput() {\r\n if (this.searchBox === undefined || state.localizedConfig?.header.search === undefined) {\r\n return;\r\n }\r\n const query = this.searchBox.value.trim();\r\n\r\n const [placeSuggestions, coveoSuggestions, trackAndTraceInfo] = await Promise.all([\r\n queryPlaces(query),\r\n getCoveoSuggestions(query),\r\n getParcelSuggestion(query, state.localizedConfig.header.search),\r\n ]);\r\n\r\n // Parcel suggestion is more important than any other\r\n if (trackAndTraceInfo) {\r\n this.parcelSuggestion = trackAndTraceInfo;\r\n this.placeSuggestions = [];\r\n this.coveoSuggestions = [];\r\n } else {\r\n [this.coveoSuggestions, this.placeSuggestions] = equalizeArrays(\r\n coveoSuggestions,\r\n placeSuggestions,\r\n 8,\r\n );\r\n }\r\n\r\n this.deselectSuggestion();\r\n }\r\n\r\n /**\r\n * Start search on enter\r\n * @param event\r\n */\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (this.searchFlyout === undefined) {\r\n return;\r\n }\r\n\r\n let selectedSuggestion = this.searchFlyout.querySelector<HTMLElement>(\r\n '.suggestions > li > a.selected',\r\n );\r\n\r\n switch (event.key.toLowerCase()) {\r\n case 'enter':\r\n if (selectedSuggestion) {\r\n const selectedHref = selectedSuggestion.getAttribute('href');\r\n if (selectedHref !== null) {\r\n window.location.href = selectedHref;\r\n }\r\n } else {\r\n this.startSearch();\r\n }\r\n\r\n break;\r\n case 'arrowdown':\r\n case 'arrowup':\r\n const suggestions = this.searchFlyout.querySelectorAll('.suggestions > li > a');\r\n\r\n this.deselectSuggestion();\r\n\r\n if (event.key.toLowerCase() === 'arrowdown') {\r\n if (selectedSuggestion?.parentElement?.nextElementSibling?.firstElementChild) {\r\n // Select next suggestion if there's any, otherwise none will be selected\r\n selectedSuggestion.parentElement.nextElementSibling.firstElementChild.classList.add(\r\n 'selected',\r\n );\r\n } else {\r\n // If there are any suggestions, select first suggestion in list\r\n if (suggestions.length > 0) {\r\n suggestions[0].classList.add('selected');\r\n }\r\n }\r\n } else if (event.key.toLowerCase() === 'arrowup') {\r\n if (selectedSuggestion?.parentElement?.previousElementSibling?.firstElementChild) {\r\n // Select previous suggestion if there's any, otherwise none will be selected\r\n\r\n selectedSuggestion.parentElement.previousElementSibling.firstElementChild.classList.add(\r\n 'selected',\r\n );\r\n } else {\r\n // If there are any suggestions, select last suggestion in list\r\n if (suggestions.length > 0) {\r\n suggestions[suggestions.length - 1].classList.add('selected');\r\n }\r\n }\r\n }\r\n\r\n // Get the newly selected suggestion\r\n selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');\r\n const suggestedText = selectedSuggestion?.dataset.suggestionText;\r\n\r\n // Update search box value with selected suggestion text\r\n if (suggestedText !== undefined && this.searchBox) {\r\n this.searchBox.value = suggestedText;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Set selected suggestion on mouse enter\r\n * @param event\r\n */\r\n private handleMouseEnterSuggestion(event: MouseEvent) {\r\n this.deselectSuggestion();\r\n\r\n // Set hovered suggestion element as selected\r\n (event.target as HTMLElement).classList.add('selected');\r\n }\r\n\r\n /**\r\n * Set selected suggestion on mouse enter\r\n * @param event\r\n */\r\n private handleMouseLeaveSuggestions() {\r\n this.deselectSuggestion();\r\n }\r\n\r\n /**\r\n * Deselect any previously selected suggestion\r\n */\r\n private deselectSuggestion() {\r\n if (this.searchFlyout === undefined) return;\r\n\r\n const selectedSuggestion = this.searchFlyout.querySelector('.suggestions .selected');\r\n\r\n if (selectedSuggestion) {\r\n selectedSuggestion.classList.remove('selected');\r\n }\r\n }\r\n\r\n /**\r\n * Redirect to the post search page\r\n */\r\n private async startSearch() {\r\n if (this.searchBox && state.localizedConfig?.header.search) {\r\n const redirectUrl = await getSearchRedirectUrl(\r\n this.searchBox.value.trim(),\r\n state.localizedConfig.header.search,\r\n );\r\n if (!redirectUrl) return;\r\n window.location.href = redirectUrl;\r\n }\r\n }\r\n\r\n render() {\r\n if (state.localizedConfig?.header === undefined) {\r\n return;\r\n }\r\n const { translations, search } = state.localizedConfig.header;\r\n const showPortalRecommendations =\r\n this.searchBox?.value === '' && search.searchRecommendations?.links.length > 0;\r\n\r\n return (\r\n <Host>\r\n <SvgSprite />\r\n <div class=\"search\">\r\n <button\r\n id=\"post-internet-header-search-button\"\r\n class=\"search-button\"\r\n type=\"button\"\r\n aria-expanded={`${this.searchDropdownOpen}`}\r\n onClick={e => this.toggleDropdown(e)}\r\n >\r\n <span class=\"visually-hidden\">\r\n {this.searchDropdownOpen\r\n ? translations.searchToggleExpanded\r\n : translations.searchToggle}\r\n </span>\r\n <SvgIcon name={this.searchDropdownOpen ? 'pi-close' : 'pi-search'} />\r\n </button>\r\n <If condition={this.searchDropdownOpen}>\r\n <div class=\"flyout\" ref={e => (this.searchFlyout = e)}>\r\n <div class=\"container box\">\r\n <div class=\"row\">\r\n <div class=\"col-xs-12 col-md-10 col-lg-8\">\r\n <div class=\"form-group form-floating\">\r\n <input\r\n type=\"text\"\r\n id=\"searchBox\"\r\n class=\"form-control form-control-lg\"\r\n placeholder={translations.flyoutSearchBoxFloatingLabel}\r\n autocomplete=\"off\"\r\n ref={el => (this.searchBox = el)}\r\n onInput={() => this.handleSearchInput()}\r\n onKeyDown={e => this.handleKeyDown(e)}\r\n />\r\n <label htmlFor=\"searchBox\">{translations.flyoutSearchBoxFloatingLabel}</label>\r\n <button\r\n onClick={() => this.startSearch()}\r\n class=\"nav-link start-search-button\"\r\n >\r\n <span class=\"visually-hidden\">{translations.searchSubmit}</span>\r\n <SvgIcon name=\"pi-search\" />\r\n </button>\r\n </div>\r\n {showPortalRecommendations && (\r\n <h2 class=\"bold\">{search.searchRecommendations.title}</h2>\r\n )}\r\n <ul\r\n class=\"suggestions no-list\"\r\n onMouseLeave={() => this.handleMouseLeaveSuggestions()}\r\n >\r\n {showPortalRecommendations &&\r\n search.searchRecommendations.links.map(recommendation => (\r\n <li key={recommendation.href}>\r\n <a\r\n class=\"nav-link search-recommendation\"\r\n href={new URL(recommendation.href, 'https://post.ch').href}\r\n data-suggestion-text={recommendation.label}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <span\r\n class=\"search-recommendation__icon\"\r\n innerHTML={recommendation.inlineSvg}\r\n ></span>\r\n <span>{recommendation.label}</span>\r\n </a>\r\n </li>\r\n ))}\r\n {this.parcelSuggestion && this.parcelSuggestion.ok && (\r\n <li>\r\n <a\r\n class=\"nav-link parcel-suggestion\"\r\n href={this.parcelSuggestion.url}\r\n data-suggestion-text={this.searchBox?.value}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-letter-parcel\" />\r\n <span class=\"bold\">{this.parcelSuggestion?.sending?.id}:&nbsp;</span>\r\n <span>\r\n {this.parcelSuggestion?.sending?.product},{' '}\r\n {this.parcelSuggestion?.sending?.recipient.zipcode}{' '}\r\n {this.parcelSuggestion?.sending?.recipient.city},{' '}\r\n {this.parcelSuggestion?.sending?.state}\r\n </span>\r\n </a>\r\n </li>\r\n )}\r\n {!showPortalRecommendations &&\r\n this.coveoSuggestions &&\r\n this.coveoSuggestions.map(suggestion => (\r\n <li key={suggestion.objectId}>\r\n <a\r\n class=\"nav-link\"\r\n href={suggestion.redirectUrl}\r\n data-suggestion-text={suggestion.expression}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-search\" />\r\n <HighlightedText text={suggestion.highlighted} />\r\n </a>\r\n </li>\r\n ))}\r\n {!showPortalRecommendations &&\r\n this.placeSuggestions &&\r\n this.placeSuggestions.map(suggestion => (\r\n <li key={suggestion.id}>\r\n <a\r\n class=\"nav-link\"\r\n href={getPlacesUrl(suggestion)}\r\n data-suggestion-text={suggestion.name}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-place\" />\r\n <HighlightedText\r\n text={highlightPlacesString(\r\n this.searchBox?.value?.trim(),\r\n suggestion.name,\r\n )}\r\n />\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </If>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .skiplinks a {
6
+ position: absolute;
7
+ top: 0.5rem;
8
+ left: 0.5rem;
9
+ clip: rect(0 0 0 0);
10
+ width: 1px;
11
+ overflow: hidden;
12
+ display: flex;
13
+ align-items: center;
14
+ padding: 0.25rem;
15
+ background: white;
16
+ }
17
+ .skiplinks a:focus-visible {
18
+ clip: unset;
19
+ width: auto;
20
+ }
@@ -0,0 +1,51 @@
1
+ import { Host, h } from '@stencil/core';
2
+ import { state } from '../../data/store';
3
+ import { translate } from '../../services/language.service';
4
+ import { SvgIcon } from '../../utils/svg-icon.component';
5
+ export class PostSkiplinks {
6
+ getMainId() {
7
+ var _a;
8
+ return (_a = document.querySelector('main[id]')) === null || _a === void 0 ? void 0 : _a.getAttribute('id');
9
+ }
10
+ setFocus(tagname) {
11
+ const rootHost = this.host.closest('.post-internet-header');
12
+ if (!rootHost) {
13
+ return;
14
+ }
15
+ const focusable = rootHost.querySelector(tagname);
16
+ if (focusable) {
17
+ focusable.setFocus();
18
+ }
19
+ }
20
+ focusMain() {
21
+ this.setFocus('post-main-navigation');
22
+ }
23
+ focusSearch() {
24
+ this.setFocus('post-search');
25
+ }
26
+ focusLogin() {
27
+ this.setFocus('post-klp-login-widget');
28
+ }
29
+ render() {
30
+ var _a;
31
+ const config = (_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header;
32
+ const mainId = this.getMainId();
33
+ if (config === undefined) {
34
+ return;
35
+ }
36
+ return (h(Host, null, h("nav", { class: "skiplinks" }, h("ul", { class: "no-list" }, h("li", null, h("a", { class: "nav-link", href: config.logo.logoLink, accessKey: "0", title: "[ALT + 0]" }, h("span", null, config.logo.logoLinkTitle), h(SvgIcon, { name: "pi-pointy-arrow-right" }))), h("li", null, h("a", { class: "nav-link", href: "#post-internet-header-main-navigation", accessKey: "1", title: "[ALT + 1]", onClick: () => this.focusMain() }, h("span", null, config.translations.navMainAriaLabel), h(SvgIcon, { name: "pi-pointy-arrow-right" }))), mainId ? (h("li", null, h("a", { class: "nav-link", href: `#${mainId}`, accessKey: "2", title: "[ALT + 2]" }, h("span", null, translate('Go to main content')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null, state.search ? (h("li", null, h("a", { class: "nav-link", href: "#post-internet-header-search-button", accessKey: "3", title: "[ALT + 3]", onClick: () => this.focusSearch() }, h("span", null, translate('Go to search')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null, state.login ? (h("li", null, h("a", { class: "nav-link", href: "#post-klp-login-widget", accessKey: "4", title: "[ALT + 4]", onClick: () => this.focusLogin() }, h("span", null, translate('Go to login')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null))));
37
+ }
38
+ static get is() { return "post-skiplinks"; }
39
+ static get originalStyleUrls() {
40
+ return {
41
+ "$": ["post-skiplinks.scss"]
42
+ };
43
+ }
44
+ static get styleUrls() {
45
+ return {
46
+ "$": ["post-skiplinks.css"]
47
+ };
48
+ }
49
+ static get elementRef() { return "host"; }
50
+ }
51
+ //# sourceMappingURL=post-skiplinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-skiplinks.js","sourceRoot":"","sources":["../../../../src/components/post-skiplinks/post-skiplinks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Element } from '@stencil/core';\r\nimport { state } from '../../data/store';\r\nimport { FocusableElement } from '../../models/header.model';\r\nimport { translate } from '../../services/language.service';\r\nimport { SvgIcon } from '../../utils/svg-icon.component';\r\n\r\n@Component({\r\n tag: 'post-skiplinks',\r\n styleUrl: 'post-skiplinks.scss',\r\n shadow: false,\r\n})\r\nexport class PostSkiplinks {\r\n @Element() host: HTMLElement;\r\n\r\n private getMainId() {\r\n return document.querySelector('main[id]')?.getAttribute('id');\r\n }\r\n\r\n private setFocus(tagname: string) {\r\n const rootHost = this.host.closest('.post-internet-header');\r\n if (!rootHost) {\r\n return;\r\n }\r\n\r\n const focusable = rootHost.querySelector<FocusableElement>(tagname);\r\n if (focusable) {\r\n focusable.setFocus();\r\n }\r\n }\r\n\r\n private focusMain() {\r\n this.setFocus('post-main-navigation');\r\n }\r\n\r\n private focusSearch() {\r\n this.setFocus('post-search');\r\n }\r\n\r\n private focusLogin() {\r\n this.setFocus('post-klp-login-widget');\r\n }\r\n\r\n render() {\r\n const config = state.localizedConfig?.header;\r\n const mainId = this.getMainId();\r\n\r\n if (config === undefined) {\r\n return;\r\n }\r\n\r\n return (\r\n <Host>\r\n <nav class=\"skiplinks\">\r\n <ul class=\"no-list\">\r\n <li>\r\n <a class=\"nav-link\" href={config.logo.logoLink} accessKey=\"0\" title=\"[ALT + 0]\">\r\n <span>{config.logo.logoLinkTitle}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-internet-header-main-navigation\"\r\n accessKey=\"1\"\r\n title=\"[ALT + 1]\"\r\n onClick={() => this.focusMain()}\r\n >\r\n <span>{config.translations.navMainAriaLabel}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n {mainId ? (\r\n <li>\r\n <a class=\"nav-link\" href={`#${mainId}`} accessKey=\"2\" title=\"[ALT + 2]\">\r\n <span>{translate('Go to main content')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n {state.search ? (\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-internet-header-search-button\"\r\n accessKey=\"3\"\r\n title=\"[ALT + 3]\"\r\n onClick={() => this.focusSearch()}\r\n >\r\n <span>{translate('Go to search')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n {state.login ? (\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-klp-login-widget\"\r\n accessKey=\"4\"\r\n title=\"[ALT + 4]\"\r\n onClick={() => this.focusLogin()}\r\n >\r\n <span>{translate('Go to login')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n </ul>\r\n </nav>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,11 @@
1
+ import { createStore } from '@stencil/store';
2
+ export const { state, reset, dispose } = createStore({
3
+ projectId: null,
4
+ currentLanguage: null,
5
+ localizedConfig: null,
6
+ environment: 'prod',
7
+ search: true,
8
+ login: true,
9
+ meta: true,
10
+ });
11
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/data/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkB7C,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAAc;EAChE,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,IAAI;EACrB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;CACX,CAAC,CAAC","sourcesContent":["import { createStore } from '@stencil/store';\r\nimport { Environment, ILocalizedConfig, ILocalizedCustomConfig } from '../models/general.model';\r\nimport { NavMainEntity } from '../models/header.model';\r\nimport { IAvailableLanguage } from '../models/language.model';\r\n\r\nexport interface HeaderState {\r\n localizedConfig: ILocalizedConfig | null;\r\n currentLanguage: string | null;\r\n projectId: string | null;\r\n environment: Environment;\r\n search: boolean;\r\n login: boolean;\r\n meta: boolean;\r\n languageSwitchOverrides?: IAvailableLanguage[];\r\n localizedCustomConfig?: ILocalizedCustomConfig;\r\n osFlyoutOverrides?: NavMainEntity;\r\n}\r\n\r\nexport const { state, reset, dispose } = createStore<HeaderState>({\r\n projectId: null,\r\n currentLanguage: null,\r\n localizedConfig: null,\r\n environment: 'prod',\r\n search: true,\r\n login: true,\r\n meta: true,\r\n});\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"","sourcesContent":["export { Components, JSX } from './components';\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=breadcrumbs.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.model.js","sourceRoot":"","sources":["../../../src/models/breadcrumbs.model.ts"],"names":[],"mappings":"","sourcesContent":["import { IIconConfig } from './header.model';\r\n\r\nexport interface IBreadcrumbConfig {\r\n a11yLabel: string;\r\n asWebComponent: boolean;\r\n buttons: IBreadcrumbButton[];\r\n isCentered: boolean;\r\n items: IBreadcrumbItem[];\r\n svgIconArrowRightSmall: IIconConfig;\r\n svgIconHome: IIconConfig;\r\n truncateButtonText: string;\r\n classes: any[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface IBreadcrumbButton {\r\n svgIcon: IIconConfig;\r\n text: string;\r\n overlay: IBreadcrumbOverlay;\r\n classes: string[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface IBreadcrumbOverlay {\r\n id: string;\r\n target: string;\r\n closeText: string;\r\n closeIcon: IIconConfig;\r\n classes: string[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface AdditionalAttribute {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface IBreadcrumbItem {\r\n text: string;\r\n url: string;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=coveo.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coveo.model.js","sourceRoot":"","sources":["../../../src/models/coveo.model.ts"],"names":[],"mappings":"","sourcesContent":["import { Environment } from './general.model';\r\n\r\nexport interface CoveoResponse {\r\n completions: CoveoCompletion[];\r\n responseId: string;\r\n}\r\n\r\nexport interface CoveoCompletion {\r\n expression: string;\r\n score: number;\r\n highlighted: string;\r\n executableConfidence: number;\r\n objectId: string;\r\n redirectUrl?: string;\r\n}\r\n\r\nexport interface CoveoOptions {\r\n url: string;\r\n environment: {\r\n [key in Environment]: {\r\n organisation: string;\r\n token: string;\r\n };\r\n };\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=footer.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.model.js","sourceRoot":"","sources":["../../../src/models/footer.model.ts"],"names":[],"mappings":"","sourcesContent":["export interface IFooterConfig {\r\n title: string;\r\n asWebComponent: boolean;\r\n osLinks?: { serviceName: string; links: LinksEntity[] }; // type?\r\n block: BlockEntity[];\r\n entry: {\r\n text: string;\r\n };\r\n links: LinksEntity[];\r\n classes: string[];\r\n additionalAttributes: string[]; // string?\r\n}\r\n\r\nexport interface BlockEntity {\r\n columnType: string;\r\n title: string;\r\n links?: LinksEntity[];\r\n content?: ContentEntity[];\r\n}\r\n\r\nexport interface LinksEntity {\r\n url: string;\r\n target: string;\r\n text?: string;\r\n title?: string;\r\n name?: string;\r\n icon?: string;\r\n classes: string[];\r\n additionalAttributes: unknown[]; // {[key:string]:string}?\r\n}\r\n\r\nexport interface ContentEntity {\r\n address: string;\r\n describe: string;\r\n hours: string;\r\n links: LinksEntity[];\r\n name: string;\r\n number: string;\r\n text: string;\r\n title: string;\r\n}\r\n\r\nexport interface ICustomFooterConfig {\r\n block: CustomBlockEntity;\r\n}\r\n\r\nexport interface CustomBlockEntity {\r\n title: string;\r\n links?: LinksEntity[];\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=general.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general.model.js","sourceRoot":"","sources":["../../../src/models/general.model.ts"],"names":[],"mappings":"","sourcesContent":["import { IHeaderConfig, ICustomHeaderConfig, NavMainEntity } from './header.model';\r\nimport { IBreadcrumbConfig } from './breadcrumbs.model';\r\nimport { IFooterConfig, ICustomFooterConfig } from './footer.model';\r\n\r\ndeclare global {\r\n interface Window {\r\n OPPklpWidget: any;\r\n klpWidgetDev: any;\r\n jQuery: any;\r\n $: any;\r\n SockJS: any;\r\n }\r\n}\r\nexport interface IPortalConfig {\r\n de?: ILocalizedConfig;\r\n fr?: ILocalizedConfig;\r\n it?: ILocalizedConfig;\r\n en?: ILocalizedConfig;\r\n}\r\n\r\nexport interface ILocalizedConfig {\r\n header: IHeaderConfig;\r\n breadcrumb: IBreadcrumbConfig;\r\n footer?: IFooterConfig;\r\n}\r\n\r\nexport interface ICustomConfig {\r\n de?: ILocalizedCustomConfig;\r\n fr?: ILocalizedCustomConfig;\r\n it?: ILocalizedCustomConfig;\r\n en?: ILocalizedCustomConfig;\r\n}\r\n\r\nexport interface ILocalizedCustomConfig {\r\n header: ICustomHeaderConfig;\r\n footer?: ICustomFooterConfig;\r\n}\r\n\r\nexport type Environment = 'int01' | 'int02' | 'prod';\r\n\r\nexport type ActiveRouteProp = 'auto' | 'exact' | false | string;\r\n\r\nexport type LocalizedConfigParameters = {\r\n projectId: string;\r\n environment: Environment;\r\n language?: string;\r\n mapMyPost?: boolean;\r\n cookieKey?: string;\r\n localStorageKey?: string;\r\n activeRouteProp?: ActiveRouteProp;\r\n localizedCustomConfig?: ILocalizedCustomConfig;\r\n osFlyoutOverrides?: NavMainEntity;\r\n};\r\n"]}
@@ -0,0 +1,10 @@
1
+ export var GeocodeResponseType;
2
+ (function (GeocodeResponseType) {
3
+ GeocodeResponseType["Region"] = "region";
4
+ GeocodeResponseType["City"] = "city";
5
+ GeocodeResponseType["Zip"] = "zip";
6
+ GeocodeResponseType["Locality"] = "locality";
7
+ GeocodeResponseType["Address"] = "address";
8
+ GeocodeResponseType["Poi"] = "poi";
9
+ })(GeocodeResponseType || (GeocodeResponseType = {}));
10
+ //# sourceMappingURL=geocode.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geocode.model.js","sourceRoot":"","sources":["../../../src/models/geocode.model.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAN,IAAY,mBAOX;AAPD,WAAY,mBAAmB;EAC7B,wCAAiB,CAAA;EACjB,oCAAa,CAAA;EACb,kCAAW,CAAA;EACX,4CAAqB,CAAA;EACrB,0CAAmB,CAAA;EACnB,kCAAW,CAAA;AACb,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,QAO9B","sourcesContent":["export interface GeocodeResponse {\r\n ok: boolean;\r\n info: string;\r\n time: string;\r\n note: string;\r\n count: number;\r\n locations: GeocodeLocation[];\r\n}\r\n\r\nexport interface GeocodeLocation {\r\n id?: string;\r\n name: string;\r\n type: string;\r\n subtype?: string;\r\n pt: [number, number];\r\n bbox: [number, number, number, number];\r\n}\r\n\r\nexport enum GeocodeResponseType {\r\n Region = 'region',\r\n City = 'city',\r\n Zip = 'zip',\r\n Locality = 'locality',\r\n Address = 'address',\r\n Poi = 'poi',\r\n}\r\n\r\nexport interface ServiceTypesResponse {\r\n ok: boolean;\r\n info: string;\r\n time: string;\r\n opentmin: string;\r\n opentmax: string;\r\n flags: { [key: string]: string };\r\n count: number;\r\n types: ServiceType[];\r\n}\r\n\r\nexport interface ServiceType {\r\n tag: string;\r\n count: number;\r\n cat: string;\r\n id: string;\r\n desc: string;\r\n rectype?: string;\r\n group?: string;\r\n groupSortKey?: number;\r\n itemSortKey?: number;\r\n list?: boolean;\r\n priv?: boolean;\r\n biz?: boolean;\r\n url?: string;\r\n urlMobile?: string;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=header.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.model.js","sourceRoot":"","sources":["../../../src/models/header.model.ts"],"names":[],"mappings":"","sourcesContent":["import { EventEmitter } from '@stencil/core';\r\nimport { AdditionalAttribute } from './breadcrumbs.model';\r\nimport { Environment } from './general.model';\r\n\r\nexport interface IHeaderConfig {\r\n asWebComponent: boolean;\r\n isHeaderResponsive: boolean;\r\n isLoginWidgetHidden: boolean;\r\n showJobsLoginWidget: boolean;\r\n icons: {\r\n backArrowIcon: IIconConfig;\r\n closeIcon: IIconConfig;\r\n downArrowIcon: IIconConfig;\r\n menuIcon: IIconConfig;\r\n rightArrowIcon: IIconConfig;\r\n searchIcon: IIconConfig;\r\n loginIcon: IIconConfig;\r\n };\r\n loginWidgetOptions?: ILoginWidgetOptions;\r\n loginWidgetId: string;\r\n logo: ILogoConfig;\r\n mobileMenu: {\r\n text: string;\r\n };\r\n search: ISearchConfig;\r\n onlineServiceId: string;\r\n navMain: NavMainEntity[];\r\n navMeta?: NavMetaEntity[];\r\n navLang: NavLangEntity[];\r\n translations: IHeaderTranslations;\r\n}\r\n\r\nexport interface IIconConfig {\r\n name: string;\r\n classes?: string[];\r\n additionalAttributes?: AdditionalAttribute[];\r\n}\r\n\r\nexport interface ILoginWidgetOptions {\r\n applicationId: string;\r\n serviceId: string;\r\n appLoginUrl: string;\r\n currentLang: string;\r\n environment?: Environment;\r\n options: {\r\n isDebugEnabled: boolean;\r\n logoutTargetURL: string;\r\n };\r\n platform: {\r\n endPoint: string;\r\n notificationsEndPoint: string;\r\n logoutURL: string;\r\n keepAliveURL: string;\r\n autoLoginURL: string;\r\n };\r\n}\r\n\r\nexport interface ILogoConfig {\r\n logoLink: string;\r\n logoLinkTitle: string;\r\n logoSvg: string;\r\n logoText: string;\r\n}\r\n\r\nexport interface ISearchConfig {\r\n isSearchHidden: boolean;\r\n searchPageUrl: string;\r\n redirectPattern: string;\r\n searchBoxSuggestionsThreshold: string;\r\n searchBoxSuggestionsAllNumber: string;\r\n searchBoxSuggestionsCoveoNumber: string;\r\n placesRedirectUrl: string;\r\n packageTrackingRedirectUrl: string;\r\n searchHubName: string;\r\n searchPipelineName: string;\r\n searchRecommendations: ISearchRecommendationContainer;\r\n}\r\n\r\nexport interface ISearchRecommendationContainer {\r\n title: string;\r\n links: ISearchRecommendation[];\r\n}\r\n\r\nexport interface ISearchRecommendation {\r\n href: string;\r\n inlineSvg: string;\r\n label: string;\r\n target: string;\r\n additionalAttributes: Array<{ name: string; value: string }>;\r\n}\r\n\r\nexport interface NavMainEntity {\r\n id?: string;\r\n text: string;\r\n title: string;\r\n url: string;\r\n isActive?: boolean;\r\n isActiveOverride?: boolean;\r\n noFlyout?: boolean;\r\n flyout: FlyoutEntity[];\r\n}\r\n\r\nexport interface FlyoutEntity {\r\n title: string;\r\n linkList: LinkListEntity[];\r\n}\r\n\r\nexport interface LinkListEntity {\r\n title: string;\r\n url: string;\r\n target?: string;\r\n isActive?: boolean;\r\n isActiveOverride?: boolean;\r\n}\r\n\r\nexport interface NavMetaEntity {\r\n isActive: boolean;\r\n isHomeLink: boolean;\r\n target?: string;\r\n text: string;\r\n url: string;\r\n}\r\n\r\nexport interface NavLangEntity {\r\n a11yLabel?: string;\r\n isCurrent: boolean;\r\n lang: string;\r\n text: string;\r\n title: string;\r\n url?: string;\r\n}\r\n\r\nexport interface IHeaderTranslations {\r\n backButtonText: string;\r\n closeButtonText: string;\r\n homeLinkTitle: string;\r\n navLangAriaLabel: string;\r\n navMainAriaLabel: string;\r\n navMetaAriaLabel: string;\r\n searchAriaLabel: string;\r\n flyoutSearchBoxFloatingLabel: string;\r\n searchPlaceholder: string;\r\n searchSubmit: string;\r\n searchToggle: string;\r\n searchToggleExpanded: string;\r\n searchA11yLabelClosed: string;\r\n searchA11yLabelOpened: string;\r\n mobileNavToggleClose: string;\r\n mobileNavToggleOpen: string;\r\n nonResponsiveHeader: string;\r\n loginWidgetText?: string;\r\n}\r\n\r\nexport interface IsFocusable {\r\n setFocus: () => void;\r\n}\r\n\r\nexport type FocusableElement = HTMLElement & IsFocusable;\r\n\r\nexport interface HasDropdown {\r\n toggleDropdown: (force?: boolean) => Promise<boolean>;\r\n dropdownToggled: EventEmitter<DropdownEvent>;\r\n}\r\n\r\nexport type DropdownElement = HTMLElement & HasDropdown;\r\n\r\nexport type DropdownEvent = { open: boolean; element: DropdownElement };\r\n\r\nexport interface ICustomHeaderConfig {\r\n navMain: NavMainEntity[];\r\n}\r\n\r\nexport type MainNavScoreList = { main: NavMainEntity; sub?: LinkListEntity; score: number }[];\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=implementor.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementor.model.js","sourceRoot":"","sources":["../../../src/models/implementor.model.ts"],"names":[],"mappings":"","sourcesContent":["export type StickynessOptions = 'none' | 'minimal' | 'main' | 'full';\r\n\r\n/**\r\n * Settings any implementor of the internet header can set on the component\r\n * itself. Has to be a valid JSON string.\r\n *\r\n * HTML example (note the quotes):\r\n * ```html\r\n * <post-internet-header config='{ \"serviceId\": \"test\" }'></post-internet-header>\r\n * ```\r\n * or via JavaScript:\r\n * ```js\r\n * const header = document.querySelector('post-internet-header');\r\n * header.config = { serviceId: 'test' };\r\n * ```\r\n */\r\nexport interface IImplementorConfig {\r\n serviceId: string;\r\n stickyness?: StickynessOptions;\r\n preferredLanguage?: string;\r\n languageCookieName?: string;\r\n languageStorageKey?: string;\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=language.model.js.map