@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,1716 @@
1
+ /*
2
+ * ------------------------------------------------------------------------------------------------
3
+ * Copyright 2014 by Swiss Post, Information Technology Services
4
+ * ------------------------------------------------------------------------------------------------
5
+ * $Id$
6
+ * ------------------------------------------------------------------------------------------------
7
+ */
8
+
9
+ import './sockjs-client';
10
+ import 'url-polyfill';
11
+ import jQuery from 'jquery/dist/jquery.slim';
12
+
13
+ const vertx = vertx || {};
14
+ !(function (factory) {
15
+ factory(SockJS);
16
+ })(function (SockJS) {
17
+ vertx.EventBus = function (url, options) {
18
+ const that = this;
19
+ const sockJSConn = new SockJS(url, undefined, options);
20
+ const handlerMap = {};
21
+ const replyHandlers = {};
22
+ let state = vertx.EventBus.CONNECTING;
23
+ let pingTimerID = null;
24
+ let pingInterval = null;
25
+ if (options) {
26
+ pingInterval = options.vertxbus_ping_interval;
27
+ }
28
+ if (!pingInterval) {
29
+ pingInterval = 5000;
30
+ }
31
+ that.onopen = null;
32
+ that.onclose = null;
33
+ that.login = function (username, password, replyHandler) {
34
+ sendOrPub(
35
+ 'send',
36
+ 'vertx.basicauthmanager.login',
37
+ {
38
+ username: username,
39
+ password: password,
40
+ },
41
+ function (reply) {
42
+ if (reply.status === 'ok') {
43
+ that.sessionID = reply.sessionID;
44
+ }
45
+ if (replyHandler) {
46
+ delete reply.sessionID;
47
+ replyHandler(reply);
48
+ }
49
+ },
50
+ );
51
+ };
52
+ that.send = function (address, message, replyHandler) {
53
+ sendOrPub('send', address, message, replyHandler);
54
+ };
55
+ that.publish = function (address, message) {
56
+ sendOrPub('publish', address, message, null);
57
+ };
58
+ that.registerHandler = function (address, handler) {
59
+ checkSpecified('address', 'string', address);
60
+ checkSpecified('handler', 'function', handler);
61
+ checkOpen();
62
+ let handlers = handlerMap[address];
63
+ if (!handlers) {
64
+ handlers = [handler];
65
+ handlerMap[address] = handlers;
66
+ const msg = {
67
+ type: 'register',
68
+ address: address,
69
+ };
70
+ sockJSConn.send(JSON.stringify(msg));
71
+ } else {
72
+ handlers[handlers.length] = handler;
73
+ }
74
+ };
75
+ that.unregisterHandler = function (address, handler) {
76
+ checkSpecified('address', 'string', address);
77
+ checkSpecified('handler', 'function', handler);
78
+ checkOpen();
79
+ const handlers = handlerMap[address];
80
+ if (handlers) {
81
+ const idx = handlers.indexOf(handler);
82
+ if (idx !== -1) handlers.splice(idx, 1);
83
+ if (handlers.length === 0) {
84
+ const msg = {
85
+ type: 'unregister',
86
+ address: address,
87
+ };
88
+ sockJSConn.send(JSON.stringify(msg));
89
+ delete handlerMap[address];
90
+ }
91
+ }
92
+ };
93
+ that.close = function () {
94
+ checkOpen();
95
+ state = vertx.EventBus.CLOSING;
96
+ sockJSConn.close();
97
+ };
98
+ that.readyState = function () {
99
+ return state;
100
+ };
101
+ sockJSConn.onopen = function () {
102
+ sendPing();
103
+ pingTimerID = setInterval(sendPing, pingInterval);
104
+ state = vertx.EventBus.OPEN;
105
+ if (that.onopen) {
106
+ that.onopen();
107
+ }
108
+ };
109
+ sockJSConn.onclose = function () {
110
+ state = vertx.EventBus.CLOSED;
111
+ if (pingTimerID) clearInterval(pingTimerID);
112
+ if (that.onclose) {
113
+ that.onclose();
114
+ }
115
+ };
116
+ sockJSConn.onmessage = function (e) {
117
+ const msg = e.data;
118
+ const json = JSON.parse(msg);
119
+ const body = json.body;
120
+ const replyAddress = json.replyAddress;
121
+ const address = json.address;
122
+ let replyHandler;
123
+ if (replyAddress) {
124
+ replyHandler = function (reply, replyHandler) {
125
+ that.send(replyAddress, reply, replyHandler);
126
+ };
127
+ }
128
+ const handlers = handlerMap[address];
129
+ if (handlers) {
130
+ const copy = handlers.slice(0);
131
+ for (const element of copy) {
132
+ element(body, replyHandler);
133
+ }
134
+ } else {
135
+ const handler = replyHandlers[address];
136
+ if (handler) {
137
+ delete replyHandlers[address];
138
+ handler(body, replyHandler);
139
+ }
140
+ }
141
+ };
142
+
143
+ function sendPing() {
144
+ const msg = {
145
+ type: 'ping',
146
+ };
147
+ sockJSConn.send(JSON.stringify(msg));
148
+ }
149
+
150
+ function sendOrPub(sendOrPub, address, message, replyHandler) {
151
+ checkSpecified('address', 'string', address);
152
+ checkSpecified('replyHandler', 'function', replyHandler, true);
153
+ checkOpen();
154
+ const envelope = {
155
+ type: sendOrPub,
156
+ address: address,
157
+ body: message,
158
+ };
159
+ if (that.sessionID) {
160
+ envelope.sessionID = that.sessionID;
161
+ }
162
+ if (replyHandler) {
163
+ const replyAddress = makeUUID();
164
+ envelope.replyAddress = replyAddress;
165
+ replyHandlers[replyAddress] = replyHandler;
166
+ }
167
+ const str = JSON.stringify(envelope);
168
+ sockJSConn.send(str);
169
+ }
170
+
171
+ function checkOpen() {
172
+ if (state !== vertx.EventBus.OPEN) {
173
+ throw new Error('INVALID_STATE_ERR');
174
+ }
175
+ }
176
+
177
+ function checkSpecified(paramName, paramType, param, optional) {
178
+ if (!optional && !param) {
179
+ throw new Error('Parameter ' + paramName + ' must be specified');
180
+ }
181
+ if (param && typeof param !== paramType) {
182
+ throw new Error('Parameter ' + paramName + ' must be of type ' + paramType);
183
+ }
184
+ }
185
+
186
+ function makeUUID() {
187
+ return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
188
+ (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16),
189
+ );
190
+ }
191
+ };
192
+ vertx.EventBus.CONNECTING = 0;
193
+ vertx.EventBus.OPEN = 1;
194
+ vertx.EventBus.CLOSING = 2;
195
+ vertx.EventBus.CLOSED = 3;
196
+ return vertx.EventBus;
197
+ });
198
+ (function ($) {
199
+ window.klpWidgetDev = function (
200
+ id,
201
+ app,
202
+ service,
203
+ appLoginURL,
204
+ _menuLinks,
205
+ lang,
206
+ platform,
207
+ options,
208
+ environment,
209
+ ) {
210
+ const headerNode = document.getElementsByTagName('header')[0];
211
+ const config = { attributes: true, childList: false, subtree: false };
212
+ const callback = function (mutationsList, observer) {
213
+ for (let mutation of mutationsList) {
214
+ if (mutation.attributeName === 'class') {
215
+ if ($('header').hasClass('h-fixed-position') && !$('header').hasClass('h-visible')) {
216
+ selectFromShadowDom().find('.klp-widget-authenticated-menu').css('display', 'none');
217
+ selectFromShadowDom()
218
+ .find('#' + id)
219
+ .removeClass('bubble');
220
+ }
221
+ }
222
+ }
223
+ };
224
+ const observer = new MutationObserver(callback);
225
+ if (headerNode) {
226
+ observer.observe(headerNode, config);
227
+ }
228
+
229
+ let keepAliveID = 'klp-widget-keepalive',
230
+ persistedStateKey = 'klp.widget.state',
231
+ persistedDocumentPrefix = 'klp.widget.document.',
232
+ controlCookieName = 'NCTRL',
233
+ controlCookieDomain = 'post.ch',
234
+ controlCookieDomainRegEx = new RegExp(controlCookieDomain + '$'),
235
+ controlCookieRegEx = new RegExp(controlCookieName + '=([^;]+)'),
236
+ eventBus = undefined,
237
+ address = undefined,
238
+ retrySubscribeOnFail = false,
239
+ sessionData = undefined,
240
+ loginCallback = undefined,
241
+ keepAliveCallback = undefined,
242
+ logoutCallback = undefined,
243
+ documentCallbacks = {},
244
+ documentUnreadNotifications = 'UNREAD_NOTIFICATIONS',
245
+ isUserActive = true,
246
+ keepAliveTimer = undefined,
247
+ currentLang = 'de',
248
+ originUrl = '',
249
+ startingTime = new Date().getTime(),
250
+ version = '16.01.00.01',
251
+ unreadNotifications = 0,
252
+ texts = {
253
+ de: {
254
+ 'sign-in': 'Login',
255
+ 'sign-out': 'Logout',
256
+ 'change-company': 'Firma w\u00E4hlen',
257
+ 'change-company-confirm-dialog':
258
+ 'M\u00F6chten Sie die aktuelle Firma wechseln? </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Firma w\u00E4hlen</button>',
259
+ 'change-company-support-dialog':
260
+ 'Im Kunden-Supportlogin steht die Funktion "Firma wechseln" nicht zur Verf\u00FCgung. F\u00FChren Sie stattdessen ein Logout durch und starten Sie das Kunden-Supportlogin auf einem neuen Benutzer oder einer neuen Firma. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
261
+ 'change-account': 'Benutzerkonto wechseln',
262
+ 'change-account-confirm-dialog':
263
+ 'M\u00F6chten Sie in ein anderes Benutzerkonto wechseln? </p></div></div><div class="modal-button-container row"><div class="item-centered d-flex justify-content-center col-lg-12 col-12 pe-0 me-0"><div class="col-lg-4 col-12 me-0 pe-0"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary w-100">Weiter</button>',
264
+ 'change-account-support-dialog':
265
+ 'Im Kunden-Supportlogin steht die Funktion "Benutzerkonto wechseln" nicht zur Verf\u00FCgung. F\u00FChren Sie stattdessen ein Logout durch und starten Sie das Kunden-Supportlogin auf einem neuen Benutzer oder einer neuen Firma. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
266
+ 'links': 'Meine Onlinedienste',
267
+ 'notifications': 'Meldungen',
268
+ 'toggle-menu': 'toggle-menu',
269
+ 'no-links': 'Keine Favoriten bei Onlinedienste',
270
+ 'no-notifications': 'Keine ungelesenen Meldungen',
271
+ 'more-notifications': 'Alle Meldungen',
272
+ 'title-text-menu': 'Meine \u00DCbersicht',
273
+ 'title-text-links': 'Meine Onlinedienste',
274
+ 'title-text-notifications': 'Nachrichten',
275
+ 'userProfile': 'Mein Profil',
276
+ 'settings': 'Einstellungen',
277
+ },
278
+ fr: {
279
+ 'sign-in': 'Login',
280
+ 'sign-out': 'Logout',
281
+ 'change-company': 'Changer entreprise',
282
+ 'change-company-confirm-dialog':
283
+ 'Voulez-vous quitter l\'entreprise actuelle? </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Changer enterprise</button>.',
284
+ 'change-company-support-dialog':
285
+ 'Dans le Login-Support, la fonction changer entreprise n\'est pas disponible. Il faut quitter la session et puis d\u00E9marrer un nouveau Login-Support avec un autre compte ou une soci\u00E9t\u00E9 diff\u00E9rente. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">D\u00E9connexion</button>',
286
+ 'change-account': 'Changer de compte',
287
+ 'change-account-confirm-dialog':
288
+ 'Vous souhaitez changer de compte utilisateur? </p></div></div><div class="modal-button-container row"><div class="item-centered d-flex justify-content-center col-lg-12 col-12 pe-0 me-0"><div class="col-lg-4 col-12 me-0 pe-0"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary w-100">Continuer</button>',
289
+ 'change-account-support-dialog':
290
+ 'La fonction "Changer de compte" n\'est pas disponible dans le login de support client. D\u00E9connectez-vous et d\u00E9marrez le login de support client sur un autre compte utilisateur ou d\'entreprise. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">D\u00E9connexion</button>',
291
+ 'links': 'Mes services en ligne',
292
+ 'notifications': 'notifications',
293
+ 'toggle-menu': 'toggle-menu',
294
+ 'no-links': 'Pas de favoris',
295
+ 'no-notifications': 'Pas de notifications non lues',
296
+ 'more-notifications': 'Toutes les notifications',
297
+ 'title-text-menu': 'Mon compte',
298
+ 'title-text-links': 'Mes services en ligne',
299
+ 'title-text-notifications': 'Messages',
300
+ 'userProfile': 'Mon profil',
301
+ 'settings': 'Paramètres',
302
+ },
303
+ it: {
304
+ 'sign-in': 'Login',
305
+ 'sign-out': 'Logout',
306
+ 'change-company': 'Cambia la ditta',
307
+ 'change-company-confirm-dialog':
308
+ '\u00C8 sicuro di voler uscire dall\'attuale ditta? </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Cambia la ditta</button>',
309
+ 'change-company-support-dialog':
310
+ 'Nell\'Assistenza clienti, il cambiamento di ditta non \u00E8 disponibile. Bisogna prima eseguire un Logout, quindi avviare nuovamente l\'Assistenza clienti selezionando un utente o una ditta differente. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
311
+ 'change-account': 'Cambia account utente',
312
+ 'change-account-confirm-dialog':
313
+ 'Desidera accedere con un altro account utente? </p></div></div><div class="modal-button-container row"><div class="item-centered d-flex justify-content-center col-lg-12 col-12 pe-0 me-0"><div class="col-lg-4 col-12 me-0 pe-0"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary w-100">Avanti</button>',
314
+ 'change-account-support-dialog':
315
+ 'Nel login assistenza clienti non \u00E8 disponibile la funzione "Modifica account utente". Si consiglia di effettuare il logout, quindi di riaccedere al login assistenza clienti tramite un nuovo account utente o una nuova ditta. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
316
+ 'links': 'I miei servizi online',
317
+ 'notifications': 'notifiche',
318
+ 'toggle-menu': 'toggle-menu',
319
+ 'no-links': 'Nessun preferito',
320
+ 'no-notifications': 'Nessuna notifica non letta',
321
+ 'more-notifications': 'Tutte le notifiche',
322
+ 'title-text-menu': 'Il mio riepilogo',
323
+ 'title-text-links': 'I miei servizi online',
324
+ 'title-text-notifications': 'Messaggi',
325
+ 'userProfile': 'Il mio profilo',
326
+ 'settings': 'Impostazioni',
327
+ },
328
+ en: {
329
+ 'sign-in': 'Login',
330
+ 'sign-out': 'Logout',
331
+ 'change-company': 'Change company',
332
+ 'change-company-confirm-dialog':
333
+ 'Would you like to sign-out from the current company? </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Next</button>.',
334
+ 'change-company-support-dialog':
335
+ 'On Kunden-Supportlogin, the function Change company is not available. You have to SignOut and then start again a new Kunden-Supportlogin selecting a different account or company. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
336
+ 'change-account': 'Change user account',
337
+ 'change-account-confirm-dialog':
338
+ 'Do you want to change to another user account? </p></div></div><div class="modal-button-container row"><div class="item-centered d-flex justify-content-center col-lg-12 col-12 pe-0 me-0"><div class="col-lg-4 col-12 me-0 pe-0"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary w-100">Next</button>',
339
+ 'change-account-support-dialog':
340
+ 'The "Change user account" function is not available in the customer support login. Instead, log out and start the customer support login using a new user or new company. </p></div></div><div class="modal-button-container row"><div class="col-6"></div><div class="col-6 item-centered"><button id="klp-widget-authenticated-dochangecompany" class="ppm-button btn btn-primary col-11">Logout</button>',
341
+ 'links': 'My online services',
342
+ 'notifications': 'notifications',
343
+ 'toggle-menu': 'toggle-menu',
344
+ 'no-links': 'No favorites',
345
+ 'no-notifications': 'No unread notifications',
346
+ 'more-notifications': 'All notifications',
347
+ 'title-text-menu': 'My overview',
348
+ 'title-text-links': 'My online services',
349
+ 'title-text-notifications': 'Inbox',
350
+ 'userProfile': 'My Profile',
351
+ 'settings': 'Settings',
352
+ },
353
+ },
354
+ keys = {
355
+ 'sign-in': {
356
+ 'access-key': 'i',
357
+ 'tab-index': 0,
358
+ },
359
+ 'sign-out': {
360
+ 'access-key': 'o',
361
+ 'tab-index': 3,
362
+ },
363
+ 'toggle-menu': {
364
+ 'access-key': 'm',
365
+ 'tab-index': 0,
366
+ },
367
+ 'change-company': {
368
+ 'access-key': 'c',
369
+ 'tab-index': 2,
370
+ },
371
+ 'change-account': {
372
+ 'access-key': 'c',
373
+ 'tab-index': 2,
374
+ },
375
+ 'notifications': {
376
+ 'access-key': 'n',
377
+ 'tab-index': 1,
378
+ },
379
+ 'links': {
380
+ 'access-key': 'l',
381
+ 'tab-index': 4,
382
+ },
383
+ },
384
+ platformEndPoints = {
385
+ audit: platform.endPoint + '/v1/audit',
386
+ keepalive: platform.endPoint + '/v1/session/keepalive',
387
+ subscribe: platform.endPoint + '/v1/session/subscribe',
388
+ eventbus: platform.endPoint + '/eventbus',
389
+ },
390
+ conf = {
391
+ logoutTargetURL: '',
392
+ keepAlive: true,
393
+ keepAliveListeningEvents: 'click touchstart keydown',
394
+ keepAliveOnInit: true,
395
+ keepAliveInterval: 9,
396
+ showLinks: true,
397
+ tabIndex: -1,
398
+ accessKeys: false,
399
+ notificationsNrToLoad: 5,
400
+ debug: false,
401
+ };
402
+ if (lang !== undefined) {
403
+ currentLang = lang.toLowerCase();
404
+ }
405
+ const getLocation = function (url) {
406
+ return new URL(url);
407
+ };
408
+ const url = getLocation(logoutURL());
409
+ originUrl = url.origin;
410
+ const menuLinks = [
411
+ {
412
+ description: texts[currentLang].userProfile,
413
+ url: originUrl + '/selfadmin/?lang=' + currentLang,
414
+ iconclass: 'widget_icon_profile',
415
+ },
416
+ ];
417
+
418
+ const messagesUrl = originUrl + '/selfadmin/messages/?lang=' + currentLang;
419
+
420
+ if (options !== undefined) {
421
+ conf = Object.assign({}, conf, options);
422
+ }
423
+
424
+ function isHTML5StorageSupported() {
425
+ try {
426
+ return 'sessionStorage' in window && window.sessionStorage !== null;
427
+ } catch (e) {
428
+ log('No local storage available');
429
+ return false;
430
+ }
431
+ }
432
+
433
+ function now() {
434
+ const n = new Date();
435
+ return (
436
+ n.getFullYear() +
437
+ '-' +
438
+ n.getMonth() +
439
+ 1 +
440
+ '-' +
441
+ n.getDate() +
442
+ ' ' +
443
+ n.getHours() +
444
+ ':' +
445
+ n.getMinutes() +
446
+ ':' +
447
+ n.getSeconds() +
448
+ ',' +
449
+ n.getMilliseconds()
450
+ );
451
+ }
452
+
453
+ function log(message) {
454
+ if (conf.debug && window.console && window.console.log) {
455
+ console.log('[' + now() + '] - KLP.WIDGET - ' + message);
456
+ }
457
+ }
458
+
459
+ function audit(message) {
460
+ const auditingEvent = JSON.stringify({
461
+ adr: address,
462
+ evt: message,
463
+ });
464
+ if (message.adt) {
465
+ log('Sending auditing event: ' + auditingEvent);
466
+ fetch(platformEndPoints.audit, {
467
+ method: 'POST',
468
+ credentials: 'include',
469
+ mode: 'cors',
470
+ body: auditingEvent,
471
+ });
472
+ } else {
473
+ log('Auditing disabled: ' + auditingEvent);
474
+ }
475
+ }
476
+
477
+ function logPerformanceMetric(methodName, executionTime) {
478
+ if (conf.debug && window.console && window.console.log) {
479
+ log('Method ' + methodName + ' executed on ' + executionTime + ' ms');
480
+ }
481
+ }
482
+
483
+ function random() {
484
+ return Math.floor(Math.random() * 999999999 + 1);
485
+ }
486
+
487
+ function text(key) {
488
+ return texts[currentLang][key];
489
+ }
490
+
491
+ function accessKey(key) {
492
+ if (conf.accessKeys === false || keys[key]['access-key'] == null) {
493
+ return '';
494
+ }
495
+ return 'accesskey="' + keys[key]['access-key'] + '"';
496
+ }
497
+
498
+ function tabIndex(key) {
499
+ if (conf.tabIndex < 0) {
500
+ return 0;
501
+ }
502
+ return keys[key]['tab-index'] + conf.tabIndex;
503
+ }
504
+
505
+ function join(base, query) {
506
+ if (query === undefined) {
507
+ return base;
508
+ }
509
+ if (base.indexOf('?') === -1) {
510
+ return base + '?' + query;
511
+ } else {
512
+ return base + '&' + query;
513
+ }
514
+ }
515
+
516
+ function loginURL() {
517
+ return join(appLoginURL, buildLoginParameters());
518
+ }
519
+
520
+ function buildLoginParameters() {
521
+ let parameters = '';
522
+ $.each(
523
+ {
524
+ app: app,
525
+ service: service,
526
+ lang: currentLang,
527
+ },
528
+ function (key, value) {
529
+ if (appLoginURL.toLowerCase().indexOf(key.toLowerCase()) === -1) {
530
+ if (parameters.length > 0) {
531
+ parameters += '&';
532
+ }
533
+ parameters += key + '=' + value;
534
+ }
535
+ },
536
+ );
537
+ return parameters.length > 0 ? parameters : undefined;
538
+ }
539
+
540
+ function logoutURL() {
541
+ const serviceForLogout = 'klp';
542
+ const inIframe = false;
543
+ return join(
544
+ platform.logoutURL,
545
+ 'app=' +
546
+ app +
547
+ '&lang=' +
548
+ currentLang +
549
+ '&service=' +
550
+ serviceForLogout +
551
+ '&inIframe=' +
552
+ inIframe +
553
+ '&logoutTargetURL=' +
554
+ conf.logoutTargetURL,
555
+ );
556
+ }
557
+
558
+ function doLogout(logoutUrl) {
559
+ log('Clearing cache and sessionData before starting the logout process');
560
+ sessionData = undefined;
561
+ removePersistedState();
562
+ log('Proceeding to logoutUrl with following path ' + logoutUrl);
563
+ window.location.href = logoutUrl;
564
+ }
565
+
566
+ function setChangeAccountDialog() {
567
+ selectFromShadowDom()
568
+ .find('#' + id + ' #klp-widget-authenticated-menu-changecompany')
569
+ .on('click touch', function (e) {
570
+ e.preventDefault();
571
+ selectFromShadowDom()
572
+ .find('#' + id + ' #klp-widget-authenticated-menu-changecompany')
573
+ .focus();
574
+ changeAccountDialog();
575
+ return false;
576
+ });
577
+ }
578
+
579
+ function changeAccountDialog() {
580
+ let body;
581
+ let logoutUrl;
582
+ if (sessionData !== undefined && sessionData.support) {
583
+ if (isChangeUserAndProfile()) {
584
+ body = text('change-account-support-dialog');
585
+ } else {
586
+ body = text('change-company-support-dialog');
587
+ }
588
+ logoutUrl = logoutURL();
589
+ } else {
590
+ if (isChangeUserAndProfile()) {
591
+ body = text('change-account-confirm-dialog');
592
+ } else {
593
+ body = text('change-company-confirm-dialog');
594
+ }
595
+ logoutUrl = changeCompanyURL();
596
+ }
597
+ if (
598
+ selectFromShadowDom().find('#' + id + ' #klp-widget-authenticated-changecompanydialog')
599
+ .length === 0
600
+ ) {
601
+ const changecompanyDialog =
602
+ '<div id="changeAccountModal" class="modal"><div class="modal-content"><div class="modal-text-container row"><div class="col-12 text-align-center"><i class="pi pi-2086"></i></div><span class="close">&times;</span><div class="col-1"></div><div class="col-10 text-align-center"><p class="modal-text">' +
603
+ body +
604
+ '</div></div></div>';
605
+ selectFromShadowDom()
606
+ .find('#' + id + ' .klp-widget-authenticated')
607
+ .append(changecompanyDialog);
608
+
609
+ // Get the modal
610
+ let modal = selectFromShadowDom().find('#changeAccountModal');
611
+ if (modal.length && modal.length >= 1) {
612
+ modal = modal[0];
613
+ }
614
+ modal.style.display = 'table';
615
+ // Get the <span> element that closes the modal
616
+ const span = selectFromShadowDom().find('#changeAccountModal .close')[0];
617
+
618
+ // When the user clicks on <span> (x), close the modal
619
+ span.onclick = function () {
620
+ modal.parentElement.removeChild(modal);
621
+ };
622
+
623
+ // When the user clicks anywhere outside of the modal, close it
624
+ window.onclick = function (event) {
625
+ if (event.target === modal) {
626
+ modal.parentElement.removeChild(modal);
627
+ }
628
+ };
629
+
630
+ selectFromShadowDom()
631
+ .find('#klp-widget-authenticated-dochangecompany')
632
+ .on('click touch', function (e) {
633
+ e.preventDefault();
634
+ selectFromShadowDom()
635
+ .find('#' + id + ' #klp-widget-authenticated-dochangecompany')
636
+ .focus();
637
+ doLogout(logoutUrl);
638
+ return false;
639
+ });
640
+ }
641
+ }
642
+
643
+ function changeCompanyURL() {
644
+ return logoutURL() + '&changecompany=true';
645
+ }
646
+
647
+ function setUserActive() {
648
+ isUserActive = true;
649
+ }
650
+
651
+ function restoreState() {
652
+ const state = loadPersistedState();
653
+ if (state) {
654
+ address = state.address;
655
+ retrySubscribeOnFail = true;
656
+ sessionData = state.sessionData;
657
+ renderWidget();
658
+ if (isCurrentLocationPostCh()) {
659
+ renderNotificationsWidget(loadDocumentFromCache(documentUnreadNotifications));
660
+ }
661
+ }
662
+ }
663
+
664
+ function loadPersistedState() {
665
+ if (isHTML5StorageSupported()) {
666
+ const persistedState = sessionStorage.getItem(persistedStateKey);
667
+ if (persistedState) {
668
+ try {
669
+ const state = JSON.parse(persistedState);
670
+ if (state.ttl > new Date().getTime() && isPersistedStateValid(state.sessionData)) {
671
+ log('Valid persisted state loaded: ' + persistedState);
672
+ return state;
673
+ } else {
674
+ log('Persisted state expired or invalid');
675
+ removePersistedState();
676
+ setControlCookie('all', 'sub');
677
+ }
678
+ } catch (err) {
679
+ log("Persisted state was invalid due to error '" + err + "'");
680
+ removePersistedState();
681
+ setControlCookie('all', 'sub');
682
+ }
683
+ } else {
684
+ log('No persisted state found');
685
+ removePersistedState();
686
+ setControlCookie('all', 'sub');
687
+ }
688
+ } else {
689
+ log('State not loaded because HTML storage not supported');
690
+ }
691
+ return null;
692
+ }
693
+
694
+ function persistState(ttl) {
695
+ if (isHTML5StorageSupported()) {
696
+ sessionStorage.setItem(
697
+ persistedStateKey,
698
+ '{"ttl": ' +
699
+ (new Date().getTime() + ttl) +
700
+ ',"sessionData": ' +
701
+ JSON.stringify(sessionData) +
702
+ ', "address":"' +
703
+ address +
704
+ '"}',
705
+ );
706
+ log('State persisted');
707
+ setControlCookie('hash', encodeURIComponent(hash(sessionData)));
708
+ } else {
709
+ log('State not persisted because HTML storage not supported');
710
+ }
711
+ }
712
+
713
+ function removePersistedState() {
714
+ if (isHTML5StorageSupported()) {
715
+ sessionStorage.removeItem(persistedStateKey);
716
+ log('Persisted state removed');
717
+ removeControlCookie();
718
+ } else {
719
+ log('Persisted state not removed because HTML storage not supported');
720
+ }
721
+ }
722
+
723
+ function isPersistedStateValid(persistedData) {
724
+ const hashPersistedData = hash(persistedData).toString();
725
+ const hashCookie = getControlCookieVal('hash');
726
+ if (hashPersistedData === hashCookie) {
727
+ return true;
728
+ }
729
+ if (hashCookie === undefined && !isCurrentLocationPostCh()) {
730
+ log(
731
+ 'Cache validated because on a different host=[' +
732
+ window.location.hostname +
733
+ '] than control cookie domain=[' +
734
+ controlCookieDomain +
735
+ ']',
736
+ );
737
+ return true;
738
+ }
739
+ log(
740
+ 'PersistedData are invalid [hashPersistedData=' +
741
+ hashPersistedData +
742
+ ',control cookie=' +
743
+ hashCookie +
744
+ ']',
745
+ );
746
+ return false;
747
+ }
748
+
749
+ function isCurrentLocationPostCh() {
750
+ return window.location.hostname.match(controlCookieDomainRegEx);
751
+ }
752
+
753
+ function hash(s) {
754
+ s = JSON.stringify(s);
755
+ let hash = 0,
756
+ i,
757
+ chr,
758
+ len;
759
+ if (s.length === 0) return hash;
760
+ for (i = 0, len = s.length; i < len; i++) {
761
+ chr = s.charCodeAt(i);
762
+ hash = (hash << 5) - hash + chr;
763
+ hash |= 0;
764
+ }
765
+ return hash;
766
+ }
767
+
768
+ function getControlCookieVal(scope) {
769
+ const cookieData = controlCookieRegEx.exec(document.cookie);
770
+ if (cookieData != null) {
771
+ const values = decodeURIComponent(cookieData[1]).split(':');
772
+ switch (scope) {
773
+ case 'hash':
774
+ if (values[0] != null) return values[0];
775
+ break;
776
+ case 'keepalive':
777
+ if (values[1] != null) return values[1];
778
+ break;
779
+ default:
780
+ return decodeURIComponent(cookieData[1]);
781
+ }
782
+ return null;
783
+ } else {
784
+ log('Control cookie not found');
785
+ return null;
786
+ }
787
+ }
788
+
789
+ function setControlCookie(scope, val) {
790
+ const sameSiteNoneSecure = '; SameSite=None; Secure';
791
+ switch (scope) {
792
+ case 'hash':
793
+ document.cookie =
794
+ controlCookieName +
795
+ '=' +
796
+ val +
797
+ ':' +
798
+ getControlCookieVal('keepalive') +
799
+ '; Path=/; domain=' +
800
+ controlCookieDomain +
801
+ sameSiteNoneSecure;
802
+ break;
803
+ case 'keepalive':
804
+ document.cookie =
805
+ controlCookieName +
806
+ '=' +
807
+ getControlCookieVal('hash') +
808
+ ':' +
809
+ val +
810
+ '; Path=/; domain=' +
811
+ controlCookieDomain +
812
+ sameSiteNoneSecure;
813
+ break;
814
+ default:
815
+ document.cookie =
816
+ controlCookieName +
817
+ '=' +
818
+ val +
819
+ '; Path=/; domain=' +
820
+ controlCookieDomain +
821
+ sameSiteNoneSecure;
822
+ break;
823
+ }
824
+ }
825
+
826
+ function removeControlCookie() {
827
+ if (retrySubscribeOnFail) {
828
+ document.cookie =
829
+ controlCookieName + '=' + 'sub' + '; Path=/; domain=' + controlCookieDomain;
830
+ log('Control cookie set to sub');
831
+ } else {
832
+ document.cookie =
833
+ controlCookieName +
834
+ '=' +
835
+ '' +
836
+ '; Path=/; Expires=Wed, 01 Apr 2014 01:00:00 GMT; domain=' +
837
+ controlCookieDomain;
838
+ log('Control cookie removed');
839
+ }
840
+ }
841
+
842
+ function loadDocumentFromCache(documentType) {
843
+ const persistedKey = persistedDocumentPrefix + documentType;
844
+ if (isHTML5StorageSupported()) {
845
+ const persistedDocument = sessionStorage.getItem(persistedKey);
846
+ if (persistedDocument) {
847
+ const document = $.parseJSON(persistedDocument);
848
+ log('Document ' + documentType + ' has been read from cache with value ' + document);
849
+ return document;
850
+ }
851
+ }
852
+ return null;
853
+ }
854
+
855
+ function saveDocumentOnCache(document, documentType) {
856
+ const key = persistedDocumentPrefix + documentType;
857
+ if (isHTML5StorageSupported()) {
858
+ sessionStorage.setItem(key, JSON.stringify(document));
859
+ log(
860
+ 'Document ' +
861
+ documentType +
862
+ ' has been persisted on cached with value ' +
863
+ JSON.stringify(document),
864
+ );
865
+ }
866
+ }
867
+
868
+ function removeAllDocumentFromCache() {
869
+ removeDocumentFromCache(documentUnreadNotifications);
870
+ }
871
+
872
+ function removeDocumentFromCache(documentType) {
873
+ const key = persistedDocumentPrefix + documentType;
874
+ if (isHTML5StorageSupported()) {
875
+ sessionStorage.removeItem(key);
876
+ log('Document ' + documentType + ' has been removed from cache');
877
+ }
878
+ }
879
+
880
+ function installUserActivityHandler() {
881
+ if (conf.keepAliveListeningEvents.length > 0) {
882
+ $(document).on(conf.keepAliveListeningEvents, setUserActive);
883
+ }
884
+ }
885
+
886
+ function uninstallUserActivityHandler() {
887
+ if (conf.keepAliveListeningEvents.length > 0) {
888
+ $(document).off(conf.keepAliveListeningEvents, setUserActive);
889
+ }
890
+ }
891
+
892
+ function keepAliveTimerFunction() {
893
+ if (isUserActive) {
894
+ isUserActive = false;
895
+ keepAliveSessions();
896
+ } else {
897
+ log('Keepalive call canceled due to user inactivity');
898
+ }
899
+ }
900
+
901
+ function installKeepAliveTimerHandler() {
902
+ if (conf.keepAlive && keepAliveTimer === undefined) {
903
+ installUserActivityHandler();
904
+ keepAliveTimer = window.setInterval(
905
+ keepAliveTimerFunction,
906
+ conf.keepAliveInterval * 60 * 1000,
907
+ );
908
+ }
909
+ }
910
+
911
+ function uninstallKeepAliveTimerHandler() {
912
+ if (conf.keepAlive) {
913
+ uninstallUserActivityHandler();
914
+ if (keepAliveTimer) {
915
+ window.clearInterval(keepAliveTimer);
916
+ keepAliveTimer = undefined;
917
+ }
918
+ }
919
+ }
920
+
921
+ function keepAliveSessions() {
922
+ if (isUserAuthenticated()) {
923
+ const html =
924
+ "<img src='" +
925
+ platform.keepAliveURL +
926
+ '/?' +
927
+ random() +
928
+ "'><img src='" +
929
+ platformEndPoints.keepalive +
930
+ '?' +
931
+ random() +
932
+ "'>";
933
+ selectFromShadowDom()
934
+ .find('#' + keepAliveID)
935
+ .html(html);
936
+ if (typeof keepAliveCallback == 'function') {
937
+ keepAliveCallback();
938
+ }
939
+ setControlCookie('keepalive', new Date().getTime());
940
+ }
941
+ }
942
+
943
+ function keepAliveSessionsOnInit() {
944
+ const now = new Date().getTime();
945
+ const lastKeepAlive = getControlCookieVal('keepalive');
946
+ if (
947
+ isNaN(lastKeepAlive) ||
948
+ now - parseInt(lastKeepAlive) > conf.keepAliveInterval * 60 * 1000
949
+ ) {
950
+ log('Running keepAliveSessionsOnInit');
951
+ keepAliveSessions();
952
+ return;
953
+ }
954
+ log(
955
+ 'keepAliveSessionsOnInit not running due to [now=' +
956
+ now +
957
+ ',last=' +
958
+ lastKeepAlive +
959
+ ',interval=' +
960
+ conf.keepAliveInterval * 60 * 1000,
961
+ );
962
+ }
963
+
964
+ function initIFrameCommunication() {
965
+ log('Preparing for communication with iframe content');
966
+
967
+ function receiveMessage(e) {
968
+ const allowedOrigins = ['post.ch', 'postauto.ch', 'postfinance.ch'];
969
+ const originUrl = new URL(e.origin);
970
+ if (allowedOrigins.includes(originUrl.host) && e.data === 'syncWidget') {
971
+ log('PostMessage syncWidget received');
972
+ subscribe();
973
+ }
974
+ }
975
+ if (window.addEventListener) {
976
+ window.addEventListener('message', receiveMessage);
977
+ } else {
978
+ window.attachEvent('onmessage', receiveMessage);
979
+ }
980
+ }
981
+
982
+ function measureWidgetShowsUp() {
983
+ if (startingTime) {
984
+ log('Widget shows up in ' + (new Date().getTime() - startingTime) + ' [msec]');
985
+ startingTime = undefined;
986
+ }
987
+ }
988
+
989
+ function renderHiddenContainer(parentContainerSelector, containerId) {
990
+ selectFromShadowDom()
991
+ .find(parentContainerSelector)
992
+ .append('<div id="' + containerId + '" style="display:none;"></div>');
993
+ }
994
+
995
+ function selectFromShadowDom() {
996
+ return $(
997
+ document
998
+ .querySelector('swisspost-internet-header')
999
+ .shadowRoot.querySelector('post-klp-login-widget')
1000
+ .shadowRoot.querySelector('.widget-wrapper'),
1001
+ );
1002
+ }
1003
+
1004
+ function renderAnonymousWidget() {
1005
+ selectFromShadowDom()
1006
+ .find('#' + id)
1007
+ .addClass('anonymous');
1008
+ selectFromShadowDom()
1009
+ .find('#' + id)
1010
+ .attr('data-custom-focus-id', 'klp-widget');
1011
+ selectFromShadowDom()
1012
+ .find('#' + id)
1013
+ .html(
1014
+ '<div class="klp-widget-anonymous"><div class="klp-widget-anonymous__wrapper">' +
1015
+ '<a tabindex="' +
1016
+ tabIndex('sign-in') +
1017
+ '" ' +
1018
+ accessKey('sign-in') +
1019
+ ' title="' +
1020
+ text('sign-in') +
1021
+ '" href="' +
1022
+ loginURL() +
1023
+ '" data-custom-focus-target="klp-widget" data-custom-focus-direction="parent" role="button"><span class="klp-widget-anonymous__text">' +
1024
+ text('sign-in') +
1025
+ '</span><svg class="ppm-svg-icon ppm-main-navigation__login-icon" focusable="false"><use xlink:href="#2064_arrow-enter"></use></svg></a>' +
1026
+ '</div></div>',
1027
+ );
1028
+ selectFromShadowDom()
1029
+ .find('#' + id)
1030
+ .on('click touch', function (e) {
1031
+ e.preventDefault();
1032
+ document.location.href = loginURL();
1033
+ return false;
1034
+ });
1035
+ }
1036
+
1037
+ function renderAuthenticatedWidget() {
1038
+ selectFromShadowDom()
1039
+ .find('#' + id)
1040
+ .off('click touch');
1041
+ let info = '',
1042
+ authenticatedSessionTailNameClass = '';
1043
+ if (sessionData.userType === 'B2C') {
1044
+ authenticatedSessionTailNameClass = 'klp-widget-authenticated-session-name u_var_centered';
1045
+ } else {
1046
+ info = sessionData.company;
1047
+ authenticatedSessionTailNameClass = 'klp-widget-authenticated-session-name';
1048
+ }
1049
+ let authenticatedSectionClass = 'klp-widget-authenticated';
1050
+ if (sessionData.support) {
1051
+ authenticatedSectionClass += ' klp-widget-support';
1052
+ }
1053
+ selectFromShadowDom()
1054
+ .find('#' + id)
1055
+ .html(
1056
+ '<div class="' +
1057
+ authenticatedSectionClass +
1058
+ '">' +
1059
+ '<div class="klp-widget-authenticated-session klp-widget-menu-close">' +
1060
+ '<a href="about:blank" role="button" class="klp-widget-authenticated-session-link klp-widget__user" title="' +
1061
+ text('title-text-menu') +
1062
+ '" tabindex="' +
1063
+ tabIndex('toggle-menu') +
1064
+ '" ' +
1065
+ accessKey('toggle-menu') +
1066
+ ' data-dropdown="klp-widget-authenticated-menu" aria-expanded="false" aria-controls="authenticated-menu">' +
1067
+ '<div class="' +
1068
+ authenticatedSessionTailNameClass +
1069
+ '">' +
1070
+ sessionData.name +
1071
+ '&nbsp;' +
1072
+ sessionData.surname +
1073
+ '</div>' +
1074
+ '<span class="initials-mobile">' +
1075
+ sessionData.name.substring(0, 1) +
1076
+ sessionData.surname.substring(0, 1) +
1077
+ '</span>' +
1078
+ '<span class="notification-number"></span>' +
1079
+ '</a>' +
1080
+ getAuthenticatedMenuLinks(authenticatedSessionTailNameClass, info, sessionData) +
1081
+ '</div>' +
1082
+ '</div>',
1083
+ );
1084
+ selectFromShadowDom().find('.notification-number').css('visibility', 'hidden');
1085
+ selectFromShadowDom().find('.notification-number-detail').css('visibility', 'hidden');
1086
+ renderHiddenContainer('#' + id, keepAliveID);
1087
+ selectFromShadowDom()
1088
+ .find('#' + id + ' .klp-widget__user')
1089
+ .on('click touch', function (e) {
1090
+ e.preventDefault();
1091
+ selectFromShadowDom()
1092
+ .find('#' + id + ' .klp-widget__user')
1093
+ .focus();
1094
+ toggleMenu();
1095
+ toggleNotificationsMenu();
1096
+ return false;
1097
+ });
1098
+ selectFromShadowDom()
1099
+ .find('#' + id + ' #klp-widget-authenticated-menu-logout')
1100
+ .on('click touch', function (e) {
1101
+ e.preventDefault();
1102
+ selectFromShadowDom()
1103
+ .find('#' + id + ' #klp-widget-authenticated-menu-logout')
1104
+ .focus();
1105
+ doLogout(logoutURL());
1106
+ return false;
1107
+ });
1108
+ if (isOldChangeCompany() || isChangeUserAndProfile()) {
1109
+ setChangeAccountDialog();
1110
+ }
1111
+ setArrowKeysListeners();
1112
+ }
1113
+
1114
+ function isOldChangeCompany() {
1115
+ return (
1116
+ (sessionData.userType === 'B2B' &&
1117
+ sessionData.canChangeCompany &&
1118
+ sessionData.changeUserAndProfile == null) ||
1119
+ (sessionData.changeUserAndProfile != null && sessionData.changeUserAndProfile === 'profile')
1120
+ );
1121
+ }
1122
+
1123
+ function isChangeUserAndProfile() {
1124
+ return (
1125
+ sessionData.changeUserAndProfile != null &&
1126
+ sessionData.changeUserAndProfile === 'userAndProfile'
1127
+ );
1128
+ }
1129
+
1130
+ function getAuthenticatedMenuLinks(authenticatedSessionTailNameClass, info, sessionData) {
1131
+ let menuList = '';
1132
+ let nameClass = 'name';
1133
+ let infoClass = 'info';
1134
+ if (menuLinks !== undefined) {
1135
+ if (authenticatedSessionTailNameClass.indexOf('centered') !== -1) {
1136
+ nameClass = 'nameCentered';
1137
+ }
1138
+ if (info.length === 0) {
1139
+ infoClass = 'infoHidden';
1140
+ }
1141
+ menuList +=
1142
+ '<li class="name-and-surname">' +
1143
+ '<div class="initials-circle">' +
1144
+ '<div class="initials-container">' +
1145
+ '<div>' +
1146
+ sessionData.name.substring(0, 1) +
1147
+ sessionData.surname.substring(0, 1) +
1148
+ '</div>' +
1149
+ '</div>' +
1150
+ '</div>' +
1151
+ '<div class="nameAndInfoWrapper"><span class="' +
1152
+ nameClass +
1153
+ '">' +
1154
+ sessionData.name +
1155
+ '&nbsp;' +
1156
+ sessionData.surname +
1157
+ '</span>' +
1158
+ '<span class="' +
1159
+ infoClass +
1160
+ '">' +
1161
+ info +
1162
+ '</span></div>' +
1163
+ '</li>';
1164
+
1165
+ $.each(menuLinks, function (index, item) {
1166
+ menuList +=
1167
+ '<li>' +
1168
+ '<a class="notification-link" title="' +
1169
+ item.description +
1170
+ '" href="' +
1171
+ item.url +
1172
+ '"><div class="' +
1173
+ item.iconclass +
1174
+ '"></div><div class="linkContainer">' +
1175
+ '<span class="klp-widget-notification-link-text">' +
1176
+ item.description +
1177
+ '</span></div></a>' +
1178
+ '</li>';
1179
+ });
1180
+ menuList +=
1181
+ '<li>' +
1182
+ '<a class="notification-link" title="' +
1183
+ text('title-text-notifications') +
1184
+ '" href="' +
1185
+ messagesUrl +
1186
+ '"><div class="widget_icon_notification" aria-hidden></div><div class="linkContainer">' +
1187
+ '<span class="klp-widget-notification-link-text">' +
1188
+ text('title-text-notifications') +
1189
+ '</span><span class="notification-number-detail"></span></div></a>' +
1190
+ '</li>';
1191
+ }
1192
+
1193
+ if (sessionData.userType === 'B2C') {
1194
+ const settingEnvLinks = {
1195
+ int01: 'https://serviceint1.post.ch/kvm/app/ui',
1196
+ int02: 'https://serviceint2.post.ch/kvm/app/ui',
1197
+ prod: 'https://service.post.ch/kvm/app/ui',
1198
+ };
1199
+ const settingsLink = `${settingEnvLinks[environment]}/settings`;
1200
+
1201
+ menuList += `
1202
+ <li>
1203
+ <a class="notification-link" href="${settingsLink}">
1204
+ <div class="widget_icon_settings" aria-hidden></div>
1205
+ <div class="linkContainer">
1206
+ <span class="klp-widget-notification-link-text">${texts[currentLang].settings}</span>
1207
+ </div>
1208
+ </a>
1209
+ </li>
1210
+ `;
1211
+ }
1212
+
1213
+ let changeCompanyEntry = '';
1214
+ if (isOldChangeCompany()) {
1215
+ changeCompanyEntry =
1216
+ '<li>' +
1217
+ '<a id="klp-widget-authenticated-menu-changecompany" class="notification-link" tabindex="' +
1218
+ tabIndex('change-company') +
1219
+ '" ' +
1220
+ accessKey('change-company') +
1221
+ ' href="about:blank" role="button" title="' +
1222
+ text('change-company') +
1223
+ '"><div class="widget_icon_changecompany"></div><div class="linkContainer">' +
1224
+ '<span class="klp-widget-notification-link-text">' +
1225
+ text('change-company') +
1226
+ '</span></div></a>' +
1227
+ '</li>';
1228
+ } else if (isChangeUserAndProfile()) {
1229
+ changeCompanyEntry =
1230
+ '<li>' +
1231
+ '<a id="klp-widget-authenticated-menu-changecompany" class="notification-link" tabindex="' +
1232
+ tabIndex('change-account') +
1233
+ '" ' +
1234
+ accessKey('change-company') +
1235
+ ' href="about:blank" role="button" title="' +
1236
+ text('change-account') +
1237
+ '"><div class="widget_icon_changecompany"></div><div class="linkContainer">' +
1238
+ '<span class="klp-widget-notification-link-text">' +
1239
+ text('change-account') +
1240
+ '</span></div></a>' +
1241
+ '</li>';
1242
+ }
1243
+ return (
1244
+ '<div class="klp-widget-authenticated-menu" id="authenticated-menu" data-dropdown-toggler="klp-widget__user">' +
1245
+ '<ul>' +
1246
+ menuList +
1247
+ changeCompanyEntry +
1248
+ '<li>' +
1249
+ '<a id="klp-widget-authenticated-menu-logout" class="notification-link" tabindex="' +
1250
+ tabIndex('sign-out') +
1251
+ '" ' +
1252
+ accessKey('sign-out') +
1253
+ ' title="' +
1254
+ text('sign-out') +
1255
+ '" href="about:blank" role="button"><div class="widget_icon_logout"></div><div class="linkContainer">' +
1256
+ '<span class="klp-widget-notification-link-text">' +
1257
+ text('sign-out') +
1258
+ '</span></div></a>' +
1259
+ '</li>' +
1260
+ '</ul>' +
1261
+ '</div>'
1262
+ );
1263
+ }
1264
+
1265
+ function showDocument(document, documentType) {
1266
+ switch (documentType) {
1267
+ case documentUnreadNotifications:
1268
+ renderNotificationsWidget(document);
1269
+ saveDocumentOnCache(document, documentUnreadNotifications);
1270
+ break;
1271
+ default:
1272
+ log('Unknown documentType received: ' + documentType);
1273
+ }
1274
+ if (typeof documentCallbacks[documentType] == 'function') {
1275
+ documentCallbacks[documentType](document);
1276
+ }
1277
+ }
1278
+
1279
+ function removeDocument(documentType) {
1280
+ switch (documentType) {
1281
+ case documentUnreadNotifications:
1282
+ removeDocumentFromCache(documentUnreadNotifications);
1283
+ break;
1284
+ default:
1285
+ log('Unknown documentType received: ' + documentType);
1286
+ }
1287
+ if (typeof documentCallbacks[documentType] == 'function') {
1288
+ documentCallbacks[documentType](undefined);
1289
+ }
1290
+ }
1291
+
1292
+ function renderNotificationsWidget(notifications) {
1293
+ if (
1294
+ notifications != null &&
1295
+ $('.notification-number').text() !== notifications.unreadNotifications
1296
+ ) {
1297
+ unreadNotifications = notifications.unreadNotifications;
1298
+ if (unreadNotifications === 0) {
1299
+ $('.notification-number').css('visibility', 'hidden');
1300
+ } else {
1301
+ $('.notification-number').css('visibility', 'visible');
1302
+ }
1303
+ }
1304
+ }
1305
+
1306
+ function toggleMenu() {
1307
+ toggleDropdown(selectFromShadowDom().find('#' + id + ' .klp-widget-authenticated-menu'));
1308
+ }
1309
+
1310
+ function toggleNotificationsMenu() {
1311
+ if (unreadNotifications !== 0) {
1312
+ if (unreadNotifications > 99) {
1313
+ selectFromShadowDom()
1314
+ .find('.notification-number-detail')
1315
+ .css('visibility', 'visible')
1316
+ .text('99+');
1317
+ } else {
1318
+ selectFromShadowDom()
1319
+ .find('.notification-number-detail')
1320
+ .css('visibility', 'visible')
1321
+ .text(unreadNotifications);
1322
+ }
1323
+ } else {
1324
+ selectFromShadowDom().find('.notification-number-detail').css('visibility', 'hidden');
1325
+ }
1326
+ }
1327
+
1328
+ function isUserAuthenticated() {
1329
+ return typeof sessionData !== 'undefined';
1330
+ }
1331
+
1332
+ function getUserType() {
1333
+ if (!isUserAuthenticated()) {
1334
+ return 'NONE';
1335
+ }
1336
+ return sessionData.userType;
1337
+ }
1338
+
1339
+ function getCurrentAuthLevel() {
1340
+ if (!isUserAuthenticated()) {
1341
+ return 'NONE';
1342
+ }
1343
+ return sessionData.authLevel;
1344
+ }
1345
+
1346
+ function changeLoginURL(loginURL) {
1347
+ if (loginURL !== undefined) {
1348
+ appLoginURL = loginURL;
1349
+ renderWidget();
1350
+ log('Widget appLoginURL has been replaced with ' + appLoginURL);
1351
+ }
1352
+ }
1353
+
1354
+ function updateWidget(options) {
1355
+ if (options !== undefined) {
1356
+ conf = $.extend(conf, options);
1357
+ renderWidget();
1358
+ }
1359
+ log('Widget has been updated');
1360
+ }
1361
+
1362
+ function login(data, ttl, callback) {
1363
+ sessionData = data;
1364
+ renderWidget();
1365
+ installKeepAliveTimerHandler();
1366
+ persistState(ttl);
1367
+ if (callback && typeof loginCallback == 'function') {
1368
+ loginCallback();
1369
+ log('loginCallback has been called: ' + loginCallback);
1370
+ }
1371
+ }
1372
+
1373
+ function logout() {
1374
+ sessionData = undefined;
1375
+ address = undefined;
1376
+ removePersistedState();
1377
+ removeAllDocumentFromCache();
1378
+ renderWidget();
1379
+ uninstallKeepAliveTimerHandler();
1380
+ if (typeof logoutCallback == 'function') {
1381
+ logoutCallback();
1382
+ }
1383
+ }
1384
+
1385
+ function registerEventsHandler() {
1386
+ if (eventBus) {
1387
+ eventBus.registerHandler(address, function (message, replyTo) {
1388
+ handleMessage(message);
1389
+ });
1390
+ }
1391
+ }
1392
+
1393
+ function handleMessage(message) {
1394
+ log('Message received: ' + JSON.stringify(message));
1395
+ audit(message);
1396
+ retrySubscribeOnFail = false;
1397
+ switch (message.typ) {
1398
+ case 'ukn':
1399
+ if (message.sub) {
1400
+ retrySubscribeOnFail = true;
1401
+ logout();
1402
+ subscribe();
1403
+ } else {
1404
+ logout();
1405
+ }
1406
+ break;
1407
+ case 'sub':
1408
+ address = message.adr;
1409
+ login(message.data, message.ttl, false);
1410
+ openCommunication();
1411
+ break;
1412
+ case 'hi':
1413
+ login(message.data, message.ttl, true);
1414
+ removeDocumentFromCache(documentUnreadNotifications);
1415
+ break;
1416
+ case 'bye':
1417
+ logout();
1418
+ break;
1419
+ case 'doc':
1420
+ showDocument(message.doc, message.doctyp);
1421
+ break;
1422
+ case 'rem':
1423
+ removeDocument(message.doctyp);
1424
+ break;
1425
+ default:
1426
+ log('Unknown event received: ' + message.typ);
1427
+ logout();
1428
+ break;
1429
+ }
1430
+ }
1431
+
1432
+ function trySubscription() {
1433
+ if (isCurrentLocationPostCh()) {
1434
+ return null != getControlCookieVal();
1435
+ } else {
1436
+ return true;
1437
+ }
1438
+ }
1439
+
1440
+ function subscribe() {
1441
+ if (!address) {
1442
+ if (trySubscription()) {
1443
+ log('Subscribing to get an address');
1444
+ const startTime = new Date().getTime();
1445
+ fetch(platformEndPoints.subscribe, {
1446
+ method: 'GET',
1447
+ credentials: 'include',
1448
+ mode: 'cors',
1449
+ })
1450
+ .then(message => message.json())
1451
+ .then(message => handleMessage(message))
1452
+ .catch(error => {
1453
+ log('Failed to subscribe: ' + error.message);
1454
+ logout();
1455
+ renderWidget();
1456
+ });
1457
+ logPerformanceMetric('subscribe()', new Date().getTime() - startTime);
1458
+ } else {
1459
+ log('Control cookie not found, skipping subscription');
1460
+ renderWidget();
1461
+ }
1462
+ } else {
1463
+ log('Address available, skipping subscription');
1464
+ openCommunication();
1465
+ }
1466
+ }
1467
+
1468
+ function openCommunication() {
1469
+ if (!eventBus) {
1470
+ eventBus = new vertx.EventBus(platformEndPoints.eventbus, {
1471
+ debug: conf.debug,
1472
+ devel: conf.debug,
1473
+ });
1474
+ eventBus.onopen = function () {
1475
+ log('EventBus opened');
1476
+ registerEventsHandler();
1477
+ $(window).on('beforeunload', closeCommunication);
1478
+ };
1479
+ eventBus.onclose = function () {
1480
+ log('EventBus closed');
1481
+ log(
1482
+ 'Communication closed with retrySubscribeOnFail=' +
1483
+ retrySubscribeOnFail +
1484
+ '. Retrying subscribe',
1485
+ );
1486
+ eventBus = null;
1487
+ $(window).off('beforeunload', closeCommunication);
1488
+ if (retrySubscribeOnFail) {
1489
+ retrySubscribeOnFail = false;
1490
+ address = undefined;
1491
+ subscribe();
1492
+ }
1493
+ };
1494
+ }
1495
+ }
1496
+
1497
+ function closeCommunication() {
1498
+ if (eventBus) {
1499
+ eventBus.close();
1500
+ }
1501
+ }
1502
+
1503
+ function renderWidget() {
1504
+ if (typeof sessionData !== 'undefined') {
1505
+ renderAuthenticatedWidget();
1506
+ } else {
1507
+ renderAnonymousWidget();
1508
+ }
1509
+ document.dispatchEvent(new CustomEvent('wepploginwidget_widget_ready'));
1510
+ measureWidgetShowsUp();
1511
+ selectFromShadowDom().find('.klp-widget-authenticated-session-link').click();
1512
+ }
1513
+
1514
+ function init() {
1515
+ restoreState();
1516
+ subscribe();
1517
+ if (conf.keepAliveOnInit && isUserAuthenticated()) {
1518
+ keepAliveSessionsOnInit();
1519
+ }
1520
+ initIFrameCommunication();
1521
+ }
1522
+
1523
+ function toggleDropdown(dropdownToToggle) {
1524
+ if (dropdownToToggle.is(':visible')) {
1525
+ selectFromShadowDom()
1526
+ .find('#' + id)
1527
+ .removeClass('bubble');
1528
+ closeDropdowns();
1529
+ return;
1530
+ }
1531
+ closeDropdowns();
1532
+ selectFromShadowDom()
1533
+ .find('.' + dropdownToToggle.attr('data-dropdown-toggler'))
1534
+ .attr('aria-expanded', true);
1535
+ selectFromShadowDom()
1536
+ .find('#' + id)
1537
+ .addClass('bubble');
1538
+ dropdownToToggle.show();
1539
+ $(document).on('click', closeDropdowns);
1540
+ if (dropdownToToggle.hasClass('klp-widget-authenticated-menu')) {
1541
+ dropdownToToggle
1542
+ .parent()
1543
+ .removeClass('klp-widget-menu-close')
1544
+ .addClass('klp-widget-menu-open');
1545
+ }
1546
+ }
1547
+
1548
+ function closeDropdowns(e) {
1549
+ if (e != null) {
1550
+ if (
1551
+ selectFromShadowDom()
1552
+ .find(e.target)
1553
+ .parents('#' + id).length > 0
1554
+ ) {
1555
+ return;
1556
+ }
1557
+ }
1558
+ selectFromShadowDom().find(document).off('click', closeDropdowns);
1559
+ selectFromShadowDom()
1560
+ .find('#' + id)
1561
+ .removeClass('bubble');
1562
+ selectFromShadowDom()
1563
+ .find('#' + id + ' .klp-widget-authenticated-menu')
1564
+ .hide()
1565
+ .parent()
1566
+ .removeClass('klp-widget-menu-open')
1567
+ .addClass('klp-widget-menu-close');
1568
+ selectFromShadowDom()
1569
+ .find(
1570
+ '.' +
1571
+ selectFromShadowDom()
1572
+ .find('#' + id + ' .klp-widget-authenticated-menu')
1573
+ .attr('data-dropdown-toggler'),
1574
+ )
1575
+ .attr('aria-expanded', false);
1576
+ }
1577
+
1578
+ function setArrowKeysListeners() {
1579
+ selectFromShadowDom()
1580
+ .find('.klp-widget__user')
1581
+ .on('keydown', function (event) {
1582
+ if (event.which < 37 || event.which > 40) {
1583
+ return;
1584
+ }
1585
+ event.preventDefault();
1586
+ const parent = selectFromShadowDom().find(this).parent();
1587
+ const dropdown = selectFromShadowDom().find(
1588
+ '.' + selectFromShadowDom().find(this).attr('data-dropdown'),
1589
+ );
1590
+ switch (event.which) {
1591
+ case 37:
1592
+ if (parent.prev().length) {
1593
+ parent.prev().find('a').focus();
1594
+ }
1595
+ if (dropdown.is(':visible')) {
1596
+ selectFromShadowDom().find(this).click();
1597
+ }
1598
+ break;
1599
+ case 38:
1600
+ if (dropdown.is(':visible')) {
1601
+ selectFromShadowDom().find(this).click();
1602
+ }
1603
+ break;
1604
+ case 39:
1605
+ if (parent.next().length) {
1606
+ parent.next().find('a').focus();
1607
+ }
1608
+ if (dropdown.is(':visible')) {
1609
+ selectFromShadowDom().find(this).click();
1610
+ }
1611
+ break;
1612
+ case 40:
1613
+ if (!dropdown.is(':visible')) {
1614
+ selectFromShadowDom().find(this).click();
1615
+ }
1616
+ dropdown.find('li:first a').focus();
1617
+ break;
1618
+ }
1619
+ });
1620
+ selectFromShadowDom()
1621
+ .find('.klp-widget-authenticated-menu')
1622
+ .on('keydown', 'a', function (event) {
1623
+ if (event.which < 37 || event.which > 40) {
1624
+ return;
1625
+ }
1626
+ event.preventDefault();
1627
+ const parent = selectFromShadowDom().find(this).parent();
1628
+ const dropdownToggler = selectFromShadowDom().find(
1629
+ '.' +
1630
+ selectFromShadowDom().find(this).parents('div').first().attr('data-dropdown-toggler'),
1631
+ );
1632
+ switch (event.which) {
1633
+ case 37:
1634
+ case 38:
1635
+ if (parent.prev('li').length > 0) {
1636
+ parent.prev('li').find('a').focus();
1637
+ } else {
1638
+ dropdownToggler.click().focus();
1639
+ }
1640
+ break;
1641
+ case 39:
1642
+ case 40:
1643
+ if (parent.next('li').length > 0) {
1644
+ parent.next('li').find('a').focus();
1645
+ }
1646
+ break;
1647
+ }
1648
+ });
1649
+ $('body').on('keydown', function (event) {
1650
+ if (event.which !== 27) {
1651
+ return;
1652
+ }
1653
+ closeDropdowns();
1654
+ });
1655
+ }
1656
+ init();
1657
+ return {
1658
+ keepAliveSessions: function () {
1659
+ keepAliveSessions();
1660
+ },
1661
+ isUserAuthenticated: function () {
1662
+ return isUserAuthenticated();
1663
+ },
1664
+ getUserType: function () {
1665
+ return getUserType();
1666
+ },
1667
+ getCurrentAuthLevel: function () {
1668
+ return getCurrentAuthLevel();
1669
+ },
1670
+ changeAppLoginURL: function (appLoginURL) {
1671
+ changeLoginURL(appLoginURL);
1672
+ },
1673
+ updateWidget: function (options) {
1674
+ updateWidget(options);
1675
+ },
1676
+ registerLoginCallback: function (callback) {
1677
+ log('Login callback has been registered');
1678
+ loginCallback = callback;
1679
+ },
1680
+ unregisterLoginCallback: function () {
1681
+ log('Login callback has been un-registered');
1682
+ loginCallback = undefined;
1683
+ },
1684
+ registerKeepAliveCallback: function (callback) {
1685
+ log('KeepAlive callback has been registered');
1686
+ keepAliveCallback = callback;
1687
+ },
1688
+ unregisterKeepAliveCallback: function () {
1689
+ log('KeepAlive callback has been un-registered');
1690
+ keepAliveCallback = undefined;
1691
+ },
1692
+ registerLogoutCallback: function (callback) {
1693
+ log('Logout callback has been registered');
1694
+ logoutCallback = callback;
1695
+ },
1696
+ unregisterLogoutCallback: function () {
1697
+ log('Logout callback has been un-registered');
1698
+ logoutCallback = undefined;
1699
+ },
1700
+ registerDocumentCallback: function (documentType, callback) {
1701
+ log('Document callback for documentType ' + documentType + ' has been registered');
1702
+ documentCallbacks[documentType] = callback;
1703
+ },
1704
+ unregisterDocumentCallback: function (documentType) {
1705
+ log('Document callback for documentType ' + documentType + ' has been un-registered');
1706
+ documentCallbacks[documentType] = undefined;
1707
+ },
1708
+ version: function () {
1709
+ return version;
1710
+ },
1711
+ setDebug: function (debug) {
1712
+ conf.debug = debug;
1713
+ },
1714
+ };
1715
+ };
1716
+ })(jQuery);