@postnord/pn-marketweb-components 3.3.2 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/cjs/pn-address-autofill.cjs.entry.js +2 -2
  2. package/cjs/pn-address-autofill.cjs.entry.js.map +1 -1
  3. package/cjs/pn-date-and-time.cjs.entry.js +19 -12
  4. package/cjs/pn-date-and-time.cjs.entry.js.map +1 -1
  5. package/collection/components/input/pn-address-autofill/pn-address-autofill.js +2 -2
  6. package/collection/components/input/pn-address-autofill/pn-address-autofill.js.map +1 -1
  7. package/collection/components/input/pn-date-and-time/pn-date-and-time.js +19 -12
  8. package/collection/components/input/pn-date-and-time/pn-date-and-time.js.map +1 -1
  9. package/components/pn-address-autofill.js +2 -2
  10. package/components/pn-address-autofill.js.map +1 -1
  11. package/components/pn-date-and-time.js +19 -12
  12. package/components/pn-date-and-time.js.map +1 -1
  13. package/esm/pn-address-autofill.entry.js +2 -2
  14. package/esm/pn-address-autofill.entry.js.map +1 -1
  15. package/esm/pn-date-and-time.entry.js +19 -12
  16. package/esm/pn-date-and-time.entry.js.map +1 -1
  17. package/package.json +1 -1
  18. package/pn-market-web-components/p-bdaf4338.entry.js +2 -0
  19. package/pn-market-web-components/p-bdaf4338.entry.js.map +1 -0
  20. package/pn-market-web-components/p-d5a4ada5.entry.js +2 -0
  21. package/pn-market-web-components/p-d5a4ada5.entry.js.map +1 -0
  22. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  23. package/types/components/input/pn-date-and-time/pn-date-and-time.d.ts +0 -1
  24. package/pn-market-web-components/p-acbe60df.entry.js +0 -2
  25. package/pn-market-web-components/p-acbe60df.entry.js.map +0 -1
  26. package/pn-market-web-components/p-d8a57eba.entry.js +0 -2
  27. package/pn-market-web-components/p-d8a57eba.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["pnAddressAutofillCss","PnAddressAutofillStyle0","PnAddressAutofill","pnInputPostalCode","pnInputCity","pnInputStreetAddress","pnInputStreetNumber","postalCodeInputField","streetAddressInputField","streetNumberInputField","pnInputHiddenValue","endpointPath","_postalCodeProps","_cityProps","_streetAddressProps","_streetNumberProps","addresscomplete","fetchHelper","FetchHelper","componentWillLoad","this","setInitialValues","setProps","postalCodeProps","cityProps","streetAddressProps","streetNumberProps","props","JSON","parse","componentDidLoad","querySelector","addEventHandlers","href","window","location","marketWebContextService","MarketWebContextService","environment","getEnvironmentName","endpoint","indexOf","getEndpoint","market","postalCodeSearch","debounce","fetchData","bind","addEventListener","handleStreetAddressDropdown","handleStreetNumberDropdown","addFormFieldEvent","allInputs","hostElement","querySelectorAll","forEach","element","eventName","debounceUpdate","updateHiddenValue","e","target","streetNumber","value","postalCode","city","streetAddress","fullAddress","emit","field","preventDefault","key","query","isPostalCodeSearch","isStreetAddressSearch","length","isStreetNumberSearch","streetAdressArr","streetNumberArr","endpointBase","lastIndexOf","substring","fetchUrl","countryCode","data","fetchJson","mode","cache","postalCodes","postalCity","addresses","filterStreetNames","filterStreetNumbers","item","includes","street","push","streetNumbersResult","numberFrom","numberTo","from","parseInt","to","i","nrString","toString","autoComplete","arr","inputField","currentFocus","val","closeAllLists","list","document","createElement","setAttribute","name","parentElement","appendChild","toUpperCase","option","innerHTML","clickEvent","inputParrent","closest","eventTarget","nodeName","getElementsByTagName","focus","keydownEvent","listElement","getElementById","keyCode","addActive","click","elmnt","lists","getElementsByClassName","parentNode","removeChild","removeActive","classList","add","remove","render","h","Host","class","postalCodeCityLabel","type","postalCodeInputName","required","postalCodeInputRequired","placeholder","postalCodeInputPlaceholder","ref","el","autocomplete","helpertext","postalCodeInputHelpertext","cityInputName","disabled","cityInputPlaceholder","cityInputHelpertext","streetAddressNumberLabel","streetAddressInputName","streetAddressInputRequired","streetAddressInputPlaceholder","streetAddressInputHelpertext","streetNumberInputName","streetNumberInputRequired","streetNumberInputPlaceholder","streetNumberInputHelpertext"],"sources":["src/components/input/pn-address-autofill/pn-address-autofill.scss?tag=pn-address-autofill","src/components/input/pn-address-autofill/pn-address-autofill.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\npn-address-autofill {\n pn-marketweb-input {\n width: 50%;\n }\n\n .input-container-row {\n display: flex;\n //flex-grow: 1;\n gap: 1rem;\n margin-bottom: 1rem;\n }\n\n .label-container {\n color: $gray700;\n font-size: 0.875em;\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n }\n\n .autocomplete-items {\n position: absolute;\n border-radius: 0.8rem;\n border: 0.1rem solid $gray700;\n width: 100%;\n max-height: 30rem;\n overflow-y: auto;\n\n &:hover,\n :focus {\n border: 0.1rem solid $blue400;\n }\n\n div {\n padding: 1.6rem;\n cursor: pointer;\n background-color: #fff;\n border: 0.1rem solid transparent;\n\n &:first-child {\n border-radius: 0.8rem 0.8rem 0 0;\n }\n\n &:last-child {\n border-radius: 0 0 0.8rem 0.8rem;\n }\n\n &:hover {\n background-color: #e0f8ff;\n }\n }\n\n .autocomplete-active {\n background-color: #e0f8ff;\n }\n }\n}\n","import { Component, Prop, h, Element, State, Host, EventEmitter, Event } from '@stencil/core';\nimport { MarketWebContextService } from '../../../globals/MarketWebContextService';\nimport { FetchHelper } from '../../../globals/FetchHelper';\nimport { Root, PostalCodeProps, CityProps, StreetAddressProps, StreetNumberProps } from './types';\nimport debounce from 'debounce';\n\n@Component({\n tag: 'pn-address-autofill',\n styleUrl: 'pn-address-autofill.scss',\n})\nexport class PnAddressAutofill {\n @Element() hostElement: Element;\n pnInputPostalCode: HTMLElement = null;\n pnInputCity: HTMLElement = null;\n pnInputStreetAddress: HTMLElement = null;\n pnInputStreetNumber: HTMLElement = null;\n postalCodeInputField: HTMLInputElement = null;\n streetAddressInputField: HTMLInputElement = null;\n streetNumberInputField: HTMLInputElement = null;\n pnInputHiddenValue: HTMLElement = null;\n endpointPath = '/api/location/get-by-location';\n private _postalCodeProps: PostalCodeProps = null;\n private _cityProps: CityProps = null;\n private _streetAddressProps: StreetAddressProps = null;\n private _streetNumberProps: StreetNumberProps = null;\n\n /** Specifies which market we want to show (se,dk,fi,no,com) */\n @Prop({ mutable: true, reflect: true }) market: string = null; //se\n /** Specifies which environment we're fetching data from. (production, preproduction, integration, localhost) */\n @Prop({ mutable: true, reflect: true }) environment: string = null; //sv\n @Prop() endpoint: string = null;\n @Prop() cache: boolean = true;\n @Prop() countryCode: string = null;\n @Prop() postalCodeProps: string | PostalCodeProps = null;\n @Prop() cityProps: string | CityProps = null;\n @Prop() streetAddressProps: string | StreetAddressProps = null;\n @Prop() streetNumberProps: string | StreetNumberProps = null;\n\n @State() streetAdressArr: string[] = null;\n @State() streetNumberArr: string[] = null;\n @State() city: string = null;\n @State() postalCode: string = null;\n @State() streetAddress: string = null;\n @State() streetNumber: string = null;\n @State() fullAddress: string = null;\n\n @Event() addresscomplete: EventEmitter<string>;\n\n fetchHelper = new FetchHelper('PostalCodeCityAutofill');\n\n componentWillLoad() {\n this.setInitialValues();\n this._postalCodeProps = this.setProps(this.postalCodeProps);\n this._cityProps = this.setProps(this.cityProps);\n this._streetAddressProps = this.setProps(this.streetAddressProps);\n this._streetNumberProps = this.setProps(this.streetNumberProps);\n }\n\n setProps(props) {\n if (typeof props === 'string') {\n return JSON.parse(props);\n } else {\n return props;\n }\n }\n\n componentDidLoad() {\n this.postalCodeInputField = this.pnInputPostalCode.querySelector('input');\n this.streetAddressInputField = this.pnInputStreetAddress.querySelector('input');\n this.streetNumberInputField = this.pnInputStreetNumber.querySelector('input');\n this.addEventHandlers();\n }\n\n async setInitialValues(href = window.location.href) {\n const marketWebContextService = new MarketWebContextService(href);\n if (!this.environment) {\n this.environment = await marketWebContextService.getEnvironmentName();\n }\n\n if (!this.endpoint && this.environment?.indexOf('local') === -1) {\n this.endpoint = await marketWebContextService.getEndpoint(this.environment, this.market);\n }\n\n if (!this.endpoint) {\n this.endpoint = '';\n }\n }\n\n addEventHandlers() {\n const postalCodeSearch = debounce(this.fetchData.bind(this, this.postalCodeInputField), 1000);\n this.postalCodeInputField.addEventListener('keyup', postalCodeSearch);\n this.streetAddressInputField.addEventListener('keyup', this.handleStreetAddressDropdown.bind(this));\n this.streetNumberInputField.addEventListener('focus', this.handleStreetNumberDropdown.bind(this));\n this.addFormFieldEvent();\n }\n\n addFormFieldEvent() {\n const allInputs = this.hostElement.querySelectorAll('input');\n allInputs.forEach(element => {\n ['keyup', 'change'].forEach(eventName => {\n const debounceUpdate = debounce(this.updateHiddenValue.bind(this), 1000);\n element.addEventListener(eventName, debounceUpdate);\n });\n });\n }\n\n updateHiddenValue(e) {\n if (e.target === this.streetNumberInputField) {\n this.streetNumber = this.streetNumberInputField.value;\n }\n\n if (this.postalCode && this.city && this.streetAddress && this.streetNumber) {\n this.fullAddress = `${this.streetAddress} ${this.streetNumber}, ${this.city} ${this.postalCode}`;\n } else {\n this.fullAddress = '';\n }\n\n this.addresscomplete.emit(this.fullAddress);\n }\n\n async fetchData(field, e: KeyboardEvent) {\n if (e) {\n e.preventDefault();\n\n if (e.key === 'Tab') {\n if (this.city) {\n return;\n }\n }\n }\n\n let query = '';\n const isPostalCodeSearch = e && e.target === this.postalCodeInputField;\n const isStreetAddressSearch = field === this.streetAddressInputField && this.city && this.city.length;\n const isStreetNumberSearch = field === this.streetNumberInputField && this.city && this.city.length && this.streetAddress && this.streetAddress.length;\n\n if (isPostalCodeSearch) {\n query = this.postalCodeInputField.value;\n this.streetAdressArr = null;\n this.streetAddressInputField.value = '';\n this.streetNumberArr = null;\n this.streetNumberInputField.value = '';\n this.city = null;\n this.streetAddress = null;\n this.streetNumber = null;\n }\n if (isStreetAddressSearch) {\n query = `${this.streetAddressInputField.value}, ${this.city}`;\n this.streetNumberArr = null;\n this.streetNumberInputField.value = '';\n this.streetNumber = null;\n }\n if (isStreetNumberSearch) {\n this.streetAdressArr = null;\n query = `${this.streetAddress}, ${this.city}`;\n }\n\n if (query.length > 0) {\n const endpointBase = this.endpoint.lastIndexOf('/') === this.endpoint.length - 1 ? this.endpoint.substring(0, this.endpoint.length - 1) : this.endpoint;\n const fetchUrl = `${endpointBase}${this.endpointPath}?countryCode=${this.countryCode}&query=${query}`;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n {\n mode: 'cors',\n },\n this.cache,\n )) as Root;\n\n if (data) {\n if (isPostalCodeSearch) {\n this.city = data.postalCodes ? data.postalCodes[0]?.postalCity : null;\n }\n\n if (isStreetAddressSearch && data.addresses) {\n this.postalCode = this.postalCodeInputField.value;\n this.filterStreetNames(data);\n }\n\n if (isStreetNumberSearch && data.addresses) {\n this.filterStreetNumbers(data);\n }\n }\n }\n }\n\n filterStreetNames = (data: Root) => {\n const addresses: string[] = [];\n this.streetAdressArr = null;\n data.addresses.forEach(item => {\n if (item.postalCode.postalCity === this.city && !addresses.includes(item.street)) {\n addresses.push(item.street);\n }\n });\n this.streetAdressArr = addresses;\n };\n\n filterStreetNumbers = (data: Root) => {\n const streetNumbersResult: string[] = [];\n data.addresses.forEach(item => {\n if (item.postalCode.postalCode === this.postalCode) {\n const { numberFrom, numberTo } = item;\n const from = parseInt(numberFrom);\n const to = parseInt(numberTo);\n\n for (let i = from; i <= to; i++) {\n const nrString = i.toString();\n if (!streetNumbersResult.includes(nrString)) {\n streetNumbersResult.push(i.toString());\n }\n }\n }\n });\n this.streetNumberArr = streetNumbersResult;\n };\n\n async handleStreetAddressDropdown(e) {\n const target = e.target;\n\n if (target === this.streetAddressInputField && target.value.length) {\n if (!this.streetAdressArr || !this.streetAdressArr.length) {\n await this.fetchData(this.streetAddressInputField, null);\n }\n }\n\n if (!target.value || !target.value.length) {\n this.streetAdressArr = null;\n }\n\n if (this.streetAdressArr && this.streetAdressArr.length) {\n this.autoComplete(e, this.streetAdressArr);\n }\n }\n\n async handleStreetNumberDropdown(e) {\n e.preventDefault();\n const target = e.target;\n\n if (target === this.streetNumberInputField) {\n if (!this.streetNumberArr || !this.streetNumberArr.length) {\n await this.fetchData(this.streetNumberInputField, null);\n }\n if (this.streetNumberArr) {\n this.autoComplete(e, this.streetNumberArr);\n }\n }\n }\n\n autoComplete(e, arr: string[]) {\n const inputField = e.target;\n if (arr.length < 1) {\n return;\n }\n\n let currentFocus = 0;\n\n inputField.addEventListener('input', () => {\n const val = inputField.value;\n this.closeAllLists(inputField);\n\n if (!val) {\n return;\n }\n\n currentFocus = -1;\n let list = document.createElement('div');\n list.setAttribute('id', 'autocomplete-list' + inputField.name);\n list.setAttribute('class', 'autocomplete-items');\n inputField.parentElement.appendChild(list);\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].substring(0, val.length).toUpperCase() == val.toUpperCase()) {\n let option = document.createElement('div');\n option.innerHTML = '<strong>' + arr[i].substring(0, val.length) + '</strong>';\n option.innerHTML += arr[i].substring(val.length);\n option.innerHTML += \"<input type='hidden' value='\" + arr[i] + \"'>\";\n option.addEventListener('click', clickEvent => {\n const inputParrent = inputField.closest('pn-marketweb-input');\n let eventTarget = clickEvent.target as HTMLElement;\n if (eventTarget.nodeName === 'STRONG') {\n eventTarget = eventTarget.parentElement;\n }\n inputParrent.value = eventTarget.getElementsByTagName('input')[0].value;\n\n if (inputField === this.streetNumberInputField) {\n this.streetNumber = inputParrent.value;\n }\n if (inputField === this.streetAddressInputField) {\n this.streetAddress = inputParrent.value;\n }\n\n this.closeAllLists(clickEvent.target);\n inputField.focus();\n });\n\n list.appendChild(option);\n }\n }\n });\n\n inputField.addEventListener('keydown', keydownEvent => {\n const listElement = document.getElementById('autocomplete-list' + inputField.name);\n let element;\n if (listElement) {\n element = listElement.getElementsByTagName('div');\n } else {\n element = listElement;\n }\n\n //If arrow DOWN key is pressed\n if (keydownEvent.keyCode == 40) {\n currentFocus++;\n this.addActive(element, currentFocus);\n }\n\n //If the arrow UP key is pressed\n if (keydownEvent.keyCode == 38) {\n currentFocus--;\n this.addActive(element, currentFocus);\n }\n\n //If the ENTER key is pressed\n if (keydownEvent.keyCode == 13) {\n keydownEvent.preventDefault();\n if (currentFocus > -1) {\n if (element) {\n element[currentFocus].click();\n }\n }\n }\n });\n }\n\n //close all autocomplete lists in the document, except the one passed as an argument:\n closeAllLists(elmnt) {\n const lists = document.getElementsByClassName('autocomplete-items');\n for (let i = 0; i < lists.length; i++) {\n if (elmnt != lists[i]) {\n lists[i].parentNode.removeChild(lists[i]);\n }\n }\n }\n\n //a function to classify an item as \"active\":\n addActive(elmnt, currentFocus) {\n if (!elmnt) return;\n this.removeActive(elmnt);\n if (currentFocus >= elmnt.length) currentFocus = 0;\n if (currentFocus < 0) currentFocus = elmnt.length - 1;\n elmnt[currentFocus].classList.add('autocomplete-active');\n }\n\n //a function to remove the \"active\" class from all autocomplete items:\n removeActive(elmnt) {\n for (let i = 0; i < elmnt.length; i++) {\n elmnt[i].classList.remove('autocomplete-active');\n }\n }\n\n render() {\n return (\n <Host class=\"pn-address-autofill\">\n {this._postalCodeProps?.postalCodeCityLabel ? (\n <div class=\"label-container\">\n <label>{`${this._postalCodeProps.postalCodeCityLabel}`}</label>\n </div>\n ) : null}\n <div class=\"input-container-row\">\n <pn-marketweb-input\n type=\"text\"\n name={this._postalCodeProps?.postalCodeInputName}\n required={this._postalCodeProps?.postalCodeInputRequired}\n placeholder={this._postalCodeProps?.postalCodeInputPlaceholder}\n ref={el => (this.pnInputPostalCode = el as HTMLElement)}\n autocomplete=\"off\"\n helpertext={this._postalCodeProps?.postalCodeInputHelpertext}\n ></pn-marketweb-input>\n\n <pn-marketweb-input\n type=\"text\"\n name={this._cityProps?.cityInputName}\n disabled\n value={this.city}\n placeholder={this._cityProps?.cityInputPlaceholder}\n autocomplete=\"off\"\n helpertext={this._cityProps?.cityInputHelpertext}\n ></pn-marketweb-input>\n </div>\n\n {this._streetAddressProps?.streetAddressNumberLabel ? (\n <div class=\"label-container\">\n <label>{`${this._streetAddressProps.streetAddressNumberLabel}`}</label>\n </div>\n ) : null}\n <div class=\"input-container-row\">\n <pn-marketweb-input\n type=\"text\"\n name={this._streetAddressProps?.streetAddressInputName}\n required={this._streetAddressProps?.streetAddressInputRequired}\n value={this.streetAddress}\n placeholder={this._streetAddressProps?.streetAddressInputPlaceholder}\n ref={el => (this.pnInputStreetAddress = el as HTMLElement)}\n autocomplete=\"off\"\n helpertext={this._streetAddressProps?.streetAddressInputHelpertext}\n ></pn-marketweb-input>\n\n <pn-marketweb-input\n type=\"text\"\n name={this._streetNumberProps?.streetNumberInputName}\n required={this._streetNumberProps?.streetNumberInputRequired}\n value={this.streetNumber}\n placeholder={this._streetNumberProps?.streetNumberInputPlaceholder}\n ref={el => (this.pnInputStreetNumber = el as HTMLElement)}\n autocomplete=\"off\"\n helpertext={this._streetNumberProps?.streetNumberInputHelpertext}\n ></pn-marketweb-input>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,g as s,h as i,d as a}from"./p-06555615.js";const n='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0m8-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m0 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1 2v4.5a1 1 0 1 1-2 0V12a1 1 0 1 1 2 0" clip-rule="evenodd"/></svg>';const d=n;const l="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}pn-date-and-time label{color:#5e554a;font-size:1.4rem}pn-date-and-time .time-separator{margin-top:auto;margin-bottom:auto}pn-date-and-time .date-and-time-group{margin-bottom:1rem}pn-date-and-time .date-and-time-row{display:flex;gap:1rem}pn-date-and-time .helper-text{margin-top:0.2rem;color:#5e554a;display:block}pn-date-and-time .error-message{color:#a70707}";const h=l;const o=class{constructor(s){t(this,s);this.dateandtimerange=e(this,"dateandtimerange",7);this.languageCode=null;this.dateAndTimeLabel="";this.dateDaysFromToday=0;this.validTimeRangeMinutes=0;this.errorMessage="";this.dateHelperText="";this.timeHelperText="";this.disableWeekends=false;this.datePlacehodler="";this.language=null;this.hourArr=null;this.minuteArr=null;this.formValue=null;this.invalidTimespan=false;this.selectedDate=null;this.selectedFromHour=null;this.selectedFromMin=null;this.selectedToHour=null;this.selectedToMin=null;this.firstValidDateString="";this.lastValidDateString=""}get hostElement(){return s(this)}pnDatePicker=null;pnTimeFromHourDropdown=null;pnTimeFromMinuteDropdown=null;pnTimeToHourDropdown=null;pnTimeToMinuteDropdown=null;dateandtimerange;componentWillLoad(){this.setInitialValues()}componentDidLoad(){this.setDefaultHiddenValue();this.addEventHandlers()}async setInitialValues(){this.setLangugaeCode();this.setFirstValidDate();this.hourArr=this.getNumbersAsStringArr(6,22,1);this.minuteArr=this.getNumbersAsStringArr(0,50,10)}setFirstValidDate(){const t=new Date;t.setDate(t.getDate()+this.dateDaysFromToday??0);const e=t.getFullYear();const s=(t.getMonth()+1).toString().padStart(2,"0");const i=t.getDate().toString().padStart(2,"0");const a=e+2;this.firstValidDateString=`${e.toString()}-${s}-${i}`;this.lastValidDateString=`${a.toString()}-${s}-${i}`}setLangugaeCode(){if(typeof this.languageCode==="string"&&this.languageCode.trim()===""){this.language=document.querySelector("html").lang}else{this.language=this.languageCode}}setDefaultHiddenValue(){this.selectedFromHour=parseInt(this.hourArr[8]);this.selectedFromMin=0;this.selectedToHour=parseInt(this.hourArr[12]);this.selectedToMin=0;this.updateHiddenValue()}addEventHandlers(){this.pnDatePicker.addEventListener("dateselection",this.handleChange.bind(this));this.pnTimeFromHourDropdown.addEventListener("selectOption",this.handleChange.bind(this));this.pnTimeFromMinuteDropdown.addEventListener("selectOption",this.handleChange.bind(this));this.pnTimeToHourDropdown.addEventListener("selectOption",this.handleChange.bind(this));this.pnTimeToMinuteDropdown.addEventListener("selectOption",this.handleChange.bind(this))}handleChange(t){const e=t.target;if(e===this.pnDatePicker){this.selectedDate=t.detail}if(e===this.pnTimeFromHourDropdown||e===this.pnTimeFromMinuteDropdown||e===this.pnTimeToHourDropdown||e===this.pnTimeToMinuteDropdown){this.handleTimeChange()}this.updateHiddenValue()}handleTimeChange(){const t=this.pnTimeFromHourDropdown.querySelector("[aria-selected=true]")?.textContent;const e=this.pnTimeFromMinuteDropdown.querySelector("[aria-selected=true]")?.textContent;const s=this.pnTimeToHourDropdown.querySelector("[aria-selected=true]")?.textContent;const i=this.pnTimeToMinuteDropdown.querySelector("[aria-selected=true]")?.textContent;this.selectedFromHour=parseInt(t);this.selectedFromMin=parseInt(e);this.selectedToHour=parseInt(s);this.selectedToMin=parseInt(i)}updateHiddenValue(){const t=new Date;const e=new Date(t.getFullYear(),t.getMonth(),t.getDate(),this.selectedFromHour,this.selectedFromMin,0,0);const s=new Date(t.getFullYear(),t.getMonth(),t.getDate(),this.selectedToHour,this.selectedToMin,0,0);this.validateTimeRange(e.getTime(),s.getTime());if(this.invalidTimespan||!this.selectedDate){this.formValue=""}else{const t=this.selectedFromMin.toString().padStart(2,"0");const e=this.selectedToMin.toString().padStart(2,"0");this.formValue=`${this.selectedDate}, ${this.selectedFromHour}:${t}-${this.selectedToHour}:${e}`}this.dateandtimerange.emit(this.formValue)}validateTimeRange(t,e){let s=(e-t)/1e3;s/=60;this.invalidTimespan=s<this.validTimeRangeMinutes?true:false}getNumbersAsStringArr(t,e,s){const i=Array.from({length:(e-t)/s+1},((e,i)=>t+i*s));const a=[];i.forEach((t=>{const e=t.toString().padStart(2,"0");a.push(e)}));return a}removePnOptionSelected(){const t=this.hostElement.querySelectorAll("pn-option");t.forEach((t=>{t.removeAttribute("selected")}))}render(){return i(a,{key:"6f7c0f1c403a98ceaadef017f6dfe94e4d09ab06"},i("div",{key:"c4f95d2e042277cd090fa8a8ce4dd6cd357943ad",class:"date-and-time-group"},this.dateAndTimeLabel?i("div",{class:"date-and-time-row"},i("label",null,this.dateAndTimeLabel)):null,i("div",{key:"2c772ab7b24783c634a06879cfede0eaf05952d6",class:"date-and-time-row"},i("pn-date-picker",{key:"6a427ea028bf55b067b0885e2d3b97a0349acdd3",ref:t=>this.pnDatePicker=t,range:"false","disable-weekends":this.disableWeekends,"min-date":this.firstValidDateString,"max-date":this.lastValidDateString,language:this.language,placeholder:this.datePlacehodler})),this.dateHelperText?i("small",{class:"date-and-time-row helper-text"},this.dateHelperText):null),i("div",{key:"7f74f041493bb4da72d070e90d24d38441c5ebb9",class:"date-and-time-group"},i("div",{key:"7b7b4b4ba67f36cf03c4ee6b80a3cdd55a5c8380",class:"date-and-time-row"},i("pn-select",{key:"d5d6fe2b881a8770fc1aec24bce38754b6a17db0",ref:t=>this.pnTimeFromHourDropdown=t,name:"date-and-time-from-houre",placeholder:this.hourArr[8],class:"date-and-time-dropdown--time",invalid:this.invalidTimespan},this.hourArr?.map((t=>i("pn-option",{label:t,value:t})))),i("pn-select",{key:"bb8dafe866a95e94e0e8a1e53ccff80d0729ec48",ref:t=>this.pnTimeFromMinuteDropdown=t,name:"date-and-time-from-minute",placeholder:this.minuteArr[0],class:"date-and-time-dropdown--time",invalid:this.invalidTimespan},this.minuteArr?.map((t=>i("pn-option",{label:t,value:t})))),i("div",{key:"8281bbfae49ca8ec35a1d651d61a1bd478b70c0a",class:"time-separator"},i("span",{key:"d7c895902ce3efac4816f21510444914012fca29"},"-")),i("pn-select",{key:"5fa29d4fc4d01a804427bd2119969ec0d6346df6",ref:t=>this.pnTimeToHourDropdown=t,name:"date-and-time-to-hour",placeholder:this.hourArr[12],class:"date-and-time-dropdown--time",invalid:this.invalidTimespan},this.hourArr?.map((t=>i("pn-option",{label:t,value:t})))),i("pn-select",{key:"968f33b37cad6d2528a789abd63a89c163642c53",ref:t=>this.pnTimeToMinuteDropdown=t,name:"date-and-time-to-minute",placeholder:this.minuteArr[0],class:"date-and-time-dropdown--time",invalid:this.invalidTimespan},this.minuteArr?.map((t=>i("pn-option",{label:t,value:t}))))),this.timeHelperText?i("small",{class:"date-and-time-row helper-text"},this.timeHelperText):null,this.invalidTimespan&&this.errorMessage?i("small",{class:"date-and-time-row error-message"},i("pn-icon",{icon:d,small:"false",color:"warning"}),this.errorMessage):null))}};o.style=h;export{o as pn_date_and_time};
2
- //# sourceMappingURL=p-d8a57eba.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icon","alert_info_circle","pnDateAndTimeCss","PnDateAndTimeStyle0","PnDateAndTime","pnDatePicker","pnTimeFromHourDropdown","pnTimeFromMinuteDropdown","pnTimeToHourDropdown","pnTimeToMinuteDropdown","dateandtimerange","componentWillLoad","this","setInitialValues","componentDidLoad","setDefaultHiddenValue","addEventHandlers","setLangugaeCode","setFirstValidDate","hourArr","getNumbersAsStringArr","minuteArr","date","Date","setDate","getDate","dateDaysFromToday","year","getFullYear","month","getMonth","toString","padStart","day","endYear","firstValidDateString","lastValidDateString","languageCode","trim","language","document","querySelector","lang","selectedFromHour","parseInt","selectedFromMin","selectedToHour","selectedToMin","updateHiddenValue","addEventListener","handleChange","bind","e","target","selectedDate","detail","handleTimeChange","fromHourString","textContent","fromMinString","toHourString","toMinString","dateFrom","dateTo","validateTimeRange","getTime","invalidTimespan","formValue","fromMin","toMin","emit","from","to","differenceValue","validTimeRangeMinutes","start","stop","step","arr","Array","length","_","index","result","forEach","item","itemAsString","push","removePnOptionSelected","selectOptions","hostElement","querySelectorAll","elm","removeAttribute","render","h","Host","key","class","dateAndTimeLabel","ref","el","range","disableWeekends","placeholder","datePlacehodler","dateHelperText","name","invalid","map","hour","label","value","minute","timeHelperText","errorMessage","small","color"],"sources":["node_modules/pn-design-assets/pn-assets/icons/alert_info_circle.js","src/components/input/pn-date-and-time/pn-date-and-time.scss?tag=pn-date-and-time","src/components/input/pn-date-and-time/pn-date-and-time.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0m8-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m0 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m1 2v4.5a1 1 0 1 1-2 0V12a1 1 0 1 1 2 0\" clip-rule=\"evenodd\"/></svg>';\nexport const alert_info_circle = icon;\nexport const alertInfoCircle = icon;\n","@import '../../../globals/main.scss';\n\npn-date-and-time {\n label {\n color: $gray700;\n font-size: 1.4rem;\n }\n\n .time-separator {\n margin-top: auto;\n margin-bottom: auto;\n }\n\n .date-and-time-group {\n margin-bottom: 1rem;\n }\n .date-and-time-row {\n display: flex;\n gap: 1rem;\n }\n\n .helper-text {\n margin-top: 0.2rem;\n color: $gray700;\n display: block;\n }\n\n .error-message {\n color: #a70707;\n }\n}\n","import { Component, Prop, h, Element, State, Host, Event, EventEmitter } from '@stencil/core';\nimport { alert_info_circle } from 'pn-design-assets/pn-assets/icons.js';\n\n@Component({\n tag: 'pn-date-and-time',\n styleUrl: 'pn-date-and-time.scss',\n})\nexport class PnDateAndTime {\n @Element() hostElement: Element;\n pnDatePicker: HTMLElement = null;\n pnTimeFromHourDropdown: HTMLElement = null;\n pnTimeFromMinuteDropdown: HTMLElement = null;\n pnTimeToHourDropdown: HTMLElement = null;\n pnTimeToMinuteDropdown: HTMLElement = null;\n\n @Prop() languageCode: string = null;\n @Prop() dateAndTimeLabel: string = '';\n @Prop() dateDaysFromToday: number = 0;\n @Prop() validTimeRangeMinutes: number = 0;\n @Prop() errorMessage: string = '';\n @Prop() dateHelperText: string = '';\n @Prop() timeHelperText: string = '';\n @Prop() disableWeekends: boolean = false;\n @Prop() datePlacehodler: string = '';\n\n @State() language: string = null;\n @State() hourArr: string[] = null;\n @State() minuteArr: string[] = null;\n @State() formValue: string = null;\n @State() invalidTimespan: boolean = false;\n @State() selectedDate: string = null;\n @State() selectedFromHour: number = null;\n @State() selectedFromMin: number = null;\n @State() selectedToHour: number = null;\n @State() selectedToMin: number = null;\n @State() firstValidDateString: string = '';\n @State() lastValidDateString: string = '';\n\n @Event() dateandtimerange: EventEmitter<string>;\n\n componentWillLoad() {\n this.setInitialValues();\n }\n\n componentDidLoad() {\n this.setDefaultHiddenValue();\n this.addEventHandlers();\n }\n\n async setInitialValues() {\n this.setLangugaeCode();\n this.setFirstValidDate();\n\n this.hourArr = this.getNumbersAsStringArr(6, 22, 1);\n this.minuteArr = this.getNumbersAsStringArr(0, 50, 10);\n }\n\n setFirstValidDate() {\n const date = new Date();\n date.setDate(date.getDate() + this.dateDaysFromToday ?? 0);\n\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n const endYear = year + 2;\n\n this.firstValidDateString = `${year.toString()}-${month}-${day}`;\n this.lastValidDateString = `${endYear.toString()}-${month}-${day}`;\n }\n\n setLangugaeCode() {\n if (typeof this.languageCode === 'string' && this.languageCode.trim() === '') {\n this.language = document.querySelector('html').lang;\n } else {\n this.language = this.languageCode;\n }\n }\n\n setDefaultHiddenValue() {\n this.selectedFromHour = parseInt(this.hourArr[8]);\n this.selectedFromMin = 0;\n this.selectedToHour = parseInt(this.hourArr[12]);\n this.selectedToMin = 0;\n\n this.updateHiddenValue();\n }\n\n addEventHandlers() {\n this.pnDatePicker.addEventListener('dateselection', this.handleChange.bind(this));\n\n this.pnTimeFromHourDropdown.addEventListener('selectOption', this.handleChange.bind(this));\n this.pnTimeFromMinuteDropdown.addEventListener('selectOption', this.handleChange.bind(this));\n this.pnTimeToHourDropdown.addEventListener('selectOption', this.handleChange.bind(this));\n this.pnTimeToMinuteDropdown.addEventListener('selectOption', this.handleChange.bind(this));\n }\n\n handleChange(e) {\n const target = e.target;\n\n if (target === this.pnDatePicker) {\n this.selectedDate = e.detail;\n }\n\n if (target === this.pnTimeFromHourDropdown || target === this.pnTimeFromMinuteDropdown || target === this.pnTimeToHourDropdown || target === this.pnTimeToMinuteDropdown) {\n this.handleTimeChange();\n }\n\n this.updateHiddenValue();\n }\n\n handleTimeChange() {\n const fromHourString = this.pnTimeFromHourDropdown.querySelector('[aria-selected=true]')?.textContent;\n const fromMinString = this.pnTimeFromMinuteDropdown.querySelector('[aria-selected=true]')?.textContent;\n const toHourString = this.pnTimeToHourDropdown.querySelector('[aria-selected=true]')?.textContent;\n const toMinString = this.pnTimeToMinuteDropdown.querySelector('[aria-selected=true]')?.textContent;\n\n this.selectedFromHour = parseInt(fromHourString);\n this.selectedFromMin = parseInt(fromMinString);\n this.selectedToHour = parseInt(toHourString);\n this.selectedToMin = parseInt(toMinString);\n }\n\n updateHiddenValue() {\n const date = new Date();\n const dateFrom = new Date(date.getFullYear(), date.getMonth(), date.getDate(), this.selectedFromHour, this.selectedFromMin, 0, 0);\n const dateTo = new Date(date.getFullYear(), date.getMonth(), date.getDate(), this.selectedToHour, this.selectedToMin, 0, 0);\n this.validateTimeRange(dateFrom.getTime(), dateTo.getTime());\n\n if (this.invalidTimespan || !this.selectedDate) {\n this.formValue = '';\n } else {\n const fromMin = this.selectedFromMin.toString().padStart(2, '0');\n const toMin = this.selectedToMin.toString().padStart(2, '0');\n\n this.formValue = `${this.selectedDate}, ${this.selectedFromHour}:${fromMin}-${this.selectedToHour}:${toMin}`;\n }\n\n this.dateandtimerange.emit(this.formValue);\n }\n\n validateTimeRange(from: number, to: number) {\n let differenceValue = (to - from) / 1000;\n differenceValue /= 60;\n this.invalidTimespan = differenceValue < this.validTimeRangeMinutes ? true : false;\n }\n\n getNumbersAsStringArr(start: number, stop: number, step: number) {\n const arr = Array.from({ length: (stop - start) / step + 1 }, (_, index: number) => start + index * step);\n const result: string[] = [];\n\n arr.forEach(item => {\n const itemAsString = item.toString().padStart(2, '0');\n result.push(itemAsString);\n });\n\n return result;\n }\n\n removePnOptionSelected() {\n const selectOptions = this.hostElement.querySelectorAll('pn-option');\n selectOptions.forEach(elm => {\n elm.removeAttribute('selected');\n });\n }\n\n render() {\n return (\n <Host>\n <div class=\"date-and-time-group\">\n {this.dateAndTimeLabel ? (\n <div class=\"date-and-time-row\">\n <label>{this.dateAndTimeLabel}</label>\n </div>\n ) : null}\n <div class=\"date-and-time-row\">\n <pn-date-picker\n ref={el => (this.pnDatePicker = el as HTMLElement)}\n range=\"false\"\n disable-weekends={this.disableWeekends}\n min-date={this.firstValidDateString}\n max-date={this.lastValidDateString}\n language={this.language}\n placeholder={this.datePlacehodler}\n ></pn-date-picker>\n </div>\n\n {this.dateHelperText ? <small class=\"date-and-time-row helper-text\">{this.dateHelperText}</small> : null}\n </div>\n <div class=\"date-and-time-group\">\n <div class=\"date-and-time-row\">\n <pn-select\n ref={el => (this.pnTimeFromHourDropdown = el as HTMLElement)}\n name=\"date-and-time-from-houre\"\n placeholder={this.hourArr[8]}\n class=\"date-and-time-dropdown--time\"\n invalid={this.invalidTimespan}\n >\n {this.hourArr?.map((hour: string) => <pn-option label={hour} value={hour}></pn-option>)}\n </pn-select>\n <pn-select\n ref={el => (this.pnTimeFromMinuteDropdown = el as HTMLElement)}\n name=\"date-and-time-from-minute\"\n placeholder={this.minuteArr[0]}\n class=\"date-and-time-dropdown--time\"\n invalid={this.invalidTimespan}\n >\n {this.minuteArr?.map((minute: string) => <pn-option label={minute} value={minute}></pn-option>)}\n </pn-select>\n <div class=\"time-separator\">\n <span>-</span>\n </div>\n <pn-select\n ref={el => (this.pnTimeToHourDropdown = el as HTMLElement)}\n name=\"date-and-time-to-hour\"\n placeholder={this.hourArr[12]}\n class=\"date-and-time-dropdown--time\"\n invalid={this.invalidTimespan}\n >\n {this.hourArr?.map((hour: string) => <pn-option label={hour} value={hour}></pn-option>)}\n </pn-select>\n <pn-select\n ref={el => (this.pnTimeToMinuteDropdown = el as HTMLElement)}\n name=\"date-and-time-to-minute\"\n placeholder={this.minuteArr[0]}\n class=\"date-and-time-dropdown--time\"\n invalid={this.invalidTimespan}\n >\n {this.minuteArr?.map((minute: string) => <pn-option label={minute} value={minute}></pn-option>)}\n </pn-select>\n </div>\n {this.timeHelperText ? <small class=\"date-and-time-row helper-text\">{this.timeHelperText}</small> : null}\n\n {this.invalidTimespan && this.errorMessage ? (\n <small class=\"date-and-time-row error-message\">\n <pn-icon icon={alert_info_circle} small=\"false\" color=\"warning\" />\n {this.errorMessage}\n </small>\n ) : null}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}