@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.
- package/LICENSE +202 -0
- package/dist/cjs/_commonjsHelpers-537d719a.js +22 -0
- package/dist/cjs/_commonjsHelpers-537d719a.js.map +1 -0
- package/dist/cjs/bodyScrollLock.esm-59f17217.js +285 -0
- package/dist/cjs/bodyScrollLock.esm-59f17217.js.map +1 -0
- package/dist/cjs/if.component-313f59b8.js +12 -0
- package/dist/cjs/if.component-313f59b8.js.map +1 -0
- package/dist/cjs/index-5751975e.js +1735 -0
- package/dist/cjs/index-5751975e.js.map +1 -0
- package/dist/cjs/index-e7245d60.js +144 -0
- package/dist/cjs/index-e7245d60.js.map +1 -0
- package/dist/cjs/index.cjs.js +4 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/klp-widget.controller-675b23db.js +15862 -0
- package/dist/cjs/klp-widget.controller-675b23db.js.map +1 -0
- package/dist/cjs/language.service-a80ae01d.js +152 -0
- package/dist/cjs/language.service-a80ae01d.js.map +1 -0
- package/dist/cjs/loader.cjs.js +24 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/post-klp-login-widget.cjs.entry.js +46 -0
- package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -0
- package/dist/cjs/post-language-switch.cjs.entry.js +103 -0
- package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -0
- package/dist/cjs/post-logo.cjs.entry.js +67 -0
- package/dist/cjs/post-logo.cjs.entry.js.map +1 -0
- package/dist/cjs/post-main-navigation.cjs.entry.js +243 -0
- package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -0
- package/dist/cjs/post-meta-navigation.cjs.entry.js +28 -0
- package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -0
- package/dist/cjs/post-search.cjs.entry.js +2739 -0
- package/dist/cjs/post-search.cjs.entry.js.map +1 -0
- package/dist/cjs/post-skiplinks.cjs.entry.js +54 -0
- package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -0
- package/dist/cjs/store-47e14589.js +202 -0
- package/dist/cjs/store-47e14589.js.map +1 -0
- package/dist/cjs/svg-icon.component-10fbda11.js +10 -0
- package/dist/cjs/svg-icon.component-10fbda11.js.map +1 -0
- package/dist/cjs/svg-sprite.component-c3b454b3.js +48 -0
- package/dist/cjs/svg-sprite.component-c3b454b3.js.map +1 -0
- package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +3488 -0
- package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -0
- package/dist/cjs/swisspost-internet-footer.cjs.entry.js +148 -0
- package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -0
- package/dist/cjs/swisspost-internet-header.cjs.entry.js +704 -0
- package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -0
- package/dist/cjs/swisspost-internet-header.cjs.js +28 -0
- package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -0
- package/dist/cjs/ui.service-db4a8252.js +35 -0
- package/dist/cjs/ui.service-db4a8252.js.map +1 -0
- package/dist/cjs/utils-b6014257.js +22 -0
- package/dist/cjs/utils-b6014257.js.map +1 -0
- package/dist/collection/assets/config/test-configuration.json +4067 -0
- package/dist/collection/assets/i18n/translations.js +38 -0
- package/dist/collection/assets/i18n/translations.js.map +1 -0
- package/dist/collection/assets/js/klp-login-widget.js +1716 -0
- package/dist/collection/assets/js/sockjs-client.js +5134 -0
- package/dist/collection/collection-manifest.json +27 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js +11 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js.map +1 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js +42 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js.map +1 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +8 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js +6 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js.map +1 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js +12 -0
- package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js.map +1 -0
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +2724 -0
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +253 -0
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js +12 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js.map +1 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js +24 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js.map +1 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js +6 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js.map +1 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js +6 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js.map +1 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js +5 -0
- package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js.map +1 -0
- package/dist/collection/components/post-internet-footer/post-internet-footer.css +2501 -0
- package/dist/collection/components/post-internet-footer/post-internet-footer.js +86 -0
- package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -0
- package/dist/collection/components/post-internet-header/post-internet-header.css +340 -0
- package/dist/collection/components/post-internet-header/post-internet-header.js +676 -0
- package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -0
- package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js +14 -0
- package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js.map +1 -0
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +1341 -0
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +67 -0
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -0
- package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +9 -0
- package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -0
- package/dist/collection/components/post-language-switch/post-language-switch.css +321 -0
- package/dist/collection/components/post-language-switch/post-language-switch.js +186 -0
- package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -0
- package/dist/collection/components/post-logo/logo-sprite.component.js +4 -0
- package/dist/collection/components/post-logo/logo-sprite.component.js.map +1 -0
- package/dist/collection/components/post-logo/post-logo.css +239 -0
- package/dist/collection/components/post-logo/post-logo.js +60 -0
- package/dist/collection/components/post-logo/post-logo.js.map +1 -0
- package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +13 -0
- package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -0
- package/dist/collection/components/post-main-navigation/post-main-navigation.css +592 -0
- package/dist/collection/components/post-main-navigation/post-main-navigation.js +347 -0
- package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -0
- package/dist/collection/components/post-meta-navigation/post-meta-navigation.css +290 -0
- package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +67 -0
- package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -0
- package/dist/collection/components/post-search/post-search.css +3028 -0
- package/dist/collection/components/post-search/post-search.js +362 -0
- package/dist/collection/components/post-search/post-search.js.map +1 -0
- package/dist/collection/components/post-skiplinks/post-skiplinks.css +20 -0
- package/dist/collection/components/post-skiplinks/post-skiplinks.js +51 -0
- package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -0
- package/dist/collection/data/store.js +11 -0
- package/dist/collection/data/store.js.map +1 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/models/breadcrumbs.model.js +2 -0
- package/dist/collection/models/breadcrumbs.model.js.map +1 -0
- package/dist/collection/models/coveo.model.js +2 -0
- package/dist/collection/models/coveo.model.js.map +1 -0
- package/dist/collection/models/footer.model.js +2 -0
- package/dist/collection/models/footer.model.js.map +1 -0
- package/dist/collection/models/general.model.js +2 -0
- package/dist/collection/models/general.model.js.map +1 -0
- package/dist/collection/models/geocode.model.js +10 -0
- package/dist/collection/models/geocode.model.js.map +1 -0
- package/dist/collection/models/header.model.js +2 -0
- package/dist/collection/models/header.model.js.map +1 -0
- package/dist/collection/models/implementor.model.js +2 -0
- package/dist/collection/models/implementor.model.js.map +1 -0
- package/dist/collection/models/language.model.js +2 -0
- package/dist/collection/models/language.model.js.map +1 -0
- package/dist/collection/models/track-and-trace.model.js +2 -0
- package/dist/collection/models/track-and-trace.model.js.map +1 -0
- package/dist/collection/services/config.service.js +170 -0
- package/dist/collection/services/config.service.js.map +1 -0
- package/dist/collection/services/language.service.js +107 -0
- package/dist/collection/services/language.service.js.map +1 -0
- package/dist/collection/services/route.service.js +163 -0
- package/dist/collection/services/route.service.js.map +1 -0
- package/dist/collection/services/search/coveo.service.js +34 -0
- package/dist/collection/services/search/coveo.service.js.map +1 -0
- package/dist/collection/services/search/coveo.settings.js +19 -0
- package/dist/collection/services/search/coveo.settings.js.map +1 -0
- package/dist/collection/services/search/parcel.service.js +54 -0
- package/dist/collection/services/search/parcel.service.js.map +1 -0
- package/dist/collection/services/search/places.service.js +95 -0
- package/dist/collection/services/search/places.service.js.map +1 -0
- package/dist/collection/services/search/places.settings.js +16 -0
- package/dist/collection/services/search/places.settings.js.map +1 -0
- package/dist/collection/services/search/search-utilities.js +26 -0
- package/dist/collection/services/search/search-utilities.js.map +1 -0
- package/dist/collection/services/search/search.service.js +42 -0
- package/dist/collection/services/search/search.service.js.map +1 -0
- package/dist/collection/services/ui.service.js +30 -0
- package/dist/collection/services/ui.service.js.map +1 -0
- package/dist/collection/tests/setup-tests.js +14 -0
- package/dist/collection/tests/setup-tests.js.map +1 -0
- package/dist/collection/utils/highlighted.component.js +11 -0
- package/dist/collection/utils/highlighted.component.js.map +1 -0
- package/dist/collection/utils/if.component.js +7 -0
- package/dist/collection/utils/if.component.js.map +1 -0
- package/dist/collection/utils/svg-icon.component.js +3 -0
- package/dist/collection/utils/svg-icon.component.js.map +1 -0
- package/dist/collection/utils/svg-sprite.component.js +3 -0
- package/dist/collection/utils/svg-sprite.component.js.map +1 -0
- package/dist/collection/utils/utils.js +16 -0
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/components/_commonjsHelpers.js +19 -0
- package/dist/components/_commonjsHelpers.js.map +1 -0
- package/dist/components/bodyScrollLock.esm.js +281 -0
- package/dist/components/bodyScrollLock.esm.js.map +1 -0
- package/dist/components/index.d.ts +39 -0
- package/dist/components/index.js +36 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index2.js +141 -0
- package/dist/components/index2.js.map +1 -0
- package/dist/components/klp-widget.controller.js +15860 -0
- package/dist/components/klp-widget.controller.js.map +1 -0
- package/dist/components/language.service.js +148 -0
- package/dist/components/language.service.js.map +1 -0
- package/dist/components/post-klp-login-widget.d.ts +11 -0
- package/dist/components/post-klp-login-widget.js +8 -0
- package/dist/components/post-klp-login-widget.js.map +1 -0
- package/dist/components/post-klp-login-widget2.js +59 -0
- package/dist/components/post-klp-login-widget2.js.map +1 -0
- package/dist/components/post-language-switch.d.ts +11 -0
- package/dist/components/post-language-switch.js +8 -0
- package/dist/components/post-language-switch.js.map +1 -0
- package/dist/components/post-language-switch2.js +118 -0
- package/dist/components/post-language-switch2.js.map +1 -0
- package/dist/components/post-logo.d.ts +11 -0
- package/dist/components/post-logo.js +8 -0
- package/dist/components/post-logo.js.map +1 -0
- package/dist/components/post-logo2.js +80 -0
- package/dist/components/post-logo2.js.map +1 -0
- package/dist/components/post-main-navigation.d.ts +11 -0
- package/dist/components/post-main-navigation.js +8 -0
- package/dist/components/post-main-navigation.js.map +1 -0
- package/dist/components/post-main-navigation2.js +260 -0
- package/dist/components/post-main-navigation2.js.map +1 -0
- package/dist/components/post-meta-navigation.d.ts +11 -0
- package/dist/components/post-meta-navigation.js +8 -0
- package/dist/components/post-meta-navigation.js.map +1 -0
- package/dist/components/post-meta-navigation2.js +42 -0
- package/dist/components/post-meta-navigation2.js.map +1 -0
- package/dist/components/post-search.d.ts +11 -0
- package/dist/components/post-search.js +8 -0
- package/dist/components/post-search.js.map +1 -0
- package/dist/components/post-search2.js +2763 -0
- package/dist/components/post-search2.js.map +1 -0
- package/dist/components/post-skiplinks.d.ts +11 -0
- package/dist/components/post-skiplinks.js +8 -0
- package/dist/components/post-skiplinks.js.map +1 -0
- package/dist/components/post-skiplinks2.js +64 -0
- package/dist/components/post-skiplinks2.js.map +1 -0
- package/dist/components/store.js +199 -0
- package/dist/components/store.js.map +1 -0
- package/dist/components/svg-icon.component.js +8 -0
- package/dist/components/svg-icon.component.js.map +1 -0
- package/dist/components/svg-sprite.component.js +46 -0
- package/dist/components/svg-sprite.component.js.map +1 -0
- package/dist/components/swisspost-internet-breadcrumbs.d.ts +11 -0
- package/dist/components/swisspost-internet-breadcrumbs.js +3509 -0
- package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -0
- package/dist/components/swisspost-internet-footer.d.ts +11 -0
- package/dist/components/swisspost-internet-footer.js +164 -0
- package/dist/components/swisspost-internet-footer.js.map +1 -0
- package/dist/components/swisspost-internet-header.d.ts +11 -0
- package/dist/components/swisspost-internet-header.js +779 -0
- package/dist/components/swisspost-internet-header.js.map +1 -0
- package/dist/components/ui.service.js +32 -0
- package/dist/components/ui.service.js.map +1 -0
- package/dist/components/utils.js +19 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/esm/_commonjsHelpers-9943807e.js +19 -0
- package/dist/esm/_commonjsHelpers-9943807e.js.map +1 -0
- package/dist/esm/bodyScrollLock.esm-afcc00e3.js +281 -0
- package/dist/esm/bodyScrollLock.esm-afcc00e3.js.map +1 -0
- package/dist/esm/if.component-542fb8c3.js +10 -0
- package/dist/esm/if.component-542fb8c3.js.map +1 -0
- package/dist/esm/index-066666f4.js +1704 -0
- package/dist/esm/index-066666f4.js.map +1 -0
- package/dist/esm/index-a75df186.js +141 -0
- package/dist/esm/index-a75df186.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/klp-widget.controller-be1eeb16.js +15860 -0
- package/dist/esm/klp-widget.controller-be1eeb16.js.map +1 -0
- package/dist/esm/language.service-e49858e0.js +148 -0
- package/dist/esm/language.service-e49858e0.js.map +1 -0
- package/dist/esm/loader.js +20 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/polyfills/core-js.js +11 -0
- package/dist/esm/polyfills/css-shim.js +1 -0
- package/dist/esm/polyfills/dom.js +79 -0
- package/dist/esm/polyfills/es5-html-element.js +1 -0
- package/dist/esm/polyfills/index.js +34 -0
- package/dist/esm/polyfills/system.js +6 -0
- package/dist/esm/post-klp-login-widget.entry.js +42 -0
- package/dist/esm/post-klp-login-widget.entry.js.map +1 -0
- package/dist/esm/post-language-switch.entry.js +99 -0
- package/dist/esm/post-language-switch.entry.js.map +1 -0
- package/dist/esm/post-logo.entry.js +63 -0
- package/dist/esm/post-logo.entry.js.map +1 -0
- package/dist/esm/post-main-navigation.entry.js +239 -0
- package/dist/esm/post-main-navigation.entry.js.map +1 -0
- package/dist/esm/post-meta-navigation.entry.js +24 -0
- package/dist/esm/post-meta-navigation.entry.js.map +1 -0
- package/dist/esm/post-search.entry.js +2735 -0
- package/dist/esm/post-search.entry.js.map +1 -0
- package/dist/esm/post-skiplinks.entry.js +50 -0
- package/dist/esm/post-skiplinks.entry.js.map +1 -0
- package/dist/esm/store-d495dc07.js +199 -0
- package/dist/esm/store-d495dc07.js.map +1 -0
- package/dist/esm/svg-icon.component-1b1b27a2.js +8 -0
- package/dist/esm/svg-icon.component-1b1b27a2.js.map +1 -0
- package/dist/esm/svg-sprite.component-ec0ac38c.js +46 -0
- package/dist/esm/svg-sprite.component-ec0ac38c.js.map +1 -0
- package/dist/esm/swisspost-internet-breadcrumbs.entry.js +3484 -0
- package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -0
- package/dist/esm/swisspost-internet-footer.entry.js +144 -0
- package/dist/esm/swisspost-internet-footer.entry.js.map +1 -0
- package/dist/esm/swisspost-internet-header.entry.js +700 -0
- package/dist/esm/swisspost-internet-header.entry.js.map +1 -0
- package/dist/esm/swisspost-internet-header.js +23 -0
- package/dist/esm/swisspost-internet-header.js.map +1 -0
- package/dist/esm/ui.service-1d9b0f51.js +32 -0
- package/dist/esm/ui.service-1d9b0f51.js.map +1 -0
- package/dist/esm/utils-5bf107ff.js +19 -0
- package/dist/esm/utils-5bf107ff.js.map +1 -0
- package/dist/esm-es5/_commonjsHelpers-9943807e.js +2 -0
- package/dist/esm-es5/_commonjsHelpers-9943807e.js.map +1 -0
- package/dist/esm-es5/bodyScrollLock.esm-afcc00e3.js +2 -0
- package/dist/esm-es5/bodyScrollLock.esm-afcc00e3.js.map +1 -0
- package/dist/esm-es5/if.component-542fb8c3.js +2 -0
- package/dist/esm-es5/if.component-542fb8c3.js.map +1 -0
- package/dist/esm-es5/index-066666f4.js +3 -0
- package/dist/esm-es5/index-066666f4.js.map +1 -0
- package/dist/esm-es5/index-a75df186.js +2 -0
- package/dist/esm-es5/index-a75df186.js.map +1 -0
- package/dist/esm-es5/index.js +2 -0
- package/dist/esm-es5/index.js.map +1 -0
- package/dist/esm-es5/klp-widget.controller-be1eeb16.js +27 -0
- package/dist/esm-es5/klp-widget.controller-be1eeb16.js.map +1 -0
- package/dist/esm-es5/language.service-e49858e0.js +2 -0
- package/dist/esm-es5/language.service-e49858e0.js.map +1 -0
- package/dist/esm-es5/loader.js +2 -0
- package/dist/esm-es5/loader.js.map +1 -0
- package/dist/esm-es5/post-klp-login-widget.entry.js +2 -0
- package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -0
- package/dist/esm-es5/post-language-switch.entry.js +2 -0
- package/dist/esm-es5/post-language-switch.entry.js.map +1 -0
- package/dist/esm-es5/post-logo.entry.js +2 -0
- package/dist/esm-es5/post-logo.entry.js.map +1 -0
- package/dist/esm-es5/post-main-navigation.entry.js +2 -0
- package/dist/esm-es5/post-main-navigation.entry.js.map +1 -0
- package/dist/esm-es5/post-meta-navigation.entry.js +2 -0
- package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -0
- package/dist/esm-es5/post-search.entry.js +2 -0
- package/dist/esm-es5/post-search.entry.js.map +1 -0
- package/dist/esm-es5/post-skiplinks.entry.js +2 -0
- package/dist/esm-es5/post-skiplinks.entry.js.map +1 -0
- package/dist/esm-es5/store-d495dc07.js +2 -0
- package/dist/esm-es5/store-d495dc07.js.map +1 -0
- package/dist/esm-es5/svg-icon.component-1b1b27a2.js +2 -0
- package/dist/esm-es5/svg-icon.component-1b1b27a2.js.map +1 -0
- package/dist/esm-es5/svg-sprite.component-ec0ac38c.js +2 -0
- package/dist/esm-es5/svg-sprite.component-ec0ac38c.js.map +1 -0
- package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +6 -0
- package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -0
- package/dist/esm-es5/swisspost-internet-footer.entry.js +2 -0
- package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -0
- package/dist/esm-es5/swisspost-internet-header.entry.js +2 -0
- package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -0
- package/dist/esm-es5/swisspost-internet-header.js +2 -0
- package/dist/esm-es5/swisspost-internet-header.js.map +1 -0
- package/dist/esm-es5/ui.service-1d9b0f51.js +2 -0
- package/dist/esm-es5/ui.service-1d9b0f51.js.map +1 -0
- package/dist/esm-es5/utils-5bf107ff.js +2 -0
- package/dist/esm-es5/utils-5bf107ff.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/swisspost-internet-header/assets/config/test-configuration.json +4067 -0
- package/dist/swisspost-internet-header/index.esm.js +2 -0
- package/dist/swisspost-internet-header/index.esm.js.map +1 -0
- package/dist/swisspost-internet-header/p-00fd320e.entry.js +2 -0
- package/dist/swisspost-internet-header/p-00fd320e.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-0e2ec555.js +2 -0
- package/dist/swisspost-internet-header/p-0e2ec555.js.map +1 -0
- package/dist/swisspost-internet-header/p-112455b1.js +2 -0
- package/dist/swisspost-internet-header/p-112455b1.js.map +1 -0
- package/dist/swisspost-internet-header/p-17a47667.system.js +2 -0
- package/dist/swisspost-internet-header/p-17a47667.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-1b8f9bc8.system.js +3 -0
- package/dist/swisspost-internet-header/p-1b8f9bc8.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-2eb04045.entry.js +2 -0
- package/dist/swisspost-internet-header/p-2eb04045.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-3ba40afe.js +2 -0
- package/dist/swisspost-internet-header/p-3ba40afe.js.map +1 -0
- package/dist/swisspost-internet-header/p-3eb881c3.js +2 -0
- package/dist/swisspost-internet-header/p-3eb881c3.js.map +1 -0
- package/dist/swisspost-internet-header/p-43cbbf42.entry.js +2 -0
- package/dist/swisspost-internet-header/p-43cbbf42.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-4654b2af.system.js +2 -0
- package/dist/swisspost-internet-header/p-4654b2af.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-4c9ec2d8.system.js +27 -0
- package/dist/swisspost-internet-header/p-4c9ec2d8.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-5032057e.js +3 -0
- package/dist/swisspost-internet-header/p-5032057e.js.map +1 -0
- package/dist/swisspost-internet-header/p-50ea2036.system.js +2 -0
- package/dist/swisspost-internet-header/p-50ea2036.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-549b62ba.system.js +2 -0
- package/dist/swisspost-internet-header/p-549b62ba.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-5e43c5e0.js +2 -0
- package/dist/swisspost-internet-header/p-5e43c5e0.js.map +1 -0
- package/dist/swisspost-internet-header/p-69c64c29.js +2 -0
- package/dist/swisspost-internet-header/p-69c64c29.js.map +1 -0
- package/dist/swisspost-internet-header/p-6a09e0b4.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-6a09e0b4.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-74932c29.entry.js +6 -0
- package/dist/swisspost-internet-header/p-74932c29.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-78f653be.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-78f653be.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-7e653a26.js +27 -0
- package/dist/swisspost-internet-header/p-7e653a26.js.map +1 -0
- package/dist/swisspost-internet-header/p-7f16a46b.entry.js +2 -0
- package/dist/swisspost-internet-header/p-7f16a46b.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-8717445f.entry.js +2 -0
- package/dist/swisspost-internet-header/p-8717445f.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-883f9547.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-883f9547.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-9509f6c7.system.js +2 -0
- package/dist/swisspost-internet-header/p-9509f6c7.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-9d0a7039.entry.js +2 -0
- package/dist/swisspost-internet-header/p-9d0a7039.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-a119b38d.js +2 -0
- package/dist/swisspost-internet-header/p-a119b38d.js.map +1 -0
- package/dist/swisspost-internet-header/p-a4160d23.entry.js +2 -0
- package/dist/swisspost-internet-header/p-a4160d23.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-a51ad207.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-a51ad207.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-a9c4b2d0.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-a9c4b2d0.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-b3014611.system.js +2 -0
- package/dist/swisspost-internet-header/p-b3014611.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-bdabd6ac.js +2 -0
- package/dist/swisspost-internet-header/p-bdabd6ac.js.map +1 -0
- package/dist/swisspost-internet-header/p-bdfd2460.entry.js +2 -0
- package/dist/swisspost-internet-header/p-bdfd2460.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-c29ec122.system.js +2 -0
- package/dist/swisspost-internet-header/p-c29ec122.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-c69923cd.system.js +2 -0
- package/dist/swisspost-internet-header/p-c69923cd.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-c8296f63.system.js +2 -0
- package/dist/swisspost-internet-header/p-c8296f63.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-c946c5b8.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-c946c5b8.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-cb06a633.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-cb06a633.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-cb3de015.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-cb3de015.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js +7 -0
- package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-ddcb8258.entry.js +2 -0
- package/dist/swisspost-internet-header/p-ddcb8258.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-ec80c8fc.js +2 -0
- package/dist/swisspost-internet-header/p-ec80c8fc.js.map +1 -0
- package/dist/swisspost-internet-header/p-ee915bbe.system.js +2 -0
- package/dist/swisspost-internet-header/p-ee915bbe.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-eeff8b03.js +2 -0
- package/dist/swisspost-internet-header/p-eeff8b03.js.map +1 -0
- package/dist/swisspost-internet-header/p-f4ff1e9e.system.js +2 -0
- package/dist/swisspost-internet-header/p-f4ff1e9e.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-f887c8bb.system.js +2 -0
- package/dist/swisspost-internet-header/p-f887c8bb.system.js.map +1 -0
- package/dist/swisspost-internet-header/swisspost-internet-header.css +29 -0
- package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +2 -0
- package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -0
- package/dist/swisspost-internet-header/swisspost-internet-header.js +131 -0
- package/dist/types/assets/i18n/translations.d.ts +37 -0
- package/dist/types/components/post-internet-breadcrumbs/components/breadcrumb-list.component.d.ts +9 -0
- package/dist/types/components/post-internet-breadcrumbs/components/focus-trap.component.d.ts +12 -0
- package/dist/types/components/post-internet-breadcrumbs/components/middle-dropdown.component.d.ts +7 -0
- package/dist/types/components/post-internet-breadcrumbs/components/middle-links.component.d.ts +6 -0
- package/dist/types/components/post-internet-breadcrumbs/components/overlay.component.d.ts +16 -0
- package/dist/types/components/post-internet-breadcrumbs/post-internet-breadcrumbs.d.ts +45 -0
- package/dist/types/components/post-internet-footer/components/post-footer-block-address.component.d.ts +5 -0
- package/dist/types/components/post-internet-footer/components/post-footer-block-contact.component.d.ts +6 -0
- package/dist/types/components/post-internet-footer/components/post-footer-block-custom.component.d.ts +4 -0
- package/dist/types/components/post-internet-footer/components/post-footer-block-list.component.d.ts +5 -0
- package/dist/types/components/post-internet-footer/components/post-footer-block-socials.component.d.ts +5 -0
- package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +10 -0
- package/dist/types/components/post-internet-header/post-internet-header.d.ts +124 -0
- package/dist/types/components/post-klp-login-widget/klp-widget.controller.d.ts +3 -0
- package/dist/types/components/post-klp-login-widget/post-klp-login-widget.d.ts +10 -0
- package/dist/types/components/post-language-switch/components/post-language-switch-list.d.ts +6 -0
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +27 -0
- package/dist/types/components/post-logo/logo-sprite.component.d.ts +4 -0
- package/dist/types/components/post-logo/post-logo.d.ts +11 -0
- package/dist/types/components/post-main-navigation/components/level-one-action.component.d.ts +8 -0
- package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +48 -0
- package/dist/types/components/post-meta-navigation/post-meta-navigation.d.ts +5 -0
- package/dist/types/components/post-search/post-search.d.ts +61 -0
- package/dist/types/components/post-skiplinks/post-skiplinks.d.ts +9 -0
- package/dist/types/components.d.ts +365 -0
- package/dist/types/data/store.d.ts +16 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/models/breadcrumbs.model.d.ts +36 -0
- package/dist/types/models/coveo.model.d.ts +22 -0
- package/dist/types/models/footer.model.d.ts +48 -0
- package/dist/types/models/general.model.d.ts +46 -0
- package/dist/types/models/geocode.model.d.ts +52 -0
- package/dist/types/models/header.model.d.ts +163 -0
- package/dist/types/models/implementor.model.d.ts +22 -0
- package/dist/types/models/language.model.d.ts +6 -0
- package/dist/types/models/track-and-trace.model.d.ts +25 -0
- package/dist/types/services/config.service.d.ts +56 -0
- package/dist/types/services/language.service.d.ts +65 -0
- package/dist/types/services/route.service.d.ts +39 -0
- package/dist/types/services/search/coveo.service.d.ts +9 -0
- package/dist/types/services/search/coveo.settings.d.ts +2 -0
- package/dist/types/services/search/parcel.service.d.ts +28 -0
- package/dist/types/services/search/places.service.d.ts +24 -0
- package/dist/types/services/search/places.settings.d.ts +3 -0
- package/dist/types/services/search/search-utilities.d.ts +15 -0
- package/dist/types/services/search/search.service.d.ts +24 -0
- package/dist/types/services/ui.service.d.ts +23 -0
- package/dist/types/stencil-public-runtime.d.ts +1637 -0
- package/dist/types/tests/setup-tests.d.ts +0 -0
- package/dist/types/utils/highlighted.component.d.ts +4 -0
- package/dist/types/utils/if.component.d.ts +4 -0
- package/dist/types/utils/svg-icon.component.d.ts +4 -0
- package/dist/types/utils/svg-sprite.component.d.ts +1 -0
- package/dist/types/utils/utils.d.ts +8 -0
- package/loader/cdn.js +3 -0
- package/loader/index.cjs.js +3 -0
- package/loader/index.d.ts +21 -0
- package/loader/index.es2017.js +3 -0
- package/loader/index.js +4 -0
- package/loader/package.json +11 -0
- package/package.json +71 -0
- package/readme.md +15 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { Host, h } from '@stencil/core';
|
|
2
|
+
import { throttle } from 'throttle-debounce';
|
|
3
|
+
import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';
|
|
4
|
+
import { state } from '../../data/store';
|
|
5
|
+
import { getSearchRedirectUrl, equalizeArrays } from '../../services/search/search.service';
|
|
6
|
+
import { getCoveoSuggestions } from '../../services/search/coveo.service';
|
|
7
|
+
import { getPlacesUrl, highlightPlacesString, queryPlaces, } from '../../services/search/places.service';
|
|
8
|
+
import { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';
|
|
9
|
+
import { HighlightedText } from '../../utils/highlighted.component';
|
|
10
|
+
import { SvgSprite } from '../../utils/svg-sprite.component';
|
|
11
|
+
import { SvgIcon } from '../../utils/svg-icon.component';
|
|
12
|
+
import { getParcelSuggestion } from '../../services/search/parcel.service';
|
|
13
|
+
import { If } from '../../utils/if.component';
|
|
14
|
+
export class PostSearch {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.searchDropdownOpen = false;
|
|
17
|
+
this.coveoSuggestions = [];
|
|
18
|
+
this.placeSuggestions = [];
|
|
19
|
+
this.parcelSuggestion = null;
|
|
20
|
+
}
|
|
21
|
+
connectedCallback() {
|
|
22
|
+
this.throttledResize = throttle(300, () => this.handleResize());
|
|
23
|
+
window.addEventListener('resize', this.throttledResize, { passive: true });
|
|
24
|
+
}
|
|
25
|
+
disconnectedCallback() {
|
|
26
|
+
window.removeEventListener('resize', this.throttledResize);
|
|
27
|
+
clearAllBodyScrollLocks();
|
|
28
|
+
}
|
|
29
|
+
componentWillUpdate() {
|
|
30
|
+
// Check if search flyout got set to close
|
|
31
|
+
if (this.searchFlyout && !this.searchDropdownOpen) {
|
|
32
|
+
this.searchFlyout.classList.remove('open');
|
|
33
|
+
// Check if element has transition applied and whether user prefers to see animations or not
|
|
34
|
+
if (elementHasTransition(this.searchFlyout, 'transform') && !userPrefersReducedMotion()) {
|
|
35
|
+
// Wait for CSS transition 'transform' to end before continuing
|
|
36
|
+
return new Promise(resolve => {
|
|
37
|
+
if (this.searchFlyout === undefined) {
|
|
38
|
+
return resolve(true);
|
|
39
|
+
}
|
|
40
|
+
this.searchFlyout.addEventListener('transitionend', event => {
|
|
41
|
+
if (event.propertyName === 'transform') {
|
|
42
|
+
resolve(true);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
componentDidUpdate() {
|
|
50
|
+
// Search flyout got set to open
|
|
51
|
+
if (this.searchFlyout && this.searchDropdownOpen) {
|
|
52
|
+
// Force browser to redraw/refresh DOM before adding 'open' class
|
|
53
|
+
this.searchFlyout.getBoundingClientRect();
|
|
54
|
+
this.searchFlyout.classList.add('open');
|
|
55
|
+
}
|
|
56
|
+
// Focus on the searchBox whenever the dropdown is opened
|
|
57
|
+
if (this.searchDropdownOpen && this.searchBox) {
|
|
58
|
+
this.searchBox.focus({ preventScroll: true });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Toggle the dropdown and optionally force an open/closed state
|
|
63
|
+
* @param force Boolean to force open/closed state
|
|
64
|
+
* @returns Boolean indicating open state of the component
|
|
65
|
+
*/
|
|
66
|
+
async toggleDropdown(force) {
|
|
67
|
+
this.searchDropdownOpen =
|
|
68
|
+
force === undefined || typeof force !== 'boolean' ? !this.searchDropdownOpen : force;
|
|
69
|
+
this.dropdownToggled.emit({ open: this.searchDropdownOpen, element: this.host });
|
|
70
|
+
if (!this.searchDropdownOpen) {
|
|
71
|
+
// Reset suggestions when dropdown closes
|
|
72
|
+
this.coveoSuggestions = [];
|
|
73
|
+
this.placeSuggestions = [];
|
|
74
|
+
if (this.searchBox)
|
|
75
|
+
this.searchBox.value = '';
|
|
76
|
+
this.setFocus();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Get basic suggestions when dropdown opens
|
|
80
|
+
try {
|
|
81
|
+
this.coveoSuggestions = await getCoveoSuggestions('');
|
|
82
|
+
}
|
|
83
|
+
catch (_a) { }
|
|
84
|
+
}
|
|
85
|
+
this.setBodyScroll();
|
|
86
|
+
return this.searchDropdownOpen;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Sets the focus on the search button
|
|
90
|
+
*/
|
|
91
|
+
async setFocus() {
|
|
92
|
+
const shadowRoot = this.host.shadowRoot;
|
|
93
|
+
if (shadowRoot === null) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const toggleButton = shadowRoot.querySelector('.search-button');
|
|
97
|
+
if (toggleButton) {
|
|
98
|
+
toggleButton.focus();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
handleResize() {
|
|
102
|
+
// Only enable/disable body scroll on resize if the search dropdown is open, otherwise this could lead to side effects in other controls
|
|
103
|
+
if (this.searchDropdownOpen) {
|
|
104
|
+
this.setBodyScroll();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Disable or re-enable body scrolling, depending on whether search dropdown is open or closed in mobile view (width < 1024px)
|
|
109
|
+
*/
|
|
110
|
+
setBodyScroll() {
|
|
111
|
+
if (this.searchDropdownOpen && window.innerWidth < 1024) {
|
|
112
|
+
disableBodyScroll(this.searchFlyout);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
enableBodyScroll(this.searchFlyout);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Fetch suggestions from all available sources
|
|
120
|
+
*/
|
|
121
|
+
async handleSearchInput() {
|
|
122
|
+
var _a;
|
|
123
|
+
if (this.searchBox === undefined || ((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header.search) === undefined) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const query = this.searchBox.value.trim();
|
|
127
|
+
const [placeSuggestions, coveoSuggestions, trackAndTraceInfo] = await Promise.all([
|
|
128
|
+
queryPlaces(query),
|
|
129
|
+
getCoveoSuggestions(query),
|
|
130
|
+
getParcelSuggestion(query, state.localizedConfig.header.search),
|
|
131
|
+
]);
|
|
132
|
+
// Parcel suggestion is more important than any other
|
|
133
|
+
if (trackAndTraceInfo) {
|
|
134
|
+
this.parcelSuggestion = trackAndTraceInfo;
|
|
135
|
+
this.placeSuggestions = [];
|
|
136
|
+
this.coveoSuggestions = [];
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
[this.coveoSuggestions, this.placeSuggestions] = equalizeArrays(coveoSuggestions, placeSuggestions, 8);
|
|
140
|
+
}
|
|
141
|
+
this.deselectSuggestion();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Start search on enter
|
|
145
|
+
* @param event
|
|
146
|
+
*/
|
|
147
|
+
handleKeyDown(event) {
|
|
148
|
+
var _a, _b, _c, _d;
|
|
149
|
+
if (this.searchFlyout === undefined) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
let selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');
|
|
153
|
+
switch (event.key.toLowerCase()) {
|
|
154
|
+
case 'enter':
|
|
155
|
+
if (selectedSuggestion) {
|
|
156
|
+
const selectedHref = selectedSuggestion.getAttribute('href');
|
|
157
|
+
if (selectedHref !== null) {
|
|
158
|
+
window.location.href = selectedHref;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.startSearch();
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
case 'arrowdown':
|
|
166
|
+
case 'arrowup':
|
|
167
|
+
const suggestions = this.searchFlyout.querySelectorAll('.suggestions > li > a');
|
|
168
|
+
this.deselectSuggestion();
|
|
169
|
+
if (event.key.toLowerCase() === 'arrowdown') {
|
|
170
|
+
if ((_b = (_a = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.parentElement) === null || _a === void 0 ? void 0 : _a.nextElementSibling) === null || _b === void 0 ? void 0 : _b.firstElementChild) {
|
|
171
|
+
// Select next suggestion if there's any, otherwise none will be selected
|
|
172
|
+
selectedSuggestion.parentElement.nextElementSibling.firstElementChild.classList.add('selected');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// If there are any suggestions, select first suggestion in list
|
|
176
|
+
if (suggestions.length > 0) {
|
|
177
|
+
suggestions[0].classList.add('selected');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (event.key.toLowerCase() === 'arrowup') {
|
|
182
|
+
if ((_d = (_c = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.parentElement) === null || _c === void 0 ? void 0 : _c.previousElementSibling) === null || _d === void 0 ? void 0 : _d.firstElementChild) {
|
|
183
|
+
// Select previous suggestion if there's any, otherwise none will be selected
|
|
184
|
+
selectedSuggestion.parentElement.previousElementSibling.firstElementChild.classList.add('selected');
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// If there are any suggestions, select last suggestion in list
|
|
188
|
+
if (suggestions.length > 0) {
|
|
189
|
+
suggestions[suggestions.length - 1].classList.add('selected');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Get the newly selected suggestion
|
|
194
|
+
selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');
|
|
195
|
+
const suggestedText = selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.dataset.suggestionText;
|
|
196
|
+
// Update search box value with selected suggestion text
|
|
197
|
+
if (suggestedText !== undefined && this.searchBox) {
|
|
198
|
+
this.searchBox.value = suggestedText;
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Set selected suggestion on mouse enter
|
|
205
|
+
* @param event
|
|
206
|
+
*/
|
|
207
|
+
handleMouseEnterSuggestion(event) {
|
|
208
|
+
this.deselectSuggestion();
|
|
209
|
+
// Set hovered suggestion element as selected
|
|
210
|
+
event.target.classList.add('selected');
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Set selected suggestion on mouse enter
|
|
214
|
+
* @param event
|
|
215
|
+
*/
|
|
216
|
+
handleMouseLeaveSuggestions() {
|
|
217
|
+
this.deselectSuggestion();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Deselect any previously selected suggestion
|
|
221
|
+
*/
|
|
222
|
+
deselectSuggestion() {
|
|
223
|
+
if (this.searchFlyout === undefined)
|
|
224
|
+
return;
|
|
225
|
+
const selectedSuggestion = this.searchFlyout.querySelector('.suggestions .selected');
|
|
226
|
+
if (selectedSuggestion) {
|
|
227
|
+
selectedSuggestion.classList.remove('selected');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Redirect to the post search page
|
|
232
|
+
*/
|
|
233
|
+
async startSearch() {
|
|
234
|
+
var _a;
|
|
235
|
+
if (this.searchBox && ((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header.search)) {
|
|
236
|
+
const redirectUrl = await getSearchRedirectUrl(this.searchBox.value.trim(), state.localizedConfig.header.search);
|
|
237
|
+
if (!redirectUrl)
|
|
238
|
+
return;
|
|
239
|
+
window.location.href = redirectUrl;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
render() {
|
|
243
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
244
|
+
if (((_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header) === undefined) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const { translations, search } = state.localizedConfig.header;
|
|
248
|
+
const showPortalRecommendations = ((_b = this.searchBox) === null || _b === void 0 ? void 0 : _b.value) === '' && ((_c = search.searchRecommendations) === null || _c === void 0 ? void 0 : _c.links.length) > 0;
|
|
249
|
+
return (h(Host, null, h(SvgSprite, null), h("div", { class: "search" }, h("button", { id: "post-internet-header-search-button", class: "search-button", type: "button", "aria-expanded": `${this.searchDropdownOpen}`, onClick: e => this.toggleDropdown(e) }, h("span", { class: "visually-hidden" }, this.searchDropdownOpen
|
|
250
|
+
? translations.searchToggleExpanded
|
|
251
|
+
: translations.searchToggle), h(SvgIcon, { name: this.searchDropdownOpen ? 'pi-close' : 'pi-search' })), h(If, { condition: this.searchDropdownOpen }, h("div", { class: "flyout", ref: e => (this.searchFlyout = e) }, h("div", { class: "container box" }, h("div", { class: "row" }, h("div", { class: "col-xs-12 col-md-10 col-lg-8" }, h("div", { class: "form-group form-floating" }, h("input", { type: "text", id: "searchBox", class: "form-control form-control-lg", placeholder: translations.flyoutSearchBoxFloatingLabel, autocomplete: "off", ref: el => (this.searchBox = el), onInput: () => this.handleSearchInput(), onKeyDown: e => this.handleKeyDown(e) }), h("label", { htmlFor: "searchBox" }, translations.flyoutSearchBoxFloatingLabel), h("button", { onClick: () => this.startSearch(), class: "nav-link start-search-button" }, h("span", { class: "visually-hidden" }, translations.searchSubmit), h(SvgIcon, { name: "pi-search" }))), showPortalRecommendations && (h("h2", { class: "bold" }, search.searchRecommendations.title)), h("ul", { class: "suggestions no-list", onMouseLeave: () => this.handleMouseLeaveSuggestions() }, showPortalRecommendations &&
|
|
252
|
+
search.searchRecommendations.links.map(recommendation => (h("li", { key: recommendation.href }, h("a", { class: "nav-link search-recommendation", href: new URL(recommendation.href, 'https://post.ch').href, "data-suggestion-text": recommendation.label, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h("span", { class: "search-recommendation__icon", innerHTML: recommendation.inlineSvg }), h("span", null, recommendation.label))))), this.parcelSuggestion && this.parcelSuggestion.ok && (h("li", null, h("a", { class: "nav-link parcel-suggestion", href: this.parcelSuggestion.url, "data-suggestion-text": (_d = this.searchBox) === null || _d === void 0 ? void 0 : _d.value, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-letter-parcel" }), h("span", { class: "bold" }, (_f = (_e = this.parcelSuggestion) === null || _e === void 0 ? void 0 : _e.sending) === null || _f === void 0 ? void 0 :
|
|
253
|
+
_f.id, ":\u00A0"), h("span", null, (_h = (_g = this.parcelSuggestion) === null || _g === void 0 ? void 0 : _g.sending) === null || _h === void 0 ? void 0 :
|
|
254
|
+
_h.product, ",", ' ', (_k = (_j = this.parcelSuggestion) === null || _j === void 0 ? void 0 : _j.sending) === null || _k === void 0 ? void 0 :
|
|
255
|
+
_k.recipient.zipcode, ' ', (_m = (_l = this.parcelSuggestion) === null || _l === void 0 ? void 0 : _l.sending) === null || _m === void 0 ? void 0 :
|
|
256
|
+
_m.recipient.city, ",", ' ', (_p = (_o = this.parcelSuggestion) === null || _o === void 0 ? void 0 : _o.sending) === null || _p === void 0 ? void 0 :
|
|
257
|
+
_p.state)))), !showPortalRecommendations &&
|
|
258
|
+
this.coveoSuggestions &&
|
|
259
|
+
this.coveoSuggestions.map(suggestion => (h("li", { key: suggestion.objectId }, h("a", { class: "nav-link", href: suggestion.redirectUrl, "data-suggestion-text": suggestion.expression, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-search" }), h(HighlightedText, { text: suggestion.highlighted }))))), !showPortalRecommendations &&
|
|
260
|
+
this.placeSuggestions &&
|
|
261
|
+
this.placeSuggestions.map(suggestion => {
|
|
262
|
+
var _a, _b;
|
|
263
|
+
return (h("li", { key: suggestion.id }, h("a", { class: "nav-link", href: getPlacesUrl(suggestion), "data-suggestion-text": suggestion.name, onMouseEnter: e => this.handleMouseEnterSuggestion(e) }, h(SvgIcon, { name: "pi-place" }), h(HighlightedText, { text: highlightPlacesString((_b = (_a = this.searchBox) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.trim(), suggestion.name) }))));
|
|
264
|
+
}))))))))));
|
|
265
|
+
}
|
|
266
|
+
static get is() { return "post-search"; }
|
|
267
|
+
static get encapsulation() { return "shadow"; }
|
|
268
|
+
static get originalStyleUrls() {
|
|
269
|
+
return {
|
|
270
|
+
"$": ["post-search.scss"]
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
static get styleUrls() {
|
|
274
|
+
return {
|
|
275
|
+
"$": ["post-search.css"]
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
static get states() {
|
|
279
|
+
return {
|
|
280
|
+
"searchDropdownOpen": {},
|
|
281
|
+
"coveoSuggestions": {},
|
|
282
|
+
"placeSuggestions": {},
|
|
283
|
+
"parcelSuggestion": {}
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
static get events() {
|
|
287
|
+
return [{
|
|
288
|
+
"method": "dropdownToggled",
|
|
289
|
+
"name": "dropdownToggled",
|
|
290
|
+
"bubbles": true,
|
|
291
|
+
"cancelable": true,
|
|
292
|
+
"composed": true,
|
|
293
|
+
"docs": {
|
|
294
|
+
"tags": [],
|
|
295
|
+
"text": ""
|
|
296
|
+
},
|
|
297
|
+
"complexType": {
|
|
298
|
+
"original": "DropdownEvent",
|
|
299
|
+
"resolved": "{ open: boolean; element: DropdownElement; }",
|
|
300
|
+
"references": {
|
|
301
|
+
"DropdownEvent": {
|
|
302
|
+
"location": "import",
|
|
303
|
+
"path": "../../models/header.model"
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}];
|
|
308
|
+
}
|
|
309
|
+
static get methods() {
|
|
310
|
+
return {
|
|
311
|
+
"toggleDropdown": {
|
|
312
|
+
"complexType": {
|
|
313
|
+
"signature": "(force?: unknown) => Promise<boolean>",
|
|
314
|
+
"parameters": [{
|
|
315
|
+
"tags": [{
|
|
316
|
+
"name": "param",
|
|
317
|
+
"text": "force Boolean to force open/closed state"
|
|
318
|
+
}],
|
|
319
|
+
"text": "Boolean to force open/closed state"
|
|
320
|
+
}],
|
|
321
|
+
"references": {
|
|
322
|
+
"Promise": {
|
|
323
|
+
"location": "global"
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"return": "Promise<boolean>"
|
|
327
|
+
},
|
|
328
|
+
"docs": {
|
|
329
|
+
"text": "Toggle the dropdown and optionally force an open/closed state",
|
|
330
|
+
"tags": [{
|
|
331
|
+
"name": "param",
|
|
332
|
+
"text": "force Boolean to force open/closed state"
|
|
333
|
+
}, {
|
|
334
|
+
"name": "returns",
|
|
335
|
+
"text": "Boolean indicating open state of the component"
|
|
336
|
+
}]
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
"setFocus": {
|
|
340
|
+
"complexType": {
|
|
341
|
+
"signature": "() => Promise<void>",
|
|
342
|
+
"parameters": [],
|
|
343
|
+
"references": {
|
|
344
|
+
"Promise": {
|
|
345
|
+
"location": "global"
|
|
346
|
+
},
|
|
347
|
+
"HTMLElement": {
|
|
348
|
+
"location": "global"
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"return": "Promise<void>"
|
|
352
|
+
},
|
|
353
|
+
"docs": {
|
|
354
|
+
"text": "Sets the focus on the search button",
|
|
355
|
+
"tags": []
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
static get elementRef() { return "host"; }
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=post-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-search.js","sourceRoot":"","sources":["../../../../src/components/post-search/post-search.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAgB,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AASzC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAO9C,MAAM,OAAO,UAAU;;8BACS,KAAK;4BACY,EAAE;4BACF,EAAE;4BACyB,IAAI;;EAO9E,iBAAiB;IACf,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;EAC7E,CAAC;EAED,oBAAoB;IAClB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,uBAAuB,EAAE,CAAC;EAC5B,CAAC;EAED,mBAAmB;IACjB,0CAA0C;IAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;MACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;MAE3C,4FAA4F;MAC5F,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;QACvF,+DAA+D;QAC/D,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;UACpC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;WACtB;UAED,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE;YAC1D,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE;cACtC,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;UACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;OACJ;KACF;EACH,CAAC;EAED,kBAAkB;IAChB,gCAAgC;IAChC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAChD,iEAAiE;MACjE,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;MAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACzC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE;MAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/C;EACH,CAAC;EAKD;;;;KAIG;EAEH,KAAK,CAAC,cAAc,CAAC,KAAe;IAClC,IAAI,CAAC,kBAAkB;MACrB,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;MAC5B,yCAAyC;MACzC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;MAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;MAC3B,IAAI,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;MAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;SAAM;MACL,4CAA4C;MAC5C,IAAI;QACF,IAAI,CAAC,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC;OACvD;MAAC,WAAM,GAAE;KACX;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,OAAO,IAAI,CAAC,kBAAkB,CAAC;EACjC,CAAC;EAED;;KAEG;EAEI,KAAK,CAAC,QAAQ;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC,IAAI,UAAU,KAAK,IAAI,EAAE;MACvB,OAAO;KACR;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAc,gBAAgB,CAAC,CAAC;IAC7E,IAAI,YAAY,EAAE;MAChB,YAAY,CAAC,KAAK,EAAE,CAAC;KACtB;EACH,CAAC;EAEO,YAAY;IAClB,wIAAwI;IACxI,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;EACH,CAAC;EAED;;KAEG;EACK,aAAa;IACnB,IAAI,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE;MACvD,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;SAAM;MACL,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACrC;EACH,CAAC;EAED;;KAEG;EACK,KAAK,CAAC,iBAAiB;;IAC7B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,CAAC,MAAM,MAAK,SAAS,EAAE;MACtF,OAAO;KACR;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;MAChF,WAAW,CAAC,KAAK,CAAC;MAClB,mBAAmB,CAAC,KAAK,CAAC;MAC1B,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;KAChE,CAAC,CAAC;IAEH,qDAAqD;IACrD,IAAI,iBAAiB,EAAE;MACrB,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;MAC1C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;MAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;SAAM;MACL,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAC7D,gBAAgB,EAChB,gBAAgB,EAChB,CAAC,CACF,CAAC;KACH;IAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC5B,CAAC;EAED;;;KAGG;EACK,aAAa,CAAC,KAAoB;;IACxC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;MACnC,OAAO;KACR;IAED,IAAI,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CACtD,gCAAgC,CACjC,CAAC;IAEF,QAAQ,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;MAC/B,KAAK,OAAO;QACV,IAAI,kBAAkB,EAAE;UACtB,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;UAC7D,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;WACrC;SACF;aAAM;UACL,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,MAAM;MACR,KAAK,WAAW,CAAC;MACjB,KAAK,SAAS;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QAEhF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;UAC3C,IAAI,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,kBAAkB,0CAAE,iBAAiB,EAAE;YAC5E,yEAAyE;YACzE,kBAAkB,CAAC,aAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CACjF,UAAU,CACX,CAAC;WACH;eAAM;YACL,gEAAgE;YAChE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;cAC1B,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aAC1C;WACF;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;UAChD,IAAI,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,0CAAE,sBAAsB,0CAAE,iBAAiB,EAAE;YAChF,6EAA6E;YAE7E,kBAAkB,CAAC,aAAa,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CACrF,UAAU,CACX,CAAC;WACH;eAAM;YACL,+DAA+D;YAC/D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;cAC1B,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aAC/D;WACF;SACF;QAED,oCAAoC;QACpC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,CAAC,cAAc,CAAC;QAEjE,wDAAwD;QACxD,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;UACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;SACtC;QAED,MAAM;KACT;EACH,CAAC;EAED;;;KAGG;EACK,0BAA0B,CAAC,KAAiB;IAClD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAE1B,6CAA6C;IAC5C,KAAK,CAAC,MAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;EAC1D,CAAC;EAED;;;KAGG;EACK,2BAA2B;IACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;EAC5B,CAAC;EAED;;KAEG;EACK,kBAAkB;IACxB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;MAAE,OAAO;IAE5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAErF,IAAI,kBAAkB,EAAE;MACtB,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KACjD;EACH,CAAC;EAED;;KAEG;EACK,KAAK,CAAC,WAAW;;IACvB,IAAI,IAAI,CAAC,SAAS,KAAI,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,CAAC,MAAM,CAAA,EAAE;MAC1D,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAC5C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAC3B,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CACpC,CAAC;MACF,IAAI,CAAC,WAAW;QAAE,OAAO;MACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;KACpC;EACH,CAAC;EAED,MAAM;;IACJ,IAAI,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,MAAK,SAAS,EAAE;MAC/C,OAAO;KACR;IACD,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;IAC9D,MAAM,yBAAyB,GAC7B,CAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,MAAK,EAAE,IAAI,CAAA,MAAA,MAAM,CAAC,qBAAqB,0CAAE,KAAK,CAAC,MAAM,IAAG,CAAC,CAAC;IAEjF,OAAO,CACL,EAAC,IAAI;MACH,EAAC,SAAS,OAAG;MACb,WAAK,KAAK,EAAC,QAAQ;QACjB,cACE,EAAE,EAAC,oCAAoC,EACvC,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,QAAQ,mBACE,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAC3C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;UAEpC,YAAM,KAAK,EAAC,iBAAiB,IAC1B,IAAI,CAAC,kBAAkB;YACtB,CAAC,CAAC,YAAY,CAAC,oBAAoB;YACnC,CAAC,CAAC,YAAY,CAAC,YAAY,CACxB;UACP,EAAC,OAAO,IAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAI,CAC9D;QACT,EAAC,EAAE,IAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB;UACpC,WAAK,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACnD,WAAK,KAAK,EAAC,eAAe;cACxB,WAAK,KAAK,EAAC,KAAK;gBACd,WAAK,KAAK,EAAC,8BAA8B;kBACvC,WAAK,KAAK,EAAC,0BAA0B;oBACnC,aACE,IAAI,EAAC,MAAM,EACX,EAAE,EAAC,WAAW,EACd,KAAK,EAAC,8BAA8B,EACpC,WAAW,EAAE,YAAY,CAAC,4BAA4B,EACtD,YAAY,EAAC,KAAK,EAClB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EACvC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GACrC;oBACF,aAAO,OAAO,EAAC,WAAW,IAAE,YAAY,CAAC,4BAA4B,CAAS;oBAC9E,cACE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EACjC,KAAK,EAAC,8BAA8B;sBAEpC,YAAM,KAAK,EAAC,iBAAiB,IAAE,YAAY,CAAC,YAAY,CAAQ;sBAChE,EAAC,OAAO,IAAC,IAAI,EAAC,WAAW,GAAG,CACrB,CACL;kBACL,yBAAyB,IAAI,CAC5B,UAAI,KAAK,EAAC,MAAM,IAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAM,CAC3D;kBACD,UACE,KAAK,EAAC,qBAAqB,EAC3B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE;oBAErD,yBAAyB;sBACxB,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CACvD,UAAI,GAAG,EAAE,cAAc,CAAC,IAAI;wBAC1B,SACE,KAAK,EAAC,gCAAgC,EACtC,IAAI,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,IAAI,0BACpC,cAAc,CAAC,KAAK,EAC1C,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;0BAErD,YACE,KAAK,EAAC,6BAA6B,EACnC,SAAS,EAAE,cAAc,CAAC,SAAS,GAC7B;0BACR,gBAAO,cAAc,CAAC,KAAK,CAAQ,CACjC,CACD,CACN,CAAC;oBACH,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CACpD;sBACE,SACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,0BACT,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAC3C,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;wBAErD,EAAC,OAAO,IAAC,IAAI,EAAC,kBAAkB,GAAG;wBACnC,YAAM,KAAK,EAAC,MAAM,IAAE,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO;6BAAE,EAAE;oCAAe;wBACrE,gBACG,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO;6BAAE,OAAO;;0BAAG,GAAG,EAC7C,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO;6BAAE,SAAS,CAAC,OAAO;0BAAE,GAAG,EACtD,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO;6BAAE,SAAS,CAAC,IAAI;;0BAAG,GAAG,EACpD,MAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,OAAO;6BAAE,KAAK,CACjC,CACL,CACD,CACN;oBACA,CAAC,yBAAyB;sBACzB,IAAI,CAAC,gBAAgB;sBACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CACtC,UAAI,GAAG,EAAE,UAAU,CAAC,QAAQ;wBAC1B,SACE,KAAK,EAAC,UAAU,EAChB,IAAI,EAAE,UAAU,CAAC,WAAW,0BACN,UAAU,CAAC,UAAU,EAC3C,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;0BAErD,EAAC,OAAO,IAAC,IAAI,EAAC,WAAW,GAAG;0BAC5B,EAAC,eAAe,IAAC,IAAI,EAAE,UAAU,CAAC,WAAW,GAAI,CAC/C,CACD,CACN,CAAC;oBACH,CAAC,yBAAyB;sBACzB,IAAI,CAAC,gBAAgB;sBACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;;wBAAC,OAAA,CACtC,UAAI,GAAG,EAAE,UAAU,CAAC,EAAE;0BACpB,SACE,KAAK,EAAC,UAAU,EAChB,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,0BACR,UAAU,CAAC,IAAI,EACrC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;4BAErD,EAAC,OAAO,IAAC,IAAI,EAAC,UAAU,GAAG;4BAC3B,EAAC,eAAe,IACd,IAAI,EAAE,qBAAqB,CACzB,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,0CAAE,IAAI,EAAE,EAC7B,UAAU,CAAC,IAAI,CAChB,GACD,CACA,CACD,CACN,CAAA;uBAAA,CAAC,CACD,CACD,CACF,CACF,CACF,CACH,CACD,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, State, Event, EventEmitter, Method, Element } from '@stencil/core';\r\nimport { throttle } from 'throttle-debounce';\r\nimport { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\r\nimport { state } from '../../data/store';\r\nimport { CoveoCompletion } from '../../models/coveo.model';\r\nimport { GeocodeLocation } from '../../models/geocode.model';\r\nimport {\r\n DropdownElement,\r\n DropdownEvent,\r\n HasDropdown,\r\n IsFocusable,\r\n} from '../../models/header.model';\r\nimport { getSearchRedirectUrl, equalizeArrays } from '../../services/search/search.service';\r\nimport { getCoveoSuggestions } from '../../services/search/coveo.service';\r\nimport {\r\n getPlacesUrl,\r\n highlightPlacesString,\r\n queryPlaces,\r\n} from '../../services/search/places.service';\r\nimport { userPrefersReducedMotion, elementHasTransition } from '../../services/ui.service';\r\nimport { HighlightedText } from '../../utils/highlighted.component';\r\nimport { SvgSprite } from '../../utils/svg-sprite.component';\r\nimport { SvgIcon } from '../../utils/svg-icon.component';\r\nimport { TrackAndTraceInfo } from '../../models/track-and-trace.model';\r\nimport { getParcelSuggestion } from '../../services/search/parcel.service';\r\nimport { If } from '../../utils/if.component';\r\n\r\n@Component({\r\n tag: 'post-search',\r\n styleUrl: 'post-search.scss',\r\n shadow: true,\r\n})\r\nexport class PostSearch implements HasDropdown, IsFocusable {\r\n @State() searchDropdownOpen = false;\r\n @State() coveoSuggestions: CoveoCompletion[] = [];\r\n @State() placeSuggestions: GeocodeLocation[] = [];\r\n @State() parcelSuggestion: (TrackAndTraceInfo & { url: string }) | null = null;\r\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\r\n @Element() host: DropdownElement;\r\n private searchBox?: HTMLInputElement;\r\n private searchFlyout: HTMLElement | undefined;\r\n private throttledResize: throttle<() => void>;\r\n\r\n connectedCallback() {\r\n this.throttledResize = throttle(300, () => this.handleResize());\r\n window.addEventListener('resize', this.throttledResize, { passive: true });\r\n }\r\n\r\n disconnectedCallback() {\r\n window.removeEventListener('resize', this.throttledResize);\r\n clearAllBodyScrollLocks();\r\n }\r\n\r\n componentWillUpdate() {\r\n // Check if search flyout got set to close\r\n if (this.searchFlyout && !this.searchDropdownOpen) {\r\n this.searchFlyout.classList.remove('open');\r\n\r\n // Check if element has transition applied and whether user prefers to see animations or not\r\n if (elementHasTransition(this.searchFlyout, 'transform') && !userPrefersReducedMotion()) {\r\n // Wait for CSS transition 'transform' to end before continuing\r\n return new Promise<boolean>(resolve => {\r\n if (this.searchFlyout === undefined) {\r\n return resolve(true);\r\n }\r\n\r\n this.searchFlyout.addEventListener('transitionend', event => {\r\n if (event.propertyName === 'transform') {\r\n resolve(true);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n // Search flyout got set to open\r\n if (this.searchFlyout && this.searchDropdownOpen) {\r\n // Force browser to redraw/refresh DOM before adding 'open' class\r\n this.searchFlyout.getBoundingClientRect();\r\n this.searchFlyout.classList.add('open');\r\n }\r\n\r\n // Focus on the searchBox whenever the dropdown is opened\r\n if (this.searchDropdownOpen && this.searchBox) {\r\n this.searchBox.focus({ preventScroll: true });\r\n }\r\n }\r\n\r\n public async toggleDropdown(event?: Event): Promise<boolean>;\r\n public async toggleDropdown(force?: boolean): Promise<boolean>;\r\n\r\n /**\r\n * Toggle the dropdown and optionally force an open/closed state\r\n * @param force Boolean to force open/closed state\r\n * @returns Boolean indicating open state of the component\r\n */\r\n @Method()\r\n async toggleDropdown(force?: unknown) {\r\n this.searchDropdownOpen =\r\n force === undefined || typeof force !== 'boolean' ? !this.searchDropdownOpen : force;\r\n this.dropdownToggled.emit({ open: this.searchDropdownOpen, element: this.host });\r\n\r\n if (!this.searchDropdownOpen) {\r\n // Reset suggestions when dropdown closes\r\n this.coveoSuggestions = [];\r\n this.placeSuggestions = [];\r\n if (this.searchBox) this.searchBox.value = '';\r\n this.setFocus();\r\n } else {\r\n // Get basic suggestions when dropdown opens\r\n try {\r\n this.coveoSuggestions = await getCoveoSuggestions('');\r\n } catch {}\r\n }\r\n\r\n this.setBodyScroll();\r\n\r\n return this.searchDropdownOpen;\r\n }\r\n\r\n /**\r\n * Sets the focus on the search button\r\n */\r\n @Method()\r\n public async setFocus() {\r\n const shadowRoot = this.host.shadowRoot;\r\n if (shadowRoot === null) {\r\n return;\r\n }\r\n const toggleButton = shadowRoot.querySelector<HTMLElement>('.search-button');\r\n if (toggleButton) {\r\n toggleButton.focus();\r\n }\r\n }\r\n\r\n private handleResize() {\r\n // Only enable/disable body scroll on resize if the search dropdown is open, otherwise this could lead to side effects in other controls\r\n if (this.searchDropdownOpen) {\r\n this.setBodyScroll();\r\n }\r\n }\r\n\r\n /**\r\n * Disable or re-enable body scrolling, depending on whether search dropdown is open or closed in mobile view (width < 1024px)\r\n */\r\n private setBodyScroll() {\r\n if (this.searchDropdownOpen && window.innerWidth < 1024) {\r\n disableBodyScroll(this.searchFlyout);\r\n } else {\r\n enableBodyScroll(this.searchFlyout);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch suggestions from all available sources\r\n */\r\n private async handleSearchInput() {\r\n if (this.searchBox === undefined || state.localizedConfig?.header.search === undefined) {\r\n return;\r\n }\r\n const query = this.searchBox.value.trim();\r\n\r\n const [placeSuggestions, coveoSuggestions, trackAndTraceInfo] = await Promise.all([\r\n queryPlaces(query),\r\n getCoveoSuggestions(query),\r\n getParcelSuggestion(query, state.localizedConfig.header.search),\r\n ]);\r\n\r\n // Parcel suggestion is more important than any other\r\n if (trackAndTraceInfo) {\r\n this.parcelSuggestion = trackAndTraceInfo;\r\n this.placeSuggestions = [];\r\n this.coveoSuggestions = [];\r\n } else {\r\n [this.coveoSuggestions, this.placeSuggestions] = equalizeArrays(\r\n coveoSuggestions,\r\n placeSuggestions,\r\n 8,\r\n );\r\n }\r\n\r\n this.deselectSuggestion();\r\n }\r\n\r\n /**\r\n * Start search on enter\r\n * @param event\r\n */\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (this.searchFlyout === undefined) {\r\n return;\r\n }\r\n\r\n let selectedSuggestion = this.searchFlyout.querySelector<HTMLElement>(\r\n '.suggestions > li > a.selected',\r\n );\r\n\r\n switch (event.key.toLowerCase()) {\r\n case 'enter':\r\n if (selectedSuggestion) {\r\n const selectedHref = selectedSuggestion.getAttribute('href');\r\n if (selectedHref !== null) {\r\n window.location.href = selectedHref;\r\n }\r\n } else {\r\n this.startSearch();\r\n }\r\n\r\n break;\r\n case 'arrowdown':\r\n case 'arrowup':\r\n const suggestions = this.searchFlyout.querySelectorAll('.suggestions > li > a');\r\n\r\n this.deselectSuggestion();\r\n\r\n if (event.key.toLowerCase() === 'arrowdown') {\r\n if (selectedSuggestion?.parentElement?.nextElementSibling?.firstElementChild) {\r\n // Select next suggestion if there's any, otherwise none will be selected\r\n selectedSuggestion.parentElement.nextElementSibling.firstElementChild.classList.add(\r\n 'selected',\r\n );\r\n } else {\r\n // If there are any suggestions, select first suggestion in list\r\n if (suggestions.length > 0) {\r\n suggestions[0].classList.add('selected');\r\n }\r\n }\r\n } else if (event.key.toLowerCase() === 'arrowup') {\r\n if (selectedSuggestion?.parentElement?.previousElementSibling?.firstElementChild) {\r\n // Select previous suggestion if there's any, otherwise none will be selected\r\n\r\n selectedSuggestion.parentElement.previousElementSibling.firstElementChild.classList.add(\r\n 'selected',\r\n );\r\n } else {\r\n // If there are any suggestions, select last suggestion in list\r\n if (suggestions.length > 0) {\r\n suggestions[suggestions.length - 1].classList.add('selected');\r\n }\r\n }\r\n }\r\n\r\n // Get the newly selected suggestion\r\n selectedSuggestion = this.searchFlyout.querySelector('.suggestions > li > a.selected');\r\n const suggestedText = selectedSuggestion?.dataset.suggestionText;\r\n\r\n // Update search box value with selected suggestion text\r\n if (suggestedText !== undefined && this.searchBox) {\r\n this.searchBox.value = suggestedText;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Set selected suggestion on mouse enter\r\n * @param event\r\n */\r\n private handleMouseEnterSuggestion(event: MouseEvent) {\r\n this.deselectSuggestion();\r\n\r\n // Set hovered suggestion element as selected\r\n (event.target as HTMLElement).classList.add('selected');\r\n }\r\n\r\n /**\r\n * Set selected suggestion on mouse enter\r\n * @param event\r\n */\r\n private handleMouseLeaveSuggestions() {\r\n this.deselectSuggestion();\r\n }\r\n\r\n /**\r\n * Deselect any previously selected suggestion\r\n */\r\n private deselectSuggestion() {\r\n if (this.searchFlyout === undefined) return;\r\n\r\n const selectedSuggestion = this.searchFlyout.querySelector('.suggestions .selected');\r\n\r\n if (selectedSuggestion) {\r\n selectedSuggestion.classList.remove('selected');\r\n }\r\n }\r\n\r\n /**\r\n * Redirect to the post search page\r\n */\r\n private async startSearch() {\r\n if (this.searchBox && state.localizedConfig?.header.search) {\r\n const redirectUrl = await getSearchRedirectUrl(\r\n this.searchBox.value.trim(),\r\n state.localizedConfig.header.search,\r\n );\r\n if (!redirectUrl) return;\r\n window.location.href = redirectUrl;\r\n }\r\n }\r\n\r\n render() {\r\n if (state.localizedConfig?.header === undefined) {\r\n return;\r\n }\r\n const { translations, search } = state.localizedConfig.header;\r\n const showPortalRecommendations =\r\n this.searchBox?.value === '' && search.searchRecommendations?.links.length > 0;\r\n\r\n return (\r\n <Host>\r\n <SvgSprite />\r\n <div class=\"search\">\r\n <button\r\n id=\"post-internet-header-search-button\"\r\n class=\"search-button\"\r\n type=\"button\"\r\n aria-expanded={`${this.searchDropdownOpen}`}\r\n onClick={e => this.toggleDropdown(e)}\r\n >\r\n <span class=\"visually-hidden\">\r\n {this.searchDropdownOpen\r\n ? translations.searchToggleExpanded\r\n : translations.searchToggle}\r\n </span>\r\n <SvgIcon name={this.searchDropdownOpen ? 'pi-close' : 'pi-search'} />\r\n </button>\r\n <If condition={this.searchDropdownOpen}>\r\n <div class=\"flyout\" ref={e => (this.searchFlyout = e)}>\r\n <div class=\"container box\">\r\n <div class=\"row\">\r\n <div class=\"col-xs-12 col-md-10 col-lg-8\">\r\n <div class=\"form-group form-floating\">\r\n <input\r\n type=\"text\"\r\n id=\"searchBox\"\r\n class=\"form-control form-control-lg\"\r\n placeholder={translations.flyoutSearchBoxFloatingLabel}\r\n autocomplete=\"off\"\r\n ref={el => (this.searchBox = el)}\r\n onInput={() => this.handleSearchInput()}\r\n onKeyDown={e => this.handleKeyDown(e)}\r\n />\r\n <label htmlFor=\"searchBox\">{translations.flyoutSearchBoxFloatingLabel}</label>\r\n <button\r\n onClick={() => this.startSearch()}\r\n class=\"nav-link start-search-button\"\r\n >\r\n <span class=\"visually-hidden\">{translations.searchSubmit}</span>\r\n <SvgIcon name=\"pi-search\" />\r\n </button>\r\n </div>\r\n {showPortalRecommendations && (\r\n <h2 class=\"bold\">{search.searchRecommendations.title}</h2>\r\n )}\r\n <ul\r\n class=\"suggestions no-list\"\r\n onMouseLeave={() => this.handleMouseLeaveSuggestions()}\r\n >\r\n {showPortalRecommendations &&\r\n search.searchRecommendations.links.map(recommendation => (\r\n <li key={recommendation.href}>\r\n <a\r\n class=\"nav-link search-recommendation\"\r\n href={new URL(recommendation.href, 'https://post.ch').href}\r\n data-suggestion-text={recommendation.label}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <span\r\n class=\"search-recommendation__icon\"\r\n innerHTML={recommendation.inlineSvg}\r\n ></span>\r\n <span>{recommendation.label}</span>\r\n </a>\r\n </li>\r\n ))}\r\n {this.parcelSuggestion && this.parcelSuggestion.ok && (\r\n <li>\r\n <a\r\n class=\"nav-link parcel-suggestion\"\r\n href={this.parcelSuggestion.url}\r\n data-suggestion-text={this.searchBox?.value}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-letter-parcel\" />\r\n <span class=\"bold\">{this.parcelSuggestion?.sending?.id}: </span>\r\n <span>\r\n {this.parcelSuggestion?.sending?.product},{' '}\r\n {this.parcelSuggestion?.sending?.recipient.zipcode}{' '}\r\n {this.parcelSuggestion?.sending?.recipient.city},{' '}\r\n {this.parcelSuggestion?.sending?.state}\r\n </span>\r\n </a>\r\n </li>\r\n )}\r\n {!showPortalRecommendations &&\r\n this.coveoSuggestions &&\r\n this.coveoSuggestions.map(suggestion => (\r\n <li key={suggestion.objectId}>\r\n <a\r\n class=\"nav-link\"\r\n href={suggestion.redirectUrl}\r\n data-suggestion-text={suggestion.expression}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-search\" />\r\n <HighlightedText text={suggestion.highlighted} />\r\n </a>\r\n </li>\r\n ))}\r\n {!showPortalRecommendations &&\r\n this.placeSuggestions &&\r\n this.placeSuggestions.map(suggestion => (\r\n <li key={suggestion.id}>\r\n <a\r\n class=\"nav-link\"\r\n href={getPlacesUrl(suggestion)}\r\n data-suggestion-text={suggestion.name}\r\n onMouseEnter={e => this.handleMouseEnterSuggestion(e)}\r\n >\r\n <SvgIcon name=\"pi-place\" />\r\n <HighlightedText\r\n text={highlightPlacesString(\r\n this.searchBox?.value?.trim(),\r\n suggestion.name,\r\n )}\r\n />\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </If>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.skiplinks a {
|
|
6
|
+
position: absolute;
|
|
7
|
+
top: 0.5rem;
|
|
8
|
+
left: 0.5rem;
|
|
9
|
+
clip: rect(0 0 0 0);
|
|
10
|
+
width: 1px;
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
padding: 0.25rem;
|
|
15
|
+
background: white;
|
|
16
|
+
}
|
|
17
|
+
.skiplinks a:focus-visible {
|
|
18
|
+
clip: unset;
|
|
19
|
+
width: auto;
|
|
20
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Host, h } from '@stencil/core';
|
|
2
|
+
import { state } from '../../data/store';
|
|
3
|
+
import { translate } from '../../services/language.service';
|
|
4
|
+
import { SvgIcon } from '../../utils/svg-icon.component';
|
|
5
|
+
export class PostSkiplinks {
|
|
6
|
+
getMainId() {
|
|
7
|
+
var _a;
|
|
8
|
+
return (_a = document.querySelector('main[id]')) === null || _a === void 0 ? void 0 : _a.getAttribute('id');
|
|
9
|
+
}
|
|
10
|
+
setFocus(tagname) {
|
|
11
|
+
const rootHost = this.host.closest('.post-internet-header');
|
|
12
|
+
if (!rootHost) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const focusable = rootHost.querySelector(tagname);
|
|
16
|
+
if (focusable) {
|
|
17
|
+
focusable.setFocus();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
focusMain() {
|
|
21
|
+
this.setFocus('post-main-navigation');
|
|
22
|
+
}
|
|
23
|
+
focusSearch() {
|
|
24
|
+
this.setFocus('post-search');
|
|
25
|
+
}
|
|
26
|
+
focusLogin() {
|
|
27
|
+
this.setFocus('post-klp-login-widget');
|
|
28
|
+
}
|
|
29
|
+
render() {
|
|
30
|
+
var _a;
|
|
31
|
+
const config = (_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header;
|
|
32
|
+
const mainId = this.getMainId();
|
|
33
|
+
if (config === undefined) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
return (h(Host, null, h("nav", { class: "skiplinks" }, h("ul", { class: "no-list" }, h("li", null, h("a", { class: "nav-link", href: config.logo.logoLink, accessKey: "0", title: "[ALT + 0]" }, h("span", null, config.logo.logoLinkTitle), h(SvgIcon, { name: "pi-pointy-arrow-right" }))), h("li", null, h("a", { class: "nav-link", href: "#post-internet-header-main-navigation", accessKey: "1", title: "[ALT + 1]", onClick: () => this.focusMain() }, h("span", null, config.translations.navMainAriaLabel), h(SvgIcon, { name: "pi-pointy-arrow-right" }))), mainId ? (h("li", null, h("a", { class: "nav-link", href: `#${mainId}`, accessKey: "2", title: "[ALT + 2]" }, h("span", null, translate('Go to main content')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null, state.search ? (h("li", null, h("a", { class: "nav-link", href: "#post-internet-header-search-button", accessKey: "3", title: "[ALT + 3]", onClick: () => this.focusSearch() }, h("span", null, translate('Go to search')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null, state.login ? (h("li", null, h("a", { class: "nav-link", href: "#post-klp-login-widget", accessKey: "4", title: "[ALT + 4]", onClick: () => this.focusLogin() }, h("span", null, translate('Go to login')), h(SvgIcon, { name: "pi-pointy-arrow-right" })))) : null))));
|
|
37
|
+
}
|
|
38
|
+
static get is() { return "post-skiplinks"; }
|
|
39
|
+
static get originalStyleUrls() {
|
|
40
|
+
return {
|
|
41
|
+
"$": ["post-skiplinks.scss"]
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
static get styleUrls() {
|
|
45
|
+
return {
|
|
46
|
+
"$": ["post-skiplinks.css"]
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
static get elementRef() { return "host"; }
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=post-skiplinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-skiplinks.js","sourceRoot":"","sources":["../../../../src/components/post-skiplinks/post-skiplinks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Element } from '@stencil/core';\r\nimport { state } from '../../data/store';\r\nimport { FocusableElement } from '../../models/header.model';\r\nimport { translate } from '../../services/language.service';\r\nimport { SvgIcon } from '../../utils/svg-icon.component';\r\n\r\n@Component({\r\n tag: 'post-skiplinks',\r\n styleUrl: 'post-skiplinks.scss',\r\n shadow: false,\r\n})\r\nexport class PostSkiplinks {\r\n @Element() host: HTMLElement;\r\n\r\n private getMainId() {\r\n return document.querySelector('main[id]')?.getAttribute('id');\r\n }\r\n\r\n private setFocus(tagname: string) {\r\n const rootHost = this.host.closest('.post-internet-header');\r\n if (!rootHost) {\r\n return;\r\n }\r\n\r\n const focusable = rootHost.querySelector<FocusableElement>(tagname);\r\n if (focusable) {\r\n focusable.setFocus();\r\n }\r\n }\r\n\r\n private focusMain() {\r\n this.setFocus('post-main-navigation');\r\n }\r\n\r\n private focusSearch() {\r\n this.setFocus('post-search');\r\n }\r\n\r\n private focusLogin() {\r\n this.setFocus('post-klp-login-widget');\r\n }\r\n\r\n render() {\r\n const config = state.localizedConfig?.header;\r\n const mainId = this.getMainId();\r\n\r\n if (config === undefined) {\r\n return;\r\n }\r\n\r\n return (\r\n <Host>\r\n <nav class=\"skiplinks\">\r\n <ul class=\"no-list\">\r\n <li>\r\n <a class=\"nav-link\" href={config.logo.logoLink} accessKey=\"0\" title=\"[ALT + 0]\">\r\n <span>{config.logo.logoLinkTitle}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-internet-header-main-navigation\"\r\n accessKey=\"1\"\r\n title=\"[ALT + 1]\"\r\n onClick={() => this.focusMain()}\r\n >\r\n <span>{config.translations.navMainAriaLabel}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n {mainId ? (\r\n <li>\r\n <a class=\"nav-link\" href={`#${mainId}`} accessKey=\"2\" title=\"[ALT + 2]\">\r\n <span>{translate('Go to main content')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n {state.search ? (\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-internet-header-search-button\"\r\n accessKey=\"3\"\r\n title=\"[ALT + 3]\"\r\n onClick={() => this.focusSearch()}\r\n >\r\n <span>{translate('Go to search')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n {state.login ? (\r\n <li>\r\n <a\r\n class=\"nav-link\"\r\n href=\"#post-klp-login-widget\"\r\n accessKey=\"4\"\r\n title=\"[ALT + 4]\"\r\n onClick={() => this.focusLogin()}\r\n >\r\n <span>{translate('Go to login')}</span>\r\n <SvgIcon name=\"pi-pointy-arrow-right\" />\r\n </a>\r\n </li>\r\n ) : null}\r\n </ul>\r\n </nav>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createStore } from '@stencil/store';
|
|
2
|
+
export const { state, reset, dispose } = createStore({
|
|
3
|
+
projectId: null,
|
|
4
|
+
currentLanguage: null,
|
|
5
|
+
localizedConfig: null,
|
|
6
|
+
environment: 'prod',
|
|
7
|
+
search: true,
|
|
8
|
+
login: true,
|
|
9
|
+
meta: true,
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/data/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkB7C,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAAc;EAChE,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,IAAI;EACrB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;CACX,CAAC,CAAC","sourcesContent":["import { createStore } from '@stencil/store';\r\nimport { Environment, ILocalizedConfig, ILocalizedCustomConfig } from '../models/general.model';\r\nimport { NavMainEntity } from '../models/header.model';\r\nimport { IAvailableLanguage } from '../models/language.model';\r\n\r\nexport interface HeaderState {\r\n localizedConfig: ILocalizedConfig | null;\r\n currentLanguage: string | null;\r\n projectId: string | null;\r\n environment: Environment;\r\n search: boolean;\r\n login: boolean;\r\n meta: boolean;\r\n languageSwitchOverrides?: IAvailableLanguage[];\r\n localizedCustomConfig?: ILocalizedCustomConfig;\r\n osFlyoutOverrides?: NavMainEntity;\r\n}\r\n\r\nexport const { state, reset, dispose } = createStore<HeaderState>({\r\n projectId: null,\r\n currentLanguage: null,\r\n localizedConfig: null,\r\n environment: 'prod',\r\n search: true,\r\n login: true,\r\n meta: true,\r\n});\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"","sourcesContent":["export { Components, JSX } from './components';\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumbs.model.js","sourceRoot":"","sources":["../../../src/models/breadcrumbs.model.ts"],"names":[],"mappings":"","sourcesContent":["import { IIconConfig } from './header.model';\r\n\r\nexport interface IBreadcrumbConfig {\r\n a11yLabel: string;\r\n asWebComponent: boolean;\r\n buttons: IBreadcrumbButton[];\r\n isCentered: boolean;\r\n items: IBreadcrumbItem[];\r\n svgIconArrowRightSmall: IIconConfig;\r\n svgIconHome: IIconConfig;\r\n truncateButtonText: string;\r\n classes: any[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface IBreadcrumbButton {\r\n svgIcon: IIconConfig;\r\n text: string;\r\n overlay: IBreadcrumbOverlay;\r\n classes: string[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface IBreadcrumbOverlay {\r\n id: string;\r\n target: string;\r\n closeText: string;\r\n closeIcon: IIconConfig;\r\n classes: string[];\r\n additionalAttributes: any[];\r\n}\r\n\r\nexport interface AdditionalAttribute {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface IBreadcrumbItem {\r\n text: string;\r\n url: string;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coveo.model.js","sourceRoot":"","sources":["../../../src/models/coveo.model.ts"],"names":[],"mappings":"","sourcesContent":["import { Environment } from './general.model';\r\n\r\nexport interface CoveoResponse {\r\n completions: CoveoCompletion[];\r\n responseId: string;\r\n}\r\n\r\nexport interface CoveoCompletion {\r\n expression: string;\r\n score: number;\r\n highlighted: string;\r\n executableConfidence: number;\r\n objectId: string;\r\n redirectUrl?: string;\r\n}\r\n\r\nexport interface CoveoOptions {\r\n url: string;\r\n environment: {\r\n [key in Environment]: {\r\n organisation: string;\r\n token: string;\r\n };\r\n };\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.model.js","sourceRoot":"","sources":["../../../src/models/footer.model.ts"],"names":[],"mappings":"","sourcesContent":["export interface IFooterConfig {\r\n title: string;\r\n asWebComponent: boolean;\r\n osLinks?: { serviceName: string; links: LinksEntity[] }; // type?\r\n block: BlockEntity[];\r\n entry: {\r\n text: string;\r\n };\r\n links: LinksEntity[];\r\n classes: string[];\r\n additionalAttributes: string[]; // string?\r\n}\r\n\r\nexport interface BlockEntity {\r\n columnType: string;\r\n title: string;\r\n links?: LinksEntity[];\r\n content?: ContentEntity[];\r\n}\r\n\r\nexport interface LinksEntity {\r\n url: string;\r\n target: string;\r\n text?: string;\r\n title?: string;\r\n name?: string;\r\n icon?: string;\r\n classes: string[];\r\n additionalAttributes: unknown[]; // {[key:string]:string}?\r\n}\r\n\r\nexport interface ContentEntity {\r\n address: string;\r\n describe: string;\r\n hours: string;\r\n links: LinksEntity[];\r\n name: string;\r\n number: string;\r\n text: string;\r\n title: string;\r\n}\r\n\r\nexport interface ICustomFooterConfig {\r\n block: CustomBlockEntity;\r\n}\r\n\r\nexport interface CustomBlockEntity {\r\n title: string;\r\n links?: LinksEntity[];\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.model.js","sourceRoot":"","sources":["../../../src/models/general.model.ts"],"names":[],"mappings":"","sourcesContent":["import { IHeaderConfig, ICustomHeaderConfig, NavMainEntity } from './header.model';\r\nimport { IBreadcrumbConfig } from './breadcrumbs.model';\r\nimport { IFooterConfig, ICustomFooterConfig } from './footer.model';\r\n\r\ndeclare global {\r\n interface Window {\r\n OPPklpWidget: any;\r\n klpWidgetDev: any;\r\n jQuery: any;\r\n $: any;\r\n SockJS: any;\r\n }\r\n}\r\nexport interface IPortalConfig {\r\n de?: ILocalizedConfig;\r\n fr?: ILocalizedConfig;\r\n it?: ILocalizedConfig;\r\n en?: ILocalizedConfig;\r\n}\r\n\r\nexport interface ILocalizedConfig {\r\n header: IHeaderConfig;\r\n breadcrumb: IBreadcrumbConfig;\r\n footer?: IFooterConfig;\r\n}\r\n\r\nexport interface ICustomConfig {\r\n de?: ILocalizedCustomConfig;\r\n fr?: ILocalizedCustomConfig;\r\n it?: ILocalizedCustomConfig;\r\n en?: ILocalizedCustomConfig;\r\n}\r\n\r\nexport interface ILocalizedCustomConfig {\r\n header: ICustomHeaderConfig;\r\n footer?: ICustomFooterConfig;\r\n}\r\n\r\nexport type Environment = 'int01' | 'int02' | 'prod';\r\n\r\nexport type ActiveRouteProp = 'auto' | 'exact' | false | string;\r\n\r\nexport type LocalizedConfigParameters = {\r\n projectId: string;\r\n environment: Environment;\r\n language?: string;\r\n mapMyPost?: boolean;\r\n cookieKey?: string;\r\n localStorageKey?: string;\r\n activeRouteProp?: ActiveRouteProp;\r\n localizedCustomConfig?: ILocalizedCustomConfig;\r\n osFlyoutOverrides?: NavMainEntity;\r\n};\r\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var GeocodeResponseType;
|
|
2
|
+
(function (GeocodeResponseType) {
|
|
3
|
+
GeocodeResponseType["Region"] = "region";
|
|
4
|
+
GeocodeResponseType["City"] = "city";
|
|
5
|
+
GeocodeResponseType["Zip"] = "zip";
|
|
6
|
+
GeocodeResponseType["Locality"] = "locality";
|
|
7
|
+
GeocodeResponseType["Address"] = "address";
|
|
8
|
+
GeocodeResponseType["Poi"] = "poi";
|
|
9
|
+
})(GeocodeResponseType || (GeocodeResponseType = {}));
|
|
10
|
+
//# sourceMappingURL=geocode.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geocode.model.js","sourceRoot":"","sources":["../../../src/models/geocode.model.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAN,IAAY,mBAOX;AAPD,WAAY,mBAAmB;EAC7B,wCAAiB,CAAA;EACjB,oCAAa,CAAA;EACb,kCAAW,CAAA;EACX,4CAAqB,CAAA;EACrB,0CAAmB,CAAA;EACnB,kCAAW,CAAA;AACb,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,QAO9B","sourcesContent":["export interface GeocodeResponse {\r\n ok: boolean;\r\n info: string;\r\n time: string;\r\n note: string;\r\n count: number;\r\n locations: GeocodeLocation[];\r\n}\r\n\r\nexport interface GeocodeLocation {\r\n id?: string;\r\n name: string;\r\n type: string;\r\n subtype?: string;\r\n pt: [number, number];\r\n bbox: [number, number, number, number];\r\n}\r\n\r\nexport enum GeocodeResponseType {\r\n Region = 'region',\r\n City = 'city',\r\n Zip = 'zip',\r\n Locality = 'locality',\r\n Address = 'address',\r\n Poi = 'poi',\r\n}\r\n\r\nexport interface ServiceTypesResponse {\r\n ok: boolean;\r\n info: string;\r\n time: string;\r\n opentmin: string;\r\n opentmax: string;\r\n flags: { [key: string]: string };\r\n count: number;\r\n types: ServiceType[];\r\n}\r\n\r\nexport interface ServiceType {\r\n tag: string;\r\n count: number;\r\n cat: string;\r\n id: string;\r\n desc: string;\r\n rectype?: string;\r\n group?: string;\r\n groupSortKey?: number;\r\n itemSortKey?: number;\r\n list?: boolean;\r\n priv?: boolean;\r\n biz?: boolean;\r\n url?: string;\r\n urlMobile?: string;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.model.js","sourceRoot":"","sources":["../../../src/models/header.model.ts"],"names":[],"mappings":"","sourcesContent":["import { EventEmitter } from '@stencil/core';\r\nimport { AdditionalAttribute } from './breadcrumbs.model';\r\nimport { Environment } from './general.model';\r\n\r\nexport interface IHeaderConfig {\r\n asWebComponent: boolean;\r\n isHeaderResponsive: boolean;\r\n isLoginWidgetHidden: boolean;\r\n showJobsLoginWidget: boolean;\r\n icons: {\r\n backArrowIcon: IIconConfig;\r\n closeIcon: IIconConfig;\r\n downArrowIcon: IIconConfig;\r\n menuIcon: IIconConfig;\r\n rightArrowIcon: IIconConfig;\r\n searchIcon: IIconConfig;\r\n loginIcon: IIconConfig;\r\n };\r\n loginWidgetOptions?: ILoginWidgetOptions;\r\n loginWidgetId: string;\r\n logo: ILogoConfig;\r\n mobileMenu: {\r\n text: string;\r\n };\r\n search: ISearchConfig;\r\n onlineServiceId: string;\r\n navMain: NavMainEntity[];\r\n navMeta?: NavMetaEntity[];\r\n navLang: NavLangEntity[];\r\n translations: IHeaderTranslations;\r\n}\r\n\r\nexport interface IIconConfig {\r\n name: string;\r\n classes?: string[];\r\n additionalAttributes?: AdditionalAttribute[];\r\n}\r\n\r\nexport interface ILoginWidgetOptions {\r\n applicationId: string;\r\n serviceId: string;\r\n appLoginUrl: string;\r\n currentLang: string;\r\n environment?: Environment;\r\n options: {\r\n isDebugEnabled: boolean;\r\n logoutTargetURL: string;\r\n };\r\n platform: {\r\n endPoint: string;\r\n notificationsEndPoint: string;\r\n logoutURL: string;\r\n keepAliveURL: string;\r\n autoLoginURL: string;\r\n };\r\n}\r\n\r\nexport interface ILogoConfig {\r\n logoLink: string;\r\n logoLinkTitle: string;\r\n logoSvg: string;\r\n logoText: string;\r\n}\r\n\r\nexport interface ISearchConfig {\r\n isSearchHidden: boolean;\r\n searchPageUrl: string;\r\n redirectPattern: string;\r\n searchBoxSuggestionsThreshold: string;\r\n searchBoxSuggestionsAllNumber: string;\r\n searchBoxSuggestionsCoveoNumber: string;\r\n placesRedirectUrl: string;\r\n packageTrackingRedirectUrl: string;\r\n searchHubName: string;\r\n searchPipelineName: string;\r\n searchRecommendations: ISearchRecommendationContainer;\r\n}\r\n\r\nexport interface ISearchRecommendationContainer {\r\n title: string;\r\n links: ISearchRecommendation[];\r\n}\r\n\r\nexport interface ISearchRecommendation {\r\n href: string;\r\n inlineSvg: string;\r\n label: string;\r\n target: string;\r\n additionalAttributes: Array<{ name: string; value: string }>;\r\n}\r\n\r\nexport interface NavMainEntity {\r\n id?: string;\r\n text: string;\r\n title: string;\r\n url: string;\r\n isActive?: boolean;\r\n isActiveOverride?: boolean;\r\n noFlyout?: boolean;\r\n flyout: FlyoutEntity[];\r\n}\r\n\r\nexport interface FlyoutEntity {\r\n title: string;\r\n linkList: LinkListEntity[];\r\n}\r\n\r\nexport interface LinkListEntity {\r\n title: string;\r\n url: string;\r\n target?: string;\r\n isActive?: boolean;\r\n isActiveOverride?: boolean;\r\n}\r\n\r\nexport interface NavMetaEntity {\r\n isActive: boolean;\r\n isHomeLink: boolean;\r\n target?: string;\r\n text: string;\r\n url: string;\r\n}\r\n\r\nexport interface NavLangEntity {\r\n a11yLabel?: string;\r\n isCurrent: boolean;\r\n lang: string;\r\n text: string;\r\n title: string;\r\n url?: string;\r\n}\r\n\r\nexport interface IHeaderTranslations {\r\n backButtonText: string;\r\n closeButtonText: string;\r\n homeLinkTitle: string;\r\n navLangAriaLabel: string;\r\n navMainAriaLabel: string;\r\n navMetaAriaLabel: string;\r\n searchAriaLabel: string;\r\n flyoutSearchBoxFloatingLabel: string;\r\n searchPlaceholder: string;\r\n searchSubmit: string;\r\n searchToggle: string;\r\n searchToggleExpanded: string;\r\n searchA11yLabelClosed: string;\r\n searchA11yLabelOpened: string;\r\n mobileNavToggleClose: string;\r\n mobileNavToggleOpen: string;\r\n nonResponsiveHeader: string;\r\n loginWidgetText?: string;\r\n}\r\n\r\nexport interface IsFocusable {\r\n setFocus: () => void;\r\n}\r\n\r\nexport type FocusableElement = HTMLElement & IsFocusable;\r\n\r\nexport interface HasDropdown {\r\n toggleDropdown: (force?: boolean) => Promise<boolean>;\r\n dropdownToggled: EventEmitter<DropdownEvent>;\r\n}\r\n\r\nexport type DropdownElement = HTMLElement & HasDropdown;\r\n\r\nexport type DropdownEvent = { open: boolean; element: DropdownElement };\r\n\r\nexport interface ICustomHeaderConfig {\r\n navMain: NavMainEntity[];\r\n}\r\n\r\nexport type MainNavScoreList = { main: NavMainEntity; sub?: LinkListEntity; score: number }[];\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementor.model.js","sourceRoot":"","sources":["../../../src/models/implementor.model.ts"],"names":[],"mappings":"","sourcesContent":["export type StickynessOptions = 'none' | 'minimal' | 'main' | 'full';\r\n\r\n/**\r\n * Settings any implementor of the internet header can set on the component\r\n * itself. Has to be a valid JSON string.\r\n *\r\n * HTML example (note the quotes):\r\n * ```html\r\n * <post-internet-header config='{ \"serviceId\": \"test\" }'></post-internet-header>\r\n * ```\r\n * or via JavaScript:\r\n * ```js\r\n * const header = document.querySelector('post-internet-header');\r\n * header.config = { serviceId: 'test' };\r\n * ```\r\n */\r\nexport interface IImplementorConfig {\r\n serviceId: string;\r\n stickyness?: StickynessOptions;\r\n preferredLanguage?: string;\r\n languageCookieName?: string;\r\n languageStorageKey?: string;\r\n}\r\n"]}
|