{"version":3,"names":["NavigationMainMenu","this","canHover","window","matchMedia","matches","windowWidth","innerWidth","openMenu","open","closeMenu","closeMenuOnEscape","e","key","focusOut","event","relatedTarget","Node","component","contains","toggleMenu","render","shouldRender","menu","items","length","quicklinks","h","class","href","link","title","type","onClick","renderedIndex","innerHTML","images","arrow_up","getTranslatedLabel","locale","subMenu","hidden","pnlNavigationMenuCss","NavigationMenu","navigation","menus","id","homeUrl","home","src","alt","map","index","className","searchActive","toString","NavigationSubMenu","subItem","qlItem","image","async","search","query","domain","unfilteredSuggestions","autocomplete","Promise","all","fetchSuggestions","fetchAutocomplete","suggestions","filter","suggestion","available","result","some","s","ac","includes","url","WidgetUtil","rootUrl","fetch","then","res","json","resolve","text","JSON","parse","pnlSearchCss","Search","handleSearchChange","target","value","handleFocusIn","active","handleFocusOut","handleActiveChanged","searchActivated","emit","trim","searchResult","handleSubmit","preventDefault","encodeURI","searchAction","location","renderAutoComplete","term","renderSuggestion","button","Url","Domain","description","onSubmit","htmlFor","getTranslatedSearchText","label","name","placeholder","onInput","_a","sg"],"sources":["./src/components/pnl-header/pnl-navigation-menu/pnl-navigation-main-menu/pnl-navigation-main-menu.tsx","./src/components/pnl-header/pnl-navigation-menu/pnl-navigation-menu.scss?tag=pnl-navigation-menu","./src/components/pnl-header/pnl-navigation-menu/pnl-navigation-menu.tsx","./src/components/pnl-header/pnl-navigation-menu/pnl-navigation-sub-menu/pnl-navigation-sub-menu.tsx","./src/components/pnl-header/pnl-search/search.service.ts","./src/components/pnl-header/pnl-search/pnl-search.scss?tag=pnl-search","./src/components/pnl-header/pnl-search/pnl-search.tsx"],"sourcesContent":["import { Component, Element, Listen, Prop, State, h } from '@stencil/core';\nimport { images } from '../../../../helpers/inline-images.service';\nimport { Menu } from '../../../navigation-structure.models';\nimport { getTranslatedLabel } from '../../language.util';\n\n@Component({\n tag: 'pnl-navigation-main-menu',\n})\nexport class NavigationMainMenu {\n @Element() component;\n\n @State() open = false;\n\n @Prop() locale: string;\n @Prop() menu: Menu;\n @Prop() renderedIndex: string;\n\n private canHover = window.matchMedia('(hover: hover)').matches;\n private windowWidth = window.innerWidth;\n\n @Listen('mouseenter')\n openMenu() {\n if (this.windowWidth > 912 && this.canHover) {\n this.open = true;\n }\n }\n\n @Listen('mouseleave')\n closeMenu() {\n if (this.windowWidth > 912 && this.canHover) {\n this.open = false;\n }\n }\n\n @Listen('keydown', { target: 'document' })\n closeMenuOnEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n this.closeMenu();\n }\n }\n\n @Listen('focusout')\n focusOut(event: FocusEvent) {\n if (\n event.relatedTarget instanceof Node &&\n this.component.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu();\n }\n\n toggleMenu() {\n this.open = !this.open;\n }\n\n render() {\n const shouldRender =\n this.menu.items.length > 0 || this.menu.quicklinks.length > 0;\n return (\n
\n \n \n {this.menu.title}\n \n \n {shouldRender && (\n this.toggleMenu()}\n aria-controls={\n 'pnl-navigation-sub-menu-container' +\n this.renderedIndex\n }\n aria-expanded={this.open ? 'true' : 'false'}\n >\n \n \n {getTranslatedLabel(this.locale).subMenu}\n \n \n )}\n {shouldRender && (\n
\n );\n }\n}\n","@import '../../../assets/styles/variables';\n@import '../../../assets/styles/typography';\n@import '../../../../node_modules/@postnl/pci/postnl-styles/settings';\n@import '../../../../node_modules/@postnl/pci/postnl-styles/tools/utilities';\n\n:host(*) {\n all: initial;\n font-size: 16px;\n font-family: $font-family-bodytext, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n}\n\n// Prevents the user from scrolling when menu is open on mobile\nbody.noscroll {\n position: fixed;\n max-width: 100vw;\n max-height: 100vh;\n overflow: hidden;\n}\n\n.pnl-navigation {\n box-sizing: border-box;\n font-family: $font-family-bodytext, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n\n .pnl-header__main--mobile & {\n position: absolute;\n top: 72px;\n right: 0;\n bottom: 0;\n left: 0;\n height: calc(100vh - 72px);\n padding: 1em 1em 0;\n z-index: 999999;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n background-color: $color-white;\n }\n\n //global reset for lists with the navigation\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n}\n\n.pnl-navigation-container {\n @media (min-width: $bp-nav) {\n display: flex;\n position: static;\n flex-direction: row;\n align-items: center;\n width: auto;\n height: auto;\n overflow: visible;\n }\n}\n\n.pnl-navigation__list {\n .pnl-header__main--mobile & {\n padding-bottom: 1em;\n }\n\n @media (min-width: $bp-nav) {\n display: flex;\n align-items: center;\n gap: 15px;\n }\n\n @media (min-width: 75em) {\n gap: 20px;\n }\n}\n\n.pnl-navigation__sublist-wrapper {\n @media (min-width: $bp-nav) {\n position: absolute;\n\n top: 50px;\n width: 100%;\n height: 30px;\n }\n}\n\n.pnl-navigation__sublist {\n padding-left: 1em;\n\n @media (min-width: $bp-nav) {\n display: flex;\n position: absolute;\n top: 12px;\n padding-left: 0;\n border: 1px solid $color-border-default;\n background: $color-white;\n white-space: nowrap;\n z-index: 9999;\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n width: 16px;\n height: 16px;\n border-left: 1px solid $color-border-default;\n border-top: 1px solid $color-border-default;\n border-right: 1px solid transparent;\n border-bottom: 1px solid transparent;\n background-color: $color-white;\n transform: rotate(45deg);\n left: 36px;\n z-index: 99999;\n top: -8px;\n }\n }\n}\n\n//list items\n.pnl-navigation__item {\n position: relative;\n padding: 1.5em 0;\n border-bottom: 1px solid $color-border-default;\n\n &:last-child {\n border-bottom: 0;\n }\n\n @media (min-width: $bp-nav) {\n border-bottom: 0;\n padding: 1.75em 0;\n }\n\n &.active {\n // The transition waits for 300ms to allow the search bar to shrink.\n // Otherwise the menu-items might wrap because there is not enough space,\n // making them jump around.\n transition: opacity 100ms ease-in 300ms;\n opacity: 1;\n }\n\n &.hidden {\n opacity: 0;\n height: 0;\n overflow: hidden;\n }\n\n //items in the sublist don't need a border\n .pnl-navigation__sublist & {\n border-bottom: 0;\n\n @media (min-width: $bp-nav) {\n padding: 0;\n }\n }\n}\n\n.pnl-navigation__wrapper {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n\n @media (min-width: $bp-nav) {\n justify-content: center;\n }\n}\n\npnl-navigation-sub-menu {\n display: block;\n flex-basis: 100%;\n background-color: $color-white;\n}\n\n//these toggle buttons are for keyboard users\n.pnl-navigation__sub-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.25s ease-in-out;\n height: 24px;\n width: 24px;\n border: none;\n border-radius: 0.25rem;\n background: transparent;\n color: $color-icon-default;\n\n svg {\n width: 16px;\n height: 16px;\n }\n\n @media (max-width: $bp-nav) {\n margin-left: auto;\n }\n\n @media (min-width: $bp-nav) {\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline-color: $color-border-focus-outline;\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 1px;\n }\n }\n\n &[aria-expanded='false'] {\n transform: rotate(180deg);\n }\n}\n\n//navigation list links\n.pnl-navigation__link {\n display: block;\n position: relative;\n border-bottom: none;\n border-radius: 0.25rem;\n color: $color-text-button-secondary-default;\n font-family: $font-family-bodytext, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n font-weight: 400;\n line-height: 1.6;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n background-color: #ffffff00;\n border-color: #ffffff00;\n color: $color-border-focus-outline;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline-color: $color-border-focus-outline;\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 1px;\n }\n\n @media (min-width: $bp-nav) {\n //links within the sublist\n .pnl-navigation__sublist & {\n padding: 0.875rem 1.125rem;\n font-size: 0.875rem;\n }\n }\n\n //links that are within the special wrapper\n .pnl-navigation__list-wrapper--row & {\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 1.425em 0;\n }\n\n //active state needs to be toggled by JS\n &--active::after {\n @media (min-width: $bp-nav) {\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px;\n background-color: $orange;\n content: '';\n }\n }\n\n &--active:hover,\n &--active:focus {\n &::after {\n display: none;\n }\n }\n\n &--home {\n display: block;\n padding: 0;\n border-bottom: 0;\n\n img {\n height: 40px;\n width: 40px;\n\n @media (min-width: $bp-nav) {\n width: 88px;\n height: 88px;\n }\n }\n\n @media (max-width: $bp-nav) {\n > .pnl-navigation__link--replacement {\n display: none;\n }\n }\n\n &-mobile {\n position: absolute;\n left: 50%;\n width: 2.5em;\n height: 2.5em;\n transform: translateX(-50%);\n }\n }\n}\n\n.pnl-navigation__link .pnl-navigation__link-txt--mobile {\n @media (min-width: $bp-nav) {\n display: none;\n }\n}\n\n.pnl-navigation__link-img {\n width: 5.75em;\n}\n\n// wrappers within the lists\n.pnl-navigation__list-wrapper--row {\n display: flex;\n flex-wrap: wrap;\n\n @media (min-width: $bp-nav) {\n flex-wrap: nowrap;\n\n & > *:nth-child(n + 1) {\n border-left: 1px solid $color-border-default;\n }\n }\n\n > * {\n flex: 0 0 50%;\n border-top: 1px solid $color-border-default;\n\n @media (min-width: $bp-nav) {\n flex: 0 0 auto;\n min-width: 9em; //unfortunate width necessary\n border-top: 0;\n }\n\n &:nth-child(even) {\n border-left: 1px solid $color-border-default;\n }\n }\n}\n\n.pnl-navigation__search {\n .pnl-navigation & {\n display: block;\n margin-block-end: 1rem;\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport { Header } from '../../navigation-structure.models';\nimport { getTranslatedLabel } from '../language.util';\n\n@Component({\n tag: 'pnl-navigation-menu',\n styleUrl: 'pnl-navigation-menu.scss',\n})\nexport class NavigationMenu {\n @Prop() locale: string;\n @Prop() navigation: Header;\n @Prop() labels;\n\n @Prop() searchActive = false;\n\n render() {\n if (this.navigation.menus.length > 0) {\n return (\n \n \n \n );\n }\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport { Menu } from '../../../navigation-structure.models';\n\n@Component({\n tag: 'pnl-navigation-sub-menu',\n})\nexport class NavigationSubMenu {\n @Prop() menu: Menu;\n @Prop() renderedIndex: string;\n\n render() {\n return (\n
\n
\n \n {this.menu.items.map((subItem) => (\n
  • \n \n \n {subItem.title}\n \n \n
  • \n ))}\n \n {this.menu.quicklinks.length > 0 && (\n
      \n {this.menu.quicklinks.map((qlItem) => (\n
    • \n \n \n {qlItem.title}\n \n \n \n
    • \n ))}\n
    \n )}\n
    \n
    \n );\n }\n}\n","import { Suggestion, SearchResult } from './suggestion.model';\nimport { WidgetUtil } from '../../../services/widgets.util';\n\nexport async function search(query: string, locale: string, domain: string): Promise {\n const [unfilteredSuggestions, autocomplete] = await Promise.all([fetchSuggestions(locale, domain), fetchAutocomplete(query, locale, domain)]);\n\n const suggestions = unfilteredSuggestions.filter(suggestion => filter(suggestion, autocomplete));\n const available = suggestions.length > 0 || autocomplete.length > 0;\n\n const result = {\n available,\n autocomplete,\n suggestions\n };\n\n return result;\n}\n\nfunction filter(suggestion: Suggestion, autocomplete: string[]) {\n return suggestion\n .matches\n .some(s =>\n autocomplete\n .some(ac => ac.includes(s) || s.includes(ac))\n );\n}\n\nlet suggestions: Promise;\nasync function fetchSuggestions(locale: string, domain: string) {\n if (!suggestions) {\n const url = `${WidgetUtil.rootUrl()}/search/suggestions?l=${locale}&d=${domain}&a=100`;\n suggestions = fetch(url).then(res => res.json());\n }\n return Promise.resolve(suggestions);\n}\n\nasync function fetchAutocomplete(query: string, locale: string, domain: string): Promise {\n const url = `${WidgetUtil.rootUrl()}/search?l=${locale}&d=${domain}&q=${query}`;\n return await fetch(url)\n .then(res => res.text())\n .then(text => text.length ? JSON.parse(text) : []);\n}\n","@import '../../../assets/styles/variables';\n@import '../../../assets/styles/typography';\n@import '../../../../node_modules/@postnl/pci/postnl-styles/settings';\n@import '../../../../node_modules/@postnl/pci/postnl-styles/tools/utilities';\n@import '../../../../node_modules/@postnl/pci/postnl-styles/components/flyout';\n\n:host(*) {\n all: initial;\n font-family: $font-family-bodytext;\n font-size: 16px;\n}\n\n.pnl-text-input {\n display: flex;\n position: relative;\n flex-direction: column;\n margin-bottom: 1rem;\n font-family: $font-family-bodytext, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n text-align: left;\n\n @media (min-width: 48em) {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n }\n}\n\n.pnl-text-input__label {\n margin-bottom: 0.5rem;\n\n @media (min-width: 48em) {\n flex: 0 0 30%;\n margin-bottom: 0;\n padding-right: 1rem;\n text-align: right;\n }\n}\n\n.pnl-text-input__text {\n height: 40px;\n padding: 0.375em 0.5em;\n border: 1px solid $color-border-strong;\n border-radius: 4px;\n color: $color-body-text-default;\n font-family: $font-family-bodytext, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n font-size: 1em;\n font-weight: 300;\n\n @media (min-width: 48em) {\n flex: 1;\n max-width: 24em;\n }\n\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n &:focus-visible {\n outline-offset: 2px;\n outline-color: $color-border-focus-outline;\n outline-width: 2px;\n outline-style: solid;\n }\n}\n\n.pnl-text-input__error {\n padding-left: 0.5em;\n color: $error-text;\n font-size: 0.875em;\n font-weight: normal;\n\n @media (min-width: 48em) {\n flex: 0 0 70%;\n margin-left: 30%;\n }\n}\n\n// The search-form uses the flyout component for the results, though\n// some modifications are made.\n.pci-flyout {\n &.pnl-search-form {\n display: block;\n position: relative;\n box-sizing: border-box;\n white-space: nowrap;\n\n @media (min-width: $bp-nav) {\n margin: 1.25em 0; //prevents header collapsing when search is focused\n }\n }\n}\n\n.pnl-search-form__form {\n text-align: right;\n}\n\n.pnl-text-input__text {\n &.pnl-search-form__input {\n width: 100%;\n max-width: 100%;\n font-size: 1em;\n\n @media (min-width: $bp-nav) {\n width: 4em;\n padding-right: 3em;\n transition: width 500ms cubic-bezier(0.4, 0, 0.2, 1);\n transform-origin: right;\n\n &::placeholder {\n opacity: 0;\n }\n\n .pnl-search-form:focus-within & {\n width: 22.5em;\n\n &::placeholder {\n opacity: 1;\n }\n }\n }\n\n &:focus-visible ~ .pnl-search-form__button {\n background-color: $color-background-button-primary-default;\n border-radius: 4px;\n color: $color-white;\n }\n }\n}\n\n.pnl-search-form__button {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: auto;\n padding: 0 0.5em;\n border: none;\n font-size: 1.5rem;\n color: $color-icon-default;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n background-color: transparent;\n\n &:hover,\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n &:hover {\n cursor: pointer;\n }\n}\n\n[disabled] {\n //prevents the button from focusing the form when disabled\n pointer-events: none;\n}\n\n.pnl-search-form__icon {\n display: flex;\n\n > svg {\n width: 0.75em;\n pointer-events: none;\n }\n}\n\n.pci-flyout__list {\n &.pnl-search-form__suggestions-list {\n top: 100%;\n left: 0;\n right: 0;\n transform: translateX(0);\n padding: 1em 1em 0;\n text-align: left;\n z-index: 9999;\n\n &::before {\n content: none;\n }\n }\n}\n\n.pnl-search-form__suggestions-list-item {\n white-space: pre-wrap;\n\n & + & {\n margin-top: 1em;\n }\n}\n\n.pnl-search-form__suggestions-list-item--direct {\n border-top: 1px solid $color-border-default;\n margin-right: -1em;\n margin-left: -1em;\n padding-right: 1em;\n padding-left: 1em;\n\n & + & {\n margin-top: 0;\n }\n}\n\n.pnl-search-form__suggestions-link {\n display: block;\n font-weight: 300;\n color: $color-body-text-default;\n text-decoration: none;\n\n &:hover,\n &:focus-visible {\n border-bottom-color: transparent;\n color: $color-text-button-secondary-default;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n .pnl-search-form__suggestions-list-item--direct & {\n display: flex;\n align-items: center;\n margin-left: -1em;\n margin-right: -1em;\n padding: 1em;\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:hover,\n &:focus-visible {\n color: inherit;\n background-color: lighten($color-border-focus-outline, 50%);\n }\n }\n}\n\n.pnl-search-form__suggestions-image {\n flex-basis: 20%;\n margin-right: 1em;\n\n > img {\n max-width: 100%;\n height: auto;\n }\n}\n\n.pnl-search-form__suggestions-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 1.125em;\n font-weight: normal;\n color: $color-text-button-secondary-default;\n}\n\n.pnl-search-form__suggestions-text {\n margin-top: 0;\n margin-bottom: 0;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Prop,\n State,\n Watch,\n h,\n} from '@stencil/core';\nimport { images } from '../../../helpers/inline-images.service';\nimport { getTranslatedSearchText } from '../language.util';\nimport { search } from './search.service';\nimport { SearchResult, Suggestion } from './suggestion.model';\n\n@Component({\n tag: 'pnl-search',\n styleUrl: 'pnl-search.scss',\n})\nexport class Search {\n handleSearchChange = (event) => {\n this.query = event.target.value;\n this.search();\n };\n\n @Element() component: HTMLElement;\n\n @State() query: string = '';\n @State() searchResult: SearchResult = null;\n @State() active = false;\n\n @Prop() domain: string;\n @Prop() locale: string;\n\n /** Emits an event when the searchbox active state changes. Event.detail will contains true if it is active, or false if not. */\n @Event() searchActivated: EventEmitter;\n\n @Listen('focusin')\n handleFocusIn(event: FocusEvent) {\n if (event.relatedTarget instanceof Node && this.component.contains(event.relatedTarget)) {\n return;\n }\n\n this.active = true;\n }\n\n @Listen('focusout')\n handleFocusOut(event: FocusEvent) {\n if (event.relatedTarget instanceof Node && this.component.contains(event.relatedTarget)) {\n return;\n }\n\n this.active = false;\n }\n\n @Watch('active')\n handleActiveChanged() {\n this.searchActivated.emit(this.active);\n }\n\n // Note: debounce on handleSearchChange does not work when in shadow dom.\n // event.target is the pnl-header component instead of the input...\n // @Debounce()\n async search() {\n if (this.query.trim() === '') {\n this.searchResult = null;\n return;\n }\n\n this.searchResult = await search(this.query, this.locale, this.domain);\n }\n\n handleSubmit(e: Event) {\n e.preventDefault();\n const query = encodeURI(this.query.trim());\n if (query === '') return;\n\n const searchAction = `https://www.${this.domain}/search?q=` + query;\n window.location.href = searchAction;\n }\n\n renderAutoComplete(term: string) {\n return (\n
  • \n \n {term}\n \n
  • \n );\n }\n\n renderSuggestion(suggestion: Suggestion) {\n return (\n
  • \n \n
    \n \n
    \n
    \n

    \n {suggestion.title}\n

    \n

    \n {suggestion.description}\n

    \n
    \n \n
  • \n );\n }\n\n render() {\n return (\n
    \n this.handleSubmit(e)}\n >\n \n {getTranslatedSearchText(this.locale).label}\n \n \n \n
    \n \n {getTranslatedSearchText(this.locale).button}\n \n \n {this.active && this.searchResult?.available && (\n
    \n
      \n {this.searchResult.autocomplete.map((ac) =>\n this.renderAutoComplete(ac)\n )}\n {this.searchResult.suggestions.map((sg) =>\n this.renderSuggestion(sg)\n )}\n
    \n
    \n )}\n \n \n );\n }\n}\n"],"mappings":"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"}