{"version":3,"names":["pnlShipmentInputCss","PnlShipmentInput","this","barcodeAnalyticsCategory","countryAnalyticsCategory","postalCodeAnalyticsCategory","postalCodeAnalyticsErrorMessage","incorrectFieldAnalyticsError","requiredFieldAnalyticsError","inputStarted","handleBarcodeChange","event","barcodeValue","target","value","trim","handleCountryChange","selectedCountry","addInputStartedAnalyticsToDatalayer","handlePostalCodeChange","postalCodeValue","submit","$event","preventDefault","barcodeInvalid","isValidBarcode","postalCodeInvalid","isValidPostalCode","addSearchAnalyticsUpdateToDatalayer","shipmentKey","window","location","href","trackAndTraceUrl","toUpperCase","language","toLowerCase","addInputFieldErrorAnalyticsToDatalayer","barcodeRegex","test","postalCodeInfo","postalCodeRegex","regParts","match","regex","RegExp","sanitized","replace","e","updatePostalCodeInfo","newValue","oldValue","country","countries","find","isoCode","postalCodeHint","async","GetCountries","baseUrl","translationService","TranslationService","translations$","subscribe","translations","translateAndSortCountries","setDefaultCountry","defaultCountryCode","setBarcodePlaceholder","error","console","log","countryTranslations","map","countryName","name","filter","translation","sort","a","b","localeCompare","countryCode","barcodePlaceholder","barcode_placeholder_be","barcode_placeholder_nl","document","body","dispatchEvent","CustomEvent","detail","funnel","type","technology","step","step_name","field","errors","message","code","widget","category","answer","_a","render","h","class","isStacked","onSubmit","htmlFor","barcode_label","id","placeholder","onInput","onBlur","barcode_error_message","country_label","required","selected","postal_code_label","postal_code_error_message","search_button"],"sources":["./src/components/pnl-shipment-search/pnl-shipment-input/pnl-shipment-input.scss?tag=pnl-shipment-input&encapsulation=shadow","./src/components/pnl-shipment-search/pnl-shipment-input/pnl-shipment-input.tsx"],"sourcesContent":["@import '../../../assets/styles/variables';\n@import '../../../assets/styles/typography';\n\n$transition-duration-desktop: 200ms !default;\n$transition-duration-tablet: 390ms !default;\n$transition-duration-mobile: 300ms !default;\n$ease-in-out: cubic-bezier(0.4, 0, 0.2, 1) !default;\n\n:host(*) {\n all: initial;\n color: $color-body-text-default;\n font-family: $font-family-bodytext;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n font-size: 16px;\n}\n\n* {\n box-sizing: border-box;\n}\n\n.pnl-shipment__wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 1.5rem;\n box-sizing: border-box;\n\n @media (min-width: $bp-nav) {\n gap: 0.5em;\n\n &:not(.is-stacked) {\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n gap: 2rem;\n\n &:has(.is-invalid) {\n margin-bottom: 1em;\n }\n }\n }\n\n &.is-stacked {\n align-items: flex-start;\n }\n}\n\n.pnl-shipment__button-wrapper {\n position: relative;\n\n @media (min-width: $bp-nav) {\n display: grid;\n grid-template-rows: 27px 40px 27px;\n }\n\n @media (max-width: $bp-nav) {\n width: 100%;\n margin-top: 0.5em;\n }\n}\n\n.pnl-shipment__button {\n grid-area: 2/3;\n position: relative;\n display: inline-flex;\n block-size: 40px;\n inline-size: 100%;\n align-items: center;\n padding: 8px 24px;\n justify-content: center;\n color: $color-white;\n border-radius: 0.25rem;\n border: 1px solid $color-background-button-primary-default;\n background: $color-background-button-primary-default;\n font-family: $font-family-bodytext;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n font-size: 1rem;\n font-weight: 700;\n cursor: pointer;\n user-select: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n\n @media (max-width: $bp-nav) {\n display: flex;\n }\n\n &:hover {\n text-decoration: underline;\n text-underline-offset: 0.15em;\n }\n\n &:focus {\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 &:active {\n background-color: $color-text-button-secondary-pressed;\n text-decoration: underline;\n text-underline-offset: 0.15em;\n }\n}\n\n.pnl-shipment__form-group {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 100%;\n gap: 0.5rem;\n\n &--country {\n &:not(.is-stacked &) {\n @media (min-width: $bp-nav) {\n max-inline-size: 18rem;\n }\n }\n }\n\n &--postalcode {\n &:not(.is-stacked &) {\n @media (min-width: $bp-nav) {\n max-inline-size: 10rem;\n }\n }\n }\n}\n\n.pnl-shipment__label-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.pnl-shipment__label {\n color: $color-body-text-default;\n text-align: left;\n font-weight: 400;\n font-weight: 700;\n line-height: 1.2;\n}\n\n.pnl-shipment__input-wrapper {\n width: 100%;\n display: flex;\n position: relative;\n flex-direction: column;\n transition: margin $transition-duration-mobile $ease-in-out;\n}\n\n.pnl-shipment__input {\n width: 100%;\n display: inline-flex;\n position: relative;\n height: 40px;\n padding-block: 0.5rem;\n padding-inline: 1rem;\n font-family: $font-family-bodytext;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n font-size: 1rem;\n font-weight: 300;\n line-height: 1.5;\n -moz-appearance: none;\n -webkit-appearance: none;\n border: 1px solid $color-border-strong;\n border-radius: 0.25em;\n\n &:hover {\n border-color: $color-border-hover;\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 &::placeholder {\n color: $color-text-input-placeholder;\n opacity: 1;\n }\n}\n\n.pnl-shipment__select-wrapper {\n position: relative;\n width: 100%;\n\n &:not(.is-stacked &) {\n @media (min-width: $bp-nav) {\n max-width: 18em;\n }\n }\n\n option {\n font-weight: 300;\n }\n\n &.active {\n border-radius: 0.25em 0.25em 0 0;\n\n &::before {\n border-top: none;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-bottom: 6px solid $color-border-strong;\n }\n }\n}\n\n.pnl-shipment__select-text {\n width: 100%;\n font-weight: 300;\n font-size: 1rem;\n font-family: $font-family-bodytext;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-feature-settings: 'ss03' on, 'ss01' on;\n -moz-appearance: none;\n -webkit-appearance: none;\n height: 40px;\n padding: 0 8px 0 16px;\n border: 1px solid $color-border-strong;\n border-radius: 4px;\n background-color: $color-white;\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzFGMUUyRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEuNjEgMTQuNTEyYy4yLjI1LjU4LjI1Ljc4IDBsMi45Ni0zLjdhLjUuNSAwIDAgMC0uMzktLjgxMkg5LjA0YS41LjUgMCAwIDAtLjM5LjgxMmwyLjk2IDMuN1oiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxtYXNrIGlkPSJhIiB3aWR0aD0iOCIgaGVpZ2h0PSI1IiB4PSI4IiB5PSIxMCIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgc3R5bGU9Im1hc2stdHlwZTpsdW1pbmFuY2UiPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjYxIDE0LjUxMmMuMi4yNS41OC4yNS43OCAwbDIuOTYtMy43YS41LjUgMCAwIDAtLjM5LS44MTJIOS4wNGEuNS41IDAgMCAwLS4zOS44MTJsMi45NiAzLjdaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L21hc2s+PC9zdmc+\");\n background-repeat: no-repeat, repeat;\n background-position: right 0.7em top 50%, 0 0;\n background-size: 24px;\n appearance: none;\n -webkit-text-fill-color: $color-body-text-default;\n\n &:hover {\n border-color: $color-border-hover;\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 &::placeholder {\n color: $color-text-input-placeholder;\n opacity: 1;\n }\n}\n\n.pnl-shipment__error-wrapper {\n display: flex;\n align-items: center;\n flex-direction: row;\n\n &.is-hidden {\n display: none;\n }\n}\n\n.pnl-shipment__error {\n position: relative;\n flex-basis: 100%;\n height: auto;\n margin: 0;\n padding-left: 20px;\n color: $color-text-negative;\n text-align: left;\n font-size: 0.875rem;\n font-weight: 700;\n transform-origin: 100% 0;\n transition: opacity $transition-duration-mobile $ease-in-out,\n transform $transition-duration-mobile $ease-in-out 0.2;\n margin-top: auto;\n\n &::before {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 16px;\n height: 16px;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHJ4PSIyIiBmaWxsPSIjRDcwMDM2Ii8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMy40YS45MzcuOTM3IDAgMCAwLS45MzcuOTM3djMuNzQ2YS45MzcuOTM3IDAgMSAwIDEuODc0IDBWNC4zMzZBLjkzNy45MzcgMCAwIDAgOCAzLjR6TTggMTNhMS4xNyAxLjE3IDAgMSAwIDAtMi4zNDJBMS4xNyAxLjE3IDAgMCAwIDggMTN6IiBmaWxsPSIjZmZmIi8+Cjwvc3ZnPgo=');\n background-size: 16px;\n background-repeat: no-repeat;\n background-position: center;\n text-align: center;\n }\n}\n","import { Component, h, Prop, State, Watch } from '@stencil/core';\nimport {\n ITranslationService,\n TranslationService,\n} from '../../../helpers/translation';\nimport {\n CountryResponseModel,\n CountryTranslation,\n PostalCodeInfo,\n} from '../models/country.model';\nimport { GetCountries } from '../track-and-trace-service';\n\n@Component({\n tag: 'pnl-shipment-input',\n styleUrl: 'pnl-shipment-input.scss',\n shadow: true,\n})\nexport class PnlShipmentInput {\n private translationService: ITranslationService;\n private readonly barcodeAnalyticsCategory = 'barcode';\n private readonly countryAnalyticsCategory = 'country';\n private readonly postalCodeAnalyticsCategory = 'postalcode';\n private readonly postalCodeAnalyticsErrorMessage = 'postcode';\n private readonly incorrectFieldAnalyticsError = 'field incorrect';\n private readonly requiredFieldAnalyticsError = 'field required';\n private inputStarted = false;\n\n @State() countries: CountryResponseModel[];\n @State() postalCodeInfo: PostalCodeInfo;\n @State() barcodeValue: string;\n @State() barcodePlaceholder: string;\n @State() selectedCountry: string;\n @State() postalCodeValue: string;\n @State() postalCodeInvalid: boolean;\n @State() barcodeInvalid: boolean;\n @State() translations: any = {};\n @State() countryTranslations: CountryTranslation[];\n\n /** The language to show the shipment search in (en, nl, fr) */\n @Prop() language: string;\n\n /** The T&T api for countries */\n @Prop() baseUrl: string;\n\n /** The default country code for this domain */\n @Prop() defaultCountryCode: string;\n\n /** The T&T url to reroute to */\n @Prop() trackAndTraceUrl: string;\n\n /** Make it possible to stack the form fields */\n @Prop() isStacked: boolean = false;\n\n @Watch('selectedCountry')\n updatePostalCodeInfo(newValue: string, oldValue: string) {\n if (newValue !== oldValue) {\n var country = this.countries.find(\n (countries) => countries.isoCode === newValue\n );\n if (country) {\n this.postalCodeInfo = country.postalCodeRegex\n ? {\n postalCodeHint: country.postalCodeHint,\n postalCodeRegex: country.postalCodeRegex,\n }\n : null;\n if (!this.postalCodeInfo) {\n this.postalCodeValue = null;\n }\n }\n }\n }\n\n async componentWillLoad() {\n try {\n this.countries = (await GetCountries(this.baseUrl)).countries;\n\n this.translationService = TranslationService('shipment');\n this.translationService.translations$.subscribe((translations) => {\n if (!!translations) {\n this.translations = translations;\n this.translateAndSortCountries();\n }\n });\n\n this.setDefaultCountry(this.defaultCountryCode);\n this.setBarcodePlaceholder(this.defaultCountryCode);\n } catch (error) {\n console.log(error);\n }\n }\n\n private translateAndSortCountries() {\n this.countryTranslations = this.countries\n .map((country) => {\n const countryName = this.translations[country.isoCode];\n if (!!countryName && countryName !== '') {\n return { isoCode: country.isoCode, name: countryName };\n }\n })\n // filter out missing countries\n .filter((translation) => !!translation)\n .sort((a, b) => a.name.localeCompare(b.name));\n }\n\n private setDefaultCountry(countryCode: string): void {\n this.selectedCountry = countryCode;\n }\n \n private setBarcodePlaceholder(countryCode: string): void {\n this.barcodePlaceholder = countryCode.toUpperCase() == \"BE\" ?\n this.translations.barcode_placeholder_be : \n this.translations.barcode_placeholder_nl;\n }\n\n private handleBarcodeChange = (event) => {\n this.barcodeValue = event.target.value.trim();\n };\n\n private handleCountryChange = (event) => {\n this.selectedCountry = event.target.value;\n this.addInputStartedAnalyticsToDatalayer();\n };\n\n private handlePostalCodeChange = (event) => {\n this.postalCodeValue = event.target.value.trim();\n };\n \n\n private submit = ($event: Event) => {\n $event.preventDefault();\n\n this.barcodeInvalid = !this.isValidBarcode(this.barcodeValue);\n this.postalCodeInvalid = !this.isValidPostalCode(this.postalCodeValue);\n\n if (this.barcodeInvalid || this.postalCodeInvalid) {\n return;\n }\n\n this.addSearchAnalyticsUpdateToDatalayer();\n\n let shipmentKey = `${this.barcodeValue}-${this.selectedCountry}`;\n if (this.postalCodeValue) {\n shipmentKey += `-${this.postalCodeValue}`;\n }\n\n window.location.href = `${\n this.trackAndTraceUrl\n }${shipmentKey.toUpperCase()}?language=${this.language.toLowerCase()}`;\n };\n\n private isValidBarcode = (value: string) => {\n if (!value) {\n this.addInputFieldErrorAnalyticsToDatalayer(\n this.barcodeAnalyticsCategory,\n this.requiredFieldAnalyticsError\n );\n return false;\n }\n\n const barcodeRegex = /^[A-Z0-9]{2,36}$/i;\n if (barcodeRegex.test(value)) {\n return true;\n } else {\n this.addInputFieldErrorAnalyticsToDatalayer(\n this.barcodeAnalyticsCategory,\n this.incorrectFieldAnalyticsError\n );\n return false;\n }\n };\n\n private isValidPostalCode = (value: string) => {\n if (!this.postalCodeInfo) {\n return true;\n }\n\n if (!value) {\n this.addInputFieldErrorAnalyticsToDatalayer(\n this.postalCodeAnalyticsErrorMessage,\n this.requiredFieldAnalyticsError\n );\n return false;\n }\n\n if (this.postalCodeInfo.postalCodeRegex) {\n try {\n const regParts =\n this.postalCodeInfo.postalCodeRegex.match(\n /^\\/(.*?)\\/([gimy]*)$/\n );\n const regex = new RegExp(regParts[1], regParts[2]);\n\n const sanitized = (value as string).replace(/\\s+/gi, '');\n if (regex.test(sanitized)) {\n return true;\n } else {\n this.addInputFieldErrorAnalyticsToDatalayer(\n this.postalCodeAnalyticsErrorMessage,\n this.incorrectFieldAnalyticsError\n );\n return false;\n }\n } catch (e) {\n // If the regex is invalid then don't invalidate the input\n return true;\n }\n }\n };\n\n private addInputStartedAnalyticsToDatalayer() {\n // send event once\n if (!this.inputStarted) {\n document.body.dispatchEvent(\n new CustomEvent('postnl-datalayer-event', {\n detail: {\n funnel: {\n name: 'killer widget - track en trace',\n type: 'application',\n technology: 'killerwidget',\n step: '10',\n step_name: 'start killerwidget',\n },\n name: 'funnel_interaction',\n },\n })\n );\n this.inputStarted = true;\n }\n }\n\n private addInputFieldErrorAnalyticsToDatalayer(\n field: string,\n error: string\n ) {\n document.body.dispatchEvent(\n new CustomEvent('postnl-datalayer-event', {\n detail: {\n errors: [\n {\n type: error,\n message: `Vul je ${field} in`,\n code: '000',\n location: 'killerwidget',\n },\n ],\n name: 'error',\n },\n })\n );\n }\n\n private addSearchAnalyticsUpdateToDatalayer() {\n document.body.dispatchEvent(\n new CustomEvent('postnl-datalayer-event', {\n detail: {\n funnel: {\n name: 'killer widget - track en trace',\n type: 'application',\n technology: 'killerwidget',\n step: 'laatste',\n step_name: 'success killerwidget',\n },\n widget: [\n {\n category: this.barcodeAnalyticsCategory,\n answer: this.barcodeValue,\n },\n {\n category: this.countryAnalyticsCategory,\n answer: this.selectedCountry,\n },\n {\n category: this.postalCodeAnalyticsCategory,\n answer: this.postalCodeValue ?? '',\n },\n ],\n name: 'funnel_interaction',\n },\n })\n );\n }\n\n render() {\n return (\n
\n {!!this.countryTranslations && (\n \n
\n
\n \n \n {this.translations.barcode_label}\n \n \n
\n
\n \n this.addInputStartedAnalyticsToDatalayer()\n }\n />\n
\n \n

\n {this.translations.barcode_error_message}\n

\n
\n
\n\n
\n
\n \n \n {this.translations.country_label}\n \n \n
\n
\n \n {this.countryTranslations.map((country) => (\n \n {country.name}\n \n ))}\n \n
\n
\n
\n\n {!!this.postalCodeInfo && (\n
\n
\n \n \n {\n this.translations\n .postal_code_label\n }\n \n \n
\n
\n \n this.addInputStartedAnalyticsToDatalayer()\n }\n />\n
\n \n

\n {\n this.translations\n .postal_code_error_message\n }\n {this.postalCodeInfo.postalCodeHint}\n

\n
\n \n )}\n\n
\n \n
\n \n )}\n \n );\n }\n}\n"],"mappings":"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"}