{"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}\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","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}\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 {suggestion.description}\n
\n