@bpost/bp-address-auto-complete-by-component 1.1.15 → 1.1.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bpost-bp-address-auto-complete-by-component.mjs","sources":["../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/validation-message-option-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/validation-message-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/address-level.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/query-parameters.model.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/domhandler.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/source-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/preflll.event.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/input-name.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Locality.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Street.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Box.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/http.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/adress.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/locale.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/unicode.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/visible-suggestion.directive.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/highlight-suggestion.pipe.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/locality/locality.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/locality/locality.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/street/street.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street/street.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/suggestion-level-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street-number/street-number.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street-number/street-number.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/box-number/box-number.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/box-number/box-number.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/prefill-data.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/constants.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/nis9.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.module.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/prefilled-parameters.ts","../../../projects/lib-address-autocomplete-by-component/src/public-api.ts","../../../projects/lib-address-autocomplete-by-component/src/bpost-bp-address-auto-complete-by-component.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibAddressAutocompleteByComponentService {\n\n constructor() { }\n}\n","export enum ValidationMessageOptionType {\r\n EMIT = 'EMIT',\r\n SHOW = 'SHOW'\r\n}\r\n","export enum ValidationMessageType {\r\n Address_Not_Found = 'address-not-found',\r\n Address_Validated = 'address-validated',\r\n Service_Unavailable = 'service-unavailable',\r\n}\r\n","export enum ADDRESSLEVEL {\r\n BOX_NUMBER = 1,\r\n STREET_NUMBER,\r\n STREET,\r\n LOCALITY\r\n}\r\n","export class QueryParameters {\r\n id: number;\r\n q: string;\r\n postalCode: string;\r\n locality: string;\r\n street: string;\r\n streetNumber: string;\r\n maxNumberOfSuggestions: number;\r\n sortByPostalCodeLocalityName: boolean;\r\n sortByLocalityNamePostalCode: boolean;\r\n sortByStreetName: boolean;\r\n sortByStreetNumber: boolean;\r\n sortByBoxNumber: boolean;\r\n\r\n constructor(init?: Partial<QueryParameters>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n sortByPostalCode(enable: boolean) {\r\n this.sortByPostalCodeLocalityName = enable;\r\n }\r\n\r\n sortByLocalityname(enable: boolean) {\r\n this.sortByLocalityNamePostalCode = enable;\r\n }\r\n\r\n sortByStreet(enable: boolean) {\r\n this.sortByStreetName = enable;\r\n }\r\n\r\n sortByStreetNb(enable: boolean) {\r\n this.sortByStreetNumber = enable;\r\n }\r\n\r\n sortByBox(enable: boolean) {\r\n this.sortByBoxNumber = enable;\r\n }\r\n}\r\n","export class DomHandler {\r\n public static findSingle(element: any, selector: string): any {\r\n if (element) {\r\n return element.querySelector(selector);\r\n }\r\n return null;\r\n }\r\n\r\n public static scrollInView(container, item) {\r\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\r\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\r\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\r\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\r\n const containerRect = container.getBoundingClientRect();\r\n const itemRect = item.getBoundingClientRect();\r\n const offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\r\n const scroll = container.scrollTop;\r\n const elementHeight = container.clientHeight;\r\n const itemHeight = this.getOuterHeight(item);\r\n\r\n if (offset < 0) {\r\n container.scrollTop = scroll + offset;\r\n } else if ((offset + itemHeight) > elementHeight) {\r\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\r\n }\r\n }\r\n \r\n public static getInnerHeight(el) {\r\n let height = el.offsetHeight;\r\n let style = getComputedStyle(el);\r\n\r\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\r\n return height;\r\n }\r\n\r\n public static getOuterHeight(el, margin?) {\r\n let height = el.offsetHeight;\r\n\r\n if (margin) {\r\n let style = getComputedStyle(el);\r\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\r\n }\r\n\r\n return height;\r\n }\r\n\r\n public static getHeight(el): number {\r\n let height = el.offsetHeight;\r\n let style = getComputedStyle(el);\r\n\r\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\r\n\r\n return height;\r\n }\r\n}\r\n","export enum SourceType\r\n{\r\n SOURCE_PREFILLED = 'Prefilled'\r\n}\r\n","import { PrefillData } from './prefill-data';\r\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\r\n\r\nexport class PrefillEvent\r\n{\r\n constructor(\r\n public addressLevel: ADDRESSLEVEL,\r\n public prefillData: PrefillData,\r\n ){}\r\n}\r\n","export enum InputNameType\r\n{\r\n LOCALITY = 'LOCALITY',\r\n STREET = 'STREET',\r\n STREET_NUMBER = 'STREET_NUMBER',\r\n BOX_NUMBER = 'BOX_NUMBER'\r\n}\r\n","export class Locality {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}","export class Street {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}\r\n","export class Box {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpService {\n\n private openConnections = 0;\n private showDebugMessageToConsole = false;\n\n constructor(private httpClient: HttpClient) { }\n\n private apiKey = 'no-value';\n\n setApiKey(apiKey: string): void\n {\n this.apiKey = apiKey;\n }\n\n setShowDebugMessageToConsole(showDebugMessageToConsole: boolean): void{\n this.showDebugMessageToConsole=showDebugMessageToConsole;\n }\n\n getHttpHeaders(): HttpHeaders\n {\n let headers=new HttpHeaders();\n // Attention !\n // Need to reassign as the 'set' is returning a clone of the headera object !!!\n headers=headers.set('x-api-key', /*'bBkvimXYnAaEEKMyGqoWO2XiaZCQyqUi7VReYzPJ'*/ this.apiKey);\n return headers;\n }\n \n get(url: string, options?: any): Observable<any> {\n return this.request('GET', url, options);\n }\n\n private request(method: any, url?: string, options?: {}): Observable<any> {\n options = !!options ? options : {};\n options = {...options, headers: this.getHttpHeaders()};\n if (this.showDebugMessageToConsole) {\n console.log('url:', url);\n console.log('options:', JSON.stringify(options));\n }\n\n this.openConnections++;\n return this.httpClient.request(method, url, options).pipe(\n map((response: Response) => this.handleResponse(response)),\n catchError((error: any) => this.handleError(error)));\n }\n\n private handleResponse(response: any): any {\n this.openConnections--;\n return response;\n }\n\n private handleError(error: any): any {\n this.openConnections--;\n return throwError(error);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, tap } from 'rxjs/operators';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { HttpService } from './http.service';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { Locality } from '../model/Locality';\nimport { Street } from '../model/Street';\nimport { Box } from '../model/Box';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddressService {\n private domain = 'http://abp-pr.netpost';\n private localityURL = this.domain + '/AddressAutoComplete/autocomplete/locality?IncludeGeographicalSanction=true';\n\n private readonly log=true;\n\n private nis9InResponse=false;\n\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\n private nis9ServiceURL='';\n\n constructor(\n private httpService: HttpService\n ) { }\n\n getLocality(baseUrl: string, params: QueryParameters): Observable<Locality> {\n const url = baseUrl !== '' ? baseUrl : this.localityURL;\n // const options = {'params': params};\n const options = {params};\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetLocality(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetLocality(response: any): Locality {\n const locality: Locality = new Locality(response.response);\n return locality;\n }\n\n getStreet(baseUrl: string, locality: string, postalcode: string, params: QueryParameters): Observable<Street> {\n let url = baseUrl;\n // const options = { 'params': params };\n const options = {params};\n url = url.replace('$postalCode', postalcode);\n url = url.replace('$localityName', locality);\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetStreet(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetStreet(response: any): Street {\n const street: Street = new Street(response.response);\n return street;\n }\n\n getBox(baseUrl: string, locality: string, postalcode: string, params: QueryParameters): Observable<Box> {\n let url = baseUrl;\n const options = {params};\n url = url.replace('$postalCode', postalcode);\n url = url.replace('$localityName', locality);\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetBox(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetBox(response: any): Box {\n const street: Box = new Box(response.response);\n return street;\n }\n\n handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n \n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocaleService {\n\n inputLanguageEvent = new BehaviorSubject<string>(undefined);\n currentLang = this.inputLanguageEvent.asObservable();\n\n constructor(\n // private translateService: TranslateService\n ) { }\n\n changeLang(lang: string) {\n // this.translateService.use(lang);\n this.inputLanguageEvent.next(lang);\n }\n\n public isLocaleDutch(): boolean {\n return this.isPreferredLocale('nl');\n }\n\n public isLocaleFrench(): boolean {\n return this.isPreferredLocale('fr');\n }\n\n public isLocaleGerman(): boolean {\n return this.isPreferredLocale('de');\n }\n\n private isPreferredLocale(locale: string): boolean {\n return (this.inputLanguageEvent.getValue() \n || window.navigator['userSelectedLanguage'] \n || window.navigator['userLanguage'] \n || window.navigator.language).indexOf(locale) === 0;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\n// const diacriticsRemovalMap = require('../../assets/diacriticsRemovalMap.json');\n\nconst diacriticsRemovalMap = {\n 'default': [\n {\n 'base': 'A',\n 'letters': '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n },\n {\n 'base': 'AA',\n 'letters': '\\uA732'\n },\n {\n 'base': 'AE',\n 'letters': '\\u00C6\\u01FC\\u01E2'\n },\n {\n 'base': 'AO',\n 'letters': '\\uA734'\n },\n {\n 'base': 'AU',\n 'letters': '\\uA736'\n },\n {\n 'base': 'AV',\n 'letters': '\\uA738\\uA73A'\n },\n {\n 'base': 'AY',\n 'letters': '\\uA73C'\n },\n {\n 'base': 'B',\n 'letters': '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n },\n {\n 'base': 'C',\n 'letters': '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n },\n {\n 'base': 'D',\n 'letters': '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n },\n {\n 'base': 'DZ',\n 'letters': '\\u01F1\\u01C4'\n },\n {\n 'base': 'Dz',\n 'letters': '\\u01F2\\u01C5'\n },\n {\n 'base': 'E',\n 'letters': '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n },\n {\n 'base': 'F',\n 'letters': '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n },\n {\n 'base': 'G',\n 'letters': '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n },\n {\n 'base': 'H',\n 'letters': '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n },\n {\n 'base': 'I',\n 'letters': '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n },\n {\n 'base': 'J',\n 'letters': '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n },\n {\n 'base': 'K',\n 'letters': '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n },\n {\n 'base': 'L',\n 'letters': '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n },\n {\n 'base': 'LJ',\n 'letters': '\\u01C7'\n },\n {\n 'base': 'Lj',\n 'letters': '\\u01C8'\n },\n {\n 'base': 'M',\n 'letters': '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n },\n {\n 'base': 'N',\n 'letters': '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n },\n {\n 'base': 'NJ',\n 'letters': '\\u01CA'\n },\n {\n 'base': 'Nj',\n 'letters': '\\u01CB'\n },\n {\n 'base': 'O',\n 'letters': '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n },\n {\n 'base': 'OI',\n 'letters': '\\u01A2'\n },\n {\n 'base': 'OO',\n 'letters': '\\uA74E'\n },\n {\n 'base': 'OU',\n 'letters': '\\u0222'\n },\n {\n 'base': 'OE',\n 'letters': '\\u008C\\u0152'\n },\n {\n 'base': 'oe',\n 'letters': '\\u009C\\u0153'\n },\n {\n 'base': 'P',\n 'letters': '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n },\n {\n 'base': 'Q',\n 'letters': '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n },\n {\n 'base': 'R',\n 'letters': '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n },\n {\n 'base': 'S',\n 'letters': '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n },\n {\n 'base': 'T',\n 'letters': '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n },\n {\n 'base': 'TZ',\n 'letters': '\\uA728'\n },\n {\n 'base': 'U',\n 'letters': '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n },\n {\n 'base': 'V',\n 'letters': '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n },\n {\n 'base': 'VY',\n 'letters': '\\uA760'\n },\n {\n 'base': 'W',\n 'letters': '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n },\n {\n 'base': 'X',\n 'letters': '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n },\n {\n 'base': 'Y',\n 'letters': '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n },\n {\n 'base': 'Z',\n 'letters': '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n },\n {\n 'base': 'a',\n 'letters': '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n },\n {\n 'base': 'aa',\n 'letters': '\\uA733'\n },\n {\n 'base': 'ae',\n 'letters': '\\u00E6\\u01FD\\u01E3'\n },\n {\n 'base': 'ao',\n 'letters': '\\uA735'\n },\n {\n 'base': 'au',\n 'letters': '\\uA737'\n },\n {\n 'base': 'av',\n 'letters': '\\uA739\\uA73B'\n },\n {\n 'base': 'ay',\n 'letters': '\\uA73D'\n },\n {\n 'base': 'b',\n 'letters': '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n },\n {\n 'base': 'c',\n 'letters': '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n },\n {\n 'base': 'd',\n 'letters': '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n },\n {\n 'base': 'dz',\n 'letters': '\\u01F3\\u01C6'\n },\n {\n 'base': 'e',\n 'letters': '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n },\n {\n 'base': 'f',\n 'letters': '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n },\n {\n 'base': 'g',\n 'letters': '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n },\n {\n 'base': 'h',\n 'letters': '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n },\n {\n 'base': 'hv',\n 'letters': '\\u0195'\n },\n {\n 'base': 'i',\n 'letters': '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n },\n {\n 'base': 'j',\n 'letters': '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n },\n {\n 'base': 'k',\n 'letters': '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n },\n {\n 'base': 'l',\n 'letters': '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n },\n {\n 'base': 'lj',\n 'letters': '\\u01C9'\n },\n {\n 'base': 'm',\n 'letters': '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n },\n {\n 'base': 'n',\n 'letters': '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n },\n {\n 'base': 'nj',\n 'letters': '\\u01CC'\n },\n {\n 'base': 'o',\n 'letters': '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n },\n {\n 'base': 'oi',\n 'letters': '\\u01A3'\n },\n {\n 'base': 'ou',\n 'letters': '\\u0223'\n },\n {\n 'base': 'oo',\n 'letters': '\\uA74F'\n },\n {\n 'base': 'p',\n 'letters': '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n },\n {\n 'base': 'q',\n 'letters': '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n },\n {\n 'base': 'r',\n 'letters': '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n },\n {\n 'base': 's',\n 'letters': '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n },\n {\n 'base': 't',\n 'letters': '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n },\n {\n 'base': 'tz',\n 'letters': '\\uA729'\n },\n {\n 'base': 'u',\n 'letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n },\n {\n 'base': 'v',\n 'letters': '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n },\n {\n 'base': 'vy',\n 'letters': '\\uA761'\n },\n {\n 'base': 'w',\n 'letters': '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n },\n {\n 'base': 'x',\n 'letters': '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n },\n {\n 'base': 'y',\n 'letters': '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n },\n {\n 'base': 'z',\n 'letters': '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n }\n ]\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UnicodeService implements OnDestroy {\n\n private defaultDiacriticsRemovalMap: any;\n private diacriticsMap: Object;\n\n constructor() {\n this.defaultDiacriticsRemovalMap = diacriticsRemovalMap.default;\n this.diacriticsMap = {};\n this.defaultDiacriticsRemovalMap.forEach(value => value.letters.split('').forEach((char) => this.diacriticsMap[char] = value.base));\n }\n\n public removeDiacritics(str: any) {\n if(str === null || str === undefined) { return str; }\n return str.replace(/[^\\u0000-\\u007E]/g, (a: string | number) => this.diacriticsMap[a] || a);\n }\n\n ngOnDestroy() {\n this.diacriticsMap = {};\n }\n\n}\n","import { Directive, Input, ElementRef, AfterViewChecked, Renderer2 } from '@angular/core';\nimport { DomHandler } from './domhandler';\n\n@Directive({\n selector: '[appVisibleSuggestion]'\n})\nexport class VisibleSuggestionDirective implements AfterViewChecked {\n\n @Input()\n appVisibleSuggestion: number;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngAfterViewChecked() {\n this.showHeight(this.el.nativeElement, this.appVisibleSuggestion);\n }\n\n showHeight(parent: HTMLElement, count: number) {\n if (!parent) { return; }\n\n // const children = parent.getElementsByClassName('list-option');\n // const children = parent.querySelectorAll('li');\n const children = parent.firstElementChild.children;\n\n if (!children || children.length === 0) { return; }\n\n const sum = Array.from(children).slice(0, count).reduce((acc, ele) => {\n return acc + DomHandler.getOuterHeight(ele);\n }, 7);\n\n this.renderer.setStyle(this.el.nativeElement, 'maxHeight', `${sum}px`);\n\n // this.el.nativeElement.style.maxHeight = `${sum}px`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'highlightSuggestion'\n})\nexport class HighlightSuggestionPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: any, args?: any): any {\n\n if (!args) {\n return value;\n }\n\n if (Array.isArray(args) && args.length > 1 ) {\n return this.transformForArray(value, args);\n }\n\n if (args === '.') {\n args = '\\\\.';\n } else if (Array.isArray(args) && args.length === 1 ) {\n if (args[0] === '.') {\n args[0] = '\\\\.';\n }\n }\n\n // Match in a case insensitive manner\n const re = new RegExp(args, 'gi');\n const match = value.match(re);\n\n // If there's no match, just return the original value.\n if (!match) {\n return value;\n }\n\n /* console.warn('HighlightSuggestionPipe::transform: value=' + value);\n console.warn('HighlightSuggestionPipe::transform: args=' + args);\n console.warn('HighlightSuggestionPipe::transform: match=' + match); */\n\n const replacedValue = value.replace(re, '<span style=\\'font-weight: bold;\\'>' + match[0] + '</span>');\n // console.warn('HighlightSuggestionPipe::transform: replacedValue=' + replacedValue);\n return this.sanitizer.bypassSecurityTrustHtml(replacedValue);\n }\n\n private transformForArray(value: any, args: any): any {\n\n let query = '';\n let ix = 0;\n for (const word of args) {\n ix++;\n if (ix < args.length) {\n query = query.concat( word + '|');\n } else {\n query = query.concat( word );\n }\n }\n\n // console.warn('HighlightSuggestionPipe::transformForArray', value, args, query);\n\n const replacedValue = value.replace(new RegExp('(' + query + ')', 'gi'), '<span style=\"font-weight: bold;\">$1</span>');\n return this.sanitizer.bypassSecurityTrustHtml(replacedValue);\n }\n}\n","import { Component, OnInit, OnChanges, OnDestroy, SimpleChanges, AfterViewChecked, ElementRef, ViewChild, Input, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { AddressService } from '../services/adress.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LocaleService } from '../services/locale.service';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillData } from '../utils/prefill-data';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\n\n@Component({\n selector: 'bp-locality',\n templateUrl: './locality.component.html',\n styleUrls: ['./locality.component.scss']\n})\nexport class LocalityComponent implements OnInit, OnChanges, OnDestroy, AfterViewChecked {\n\n @ViewChild('localitySearchInput', { static: false }) localitySearchInput: ElementRef;\n @ViewChild('localityList', { static: false }) localityList: ElementRef;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n\n @Input() labelResourceKey = 'common.label.postalCode';\n @Input() messageOption = 'Y';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggestionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() inputText: string;\n // @Input() addressParams: PrefilledParameters;\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n\n @Input()\n isReadonly = false;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n @Output() messageChanged: EventEmitter<{ messageType: ValidationMessageType, translatedMessage: string }> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> = new EventEmitter<any>();\n // instance properties\n addressIsValidated: boolean;\n bpTypeAhead: string;\n collapseDropdown: boolean;\n consumedNumber: number;\n errorCode: any;\n lastSearchValue: string;\n minLevel: any;\n placeHolderText: string;\n previousIndex: number;\n searchText: string;\n selectedIndex: number;\n selectionChanged: boolean;\n sequenceNumber: number;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n subscription: Subscription;\n suggestions: Array<any>;\n suggestionValidationMessage: string;\n suggestionsWordList: any;\n typeAheadWord: string;\n validationMessageCode = null;\n validationMessageOptions = null;\n wordList: any;\n prefillType:SourceType ;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit(): void {\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = false;\n this.sequenceNumber = 0;\n this.consumedNumber = 0;\n // initialization\n this.setSearchText('');\n this.onChangedLanguage();\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.localityList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n\n if (this.showDebugMessageToConsole) { console.log('locality::ngOnChanges - loadParame result:', this.searchText); }\n this.bpTypeAhead = '';\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.LOCALITY) {\n this.collapseDropdown = true;\n this.prefillData.prefillMunicipalityName\n = this.transformMunicipalityInLowercaseAndWithoutDiacritics(this.prefillData.parameters.municipalityName);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED);\n }\n }\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange) {\n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n /*\n if (changes.hasOwnProperty('baseUrl') && !changes.baseUrl.firstChange) {\n this.clearWidget();\n this.clearSelectedAddress();\n }\n */\n\n // if (changes.hasOwnProperty('validatedByBackend') && changes.hasOwnProperty('prefillData')) {\n // this.onInputChange(SourceType.SOURCE_PREFILLED)\n // }\n\n }\n }\n\n transformMunicipalityInLowercaseAndWithoutDiacritics(municipalityName: string): string {\n let result: string = null;\n if (municipalityName !== null && municipalityName !== undefined) {\n result = this.unicodeService.removeDiacritics(municipalityName);\n result = result.toLowerCase();\n }\n if (this.showDebugMessageToConsole) { console.log('prefill municipality', result); }\n return result;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n // console.log('LibAutocompleteLocalityComponent::buildInputWordList', this.wordList);\n if (this.suggestions && this.wordList) {\n for (const sug of this.suggestions) {\n if (!sug || !sug.hasOwnProperty('string')) {\n continue;\n }\n for (const w of this.wordList) {\n const start = this.startsWithIgnoreDiacritics(sug.string as string, w as string);\n if (start >= 0) {\n const ww = sug.string.substr(start, w.length);\n // console.log('adding word:' + ww);\n // ww is a candidate to be added to the wordlist if not already present in it\n const present = this.wordList.find((w1: string) => w1.toLowerCase() === ww.toLowerCase());\n if (present === null || present === undefined) {\n this.wordList.push(ww);\n }\n }\n }\n }\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics((value !== null && value !== undefined) ? value.toLowerCase() : value);\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics((prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.slice(0, _prefix.length).toLowerCase().indexOf(_prefix) !== -1;\n return start;\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function (sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function (word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n /*\n this.translateService.get(this.errorCode/ *, {value: 'world'}* /).subscribe((res: string) => {\n console.log(res);\n // => 'hello world'\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n });\n */\n\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res) {\n this.clearSuggestionValidationMessage();\n }\n /*\n if (this.suggestionValidationMessage === this.translationService.translate(this.errorCode)) {\n this.clearSuggestionValidationMessage();\n }\n */\n this.errorCode = null;\n }\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant('common.message.' + validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({ messageType: validationMessageType, translatedMessage: message });\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n switch (this.sortCriteria) {\n case 'P':\n param.sortByPostalCode(true);\n break;\n\n case 'L':\n param.sortByLocalityname(true);\n break;\n\n default:\n break;\n }\n return param;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('LOCALITY calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getLocality(this.baseUrl, param).subscribe(\n response => {\n if (this.showDebugMessageToConsole) { console.log('locality suggestions received:', response); }\n this.handleGetLocalityResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED) {\n this.isPrefillWithNoMatch = this.prefillData.prefillMunicipalityPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetLocalityError(source)\n );\n }\n }\n\n getTextColor(): string {\n return (this.isPrefillWithNoMatch === true) ? 'orangered' : '';\n }\n\n handleGetLocalityResponse(data: any, source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('handleGetLocalityResponse', data);\n }\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetLocalityError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n // this.setConnectionErrorMessage();\n\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-locality-dropdown');\n }\n\n isString(val): boolean {\n return val.constructor === String;\n }\n\n loadParams(prefillData: PrefillData) {\n // this.clearWidget();\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null) {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n\n /*\n if (prefillData.parameters.hasOwnProperty('unstructuredAddress') && this.isString(prefillData.parameters.unstructuredAddress)) {\n concatStr = prefillData.parameters.unstructuredAddress;\n } else {\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n concatStr = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n concatStr += ' ' + prefillData.parameters.municipalityName;\n }\n }\n */\n\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n concatStr = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n concatStr += ' ' + prefillData.parameters.municipalityName;\n }\n }\n\n return concatStr;\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.localitySearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.LOCALITY);\n }\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.LOCALITY);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('locality click'); }\n\n }\n\n onInputChange(source?: SourceType) {\n this.collapseDropdown = false;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n } else {\n if (!this.validatedByBackend) {\n if (source === SourceType.SOURCE_PREFILLED) {\n this.clearTypeAhead();\n this.prefillData.prefillMunicipalityPerfectMatchFound = true;\n this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound = true;\n const municipalityName = this.searchText.replace(/\\d+/g, '').trim();\n const postalCode = this.searchText.match(/\\d+/g)?.join(\"\");\n let suggestion = {\n 'address':{\n 'string': this.searchText,\n 'municipalityName': municipalityName ? municipalityName.toUpperCase() : '',\n 'localityName': municipalityName,\n 'postalCode': postalCode,\n 'searchBarString': this.searchText\n }}\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion = suggestion;\n this.isPrefillWithNoMatch = this.prefillData.prefillMunicipalityPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else{\n this.isPrefillWithNoMatch = false;\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n const municipalityName = this.searchText.replace(/\\d+/g, '').trim();\n const postalCode = this.searchText.match(/\\d+/g)?.join(\"\");\n let suggestion = {\n 'string': this.searchText,\n 'municipalityName': municipalityName ? municipalityName.toUpperCase() : '',\n 'localityName': municipalityName,\n 'postalCode': postalCode,\n 'searchBarString': this.searchText\n }\n this.setSelectedAddress(suggestion);\n }\n } else {\n this.getTopSuggestions(source);\n }\n }\n // console.log('LibAutocompleteLocalityComponent::onInputChange - before', this.wordList);\n this.buildInputWordList();\n // console.log('LibAutocompleteLocalityComponent::onInputChange - after', this.wordList);\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n this.suggestions.push(suggestionToAdd);\n if (this.messageOption === 'Y' && suggestionToAdd.hasOwnProperty('messages')) {\n for (const m of suggestionToAdd.messages) {\n const translatedMessage = this.translateMessage(m);\n if (translatedMessage !== null) {\n m.translatedMessage = translatedMessage;\n }\n }\n }\n if (source === SourceType.SOURCE_PREFILLED) {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n }\n }\n\n prefillCheckForPerfectMatch(suggestion) {\n const sugAddress = suggestion.address;\n if ( /*! this.prefillData.prefillMunicipalityPerfectMatchFound &&*/ sugAddress.postalCode === this.prefillData.parameters.postalCode) {\n if (this.showDebugMessageToConsole) {\n console.log('LOCALITY - PREFILL - checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const suggestionLocality = this.transformMunicipalityInLowercaseAndWithoutDiacritics(sugAddress.localityName);\n const suggestionMunicipality = this.transformMunicipalityInLowercaseAndWithoutDiacritics(sugAddress.municipalityName);\n if (suggestionLocality === this.prefillData.prefillMunicipalityName\n || suggestionMunicipality === this.prefillData.prefillMunicipalityName) {\n if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - skipping suggestion:', suggestion); }\n if (this.showDebugMessageToConsole) {\n console.log('LOCALITY - PREFILL - keeping suggestion:',\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion);\n }\n return;\n }\n\n this.prefillData.prefillMunicipalityPerfectMatchFound = true;\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.postalCode + ' ' + sugAddress.localityName;\n\n this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound = (suggestionLocality === this.prefillData.prefillMunicipalityName\n && suggestionMunicipality === this.prefillData.prefillMunicipalityName) ? true : false;\n\n if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - Perfect match - Municipality & location:', suggestion); }\n }\n else {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - NO Perfect match:', suggestion); }\n }\n }\n }\n }\n\n prefillAnalyzeData() {\n\n if (this.prefillData.prefillMunicipalityPerfectMatchFound === true) {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(/*this.prefillData*/ new PrefillEvent(ADDRESSLEVEL.LOCALITY, this.prefillData));\n }\n\n\n\n parseTopSuggestions(topSuggestions, source: SourceType) {\n if (this.showDebugMessageToConsole) { console.log('locality - parse suggestions', topSuggestions); }\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions) {\n this.parseSingleSuggestion(sug, source);\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n startsWithIgnoreDiacritics(value: string, prefix: string): number {\n // console.log('Searching for prefix \"' + prefix + '\" inside suggestion: ' + value);\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics((value !== null && value !== undefined) ? value.toLowerCase() : value);\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics((prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.indexOf(_prefix);\n // console.log('startsWithIgnoreDiacritics: ' + start);\n return start;\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n clearInput(focus?, emit: boolean = true) {\n this.clearSuggestions();\n this.bpTypeAhead = '';\n this.setSearchText('');\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.clearSelectedAddress();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.localitySearchInput.nativeElement.focus();\n }\n if (emit) {\n this.clearInputEventEmitter.emit(/*'LOCALITY'*/ InputNameType.LOCALITY);\n }\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n clearSuggestionValidationMessage() {\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({ messageType: null, translatedMessage: this.suggestionValidationMessage });\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n // console.log('LibAutocompleteLocalityComponent::clearSuggestions', this.wordList);\n // this.suggestionMessages = [];\n }\n\n clickSuggestion(event: any, suggestion: any) {\n this.isPrefillWithNoMatch = false;\n event.preventDefault();\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n this.setSearchText(suggestion.string);\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n this.addressIsValidated = true;\n this.clearSuggestions();\n this.setSelectedAddress(suggestion);\n }\n\n clearWidget() {\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n this.prefilling = false;\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('locality.placeholder.input-placeholder');\n this.translateService.get('locality.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n });\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n checkKeyDown(event) {\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = /*'service-unavailable'*/ ValidationMessageType.Service_Unavailable;\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n setSelectedAddress(suggestion: any) {\n this.addressChanged.emit(suggestion);\n }\n\n translateMessage(message): string {\n const messageKey = message.key;\n switch (messageKey) {\n case 'subl': {\n // args length must be 2 !\n if (message.args && message.args.length === 2) {\n return this.translateService.instant('locality.suggestion.message.subl', { sub: message.args[0], principal: message.args[1] });\n }\n }\n // tslint:disable-next-line:align\n break;\n }\n return null;\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n \n <input type=\"text\" #localitySearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n (keydown)=\"checkKeyDown($event)\" (input)=\"onInputChange()\"\n [style.color]=\" getTextColor() \"\n [(ngModel)]=\"searchText\" id=\"localityInputField\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"/>\n <div id=\"bpaac-clear-locality-button\" \n *ngIf=\"mayShowClearButton()\"\n (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-locality-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" *ngIf=\"suggestions && suggestions.length>0\">\n <div #localityList [appVisibleSuggestion]=\"visibleSuggestionCount\" id=\"bpaac-locality-dropdown\" \n class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-locality-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" \n *ngFor=\"let option of suggestions; let idx = index\" \n [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option.string | highlightSuggestion : wordList\"></span> \n <span *ngIf=\"messageOption === 'P' && option.messages\"> ({{option.municipalityName}})</span><br />\n <ng-container *ngIf=\"messageOption === 'Y'\">\n <span *ngFor=\"let message of option.messages\" \n class=\"bpaac-suggestion-message\"\n [innerHtml]=\"message.translatedMessage\"></span> \n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n</div>","import { Component, OnInit, ViewChild, ElementRef, Input, Output, EventEmitter, SimpleChanges, AfterViewChecked, OnChanges, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\n\n@Component({\n selector: 'bp-street',\n templateUrl: './street.component.html',\n styleUrls: ['./street.component.scss']\n})\nexport class StreetComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n @ViewChild('streetSearchInput', {static: false} ) streetSearchInput: ElementRef;\n @ViewChild('streetList', {static: false} ) streetList: ElementRef;\n\n private subscription: Subscription = null;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n\n @Input() labelResourceKey = 'common.label.streetName';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() inputText: string;\n\n @Input() messageOption = 'Y';\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n\n @Input()\n isReadonly=false;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> =new EventEmitter<any>();\n\n searchText: string;\n\n addressIsValidated: boolean;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit(): void {\n\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = false;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.onChangedLanguage();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('street.placeholder.input-placeholder');\n this.translateService.get('street.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n });\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.streetList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n // if(this.searchText === '')\n // {\n setTimeout(() => {\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n // console.log(\"setrtt time\");\n }, 200);\n // }\n\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.STREET) {\n /*\n this.onInputChange('prefilled');\n this.streetSearchInput.nativeElement.focus();\n */\n /*\n\n this.prefilling = true;\n this.collapseDropdown = true;\n this.prefillMunicipalityName = this.transformMunicipalityInLowercaseAndWithoutDiacritics(this.addressParams.municipalityName);\n this.onInputChange(/*'prefilled'* / // this.SOURCE_PREFILLED );\n */\n\n this.collapseDropdown = true;\n this.prefillData.prefillStreetName\n = this.transformStreetNameInLowercaseAndWithoutDiacritics(this.prefillData.parameters.streetName);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n\n }\n\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange) {\n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n\n // Reset Street search bar on locality change/reset\n if (changes.hasOwnProperty('postalCode') && !changes.postalCode.firstChange && !changes.hasOwnProperty('prefillData')) {\n this.minLevel = ADDRESSLEVEL.STREET;\n if (changes.postalCode.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n }\n\n }\n }\n\n transformStreetNameInLowercaseAndWithoutDiacritics(streetName: string): string {\n let result: string = null;\n if (streetName !== null && streetName !== undefined )\n {\n result = this.unicodeService.removeDiacritics(streetName);\n result = result.toLowerCase();\n }\n if (this.showDebugMessageToConsole) { console.log('prefill streetName', result); }\n return result;\n }\n\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n\n onBlur(ev: any) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.streetSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.STREET);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-street-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n\n if (this.showDebugMessageToConsole) { console.log('street comp - onFocus', this.prefilling, this.prefillData, this.collapseDropdown); }\n\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.STREET);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n // console.log('word list - street:', this.wordList);\n if (this.suggestions && this.wordList) {\n for (const sug of this.suggestions) {\n if (!sug || !sug.hasOwnProperty('string')) {\n continue;\n }\n for (const w of this.wordList) {\n const start = this.startsWithIgnoreDiacritics(sug.string as string, w as string);\n if (start >= 0) {\n const ww = sug.string.substr(start, w.length);\n // console.log('adding word:' + ww);\n // ww is a candidate to be added to the wordlist if not already present in it\n const present = this.wordList.find( (w1: string) => w1.toLowerCase() === ww.toLowerCase() );\n if (present === null || present === undefined) {\n this.wordList.push(ww);\n }\n }\n }\n }\n }\n }\n\n startsWithIgnoreDiacritics(value: string, prefix: string): number {\n // console.log('Searching for prefix \"' + prefix + '\" inside suggestion: ' + value);\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics( (value !== null && value !== undefined) ? value.toLowerCase() : value );\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics( (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.indexOf(_prefix);\n // console.log('startsWithIgnoreDiacritics: ' + start);\n return start;\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics( (value !== null && value !== undefined) ? value.toLowerCase() : value );\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics( (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.slice(0, _prefix.length).toLowerCase().indexOf(_prefix) !== -1;\n return start;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('STREET calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getStreet(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n this.handleGetStreetResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetStreetError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n /*\n if (params.hasOwnProperty('unstructuredAddress') && this.isString(params.unstructuredAddress)) {\n this.valueChanged();\n }\n */\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName')\n && this.isString(prefillData.parameters.streetName) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.streetName;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n if(!this.validatedByBackend){\n return this.isValid(this.postalCode) || this.isValid(this.locality);\n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality);\n }\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'S') {\n param.sortByStreet(true);\n }\n return param;\n }\n\n handleGetStreetResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetStreetError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = /*'service-unavailable'*/ ValidationMessageType.Service_Unavailable;\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions)\n {\n this.parseSingleSuggestion(sug, source);\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n this.suggestions.push(suggestionToAdd);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n }\n }\n\n prefillCheckForPerfectMatch(suggestion)\n {\n if (this.showDebugMessageToConsole) {console.log('street - checking suggestion for perfect match', this.prefillData, suggestion); }\n const sugAddress = suggestion.address;\n // if (sugAddress.streetName === this.prefillData.parameters.streetName )\n const suggestionLocality = this.transformStreetNameInLowercaseAndWithoutDiacritics(sugAddress.localityName);\n const suggestionMunicipality = this.transformStreetNameInLowercaseAndWithoutDiacritics(sugAddress.municipalityName);\n if (suggestionLocality === this.prefillData.prefillMunicipalityName\n || suggestionMunicipality === this.prefillData.prefillMunicipalityName)\n {\n const suggestionStreetName = this.transformStreetNameInLowercaseAndWithoutDiacritics(sugAddress.streetName);\n // console.log('comparing street names', suggestionStreetName, this.prefillData.prefillStreetName);\n if (suggestionStreetName === this.prefillData.prefillStreetName)\n {\n this.prefillData.prefillStreetPerfectMatchFound = true;\n this.prefillData.prefillStreetPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.streetName;\n }\n\n if (this.prefillData.prefillStreetPerfectMatchFound === true)\n {\n if (this.showDebugMessageToConsole) { console.log('STREET - PREFILL - Perfect match - street:', suggestion); }\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('STREET - PREFILL - NO Perfect match:', suggestion); }\n }\n }\n }\n\n onInputChange(source?: SourceType) {\n // console.log('street onInputChange : source ', source);\n this.collapseDropdown = false;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n } else {\n if(!this.validatedByBackend){\n\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillStreetPerfectMatchFound = true;\n // this.clearTypeAhead();\n // this.resetArrowSelectedIndex();\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'localityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.searchText.toUpperCase()\n }}\n this.prefillData.prefillStreetPerfectMatchSuggestion = suggestion;\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetPerfectMatchFound === true ? false : true;\n\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'localityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillStreetPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.STREET, this.prefillData) );\n }\n\n\n clickSuggestion(event: any, suggestion: any) {\n this.isPrefillWithNoMatch = false;\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion', event, suggestion); }\n event?.preventDefault();\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n this.setSearchText(suggestion.string);\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n this.addressIsValidated = true;\n if (event) {\n this.clearSuggestions();\n }\n this.setSelectedAddress(suggestion);\n }\n\n setSelectedAddress(suggestion: any) {\n this.addressChanged.emit(suggestion);\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n showAddressIsValidated() {\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n\n clearWidget() {\n this.addressIsValidated = false;\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n clearInput(focus?, emit: boolean = true) {\n // console.warn('street clearInput called ...', focus, emit);\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n // console.warn('street clearInput - set focus !!!', focus);\n this.streetSearchInput.nativeElement.focus();\n }\n if (emit) {\n this.clearInputEventEmitter.emit(/*'STREET'*/ InputNameType.STREET);\n }\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.STREET);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('street click'); }\n this.prefilling = false;\n this.collapseDropdown = false;\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #streetSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"(validatedByBackend && (!locality || locality.trim().length === 0)) \n || (!validatedByBackend && ((!postalCode || postalCode.trim().length === 0) && (!locality || locality.trim().length === 0)))\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"streetInputField\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-street-button\" *ngIf=\"mayShowClearButton()\" (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-street-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" *ngIf=\"suggestions && suggestions.length>0\">\n <div #streetList [appVisibleSuggestion]=\"visibleSuggesionCount\" id=\"bpaac-street-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-street-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","export enum SuggestionLevelType {\r\n // this only applies for streetNumber and boxNumber\r\n None,\r\n StreetNumber,\r\n StreetAndBoxNumber\r\n}","import { Component, OnInit, AfterViewChecked, OnChanges, OnDestroy, ElementRef, ViewChild, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { UnicodeService } from '../services/unicode.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\nimport { SuggestionLevelType } from '../enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-street-number',\n templateUrl: './street-number.component.html',\n styleUrls: ['./street-number.component.scss']\n})\nexport class StreetNumberComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n\n @ViewChild('streetNumberSearchInput', {static: false} ) streetNumberSearchInput: ElementRef;\n @ViewChild('streetNumberList', {static: false} ) streetNumberList: ElementRef;\n\n private subscription: Subscription;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n @Input() labelResourceKey = 'common.label.streetNumber';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() streetName: string;\n @Input() notInListAllowed: boolean;\n @Input() selectedAddress;\n @Input() allowNoValidation: boolean\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n @Input() messageOption = 'Y';\n @Input() inputText: string;\n\n @Input()\n isReadonly=false;\n\n @Input()\n suggestionLevel: SuggestionLevelType;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() emptyResponseEvent: EventEmitter<any> = new EventEmitter();\n\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n\n @Output()\n streetNumberChanged: EventEmitter<string> = new EventEmitter();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> = new EventEmitter();\n\n searchText: string;\n\n addressIsValidated = false;\n addressIsComplete = false;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n emptyResponseText: string;\n emptyResponse: boolean;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n SuggestionLevelType=SuggestionLevelType;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit() {\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = true;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.setEmptyResponseText();\n this.emptyResponse = true;\n this.onChangedLanguage();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('streetNumber.placeholder.input-placeholder');\n this.translateService.get('streetNumber.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n this.setEmptyResponseText();\n });\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.streetNumberList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n\n if (changes.hasOwnProperty('streetName')\n && !changes.streetName.firstChange\n && !changes.hasOwnProperty('prefillData') && ! this.prefilling ) {\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.addressIsComplete = false;\n if (this.showDebugMessageToConsole) {\n console.warn('street name - ngOnchanges - streetName changes detection');\n }\n if (changes.streetName.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n }\n\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange && ! this.prefilling ) {\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - inputText changes detection', this.searchText, changes.inputText.currentValue);\n }\n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - inputText changes detection -> calling clearWidget() !');\n }\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.addressIsComplete = false;\n // console.log('streetNumber::ngOnChanges', this.addressIsComplete);\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.STREET_NUMBER) {\n /*\n this.onInputChange(/*'prefilled'* / SourceType.SOURCE_PREFILLED);\n this.streetNumberSearchInput.nativeElement.focus();\n */\n\n this.collapseDropdown = true;\n this.prefillData.prefillStreetNumber\n = this.transformStreetNumberInLowercaseAndWithoutDiacritics(this.prefillData.parameters.streetNumber);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n // console.log('streetNumber::ngOnChanges -- after calculations', this.addressIsComplete);\n }\n\n }\n }\n\n transformStreetNumberInLowercaseAndWithoutDiacritics(streetNumber: string): string {\n let result: string = null;\n if (streetNumber !== null && streetNumber !== undefined )\n {\n result = this.unicodeService.removeDiacritics(streetNumber);\n result = result.toLowerCase();\n }\n // console.log('Transformed street number:', result);\n return result;\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n setEmptyResponseText() {\n this.emptyResponseText = this.translateService.instant('streetNumber.message.not-in-list');\n }\n\n /*\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n */\n\n /*\n retranslate() {\n this.setPlaceHolderText();\n this.setEmptyResponseText();\n if (this.errorCode) {\n this.setValidationMessage(this.errorCode);\n } else {\n if (this.validationMessageCode) {\n this.setValidationMessage(this.validationMessageCode, this.validationMessageOptions, true);\n }\n }\n }\n */\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.streetNumberSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.STREET_NUMBER);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-streetnumber-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.STREET_NUMBER);\n }\n\n valueChanged() {\n // console.warn('street-number::valueChanged DISABLED');\n this.textChangeEvent.emit(this.searchText);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n value = (value !== null && value !== undefined) ? value.toLowerCase() : value;\n prefix = (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix;\n return this.unicodeService.removeDiacritics(value).slice(0, prefix.length)\n .toLowerCase().indexOf(this.unicodeService.removeDiacritics(prefix)) !== -1;\n }\n\n getBackgroundColor(): string {\n return !this.isParamsComplete() ? 'lightgrey' : '';\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('STREET-NUMBER calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getStreet(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n if (this.showDebugMessageToConsole) { console.log('STREET-NUMBER service response', response); }\n this.handleGetStreetResponse(response, source);\n // console.log('street number service response', response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n /*\n if (this.prefillData.prefillStreetNumberPerfectMatchFound !== true )\n {\n this.searchText = this.prefillData.prefillStreetNumber;\n }\n */\n // this.addressIsComplete = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? true : false;\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetStreetError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillStreetNumberPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.STREET_NUMBER, this.prefillData) );\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName') && this.isString(prefillData.parameters.streetName)) {\n this.streetName = prefillData.parameters.streetName;\n }\n if (prefillData.parameters.hasOwnProperty('streetNumber')\n && this.isString(prefillData.parameters.streetNumber) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.streetNumber;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n/* if (this.showDebugMessageToConsole) {\n console.log('street-number::isParamsComplete', this.postalCode, this.locality, this.streetName);\n } */\n if(!this.validatedByBackend){\n return (this.isValid(this.postalCode) || this.isValid(this.locality)) && this.isValid(this.streetName)\n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName);\n }\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n street: this.streetName,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'S') {\n param.sortByStreetNb(true);\n }\n return param;\n }\n\n handleGetStreetResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetStreetError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = 'service-unavailable';\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source?: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions)\n {\n if (this.showDebugMessageToConsole)\n {\n console.log('streetnumber::parseTopSuggestions - suggestion:',sug,'source:', source);\n }\n this.parseSingleSuggestion(sug, source);\n }\n\n if (!source)\n {\n if ((topSuggestions.length === 0 || this.emptyResponse) && this.notInListAllowed) {\n this.suggestions.push({string: this.searchText, 'not-in-list': true});\n }\n }\n else\n {\n // If prefilling, then check if no match for a non-empty boxNumber\n // If this is the case, simulate the selection of the 'not-in-list' suggestion\n if (this.prefilling && this.notInListAllowed\n && this.prefillData.prefillStreetNumberPerfectMatchFound === false\n && this.prefillData.prefillStreetNumber !== null\n && this.prefillData.prefillStreetNumber !== undefined\n && this.prefillData.prefillStreetNumber.length > 0)\n {\n // const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const suggestion = this.prefillBuildNotInListSuggestion();\n if (this.showDebugMessageToConsole) { console.log('STREET NUMBER - PREFILL NOT IN LIST SUGGESTION:', suggestion); }\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n prefillBuildNotInListSuggestion(): any {\n const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const streetSuggestion = this.prefillData.prefillStreetPerfectMatchSuggestion;\n const combined = {...streetSuggestion.address, ...notInListSuggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n // combined.boxNumber = combined.string;\n combined.houseNumber = combined.string;\n combined.searchBarString = combined.string;\n let isComplete = false;\n if (this.prefillData.parameters.hasOwnProperty('boxNumber') )\n {\n const bn = this.prefillData.parameters.boxNumber;\n isComplete = (bn !== null && bn !== undefined && bn.length > 0 ) ? false : true;\n }\n else\n {\n isComplete = true;\n }\n if (isComplete === true) {\n combined.isComplete = isComplete;\n }\n streetSuggestion.address = combined;\n return streetSuggestion;\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n if (suggestionToAdd.houseNumber === this.searchText) {\n this.emptyResponse = false;\n }\n this.suggestions.push(suggestionToAdd);\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - add suggestion to list', suggestionToAdd);\n }\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n if (this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber)\n {\n suggestion.address = suggestionToAdd;\n const isPerfectMatch=this.checkForPerfectMatch(suggestion);\n if(! isPerfectMatch)\n {\n // seems nothing to do?\n // No need to notify for a incomplete address\n }\n }\n }\n }\n\n checkForPerfectMatch(suggestion): boolean\n {\n if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - checking suggestion for perfect match', suggestion, this.searchText);\n }\n const sugAddress = suggestion.address;\n const suggestionStreetNumber = this.transformStreetNumberInLowercaseAndWithoutDiacritics('' + sugAddress.houseNumber);\n\n if (suggestionStreetNumber === ('' + this.searchText) )\n {\n this.searchText = sugAddress.houseNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true ) {\n this.clickSuggestion(null, sugAddress);\n this.addressIsComplete = true;\n // console.log('streetNumber::prefillCheckForPerfectMatch', this.addressIsComplete);\n if (this.showDebugMessageToConsole && this.addressIsComplete === true) {\n console.log('ADDRESS COMPLETE ON STREET NUMBER !');\n }\n return true;\n } else {\n if(this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber) {\n this.clickSuggestion(null, sugAddress);// house number found\n }\n }\n }\n }\n else\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::prefillCheckForPerfectMatch - Address complete, skipping suggestion check', suggestion);\n }\n }\n\n return false;\n }\n\n prefillCheckForPerfectMatch(suggestion)\n {\n if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const sugAddress = suggestion.address;\n const suggestionStreetNumber = this.transformStreetNumberInLowercaseAndWithoutDiacritics('' + sugAddress.houseNumber);\n if (this.showDebugMessageToConsole) {\n console.log('comparing street numbers', suggestionStreetNumber, this.prefillData.prefillStreetNumber);\n }\n if (suggestionStreetNumber === ('' + this.prefillData.prefillStreetNumber) )\n {\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.houseNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true ) {\n this.clickSuggestion(null, sugAddress);\n this.addressIsComplete = true;\n // console.log('streetNumber::prefillCheckForPerfectMatch', this.addressIsComplete);\n if (this.showDebugMessageToConsole && this.addressIsComplete === true) {\n console.log('ADDRESS COMPLETE ON STREET NUMBER !');\n }\n }\n }\n }\n else\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::prefillCheckForPerfectMatch - Address complete, skipping suggestion check', suggestion);\n }\n }\n }\n\n onInputChange_new(source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange', source);\n }\n this.collapseDropdown = false;\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::onInputChange', this.addressIsComplete);\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange -> calling valueChanged');\n }\n if(this.suggestionLevel!==SuggestionLevelType.None)\n {\n this.valueChanged();\n }\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(A) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(B) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n else\n {\n if(!this.validatedByBackend){\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }\n this.setSelectedAddress(suggestion);\n }else{\n this.getTopSuggestions(source);\n }\n }\n }\n this.buildInputWordList();\n }\n\n onInputChange(source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange', source);\n }\n this.collapseDropdown = false;\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::onInputChange', this.addressIsComplete);\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange -> calling valueChanged');\n }\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(A) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(B) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED){\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }}\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n }\n else if(!this.validatedByBackend){\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }}\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }\n this.setSelectedAddress(suggestion);}\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n\n clickSuggestion(event: any, suggestion?: any) {\n this.isPrefillWithNoMatch = false;\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion', event, suggestion); }\n event?.preventDefault();\n if (suggestion) {\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n if (suggestion.string) {\n this.setSearchText(suggestion.string);\n }\n this.collapseDropdown = true;\n\n const notInList = suggestion['not-in-list'];\n const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n\n if (suggestion['not-in-list']) {\n suggestion = this.modifySelectedAddress(suggestion);\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion - NOT-IN-LIST', event, suggestion); }\n }\n if (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true && !isNotInList ) {\n this.addressIsComplete = true;\n // this.notifyAddressIsValidated();\n }\n this.addressIsValidated = true;\n if (event) {\n this.clearSuggestions();\n }\n this.setSelectedAddress(suggestion);\n }\n }\n\n modifySelectedAddress(suggestion: object) {\n if (this.showDebugMessageToConsole) {\n console.log('street number - combine selectedAddress with not in list', suggestion, this.selectedAddress);\n }\n const combined = {...this.selectedAddress, ...suggestion};\n delete combined.latitude;\n delete combined.longitude;\n delete combined.mailboxId;\n delete combined.pdpId;\n delete combined.suffixId;\n delete combined.pdpId;\n delete combined.pdpId;\n combined.houseNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n return combined;\n }\n\n setSelectedAddress(suggestion: any) {\n // console.log('street number - emit suggestion', suggestion);\n const notInList = suggestion['not-in-list'];\n const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n this.addressIsComplete = (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true && !isNotInList) ? true : false;\n this.addressChanged.emit(suggestion);\n }\n\n /*\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::clearSelectedAddress', this.addressIsComplete);\n }\n */\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n notifyAddressIsValidated() {\n this.addressIsComplete = true;\n // console.log('streetNumber::notifyAddressIsValidated', this.addressIsComplete);\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n\n clearWidget() {\n if (this.showDebugMessageToConsole) { console.log('street number:: clearWidget'); }\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::clearWidget', this.addressIsComplete);\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n // this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText && this.searchText.length > 0;\n }\n\n onClearStreetNumberInput(focus: boolean, emit: boolean = true) {\n // console.warn('street number :: clearInput');\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.streetNumberSearchInput.nativeElement.focus();\n }\n // this.addressChanged.emit(null);\n if (emit) {\n this.clearInputEventEmitter.emit(/*'STREET_NUMBER'*/ InputNameType.STREET_NUMBER);\n }\n }\n /*\n clearInput(focus?) {\n console.warn('street number :: clearInput');\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus) {\n this.streetNumberSearchInput.nativeElement.focus();\n }\n this.addressChanged.emit(null);\n }\n */\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.STREET_NUMBER);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('street number click'); }\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #streetNumberSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"!streetName || streetName.trim().length === 0\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"streetNumberInputField\" \n [attr.title]=\"placeHolderText\" \n [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-streetNb-button\" *ngIf=\"mayShowClearButton()\" \n (click)=\"onClearStreetNumberInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-streetNb-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n <!-- <span>addressIsComplete: {{ addressIsComplete }}. </span>\n <span>addressIsValidated: {{ addressIsValidated }}. </span> -->\n <span *ngIf=\"addressIsComplete\" class=\"streetNbChekmark\"><span class=\"checkmark\"></span></span>\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" \n *ngIf=\"(suggestionLevel===SuggestionLevelType.StreetNumber || suggestionLevel===SuggestionLevelType.StreetAndBoxNumber) && suggestions && suggestions.length>0\">\n <div #streetNumberList [appVisibleSuggestion]=\"visibleSuggesionCount\" \n id=\"bpaac-streetnumber-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-streetNb-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option['not-in-list'] ? emptyResponseText : option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>","import { Component, OnInit, AfterViewChecked, OnChanges, OnDestroy, ViewChild, ElementRef, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\nimport { SuggestionLevelType } from '../enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-box-number',\n templateUrl: './box-number.component.html',\n styleUrls: ['./box-number.component.scss']\n})\nexport class BoxNumberComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n @ViewChild('boxNumberSearchInput', {static: false} ) boxNumberSearchInput: ElementRef;\n @ViewChild('boxNumberList', {static: false} ) boxNumberList: ElementRef;\n\n private subscription: Subscription;\n\n // 2020-06-15\n // @Input()\n // onFocusShowSuggestionsAfterPrefill = true;\n\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = false;\n\n @Input() labelResourceKey = 'common.label.boxNumber';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() streetName: string;\n @Input() streetNumber: string;\n @Input() selectedAddress;\n @Input() notInListAllowed: boolean;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n // console.log('set lang', val);\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n // console.log('set lang after subscribe', res);\n this.onChangedLanguage();\n // if (res !== undefined ) {\n // }\n }\n );\n }\n\n @Input() messageOption = 'Y';µ\n\n @Input()\n isReadonly=false;\n\n @Input()\n suggestionLevel: SuggestionLevelType;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() emptyResponseEvent: EventEmitter<any> = new EventEmitter();\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n\n @Output()\n boxNumberChanged: EventEmitter<string> = new EventEmitter();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> =new EventEmitter<any>();\n\n searchText: string;\n\n addressIsValidated: boolean;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n emptyResponseText: string;\n emptyResponse: boolean;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n SuggestionLevelType=SuggestionLevelType;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit() {\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = true;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.setEmptyResponseText();\n this.emptyResponse = true;\n this.onChangedLanguage();\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.boxNumberList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.BOX_NUMBER) {\n // this.onInputChange('prefilled');\n // this.boxNumberSearchInput.nativeElement.focus();\n this.collapseDropdown = true;\n this.prefillData.prefillBoxNumber\n = this.transformBoxNumberInLowercaseAndWithoutDiacritics(this.prefillData.parameters.boxNumber);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n }\n\n if (changes.hasOwnProperty('streetNumber') && !changes.streetNumber.firstChange && !changes.hasOwnProperty('prefillData')) {\n\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.clearWidget();\n if(this.suggestionLevel !== SuggestionLevelType.None)\n {\n this.valueChanged();\n }\n }\n\n /*\n if (changes.hasOwnProperty('inputLang') / *&& !changes.addressParams.firstChange* /) {\n const lang = changes.inputLang.currentValue;\n console.log('on changes - inputLang', lang);\n if (changes.inputLang.currentValue !== undefined) {\n this.translateService.setDefaultLang(lang);\n this.translateService.use(lang);\n this.localeService.changeLang(lang);\n this.onChangedLanguage();\n }\n }\n */\n }\n }\n\n transformBoxNumberInLowercaseAndWithoutDiacritics(boxNumber: string): string {\n let result: string = null;\n if (boxNumber !== null && boxNumber !== undefined )\n {\n result = this.unicodeService.removeDiacritics(boxNumber);\n result = result.toLowerCase();\n }\n // console.log('Transformed street number:', result);\n return result;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('boxNumber.placeholder.input-placeholder');\n // console.log('place holder', this.placeHolderText);\n this.translateService.get('boxNumber.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n this.setEmptyResponseText();\n });\n }\n\n setEmptyResponseText() {\n // this.emptyResponseText = this.translationService.translate('not-in-list');\n this.emptyResponseText = this.translateService.instant('boxNumber.message.not-in-list');\n }\n\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.boxNumberSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-box-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.BOX_NUMBER);\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n }\n\n mayAddTypeAhead(source?: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED ) { return false; }\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n buildTypeAhead(source?: SourceType) {\n if (!this.mayAddTypeAhead(source)) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n value = (value !== null && value !== undefined) ? value.toLowerCase() : value;\n prefix = (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix;\n return this.unicodeService.removeDiacritics(value).slice(0, prefix.length)\n .toLowerCase().indexOf(this.unicodeService.removeDiacritics(prefix)) !== -1;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('BOX-NUMBER calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getBox(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n this.handleGetBoxResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n this.isPrefillWithNoMatch = this.prefillData.prefillBoxNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetBoxError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillBoxNumberPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.BOX_NUMBER, this.prefillData) );\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName') && this.isString(prefillData.parameters.streetName)) {\n this.streetName = prefillData.parameters.streetName;\n }\n if (prefillData.parameters.hasOwnProperty('streetNumber') && this.isString(prefillData.parameters.streetNumber)) {\n this.streetNumber = prefillData.parameters.streetNumber;\n }\n if (prefillData.parameters.hasOwnProperty('boxNumber')\n && this.isString(prefillData.parameters.boxNumber) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.boxNumber;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n if(!this.validatedByBackend){\n return (this.isValid(this.postalCode) || this.isValid(this.locality)) && this.isValid(this.streetName) && this.isValid(this.streetNumber);\n }else if(this.suggestionLevel === SuggestionLevelType.None && this.prefillData){\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName) && this.isValid(this.streetNumber) && this.prefillData.parameters.boxNumber!==''; \n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName) && this.isValid(this.streetNumber);\n }\n \n }\n\n generateParameters(): QueryParameters {\n // tslint:disable\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n street: this.streetName,\n streetNumber: this.streetNumber,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'B') {\n param.sortByBox(true);\n }\n return param;\n }\n\n handleGetBoxResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetBoxError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = 'service-unavailable';\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source?: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n let perfectMatchFound=false;\n for (const sug of topSuggestions)\n {\n console.warn('boxnumber::parsing suggestion:', sug);\n if(this.parseSingleSuggestion(sug, source) === true )\n {\n perfectMatchFound=true;\n }\n }\n\n if(!source)\n {\n if ((topSuggestions.length === 0 || this.emptyResponse) && this.notInListAllowed) {\n this.suggestions.push({string: this.searchText, 'not-in-list': true});\n }\n\n if(this.suggestionLevel === SuggestionLevelType.None || this.suggestionLevel === SuggestionLevelType.StreetNumber)\n {\n if (this.showDebugMessageToConsole) console.warn('box number:: no match found - current address: ', this.selectedAddress);\n if( ! perfectMatchFound)\n {\n const fakeSug = {...this.selectedAddress};\n fakeSug.boxNumber = this.searchText;\n fakeSug.string=this.searchText;\n fakeSug.isComplete=false;\n //this.clickSuggestion(null, fakeSug); // do not do this\n // This is better !\n this.addressChanged.emit(fakeSug);\n }\n }\n }\n else\n {\n // If prefilling, then check if no match for a non-empty boxNumber\n // If this is the case, simulate the selection of the 'not-in-list' suggestion\n if(this.prefilling && this.notInListAllowed\n && this.prefillData.prefillBoxNumberPerfectMatchFound === false\n && this.prefillData.prefillBoxNumber !== null\n && this.prefillData.prefillBoxNumber !== undefined\n && this.prefillData.prefillBoxNumber.length > 0)\n {\n // const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const suggestion = this.prefillBuildNotInListSuggestion();\n if (this.showDebugMessageToConsole) { console.log('BOX NUMBER - PREFILL NOT IN LIST SUGGESTION:', suggestion); }\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n prefillBuildNotInListSuggestion(): any {\n const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const streetNumberSuggestion = this.prefillData.prefillStreetNumberPerfectMatchSuggestion;\n const combined = {...streetNumberSuggestion.address, ...notInListSuggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n combined.boxNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n streetNumberSuggestion.address = combined;\n return streetNumberSuggestion;\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType): boolean {\n let suggestionToAdd: any;\n let isPerfectMatch=false;\n\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n if (suggestionToAdd.boxNumber === this.searchText) {\n this.emptyResponse = false;\n }\n this.suggestions.push(suggestionToAdd);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n isPerfectMatch=this.prefillCheckForPerfectMatch(suggestion);\n }\n\n if (this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber)\n {\n suggestion.address = suggestionToAdd;\n isPerfectMatch=this.checkForPerfectMatch(suggestion);\n if(! isPerfectMatch)\n {\n // seems nothing to do?\n // No need to notify for a incomplete address\n }\n }\n }\n return isPerfectMatch;\n }\n\n checkForPerfectMatch(suggestion): boolean\n {\n //if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('box number - checking suggestion for perfect match', suggestion, this.searchText);\n }\n const sugAddress = suggestion.address;\n const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);\n\n if (suggestionBoxNumber === ('' + this.searchText) )\n {\n //this.prefillData.prefillBoxNumberPerfectMatchFound = true;ç\n //this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.boxNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {\n this.clickSuggestion(null, sugAddress);\n // this.addressIsComplete = true;\n if (this.showDebugMessageToConsole) {\n console.log('ADDRESS COMPLETE ON BOX NUMBER !');\n }\n return true;\n }\n }\n }\n\n return false;\n\n }\n\n prefillCheckForPerfectMatch(suggestion): boolean\n {\n //if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('box number - PREFILL checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const sugAddress = suggestion.address;\n const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);\n if (this.showDebugMessageToConsole) {\n console.log('comparing box numbers', suggestionBoxNumber, this.prefillData.prefillBoxNumber);\n }\n if (suggestionBoxNumber === ('' + this.prefillData.prefillBoxNumber) )\n {\n this.prefillData.prefillBoxNumberPerfectMatchFound = true;\n this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.boxNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {\n this.clickSuggestion(null, sugAddress);\n // this.addressIsComplete = true;\n if (this.showDebugMessageToConsole) {\n console.log('ADDRESS COMPLETE ON BOX NUMBER !');\n }\n return true;\n }\n }\n }\n /* else\n {\n if (this.showDebugMessageToConsole) {\n console.log('Address complete, skipping suggestion check', suggestion);\n }\n } */\n\n return false;\n }\n\n onInputChange_new(source?: SourceType) {\n this.collapseDropdown = false;\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n else\n {\n if(!this.validatedByBackend){\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }else{\n this.getTopSuggestions(source);\n }\n }\n }\n this.buildInputWordList();\n }\n\n onInputChange(source?: SourceType) {\n this.collapseDropdown = false;\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n else if(!this.validatedByBackend){\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillBoxNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address': {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }}\n this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillBoxNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n\n clickSuggestion(event: any, suggestion?: any) {\n this.isPrefillWithNoMatch = false;\n event?.preventDefault();\n if (suggestion) {\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n if (suggestion.string) {\n this.setSearchText(suggestion.string);\n }\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n if (suggestion['not-in-list']) {\n suggestion = this.modifySelectedAddress(suggestion);\n }\n this.addressIsValidated = true;\n suggestion.isComplete = true;\n this.setSelectedAddress(suggestion);\n }\n }\n\n modifySelectedAddress(suggestion: object) {\n const combined = {...this.selectedAddress, ...suggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n combined.boxNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n return combined;\n }\n\n setSelectedAddress(suggestion: any) {\n // console.log('box number::setSelectedAddress', suggestion);\n this.addressIsValidated = (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true) ? true : false;\n this.addressChanged.emit(suggestion);\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n /*\n setValidationMessage(translationCode, options?, retranslateOptions?) {\n this.validationMessageOptions = options;\n if (retranslateOptions && this.validationMessageOptions && Array.isArray(this.validationMessageOptions['untranslated-sprintf']) &&\n this.validationMessageOptions.sprintf) {\n const translatedElements = [];\n this.validationMessageOptions['untranslated-sprintf'].forEach(function(element) {\n translatedElements.push(this.translationService.translate(element));\n }.bind(this)\n );\n this.validationMessageOptions.sprintf = translatedElements;\n }\n this.validationMessageCode = translationCode;\n // emit translation key to wrapper component for customized translations\n if (options) {\n this.suggestionValidationMessage = this.translationService.translate(this.validationMessageCode, this.validationMessageOptions);\n this.messageChanged.emit(this.suggestionValidationMessage);\n } else {\n this.messageChanged.emit(this.validationMessageCode);\n }\n }\n */\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n showAddressIsValidated() {\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n\n clearWidget() {\n this.addressIsValidated = false;\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n // this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n clearInput(focus?, emit: boolean = true) {\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.boxNumberSearchInput.nativeElement.focus();\n }\n // this.addressChanged.emit(null);\n if(emit) {\n this.clearInputEventEmitter.emit(/*'BOX_NUMBER'*/ InputNameType.BOX_NUMBER);\n }\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.BOX_NUMBER);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('box number click'); }\n }\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #boxNumberSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"!streetNumber || streetNumber.trim().length === 0\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"boxNumberInputField\" [attr.title]=\"placeHolderText\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-boxNb-button\" *ngIf=\"mayShowClearButton()\" (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-boxNb-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n <span *ngIf=\"addressIsValidated\" class=\"boxNbChekmark\"><span class=\"checkmark\"></span></span>\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" \n *ngIf=\"suggestionLevel===SuggestionLevelType.StreetAndBoxNumber && suggestions && suggestions.length>0\">\n <div #boxNumberList [appVisibleSuggestion]=\"visibleSuggesionCount\" id=\"bpaac-box-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-boxNb-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" \n (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option['not-in-list'] ? emptyResponseText : option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { PrefilledParameters } from './prefilled-parameters';\r\n\r\nexport class PrefillData // extends PrefilledParameters\r\n{\r\n // parameters: PrefilledParameters;\r\n\r\n prefillMunicipalityName: string = null;\r\n prefillMunicipalityPerfectMatchFound = false;\r\n prefillMunicipalityPerfectMatchSuggestion: any = null;\r\n // This is a working field, do not document\r\n prefillMunicipalityAndLocalityPerfectMatchFound = false;\r\n\r\n prefillStreetName: string = null;\r\n prefillStreetPerfectMatchFound = false;\r\n prefillStreetPerfectMatchSuggestion: any = null;\r\n\r\n prefillStreetNumber: string = null;\r\n prefillStreetNumberPerfectMatchFound = false;\r\n prefillStreetNumberPerfectMatchSuggestion: any = null;\r\n\r\n prefillBoxNumber: string = null;\r\n prefillBoxNumberPerfectMatchFound = false;\r\n prefillBoxNumberPerfectMatchSuggestion: any = null;\r\n\r\n ts: Date = null;\r\n\r\n constructor(\r\n public parameters: PrefilledParameters\r\n ){\r\n this.ts = new Date();\r\n }\r\n}\r\n","export const LIB_VERSION = \"1.1.5\"","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Nis9Service {\r\n\r\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\r\n private nis9ServiceURL='';\r\n \r\n constructor(private httpClient: HttpClient) { }\r\n \r\n setNis9ServiceURL(nis9ServiceURL: string) {\r\n this.nis9ServiceURL=nis9ServiceURL;\r\n }\r\n\r\n determineNis9Data(longitude, latitude): Observable<any>\r\n {\r\n const apiUrl=`https://bgs.bpost.be/set-selection-circle?lng=${longitude}&lat=${latitude}&radius=0.001`;\r\n return this.httpClient.get<any>( apiUrl );\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, ViewChild, SimpleChanges, OnChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from './utils/prefilled-parameters';\nimport { ValidationMessageOptionType } from './enum/validation-message-option-type.enum';\nimport { ValidationMessageType } from './enum/validation-message-type.enum';\nimport { LocalityComponent } from './locality/locality.component';\nimport { StreetComponent } from './street/street.component';\nimport { StreetNumberComponent } from './street-number/street-number.component';\nimport { BoxNumberComponent } from './box-number/box-number.component';\nimport { ADDRESSLEVEL } from './enum';\nimport { PrefillData } from './utils/prefill-data';\nimport { PrefillEvent } from './utils/preflll.event';\nimport { InputNameType } from './enum/input-name.enum';\nimport { HttpService } from './services/http.service';\nimport { Nis9Service } from './services/nis9.service';\nimport { LIB_VERSION } from './utils/constants';\nimport { SuggestionLevelType } from './enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-lib-address-autocomplete-by-component',\n templateUrl: './lib-address-autocomplete-by-component.component.html',\n styleUrls: [ './lib-address-autocomplete-by-component.component.scss']\n})\nexport class LibAddressAutocompleteByComponentComponent implements OnInit, OnDestroy, OnChanges {\n\n @ViewChild(LocalityComponent, {static: false} ) autocompleteLocality;\n @ViewChild(StreetComponent, {static: false} ) autocompleteStreet;\n @ViewChild(StreetNumberComponent, {static: false} ) autocompleteStreetNb;\n @ViewChild(BoxNumberComponent, {static: false} ) autocompleteBoxNb;\n\n selectedLanguage: string = null;\n private subscription: Subscription;\n\n private baseUrl = \"https://api.mailops.bpost.cloud/roa-info/externalMailingAddressProofingRest/autocomplete/\";\n private defaultApiKey='cyRkKOD73O1DOdgcDLLnsaOiDh6OyOkt3BBT5JU1';\n\n usedLocalityUrl = this.baseUrl + 'locality';\n usedStreetUrl = this.baseUrl + 'street';\n usedStreetNumberUrl = this.baseUrl + 'streetNumber';\n usedBoxNumberUrl = this.baseUrl + 'boxNumber';\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.setLanguage(val);\n }\n\n // @ts-ignore\n @Input() set clearInput(focus: {setFocus: boolean, timestamp: Date}) {\n this.onClearInput(focus);\n }\n\n // @ts-ignore\n @Input() set validationMessageOption(option: {validationType: ValidationMessageOptionType, timestamp: Date}) {\n this.setValidationMessageOptionFromInput(option);\n }\n\n @Input()\n defaultLang: string;\n\n @Input() showDebugMessageToConsole = false;\n @Input() minLevel: number;\n @Input() notInListAllowed = true;\n @Input() addressParams: PrefilledParameters;\n @Input() messageOption = 'Y';\n\n // LOCALITY\n @Input() localityUrl = this.baseUrl + 'locality';\n @Input() maxSuggestionLocality = 5;\n @Input() visibleSuggestionLocalityCount = 5;\n @Input() sortCriteriaLocality: string;\n postalCodeLocality: string;\n // localityParams: PrefilledParameters;\n localityPrefillData: PrefillData = null;\n\n // STREET\n @Input() streetUrl = this.baseUrl + 'street';\n @Input() maxSuggestionStreet = 5;\n @Input() visibleSuggestionStreetCount = 5;\n @Input() sortCriteriaStreet: string;\n // streetParams: PrefilledParameters;\n streetPrefillData: PrefillData = null;\n\n // STREET NUMBER\n // tslint:disable-next-line:max-line-length\n @Input() streetNumberUrl = this.baseUrl + 'streetNumber';\n @Input() maxSuggestionStreetNb = 5;\n @Input() visibleSuggestionStreetNbCount = 5;\n @Input() sortCriteriaStreetNb: string;\n // streetNumberParams: PrefilledParameters;\n streetNumberPrefillData: PrefillData = null;\n\n // BOX NUMBER\n @Input() boxNumberUrl = this.baseUrl + 'boxNumber';\n @Input() maxSuggestionBoxNb = 5;\n @Input() visibleSuggestionBoxNbCount = 5;\n @Input() sortCriteriaBoxNb: string;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n // boxParams: PrefilledParameters;\n boxNumberPrefillData: PrefillData = null;\n\n @Input() suggestionLevel: SuggestionLevelType = SuggestionLevelType.StreetAndBoxNumber;\n\n boxNumber: string;\n completeAddress: string;\n emittedAddress: any = null;\n locality: string;\n postalCode: string;\n selectedAddress: any;\n street: string;\n streetAddress: any;\n streetNameInput: string;\n streetNumber: string;\n streetNumberAddress: any;\n streetNumberInput: string;\n validationMessage: {messageType: ValidationMessageType, translatedMessage: string} = {messageType: null, translatedMessage: ''};\n validationMessageOptionType: ValidationMessageOptionType;\n\n\n @Output() addressCompleteEventEmitter: EventEmitter<any> = new EventEmitter();\n @Output() validationMessageEventEmitter: EventEmitter<any> = new EventEmitter();\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n @Output() validatedByBackendEventEmitter: EventEmitter<boolean> = new EventEmitter();\n @Output() numberOfExceptionsEventEmitter: EventEmitter<number> = new EventEmitter();\n\n\n prefillData: PrefillData;\n processingPrefillData = false;\n\n\n // Pass the API key as a property of the library !\n @Input()\n apiKey=this.defaultApiKey;\n\n\n // set the widget as readonly and add NIS9 query parameter\n @Input()\n isReadonly=false;\n\n @Input()\n nis9InResponse=false;\n\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\n @Input()\n nis9ServiceURL='';\n\n isComponentReady = false;\n\n constructor(\n private nis9Service: Nis9Service,\n private httpService: HttpService\n ) { }\n\n ngOnInit(): void\n {\n console.info('lib version is:', LIB_VERSION);\n //console.warn('lib - ngOnInit');\n\n this.nis9Service.setNis9ServiceURL(this.nis9ServiceURL);\n\n const apiKey = this.isValidData(this.apiKey) ? this.apiKey : this.defaultApiKey;\n this.httpService.setApiKey( apiKey );\n this.httpService.setShowDebugMessageToConsole(this.showDebugMessageToConsole);\n\n if( this.isValidData(this.localityUrl) ) this.usedLocalityUrl=this.localityUrl;\n if( this.isValidData(this.streetUrl) ) this.usedStreetUrl=this.streetUrl;\n if( this.isValidData(this.streetNumberUrl) ) this.usedStreetNumberUrl=this.streetNumberUrl;\n if( this.isValidData(this.boxNumberUrl) ) this.usedBoxNumberUrl=this.boxNumberUrl;\n\n if (this.addressParams)\n {\n this.prefillData = this.addressParams as any as PrefillData;\n }\n\n this.isComponentReady = true;\n }\n\n isValidData( str: string): boolean\n {\n return str!==undefined && str!==null && str.length>0;\n }\n\n ngOnDestroy()\n {\n if (this.subscription)\n {\n this.subscription.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges)\n {\n if (changes)\n {\n // code for tracing\n // visibleSuggestionStreetNbCount\n if (this.showDebugMessageToConsole) {\n this.displayParametersChangesToConsole(changes);\n }\n\n\n if (changes.hasOwnProperty('apiKey') && !changes['apiKey'].firstChange) {\n const apiKey = this.apiKey!==null && this.apiKey!==undefined && this.apiKey.length>0\n ? this.apiKey\n : this.defaultApiKey;\n this.httpService.setApiKey( apiKey );\n }\n\n if (changes.hasOwnProperty('localityUrl') && !changes['localityUrl'].firstChange) {\n const localityUrl = this.localityUrl!==null && this.localityUrl!==undefined && this.localityUrl.length>0\n ? this.localityUrl\n : this.baseUrl + 'locality';\n this.usedLocalityUrl=localityUrl;\n console.log('ngOnChanges - localityUrl: ', localityUrl);\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('streetUrl') && !changes['streetUrl'].firstChange) {\n const streetUrl = this.streetUrl!==null && this.streetUrl!==undefined && this.streetUrl.length>0\n ? this.streetUrl\n : this.baseUrl + 'street';\n this.usedStreetUrl=streetUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('streetNumberUrl') && !changes.streetNumberUrl.firstChange) {\n const streetNumberUrl = this.streetNumberUrl!==null && this.streetNumberUrl!==undefined && this.streetNumberUrl.length>0\n ? this.streetNumberUrl\n : this.baseUrl + 'streetNumber';\n this.usedStreetNumberUrl=streetNumberUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('boxNumberUrl') && !changes.boxNumberUrl.firstChange) {\n const boxNumberUrl = this.boxNumberUrl!==null && this.boxNumberUrl!==undefined && this.boxNumberUrl.length>0\n ? this.boxNumberUrl\n : this.baseUrl + 'boxNumber';\n this.usedBoxNumberUrl=boxNumberUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n\n\n\n if (changes.hasOwnProperty('addressParams') && !changes['addressParams'].firstChange) {\n // if (changes.hasOwnProperty('addressParams')) {\n this.processingPrefillData = true;\n this.enterPrefillMode();\n this.selectedAddress = null;\n this.notifyAddressComplete();\n this.clearWidget();\n /*\n if (this.localityPrefillData !== null && this.localityPrefillData !== undefined) {\n // this.onClearInputEventEmitter(InputNameType.LOCALITY);\n this.clearWidget();\n }\n */\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n\n if (this.showDebugMessageToConsole) {console.log('lib::widget detected prefilling', this.addressParams); }\n this.addressParams.minLevel = /*4*/ ADDRESSLEVEL.LOCALITY;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n if (this.showDebugMessageToConsole) {console.log('lib::checking locality match... ', this.localityPrefillData); }\n }\n\n // suggestion level\n if (changes.hasOwnProperty('suggestionLevel')\n /*&& !changes.suggestionLevel.firstChange\n && !changes.hasOwnProperty('prefillData') && ! this.prefilling*/ ) {\n /*\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.addressIsComplete = false;\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - streetName changes detection');\n }\n if (changes.streetName.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n */\n\n const sl = Number(changes['suggestionLevel'].currentValue);\n switch(sl)\n {\n case 0: this.suggestionLevel = SuggestionLevelType.None; break;\n case 1: this.suggestionLevel = SuggestionLevelType.StreetNumber; break;\n case 2: this.suggestionLevel = SuggestionLevelType.StreetAndBoxNumber; break;\n }\n }\n\n // showDebugMessageToConsole\n if (changes.hasOwnProperty('showDebugMessageToConsole')\n && !changes['showDebugMessageToConsole'].firstChange ) {\n\n const sdm2c = changes['showDebugMessageToConsole'].currentValue;\n if(sdm2c)\n {\n this.httpService.setShowDebugMessageToConsole(sdm2c);\n }\n }\n\n if (changes.hasOwnProperty('numberOfExceptions') ) {\n this.numberOfExceptions = changes['numberOfExceptions'].currentValue;\n\n }\n if (changes.hasOwnProperty('validatedByBackend') ) {\n this.validatedByBackend = changes['validatedByBackend'].currentValue;\n }\n }\n }\n\n displayParametersChangesToConsole(changes: SimpleChanges)\n {\n // messageOption\n if (changes.hasOwnProperty('messageOption') && !changes['messageOption'].firstChange) {\n const wcChanges = changes['messageOption'].currentValue;\n console.log('lib widget9 - messageOption', wcChanges);\n }\n\n // maxSuggestionLocality\n if (changes.hasOwnProperty('maxSuggestionLocality') && !changes['maxSuggestionLocality'].firstChange) {\n const wcChanges = changes['maxSuggestionLocality'].currentValue;\n console.log('lib widget9 - maxSuggestionLocality', wcChanges);\n }\n\n // visibleSuggestionLocalityCount\n if (changes.hasOwnProperty('visibleSuggestionLocalityCount') && !changes['visibleSuggestionLocalityCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionLocalityCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionLocalityCount', wcChanges);\n }\n\n // sortCriteriaLocality\n if (changes.hasOwnProperty('sortCriteriaLocality') && !changes['sortCriteriaLocality'].firstChange) {\n const wcChanges = changes['sortCriteriaLocality'].currentValue;\n console.log('lib widget9 - sortCriteriaLocality', wcChanges);\n }\n\n // maxSuggestionStreet\n if (changes.hasOwnProperty('maxSuggestionStreet') && !changes['maxSuggestionStreet'].firstChange) {\n const wcChanges = changes['maxSuggestionStreet'].currentValue;\n console.log('lib widget9 - maxSuggestionStreet', wcChanges);\n }\n // visibleSuggestionStreetCount\n if (changes.hasOwnProperty('visibleSuggestionStreetCount') && !changes['visibleSuggestionStreetCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionStreetCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionStreetCount', wcChanges);\n }\n // sortCriteriaStreet\n if (changes.hasOwnProperty('sortCriteriaStreet') && !changes['sortCriteriaStreet'].firstChange) {\n const wcChanges = changes['sortCriteriaStreet'].currentValue;\n console.log('lib widget9 - sortCriteriaStreet', wcChanges);\n }\n\n // maxSuggestionStreetNb\n if (changes.hasOwnProperty('maxSuggestionStreetNb') && !changes['maxSuggestionStreetNb'].firstChange) {\n const wcChanges = changes['maxSuggestionStreetNb'].currentValue;\n console.log('lib widget9 - maxSuggestionStreetNb', wcChanges);\n }\n // visibleSuggestionStreetNbCount\n if (changes.hasOwnProperty('visibleSuggestionStreetNbCount') && !changes['visibleSuggestionStreetNbCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionStreetNbCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionStreetNbCount', wcChanges);\n }\n // sortCriteriaStreetNb\n if (changes.hasOwnProperty('sortCriteriaStreetNb') && !changes['sortCriteriaStreetNb'].firstChange) {\n const wcChanges = changes['sortCriteriaStreetNb'].currentValue;\n console.log('lib widget9 - sortCriteriaStreetNb', wcChanges);\n }\n\n // maxSuggestionBoxNb\n if (changes.hasOwnProperty('maxSuggestionBoxNb') && !changes['maxSuggestionBoxNb'].firstChange) {\n const wcChanges = changes['maxSuggestionBoxNb'].currentValue;\n console.log('lib widget9 - maxSuggestionBoxNb', wcChanges);\n }\n // visibleSuggestionBoxNbCount\n if (changes.hasOwnProperty('visibleSuggestionBoxNbCount') && !changes['visibleSuggestionBoxNbCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionBoxNbCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionBoxNbCount', wcChanges);\n }\n // sortCriteriaBoxNb\n if (changes.hasOwnProperty('sortCriteriaBoxNb') && !changes['sortCriteriaBoxNb'].firstChange) {\n const wcChanges = changes['sortCriteriaBoxNb'].currentValue;\n console.log('lib widget9 - sortCriteriaBoxNb', wcChanges);\n }\n\n // apiKey\n if (changes.hasOwnProperty('apiKey') && !changes['apiKey'].firstChange) {\n const wcChanges = changes['apiKey'].currentValue;\n console.log('lib widget9 - apiKey', wcChanges);\n }\n\n // localityUrl\n if (changes.hasOwnProperty('localityUrl') && !changes['localityUrl'].firstChange) {\n const wcChanges = changes['localityUrl'].currentValue;\n console.log('lib widget9 - localityUrl', wcChanges);\n console.log('lib widget9 - current localityUrl', this.localityUrl);\n }\n\n // streetUrl\n if (changes.hasOwnProperty('streetUrl') && !changes['streetUrl'].firstChange) {\n const wcChanges = changes['streetUrl'].currentValue;\n console.log('lib widget9 - streetUrl', wcChanges);\n }\n\n // streetNumberUrl\n if (changes.hasOwnProperty('streetNumberUrl') && !changes['streetNumberUrl'].firstChange) {\n const wcChanges = changes['streetNumberUrl'].currentValue;\n console.log('lib widget9 - streetNumberUrl', wcChanges);\n }\n\n // boxNumberUrl\n if (changes.hasOwnProperty('boxNumberUrl') && !changes['boxNumberUrl'].firstChange) {\n const wcChanges = changes['boxNumberUrl'].currentValue;\n console.log('lib widget9 - boxNumberUrl', wcChanges);\n }\n\n // suggestionLevel\n if (changes.hasOwnProperty('suggestionLevel') && !changes['suggestionLevel'].firstChange) {\n const wcChanges = changes['suggestionLevel'].currentValue;\n console.log('lib widget9 - suggestionLevel', wcChanges);\n }\n }\n\n clearWidget() {\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreet.clearWidget();\n this.autocompleteLocality.clearWidget();\n }\n\n changeMinLevel(minLevel: number) {\n this.minLevel = minLevel;\n }\n\n // Called by the specific buttons in the app\n onClearInput(focus: {setFocus: boolean, timestamp: Date}) {\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInput', focus); }\n\n /*\n if (focus === null || focus === undefined) {\n return;\n }*/\n\n this.quitPrefillMode();\n\n const setFocus = (focus === null || focus === undefined) ? false : focus.setFocus;\n\n switch (this.minLevel) {\n case 1:\n this.boxNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.clearInputEventEmitter.emit('BOX_NUMBER');\n break;\n case 2:\n this.boxNumber = '';\n this.streetNumber = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n this.clearInputEventEmitter.emit('STREET_NUMBER');\n break;\n case 3:\n this.boxNumber = '';\n this.streetNumber = '';\n this.street = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n this.autocompleteStreet.clearInput(setFocus, false);\n this.clearInputEventEmitter.emit('STREET');\n break;\n default:\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(setFocus, false);\n }\n // Locality\n this.locality = '';\n if (this.autocompleteLocality)\n {\n this.autocompleteLocality.searchText = '';\n this.autocompleteLocality.clearInput(setFocus, false);\n }\n\n this.clearInputEventEmitter.emit('LOCALITY');\n break;\n }\n }\n\n getBoxPrefix(): string {\n let prefix = '';\n switch (this.selectedLanguage) {\n case 'fr':\n prefix = 'BTE';\n break;\n case 'nl':\n prefix = 'BUS';\n break;\n default:\n prefix = 'BOX';\n break;\n }\n return prefix;\n }\n\n notifyAddressComplete() {\n // console.log('notify for address complete');\n if (this.showDebugMessageToConsole)\n {\n console.log('notifyAddressComplete', this.selectedAddress, 'nis9InResponse:'+this.nis9InResponse, typeof this.nis9InResponse);\n }\n\n if( (this.nis9InResponse === true || ''+this.nis9InResponse === 'true')\n\n && this.selectedAddress !==undefined && this.selectedAddress!==null\n && this.selectedAddress.hasOwnProperty('latitude') && this.selectedAddress.hasOwnProperty('longitude'))\n {\n const latitude = this.selectedAddress.latitude;\n const longitude = this.selectedAddress.longitude;\n if (this.showDebugMessageToConsole) console.log('calling nis9 service to get nis9 data (1):', longitude, latitude);\n\n this.nis9Service.determineNis9Data(longitude, latitude)\n .subscribe(\n data => {\n console.log('nis DATA:', data);\n /*\n nis DATA:\n {Status: 'success', data: Array(1)}\n Status: \"success\"\n data: ['25112A21-']\n */\n if(data!==undefined && data !==null && data.hasOwnProperty('Status') && data.Status==='success')\n {\n const nis9Data = data.data;\n if(Array.isArray(nis9Data) && nis9Data.length === 1)\n {\n this.selectedAddress.nis9 = nis9Data[0];\n }\n }\n\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n this.updatePostalCodeLocality(this.emittedAddress);\n }\n );\n }\n else\n {\n if (this.showDebugMessageToConsole) console.log('NOT calling nis9 service to get nis9 data (1)');\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n this.updatePostalCodeLocality(this.emittedAddress);\n }\n\n }\n\n onClearInputEventEmitter(event) {\n\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInputEventEmitter', event); }\n\n this.quitPrefillMode();\n\n let nextAddress = this.selectedAddress; // this.emittedAddress;\n\n if (event === InputNameType.LOCALITY)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(false, false);\n }\n // Locality\n this.locality = '';\n if (this.autocompleteLocality)\n {\n this.autocompleteLocality.searchText = '';\n this.autocompleteLocality.clearInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.STREET)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.STREET_NUMBER)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n // this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.BOX_NUMBER)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n // this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n\n // Attention: if not-in-list don't reset the address, just modify it\n const addressIsNotInList\n = nextAddress !== undefined && nextAddress !== null\n && nextAddress.hasOwnProperty('not-in-list') && nextAddress['not-in-list'] === true\n ? true : false;\n\n /*\n if (addressIsNotInList)\n {\n delete nextAddress.boxNumber;\n nextAddress.isCompleteNotificationDone = false;\n if (this.streetNumberAddress !== null )\n {\n console.warn('reset box on not-in-list', this.streetNumberAddress);\n\n }\n }\n else\n {\n nextAddress = null;\n }\n */\n\n nextAddress = this.streetNumberAddress !== null ? this.streetNumberAddress : null;\n /*\n const addressIsNotInList\n = nextAddress !== null && nextAddress.hasOwnProperty('not-in-list') && nextAddress['not-in-list'] === true\n ? true : false;\n */\n const addressIsComplete\n = nextAddress !== undefined && nextAddress !== null\n && nextAddress.hasOwnProperty('isComplete') && nextAddress.isComplete === true ? true : false;\n this.autocompleteStreetNb.addressIsComplete = addressIsComplete;\n }\n\n this.clearInputEventEmitter.emit(event);\n\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInputEventEmitter',\n 'emitted address:'+JSON.stringify(this.emittedAddress), 'nextAddress:'+JSON.stringify(nextAddress) ); }\n\n if (this.emittedAddress !== null ) {\n if(nextAddress !== undefined && nextAddress !== null && nextAddress.hasOwnProperty('latitude') && nextAddress.hasOwnProperty('longitude'))\n {\n const latitude = nextAddress.latitude;\n const longitude = nextAddress.longitude;\n if (this.showDebugMessageToConsole) console.log('calling nis9 service to get nis9 data (2)', longitude, latitude);\n }\n else\n {\n if (this.showDebugMessageToConsole) console.log('NOT calling nis9 service to get nis9 data (2)');\n }\n this.addressCompleteEventEmitter.emit(nextAddress);\n this.emittedAddress = nextAddress;\n }\n\n\n // gka\n /*\n if (event === InputNameType.LOCALITY)\n {\n this.minLevel = ADDRESSLEVEL.LOCALITY;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n this.localityPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.locality = '';\n this.postalCode = '';\n this.street = null;\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreet.clearInput(false, false);\n this.autocompleteStreet.locality = '';\n this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.STREET)\n {\n this.minLevel = ADDRESSLEVEL.STREET;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.street = null;\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.STREET_NUMBER)\n {\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n // this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.BOX_NUMBER)\n {\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.boxNumberPrefillData = null;\n this.boxNumber = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.autocompleteBoxNb.clearInput(false, false);\n // this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n // this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n */\n }\n\n resetLocality(event) {\n this.postalCode = '';\n this.locality = '';\n this.quitPrefillMode();\n this.onClearInputEventEmitter(InputNameType.STREET);\n this.setAddress(null, 4);\n }\n\n resetStreet(event) {\n this.street = '';\n this.quitPrefillMode();\n this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n this.autocompleteStreetNb.addressIsComplete = false;\n this.autocompleteStreetNb.streetName = '';\n this.setAddress(null, 3);\n }\n\n resetStreetNumber(event, resetAddress: boolean = false) {\n // console.log('reset street numner!', event, resetAddress);\n this.streetNumber = '';\n this.quitPrefillMode();\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n this.autocompleteBoxNb.addressIsComplete = false;\n this.autocompleteBoxNb.streetNumber = '';\n this.setAddress(null, 2);\n // $$ 7 this.setAddress(null, 2); // $$ ?????\n /*\n if (resetAddress === true) {\n this.setAddress(/ *null* / this.selectedAddress);\n }*/\n }\n\n resetBoxNumber(event, resetAddress: boolean = false) {\n // console.log('reset street numner!', event, resetAddress);\n this.boxNumber = '';\n this.quitPrefillMode();\n this.autocompleteBoxNb.addressIsComplete = false;\n // this.autocompleteBoxNb.boxNumber = ''\n this.setAddress(null, 1);\n if(!event){\n this.clearInputEventEmitter.emit('CLEAR_BOX_NUMBER')\n }\n // this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n // $$ 7 this.setAddress(null, 1); // $$ ?????\n /*\n if (resetAddress === true) {\n this.setAddress(/ *null* / this.selectedAddress);\n }*/\n }\n\n enterPrefillMode() {\n if (this.showDebugMessageToConsole) {console.log('lib::enterPrefillMode()'); }\n if (this.autocompleteBoxNb && this.autocompleteStreetNb && this.autocompleteStreet && this.autocompleteLocality )\n {\n this.autocompleteBoxNb.prefilling = true;\n this.autocompleteStreetNb.prefilling = true;\n this.autocompleteStreet.prefilling = true;\n this.autocompleteLocality.prefilling = true;\n\n this.autocompleteStreet.locality = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteBoxNb.streetNumber = '';\n }\n\n }\n\n quitPrefillMode() {\n if (this.showDebugMessageToConsole) {console.log('lib::quitPrefillMode()'); }\n if (this.autocompleteBoxNb && this.autocompleteStreetNb && this.autocompleteStreet && this.autocompleteLocality )\n {\n this.autocompleteBoxNb.prefilling = false;\n this.autocompleteStreetNb.prefilling = false;\n this.autocompleteStreet.prefilling = false;\n this.autocompleteLocality.prefilling = false;\n }\n\n this.processingPrefillData = false;\n }\n\n setAddress(address: any, level?: number) {\n if (this.showDebugMessageToConsole) {console.log('lib::setAddress - address part, level', address, level); }\n\n /* $$ $$\n if (this.selectedAddress && !address) {\n // console.log('reset address!');\n this.selectedAddress = null;\n this.streetAddress = null;\n this.streetNumberAddress = null;\n this.notifyAddressComplete();\n return;\n }\n */\n if (address === null || address === undefined )\n {\n const doNotify = (this.selectedAddress !== null && this.selectedAddress !== undefined) ? true : false;\n this.selectedAddress = null;\n this.autocompleteStreetNb.addressIsComplete = false;\n this.autocompleteBoxNb.addressIsComplete = false;\n if (doNotify) {\n this.notifyAddressComplete();\n }\n }\n\n if (address) {\n delete address.messages;\n this.selectedAddress = address;\n this.updateCompleteAddress();\n this.postalCode = address.postalCode ? address.postalCode : '';\n this.locality = address.localityName ? address.localityName : '';\n this.street = address.streetName ? address.streetName : '';\n // const notInList = address['not-in-list'];\n // const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n /*\n if (address.houseNumber) {\n if (!address.isComplete || isNotInList) {\n this.streetNumber = address.houseNumber ? address.houseNumber : '';\n } else {\n if (!address.boxNumber) {\n // console.log('calling reset street number !');\n if ( !this.processingPrefillData ) {\n this.resetStreetNumber(null, false);\n }\n // this.streetNumber = '';\n }\n }\n }\n */\n\n const addressIsComplete = address !== null && address !== undefined\n && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address !== null && address !== undefined\n && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n switch (level) {\n\n // Locality / Municipality and POstalCode\n case 4:\n this.updatePostalCodeLocality(address);\n /*\n this.autocompleteStreet.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.streetAddress = null;\n this.streetNumberAddress = null;\n //\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n break;\n\n // Street Name\n case 3:\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.streetAddress = address;\n this.streetNumberAddress = null;\n /*\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n break;\n\n // STREET Number\n case 2:\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.updateStreetNumber(address); // $$\n this.streetAddress = address;\n this.streetNumberAddress = address;\n if (address.hasOwnProperty('isComplete') && address.isComplete === true )\n {\n this.autocompleteStreetNb.addressIsComplete = true;\n if (addressIsNotInList)\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = '';\n }\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n /*\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteBoxNb.searchText = '';\n break;\n\n // BOX Number\n case 1:\n {\n if (addressIsNotInList)\n {\n this.autocompleteStreetNb.addressIsComplete = false;\n }\n }\n break;\n\n default:\n break;\n }\n\n if ( this.selectedAddress && this.selectedAddress.isComplete === undefined) {\n this.selectedAddress.isComplete = false;\n }\n\n /*\n if (address.isComplete === true ) {\n if (!this.selectedAddress.isCompleteNotificationDone) {\n this.selectedAddress.isCompleteNotificationDone = true;\n this.notifyAddressComplete();\n }\n } else {\n this.notifyAddressComplete();\n }\n */\n\n this.selectedAddress.isCompleteNotificationDone = true;\n this.notifyAddressComplete();\n }\n }\n\n setAddressStreetNumber(streetNumber: string) {\n\n if (this.showDebugMessageToConsole)\n {\n console.log('lib::setAddressStreetNumber - streetnumber: ', streetNumber);\n console.log('lib::setAddressStreetNumber - streetAddress: ', this.streetAddress);\n }\n this.streetNumberAddress = this.streetAddress;\n this.selectedAddress = this.streetAddress;\n this.selectedAddress.houseNumber = streetNumber;\n this.selectedAddress.streetNumber = streetNumber;\n /*\n this.streetNumber = streetNumber;\n */\n //this.notifyAddressComplete();\n this.streetNumber = streetNumber;\n this.boxNumber='';\n this.selectedAddress.boxNumber='';\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n if (this.showDebugMessageToConsole)\n {\n console.log('set street number value:', streetNumber,\n 'this.streetNumber:'+this.streetNumber,\n 'this.minLevel:'+this.minLevel);\n }\n }\n\n setAddressBoxNumber(boxNumber: string) {\n console.log('set box number value:', boxNumber);\n //this.streetNumberAddress = this.streetAddress;\n this.selectedAddress = this.streetNumberAddress;\n this.selectedAddress.boxNumber = boxNumber;\n this.boxNumber = boxNumber;\n this.notifyAddressComplete();\n }\n\n setLanguage(lang: string) {\n this.selectedLanguage = lang;\n }\n\n setValidationMessage(/*message: string*/message: {messageType: ValidationMessageType, translatedMessage: string}) {\n this.validationMessage = message;\n if (this.validationMessageOptionType === ValidationMessageOptionType.EMIT) {\n this.validationMessageEventEmitter.emit(message);\n }\n }\n\n setNumberOfExceptions(event){\n this.numberOfExceptions=event;\n if(this.numberOfExceptions>=3){\n this.numberOfExceptionsEventEmitter.emit(this.numberOfExceptions);\n this.setValidatedByBackend(false)\n }\n }\n\n setValidatedByBackend(event){\n this.validatedByBackend=event;\n this.validatedByBackendEventEmitter.emit(this.validatedByBackend);\n }\n\n updatePostalCodeLocality(address) {\n if (address && address.postalCode && address.localityName) {\n this.postalCodeLocality = address.postalCode + ' ' + address.localityName;\n this.autocompleteLocality.searchText = this.postalCodeLocality;\n }\n }\n\n updateStreetName(address) {\n if (address && address.streetName) {\n this.streetNameInput = address.streetName;\n }\n }\n\n updateStreetNumber(address) {\n if (address && address.houseNumber) {\n this.streetNumberInput = address.houseNumber;\n }\n }\n\n updateCompleteAddress() {\n let concatStr = '';\n concatStr += this.selectedAddress.streetName ? `${this.selectedAddress.streetName} ` : '';\n concatStr += this.selectedAddress.houseNumber ? `${this.selectedAddress.houseNumber} ` : '';\n concatStr += this.selectedAddress.boxNumber ? `${this.getBoxPrefix()} ${this.selectedAddress.boxNumber} ` : '';\n concatStr += this.selectedAddress.postalCode ? `${this.selectedAddress.postalCode} ` : '';\n concatStr += this.selectedAddress.municipalityName ? `${this.selectedAddress.municipalityName} ` : '';\n this.completeAddress = concatStr;\n }\n\n setValidationMessageOptionFromInput(option: {validationType: ValidationMessageOptionType, timestamp: Date}) {\n this.validationMessageOptionType = option.validationType;\n // console.log('addresse autocomplete - validation message option', this.validationMessageOptionType);\n }\n\n onLocalityPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) {console.log('lib::locality prefill event received:', event); }\n /*\n if (event.perfectMatch)\n {\n this.addressParams.minLevel = / *3* / ADDRESSLEVEL.STREET;\n this.streetParams = this.addressParams;\n }\n */\n const data = event.prefillData;\n if (event.prefillData.prefillMunicipalityPerfectMatchFound === true )\n {\n const suggestion = data.prefillMunicipalityPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updatePostalCodeLocality(address);\n this.addressParams.minLevel = /*4*/ ADDRESSLEVEL.STREET;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n // this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.STREET;\n // Be sure to propagate the localityName in place of the municipalityName !\n const suggestionAddress = this.prefillData.prefillMunicipalityPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const streetName = this.prefillData.parameters.streetName;\n if (streetName === null || streetName === undefined || streetName === '')\n {\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n // this.quitPrefillMode();\n // this.updatePostalCodeLocality(suggestionAddress);\n }\n\n /*\n const streetName = this.prefillData.parameters.streetName;\n if (streetName === null || streetName === undefined || streetName === '')\n {\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n this.quitPrefillMode();\n // this.updatePostalCodeLocality(suggestionAddress);\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking street match... ', this.prefillData); }\n this.streetPrefillData = this.prefillData;\n }\n */\n\n this.streetPrefillData = this.prefillData;\n }\n else\n {\n // const cpAndLocality = this.prefillData.parameters.postalCode + this.prefillData.parameters.municipalityName;\n const cpAndLocality = data.parameters.postalCode + data.parameters.municipalityName;\n this.autocompleteStreet.locality = '';\n if ( cpAndLocality === null || cpAndLocality === undefined || cpAndLocality.length === 0 )\n {\n this.setAddress(null, ADDRESSLEVEL.LOCALITY);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) {console.log('lib::street: prefill event received', event); }\n /*\n const data: PrefillData = event.prefillData;\n if (data.prefillStreetPerfectMatchFound === true )\n {\n console.log('lib::onStreetPrefillEvent: MATCH FOUND', data);\n this.postalCodeLocality = 'TRUC-MUCHE';\n this.postalCodeLocality = 'TRUC-MUCHE 2';\n this.autocompleteLocality.searchText = this.postalCodeLocality;\n }\n */\n const data = event.prefillData;\n if (event.prefillData.prefillStreetPerfectMatchFound === true )\n {\n // if (this.showDebugMessageToConsole) { console.log('lib::onStreetPrefillEvent: MATCH FOUND', data); }\n const suggestion = data.prefillStreetPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetName(address);\n this.addressParams.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n // this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n const suggestionAddress = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const streetNumber = this.prefillData.parameters.streetNumber;\n if (streetNumber === null || streetNumber === undefined || streetNumber === '')\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n // this.quitPrefillMode();\n }\n else\n {\n //this.selectedAddress = address;\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.streetAddress = address;\n this.streetNumberAddress = null;\n /*\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n }\n\n /*\n const streetNumber = this.prefillData.parameters.streetNumber;\n if (streetNumber === null || streetNumber === undefined || streetNumber === '')\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) {console.log('lib::prefill: trigger checking street number match... ', this.prefillData);}\n this.streetNumberPrefillData = this.prefillData;\n }\n */\n\n if (this.showDebugMessageToConsole)\n {\n console.warn('lib::street: prefill - transmitting prefill data for streetNumber :', this.prefillData);\n }\n this.streetNumberPrefillData = this.prefillData;\n }\n else\n {\n const prefillStreetName = this.prefillData.parameters.streetName;\n const address = this.prefillData.prefillMunicipalityPerfectMatchSuggestion.address;\n this.autocompleteStreetNb.streetName = '';\n\n if (this.showDebugMessageToConsole) {\n console.error('lib::onStreetPrefillEvent - NO MATCH AT STREET LEVEL', prefillStreetName );\n }\n\n if ( prefillStreetName === null || prefillStreetName === undefined || prefillStreetName.length === 0 )\n {\n // if (this.showDebugMessageToConsole) {console.log('lib::onStreetPrefillEvent: NO MATCH FOUND - set address', data, address); }\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n }\n else\n {\n // address.streetName = prefillStreetName;\n address.searchBarString = prefillStreetName;\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetNumberPrefillEvent_new(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::street-number prefill event received:', event); }\n const data = event.prefillData;\n if (data.prefillStreetNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillStreetNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetNumber(address);\n this.autocompleteStreetNb.selectedAddress = address;\n\n const addressIsComplete = address && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n if (addressIsComplete && ! addressIsNotInList )\n {\n // found address - perfect matchat street number level\n // Nothing to do anymore\n this.autocompleteStreetNb.addressIsComplete = true;\n this.quitPrefillMode();\n }\n else\n {\n this.addressParams.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n // const suggestionAddressLocalityName\n // = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address.localityName;\n\n const suggestionAddress = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n this.prefillData.parameters.streetNumber = suggestionAddress.houseNumber;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n // this.quitPrefillMode();\n }\n else\n {\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.updateStreetNumber(address); // $$\n this.streetAddress = address;\n this.streetNumberAddress = address;\n if (address.hasOwnProperty('isComplete') && address.isComplete === true )\n {\n this.autocompleteStreetNb.addressIsComplete = true;\n if (addressIsNotInList)\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = '';\n }\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n /*\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteBoxNb.searchText = '';\n }\n\n /*\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking box number match... ', this.prefillData); }\n this.boxNumberPrefillData = this.prefillData;\n }\n */\n\n if (this.showDebugMessageToConsole)\n {\n console.warn('lib::streetnumber: prefill - transmitting prefill data for box :', this.prefillData);\n }\n this.boxNumberPrefillData = this.prefillData;\n }\n }\n else\n {\n const prefillStreetNumber = this.prefillData.parameters.streetNumber;\n const address = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n this.autocompleteBoxNb.streetNumber = '';\n\n if (this.showDebugMessageToConsole) {\n console.error('lib::onStreetNumberPrefillEvent - NO MATCH AT STREET-NUMBER LEVEL', prefillStreetNumber );\n }\n\n if ( prefillStreetNumber === null || prefillStreetNumber === undefined || prefillStreetNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n else\n {\n // address.houseNumber = prefillStreetNumber;\n address.searchBarString = prefillStreetNumber;\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetNumberPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::street number prefill event received:', event); }\n const data = event.prefillData;\n if (data.prefillStreetNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillStreetNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetNumber(address);\n this.autocompleteStreetNb.selectedAddress = address;\n\n const addressIsComplete = address && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n if (addressIsComplete && ! addressIsNotInList )\n {\n // found address - perfect matchat street number level\n // Nothing to do anymore\n this.autocompleteStreetNb.addressIsComplete = true;\n this.quitPrefillMode();\n }\n else\n {\n this.addressParams.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n // const suggestionAddressLocalityName\n // = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address.localityName;\n\n const suggestionAddress = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n this.prefillData.parameters.streetNumber = suggestionAddress.houseNumber;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n // this.quitPrefillMode();\n }\n\n /*\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking box number match... ', this.prefillData); }\n this.boxNumberPrefillData = this.prefillData;\n }\n */\n\n this.boxNumberPrefillData = this.prefillData;\n }\n }\n else\n {\n const prefillStreetNumber = this.prefillData.parameters.streetNumber;\n const address = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n this.autocompleteBoxNb.streetNumber = '';\n if ( prefillStreetNumber === null || prefillStreetNumber === undefined || prefillStreetNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n else\n {\n // address.houseNumber = prefillStreetNumber;\n address.searchBarString = prefillStreetNumber;\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n this.quitPrefillMode();\n }\n }\n\n onBoxNumberPrefillEvent_new(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: box number event received:', event); }\n const data = event.prefillData;\n if (data.prefillBoxNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillBoxNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.autocompleteBoxNb.selectedAddress = address;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n else\n {\n const prefillBoxNumber = this.prefillData.parameters.boxNumber;\n const address = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n if ( prefillBoxNumber === null || prefillBoxNumber === undefined || prefillBoxNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n else\n {\n // address.boxNumber = prefillBoxNumber;\n address.searchBarString = prefillBoxNumber;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n this.quitPrefillMode();\n }\n\n onBoxNumberPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: box number event received:', event); }\n const data = event.prefillData;\n if (data.prefillBoxNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillBoxNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.autocompleteBoxNb.selectedAddress = address;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n else\n {\n const prefillBoxNumber = this.prefillData.parameters.boxNumber;\n const address = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n if ( prefillBoxNumber === null || prefillBoxNumber === undefined || prefillBoxNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n else\n {\n // address.boxNumber = prefillBoxNumber;\n address.searchBarString = prefillBoxNumber;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n this.quitPrefillMode();\n }\n}\n","\r\n<div class=\"aacwidget-address-container\">\r\n\r\n <div class=\"bpaac-dropdown-validation\" *ngIf=\"validationMessageOptionType === 'SHOW' \">\r\n <div class=\"bpaac-validated-icon\" *ngIf=\"selectedAddress && validationMessage!==null && validationMessage.messageType!==null\"></div>\r\n <!-- {{ validationMessage | translate }} -->\r\n {{ validationMessage.translatedMessage }}\r\n </div>\r\n\r\n <!-- bp-aacwidget-autocomplete-locality -->\r\n <bp-locality class=\"aacwidget-address-locality\" *ngIf=\"isComponentReady\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedLocalityUrl\"\r\n [prefillData]=\"localityPrefillData\"\r\n [labelResourceKey]=\"'common.label.postalCode'\"\r\n [inputText]=\"postalCodeLocality\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [sortCriteria]=\"sortCriteriaLocality\"\r\n [maxSuggesionCount]=\"maxSuggestionLocality\" \r\n [visibleSuggestionCount]=\"visibleSuggestionLocalityCount\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 4)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\" \r\n (textChangeEvent)=\"resetLocality($event)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onLocalityPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-locality>\r\n\r\n <bp-street class=\"aacwidget-address-street\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedStreetUrl\"\r\n [prefillData]=\"streetPrefillData\"\r\n [labelResourceKey]=\"'common.label.streetName'\"\r\n [inputText]=\"streetNameInput\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\"\r\n [locality]=\"locality\"\r\n [sortCriteria]=\"sortCriteriaStreet\" \r\n [maxSuggesionCount]=\"maxSuggestionStreet\"\r\n [visibleSuggesionCount]=\"visibleSuggestionStreetCount\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 3)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetStreet($event)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onStreetPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-street>\r\n\r\n <bp-street-number class=\"aacwidget-address-streetnumber\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedStreetNumberUrl\"\r\n [selectedAddress]=\"streetAddress\"\r\n [prefillData]=\"streetNumberPrefillData\"\r\n [labelResourceKey]=\"'common.label.streetNumber'\"\r\n [inputText]=\"streetNumberInput\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\" \r\n [locality]=\"locality\" \r\n [streetName]=\"street\"\r\n [sortCriteria]=\"sortCriteriaStreetNb\"\r\n [maxSuggesionCount]=\"maxSuggestionStreetNb\" \r\n [visibleSuggesionCount]=\"visibleSuggestionStreetNbCount\"\r\n [notInListAllowed]=\"notInListAllowed\"\r\n [suggestionLevel]=\"suggestionLevel\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 2)\"\r\n (streetNumberChanged)=\"setAddressStreetNumber($event)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetStreetNumber($event, false)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onStreetNumberPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-street-number>\r\n\r\n <bp-box-number class=\"aacwidget-address-boxnumber\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedBoxNumberUrl\"\r\n [selectedAddress]=\"streetNumberAddress\"\r\n [prefillData]=\"boxNumberPrefillData\"\r\n [labelResourceKey]=\"'common.label.boxNumber'\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\" \r\n [locality]=\"locality\" \r\n [streetName]=\"street\" \r\n [streetNumber]=\"streetNumber\"\r\n [sortCriteria]=\"sortCriteriaBoxNb\" \r\n [maxSuggesionCount]=\"maxSuggestionBoxNb\"\r\n [visibleSuggesionCount]=\"visibleSuggestionBoxNbCount\"\r\n [notInListAllowed]=\"notInListAllowed\"\r\n [suggestionLevel]=\"suggestionLevel\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (addressChanged)=\"setAddress($event, 1)\" \r\n (boxNumberChanged)=\"setAddressBoxNumber($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetBoxNumber($event, false)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onBoxNumberPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-box-number>\r\n</div>","import { NgModule } from '@angular/core';\nimport { LibAddressAutocompleteByComponentComponent } from './lib-address-autocomplete-by-component.component';\nimport { LocalityComponent } from './locality/locality.component';\nimport { StreetComponent } from './street/street.component';\nimport { StreetNumberComponent } from './street-number/street-number.component';\nimport { BoxNumberComponent } from './box-number/box-number.component';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HighlightSuggestionPipe } from './utils/highlight-suggestion.pipe';\nimport { VisibleSuggestionDirective } from './utils/visible-suggestion.directive';\nimport { PrefilledParameters } from './utils/prefilled-parameters';\n\n\n\n@NgModule({\n declarations: [\n HighlightSuggestionPipe,\n VisibleSuggestionDirective,\n LibAddressAutocompleteByComponentComponent,\n LocalityComponent,\n StreetComponent,\n StreetNumberComponent,\n BoxNumberComponent\n ],\n imports: [\n CommonModule,\n // BrowserModule,\n // BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ],\n exports: [\n LibAddressAutocompleteByComponentComponent,\n ]\n})\nexport class LibAddressAutocompleteByComponentModule { }\n","import { ADDRESSLEVEL } from '../enum/address-level.enum';\r\n\r\nexport class PrefilledParameters {\r\n\r\n // unstructuredAddress: string;\r\n streetName: string;\r\n streetNumber: string;\r\n boxNumber: string;\r\n postalCode: string;\r\n municipalityName: string;\r\n state: boolean;\r\n minLevel: number;\r\n\r\n // used by the prefill address evaluation process\r\n onFocusShowSuggestionsAfterPrefill = false; // 2020-06-15\r\n\r\n ts: Date = null;\r\n\r\n constructor(init?: Partial<PrefilledParameters>) {\r\n Object.assign(this, init);\r\n if (this.boxNumber && this.boxNumber !== '') {\r\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\r\n } else if (this.streetNumber && this.streetNumber !== '') {\r\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\r\n } else if (this.streetName && this.streetName !== '') {\r\n this.minLevel = ADDRESSLEVEL.STREET;\r\n } else {\r\n this.minLevel = ADDRESSLEVEL.LOCALITY;\r\n }\r\n\r\n this.ts = new Date();\r\n }\r\n}\r\n","/*\n * Public API Surface of lib-address-autocomplete-by-component\n */\n\nexport * from './lib/lib-address-autocomplete-by-component.service';\nexport * from './lib/lib-address-autocomplete-by-component.component';\nexport * from './lib/lib-address-autocomplete-by-component.module';\nexport {PrefilledParameters} from './lib/utils/prefilled-parameters';\nexport * from './lib/enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["AddressSuggestion","Address","i1.HttpService","i1","i1.AddressService","i2.LocaleService","i4.UnicodeService","i7.VisibleSuggestionDirective","i8.HighlightSuggestionPipe","i1.Nis9Service","i2.HttpService","i3.LocalityComponent","i4.StreetComponent","i5.StreetNumberComponent","i6.BoxNumberComponent","i7"],"mappings":"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"}
1
+ {"version":3,"file":"bpost-bp-address-auto-complete-by-component.mjs","sources":["../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/validation-message-option-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/validation-message-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/address-level.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/query-parameters.model.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/domhandler.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/source-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/preflll.event.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/input-name.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Locality.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Street.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/model/Box.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/http.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/adress.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/locale.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/unicode.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/visible-suggestion.directive.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/highlight-suggestion.pipe.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/locality/locality.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/locality/locality.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/street/street.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street/street.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/enum/suggestion-level-type.enum.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street-number/street-number.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/street-number/street-number.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/box-number/box-number.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/box-number/box-number.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/prefill-data.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/constants.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/services/nis9.service.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.component.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.component.html","../../../projects/lib-address-autocomplete-by-component/src/lib/lib-address-autocomplete-by-component.module.ts","../../../projects/lib-address-autocomplete-by-component/src/lib/utils/prefilled-parameters.ts","../../../projects/lib-address-autocomplete-by-component/src/public-api.ts","../../../projects/lib-address-autocomplete-by-component/src/bpost-bp-address-auto-complete-by-component.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LibAddressAutocompleteByComponentService {\n\n constructor() { }\n}\n","export enum ValidationMessageOptionType {\r\n EMIT = 'EMIT',\r\n SHOW = 'SHOW'\r\n}\r\n","export enum ValidationMessageType {\r\n Address_Not_Found = 'address-not-found',\r\n Address_Validated = 'address-validated',\r\n Service_Unavailable = 'service-unavailable',\r\n}\r\n","export enum ADDRESSLEVEL {\r\n BOX_NUMBER = 1,\r\n STREET_NUMBER,\r\n STREET,\r\n LOCALITY\r\n}\r\n","export class QueryParameters {\r\n id: number;\r\n q: string;\r\n postalCode: string;\r\n locality: string;\r\n street: string;\r\n streetNumber: string;\r\n maxNumberOfSuggestions: number;\r\n sortByPostalCodeLocalityName: boolean;\r\n sortByLocalityNamePostalCode: boolean;\r\n sortByStreetName: boolean;\r\n sortByStreetNumber: boolean;\r\n sortByBoxNumber: boolean;\r\n\r\n constructor(init?: Partial<QueryParameters>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n sortByPostalCode(enable: boolean) {\r\n this.sortByPostalCodeLocalityName = enable;\r\n }\r\n\r\n sortByLocalityname(enable: boolean) {\r\n this.sortByLocalityNamePostalCode = enable;\r\n }\r\n\r\n sortByStreet(enable: boolean) {\r\n this.sortByStreetName = enable;\r\n }\r\n\r\n sortByStreetNb(enable: boolean) {\r\n this.sortByStreetNumber = enable;\r\n }\r\n\r\n sortByBox(enable: boolean) {\r\n this.sortByBoxNumber = enable;\r\n }\r\n}\r\n","export class DomHandler {\r\n public static findSingle(element: any, selector: string): any {\r\n if (element) {\r\n return element.querySelector(selector);\r\n }\r\n return null;\r\n }\r\n\r\n public static scrollInView(container, item) {\r\n const borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\r\n const borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\r\n const paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\r\n const paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\r\n const containerRect = container.getBoundingClientRect();\r\n const itemRect = item.getBoundingClientRect();\r\n const offset = (itemRect.top + document.body.scrollTop) - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\r\n const scroll = container.scrollTop;\r\n const elementHeight = container.clientHeight;\r\n const itemHeight = this.getOuterHeight(item);\r\n\r\n if (offset < 0) {\r\n container.scrollTop = scroll + offset;\r\n } else if ((offset + itemHeight) > elementHeight) {\r\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\r\n }\r\n }\r\n \r\n public static getInnerHeight(el) {\r\n let height = el.offsetHeight;\r\n let style = getComputedStyle(el);\r\n\r\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\r\n return height;\r\n }\r\n\r\n public static getOuterHeight(el, margin?) {\r\n let height = el.offsetHeight;\r\n\r\n if (margin) {\r\n let style = getComputedStyle(el);\r\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\r\n }\r\n\r\n return height;\r\n }\r\n\r\n public static getHeight(el): number {\r\n let height = el.offsetHeight;\r\n let style = getComputedStyle(el);\r\n\r\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\r\n\r\n return height;\r\n }\r\n}\r\n","export enum SourceType\r\n{\r\n SOURCE_PREFILLED = 'Prefilled'\r\n}\r\n","import { PrefillData } from './prefill-data';\r\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\r\n\r\nexport class PrefillEvent\r\n{\r\n constructor(\r\n public addressLevel: ADDRESSLEVEL,\r\n public prefillData: PrefillData,\r\n ){}\r\n}\r\n","export enum InputNameType\r\n{\r\n LOCALITY = 'LOCALITY',\r\n STREET = 'STREET',\r\n STREET_NUMBER = 'STREET_NUMBER',\r\n BOX_NUMBER = 'BOX_NUMBER'\r\n}\r\n","export class Locality {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}","export class Street {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}\r\n","export class Box {\r\n sequenceNumber: number;\r\n topSuggestions: AddressSuggestion[];\r\n\r\n constructor(json: any) {\r\n this.sequenceNumber = json.sequenceNumber;\r\n if (json.topSuggestions && json.topSuggestions.length > 0) {\r\n this.topSuggestions = [];\r\n json.topSuggestions.forEach(element => {\r\n this.topSuggestions.push(new AddressSuggestion(element));\r\n });\r\n }\r\n }\r\n}\r\n\r\nclass AddressSuggestion {\r\n address: Address;\r\n\r\n constructor(json: any) {\r\n this.address = json.address ? new Address(json.address) : null;\r\n }\r\n}\r\n\r\nclass Address {\r\n municipalityId: string;\r\n subMunicipalityId: string;\r\n detectedLanguage: string;\r\n geoSanction: string;\r\n searchBarString: string;\r\n string: string;\r\n municipalityName: string;\r\n localityName: string;\r\n postalCode: string;\r\n\r\n constructor(json: any) {\r\n this.municipalityId = json.municipalityId;\r\n this.subMunicipalityId = json.subMunicipalityId;\r\n this.detectedLanguage = json.detectedLanguage;\r\n this.geoSanction = json.geoSanction;\r\n this.searchBarString = json.searchBarString;\r\n this.string = json.string;\r\n this.municipalityName = json.municipalityName;\r\n this.localityName = json.localityName;\r\n this.postalCode = json.postalCode;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HttpService {\n\n private openConnections = 0;\n private showDebugMessageToConsole = false;\n\n constructor(private httpClient: HttpClient) { }\n\n private apiKey = 'no-value';\n\n setApiKey(apiKey: string): void\n {\n this.apiKey = apiKey;\n }\n\n setShowDebugMessageToConsole(showDebugMessageToConsole: boolean): void{\n this.showDebugMessageToConsole=showDebugMessageToConsole;\n }\n\n getHttpHeaders(): HttpHeaders\n {\n let headers=new HttpHeaders();\n // Attention !\n // Need to reassign as the 'set' is returning a clone of the headera object !!!\n headers=headers.set('x-api-key', this.apiKey);\n return headers;\n }\n \n get(url: string, options?: any): Observable<any> {\n return this.request('GET', url, options);\n }\n\n private request(method: any, url?: string, options?: {}): Observable<any> {\n options = !!options ? options : {};\n options = {...options, headers: this.getHttpHeaders()};\n if (this.showDebugMessageToConsole) {\n console.log('url:', url);\n console.log('options:', JSON.stringify(options));\n }\n\n this.openConnections++;\n return this.httpClient.request(method, url, options).pipe(\n map((response: Response) => this.handleResponse(response)),\n catchError((error: any) => this.handleError(error)));\n }\n\n private handleResponse(response: any): any {\n this.openConnections--;\n return response;\n }\n\n private handleError(error: any): any {\n this.openConnections--;\n return throwError(error);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, tap } from 'rxjs/operators';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { HttpService } from './http.service';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { Locality } from '../model/Locality';\nimport { Street } from '../model/Street';\nimport { Box } from '../model/Box';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddressService {\n private domain = 'http://abp-pr.netpost';\n private localityURL = this.domain + '/AddressAutoComplete/autocomplete/locality?IncludeGeographicalSanction=true';\n\n private readonly log=true;\n\n private nis9InResponse=false;\n\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\n private nis9ServiceURL='';\n\n constructor(\n private httpService: HttpService\n ) { }\n\n getLocality(baseUrl: string, params: QueryParameters): Observable<Locality> {\n const url = baseUrl !== '' ? baseUrl : this.localityURL;\n // const options = {'params': params};\n const options = {params};\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetLocality(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetLocality(response: any): Locality {\n const locality: Locality = new Locality(response.response);\n return locality;\n }\n\n getStreet(baseUrl: string, locality: string, postalcode: string, params: QueryParameters): Observable<Street> {\n let url = baseUrl;\n // const options = { 'params': params };\n const options = {params};\n url = url.replace('$postalCode', postalcode);\n url = url.replace('$localityName', locality);\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetStreet(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetStreet(response: any): Street {\n const street: Street = new Street(response.response);\n return street;\n }\n\n getBox(baseUrl: string, locality: string, postalcode: string, params: QueryParameters): Observable<Box> {\n let url = baseUrl;\n const options = {params};\n url = url.replace('$postalCode', postalcode);\n url = url.replace('$localityName', locality);\n return this.httpService.get(url, options).pipe(\n tap(response => this.handleGetBox(response)),\n catchError(error => this.handleError(error))\n );\n }\n\n private handleGetBox(response: any): Box {\n const street: Box = new Box(response.response);\n return street;\n }\n\n handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n \n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocaleService {\n\n inputLanguageEvent = new BehaviorSubject<string>(undefined);\n currentLang = this.inputLanguageEvent.asObservable();\n\n constructor(\n // private translateService: TranslateService\n ) { }\n\n changeLang(lang: string) {\n // this.translateService.use(lang);\n this.inputLanguageEvent.next(lang);\n }\n\n public isLocaleDutch(): boolean {\n return this.isPreferredLocale('nl');\n }\n\n public isLocaleFrench(): boolean {\n return this.isPreferredLocale('fr');\n }\n\n public isLocaleGerman(): boolean {\n return this.isPreferredLocale('de');\n }\n\n private isPreferredLocale(locale: string): boolean {\n return (this.inputLanguageEvent.getValue() \n || window.navigator['userSelectedLanguage'] \n || window.navigator['userLanguage'] \n || window.navigator.language).indexOf(locale) === 0;\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\n// const diacriticsRemovalMap = require('../../assets/diacriticsRemovalMap.json');\n\nconst diacriticsRemovalMap = {\n 'default': [\n {\n 'base': 'A',\n 'letters': '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n },\n {\n 'base': 'AA',\n 'letters': '\\uA732'\n },\n {\n 'base': 'AE',\n 'letters': '\\u00C6\\u01FC\\u01E2'\n },\n {\n 'base': 'AO',\n 'letters': '\\uA734'\n },\n {\n 'base': 'AU',\n 'letters': '\\uA736'\n },\n {\n 'base': 'AV',\n 'letters': '\\uA738\\uA73A'\n },\n {\n 'base': 'AY',\n 'letters': '\\uA73C'\n },\n {\n 'base': 'B',\n 'letters': '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n },\n {\n 'base': 'C',\n 'letters': '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n },\n {\n 'base': 'D',\n 'letters': '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n },\n {\n 'base': 'DZ',\n 'letters': '\\u01F1\\u01C4'\n },\n {\n 'base': 'Dz',\n 'letters': '\\u01F2\\u01C5'\n },\n {\n 'base': 'E',\n 'letters': '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n },\n {\n 'base': 'F',\n 'letters': '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n },\n {\n 'base': 'G',\n 'letters': '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n },\n {\n 'base': 'H',\n 'letters': '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n },\n {\n 'base': 'I',\n 'letters': '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n },\n {\n 'base': 'J',\n 'letters': '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n },\n {\n 'base': 'K',\n 'letters': '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n },\n {\n 'base': 'L',\n 'letters': '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n },\n {\n 'base': 'LJ',\n 'letters': '\\u01C7'\n },\n {\n 'base': 'Lj',\n 'letters': '\\u01C8'\n },\n {\n 'base': 'M',\n 'letters': '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n },\n {\n 'base': 'N',\n 'letters': '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n },\n {\n 'base': 'NJ',\n 'letters': '\\u01CA'\n },\n {\n 'base': 'Nj',\n 'letters': '\\u01CB'\n },\n {\n 'base': 'O',\n 'letters': '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n },\n {\n 'base': 'OI',\n 'letters': '\\u01A2'\n },\n {\n 'base': 'OO',\n 'letters': '\\uA74E'\n },\n {\n 'base': 'OU',\n 'letters': '\\u0222'\n },\n {\n 'base': 'OE',\n 'letters': '\\u008C\\u0152'\n },\n {\n 'base': 'oe',\n 'letters': '\\u009C\\u0153'\n },\n {\n 'base': 'P',\n 'letters': '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n },\n {\n 'base': 'Q',\n 'letters': '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n },\n {\n 'base': 'R',\n 'letters': '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n },\n {\n 'base': 'S',\n 'letters': '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n },\n {\n 'base': 'T',\n 'letters': '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n },\n {\n 'base': 'TZ',\n 'letters': '\\uA728'\n },\n {\n 'base': 'U',\n 'letters': '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n },\n {\n 'base': 'V',\n 'letters': '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n },\n {\n 'base': 'VY',\n 'letters': '\\uA760'\n },\n {\n 'base': 'W',\n 'letters': '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n },\n {\n 'base': 'X',\n 'letters': '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n },\n {\n 'base': 'Y',\n 'letters': '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n },\n {\n 'base': 'Z',\n 'letters': '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n },\n {\n 'base': 'a',\n 'letters': '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n },\n {\n 'base': 'aa',\n 'letters': '\\uA733'\n },\n {\n 'base': 'ae',\n 'letters': '\\u00E6\\u01FD\\u01E3'\n },\n {\n 'base': 'ao',\n 'letters': '\\uA735'\n },\n {\n 'base': 'au',\n 'letters': '\\uA737'\n },\n {\n 'base': 'av',\n 'letters': '\\uA739\\uA73B'\n },\n {\n 'base': 'ay',\n 'letters': '\\uA73D'\n },\n {\n 'base': 'b',\n 'letters': '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n },\n {\n 'base': 'c',\n 'letters': '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n },\n {\n 'base': 'd',\n 'letters': '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n },\n {\n 'base': 'dz',\n 'letters': '\\u01F3\\u01C6'\n },\n {\n 'base': 'e',\n 'letters': '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n },\n {\n 'base': 'f',\n 'letters': '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n },\n {\n 'base': 'g',\n 'letters': '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n },\n {\n 'base': 'h',\n 'letters': '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n },\n {\n 'base': 'hv',\n 'letters': '\\u0195'\n },\n {\n 'base': 'i',\n 'letters': '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n },\n {\n 'base': 'j',\n 'letters': '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n },\n {\n 'base': 'k',\n 'letters': '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n },\n {\n 'base': 'l',\n 'letters': '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n },\n {\n 'base': 'lj',\n 'letters': '\\u01C9'\n },\n {\n 'base': 'm',\n 'letters': '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n },\n {\n 'base': 'n',\n 'letters': '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n },\n {\n 'base': 'nj',\n 'letters': '\\u01CC'\n },\n {\n 'base': 'o',\n 'letters': '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n },\n {\n 'base': 'oi',\n 'letters': '\\u01A3'\n },\n {\n 'base': 'ou',\n 'letters': '\\u0223'\n },\n {\n 'base': 'oo',\n 'letters': '\\uA74F'\n },\n {\n 'base': 'p',\n 'letters': '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n },\n {\n 'base': 'q',\n 'letters': '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n },\n {\n 'base': 'r',\n 'letters': '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n },\n {\n 'base': 's',\n 'letters': '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n },\n {\n 'base': 't',\n 'letters': '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n },\n {\n 'base': 'tz',\n 'letters': '\\uA729'\n },\n {\n 'base': 'u',\n 'letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n },\n {\n 'base': 'v',\n 'letters': '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n },\n {\n 'base': 'vy',\n 'letters': '\\uA761'\n },\n {\n 'base': 'w',\n 'letters': '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n },\n {\n 'base': 'x',\n 'letters': '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n },\n {\n 'base': 'y',\n 'letters': '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n },\n {\n 'base': 'z',\n 'letters': '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n }\n ]\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UnicodeService implements OnDestroy {\n\n private defaultDiacriticsRemovalMap: any;\n private diacriticsMap: Object;\n\n constructor() {\n this.defaultDiacriticsRemovalMap = diacriticsRemovalMap.default;\n this.diacriticsMap = {};\n this.defaultDiacriticsRemovalMap.forEach(value => value.letters.split('').forEach((char) => this.diacriticsMap[char] = value.base));\n }\n\n public removeDiacritics(str: any) {\n if(str === null || str === undefined) { return str; }\n return str.replace(/[^\\u0000-\\u007E]/g, (a: string | number) => this.diacriticsMap[a] || a);\n }\n\n ngOnDestroy() {\n this.diacriticsMap = {};\n }\n\n}\n","import { Directive, Input, ElementRef, AfterViewChecked, Renderer2 } from '@angular/core';\nimport { DomHandler } from './domhandler';\n\n@Directive({\n selector: '[appVisibleSuggestion]'\n})\nexport class VisibleSuggestionDirective implements AfterViewChecked {\n\n @Input()\n appVisibleSuggestion: number;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngAfterViewChecked() {\n this.showHeight(this.el.nativeElement, this.appVisibleSuggestion);\n }\n\n showHeight(parent: HTMLElement, count: number) {\n if (!parent) { return; }\n\n // const children = parent.getElementsByClassName('list-option');\n // const children = parent.querySelectorAll('li');\n const children = parent.firstElementChild.children;\n\n if (!children || children.length === 0) { return; }\n\n const sum = Array.from(children).slice(0, count).reduce((acc, ele) => {\n return acc + DomHandler.getOuterHeight(ele);\n }, 7);\n\n this.renderer.setStyle(this.el.nativeElement, 'maxHeight', `${sum}px`);\n\n // this.el.nativeElement.style.maxHeight = `${sum}px`;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'highlightSuggestion'\n})\nexport class HighlightSuggestionPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: any, args?: any): any {\n\n if (!args) {\n return value;\n }\n\n if (Array.isArray(args) && args.length > 1 ) {\n return this.transformForArray(value, args);\n }\n\n if (args === '.') {\n args = '\\\\.';\n } else if (Array.isArray(args) && args.length === 1 ) {\n if (args[0] === '.') {\n args[0] = '\\\\.';\n }\n }\n\n // Match in a case insensitive manner\n const re = new RegExp(args, 'gi');\n const match = value.match(re);\n\n // If there's no match, just return the original value.\n if (!match) {\n return value;\n }\n\n /* console.warn('HighlightSuggestionPipe::transform: value=' + value);\n console.warn('HighlightSuggestionPipe::transform: args=' + args);\n console.warn('HighlightSuggestionPipe::transform: match=' + match); */\n\n const replacedValue = value.replace(re, '<span style=\\'font-weight: bold;\\'>' + match[0] + '</span>');\n // console.warn('HighlightSuggestionPipe::transform: replacedValue=' + replacedValue);\n return this.sanitizer.bypassSecurityTrustHtml(replacedValue);\n }\n\n private transformForArray(value: any, args: any): any {\n\n let query = '';\n let ix = 0;\n for (const word of args) {\n ix++;\n if (ix < args.length) {\n query = query.concat( word + '|');\n } else {\n query = query.concat( word );\n }\n }\n\n // console.warn('HighlightSuggestionPipe::transformForArray', value, args, query);\n\n const replacedValue = value.replace(new RegExp('(' + query + ')', 'gi'), '<span style=\"font-weight: bold;\">$1</span>');\n return this.sanitizer.bypassSecurityTrustHtml(replacedValue);\n }\n}\n","import { Component, OnInit, OnChanges, OnDestroy, SimpleChanges, AfterViewChecked, ElementRef, ViewChild, Input, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { AddressService } from '../services/adress.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LocaleService } from '../services/locale.service';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillData } from '../utils/prefill-data';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\n\n@Component({\n selector: 'bp-locality',\n templateUrl: './locality.component.html',\n styleUrls: ['./locality.component.scss']\n})\nexport class LocalityComponent implements OnInit, OnChanges, OnDestroy, AfterViewChecked {\n\n @ViewChild('localitySearchInput', { static: false }) localitySearchInput: ElementRef;\n @ViewChild('localityList', { static: false }) localityList: ElementRef;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n\n @Input() labelResourceKey = 'common.label.postalCode';\n @Input() messageOption = 'Y';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggestionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() inputText: string;\n // @Input() addressParams: PrefilledParameters;\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n\n @Input()\n isReadonly = false;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n @Output() messageChanged: EventEmitter<{ messageType: ValidationMessageType, translatedMessage: string }> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> = new EventEmitter<any>();\n // instance properties\n addressIsValidated: boolean;\n bpTypeAhead: string;\n collapseDropdown: boolean;\n consumedNumber: number;\n errorCode: any;\n lastSearchValue: string;\n minLevel: any;\n placeHolderText: string;\n previousIndex: number;\n searchText: string='';\n selectedIndex: number;\n selectionChanged: boolean;\n sequenceNumber: number;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n subscription: Subscription;\n suggestions: Array<any>;\n suggestionValidationMessage: string;\n suggestionsWordList: any;\n typeAheadWord: string;\n validationMessageCode = null;\n validationMessageOptions = null;\n wordList: any;\n prefillType:SourceType ;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit(): void {\n this.searchText;\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = false;\n this.sequenceNumber = 0;\n this.consumedNumber = 0;\n // initialization\n this.setSearchText('');\n this.onChangedLanguage();\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.localityList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n\n \n if (changes) {\n\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n\n if (this.showDebugMessageToConsole) { console.log('locality::ngOnChanges - loadParame result:', this.searchText); }\n this.bpTypeAhead = '';\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.LOCALITY) {\n this.collapseDropdown = true;\n this.prefillData.prefillMunicipalityName\n = this.transformMunicipalityInLowercaseAndWithoutDiacritics(this.prefillData.parameters.municipalityName);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED);\n }\n }\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange) {\n \n \n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n /*\n if (changes.hasOwnProperty('baseUrl') && !changes.baseUrl.firstChange) {\n this.clearWidget();\n this.clearSelectedAddress();\n }\n */\n\n // if (changes.hasOwnProperty('validatedByBackend') && changes.hasOwnProperty('prefillData')) {\n // this.onInputChange(SourceType.SOURCE_PREFILLED)\n // }\n\n }\n }\n\n transformMunicipalityInLowercaseAndWithoutDiacritics(municipalityName: string): string {\n let result: string = null;\n if (municipalityName !== null && municipalityName !== undefined) {\n result = this.unicodeService.removeDiacritics(municipalityName);\n result = result.toLowerCase();\n }\n if (this.showDebugMessageToConsole) { console.log('prefill municipality', result); }\n return result;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n // console.log('LibAutocompleteLocalityComponent::buildInputWordList', this.wordList);\n if (this.suggestions && this.wordList) {\n for (const sug of this.suggestions) {\n if (!sug || !sug.hasOwnProperty('string')) {\n continue;\n }\n for (const w of this.wordList) {\n const start = this.startsWithIgnoreDiacritics(sug.string as string, w as string);\n if (start >= 0) {\n const ww = sug.string.substr(start, w.length);\n // console.log('adding word:' + ww);\n // ww is a candidate to be added to the wordlist if not already present in it\n const present = this.wordList.find((w1: string) => w1.toLowerCase() === ww.toLowerCase());\n if (present === null || present === undefined) {\n this.wordList.push(ww);\n }\n }\n }\n }\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics((value !== null && value !== undefined) ? value.toLowerCase() : value);\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics((prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.slice(0, _prefix.length).toLowerCase().indexOf(_prefix) !== -1;\n return start;\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function (sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function (word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n /*\n this.translateService.get(this.errorCode/ *, {value: 'world'}* /).subscribe((res: string) => {\n console.log(res);\n // => 'hello world'\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n });\n */\n\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res) {\n this.clearSuggestionValidationMessage();\n }\n /*\n if (this.suggestionValidationMessage === this.translationService.translate(this.errorCode)) {\n this.clearSuggestionValidationMessage();\n }\n */\n this.errorCode = null;\n }\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant('common.message.' + validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({ messageType: validationMessageType, translatedMessage: message });\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n switch (this.sortCriteria) {\n case 'P':\n param.sortByPostalCode(true);\n break;\n\n case 'L':\n param.sortByLocalityname(true);\n break;\n\n default:\n break;\n }\n return param;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('LOCALITY calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getLocality(this.baseUrl, param).subscribe(\n response => {\n if (this.showDebugMessageToConsole) { console.log('locality suggestions received:', response); }\n this.handleGetLocalityResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED) {\n this.isPrefillWithNoMatch = this.prefillData.prefillMunicipalityPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetLocalityError(source)\n );\n }\n }\n\n getTextColor(): string {\n return (this.isPrefillWithNoMatch === true) ? 'orangered' : '';\n }\n\n handleGetLocalityResponse(data: any, source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('handleGetLocalityResponse', data);\n }\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetLocalityError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n // this.setConnectionErrorMessage();\n\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-locality-dropdown');\n }\n\n isString(val): boolean {\n return val.constructor === String;\n }\n\n loadParams(prefillData: PrefillData) {\n // this.clearWidget();\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null) {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n\n /*\n if (prefillData.parameters.hasOwnProperty('unstructuredAddress') && this.isString(prefillData.parameters.unstructuredAddress)) {\n concatStr = prefillData.parameters.unstructuredAddress;\n } else {\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n concatStr = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n concatStr += ' ' + prefillData.parameters.municipalityName;\n }\n }\n */\n\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n concatStr = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n concatStr += ' ' + prefillData.parameters.municipalityName;\n }\n }\n\n return concatStr;\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.localitySearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.LOCALITY);\n }\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.LOCALITY);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('locality click'); }\n\n }\n\n onInputChange(source?: SourceType) {\n this.collapseDropdown = false;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n } else {\n if (!this.validatedByBackend) {\n if (source === SourceType.SOURCE_PREFILLED) {\n this.clearTypeAhead();\n this.prefillData.prefillMunicipalityPerfectMatchFound = true;\n this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound = true;\n const municipalityName = this.searchText.replace(/\\d+/g, '').trim();\n const postalCode = this.searchText.match(/\\d+/g)?.join(\"\");\n let suggestion = {\n 'address':{\n 'string': this.searchText,\n 'municipalityName': municipalityName ? municipalityName.toUpperCase() : '',\n 'localityName': municipalityName,\n 'postalCode': postalCode,\n 'searchBarString': this.searchText\n }}\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion = suggestion;\n this.isPrefillWithNoMatch = this.prefillData.prefillMunicipalityPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else{\n this.isPrefillWithNoMatch = false;\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n const municipalityName = this.searchText.replace(/\\d+/g, '').trim();\n const postalCode = this.searchText.match(/\\d+/g)?.join(\"\");\n let suggestion = {\n 'string': this.searchText,\n 'municipalityName': municipalityName ? municipalityName.toUpperCase() : '',\n 'localityName': municipalityName,\n 'postalCode': postalCode,\n 'searchBarString': this.searchText\n }\n this.setSelectedAddress(suggestion);\n }\n } else {\n this.getTopSuggestions(source);\n }\n }\n // console.log('LibAutocompleteLocalityComponent::onInputChange - before', this.wordList);\n this.buildInputWordList();\n // console.log('LibAutocompleteLocalityComponent::onInputChange - after', this.wordList);\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n this.suggestions.push(suggestionToAdd);\n if (this.messageOption === 'Y' && suggestionToAdd.hasOwnProperty('messages')) {\n for (const m of suggestionToAdd.messages) {\n const translatedMessage = this.translateMessage(m);\n if (translatedMessage !== null) {\n m.translatedMessage = translatedMessage;\n }\n }\n }\n if (source === SourceType.SOURCE_PREFILLED) {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n }\n }\n\n prefillCheckForPerfectMatch(suggestion) {\n const sugAddress = suggestion.address;\n if ( /*! this.prefillData.prefillMunicipalityPerfectMatchFound &&*/ sugAddress.postalCode === this.prefillData.parameters.postalCode) {\n if (this.showDebugMessageToConsole) {\n console.log('LOCALITY - PREFILL - checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const suggestionLocality = this.transformMunicipalityInLowercaseAndWithoutDiacritics(sugAddress.localityName);\n const suggestionMunicipality = this.transformMunicipalityInLowercaseAndWithoutDiacritics(sugAddress.municipalityName);\n if (suggestionLocality.startsWith(this.prefillData.prefillMunicipalityName)\n || suggestionMunicipality.startsWith(this.prefillData.prefillMunicipalityName)) {\n if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - skipping suggestion:', suggestion); }\n if (this.showDebugMessageToConsole) {\n console.log('LOCALITY - PREFILL - keeping suggestion:',\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion);\n }\n return;\n }\n\n this.prefillData.prefillMunicipalityPerfectMatchFound = true;\n this.prefillData.prefillMunicipalityPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.postalCode + ' ' + sugAddress.localityName;\n\n this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound = (suggestionLocality.startsWith(this.prefillData.prefillMunicipalityName)\n && suggestionMunicipality.startsWith(this.prefillData.prefillMunicipalityName)) ? true : false;\n\n if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - Perfect match - Municipality & location:', suggestion); }\n }\n else {\n if (this.showDebugMessageToConsole) { console.log('LOCALITY - PREFILL - NO Perfect match:', suggestion); }\n }\n }\n }\n }\n\n prefillAnalyzeData() {\n\n if (this.prefillData.prefillMunicipalityPerfectMatchFound === true) {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(/*this.prefillData*/ new PrefillEvent(ADDRESSLEVEL.LOCALITY, this.prefillData));\n }\n\n\n\n parseTopSuggestions(topSuggestions, source: SourceType) {\n if (this.showDebugMessageToConsole) { console.log('locality - parse suggestions', topSuggestions); }\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions) {\n this.parseSingleSuggestion(sug, source);\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n startsWithIgnoreDiacritics(value: string, prefix: string): number {\n // console.log('Searching for prefix \"' + prefix + '\" inside suggestion: ' + value);\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics((value !== null && value !== undefined) ? value.toLowerCase() : value);\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics((prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.indexOf(_prefix);\n // console.log('startsWithIgnoreDiacritics: ' + start);\n return start;\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n clearInput(focus?, emit: boolean = true) {\n this.clearSuggestions();\n this.bpTypeAhead = '';\n this.setSearchText('');\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.clearSelectedAddress();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.localitySearchInput.nativeElement.focus();\n }\n \n if (emit) {\n this.clearInputEventEmitter.emit(/*'LOCALITY'*/ InputNameType.LOCALITY);\n this.clearInputEventEmitter.emit(/*'STREET'*/ InputNameType.STREET);\n this.clearInputEventEmitter.emit(/*'STREET_NUMBER'*/ InputNameType.STREET_NUMBER);\n this.clearInputEventEmitter.emit(/*'BOX_NUMBER'*/ InputNameType.BOX_NUMBER);\n }\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n clearSuggestionValidationMessage() {\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({ messageType: null, translatedMessage: this.suggestionValidationMessage });\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n // console.log('LibAutocompleteLocalityComponent::clearSuggestions', this.wordList);\n // this.suggestionMessages = [];\n }\n\n clickSuggestion(event: any, suggestion: any) {\n this.isPrefillWithNoMatch = false;\n event.preventDefault();\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n this.setSearchText(suggestion.string);\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n this.addressIsValidated = true;\n this.clearSuggestions();\n this.setSelectedAddress(suggestion);\n }\n\n clearWidget() {\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n this.prefilling = false;\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('locality.placeholder.input-placeholder');\n this.translateService.get('locality.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n });\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n checkKeyUP(event)\n {\n switch (event.which) {\n \n case 8:\n \n if(this.searchText.length>0)\n {\n this.clearInputEventEmitter.emit('PARTIAL_CLEAR_LOCALITY');\n }\n else\n {\n this.clearInputEventEmitter.emit('LOCALITY');\n // this.clearInputEventEmitter.emit('STREET');\n // this.clearInputEventEmitter.emit('STREET_NUMBER');\n // this.clearInputEventEmitter.emit('BOX_NUMBER');\n // this.clearInput(true);\n }\n break; \n\n default:\n this.clearTypeAhead();\n break;\n\n }\n \n }\n checkKeyDown(event) {\n \n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = /*'service-unavailable'*/ ValidationMessageType.Service_Unavailable;\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n setSelectedAddress(suggestion: any) {\n this.addressChanged.emit(suggestion);\n }\n\n translateMessage(message): string {\n const messageKey = message.key;\n switch (messageKey) {\n case 'subl': {\n // args length must be 2 !\n if (message.args && message.args.length === 2) {\n return this.translateService.instant('locality.suggestion.message.subl', { sub: message.args[0], principal: message.args[1] });\n }\n }\n // tslint:disable-next-line:align\n break;\n }\n return null;\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n \n <input type=\"text\" #localitySearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n (keyup) = (checkKeyUP($event))\n (keydown)=\"checkKeyDown($event)\" (input)=\"onInputChange()\"\n [style.color]=\" getTextColor() \"\n [(ngModel)]=\"searchText\" id=\"localityInputField\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" (click)=\"onInputClick()\"/>\n <div id=\"bpaac-clear-locality-button\" \n *ngIf=\"mayShowClearButton()\"\n (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-locality-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" *ngIf=\"suggestions && suggestions.length>0\">\n <div #localityList [appVisibleSuggestion]=\"visibleSuggestionCount\" id=\"bpaac-locality-dropdown\" \n class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-locality-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" \n *ngFor=\"let option of suggestions; let idx = index\" \n [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option.string | highlightSuggestion : wordList\"></span> \n <span *ngIf=\"messageOption === 'P' && option.messages\"> ({{option.municipalityName}})</span><br />\n <ng-container *ngIf=\"messageOption === 'Y'\">\n <span *ngFor=\"let message of option.messages\" \n class=\"bpaac-suggestion-message\"\n [innerHtml]=\"message.translatedMessage\"></span> \n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n</div>","import { Component, OnInit, ViewChild, ElementRef, Input, Output, EventEmitter, SimpleChanges, AfterViewChecked, OnChanges, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\n\n@Component({\n selector: 'bp-street',\n templateUrl: './street.component.html',\n styleUrls: ['./street.component.scss']\n})\nexport class StreetComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n @ViewChild('streetSearchInput', {static: false} ) streetSearchInput: ElementRef;\n @ViewChild('streetList', {static: false} ) streetList: ElementRef;\n\n private subscription: Subscription = null;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n\n @Input() labelResourceKey = 'common.label.streetName';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() inputText: string;\n\n @Input() messageOption = 'Y';\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n\n @Input()\n isReadonly=false;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> =new EventEmitter<any>();\n\n searchText: string;\n\n addressIsValidated: boolean;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit(): void {\n\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = false;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.onChangedLanguage();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('street.placeholder.input-placeholder');\n this.translateService.get('street.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n });\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.streetList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n // if(this.searchText === '')\n // {\n setTimeout(() => {\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n // console.log(\"setrtt time\");\n }, 200);\n // }\n\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.STREET) {\n /*\n this.onInputChange('prefilled');\n this.streetSearchInput.nativeElement.focus();\n */\n /*\n\n this.prefilling = true;\n this.collapseDropdown = true;\n this.prefillMunicipalityName = this.transformMunicipalityInLowercaseAndWithoutDiacritics(this.addressParams.municipalityName);\n this.onInputChange(/*'prefilled'* / // this.SOURCE_PREFILLED );\n */\n\n this.collapseDropdown = true;\n this.prefillData.prefillStreetName\n = this.transformStreetNameInLowercaseAndWithoutDiacritics(this.prefillData.parameters.streetName);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n\n }\n\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange) {\n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n\n // Reset Street search bar on locality change/reset\n if (changes.hasOwnProperty('postalCode') && !changes.postalCode.firstChange && !changes.hasOwnProperty('prefillData')) {\n this.minLevel = ADDRESSLEVEL.STREET;\n if (changes.postalCode.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n }\n\n }\n }\n\n transformStreetNameInLowercaseAndWithoutDiacritics(streetName: string): string {\n let result: string = null;\n if (streetName !== null && streetName !== undefined )\n {\n result = this.unicodeService.removeDiacritics(streetName);\n result = result.toLowerCase();\n }\n if (this.showDebugMessageToConsole) { console.log('prefill streetName', result); }\n return result;\n }\n\n isCrossLanguageMunicipalityMatch(suggestionMunicipality: string, prefillMunicipality: string): boolean {\n if (!suggestionMunicipality || !prefillMunicipality) {\n return false;\n }\n const suggestionLower = suggestionMunicipality.toLowerCase();\n const prefillLower = prefillMunicipality.toLowerCase();\n if (suggestionLower === prefillLower) {\n return true;\n }\n }\n\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n\n onBlur(ev: any) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.streetSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.STREET);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-street-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n\n if (this.showDebugMessageToConsole) { console.log('street comp - onFocus', this.prefilling, this.prefillData, this.collapseDropdown); }\n\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.STREET);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n // console.log('word list - street:', this.wordList);\n if (this.suggestions && this.wordList) {\n for (const sug of this.suggestions) {\n if (!sug || !sug.hasOwnProperty('string')) {\n continue;\n }\n for (const w of this.wordList) {\n const start = this.startsWithIgnoreDiacritics(sug.string as string, w as string);\n if (start >= 0) {\n const ww = sug.string.substr(start, w.length);\n // console.log('adding word:' + ww);\n // ww is a candidate to be added to the wordlist if not already present in it\n const present = this.wordList.find( (w1: string) => w1.toLowerCase() === ww.toLowerCase() );\n if (present === null || present === undefined) {\n this.wordList.push(ww);\n }\n }\n }\n }\n }\n }\n\n startsWithIgnoreDiacritics(value: string, prefix: string): number {\n // console.log('Searching for prefix \"' + prefix + '\" inside suggestion: ' + value);\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics( (value !== null && value !== undefined) ? value.toLowerCase() : value );\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics( (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.indexOf(_prefix);\n // console.log('startsWithIgnoreDiacritics: ' + start);\n return start;\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n // tslint:disable-next-line:variable-name\n const _value = this.unicodeService.removeDiacritics( (value !== null && value !== undefined) ? value.toLowerCase() : value );\n // tslint:disable-next-line:variable-name\n const _prefix = this.unicodeService.removeDiacritics( (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix);\n const start = _value.slice(0, _prefix.length).toLowerCase().indexOf(_prefix) !== -1;\n return start;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('STREET calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getStreet(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n this.handleGetStreetResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetStreetError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n /*\n if (params.hasOwnProperty('unstructuredAddress') && this.isString(params.unstructuredAddress)) {\n this.valueChanged();\n }\n */\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName')\n && this.isString(prefillData.parameters.streetName) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.streetName;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n if(!this.validatedByBackend){\n return this.isValid(this.postalCode) || this.isValid(this.locality);\n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality);\n }\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'S') {\n param.sortByStreet(true);\n }\n return param;\n }\n\n handleGetStreetResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetStreetError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = /*'service-unavailable'*/ ValidationMessageType.Service_Unavailable;\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions)\n {\n this.parseSingleSuggestion(sug, source);\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n this.suggestions.push(suggestionToAdd);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n }\n }\n\n prefillCheckForPerfectMatch(suggestion) {\n if (this.showDebugMessageToConsole) { console.log('street - checking suggestion for perfect match', this.prefillData, suggestion); }\n const streetNamesAllLanguage = [];\n const languageTypes = ['address', 'french', 'dutch', 'german'];\n \n for (const type of languageTypes) {\n if (suggestion[type]) {\n streetNamesAllLanguage.push({\n type: type,\n streetName: suggestion[type].streetName,\n municipalityName: suggestion[type].municipalityName,\n localityName: suggestion[type].localityName\n });\n }\n }\n\n for (const lang of streetNamesAllLanguage) {\n console.log('----------------Language data--------------------:', lang);\n\n if (!lang.streetName || !lang.municipalityName) {\n continue;\n }\n const suggestionStreetName = this.transformStreetNameInLowercaseAndWithoutDiacritics(lang.streetName);\n const suggestionMunicipalityName = this.transformStreetNameInLowercaseAndWithoutDiacritics(lang.municipalityName);\n const suggestionLocalityName = lang.localityName ? this.transformStreetNameInLowercaseAndWithoutDiacritics(lang.localityName) : '';\n\n const municipalityMatches = suggestionMunicipalityName === this.prefillData.prefillMunicipalityName ||\n suggestionLocalityName === this.prefillData.prefillMunicipalityName ||\n this.isCrossLanguageMunicipalityMatch(suggestionMunicipalityName, this.prefillData.prefillMunicipalityName) ||\n this.isCrossLanguageMunicipalityMatch(suggestionLocalityName, this.prefillData.prefillMunicipalityName);\n\n console.log('Municipality matches:', municipalityMatches);\n\n if (municipalityMatches) {\n if (suggestionStreetName === this.prefillData.prefillStreetName) {\n this.prefillData.prefillStreetPerfectMatchFound = true;\n this.prefillData.prefillStreetPerfectMatchSuggestion = suggestion;\n this.searchText = lang.streetName;\n\n if (this.showDebugMessageToConsole) {\n console.log('STREET - PREFILL - Perfect match found with lang:', lang.type, suggestion);\n }\n return;\n }\n }\n\n }\n if (this.showDebugMessageToConsole) {\n console.log('STREET - PREFILL - NO Perfect match found:', suggestion);\n }\n }\n\n onInputChange(source?: SourceType) {\n // console.log('street onInputChange : source ', source);\n this.collapseDropdown = false;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n } else {\n if(!this.validatedByBackend){\n\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillStreetPerfectMatchFound = true;\n // this.clearTypeAhead();\n // this.resetArrowSelectedIndex();\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'localityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.searchText.toUpperCase()\n }}\n this.prefillData.prefillStreetPerfectMatchSuggestion = suggestion;\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetPerfectMatchFound === true ? false : true;\n\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'localityName': this.locality ? this.locality.toLocaleUpperCase() :'',\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillStreetPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.STREET, this.prefillData) );\n }\n\n\n clickSuggestion(event: any, suggestion: any) {\n this.isPrefillWithNoMatch = false;\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion', event, suggestion); }\n event?.preventDefault();\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n this.setSearchText(suggestion.string);\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n this.addressIsValidated = true;\n if (event) {\n this.clearSuggestions();\n }\n this.setSelectedAddress(suggestion);\n }\n\n setSelectedAddress(suggestion: any) {\n this.addressChanged.emit(suggestion);\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n showAddressIsValidated() {\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n \n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n checkKeyUP(event)\n {\n switch (event.which) {\n \n case 8:\n \n if(this.searchText.length>0)\n {\n this.clearInputEventEmitter.emit('PARTIAL_CLEAR_STREET');\n }\n else\n {\n this.clearInputEventEmitter.emit('STREET');\n // this.clearInputEventEmitter.emit('STREET_NUMBER');\n // this.clearInputEventEmitter.emit('BOX_NUMBER');\n // this.clearInput(true);\n }\n break; \n\n default:\n this.clearTypeAhead();\n break;\n\n }\n \n }\n clearWidget() {\n this.addressIsValidated = false;\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n clearInput(focus?, emit: boolean = true) {\n // console.warn('street clearInput called ...', focus, emit);\n // console.log(this.selectedAddress,\"selectedadreess\");\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n // console.warn('street clearInput - set focus !!!', focus);\n this.streetSearchInput.nativeElement.focus();\n }\n \n if (emit) {\n this.clearInputEventEmitter.emit(/*'STREET'*/ InputNameType.STREET);\n // this.clearInputEventEmitter.emit(/*'STREET_NUMBER'*/ InputNameType.STREET_NUMBER);\n // this.clearInputEventEmitter.emit(/*'BOX_NUMBER'*/ InputNameType.BOX_NUMBER);\n }\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.STREET);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('street click'); }\n this.prefilling = false;\n this.collapseDropdown = false;\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #streetSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n (keyup) = (checkKeyUP($event))\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"(validatedByBackend && (!locality || locality.trim().length === 0)) \n || (!validatedByBackend && ((!postalCode || postalCode.trim().length === 0) && (!locality || locality.trim().length === 0)))\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"streetInputField\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-street-button\" *ngIf=\"mayShowClearButton()\" (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-street-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" *ngIf=\"suggestions && suggestions.length>0\">\n <div #streetList [appVisibleSuggestion]=\"visibleSuggesionCount\" id=\"bpaac-street-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-street-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","export enum SuggestionLevelType {\r\n // this only applies for streetNumber and boxNumber\r\n None,\r\n StreetNumber,\r\n StreetAndBoxNumber\r\n}","import { Component, OnInit, AfterViewChecked, OnChanges, OnDestroy, ElementRef, ViewChild, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { UnicodeService } from '../services/unicode.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\nimport { SuggestionLevelType } from '../enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-street-number',\n templateUrl: './street-number.component.html',\n styleUrls: ['./street-number.component.scss']\n})\nexport class StreetNumberComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n\n @ViewChild('streetNumberSearchInput', {static: false} ) streetNumberSearchInput: ElementRef;\n @ViewChild('streetNumberList', {static: false} ) streetNumberList: ElementRef;\n\n private subscription: Subscription;\n\n // 2020-06-15\n /* @Input()\n onFocusShowSuggestionsAfterPrefill = true; */\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = true;\n\n @Input() labelResourceKey = 'common.label.streetNumber';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() streetName: string;\n @Input() notInListAllowed: boolean;\n @Input() selectedAddress;\n @Input() allowNoValidation: boolean\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n this.onChangedLanguage();\n }\n );\n }\n @Input() messageOption = 'Y';\n @Input() inputText: string;\n\n @Input()\n isReadonly=false;\n\n @Input()\n suggestionLevel: SuggestionLevelType;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() emptyResponseEvent: EventEmitter<any> = new EventEmitter();\n\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n\n @Output()\n streetNumberChanged: EventEmitter<string> = new EventEmitter();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> = new EventEmitter();\n\n searchText: string;\n\n addressIsValidated = false;\n addressIsComplete = false;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n emptyResponseText: string;\n emptyResponse: boolean;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n SuggestionLevelType=SuggestionLevelType;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit() {\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = true;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.setEmptyResponseText();\n this.emptyResponse = true;\n this.onChangedLanguage();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('streetNumber.placeholder.input-placeholder');\n this.translateService.get('streetNumber.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n this.setEmptyResponseText();\n });\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.streetNumberList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n\n if (changes.hasOwnProperty('streetName')\n && !changes.streetName.firstChange\n && !changes.hasOwnProperty('prefillData') && ! this.prefilling ) {\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.addressIsComplete = false;\n if (this.showDebugMessageToConsole) {\n console.warn('street name - ngOnchanges - streetName changes detection');\n }\n if (changes.streetName.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n }\n\n if (changes.hasOwnProperty('inputText') && !changes.inputText.firstChange && ! this.prefilling ) {\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - inputText changes detection', this.searchText, changes.inputText.currentValue);\n }\n if (this.notEqualIgnoreCase(this.searchText, changes.inputText.currentValue)) {\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - inputText changes detection -> calling clearWidget() !');\n }\n this.clearWidget();\n this.searchText = changes.inputText.currentValue;\n }\n }\n\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.addressIsComplete = false;\n // console.log('streetNumber::ngOnChanges', this.addressIsComplete);\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.STREET_NUMBER) {\n /*\n this.onInputChange(/*'prefilled'* / SourceType.SOURCE_PREFILLED);\n this.streetNumberSearchInput.nativeElement.focus();\n */\n\n this.collapseDropdown = true;\n this.prefillData.prefillStreetNumber\n = this.transformStreetNumberInLowercaseAndWithoutDiacritics(this.prefillData.parameters.streetNumber);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n // console.log('streetNumber::ngOnChanges -- after calculations', this.addressIsComplete);\n }\n\n }\n }\n\n transformStreetNumberInLowercaseAndWithoutDiacritics(streetNumber: string): string {\n let result: string = null;\n if (streetNumber !== null && streetNumber !== undefined )\n {\n result = this.unicodeService.removeDiacritics(streetNumber);\n result = result.toLowerCase();\n }\n // console.log('Transformed street number:', result);\n return result;\n }\n\n notEqualIgnoreCase(oldVal: string, newVal: string) {\n return oldVal.toLowerCase() !== newVal.toLowerCase();\n }\n\n setEmptyResponseText() {\n this.emptyResponseText = this.translateService.instant('streetNumber.message.not-in-list');\n }\n\n /*\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n */\n\n /*\n retranslate() {\n this.setPlaceHolderText();\n this.setEmptyResponseText();\n if (this.errorCode) {\n this.setValidationMessage(this.errorCode);\n } else {\n if (this.validationMessageCode) {\n this.setValidationMessage(this.validationMessageCode, this.validationMessageOptions, true);\n }\n }\n }\n */\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.streetNumberSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.STREET_NUMBER);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-streetnumber-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.STREET_NUMBER);\n }\n\n valueChanged() {\n // console.warn('street-number::valueChanged DISABLED');\n this.textChangeEvent.emit(this.searchText);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n }\n\n mayAddTypeAhead() {\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n buildTypeAhead(source: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED) { return false; }\n if (!this.mayAddTypeAhead()) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n value = (value !== null && value !== undefined) ? value.toLowerCase() : value;\n prefix = (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix;\n return this.unicodeService.removeDiacritics(value).slice(0, prefix.length)\n .toLowerCase().indexOf(this.unicodeService.removeDiacritics(prefix)) !== -1;\n }\n\n getBackgroundColor(): string {\n return !this.isParamsComplete() ? 'lightgrey' : '';\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('STREET-NUMBER calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getStreet(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n if (this.showDebugMessageToConsole) { console.log('STREET-NUMBER service response', response); }\n this.handleGetStreetResponse(response, source);\n // console.log('street number service response', response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n /*\n if (this.prefillData.prefillStreetNumberPerfectMatchFound !== true )\n {\n this.searchText = this.prefillData.prefillStreetNumber;\n }\n */\n // this.addressIsComplete = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? true : false;\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetStreetError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillStreetNumberPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.STREET_NUMBER, this.prefillData) );\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName') && this.isString(prefillData.parameters.streetName)) {\n this.streetName = prefillData.parameters.streetName;\n }\n if (prefillData.parameters.hasOwnProperty('streetNumber')\n && this.isString(prefillData.parameters.streetNumber) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.streetNumber;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n/* if (this.showDebugMessageToConsole) {\n console.log('street-number::isParamsComplete', this.postalCode, this.locality, this.streetName);\n } */\n if(!this.validatedByBackend){\n return (this.isValid(this.postalCode) || this.isValid(this.locality)) && this.isValid(this.streetName)\n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName);\n }\n }\n\n generateParameters(): QueryParameters {\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n street: this.streetName,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'S') {\n param.sortByStreetNb(true);\n }\n return param;\n }\n\n handleGetStreetResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetStreetError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = 'service-unavailable';\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source?: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n for (const sug of topSuggestions)\n {\n if (this.showDebugMessageToConsole)\n {\n console.log('streetnumber::parseTopSuggestions - suggestion:',sug,'source:', source);\n }\n this.parseSingleSuggestion(sug, source);\n }\n\n if (!source)\n {\n if ((topSuggestions.length === 0 || this.emptyResponse) && this.notInListAllowed) {\n this.suggestions.push({string: this.searchText, 'not-in-list': true});\n }\n }\n else\n {\n // If prefilling, then check if no match for a non-empty boxNumber\n // If this is the case, simulate the selection of the 'not-in-list' suggestion\n if (this.prefilling && this.notInListAllowed\n && this.prefillData.prefillStreetNumberPerfectMatchFound === false\n && this.prefillData.prefillStreetNumber !== null\n && this.prefillData.prefillStreetNumber !== undefined\n && this.prefillData.prefillStreetNumber.length > 0)\n {\n // const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const suggestion = this.prefillBuildNotInListSuggestion();\n if (this.showDebugMessageToConsole) { console.log('STREET NUMBER - PREFILL NOT IN LIST SUGGESTION:', suggestion); }\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n prefillBuildNotInListSuggestion(): any {\n const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const streetSuggestion = this.prefillData.prefillStreetPerfectMatchSuggestion;\n const combined = {...streetSuggestion.address, ...notInListSuggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n // combined.boxNumber = combined.string;\n combined.houseNumber = combined.string;\n combined.searchBarString = combined.string;\n let isComplete = false;\n if (this.prefillData.parameters.hasOwnProperty('boxNumber') )\n {\n const bn = this.prefillData.parameters.boxNumber;\n isComplete = (bn !== null && bn !== undefined && bn.length > 0 ) ? false : true;\n }\n else\n {\n isComplete = true;\n }\n if (isComplete === true) {\n combined.isComplete = isComplete;\n }\n streetSuggestion.address = combined;\n return streetSuggestion;\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType) {\n let suggestionToAdd: any;\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n if (suggestionToAdd.houseNumber === this.searchText) {\n this.emptyResponse = false;\n }\n this.suggestions.push(suggestionToAdd);\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - add suggestion to list', suggestionToAdd);\n }\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n if (this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber)\n {\n suggestion.address = suggestionToAdd;\n const isPerfectMatch=this.checkForPerfectMatch(suggestion);\n if(! isPerfectMatch)\n {\n // seems nothing to do?\n // No need to notify for a incomplete address\n }\n }\n }\n }\n\n checkForPerfectMatch(suggestion): boolean\n {\n if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - checking suggestion for perfect match', suggestion, this.searchText);\n }\n const sugAddress = suggestion.address;\n const suggestionStreetNumber = this.transformStreetNumberInLowercaseAndWithoutDiacritics('' + sugAddress.houseNumber);\n\n if (suggestionStreetNumber === ('' + this.searchText) )\n {\n this.searchText = sugAddress.houseNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true ) {\n this.clickSuggestion(null, sugAddress);\n this.addressIsComplete = true;\n // console.log('streetNumber::prefillCheckForPerfectMatch', this.addressIsComplete);\n if (this.showDebugMessageToConsole && this.addressIsComplete === true) {\n console.log('ADDRESS COMPLETE ON STREET NUMBER !');\n }\n return true;\n } else {\n if(this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber) {\n this.clickSuggestion(null, sugAddress);// house number found\n }\n }\n }\n }\n else\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::prefillCheckForPerfectMatch - Address complete, skipping suggestion check', suggestion);\n }\n }\n\n return false;\n }\n\n prefillCheckForPerfectMatch(suggestion)\n {\n if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber - checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const sugAddress = suggestion.address;\n const suggestionStreetNumber = this.transformStreetNumberInLowercaseAndWithoutDiacritics('' + sugAddress.houseNumber);\n if (this.showDebugMessageToConsole) {\n console.log('comparing street numbers', suggestionStreetNumber, this.prefillData.prefillStreetNumber);\n }\n if (suggestionStreetNumber === ('' + this.prefillData.prefillStreetNumber) )\n {\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.houseNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true ) {\n this.clickSuggestion(null, sugAddress);\n this.addressIsComplete = true;\n // console.log('streetNumber::prefillCheckForPerfectMatch', this.addressIsComplete);\n if (this.showDebugMessageToConsole && this.addressIsComplete === true) {\n console.log('ADDRESS COMPLETE ON STREET NUMBER !');\n }\n }\n }\n }\n else\n {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::prefillCheckForPerfectMatch - Address complete, skipping suggestion check', suggestion);\n }\n }\n }\n\n onInputChange_new(source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange', source);\n }\n this.collapseDropdown = false;\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::onInputChange', this.addressIsComplete);\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange -> calling valueChanged');\n }\n if(this.suggestionLevel!==SuggestionLevelType.None)\n {\n this.valueChanged();\n }\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(A) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(B) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n else\n {\n if(!this.validatedByBackend){\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }\n this.setSelectedAddress(suggestion);\n }else{\n this.getTopSuggestions(source);\n }\n }\n }\n this.buildInputWordList();\n }\n\n onInputChange(source?: SourceType) {\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange', source);\n }\n this.collapseDropdown = false;\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::onInputChange', this.addressIsComplete);\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n if (this.showDebugMessageToConsole) {\n console.log('streetNumber::onInputChange -> calling valueChanged');\n }\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(A) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED)\n this.prefillAnalyzeData();\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None)\n {\n console.log('(B) do not use suggestions for street number');\n this.streetNumberChanged.emit(this.searchText);\n if (source === SourceType.SOURCE_PREFILLED){\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }}\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n }\n else if(!this.validatedByBackend){\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillStreetNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address':{\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }}\n this.prefillData.prefillStreetNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillStreetNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'houseNumber': this.searchText.toUpperCase(),\n 'streetName':this.streetName\n }\n this.setSelectedAddress(suggestion);}\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n\n clickSuggestion(event: any, suggestion?: any) {\n this.isPrefillWithNoMatch = false;\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion', event, suggestion); }\n event?.preventDefault();\n if (suggestion) {\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n if (suggestion.string) {\n this.setSearchText(suggestion.string);\n }\n this.collapseDropdown = true;\n\n const notInList = suggestion['not-in-list'];\n const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n\n if (suggestion['not-in-list']) {\n suggestion = this.modifySelectedAddress(suggestion);\n if (this.showDebugMessageToConsole) { console.log('streetNumber::clickSuggestion - NOT-IN-LIST', event, suggestion); }\n }\n if (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true && !isNotInList ) {\n this.addressIsComplete = true;\n // this.notifyAddressIsValidated();\n }\n this.addressIsValidated = true;\n if (event) {\n this.clearSuggestions();\n }\n this.setSelectedAddress(suggestion);\n }\n }\n\n modifySelectedAddress(suggestion: object) {\n if (this.showDebugMessageToConsole) {\n console.log('street number - combine selectedAddress with not in list', suggestion, this.selectedAddress);\n }\n const combined = {...this.selectedAddress, ...suggestion};\n delete combined.latitude;\n delete combined.longitude;\n delete combined.mailboxId;\n delete combined.pdpId;\n delete combined.suffixId;\n delete combined.pdpId;\n delete combined.pdpId;\n combined.houseNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n return combined;\n }\n\n setSelectedAddress(suggestion: any) {\n // console.log('street number - emit suggestion', suggestion);\n const notInList = suggestion['not-in-list'];\n const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n this.addressIsComplete = (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true && !isNotInList) ? true : false;\n this.addressChanged.emit(suggestion);\n }\n\n /*\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::clearSelectedAddress', this.addressIsComplete);\n }\n */\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n\n notifyAddressIsValidated() {\n this.addressIsComplete = true;\n // console.log('streetNumber::notifyAddressIsValidated', this.addressIsComplete);\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n checkKeyUP(event)\n {\n switch (event.which) {\n \n case 8:\n \n if(this.searchText.length>0)\n {\n this.clearInputEventEmitter.emit('PARTIAL_CLEAR_STREET_NUMBER');\n }\n else\n {\n this.clearInputEventEmitter.emit('STREET_NUMBER');\n // this.clearInputEventEmitter.emit('BOX_NUMBER');\n // this.onClearStreetNumberInput(true);\n }\n break; \n\n default:\n this.clearTypeAhead();\n break;\n\n }\n \n }\n clearWidget() {\n if (this.showDebugMessageToConsole) { console.log('street number:: clearWidget'); }\n this.addressIsValidated = false;\n this.addressIsComplete = false;\n // console.log('streetNumber::clearWidget', this.addressIsComplete);\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n // this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText && this.searchText.length > 0;\n }\n\n onClearStreetNumberInput(focus: boolean, emit: boolean = true) {\n // console.warn('street number :: clearInput');\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.streetNumberSearchInput.nativeElement.focus();\n }\n // this.addressChanged.emit(null);\n if (emit) {\n this.clearInputEventEmitter.emit(/*'STREET_NUMBER'*/ InputNameType.STREET_NUMBER);\n // this.clearInputEventEmitter.emit(/*'BOX_NUMBER'*/ InputNameType.BOX_NUMBER);\n }\n }\n /*\n clearInput(focus?) {\n console.warn('street number :: clearInput');\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus) {\n this.streetNumberSearchInput.nativeElement.focus();\n }\n this.addressChanged.emit(null);\n }\n */\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n // this.messageChanged.emit(this.suggestionValidationMessage);\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.STREET_NUMBER);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('street number click'); }\n }\n\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #streetNumberSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n (keyup) = (checkKeyUP($event))\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"!streetName || streetName.trim().length === 0\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"streetNumberInputField\" \n [attr.title]=\"placeHolderText\" \n [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-streetNb-button\" *ngIf=\"mayShowClearButton()\" \n (click)=\"onClearStreetNumberInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-streetNb-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n <!-- <span>addressIsComplete: {{ addressIsComplete }}. </span>\n <span>addressIsValidated: {{ addressIsValidated }}. </span> -->\n <span *ngIf=\"addressIsComplete\" class=\"streetNbChekmark\"><span class=\"checkmark\"></span></span>\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" \n *ngIf=\"(suggestionLevel===SuggestionLevelType.StreetNumber || suggestionLevel===SuggestionLevelType.StreetAndBoxNumber) && suggestions && suggestions.length>0\">\n <div #streetNumberList [appVisibleSuggestion]=\"visibleSuggesionCount\" \n id=\"bpaac-streetnumber-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-streetNb-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option['not-in-list'] ? emptyResponseText : option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>","import { Component, OnInit, AfterViewChecked, OnChanges, OnDestroy, ViewChild, ElementRef, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from '../utils/prefilled-parameters';\nimport { ValidationMessageType } from '../enum/validation-message-type.enum';\nimport { AddressService } from '../services/adress.service';\nimport { LocaleService } from '../services/locale.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UnicodeService } from '../services/unicode.service';\nimport { DomHandler } from '../utils/domhandler';\nimport { ADDRESSLEVEL } from '../enum/address-level.enum';\nimport { QueryParameters } from '../model/query-parameters.model';\nimport { PrefillData } from '../utils/prefill-data';\nimport { SourceType } from '../enum/source-type.enum';\nimport { PrefillEvent } from '../utils/preflll.event';\nimport { InputNameType } from '../enum/input-name.enum';\nimport { SuggestionLevelType } from '../enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-box-number',\n templateUrl: './box-number.component.html',\n styleUrls: ['./box-number.component.scss']\n})\nexport class BoxNumberComponent implements OnInit, AfterViewChecked, OnChanges, OnDestroy {\n\n @ViewChild('boxNumberSearchInput', {static: false} ) boxNumberSearchInput: ElementRef;\n @ViewChild('boxNumberList', {static: false} ) boxNumberList: ElementRef;\n\n private subscription: Subscription;\n\n // 2020-06-15\n // @Input()\n // onFocusShowSuggestionsAfterPrefill = true;\n\n @Input() prefillData: PrefillData;\n @Input() showDebugMessageToConsole = false;\n\n @Input() labelResourceKey = 'common.label.boxNumber';\n @Input() maxSuggesionCount = 5;\n @Input() visibleSuggesionCount = 5;\n @Input() sortCriteria = '';\n @Input() baseUrl: string;\n @Input() addressParams: PrefilledParameters;\n @Input() postalCode: string;\n @Input() locality: string;\n @Input() streetName: string;\n @Input() streetNumber: string;\n @Input() selectedAddress;\n @Input() notInListAllowed: boolean;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n // console.log('set lang', val);\n this.localeService.changeLang(val);\n this.translateService.use(val).subscribe(\n (res: any) => {\n // console.log('set lang after subscribe', res);\n this.onChangedLanguage();\n // if (res !== undefined ) {\n // }\n }\n );\n }\n\n @Input() messageOption = 'Y';µ\n\n @Input()\n isReadonly=false;\n\n @Input()\n suggestionLevel: SuggestionLevelType;\n\n @Output() messageChanged: EventEmitter<{messageType: ValidationMessageType, translatedMessage: string}> = new EventEmitter();\n @Output() addressChanged: EventEmitter<any> = new EventEmitter();\n @Output() focusEvent: EventEmitter<any> = new EventEmitter();\n @Output() blurEvent: EventEmitter<any> = new EventEmitter();\n @Output() textChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() emptyResponseEvent: EventEmitter<any> = new EventEmitter();\n\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n\n @Output() prefillEventEmitter: EventEmitter<PrefillEvent> = new EventEmitter<PrefillEvent>();\n\n @Output()\n boxNumberChanged: EventEmitter<string> = new EventEmitter();\n @Output() numberOfExceptionsEmitter: EventEmitter<any> =new EventEmitter<any>();\n\n searchText: string;\n\n addressIsValidated: boolean;\n suggestionValidationMessage: string;\n suggestions: any;\n previousIndex: number;\n lastSearchValue: string;\n wordList: any;\n suggestionsWordList: any;\n bpTypeAhead: string;\n placeHolderText: string;\n skipNextBlur: boolean; // OnBlur is triggered when the user clicks suggestion/validator button\n errorCode: any;\n\n minLevel: number;\n selectedIndex: number;\n collapseDropdown: boolean;\n typeAheadWord: string;\n sequenceNumber: number;\n consumedNumber: number;\n selectionChanged: boolean;\n validationMessageCode = null;\n validationMessageOptions = null;\n emptyResponseText: string;\n emptyResponse: boolean;\n\n prefilling = false;\n isPrefillWithNoMatch = false;\n\n SuggestionLevelType=SuggestionLevelType;\n\n constructor(\n private addressService: AddressService,\n private localeService: LocaleService,\n private translateService: TranslateService,\n private unicodeService: UnicodeService,\n ) { }\n\n ngOnInit() {\n this.searchText = '';\n // instance properties\n this.addressIsValidated = false;\n this.suggestionValidationMessage = '';\n this.suggestions = [];\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.wordList = [];\n this.suggestionsWordList = [];\n this.bpTypeAhead = '';\n this.placeHolderText = '';\n this.skipNextBlur = false; // OnBlur is triggered when the user clicks suggestion/validator button\n this.errorCode = null;\n // scope properties\n this.selectedIndex = -1;\n // properties\n this.typeAheadWord = '';\n this.collapseDropdown = true;\n this.sequenceNumber = 1;\n this.consumedNumber = 1;\n // initialization\n this.setSearchText('');\n // this.setPlaceHolderText();\n this.setEmptyResponseText();\n this.emptyResponse = true;\n this.onChangedLanguage();\n }\n\n ngAfterViewChecked() {\n if (this.selectionChanged) {\n const overlay: HTMLDivElement = this.boxNumberList.nativeElement;\n setTimeout(() => {\n const listItem = DomHandler.findSingle(overlay, 'li.active');\n if (listItem) {\n DomHandler.scrollInView(overlay, listItem);\n }\n }, 1);\n this.selectionChanged = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes) {\n if (changes.hasOwnProperty('prefillData') && !changes.prefillData.firstChange) {\n this.prefilling = true;\n this.searchText = this.loadParams(changes.prefillData.currentValue);\n if (this.searchText !== '' && this.minLevel === ADDRESSLEVEL.BOX_NUMBER) {\n // this.onInputChange('prefilled');\n // this.boxNumberSearchInput.nativeElement.focus();\n this.collapseDropdown = true;\n this.prefillData.prefillBoxNumber\n = this.transformBoxNumberInLowercaseAndWithoutDiacritics(this.prefillData.parameters.boxNumber);\n this.onInputChange(/*'prefilled'*/ SourceType.SOURCE_PREFILLED );\n }\n }\n\n if (changes.hasOwnProperty('streetNumber') && !changes.streetNumber.firstChange && !changes.hasOwnProperty('prefillData')) {\n\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.clearWidget();\n if(this.suggestionLevel !== SuggestionLevelType.None)\n {\n this.valueChanged();\n }\n }\n\n /*\n if (changes.hasOwnProperty('inputLang') / *&& !changes.addressParams.firstChange* /) {\n const lang = changes.inputLang.currentValue;\n console.log('on changes - inputLang', lang);\n if (changes.inputLang.currentValue !== undefined) {\n this.translateService.setDefaultLang(lang);\n this.translateService.use(lang);\n this.localeService.changeLang(lang);\n this.onChangedLanguage();\n }\n }\n */\n }\n }\n\n transformBoxNumberInLowercaseAndWithoutDiacritics(boxNumber: string): string {\n let result: string = null;\n if (boxNumber !== null && boxNumber !== undefined )\n {\n result = this.unicodeService.removeDiacritics(boxNumber);\n result = result.toLowerCase();\n }\n // console.log('Transformed street number:', result);\n return result;\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n\n onChangedLanguage() {\n // this.placeHolderText = this.translateService.instant('boxNumber.placeholder.input-placeholder');\n // console.log('place holder', this.placeHolderText);\n this.translateService.get('boxNumber.placeholder.input-placeholder')\n .subscribe((res: string) => {\n // console.log('new placeholder', res);\n // => 'hello world'\n this.placeHolderText = res;\n this.setEmptyResponseText();\n });\n }\n\n setEmptyResponseText() {\n // this.emptyResponseText = this.translationService.translate('not-in-list');\n this.emptyResponseText = this.translateService.instant('boxNumber.message.not-in-list');\n }\n\n onClearInputEvent(event, focus) {\n this.clearInput(focus);\n }\n\n onBlur(ev) {\n if (this.isBrowserIE() && this.isDropdownClicked(ev)) {\n this.boxNumberSearchInput.nativeElement.focus();\n return;\n }\n if (this.skipNextBlur) {\n this.skipNextBlur = false;\n } else {\n this.collapseDropdown = true;\n this.blurEvent.emit(ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n\n isBrowserIE(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n\n isDropdownClicked(ev) {\n const target = ev.explicitOriginalTarget || document.activeElement;\n return (target.id === 'bpaac-box-dropdown');\n }\n\n onFocus() {\n this.collapseDropdown = false;\n // this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n // ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n // this.prefilling = false;\n this.skipNextBlur = false;\n this.focusEvent.emit(ADDRESSLEVEL.BOX_NUMBER);\n }\n\n valueChanged() {\n this.textChangeEvent.emit(this.searchText);\n }\n\n mayShowDropdown() {\n return this.suggestions.length > 0 && !this.collapseDropdown;\n }\n\n buildInputWordList() {\n this.wordList = this.searchText.split(/[\\s, ]+/);\n }\n\n mayAddTypeAhead(source?: SourceType) {\n if (source === SourceType.SOURCE_PREFILLED ) { return false; }\n if (this.searchText.length === 0) {\n return false;\n }\n return (/[^\\s, \\\\\\/]$/).test(this.searchText);\n }\n\n buildTypeAhead(source?: SourceType) {\n if (!this.mayAddTypeAhead(source)) {\n return;\n }\n const searchTextWords = this.searchText.split(/[\\s, ]+/);\n const lastWord = searchTextWords[searchTextWords.length - 1];\n\n if (this.suggestions.some(function(sug) {\n if (!sug || !sug.hasOwnProperty('string')) {\n return false;\n }\n return sug.string.split(/[\\s-]+/).some(function(word) {\n if (this.stringStartsWithIgnoreDiacritics(word, lastWord)) {\n this.typeAheadWord = word;\n return true;\n }\n }.bind(this));\n }.bind(this))) {\n const appendix = this.typeAheadWord.slice(lastWord.length, this.typeAheadWord.length).toLowerCase();\n this.bpTypeAhead = this.searchText + appendix;\n }\n }\n\n stringStartsWithIgnoreDiacritics(value, prefix) {\n value = (value !== null && value !== undefined) ? value.toLowerCase() : value;\n prefix = (prefix !== null && prefix !== undefined) ? prefix.toLowerCase() : prefix;\n return this.unicodeService.removeDiacritics(value).slice(0, prefix.length)\n .toLowerCase().indexOf(this.unicodeService.removeDiacritics(prefix)) !== -1;\n }\n\n getTopSuggestions(source?: SourceType) {\n this.sequenceNumber += 1;\n const param = this.generateParameters();\n if (this.showDebugMessageToConsole) { console.log('BOX-NUMBER calling service params', param); }\n if (this.searchText) {\n this.subscription = this.addressService.getBox(this.baseUrl, this.locality, this.postalCode, param)\n .subscribe(\n response => {\n this.handleGetBoxResponse(response, source);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n this.isPrefillWithNoMatch = this.prefillData.prefillBoxNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n this.isPrefillWithNoMatch = false;\n }\n }\n ,\n () => this.handleGetBoxError(source)\n );\n }\n }\n\n getTextColor(): string {\n return ( this.isPrefillWithNoMatch === true ) ? 'orangered' : '';\n }\n\n prefillAnalyzeData()\n {\n if (this.prefillData.prefillBoxNumberPerfectMatchFound === true)\n {\n this.collapseDropdown = true;\n }\n this.prefillEventEmitter.emit(new PrefillEvent(ADDRESSLEVEL.BOX_NUMBER, this.prefillData) );\n }\n\n loadParams(prefillData: PrefillData) {\n let concatStr = '';\n if (prefillData !== null && prefillData.parameters !== null)\n {\n if (prefillData.parameters.hasOwnProperty('minLevel')) {\n this.minLevel = prefillData.parameters.minLevel;\n }\n if (prefillData.parameters.hasOwnProperty('postalCode') && this.isString(prefillData.parameters.postalCode)) {\n this.postalCode = prefillData.parameters.postalCode;\n }\n if (prefillData.parameters.hasOwnProperty('municipalityName') && this.isString(prefillData.parameters.municipalityName)) {\n this.locality = prefillData.parameters.municipalityName;\n }\n if (prefillData.parameters.hasOwnProperty('streetName') && this.isString(prefillData.parameters.streetName)) {\n this.streetName = prefillData.parameters.streetName;\n }\n if (prefillData.parameters.hasOwnProperty('streetNumber') && this.isString(prefillData.parameters.streetNumber)) {\n this.streetNumber = prefillData.parameters.streetNumber;\n }\n if (prefillData.parameters.hasOwnProperty('boxNumber')\n && this.isString(prefillData.parameters.boxNumber) && this.isParamsComplete()) {\n concatStr = prefillData.parameters.boxNumber;\n }\n }\n return concatStr;\n }\n\n isString(val): boolean {\n if (val === null || val === undefined) {\n return false;\n }\n return val.constructor === String;\n }\n\n isValid(val) {\n return this.isString(val) && val !== '';\n }\n\n isParamsComplete(): boolean {\n if(!this.validatedByBackend){\n return (this.isValid(this.postalCode) || this.isValid(this.locality)) && this.isValid(this.streetName) && this.isValid(this.streetNumber);\n }else if(this.suggestionLevel === SuggestionLevelType.None && this.prefillData){\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName) && this.isValid(this.streetNumber) && this.prefillData.parameters.boxNumber!==''; \n }else{\n return this.isValid(this.postalCode) && this.isValid(this.locality) && this.isValid(this.streetName) && this.isValid(this.streetNumber);\n }\n \n }\n\n generateParameters(): QueryParameters {\n // tslint:disable\n const param = new QueryParameters({\n id: this.sequenceNumber,\n q: this.searchText,\n postalCode: this.postalCode,\n locality: this.locality,\n street: this.streetName,\n streetNumber: this.streetNumber,\n maxNumberOfSuggestions: this.maxSuggesionCount\n });\n\n if (this.sortCriteria === 'B') {\n param.sortByBox(true);\n }\n return param;\n }\n\n handleGetBoxResponse(data: any, source?: SourceType) {\n if (data && data.response && data.response.sequenceNumber && data.response.sequenceNumber >= this.consumedNumber &&\n data.response.topSuggestions) {\n this.consumedNumber = data.response.sequenceNumber;\n this.clearSuggestions();\n this.parseTopSuggestions(data.response.topSuggestions, source);\n this.buildTypeAhead(source);\n this.clearConnectionErrorMessage();\n this.buildInputWordList();\n }\n this.collapseDropdown = (this.prefilling === true && this.prefillData !== null)\n ? !this.prefillData.parameters.onFocusShowSuggestionsAfterPrefill : false;\n }\n\n handleGetBoxError(source?: SourceType) {\n if (this.allowNoValidation && this.validatedByBackend) {\n this.numberOfExceptions += 1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n }\n if(this.allowNoValidation && this.validatedByBackend && source === SourceType.SOURCE_PREFILLED){\n\n this.numberOfExceptions+=1;\n this.numberOfExceptionsEmitter.emit(this.numberOfExceptions);\n this.setConnectionErrorMessage();\n this.onInputChange(source);\n }\n if(this.allowNoValidation && !this.validatedByBackend && source === SourceType.SOURCE_PREFILLED )\n {\n this.onInputChange(source);\n }\n if(!this.allowNoValidation && this.validatedByBackend)\n {\n this.setConnectionErrorMessage();\n }\n }\n\n setConnectionErrorMessage() {\n this.errorCode = 'service-unavailable';\n // this.setValidationMessage(this.errorCode);\n this.emitTranslatedValidationMessage(ValidationMessageType.Service_Unavailable);\n }\n\n clearConnectionErrorMessage() {\n if (this.errorCode) {\n const res = this.translateService.instant(this.errorCode);\n if (this.suggestionValidationMessage === res ) {\n this.clearSuggestionValidationMessage();\n }\n this.errorCode = null;\n }\n }\n\n parseTopSuggestions(topSuggestions, source?: SourceType) {\n if (topSuggestions.constructor === Array) {\n // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));\n let perfectMatchFound=false;\n for (const sug of topSuggestions)\n {\n console.warn('boxnumber::parsing suggestion:', sug);\n if(this.parseSingleSuggestion(sug, source) === true )\n {\n perfectMatchFound=true;\n }\n }\n\n if(!source)\n {\n if ((topSuggestions.length === 0 || this.emptyResponse) && this.notInListAllowed) {\n this.suggestions.push({string: this.searchText, 'not-in-list': true});\n }\n\n if(this.suggestionLevel === SuggestionLevelType.None || this.suggestionLevel === SuggestionLevelType.StreetNumber)\n {\n if (this.showDebugMessageToConsole) console.warn('box number:: no match found - current address: ', this.selectedAddress);\n if( ! perfectMatchFound)\n {\n const fakeSug = {...this.selectedAddress};\n fakeSug.boxNumber = this.searchText;\n fakeSug.string=this.searchText;\n fakeSug.isComplete=false;\n //this.clickSuggestion(null, fakeSug); // do not do this\n // This is better !\n this.addressChanged.emit(fakeSug);\n }\n }\n }\n else\n {\n // If prefilling, then check if no match for a non-empty boxNumber\n // If this is the case, simulate the selection of the 'not-in-list' suggestion\n if(this.prefilling && this.notInListAllowed\n && this.prefillData.prefillBoxNumberPerfectMatchFound === false\n && this.prefillData.prefillBoxNumber !== null\n && this.prefillData.prefillBoxNumber !== undefined\n && this.prefillData.prefillBoxNumber.length > 0)\n {\n // const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const suggestion = this.prefillBuildNotInListSuggestion();\n if (this.showDebugMessageToConsole) { console.log('BOX NUMBER - PREFILL NOT IN LIST SUGGESTION:', suggestion); }\n this.prefillCheckForPerfectMatch(suggestion);\n }\n\n }\n } else {\n this.parseSingleSuggestion(topSuggestions, source);\n }\n }\n\n prefillBuildNotInListSuggestion(): any {\n const notInListSuggestion = {string: this.searchText, 'not-in-list': true};\n const streetNumberSuggestion = this.prefillData.prefillStreetNumberPerfectMatchSuggestion;\n const combined = {...streetNumberSuggestion.address, ...notInListSuggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n combined.boxNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n streetNumberSuggestion.address = combined;\n return streetNumberSuggestion;\n }\n\n parseSingleSuggestion(suggestion: any, source: SourceType): boolean {\n let suggestionToAdd: any;\n let isPerfectMatch=false;\n\n if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {\n suggestionToAdd = suggestion.french;\n } else if (this.localeService.isLocaleDutch() && suggestion.hasOwnProperty('dutch')) {\n suggestionToAdd = suggestion.dutch;\n } else if (this.localeService.isLocaleGerman() && suggestion.hasOwnProperty('german')) {\n suggestionToAdd = suggestion.german;\n } else if (suggestion.hasOwnProperty('address')) {\n suggestionToAdd = suggestion.address;\n }\n if (suggestionToAdd) {\n if (suggestion.messages) {\n suggestionToAdd.messages = suggestion.messages;\n }\n if (suggestionToAdd.boxNumber === this.searchText) {\n this.emptyResponse = false;\n }\n this.suggestions.push(suggestionToAdd);\n if (source === SourceType.SOURCE_PREFILLED)\n {\n suggestion.address = suggestionToAdd;\n isPerfectMatch=this.prefillCheckForPerfectMatch(suggestion);\n }\n\n if (this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber)\n {\n suggestion.address = suggestionToAdd;\n isPerfectMatch=this.checkForPerfectMatch(suggestion);\n if(! isPerfectMatch)\n {\n // seems nothing to do?\n // No need to notify for a incomplete address\n }\n }\n }\n return isPerfectMatch;\n }\n\n checkForPerfectMatch(suggestion): boolean\n {\n //if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('box number - checking suggestion for perfect match', suggestion, this.searchText);\n }\n const sugAddress = suggestion.address;\n const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);\n\n if (suggestionBoxNumber === ('' + this.searchText) )\n {\n //this.prefillData.prefillBoxNumberPerfectMatchFound = true;ç\n //this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.boxNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {\n this.clickSuggestion(null, sugAddress);\n // this.addressIsComplete = true;\n if (this.showDebugMessageToConsole) {\n console.log('ADDRESS COMPLETE ON BOX NUMBER !');\n }\n return true;\n }\n }\n }\n\n return false;\n\n }\n\n prefillCheckForPerfectMatch(suggestion): boolean\n {\n //if ( !this.addressIsComplete )\n {\n if (this.showDebugMessageToConsole) {\n console.log('box number - PREFILL checking suggestion for perfect match', this.prefillData, suggestion);\n }\n const sugAddress = suggestion.address;\n const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);\n if (this.showDebugMessageToConsole) {\n console.log('comparing box numbers', suggestionBoxNumber, this.prefillData.prefillBoxNumber);\n }\n if (suggestionBoxNumber === ('' + this.prefillData.prefillBoxNumber) )\n {\n this.prefillData.prefillBoxNumberPerfectMatchFound = true;\n this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion;\n this.searchText = sugAddress.boxNumber;\n if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {\n this.clickSuggestion(null, sugAddress);\n // this.addressIsComplete = true;\n if (this.showDebugMessageToConsole) {\n console.log('ADDRESS COMPLETE ON BOX NUMBER !');\n }\n return true;\n }\n }\n }\n /* else\n {\n if (this.showDebugMessageToConsole) {\n console.log('Address complete, skipping suggestion check', suggestion);\n }\n } */\n\n return false;\n }\n\n onInputChange_new(source?: SourceType) {\n this.collapseDropdown = false;\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n else\n {\n if(!this.validatedByBackend){\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }else{\n this.getTopSuggestions(source);\n }\n }\n }\n this.buildInputWordList();\n }\n\n onInputChange(source?: SourceType) {\n this.collapseDropdown = false;\n this.emptyResponse = true;\n this.resetArrowSelectedIndex();\n if (!source) {\n this.prefilling = false;\n this.valueChanged();\n }\n this.clearSuggestionValidationMessage();\n if (this.searchText === '') {\n this.sequenceNumber += 1;\n this.consumedNumber = this.sequenceNumber;\n this.clearSuggestions();\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n } else {\n if(this.suggestionLevel===SuggestionLevelType.None || this.suggestionLevel===SuggestionLevelType.StreetNumber)\n {\n console.log('do not use suggestions for box number');\n this.boxNumberChanged.emit(this.searchText);\n }\n else if(!this.validatedByBackend){\n if (source === SourceType.SOURCE_PREFILLED) {\n this.prefillData.prefillBoxNumberPerfectMatchFound = true;\n\n let suggestion ={\n 'address': {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }}\n this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion\n this.isPrefillWithNoMatch = this.prefillData.prefillBoxNumberPerfectMatchFound === true ? false : true;\n this.prefillAnalyzeData();\n }\n else\n {\n let suggestion = {\n 'string': this.searchText.toUpperCase(),\n 'municipalityName': this.locality,\n 'localityName': this.locality,\n 'postalCode': this.postalCode,\n 'searchBarString': this.searchText.toUpperCase(),\n 'streetName': this.streetName,\n 'houseNumber':this.streetNumber,\n 'boxNumber':this.searchText.toUpperCase()\n }\n this.setSelectedAddress(suggestion);\n }\n }else{\n this.getTopSuggestions(source);\n }\n }\n this.buildInputWordList();\n }\n\n\n clickSuggestion(event: any, suggestion?: any) {\n this.isPrefillWithNoMatch = false;\n event?.preventDefault();\n if (suggestion) {\n this.clearTypeAhead();\n this.resetArrowSelectedIndex();\n if (suggestion.string) {\n this.setSearchText(suggestion.string);\n }\n this.collapseDropdown = true;\n // if (suggestion.hasOwnProperty('isComplete')) {\n // this.showAddressIsValidated();\n // }\n if (suggestion['not-in-list']) {\n suggestion = this.modifySelectedAddress(suggestion);\n }\n this.addressIsValidated = true;\n suggestion.isComplete = true;\n this.setSelectedAddress(suggestion);\n }\n }\n\n modifySelectedAddress(suggestion: object) {\n const combined = {...this.selectedAddress, ...suggestion};\n delete combined.mailBoxid;\n delete combined.suffixId;\n combined.boxNumber = combined.string;\n combined.searchBarString = combined.string;\n combined.isComplete = true;\n return combined;\n }\n\n setSelectedAddress(suggestion: any) {\n // console.log('box number::setSelectedAddress', suggestion);\n this.addressIsValidated = (suggestion.hasOwnProperty('isComplete') && suggestion.isComplete === true) ? true : false;\n this.addressChanged.emit(suggestion);\n }\n\n clearSelectedAddress() {\n this.addressChanged.emit(null);\n this.addressIsValidated = false;\n }\n\n /*\n setValidationMessage(translationCode, options?, retranslateOptions?) {\n this.validationMessageOptions = options;\n if (retranslateOptions && this.validationMessageOptions && Array.isArray(this.validationMessageOptions['untranslated-sprintf']) &&\n this.validationMessageOptions.sprintf) {\n const translatedElements = [];\n this.validationMessageOptions['untranslated-sprintf'].forEach(function(element) {\n translatedElements.push(this.translationService.translate(element));\n }.bind(this)\n );\n this.validationMessageOptions.sprintf = translatedElements;\n }\n this.validationMessageCode = translationCode;\n // emit translation key to wrapper component for customized translations\n if (options) {\n this.suggestionValidationMessage = this.translationService.translate(this.validationMessageCode, this.validationMessageOptions);\n this.messageChanged.emit(this.suggestionValidationMessage);\n } else {\n this.messageChanged.emit(this.validationMessageCode);\n }\n }\n */\n\n emitTranslatedValidationMessage(validationMessageType: ValidationMessageType, options?: string[]) {\n // Momently, options are NOT used; so data type of these options will be reviewed once needed.\n if (validationMessageType === null || validationMessageType === undefined ) {\n console.warn('Unable to emit validation message - message key is invalid!', validationMessageType);\n return;\n }\n\n switch (validationMessageType) {\n\n case ValidationMessageType.Address_Not_Found:\n case ValidationMessageType.Address_Validated:\n case ValidationMessageType.Service_Unavailable: {\n const message = this.translateService.instant(validationMessageType);\n // this.messageChanged.emit(message);\n this.messageChanged.emit({messageType: validationMessageType, translatedMessage: message});\n }\n // tslint:disable-next-line:align\n break;\n\n default: {\n console.error('Unable to emit validation message - message key NOT supported!', validationMessageType);\n }\n // tslint:disable-next-line:align\n break;\n }\n\n }\n showAddressIsValidated() {\n // this.setValidationMessage('address-validated');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Validated);\n }\n\n checkKeyDown(event) {\n switch (event.which) {\n // down key, increment selectedIndex\n case 40:\n event.preventDefault();\n this.moveArrowSelectedIndexDown();\n break;\n\n // up key, decrement selectedIndex\n case 38:\n event.preventDefault();\n this.moveArrowSelectedIndexUp();\n break;\n // right arrow key\n case 39:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n if (this.typeAheadWord && this.typeAheadIsShown()) {\n this.setSearchText(this.bpTypeAhead);\n this.typeAheadWord = '';\n }\n }\n break;\n // tab key\n case 9:\n if (!this.addressIsValidated && !event.shiftKey) {\n event.preventDefault();\n this.selectFirstInListOfSuggesions();\n }\n break;\n\n case 46:\n if (event.ctrlKey) {\n this.clearWidget();\n }\n break;\n // enter pressed\n case 13:\n event.preventDefault();\n if (this.cursorIsOnSuggestionList()) {\n this.clickSuggestion(event, this.suggestions[this.selectedIndex]);\n } else {\n }\n break;\n\n\n default:\n this.clearTypeAhead();\n break;\n\n }\n }\n checkKeyUP(event)\n {\n switch (event.which) {\n \n case 8:\n \n if(this.searchText.length>0)\n {\n this.clearInputEventEmitter.emit('PARTIAL_CLEAR_BOX_NUMBER');\n }\n else\n {\n this.clearInputEventEmitter.emit('BOX_NUMBER');\n }\n break; \n\n default:\n this.clearTypeAhead();\n break;\n\n }\n \n }\n clearWidget() {\n this.addressIsValidated = false;\n this.clearSearchText();\n this.clearSuggestions();\n this.clearTypeAhead();\n this.prefillData = null;\n // this.prefilling = false;\n }\n\n clearSearchText() {\n this.searchText = '';\n }\n\n typeAheadIsShown() {\n return this.bpTypeAhead && this.bpTypeAhead.length > 0;\n }\n\n resetArrowSelectedIndex() {\n this.selectedIndex = -1;\n }\n\n moveArrowSelectedIndexDown() {\n if (this.selectedIndex + 1 !== this.suggestions.length) {\n this.selectedIndex++;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n }\n\n moveArrowSelectedIndexUp() {\n if (this.selectedIndex - 1 !== -2) {\n this.selectedIndex--;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex + 1);\n }\n }\n\n cursorIsOnSuggestionList() {\n return this.selectedIndex >= 0;\n }\n\n setSearchTextBasedOnArrowSelection(newVal, oldVal) {\n if (newVal === undefined || this.suggestions.length <= 0) {\n return;\n }\n if (newVal !== -1) {\n if (oldVal === -1) {\n this.lastSearchValue = this.searchText;\n }\n this.setSearchText(this.suggestions[this.selectedIndex].string);\n this.clearTypeAhead();\n } else {\n this.setSearchText(this.lastSearchValue);\n }\n }\n\n mayShowClearButton() {\n return this.searchText.length > 0;\n }\n\n clearInput(focus?, emit: boolean = true) {\n this.clearWidget();\n this.resetArrowSelectedIndex();\n this.previousIndex = -1;\n this.lastSearchValue = '';\n this.clearSuggestionValidationMessage();\n this.valueChanged();\n this.clearConnectionErrorMessage();\n if (focus === true) {\n this.boxNumberSearchInput.nativeElement.focus();\n }\n // this.addressChanged.emit(null);\n if(emit) {\n this.clearInputEventEmitter.emit(/*'BOX_NUMBER'*/ InputNameType.BOX_NUMBER);\n }\n }\n\n clearSuggestions() {\n this.wordList = [];\n this.suggestions = [];\n this.suggestionsWordList = [];\n }\n\n clearTypeAhead() {\n this.bpTypeAhead = '';\n }\n\n clearSuggestionValidationMessage() {\n this.suggestionValidationMessage = '';\n this.addressIsValidated = false;\n this.messageChanged.emit({messageType: null, translatedMessage: this.suggestionValidationMessage});\n this.validationMessageOptions = null;\n this.validationMessageCode = null;\n }\n\n setSearchText(value) {\n this.searchText = value;\n }\n\n selectFirstInListOfSuggesions() {\n this.selectedIndex = 0;\n this.changeSelection();\n this.setSearchTextBasedOnArrowSelection(this.selectedIndex, this.selectedIndex - 1);\n }\n\n changeSelection() {\n if (this.suggestions.length > 0) {\n this.selectionChanged = true;\n }\n }\n\n suggestionMouseLeave() {\n this.selectedIndex = -1;\n }\n\n showAddressNotFoundMessage() {\n // this.setValidationMessage('address-not-found');\n this.emitTranslatedValidationMessage(ValidationMessageType.Address_Not_Found);\n }\n\n isDisabled() {\n return (this.locality === '' || this.postalCode === '' || this.minLevel > ADDRESSLEVEL.BOX_NUMBER);\n }\n\n onInputClick() {\n if (this.showDebugMessageToConsole) { console.log('box number click'); }\n }\n}\n","<span *ngIf=\"labelResourceKey\">{{ labelResourceKey | translate}}</span>\n<div class=\"bpaac-dropdown\">\n <div class=\"bpaac-search-bar\">\n <div class=\"bpaac-input-width\">\n <!-- [disabled]=\"isDisabled()\" -->\n <input type=\"text\" #boxNumberSearchInput class=\"bpaac-input\" \n [readonly]=\"isReadonly\"\n (keyup) = (checkKeyUP($event))\n [style.background-color]=\"!isParamsComplete() ? 'lightgrey' : ''\" \n [style.color]=\" getTextColor() \"\n [disabled]=\"!streetNumber || streetNumber.trim().length === 0\" (keydown)=\"checkKeyDown($event)\" \n (input)=\"onInputChange()\" (click)=\"onInputClick()\"\n [(ngModel)]=\"searchText\" id=\"boxNumberInputField\" [attr.title]=\"placeHolderText\" [attr.placeholder]=\"placeHolderText\" autocomplete=\"off\"\n (blur)=\"onBlur($event)\" (focus)=\"onFocus()\" />\n <div id=\"bpaac-clear-boxNb-button\" *ngIf=\"mayShowClearButton()\" (click)=\"clearInput(true)\" class=\"bpaac-clear\">\n </div>\n </div>\n <!--<div ng-transclude></div>-->\n <input id=\"bpaac-boxNb-typeahead\" type=\"text\" disabled autocomplete=\"off\" [(ngModel)]=\"bpTypeAhead\" />\n <span *ngIf=\"addressIsValidated\" class=\"boxNbChekmark\"><span class=\"checkmark\"></span></span>\n </div>\n <div [hidden]=\"collapseDropdown\" class=\"bpaac-dropdown-menu-container\" \n *ngIf=\"suggestionLevel===SuggestionLevelType.StreetAndBoxNumber && suggestions && suggestions.length>0\">\n <div #boxNumberList [appVisibleSuggestion]=\"visibleSuggesionCount\" id=\"bpaac-box-dropdown\" class=\"bpaac-dropdown-menu\">\n <ul role=\"listbox\" id=\"bpaac-boxNb-suggestionsList\" class=\"list-unstyled\">\n <li role=\"option\" *ngFor=\"let option of suggestions; let idx = index\" [ngClass]=\"{'active':(selectedIndex==idx)}\" \n (mousedown)=\"clickSuggestion($event, option)\"\n (mouseenter)=\"selectedIndex=idx\" (mouseleave)=\"selectedIndex=-1\">\n <span *ngIf=\"option\" [innerHtml]=\"option['not-in-list'] ? emptyResponseText : option.string | highlightSuggestion : wordList\"></span>\n </li>\n </ul>\n </div>\n </div>\n</div>\n","import { PrefilledParameters } from './prefilled-parameters';\r\n\r\nexport class PrefillData // extends PrefilledParameters\r\n{\r\n // parameters: PrefilledParameters;\r\n\r\n prefillMunicipalityName: string = null;\r\n prefillMunicipalityPerfectMatchFound = false;\r\n prefillMunicipalityPerfectMatchSuggestion: any = null;\r\n // This is a working field, do not document\r\n prefillMunicipalityAndLocalityPerfectMatchFound = false;\r\n\r\n prefillStreetName: string = null;\r\n prefillStreetPerfectMatchFound = false;\r\n prefillStreetPerfectMatchSuggestion: any = null;\r\n\r\n prefillStreetNumber: string = null;\r\n prefillStreetNumberPerfectMatchFound = false;\r\n prefillStreetNumberPerfectMatchSuggestion: any = null;\r\n\r\n prefillBoxNumber: string = null;\r\n prefillBoxNumberPerfectMatchFound = false;\r\n prefillBoxNumberPerfectMatchSuggestion: any = null;\r\n\r\n ts: Date = null;\r\n\r\n constructor(\r\n public parameters: PrefilledParameters\r\n ){\r\n this.ts = new Date();\r\n }\r\n}\r\n","export const LIB_VERSION = \"1.1.5\"","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Nis9Service {\r\n\r\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\r\n private nis9ServiceURL='';\r\n \r\n constructor(private httpClient: HttpClient) { }\r\n \r\n setNis9ServiceURL(nis9ServiceURL: string) {\r\n this.nis9ServiceURL=nis9ServiceURL;\r\n }\r\n\r\n determineNis9Data(longitude, latitude): Observable<any>\r\n {\r\n const apiUrl=`https://bgs.bpost.be/set-selection-circle?lng=${longitude}&lat=${latitude}&radius=0.001`;\r\n return this.httpClient.get<any>( apiUrl );\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, ViewChild, SimpleChanges, OnChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PrefilledParameters } from './utils/prefilled-parameters';\nimport { ValidationMessageOptionType } from './enum/validation-message-option-type.enum';\nimport { ValidationMessageType } from './enum/validation-message-type.enum';\nimport { LocalityComponent } from './locality/locality.component';\nimport { StreetComponent } from './street/street.component';\nimport { StreetNumberComponent } from './street-number/street-number.component';\nimport { BoxNumberComponent } from './box-number/box-number.component';\nimport { ADDRESSLEVEL } from './enum';\nimport { PrefillData } from './utils/prefill-data';\nimport { PrefillEvent } from './utils/preflll.event';\nimport { InputNameType } from './enum/input-name.enum';\nimport { HttpService } from './services/http.service';\nimport { Nis9Service } from './services/nis9.service';\nimport { LIB_VERSION } from './utils/constants';\nimport { SuggestionLevelType } from './enum/suggestion-level-type.enum';\n\n@Component({\n selector: 'bp-lib-address-autocomplete-by-component',\n templateUrl: './lib-address-autocomplete-by-component.component.html',\n styleUrls: [ './lib-address-autocomplete-by-component.component.scss']\n})\nexport class LibAddressAutocompleteByComponentComponent implements OnInit, OnDestroy, OnChanges {\n\n @ViewChild(LocalityComponent, {static: false} ) autocompleteLocality;\n @ViewChild(StreetComponent, {static: false} ) autocompleteStreet;\n @ViewChild(StreetNumberComponent, {static: false} ) autocompleteStreetNb;\n @ViewChild(BoxNumberComponent, {static: false} ) autocompleteBoxNb;\n\n selectedLanguage: string = null;\n private subscription: Subscription;\n\n private baseUrl = \"https://api.mailops.bpost.cloud/roa-info/externalMailingAddressProofingRest/autocomplete/\";\n private defaultApiKey='';\n\n usedLocalityUrl = this.baseUrl + 'locality';\n usedStreetUrl = this.baseUrl + 'street';\n usedStreetNumberUrl = this.baseUrl + 'streetNumber';\n usedBoxNumberUrl = this.baseUrl + 'boxNumber';\n\n // @ts-ignore\n @Input() set inputLang(val: string) {\n this.setLanguage(val);\n }\n\n // @ts-ignore\n @Input() set clearInput(focus: {setFocus: boolean, timestamp: Date}) {\n this.onClearInput(focus);\n }\n\n // @ts-ignore\n @Input() set validationMessageOption(option: {validationType: ValidationMessageOptionType, timestamp: Date}) {\n this.setValidationMessageOptionFromInput(option);\n }\n\n @Input()\n defaultLang: string;\n\n @Input() showDebugMessageToConsole = false;\n @Input() minLevel: number;\n @Input() notInListAllowed = true;\n @Input() addressParams: PrefilledParameters;\n @Input() messageOption = 'Y';\n\n // LOCALITY\n @Input() localityUrl = this.baseUrl + 'locality';\n @Input() maxSuggestionLocality = 5;\n @Input() visibleSuggestionLocalityCount = 5;\n @Input() sortCriteriaLocality: string;\n postalCodeLocality: string;\n // localityParams: PrefilledParameters;\n localityPrefillData: PrefillData = null;\n\n // STREET\n @Input() streetUrl = this.baseUrl + 'street';\n @Input() maxSuggestionStreet = 5;\n @Input() visibleSuggestionStreetCount = 5;\n @Input() sortCriteriaStreet: string;\n // streetParams: PrefilledParameters;\n streetPrefillData: PrefillData = null;\n\n // STREET NUMBER\n // tslint:disable-next-line:max-line-length\n @Input() streetNumberUrl = this.baseUrl + 'streetNumber';\n @Input() maxSuggestionStreetNb = 5;\n @Input() visibleSuggestionStreetNbCount = 5;\n @Input() sortCriteriaStreetNb: string;\n // streetNumberParams: PrefilledParameters;\n streetNumberPrefillData: PrefillData = null;\n\n // BOX NUMBER\n @Input() boxNumberUrl = this.baseUrl + 'boxNumber';\n @Input() maxSuggestionBoxNb = 5;\n @Input() visibleSuggestionBoxNbCount = 5;\n @Input() sortCriteriaBoxNb: string;\n @Input() allowNoValidation: boolean;\n @Input() validatedByBackend: boolean;\n @Input() numberOfExceptions: number;\n // boxParams: PrefilledParameters;\n boxNumberPrefillData: PrefillData = null;\n\n @Input() suggestionLevel: SuggestionLevelType = SuggestionLevelType.StreetAndBoxNumber;\n\n boxNumber: string;\n completeAddress: string;\n emittedAddress: any = null;\n locality: string;\n postalCode: string;\n selectedAddress: any;\n street: string;\n streetAddress: any;\n streetNameInput: string;\n streetNumber: string;\n streetNumberAddress: any;\n streetNumberInput: string;\n validationMessage: {messageType: ValidationMessageType, translatedMessage: string} = {messageType: null, translatedMessage: ''};\n validationMessageOptionType: ValidationMessageOptionType;\n\n\n @Output() addressCompleteEventEmitter: EventEmitter<any> = new EventEmitter();\n @Output() validationMessageEventEmitter: EventEmitter<any> = new EventEmitter();\n @Output() clearInputEventEmitter: EventEmitter<string> = new EventEmitter();\n @Output() validatedByBackendEventEmitter: EventEmitter<boolean> = new EventEmitter();\n @Output() numberOfExceptionsEventEmitter: EventEmitter<number> = new EventEmitter();\n\n\n prefillData: PrefillData;\n processingPrefillData = false;\n\n\n // Pass the API key as a property of the library !\n @Input()\n apiKey=this.defaultApiKey;\n\n\n // set the widget as readonly and add NIS9 query parameter\n @Input()\n isReadonly=false;\n\n @Input()\n nis9InResponse=false;\n\n // https://bgs.bpost.be/set-selection-circle?lng=4.360537572541948&lat=50.84063582806037&radius=0.001\n @Input()\n nis9ServiceURL='';\n\n isComponentReady = false;\n\n constructor(\n private nis9Service: Nis9Service,\n private httpService: HttpService\n ) { }\n\n ngOnInit(): void\n {\n console.info('lib version is:', LIB_VERSION);\n //console.warn('lib - ngOnInit');\n\n this.nis9Service.setNis9ServiceURL(this.nis9ServiceURL);\n\n const apiKey = this.isValidData(this.apiKey) ? this.apiKey : this.defaultApiKey;\n this.httpService.setApiKey( apiKey );\n this.httpService.setShowDebugMessageToConsole(this.showDebugMessageToConsole);\n\n if( this.isValidData(this.localityUrl) ) this.usedLocalityUrl=this.localityUrl;\n if( this.isValidData(this.streetUrl) ) this.usedStreetUrl=this.streetUrl;\n if( this.isValidData(this.streetNumberUrl) ) this.usedStreetNumberUrl=this.streetNumberUrl;\n if( this.isValidData(this.boxNumberUrl) ) this.usedBoxNumberUrl=this.boxNumberUrl;\n\n if (this.addressParams)\n {\n this.prefillData = this.addressParams as any as PrefillData;\n }\n\n this.isComponentReady = true;\n }\n\n isValidData( str: string): boolean\n {\n return str!==undefined && str!==null && str.length>0;\n }\n\n ngOnDestroy()\n {\n if (this.subscription)\n {\n this.subscription.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges)\n {\n if (changes)\n {\n // code for tracing\n // visibleSuggestionStreetNbCount\n if (this.showDebugMessageToConsole) {\n this.displayParametersChangesToConsole(changes);\n }\n\n\n if (changes.hasOwnProperty('apiKey') && !changes['apiKey'].firstChange) {\n const apiKey = this.apiKey!==null && this.apiKey!==undefined && this.apiKey.length>0\n ? this.apiKey\n : this.defaultApiKey;\n this.httpService.setApiKey( apiKey );\n }\n\n if (changes.hasOwnProperty('localityUrl') && !changes['localityUrl'].firstChange) {\n const localityUrl = this.localityUrl!==null && this.localityUrl!==undefined && this.localityUrl.length>0\n ? this.localityUrl\n : this.baseUrl + 'locality';\n this.usedLocalityUrl=localityUrl;\n console.log('ngOnChanges - localityUrl: ', localityUrl);\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('streetUrl') && !changes['streetUrl'].firstChange) {\n const streetUrl = this.streetUrl!==null && this.streetUrl!==undefined && this.streetUrl.length>0\n ? this.streetUrl\n : this.baseUrl + 'street';\n this.usedStreetUrl=streetUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('streetNumberUrl') && !changes.streetNumberUrl.firstChange) {\n const streetNumberUrl = this.streetNumberUrl!==null && this.streetNumberUrl!==undefined && this.streetNumberUrl.length>0\n ? this.streetNumberUrl\n : this.baseUrl + 'streetNumber';\n this.usedStreetNumberUrl=streetNumberUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n if (changes.hasOwnProperty('boxNumberUrl') && !changes.boxNumberUrl.firstChange) {\n const boxNumberUrl = this.boxNumberUrl!==null && this.boxNumberUrl!==undefined && this.boxNumberUrl.length>0\n ? this.boxNumberUrl\n : this.baseUrl + 'boxNumber';\n this.usedBoxNumberUrl=boxNumberUrl;\n this.setNumberOfExceptions(0);\n this.setValidatedByBackend(true);\n }\n\n\n\n if (changes.hasOwnProperty('addressParams') && !changes['addressParams'].firstChange) {\n // if (changes.hasOwnProperty('addressParams')) {\n this.processingPrefillData = true;\n this.enterPrefillMode();\n this.selectedAddress = null;\n this.notifyAddressComplete();\n this.clearWidget();\n /*\n if (this.localityPrefillData !== null && this.localityPrefillData !== undefined) {\n // this.onClearInputEventEmitter(InputNameType.LOCALITY);\n this.clearWidget();\n }\n */\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n\n if (this.showDebugMessageToConsole) {console.log('lib::widget detected prefilling', this.addressParams); }\n this.addressParams.minLevel = /*4*/ ADDRESSLEVEL.LOCALITY;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n if (this.showDebugMessageToConsole) {console.log('lib::checking locality match... ', this.localityPrefillData); }\n }\n\n // suggestion level\n if (changes.hasOwnProperty('suggestionLevel')\n /*&& !changes.suggestionLevel.firstChange\n && !changes.hasOwnProperty('prefillData') && ! this.prefilling*/ ) {\n /*\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.addressIsComplete = false;\n if (this.showDebugMessageToConsole) {\n console.warn('street number - ngOnchanges - streetName changes detection');\n }\n if (changes.streetName.currentValue === '') {\n this.clearWidget();\n this.valueChanged();\n }\n */\n\n const sl = Number(changes['suggestionLevel'].currentValue);\n switch(sl)\n {\n case 0: this.suggestionLevel = SuggestionLevelType.None; break;\n case 1: this.suggestionLevel = SuggestionLevelType.StreetNumber; break;\n case 2: this.suggestionLevel = SuggestionLevelType.StreetAndBoxNumber; break;\n }\n }\n\n // showDebugMessageToConsole\n if (changes.hasOwnProperty('showDebugMessageToConsole')\n && !changes['showDebugMessageToConsole'].firstChange ) {\n\n const sdm2c = changes['showDebugMessageToConsole'].currentValue;\n if(sdm2c)\n {\n this.httpService.setShowDebugMessageToConsole(sdm2c);\n }\n }\n\n if (changes.hasOwnProperty('numberOfExceptions') ) {\n this.numberOfExceptions = changes['numberOfExceptions'].currentValue;\n\n }\n if (changes.hasOwnProperty('validatedByBackend') ) {\n this.validatedByBackend = changes['validatedByBackend'].currentValue;\n }\n }\n }\n\n displayParametersChangesToConsole(changes: SimpleChanges)\n {\n // messageOption\n if (changes.hasOwnProperty('messageOption') && !changes['messageOption'].firstChange) {\n const wcChanges = changes['messageOption'].currentValue;\n console.log('lib widget9 - messageOption', wcChanges);\n }\n\n // maxSuggestionLocality\n if (changes.hasOwnProperty('maxSuggestionLocality') && !changes['maxSuggestionLocality'].firstChange) {\n const wcChanges = changes['maxSuggestionLocality'].currentValue;\n console.log('lib widget9 - maxSuggestionLocality', wcChanges);\n }\n\n // visibleSuggestionLocalityCount\n if (changes.hasOwnProperty('visibleSuggestionLocalityCount') && !changes['visibleSuggestionLocalityCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionLocalityCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionLocalityCount', wcChanges);\n }\n\n // sortCriteriaLocality\n if (changes.hasOwnProperty('sortCriteriaLocality') && !changes['sortCriteriaLocality'].firstChange) {\n const wcChanges = changes['sortCriteriaLocality'].currentValue;\n console.log('lib widget9 - sortCriteriaLocality', wcChanges);\n }\n\n // maxSuggestionStreet\n if (changes.hasOwnProperty('maxSuggestionStreet') && !changes['maxSuggestionStreet'].firstChange) {\n const wcChanges = changes['maxSuggestionStreet'].currentValue;\n console.log('lib widget9 - maxSuggestionStreet', wcChanges);\n }\n // visibleSuggestionStreetCount\n if (changes.hasOwnProperty('visibleSuggestionStreetCount') && !changes['visibleSuggestionStreetCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionStreetCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionStreetCount', wcChanges);\n }\n // sortCriteriaStreet\n if (changes.hasOwnProperty('sortCriteriaStreet') && !changes['sortCriteriaStreet'].firstChange) {\n const wcChanges = changes['sortCriteriaStreet'].currentValue;\n console.log('lib widget9 - sortCriteriaStreet', wcChanges);\n }\n\n // maxSuggestionStreetNb\n if (changes.hasOwnProperty('maxSuggestionStreetNb') && !changes['maxSuggestionStreetNb'].firstChange) {\n const wcChanges = changes['maxSuggestionStreetNb'].currentValue;\n console.log('lib widget9 - maxSuggestionStreetNb', wcChanges);\n }\n // visibleSuggestionStreetNbCount\n if (changes.hasOwnProperty('visibleSuggestionStreetNbCount') && !changes['visibleSuggestionStreetNbCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionStreetNbCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionStreetNbCount', wcChanges);\n }\n // sortCriteriaStreetNb\n if (changes.hasOwnProperty('sortCriteriaStreetNb') && !changes['sortCriteriaStreetNb'].firstChange) {\n const wcChanges = changes['sortCriteriaStreetNb'].currentValue;\n console.log('lib widget9 - sortCriteriaStreetNb', wcChanges);\n }\n\n // maxSuggestionBoxNb\n if (changes.hasOwnProperty('maxSuggestionBoxNb') && !changes['maxSuggestionBoxNb'].firstChange) {\n const wcChanges = changes['maxSuggestionBoxNb'].currentValue;\n console.log('lib widget9 - maxSuggestionBoxNb', wcChanges);\n }\n // visibleSuggestionBoxNbCount\n if (changes.hasOwnProperty('visibleSuggestionBoxNbCount') && !changes['visibleSuggestionBoxNbCount'].firstChange) {\n const wcChanges = changes['visibleSuggestionBoxNbCount'].currentValue;\n console.log('lib widget9 - visibleSuggestionBoxNbCount', wcChanges);\n }\n // sortCriteriaBoxNb\n if (changes.hasOwnProperty('sortCriteriaBoxNb') && !changes['sortCriteriaBoxNb'].firstChange) {\n const wcChanges = changes['sortCriteriaBoxNb'].currentValue;\n console.log('lib widget9 - sortCriteriaBoxNb', wcChanges);\n }\n\n // apiKey\n if (changes.hasOwnProperty('apiKey') && !changes['apiKey'].firstChange) {\n const wcChanges = changes['apiKey'].currentValue;\n console.log('lib widget9 - apiKey', wcChanges);\n }\n\n // localityUrl\n if (changes.hasOwnProperty('localityUrl') && !changes['localityUrl'].firstChange) {\n const wcChanges = changes['localityUrl'].currentValue;\n console.log('lib widget9 - localityUrl', wcChanges);\n console.log('lib widget9 - current localityUrl', this.localityUrl);\n }\n\n // streetUrl\n if (changes.hasOwnProperty('streetUrl') && !changes['streetUrl'].firstChange) {\n const wcChanges = changes['streetUrl'].currentValue;\n console.log('lib widget9 - streetUrl', wcChanges);\n }\n\n // streetNumberUrl\n if (changes.hasOwnProperty('streetNumberUrl') && !changes['streetNumberUrl'].firstChange) {\n const wcChanges = changes['streetNumberUrl'].currentValue;\n console.log('lib widget9 - streetNumberUrl', wcChanges);\n }\n\n // boxNumberUrl\n if (changes.hasOwnProperty('boxNumberUrl') && !changes['boxNumberUrl'].firstChange) {\n const wcChanges = changes['boxNumberUrl'].currentValue;\n console.log('lib widget9 - boxNumberUrl', wcChanges);\n }\n\n // suggestionLevel\n if (changes.hasOwnProperty('suggestionLevel') && !changes['suggestionLevel'].firstChange) {\n const wcChanges = changes['suggestionLevel'].currentValue;\n console.log('lib widget9 - suggestionLevel', wcChanges);\n }\n }\n\n clearWidget() {\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreet.clearWidget();\n this.autocompleteLocality.clearWidget();\n }\n\n changeMinLevel(minLevel: number) {\n this.minLevel = minLevel;\n }\n\n // Called by the specific buttons in the app\n onClearInput(focus: {setFocus: boolean, timestamp: Date}) {\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInput', focus); }\n\n /*\n if (focus === null || focus === undefined) {\n return;\n }*/\n\n this.quitPrefillMode();\n\n const setFocus = (focus === null || focus === undefined) ? false : focus.setFocus;\n\n switch (this.minLevel) {\n case 1:\n this.boxNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.clearInputEventEmitter.emit('BOX_NUMBER');\n break;\n case 2:\n this.boxNumber = '';\n this.streetNumber = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n this.clearInputEventEmitter.emit('STREET_NUMBER');\n break;\n case 3:\n this.boxNumber = '';\n this.streetNumber = '';\n this.street = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n this.autocompleteStreet.clearInput(setFocus, false);\n this.clearInputEventEmitter.emit('STREET');\n break;\n default:\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(setFocus, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(setFocus, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(setFocus, false);\n }\n // Locality\n this.locality = '';\n if (this.autocompleteLocality)\n {\n this.autocompleteLocality.searchText = '';\n this.autocompleteLocality.clearInput(setFocus, false);\n }\n\n this.clearInputEventEmitter.emit('LOCALITY');\n break;\n }\n }\n\n getBoxPrefix(): string {\n let prefix = '';\n switch (this.selectedLanguage) {\n case 'fr':\n prefix = 'BTE';\n break;\n case 'nl':\n prefix = 'BUS';\n break;\n default:\n prefix = 'BOX';\n break;\n }\n return prefix;\n }\n\n notifyAddressComplete() {\n // console.log('notify for address complete');\n if (this.showDebugMessageToConsole)\n {\n console.log('notifyAddressComplete', this.selectedAddress, 'nis9InResponse:'+this.nis9InResponse, typeof this.nis9InResponse);\n }\n\n if( (this.nis9InResponse === true || ''+this.nis9InResponse === 'true')\n\n && this.selectedAddress !==undefined && this.selectedAddress!==null\n && this.selectedAddress.hasOwnProperty('latitude') && this.selectedAddress.hasOwnProperty('longitude'))\n {\n const latitude = this.selectedAddress.latitude;\n const longitude = this.selectedAddress.longitude;\n if (this.showDebugMessageToConsole) console.log('calling nis9 service to get nis9 data (1):', longitude, latitude);\n\n this.nis9Service.determineNis9Data(longitude, latitude)\n .subscribe(\n data => {\n console.log('nis DATA:', data);\n /*\n nis DATA:\n {Status: 'success', data: Array(1)}\n Status: \"success\"\n data: ['25112A21-']\n */\n if(data!==undefined && data !==null && data.hasOwnProperty('Status') && data.Status==='success')\n {\n const nis9Data = data.data;\n if(Array.isArray(nis9Data) && nis9Data.length === 1)\n {\n this.selectedAddress.nis9 = nis9Data[0];\n }\n }\n\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n this.updatePostalCodeLocality(this.emittedAddress);\n }\n );\n }\n else\n {\n if (this.showDebugMessageToConsole) console.log('NOT calling nis9 service to get nis9 data (1)');\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n this.updatePostalCodeLocality(this.emittedAddress);\n }\n\n }\n\n onClearInputEventEmitter(event) {\n\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInputEventEmitter', event); }\n\n this.quitPrefillMode();\n\n let nextAddress = this.selectedAddress; // this.emittedAddress;\n\n if (event === InputNameType.LOCALITY)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(false, false);\n }\n // Locality\n this.locality = '';\n if (this.autocompleteLocality)\n {\n this.autocompleteLocality.searchText = '';\n this.autocompleteLocality.clearInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.STREET)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n // Street name\n this.street = '';\n if (this.autocompleteStreet)\n {\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreet.clearInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.STREET_NUMBER)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n // Street number\n this.streetNumber = '';\n if (this.autocompleteStreetNb)\n {\n this.autocompleteStreetNb.searchText = '';\n // this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n }\n\n nextAddress = null;\n }\n else if (event === InputNameType.BOX_NUMBER)\n {\n // Box number\n this.boxNumber = '';\n if (this.autocompleteBoxNb)\n {\n this.autocompleteBoxNb.searchText = '';\n // this.autocompleteBoxNb.streetNumber = '';\n this.autocompleteBoxNb.clearInput(false, false);\n }\n\n // Attention: if not-in-list don't reset the address, just modify it\n const addressIsNotInList\n = nextAddress !== undefined && nextAddress !== null\n && nextAddress.hasOwnProperty('not-in-list') && nextAddress['not-in-list'] === true\n ? true : false;\n\n /*\n if (addressIsNotInList)\n {\n delete nextAddress.boxNumber;\n nextAddress.isCompleteNotificationDone = false;\n if (this.streetNumberAddress !== null )\n {\n console.warn('reset box on not-in-list', this.streetNumberAddress);\n\n }\n }\n else\n {\n nextAddress = null;\n }\n */\n\n nextAddress = this.streetNumberAddress !== null ? this.streetNumberAddress : null;\n /*\n const addressIsNotInList\n = nextAddress !== null && nextAddress.hasOwnProperty('not-in-list') && nextAddress['not-in-list'] === true\n ? true : false;\n */\n const addressIsComplete\n = nextAddress !== undefined && nextAddress !== null\n && nextAddress.hasOwnProperty('isComplete') && nextAddress.isComplete === true ? true : false;\n this.autocompleteStreetNb.addressIsComplete = addressIsComplete;\n }\n\n this.clearInputEventEmitter.emit(event);\n\n if (this.showDebugMessageToConsole) { console.log('lib::onClearInputEventEmitter',\n 'emitted address:'+JSON.stringify(this.emittedAddress), 'nextAddress:'+JSON.stringify(nextAddress) ); }\n\n if (this.emittedAddress !== null ) {\n if(nextAddress !== undefined && nextAddress !== null && nextAddress.hasOwnProperty('latitude') && nextAddress.hasOwnProperty('longitude'))\n {\n const latitude = nextAddress.latitude;\n const longitude = nextAddress.longitude;\n if (this.showDebugMessageToConsole) console.log('calling nis9 service to get nis9 data (2)', longitude, latitude);\n }\n else\n {\n if (this.showDebugMessageToConsole) console.log('NOT calling nis9 service to get nis9 data (2)');\n }\n this.addressCompleteEventEmitter.emit(nextAddress);\n this.emittedAddress = nextAddress;\n }\n\n\n // gka\n /*\n if (event === InputNameType.LOCALITY)\n {\n this.minLevel = ADDRESSLEVEL.LOCALITY;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n this.localityPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.locality = '';\n this.postalCode = '';\n this.street = null;\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreet.clearInput(false, false);\n this.autocompleteStreet.locality = '';\n this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.STREET)\n {\n this.minLevel = ADDRESSLEVEL.STREET;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n this.streetPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.street = null;\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.STREET_NUMBER)\n {\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n this.boxNumberPrefillData = null;\n this.streetNumberPrefillData = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.streetNumber = null;\n this.boxNumber = null;\n this.autocompleteBoxNb.clearInput(false, false);\n this.autocompleteBoxNb.streetName = '';\n this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n // this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n if (event === InputNameType.BOX_NUMBER)\n {\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.boxNumberPrefillData = null;\n this.boxNumber = null;\n // this.clearInput(focus: {setFocus: boolean, timestamp: Date});\n this.autocompleteBoxNb.clearInput(false, false);\n // this.autocompleteStreetNb.onClearStreetNumberInput(false, false);\n // this.autocompleteStreet.clearInput(false, false);\n // this.autocompleteLocality.clearInput(false, false);\n }\n */\n }\n\n resetLocality(event) {\n this.postalCode = '';\n this.locality = '';\n const street = this.selectedAddress?.hasOwnProperty('streetName');\n const house = this.selectedAddress?.hasOwnProperty('houseNumber');\n const box = this.selectedAddress?.hasOwnProperty('boxNumber');\n this.quitPrefillMode();\n if(event)\n { \n if(street == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET);\n }\n if(house == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n }\n if(box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n }\n if(!event)\n { \n if(street == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET);\n }\n if(house == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n }\n if(box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n }\n this.setAddress(null, 4);\n }\n\n resetStreet(event) {\n this.street = '';\n const house = this.selectedAddress?.hasOwnProperty('houseNumber');\n const box = this.selectedAddress?.hasOwnProperty('boxNumber');\n this.quitPrefillMode();\n if(event)\n {\n \n if(house == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n }\n // this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n if(box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n // this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n if(!event)\n {\n \n if(house == true)\n {\n this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n }\n // this.onClearInputEventEmitter(InputNameType.STREET_NUMBER);\n if(box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n // this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n this.autocompleteStreetNb.addressIsComplete = false;\n this.autocompleteStreetNb.streetName = '';\n this.setAddress(null, 3);\n }\n\n resetStreetNumber(event, resetAddress: boolean = false) {\n // console.log('reset street numner!', event);\n const box = this.selectedAddress?.hasOwnProperty('boxNumber');\n this.streetNumber = '';\n this.quitPrefillMode();\n if(event)\n {\n if(box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n \n }\n if(!event && box == true)\n {\n this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n }\n this.autocompleteBoxNb.addressIsComplete = false;\n this.autocompleteBoxNb.streetNumber = '';\n this.setAddress(null, 2);\n // $$ 7 this.setAddress(null, 2); // $$ ?????\n /*\n if (resetAddress === true) {\n this.setAddress(/ *null* / this.selectedAddress);\n }*/\n }\n\n resetBoxNumber(event, resetAddress: boolean = false) {\n // console.log('reset street numner!', event, resetAddress);\n this.boxNumber = '';\n this.quitPrefillMode();\n // this.onClearInputEventEmitter(InputNameType.BOX_NUMBER);\n this.autocompleteBoxNb.addressIsComplete = false;\n this.autocompleteBoxNb.boxNumber = ''\n this.setAddress(null, 1);\n // if(!event){\n // this.clearInputEventEmitter.emit('CLEAR_BOX_NUMBER')\n // }\n \n // $$ 7 this.setAddress(null, 1); // $$ ?????\n /*\n if (resetAddress === true) {\n this.setAddress(/ *null* / this.selectedAddress);\n }*/\n }\n\n enterPrefillMode() {\n if (this.showDebugMessageToConsole) {console.log('lib::enterPrefillMode()'); }\n if (this.autocompleteBoxNb && this.autocompleteStreetNb && this.autocompleteStreet && this.autocompleteLocality )\n {\n this.autocompleteBoxNb.prefilling = true;\n this.autocompleteStreetNb.prefilling = true;\n this.autocompleteStreet.prefilling = true;\n this.autocompleteLocality.prefilling = true;\n\n this.autocompleteStreet.locality = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteBoxNb.streetNumber = '';\n }\n\n }\n\n quitPrefillMode() {\n if (this.showDebugMessageToConsole) {console.log('lib::quitPrefillMode()'); }\n if (this.autocompleteBoxNb && this.autocompleteStreetNb && this.autocompleteStreet && this.autocompleteLocality )\n {\n this.autocompleteBoxNb.prefilling = false;\n this.autocompleteStreetNb.prefilling = false;\n this.autocompleteStreet.prefilling = false;\n this.autocompleteLocality.prefilling = false;\n }\n\n this.processingPrefillData = false;\n }\n\n setAddress(address: any, level?: number) {\n if (this.showDebugMessageToConsole) {console.log('lib::setAddress - address part, level', address, level); }\n\n /* $$ $$\n if (this.selectedAddress && !address) {\n // console.log('reset address!');\n this.selectedAddress = null;\n this.streetAddress = null;\n this.streetNumberAddress = null;\n this.notifyAddressComplete();\n return;\n }\n */\n if (address === null || address === undefined )\n {\n const doNotify = (this.selectedAddress !== null && this.selectedAddress !== undefined) ? true : false;\n this.selectedAddress = null;\n this.autocompleteStreetNb.addressIsComplete = false;\n this.autocompleteBoxNb.addressIsComplete = false;\n if (doNotify) {\n this.notifyAddressComplete();\n }\n }\n\n if (address) {\n delete address.messages;\n this.selectedAddress = address;\n this.updateCompleteAddress();\n this.postalCode = address.postalCode ? address.postalCode : '';\n this.locality = address.localityName ? address.localityName : '';\n this.street = address.streetName ? address.streetName : '';\n // const notInList = address['not-in-list'];\n // const isNotInList = notInList !== null && notInList !== undefined && notInList === true;\n /*\n if (address.houseNumber) {\n if (!address.isComplete || isNotInList) {\n this.streetNumber = address.houseNumber ? address.houseNumber : '';\n } else {\n if (!address.boxNumber) {\n // console.log('calling reset street number !');\n if ( !this.processingPrefillData ) {\n this.resetStreetNumber(null, false);\n }\n // this.streetNumber = '';\n }\n }\n }\n */\n\n const addressIsComplete = address !== null && address !== undefined\n && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address !== null && address !== undefined\n && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n switch (level) {\n\n // Locality / Municipality and POstalCode\n case 4:\n this.updatePostalCodeLocality(address);\n /*\n this.autocompleteStreet.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.streetAddress = null;\n this.streetNumberAddress = null;\n //\n this.autocompleteStreet.searchText = '';\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteStreetNb.streetName = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n break;\n\n // Street Name\n case 3:\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.streetAddress = address;\n this.streetNumberAddress = null;\n /*\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n break;\n\n // STREET Number\n case 2:\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.updateStreetNumber(address); // $$\n this.streetAddress = address;\n this.streetNumberAddress = address;\n if (address.hasOwnProperty('isComplete') && address.isComplete === true )\n {\n this.autocompleteStreetNb.addressIsComplete = true;\n if (addressIsNotInList)\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = '';\n }\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n /*\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteBoxNb.searchText = '';\n break;\n\n // BOX Number\n case 1:\n {\n if (addressIsNotInList)\n {\n this.autocompleteStreetNb.addressIsComplete = false;\n }\n }\n break;\n\n default:\n break;\n }\n\n if ( this.selectedAddress && this.selectedAddress.isComplete === undefined) {\n this.selectedAddress.isComplete = false;\n }\n\n /*\n if (address.isComplete === true ) {\n if (!this.selectedAddress.isCompleteNotificationDone) {\n this.selectedAddress.isCompleteNotificationDone = true;\n this.notifyAddressComplete();\n }\n } else {\n this.notifyAddressComplete();\n }\n */\n\n this.selectedAddress.isCompleteNotificationDone = true;\n this.notifyAddressComplete();\n }\n }\n\n setAddressStreetNumber(streetNumber: string) {\n\n if (this.showDebugMessageToConsole)\n {\n console.log('lib::setAddressStreetNumber - streetnumber: ', streetNumber);\n console.log('lib::setAddressStreetNumber - streetAddress: ', this.streetAddress);\n }\n this.streetNumberAddress = this.streetAddress;\n this.selectedAddress = this.streetAddress;\n this.selectedAddress.houseNumber = streetNumber;\n this.selectedAddress.streetNumber = streetNumber;\n /*\n this.streetNumber = streetNumber;\n */\n //this.notifyAddressComplete();\n this.streetNumber = streetNumber;\n this.boxNumber='';\n this.selectedAddress.boxNumber='';\n this.addressCompleteEventEmitter.emit(this.selectedAddress);\n this.emittedAddress = this.selectedAddress;\n if (this.showDebugMessageToConsole)\n {\n console.log('set street number value:', streetNumber,\n 'this.streetNumber:'+this.streetNumber,\n 'this.minLevel:'+this.minLevel);\n }\n }\n\n setAddressBoxNumber(boxNumber: string) {\n console.log('set box number value:', boxNumber);\n //this.streetNumberAddress = this.streetAddress;\n this.selectedAddress = this.streetNumberAddress;\n this.selectedAddress.boxNumber = boxNumber;\n this.boxNumber = boxNumber;\n this.notifyAddressComplete();\n }\n\n setLanguage(lang: string) {\n this.selectedLanguage = lang;\n }\n\n setValidationMessage(/*message: string*/message: {messageType: ValidationMessageType, translatedMessage: string}) {\n this.validationMessage = message;\n if (this.validationMessageOptionType === ValidationMessageOptionType.EMIT) {\n this.validationMessageEventEmitter.emit(message);\n }\n }\n\n setNumberOfExceptions(event){\n this.numberOfExceptions=event;\n if(this.numberOfExceptions>=3){\n this.numberOfExceptionsEventEmitter.emit(this.numberOfExceptions);\n this.setValidatedByBackend(false)\n }\n }\n\n setValidatedByBackend(event){\n this.validatedByBackend=event;\n this.validatedByBackendEventEmitter.emit(this.validatedByBackend);\n }\n\n updatePostalCodeLocality(address) {\n if (address && address.postalCode && address.localityName) {\n this.postalCodeLocality = address.postalCode + ' ' + address.localityName;\n this.autocompleteLocality.searchText = this.postalCodeLocality;\n }\n }\n\n updateStreetName(address) {\n if (address && address.streetName) {\n this.streetNameInput = address.streetName;\n }\n }\n\n updateStreetNumber(address) {\n if (address && address.houseNumber) {\n this.streetNumberInput = address.houseNumber;\n }\n }\n\n updateCompleteAddress() {\n let concatStr = '';\n concatStr += this.selectedAddress.streetName ? `${this.selectedAddress.streetName} ` : '';\n concatStr += this.selectedAddress.houseNumber ? `${this.selectedAddress.houseNumber} ` : '';\n concatStr += this.selectedAddress.boxNumber ? `${this.getBoxPrefix()} ${this.selectedAddress.boxNumber} ` : '';\n concatStr += this.selectedAddress.postalCode ? `${this.selectedAddress.postalCode} ` : '';\n concatStr += this.selectedAddress.municipalityName ? `${this.selectedAddress.municipalityName} ` : '';\n this.completeAddress = concatStr;\n }\n\n setValidationMessageOptionFromInput(option: {validationType: ValidationMessageOptionType, timestamp: Date}) {\n this.validationMessageOptionType = option.validationType;\n // console.log('addresse autocomplete - validation message option', this.validationMessageOptionType);\n }\n\n onLocalityPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) {console.log('lib::locality prefill event received:', event); }\n /*\n if (event.perfectMatch)\n {\n this.addressParams.minLevel = / *3* / ADDRESSLEVEL.STREET;\n this.streetParams = this.addressParams;\n }\n */\n const data = event.prefillData;\n if (event.prefillData.prefillMunicipalityPerfectMatchFound === true )\n {\n const suggestion = data.prefillMunicipalityPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updatePostalCodeLocality(address);\n this.addressParams.minLevel = /*4*/ ADDRESSLEVEL.STREET;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n // this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.STREET;\n // Be sure to propagate the localityName in place of the municipalityName !\n const suggestionAddress = this.prefillData.prefillMunicipalityPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const streetName = this.prefillData.parameters.streetName;\n if (streetName === null || streetName === undefined || streetName === '')\n {\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n // this.quitPrefillMode();\n // this.updatePostalCodeLocality(suggestionAddress);\n }\n\n /*\n const streetName = this.prefillData.parameters.streetName;\n if (streetName === null || streetName === undefined || streetName === '')\n {\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n this.quitPrefillMode();\n // this.updatePostalCodeLocality(suggestionAddress);\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking street match... ', this.prefillData); }\n this.streetPrefillData = this.prefillData;\n }\n */\n\n this.streetPrefillData = this.prefillData;\n }\n else\n {\n // const cpAndLocality = this.prefillData.parameters.postalCode + this.prefillData.parameters.municipalityName;\n const cpAndLocality = data.parameters.postalCode + data.parameters.municipalityName;\n this.autocompleteStreet.locality = '';\n if ( cpAndLocality === null || cpAndLocality === undefined || cpAndLocality.length === 0 )\n {\n this.setAddress(null, ADDRESSLEVEL.LOCALITY);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) {console.log('lib::street: prefill event received', event); }\n /*\n const data: PrefillData = event.prefillData;\n if (data.prefillStreetPerfectMatchFound === true )\n {\n console.log('lib::onStreetPrefillEvent: MATCH FOUND', data);\n this.postalCodeLocality = 'TRUC-MUCHE';\n this.postalCodeLocality = 'TRUC-MUCHE 2';\n this.autocompleteLocality.searchText = this.postalCodeLocality;\n }\n */\n const data = event.prefillData;\n if (event.prefillData.prefillStreetPerfectMatchFound === true )\n {\n // if (this.showDebugMessageToConsole) { console.log('lib::onStreetPrefillEvent: MATCH FOUND', data); }\n const suggestion = data.prefillStreetPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetName(address);\n this.addressParams.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n // this.localityPrefillData = this.addressParams; // as any as PrefillData;\n // this.localityPrefillData = new PrefillData(this.addressParams);\n // Object.assign(this.localityPrefillData, this.addressParams);\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.STREET_NUMBER;\n const suggestionAddress = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const streetNumber = this.prefillData.parameters.streetNumber;\n if (streetNumber === null || streetNumber === undefined || streetNumber === '')\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n // this.quitPrefillMode();\n }\n else\n {\n //this.selectedAddress = address;\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.streetAddress = address;\n this.streetNumberAddress = null;\n /*\n this.autocompleteStreetNb.clearWidget();\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteStreetNb.searchText = '';\n this.autocompleteBoxNb.searchText = '';\n this.autocompleteBoxNb.streetNumber = '';\n }\n\n /*\n const streetNumber = this.prefillData.parameters.streetNumber;\n if (streetNumber === null || streetNumber === undefined || streetNumber === '')\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) {console.log('lib::prefill: trigger checking street number match... ', this.prefillData);}\n this.streetNumberPrefillData = this.prefillData;\n }\n */\n\n if (this.showDebugMessageToConsole)\n {\n console.warn('lib::street: prefill - transmitting prefill data for streetNumber :', this.prefillData);\n }\n this.streetNumberPrefillData = this.prefillData;\n }\n else\n {\n const prefillStreetName = this.prefillData.parameters.streetName;\n const address = this.prefillData.prefillMunicipalityPerfectMatchSuggestion.address;\n this.autocompleteStreetNb.streetName = '';\n\n if (this.showDebugMessageToConsole) {\n console.error('lib::onStreetPrefillEvent - NO MATCH AT STREET LEVEL', prefillStreetName );\n }\n\n if ( prefillStreetName === null || prefillStreetName === undefined || prefillStreetName.length === 0 )\n {\n // if (this.showDebugMessageToConsole) {console.log('lib::onStreetPrefillEvent: NO MATCH FOUND - set address', data, address); }\n this.setAddress(address, ADDRESSLEVEL.LOCALITY);\n }\n else\n {\n // address.streetName = prefillStreetName;\n address.searchBarString = prefillStreetName;\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetNumberPrefillEvent_new(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::street-number prefill event received:', event); }\n const data = event.prefillData;\n if (data.prefillStreetNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillStreetNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetNumber(address);\n this.autocompleteStreetNb.selectedAddress = address;\n\n const addressIsComplete = address && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n if (addressIsComplete && ! addressIsNotInList )\n {\n // found address - perfect matchat street number level\n // Nothing to do anymore\n this.autocompleteStreetNb.addressIsComplete = true;\n this.quitPrefillMode();\n }\n else\n {\n this.addressParams.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n // const suggestionAddressLocalityName\n // = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address.localityName;\n\n const suggestionAddress = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n this.prefillData.parameters.streetNumber = suggestionAddress.houseNumber;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n // this.quitPrefillMode();\n }\n else\n {\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.updateStreetNumber(address); // $$\n this.streetAddress = address;\n this.streetNumberAddress = address;\n if (address.hasOwnProperty('isComplete') && address.isComplete === true )\n {\n this.autocompleteStreetNb.addressIsComplete = true;\n if (addressIsNotInList)\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = '';\n }\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n /*\n this.autocompleteBoxNb.clearWidget();\n this.autocompleteBoxNb.searchText = '';\n */\n this.autocompleteBoxNb.searchText = '';\n }\n\n /*\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking box number match... ', this.prefillData); }\n this.boxNumberPrefillData = this.prefillData;\n }\n */\n\n if (this.showDebugMessageToConsole)\n {\n console.warn('lib::streetnumber: prefill - transmitting prefill data for box :', this.prefillData);\n }\n this.boxNumberPrefillData = this.prefillData;\n }\n }\n else\n {\n const prefillStreetNumber = this.prefillData.parameters.streetNumber;\n const address = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n this.autocompleteBoxNb.streetNumber = '';\n\n if (this.showDebugMessageToConsole) {\n console.error('lib::onStreetNumberPrefillEvent - NO MATCH AT STREET-NUMBER LEVEL', prefillStreetNumber );\n }\n\n if ( prefillStreetNumber === null || prefillStreetNumber === undefined || prefillStreetNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n else\n {\n // address.houseNumber = prefillStreetNumber;\n address.searchBarString = prefillStreetNumber;\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n this.quitPrefillMode();\n }\n }\n\n onStreetNumberPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::street number prefill event received:', event); }\n const data = event.prefillData;\n if (data.prefillStreetNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillStreetNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.updateStreetNumber(address);\n this.autocompleteStreetNb.selectedAddress = address;\n\n const addressIsComplete = address && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;\n const addressIsNotInList = address && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;\n\n if (addressIsComplete && ! addressIsNotInList )\n {\n // found address - perfect matchat street number level\n // Nothing to do anymore\n this.autocompleteStreetNb.addressIsComplete = true;\n this.quitPrefillMode();\n }\n else\n {\n this.addressParams.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n this.prefillData = event.prefillData;\n this.prefillData.ts = new Date();\n this.prefillData.parameters.minLevel = ADDRESSLEVEL.BOX_NUMBER;\n // const suggestionAddressLocalityName\n // = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address.localityName;\n\n const suggestionAddress = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n const suggestionAddressLocalityName = suggestionAddress.localityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;\n this.prefillData.parameters.postalCode = suggestionAddress.postalCode;\n this.prefillData.parameters.streetName = suggestionAddress.streetName;\n this.prefillData.parameters.streetNumber = suggestionAddress.houseNumber;\n // this.updatePostalCodeLocality(suggestionAddress);\n // this.updatePostalCodeLocality(suggestionAddress);\n\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n // this.quitPrefillMode();\n }else\n {\n this.updatePostalCodeLocality(address);\n this.updateStreetName(address);\n this.updateStreetNumber(address); \n this.streetAddress = address;\n this.streetNumberAddress = address;\n if (address.hasOwnProperty('isComplete') && address.isComplete === true )\n {\n this.autocompleteStreetNb.addressIsComplete = true;\n if (addressIsNotInList)\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = '';\n }\n }\n else\n {\n this.autocompleteBoxNb.streetNumber = address.houseNumber;\n }\n \n this.autocompleteBoxNb.searchText = '';\n }\n\n /*\n const boxNumber = this.prefillData.parameters.boxNumber;\n if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n this.quitPrefillMode();\n }\n else\n {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking box number match... ', this.prefillData); }\n this.boxNumberPrefillData = this.prefillData;\n }\n */\n\n this.boxNumberPrefillData = this.prefillData;\n }\n }\n else\n {\n const prefillStreetNumber = this.prefillData.parameters.streetNumber;\n const address = this.prefillData.prefillStreetPerfectMatchSuggestion.address;\n this.autocompleteBoxNb.streetNumber = '';\n if ( prefillStreetNumber === null || prefillStreetNumber === undefined || prefillStreetNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET);\n }\n else\n {\n // address.houseNumber = prefillStreetNumber;\n address.searchBarString = prefillStreetNumber;\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n this.quitPrefillMode();\n }\n }\n\n onBoxNumberPrefillEvent_new(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: box number event received:', event); }\n const data = event.prefillData;\n if (data.prefillBoxNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillBoxNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.autocompleteBoxNb.selectedAddress = address;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n else\n {\n const prefillBoxNumber = this.prefillData.parameters.boxNumber;\n const address = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n if ( prefillBoxNumber === null || prefillBoxNumber === undefined || prefillBoxNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n else\n {\n // address.boxNumber = prefillBoxNumber;\n address.searchBarString = prefillBoxNumber;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n this.quitPrefillMode();\n }\n\n onBoxNumberPrefillEvent(event: PrefillEvent) {\n if (this.showDebugMessageToConsole) { console.log('lib::prefill: box number event received:', event); }\n const data = event.prefillData;\n if (data.prefillBoxNumberPerfectMatchFound === true)\n {\n const suggestion = data.prefillBoxNumberPerfectMatchSuggestion;\n const address = suggestion.address;\n this.autocompleteBoxNb.selectedAddress = address;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n else\n {\n const prefillBoxNumber = this.prefillData.parameters.boxNumber;\n const address = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;\n if ( prefillBoxNumber === null || prefillBoxNumber === undefined || prefillBoxNumber.length === 0 )\n {\n this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);\n }\n else\n {\n // address.boxNumber = prefillBoxNumber;\n address.searchBarString = prefillBoxNumber;\n this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);\n }\n }\n this.quitPrefillMode();\n }\n}\n","\r\n<div class=\"aacwidget-address-container\">\r\n\r\n <div class=\"bpaac-dropdown-validation\" *ngIf=\"validationMessageOptionType === 'SHOW' \">\r\n <div class=\"bpaac-validated-icon\" *ngIf=\"selectedAddress && validationMessage!==null && validationMessage.messageType!==null\"></div>\r\n <!-- {{ validationMessage | translate }} -->\r\n {{ validationMessage.translatedMessage }}\r\n </div>\r\n\r\n <!-- bp-aacwidget-autocomplete-locality -->\r\n <bp-locality class=\"aacwidget-address-locality\" *ngIf=\"isComponentReady\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedLocalityUrl\"\r\n [prefillData]=\"localityPrefillData\"\r\n [labelResourceKey]=\"'common.label.postalCode'\"\r\n [inputText]=\"postalCodeLocality\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [sortCriteria]=\"sortCriteriaLocality\"\r\n [maxSuggesionCount]=\"maxSuggestionLocality\" \r\n [visibleSuggestionCount]=\"visibleSuggestionLocalityCount\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 4)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\" \r\n (textChangeEvent)=\"resetLocality($event)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onLocalityPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-locality>\r\n\r\n <bp-street class=\"aacwidget-address-street\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedStreetUrl\"\r\n [prefillData]=\"streetPrefillData\"\r\n [labelResourceKey]=\"'common.label.streetName'\"\r\n [inputText]=\"streetNameInput\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\"\r\n [locality]=\"locality\"\r\n [sortCriteria]=\"sortCriteriaStreet\" \r\n [maxSuggesionCount]=\"maxSuggestionStreet\"\r\n [visibleSuggesionCount]=\"visibleSuggestionStreetCount\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 3)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetStreet($event)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onStreetPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-street>\r\n\r\n <bp-street-number class=\"aacwidget-address-streetnumber\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedStreetNumberUrl\"\r\n [selectedAddress]=\"streetAddress\"\r\n [prefillData]=\"streetNumberPrefillData\"\r\n [labelResourceKey]=\"'common.label.streetNumber'\"\r\n [inputText]=\"streetNumberInput\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\" \r\n [locality]=\"locality\" \r\n [streetName]=\"street\"\r\n [sortCriteria]=\"sortCriteriaStreetNb\"\r\n [maxSuggesionCount]=\"maxSuggestionStreetNb\" \r\n [visibleSuggesionCount]=\"visibleSuggestionStreetNbCount\"\r\n [notInListAllowed]=\"notInListAllowed\"\r\n [suggestionLevel]=\"suggestionLevel\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (addressChanged)=\"setAddress($event, 2)\"\r\n (streetNumberChanged)=\"setAddressStreetNumber($event)\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetStreetNumber($event, false)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onStreetNumberPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-street-number>\r\n\r\n <bp-box-number class=\"aacwidget-address-boxnumber\"\r\n [isReadonly]=\"isReadonly\"\r\n [showDebugMessageToConsole]=\"showDebugMessageToConsole\"\r\n [baseUrl]=\"usedBoxNumberUrl\"\r\n [selectedAddress]=\"streetNumberAddress\"\r\n [prefillData]=\"boxNumberPrefillData\"\r\n [labelResourceKey]=\"'common.label.boxNumber'\"\r\n [inputLang]=\"selectedLanguage\"\r\n [messageOption]=\"messageOption\"\r\n [postalCode]=\"postalCode\" \r\n [locality]=\"locality\" \r\n [streetName]=\"street\" \r\n [streetNumber]=\"streetNumber\"\r\n [sortCriteria]=\"sortCriteriaBoxNb\" \r\n [maxSuggesionCount]=\"maxSuggestionBoxNb\"\r\n [visibleSuggesionCount]=\"visibleSuggestionBoxNbCount\"\r\n [notInListAllowed]=\"notInListAllowed\"\r\n [suggestionLevel]=\"suggestionLevel\"\r\n [allowNoValidation]=\"allowNoValidation\"\r\n [validatedByBackend]=\"validatedByBackend\"\r\n [numberOfExceptions]=\"numberOfExceptions\"\r\n (messageChanged)=\"setValidationMessage($event)\"\r\n (addressChanged)=\"setAddress($event, 1)\" \r\n (boxNumberChanged)=\"setAddressBoxNumber($event)\"\r\n (focusEvent)=\"changeMinLevel($event)\"\r\n (textChangeEvent)=\"resetBoxNumber($event, false)\"\r\n (clearInputEventEmitter)=\"onClearInputEventEmitter($event)\"\r\n (prefillEventEmitter)=\"onBoxNumberPrefillEvent($event)\"\r\n (numberOfExceptionsEmitter)=\"setNumberOfExceptions($event)\"></bp-box-number>\r\n</div>","import { NgModule } from '@angular/core';\nimport { LibAddressAutocompleteByComponentComponent } from './lib-address-autocomplete-by-component.component';\nimport { LocalityComponent } from './locality/locality.component';\nimport { StreetComponent } from './street/street.component';\nimport { StreetNumberComponent } from './street-number/street-number.component';\nimport { BoxNumberComponent } from './box-number/box-number.component';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HighlightSuggestionPipe } from './utils/highlight-suggestion.pipe';\nimport { VisibleSuggestionDirective } from './utils/visible-suggestion.directive';\nimport { PrefilledParameters } from './utils/prefilled-parameters';\n\n\n\n@NgModule({\n declarations: [\n HighlightSuggestionPipe,\n VisibleSuggestionDirective,\n LibAddressAutocompleteByComponentComponent,\n LocalityComponent,\n StreetComponent,\n StreetNumberComponent,\n BoxNumberComponent\n ],\n imports: [\n CommonModule,\n // BrowserModule,\n // BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n ],\n exports: [\n LibAddressAutocompleteByComponentComponent,\n ]\n})\nexport class LibAddressAutocompleteByComponentModule { }\n","import { ADDRESSLEVEL } from '../enum/address-level.enum';\r\n\r\nexport class PrefilledParameters {\r\n\r\n // unstructuredAddress: string;\r\n streetName: string;\r\n streetNumber: string;\r\n boxNumber: string;\r\n postalCode: string;\r\n municipalityName: string;\r\n state: boolean;\r\n minLevel: number;\r\n\r\n // used by the prefill address evaluation process\r\n onFocusShowSuggestionsAfterPrefill = false; // 2020-06-15\r\n\r\n ts: Date = null;\r\n\r\n constructor(init?: Partial<PrefilledParameters>) {\r\n Object.assign(this, init);\r\n if (this.boxNumber && this.boxNumber !== '') {\r\n this.minLevel = ADDRESSLEVEL.BOX_NUMBER;\r\n } else if (this.streetNumber && this.streetNumber !== '') {\r\n this.minLevel = ADDRESSLEVEL.STREET_NUMBER;\r\n } else if (this.streetName && this.streetName !== '') {\r\n this.minLevel = ADDRESSLEVEL.STREET;\r\n } else {\r\n this.minLevel = ADDRESSLEVEL.LOCALITY;\r\n }\r\n\r\n this.ts = new Date();\r\n }\r\n}\r\n","/*\n * Public API Surface of lib-address-autocomplete-by-component\n */\n\nexport * from './lib/lib-address-autocomplete-by-component.service';\nexport * from './lib/lib-address-autocomplete-by-component.component';\nexport * from './lib/lib-address-autocomplete-by-component.module';\nexport {PrefilledParameters} from './lib/utils/prefilled-parameters';\nexport * from './lib/enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["AddressSuggestion","Address","i1.HttpService","i1","i1.AddressService","i2.LocaleService","i4.UnicodeService","i7.VisibleSuggestionDirective","i8.HighlightSuggestionPipe","i1.Nis9Service","i2.HttpService","i3.LocalityComponent","i4.StreetComponent","i5.StreetNumberComponent","i6.BoxNumberComponent","i7"],"mappings":"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"}