@bpost/bp-address-auto-complete-by-component 1.1.3 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/esm2020/lib/box-number/box-number.component.mjs +80 -7
  2. package/esm2020/lib/lib-address-autocomplete-by-component.component.mjs +152 -2
  3. package/esm2020/lib/locality/locality.component.mjs +2 -2
  4. package/esm2020/lib/services/adress.service.mjs +2 -2
  5. package/esm2020/lib/street/street.component.mjs +11 -1
  6. package/esm2020/lib/street-number/street-number.component.mjs +82 -6
  7. package/esm2020/lib/utils/constants.mjs +2 -2
  8. package/fesm2015/bpost-bp-address-auto-complete-by-component.mjs +324 -15
  9. package/fesm2015/bpost-bp-address-auto-complete-by-component.mjs.map +1 -1
  10. package/fesm2020/bpost-bp-address-auto-complete-by-component.mjs +324 -15
  11. package/fesm2020/bpost-bp-address-auto-complete-by-component.mjs.map +1 -1
  12. package/lib/box-number/box-number.component.d.ts +5 -2
  13. package/lib/lib-address-autocomplete-by-component.component.d.ts +2 -0
  14. package/lib/street-number/street-number.component.d.ts +3 -0
  15. package/lib/utils/constants.d.ts +1 -1
  16. package/package.json +1 -1
  17. package/VERSION.md +0 -195
  18. package/address-complete-2020-04-15_23-29-54.png +0 -0
  19. package/address-incomplete-2020-04-15_23-28-40.png +0 -0
  20. package/install-and-start-demo.bat +0 -11
  21. package/tutorial/tutorial/aacwidget-tutorial/.editorconfig +0 -16
  22. package/tutorial/tutorial/aacwidget-tutorial/README.md +0 -27
  23. package/tutorial/tutorial/aacwidget-tutorial/angular.json +0 -128
  24. package/tutorial/tutorial/aacwidget-tutorial/browserslist +0 -13
  25. package/tutorial/tutorial/aacwidget-tutorial/e2e/protractor.conf.js +0 -32
  26. package/tutorial/tutorial/aacwidget-tutorial/e2e/src/app.e2e-spec.ts +0 -23
  27. package/tutorial/tutorial/aacwidget-tutorial/e2e/src/app.po.ts +0 -11
  28. package/tutorial/tutorial/aacwidget-tutorial/e2e/tsconfig.json +0 -13
  29. package/tutorial/tutorial/aacwidget-tutorial/karma.conf.js +0 -32
  30. package/tutorial/tutorial/aacwidget-tutorial/package-lock.json +0 -13314
  31. package/tutorial/tutorial/aacwidget-tutorial/package.json +0 -49
  32. package/tutorial/tutorial/aacwidget-tutorial/src/app/app-routing.module.ts +0 -18
  33. package/tutorial/tutorial/aacwidget-tutorial/src/app/app.component.html +0 -6
  34. package/tutorial/tutorial/aacwidget-tutorial/src/app/app.component.scss +0 -0
  35. package/tutorial/tutorial/aacwidget-tutorial/src/app/app.component.spec.ts +0 -35
  36. package/tutorial/tutorial/aacwidget-tutorial/src/app/app.component.ts +0 -28
  37. package/tutorial/tutorial/aacwidget-tutorial/src/app/app.module.ts +0 -47
  38. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-full/widget-full.component.html +0 -57
  39. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-full/widget-full.component.scss +0 -0
  40. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-full/widget-full.component.ts +0 -160
  41. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-simple/widget-simple.component.html +0 -20
  42. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-simple/widget-simple.component.scss +0 -0
  43. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-simple/widget-simple.component.spec.ts +0 -25
  44. package/tutorial/tutorial/aacwidget-tutorial/src/app/widget-simple/widget-simple.component.ts +0 -49
  45. package/tutorial/tutorial/aacwidget-tutorial/src/assets/.gitkeep +0 -0
  46. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/i18n/de.json +0 -62
  47. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/i18n/en.json +0 -62
  48. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/i18n/fr.json +0 -62
  49. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/i18n/nl.json +0 -62
  50. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/scss/aacwidget-custom.scss +0 -81
  51. package/tutorial/tutorial/aacwidget-tutorial/src/assets/aacwidget/scss/aacwidget-default.scss +0 -424
  52. package/tutorial/tutorial/aacwidget-tutorial/src/environments/environment.prod.ts +0 -3
  53. package/tutorial/tutorial/aacwidget-tutorial/src/environments/environment.ts +0 -16
  54. package/tutorial/tutorial/aacwidget-tutorial/src/favicon.ico +0 -0
  55. package/tutorial/tutorial/aacwidget-tutorial/src/index.html +0 -45
  56. package/tutorial/tutorial/aacwidget-tutorial/src/main.ts +0 -12
  57. package/tutorial/tutorial/aacwidget-tutorial/src/polyfills.ts +0 -63
  58. package/tutorial/tutorial/aacwidget-tutorial/src/styles.scss +0 -4
  59. package/tutorial/tutorial/aacwidget-tutorial/src/test.ts +0 -25
  60. package/tutorial/tutorial/aacwidget-tutorial/tsconfig.app.json +0 -15
  61. package/tutorial/tutorial/aacwidget-tutorial/tsconfig.json +0 -23
  62. package/tutorial/tutorial/aacwidget-tutorial/tsconfig.spec.json +0 -18
  63. package/tutorial/tutorial/aacwidget-tutorial/tslint.json +0 -148
  64. package/tutorial/tutorial/tutorial-videos.txt +0 -41
@@ -277,7 +277,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
277
277
  class AddressService {
278
278
  constructor(httpService) {
279
279
  this.httpService = httpService;
280
- this.domain = 'http://10.194.73.9:8080';
280
+ this.domain = 'http://abp-pr.netpost';
281
281
  this.localityURL = this.domain + '/AddressAutoComplete/autocomplete/locality?IncludeGeographicalSanction=true';
282
282
  this.log = true;
283
283
  this.nis9InResponse = false;
@@ -1279,7 +1279,7 @@ class LocalityComponent {
1279
1279
  }
1280
1280
  else {
1281
1281
  if (this.showDebugMessageToConsole) {
1282
- console.log('LOCALITY - PREFILL - Perfect match:', suggestion);
1282
+ console.log('LOCALITY - PREFILL - NO Perfect match:', suggestion);
1283
1283
  }
1284
1284
  }
1285
1285
  }
@@ -1966,6 +1966,16 @@ class StreetComponent {
1966
1966
  this.prefillData.prefillStreetPerfectMatchSuggestion = suggestion;
1967
1967
  this.searchText = sugAddress.streetName;
1968
1968
  }
1969
+ if (this.prefillData.prefillStreetPerfectMatchFound === true) {
1970
+ if (this.showDebugMessageToConsole) {
1971
+ console.log('STREET - PREFILL - Perfect match - street:', suggestion);
1972
+ }
1973
+ }
1974
+ else {
1975
+ if (this.showDebugMessageToConsole) {
1976
+ console.log('STREET - PREFILL - NO Perfect match:', suggestion);
1977
+ }
1978
+ }
1969
1979
  }
1970
1980
  }
1971
1981
  onInputChange(source) {
@@ -2307,6 +2317,7 @@ class StreetNumberComponent {
2307
2317
  this.validationMessageOptions = null;
2308
2318
  this.prefilling = false;
2309
2319
  this.isPrefillWithNoMatch = false;
2320
+ this.SuggestionLevelType = SuggestionLevelType;
2310
2321
  }
2311
2322
  // @ts-ignore
2312
2323
  set inputLang(val) {
@@ -2652,6 +2663,9 @@ class StreetNumberComponent {
2652
2663
  if (topSuggestions.constructor === Array) {
2653
2664
  // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));
2654
2665
  for (const sug of topSuggestions) {
2666
+ if (this.showDebugMessageToConsole) {
2667
+ console.log('streetnumber::parseTopSuggestions - suggestion:', sug, 'source:', source);
2668
+ }
2655
2669
  this.parseSingleSuggestion(sug, source);
2656
2670
  }
2657
2671
  if (!source) {
@@ -2732,8 +2746,48 @@ class StreetNumberComponent {
2732
2746
  suggestion.address = suggestionToAdd;
2733
2747
  this.prefillCheckForPerfectMatch(suggestion);
2734
2748
  }
2749
+ if (this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber) {
2750
+ suggestion.address = suggestionToAdd;
2751
+ const isPerfectMatch = this.checkForPerfectMatch(suggestion);
2752
+ if (!isPerfectMatch) {
2753
+ // seems nothing to do?
2754
+ // No need to notify for a incomplete address
2755
+ }
2756
+ }
2735
2757
  }
2736
2758
  }
2759
+ checkForPerfectMatch(suggestion) {
2760
+ if (!this.addressIsComplete) {
2761
+ if (this.showDebugMessageToConsole) {
2762
+ console.log('streetNumber - checking suggestion for perfect match', suggestion, this.searchText);
2763
+ }
2764
+ const sugAddress = suggestion.address;
2765
+ const suggestionStreetNumber = this.transformStreetNumberInLowercaseAndWithoutDiacritics('' + sugAddress.houseNumber);
2766
+ if (suggestionStreetNumber === ('' + this.searchText)) {
2767
+ this.searchText = sugAddress.houseNumber;
2768
+ if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {
2769
+ this.clickSuggestion(null, sugAddress);
2770
+ this.addressIsComplete = true;
2771
+ // console.log('streetNumber::prefillCheckForPerfectMatch', this.addressIsComplete);
2772
+ if (this.showDebugMessageToConsole && this.addressIsComplete === true) {
2773
+ console.log('ADDRESS COMPLETE ON STREET NUMBER !');
2774
+ }
2775
+ return true;
2776
+ }
2777
+ else {
2778
+ if (this.suggestionLevel !== SuggestionLevelType.StreetNumber && this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber) {
2779
+ this.clickSuggestion(null, sugAddress); // house number found
2780
+ }
2781
+ }
2782
+ }
2783
+ }
2784
+ else {
2785
+ if (this.showDebugMessageToConsole) {
2786
+ console.log('streetNumber::prefillCheckForPerfectMatch - Address complete, skipping suggestion check', suggestion);
2787
+ }
2788
+ }
2789
+ return false;
2790
+ }
2737
2791
  prefillCheckForPerfectMatch(suggestion) {
2738
2792
  if (!this.addressIsComplete) {
2739
2793
  if (this.showDebugMessageToConsole) {
@@ -2764,7 +2818,7 @@ class StreetNumberComponent {
2764
2818
  }
2765
2819
  }
2766
2820
  }
2767
- onInputChange(source) {
2821
+ onInputChange_new(source) {
2768
2822
  if (this.showDebugMessageToConsole) {
2769
2823
  console.log('streetNumber::onInputChange', source);
2770
2824
  }
@@ -2789,14 +2843,18 @@ class StreetNumberComponent {
2789
2843
  this.consumedNumber = this.sequenceNumber;
2790
2844
  this.clearSuggestions();
2791
2845
  if (this.suggestionLevel === SuggestionLevelType.None) {
2792
- console.log('do not use suggestions for street number');
2846
+ console.log('(A) do not use suggestions for street number');
2793
2847
  this.streetNumberChanged.emit(this.searchText);
2848
+ if (source === SourceType.SOURCE_PREFILLED)
2849
+ this.prefillAnalyzeData();
2794
2850
  }
2795
2851
  }
2796
2852
  else {
2797
2853
  if (this.suggestionLevel === SuggestionLevelType.None) {
2798
- console.log('do not use suggestions for street number');
2854
+ console.log('(B) do not use suggestions for street number');
2799
2855
  this.streetNumberChanged.emit(this.searchText);
2856
+ if (source === SourceType.SOURCE_PREFILLED)
2857
+ this.prefillAnalyzeData();
2800
2858
  }
2801
2859
  else {
2802
2860
  this.getTopSuggestions(source);
@@ -2804,6 +2862,34 @@ class StreetNumberComponent {
2804
2862
  }
2805
2863
  this.buildInputWordList();
2806
2864
  }
2865
+ onInputChange(source) {
2866
+ if (this.showDebugMessageToConsole) {
2867
+ console.log('streetNumber::onInputChange', source);
2868
+ }
2869
+ this.collapseDropdown = false;
2870
+ this.addressIsValidated = false;
2871
+ this.addressIsComplete = false;
2872
+ // console.log('streetNumber::onInputChange', this.addressIsComplete);
2873
+ this.emptyResponse = true;
2874
+ this.resetArrowSelectedIndex();
2875
+ if (!source) {
2876
+ this.prefilling = false;
2877
+ if (this.showDebugMessageToConsole) {
2878
+ console.log('streetNumber::onInputChange -> calling valueChanged');
2879
+ }
2880
+ this.valueChanged();
2881
+ }
2882
+ this.clearSuggestionValidationMessage();
2883
+ if (this.searchText === '') {
2884
+ this.sequenceNumber += 1;
2885
+ this.consumedNumber = this.sequenceNumber;
2886
+ this.clearSuggestions();
2887
+ }
2888
+ else {
2889
+ this.getTopSuggestions(source);
2890
+ }
2891
+ this.buildInputWordList();
2892
+ }
2807
2893
  clickSuggestion(event, suggestion) {
2808
2894
  this.isPrefillWithNoMatch = false;
2809
2895
  if (this.showDebugMessageToConsole) {
@@ -3086,10 +3172,10 @@ class StreetNumberComponent {
3086
3172
  }
3087
3173
  }
3088
3174
  StreetNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: StreetNumberComponent, deps: [{ token: AddressService }, { token: LocaleService }, { token: i3.TranslateService }, { token: UnicodeService }], target: i0.ɵɵFactoryTarget.Component });
3089
- StreetNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: StreetNumberComponent, selector: "bp-street-number", inputs: { prefillData: "prefillData", showDebugMessageToConsole: "showDebugMessageToConsole", labelResourceKey: "labelResourceKey", maxSuggesionCount: "maxSuggesionCount", visibleSuggesionCount: "visibleSuggesionCount", sortCriteria: "sortCriteria", baseUrl: "baseUrl", addressParams: "addressParams", postalCode: "postalCode", locality: "locality", streetName: "streetName", notInListAllowed: "notInListAllowed", selectedAddress: "selectedAddress", inputLang: "inputLang", messageOption: "messageOption", inputText: "inputText", isReadonly: "isReadonly", suggestionLevel: "suggestionLevel" }, outputs: { messageChanged: "messageChanged", addressChanged: "addressChanged", focusEvent: "focusEvent", blurEvent: "blurEvent", textChangeEvent: "textChangeEvent", emptyResponseEvent: "emptyResponseEvent", clearInputEventEmitter: "clearInputEventEmitter", prefillEventEmitter: "prefillEventEmitter", streetNumberChanged: "streetNumberChanged" }, viewQueries: [{ propertyName: "streetNumberSearchInput", first: true, predicate: ["streetNumberSearchInput"], descendants: true }, { propertyName: "streetNumberList", first: true, predicate: ["streetNumberList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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\" *ngIf=\"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>", styles: [""], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleSuggestionDirective, selector: "[appVisibleSuggestion]", inputs: ["appVisibleSuggestion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "highlightSuggestion": HighlightSuggestionPipe } });
3175
+ StreetNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: StreetNumberComponent, selector: "bp-street-number", inputs: { prefillData: "prefillData", showDebugMessageToConsole: "showDebugMessageToConsole", labelResourceKey: "labelResourceKey", maxSuggesionCount: "maxSuggesionCount", visibleSuggesionCount: "visibleSuggesionCount", sortCriteria: "sortCriteria", baseUrl: "baseUrl", addressParams: "addressParams", postalCode: "postalCode", locality: "locality", streetName: "streetName", notInListAllowed: "notInListAllowed", selectedAddress: "selectedAddress", inputLang: "inputLang", messageOption: "messageOption", inputText: "inputText", isReadonly: "isReadonly", suggestionLevel: "suggestionLevel" }, outputs: { messageChanged: "messageChanged", addressChanged: "addressChanged", focusEvent: "focusEvent", blurEvent: "blurEvent", textChangeEvent: "textChangeEvent", emptyResponseEvent: "emptyResponseEvent", clearInputEventEmitter: "clearInputEventEmitter", prefillEventEmitter: "prefillEventEmitter", streetNumberChanged: "streetNumberChanged" }, viewQueries: [{ propertyName: "streetNumberSearchInput", first: true, predicate: ["streetNumberSearchInput"], descendants: true }, { propertyName: "streetNumberList", first: true, predicate: ["streetNumberList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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>", styles: [""], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleSuggestionDirective, selector: "[appVisibleSuggestion]", inputs: ["appVisibleSuggestion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "highlightSuggestion": HighlightSuggestionPipe } });
3090
3176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: StreetNumberComponent, decorators: [{
3091
3177
  type: Component,
3092
- args: [{ selector: 'bp-street-number', template: "<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\" *ngIf=\"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>", styles: [""] }]
3178
+ args: [{ selector: 'bp-street-number', template: "<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>", styles: [""] }]
3093
3179
  }], ctorParameters: function () { return [{ type: AddressService }, { type: LocaleService }, { type: i3.TranslateService }, { type: UnicodeService }]; }, propDecorators: { streetNumberSearchInput: [{
3094
3180
  type: ViewChild,
3095
3181
  args: ['streetNumberSearchInput', { static: false }]
@@ -3178,6 +3264,7 @@ class BoxNumberComponent {
3178
3264
  this.validationMessageOptions = null;
3179
3265
  this.prefilling = false;
3180
3266
  this.isPrefillWithNoMatch = false;
3267
+ this.SuggestionLevelType = SuggestionLevelType;
3181
3268
  }
3182
3269
  // @ts-ignore
3183
3270
  set inputLang(val) {
@@ -3485,13 +3572,30 @@ class BoxNumberComponent {
3485
3572
  parseTopSuggestions(topSuggestions, source) {
3486
3573
  if (topSuggestions.constructor === Array) {
3487
3574
  // topSuggestions.forEach(this.parseSingleSuggestion.bind(this));
3575
+ let perfectMatchFound = false;
3488
3576
  for (const sug of topSuggestions) {
3489
- this.parseSingleSuggestion(sug, source);
3577
+ console.warn('boxnumber::parsing suggestion:', sug);
3578
+ if (this.parseSingleSuggestion(sug, source) === true) {
3579
+ perfectMatchFound = true;
3580
+ }
3490
3581
  }
3491
3582
  if (!source) {
3492
3583
  if ((topSuggestions.length === 0 || this.emptyResponse) && this.notInListAllowed) {
3493
3584
  this.suggestions.push({ string: this.searchText, 'not-in-list': true });
3494
3585
  }
3586
+ if (this.suggestionLevel === SuggestionLevelType.None || this.suggestionLevel === SuggestionLevelType.StreetNumber) {
3587
+ if (this.showDebugMessageToConsole)
3588
+ console.warn('box number:: no match found - current address: ', this.selectedAddress);
3589
+ if (!perfectMatchFound) {
3590
+ const fakeSug = Object.assign({}, this.selectedAddress);
3591
+ fakeSug.boxNumber = this.searchText;
3592
+ fakeSug.string = this.searchText;
3593
+ fakeSug.isComplete = false;
3594
+ //this.clickSuggestion(null, fakeSug); // do not do this
3595
+ // This is better !
3596
+ this.addressChanged.emit(fakeSug);
3597
+ }
3598
+ }
3495
3599
  }
3496
3600
  else {
3497
3601
  // If prefilling, then check if no match for a non-empty boxNumber
@@ -3528,6 +3632,7 @@ class BoxNumberComponent {
3528
3632
  }
3529
3633
  parseSingleSuggestion(suggestion, source) {
3530
3634
  let suggestionToAdd;
3635
+ let isPerfectMatch = false;
3531
3636
  if (this.localeService.isLocaleFrench() && suggestion.hasOwnProperty('french')) {
3532
3637
  suggestionToAdd = suggestion.french;
3533
3638
  }
@@ -3550,15 +3655,48 @@ class BoxNumberComponent {
3550
3655
  this.suggestions.push(suggestionToAdd);
3551
3656
  if (source === SourceType.SOURCE_PREFILLED) {
3552
3657
  suggestion.address = suggestionToAdd;
3553
- this.prefillCheckForPerfectMatch(suggestion);
3658
+ isPerfectMatch = this.prefillCheckForPerfectMatch(suggestion);
3659
+ }
3660
+ if (this.suggestionLevel !== SuggestionLevelType.StreetAndBoxNumber) {
3661
+ suggestion.address = suggestionToAdd;
3662
+ isPerfectMatch = this.checkForPerfectMatch(suggestion);
3663
+ if (!isPerfectMatch) {
3664
+ // seems nothing to do?
3665
+ // No need to notify for a incomplete address
3666
+ }
3667
+ }
3668
+ }
3669
+ return isPerfectMatch;
3670
+ }
3671
+ checkForPerfectMatch(suggestion) {
3672
+ //if ( !this.addressIsComplete )
3673
+ {
3674
+ if (this.showDebugMessageToConsole) {
3675
+ console.log('box number - checking suggestion for perfect match', suggestion, this.searchText);
3676
+ }
3677
+ const sugAddress = suggestion.address;
3678
+ const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);
3679
+ if (suggestionBoxNumber === ('' + this.searchText)) {
3680
+ //this.prefillData.prefillBoxNumberPerfectMatchFound = true;ç
3681
+ //this.prefillData.prefillBoxNumberPerfectMatchSuggestion = suggestion;
3682
+ this.searchText = sugAddress.boxNumber;
3683
+ if (sugAddress.hasOwnProperty('isComplete') && sugAddress.isComplete === true) {
3684
+ this.clickSuggestion(null, sugAddress);
3685
+ // this.addressIsComplete = true;
3686
+ if (this.showDebugMessageToConsole) {
3687
+ console.log('ADDRESS COMPLETE ON BOX NUMBER !');
3688
+ }
3689
+ return true;
3690
+ }
3554
3691
  }
3555
3692
  }
3693
+ return false;
3556
3694
  }
3557
3695
  prefillCheckForPerfectMatch(suggestion) {
3558
3696
  //if ( !this.addressIsComplete )
3559
3697
  {
3560
3698
  if (this.showDebugMessageToConsole) {
3561
- console.log('box number - checking suggestion for perfect match', this.prefillData, suggestion);
3699
+ console.log('box number - PREFILL checking suggestion for perfect match', this.prefillData, suggestion);
3562
3700
  }
3563
3701
  const sugAddress = suggestion.address;
3564
3702
  const suggestionBoxNumber = this.transformBoxNumberInLowercaseAndWithoutDiacritics('' + sugAddress.boxNumber);
@@ -3575,6 +3713,7 @@ class BoxNumberComponent {
3575
3713
  if (this.showDebugMessageToConsole) {
3576
3714
  console.log('ADDRESS COMPLETE ON BOX NUMBER !');
3577
3715
  }
3716
+ return true;
3578
3717
  }
3579
3718
  }
3580
3719
  }
@@ -3584,8 +3723,9 @@ class BoxNumberComponent {
3584
3723
  console.log('Address complete, skipping suggestion check', suggestion);
3585
3724
  }
3586
3725
  } */
3726
+ return false;
3587
3727
  }
3588
- onInputChange(source) {
3728
+ onInputChange_new(source) {
3589
3729
  this.collapseDropdown = false;
3590
3730
  this.emptyResponse = true;
3591
3731
  this.resetArrowSelectedIndex();
@@ -3614,6 +3754,25 @@ class BoxNumberComponent {
3614
3754
  }
3615
3755
  this.buildInputWordList();
3616
3756
  }
3757
+ onInputChange(source) {
3758
+ this.collapseDropdown = false;
3759
+ this.emptyResponse = true;
3760
+ this.resetArrowSelectedIndex();
3761
+ if (!source) {
3762
+ this.prefilling = false;
3763
+ this.valueChanged();
3764
+ }
3765
+ this.clearSuggestionValidationMessage();
3766
+ if (this.searchText === '') {
3767
+ this.sequenceNumber += 1;
3768
+ this.consumedNumber = this.sequenceNumber;
3769
+ this.clearSuggestions();
3770
+ }
3771
+ else {
3772
+ this.getTopSuggestions(source);
3773
+ }
3774
+ this.buildInputWordList();
3775
+ }
3617
3776
  clickSuggestion(event, suggestion) {
3618
3777
  this.isPrefillWithNoMatch = false;
3619
3778
  event === null || event === void 0 ? void 0 : event.preventDefault();
@@ -3868,10 +4027,10 @@ class BoxNumberComponent {
3868
4027
  }
3869
4028
  }
3870
4029
  BoxNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BoxNumberComponent, deps: [{ token: AddressService }, { token: LocaleService }, { token: i3.TranslateService }, { token: UnicodeService }], target: i0.ɵɵFactoryTarget.Component });
3871
- BoxNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BoxNumberComponent, selector: "bp-box-number", inputs: { prefillData: "prefillData", showDebugMessageToConsole: "showDebugMessageToConsole", labelResourceKey: "labelResourceKey", maxSuggesionCount: "maxSuggesionCount", visibleSuggesionCount: "visibleSuggesionCount", sortCriteria: "sortCriteria", baseUrl: "baseUrl", addressParams: "addressParams", postalCode: "postalCode", locality: "locality", streetName: "streetName", streetNumber: "streetNumber", selectedAddress: "selectedAddress", notInListAllowed: "notInListAllowed", inputLang: "inputLang", messageOption: "messageOption", isReadonly: "isReadonly", suggestionLevel: "suggestionLevel" }, outputs: { messageChanged: "messageChanged", addressChanged: "addressChanged", focusEvent: "focusEvent", blurEvent: "blurEvent", textChangeEvent: "textChangeEvent", emptyResponseEvent: "emptyResponseEvent", clearInputEventEmitter: "clearInputEventEmitter", prefillEventEmitter: "prefillEventEmitter", boxNumberChanged: "boxNumberChanged" }, viewQueries: [{ propertyName: "boxNumberSearchInput", first: true, predicate: ["boxNumberSearchInput"], descendants: true }, { propertyName: "boxNumberList", first: true, predicate: ["boxNumberList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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\" *ngIf=\"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", styles: [""], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleSuggestionDirective, selector: "[appVisibleSuggestion]", inputs: ["appVisibleSuggestion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "highlightSuggestion": HighlightSuggestionPipe } });
4030
+ BoxNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: BoxNumberComponent, selector: "bp-box-number", inputs: { prefillData: "prefillData", showDebugMessageToConsole: "showDebugMessageToConsole", labelResourceKey: "labelResourceKey", maxSuggesionCount: "maxSuggesionCount", visibleSuggesionCount: "visibleSuggesionCount", sortCriteria: "sortCriteria", baseUrl: "baseUrl", addressParams: "addressParams", postalCode: "postalCode", locality: "locality", streetName: "streetName", streetNumber: "streetNumber", selectedAddress: "selectedAddress", notInListAllowed: "notInListAllowed", inputLang: "inputLang", messageOption: "messageOption", isReadonly: "isReadonly", suggestionLevel: "suggestionLevel" }, outputs: { messageChanged: "messageChanged", addressChanged: "addressChanged", focusEvent: "focusEvent", blurEvent: "blurEvent", textChangeEvent: "textChangeEvent", emptyResponseEvent: "emptyResponseEvent", clearInputEventEmitter: "clearInputEventEmitter", prefillEventEmitter: "prefillEventEmitter", boxNumberChanged: "boxNumberChanged" }, viewQueries: [{ propertyName: "boxNumberSearchInput", first: true, predicate: ["boxNumberSearchInput"], descendants: true }, { propertyName: "boxNumberList", first: true, predicate: ["boxNumberList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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", styles: [""], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleSuggestionDirective, selector: "[appVisibleSuggestion]", inputs: ["appVisibleSuggestion"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "highlightSuggestion": HighlightSuggestionPipe } });
3872
4031
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: BoxNumberComponent, decorators: [{
3873
4032
  type: Component,
3874
- args: [{ selector: 'bp-box-number', template: "<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\" *ngIf=\"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", styles: [""] }]
4033
+ args: [{ selector: 'bp-box-number', template: "<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", styles: [""] }]
3875
4034
  }], ctorParameters: function () { return [{ type: AddressService }, { type: LocaleService }, { type: i3.TranslateService }, { type: UnicodeService }]; }, propDecorators: { boxNumberSearchInput: [{
3876
4035
  type: ViewChild,
3877
4036
  args: ['boxNumberSearchInput', { static: false }]
@@ -3958,7 +4117,7 @@ class PrefillData // extends PrefilledParameters
3958
4117
  }
3959
4118
  }
3960
4119
 
3961
- const LIB_VERSION = "1.1.3";
4120
+ const LIB_VERSION = "1.1.5";
3962
4121
 
3963
4122
  class Nis9Service {
3964
4123
  constructor(httpClient) {
@@ -4822,6 +4981,10 @@ class LibAddressAutocompleteByComponentComponent {
4822
4981
  }
4823
4982
  }
4824
4983
  setAddressStreetNumber(streetNumber) {
4984
+ if (this.showDebugMessageToConsole) {
4985
+ console.log('lib::setAddressStreetNumber - streetnumber: ', streetNumber);
4986
+ console.log('lib::setAddressStreetNumber - streetAddress: ', this.streetAddress);
4987
+ }
4825
4988
  this.streetNumberAddress = this.streetAddress;
4826
4989
  this.selectedAddress = this.streetAddress;
4827
4990
  this.selectedAddress.streetNumber = streetNumber;
@@ -4834,7 +4997,9 @@ class LibAddressAutocompleteByComponentComponent {
4834
4997
  this.selectedAddress.boxNumber = '';
4835
4998
  this.addressCompleteEventEmitter.emit(this.selectedAddress);
4836
4999
  this.emittedAddress = this.selectedAddress;
4837
- console.log('set street number value:', streetNumber, 'this.streetNumber:' + this.streetNumber, 'this.minLevel:' + this.minLevel);
5000
+ if (this.showDebugMessageToConsole) {
5001
+ console.log('set street number value:', streetNumber, 'this.streetNumber:' + this.streetNumber, 'this.minLevel:' + this.minLevel);
5002
+ }
4838
5003
  }
4839
5004
  setAddressBoxNumber(boxNumber) {
4840
5005
  console.log('set box number value:', boxNumber);
@@ -4982,6 +5147,22 @@ class LibAddressAutocompleteByComponentComponent {
4982
5147
  this.setAddress(address, ADDRESSLEVEL.STREET);
4983
5148
  // this.quitPrefillMode();
4984
5149
  }
5150
+ else {
5151
+ //this.selectedAddress = address;
5152
+ this.updatePostalCodeLocality(address);
5153
+ this.updateStreetName(address);
5154
+ this.streetAddress = address;
5155
+ this.streetNumberAddress = null;
5156
+ /*
5157
+ this.autocompleteStreetNb.clearWidget();
5158
+ this.autocompleteStreetNb.searchText = '';
5159
+ this.autocompleteBoxNb.clearWidget();
5160
+ this.autocompleteBoxNb.searchText = '';
5161
+ */
5162
+ this.autocompleteStreetNb.searchText = '';
5163
+ this.autocompleteBoxNb.searchText = '';
5164
+ this.autocompleteBoxNb.streetNumber = '';
5165
+ }
4985
5166
  /*
4986
5167
  const streetNumber = this.prefillData.parameters.streetNumber;
4987
5168
  if (streetNumber === null || streetNumber === undefined || streetNumber === '')
@@ -4995,6 +5176,9 @@ class LibAddressAutocompleteByComponentComponent {
4995
5176
  this.streetNumberPrefillData = this.prefillData;
4996
5177
  }
4997
5178
  */
5179
+ if (this.showDebugMessageToConsole) {
5180
+ console.warn('lib::street: prefill - transmitting prefill data for streetNumber :', this.prefillData);
5181
+ }
4998
5182
  this.streetNumberPrefillData = this.prefillData;
4999
5183
  }
5000
5184
  else {
@@ -5016,6 +5200,106 @@ class LibAddressAutocompleteByComponentComponent {
5016
5200
  this.quitPrefillMode();
5017
5201
  }
5018
5202
  }
5203
+ onStreetNumberPrefillEvent_new(event) {
5204
+ if (this.showDebugMessageToConsole) {
5205
+ console.log('lib::street-number prefill event received:', event);
5206
+ }
5207
+ const data = event.prefillData;
5208
+ if (data.prefillStreetNumberPerfectMatchFound === true) {
5209
+ const suggestion = data.prefillStreetNumberPerfectMatchSuggestion;
5210
+ const address = suggestion.address;
5211
+ this.updateStreetNumber(address);
5212
+ this.autocompleteStreetNb.selectedAddress = address;
5213
+ const addressIsComplete = address && address.hasOwnProperty('isComplete') && address.isComplete === true ? true : false;
5214
+ const addressIsNotInList = address && address.hasOwnProperty('not-in-list') && address['not-in-list'] === true ? true : false;
5215
+ if (addressIsComplete && !addressIsNotInList) {
5216
+ // found address - perfect matchat street number level
5217
+ // Nothing to do anymore
5218
+ this.autocompleteStreetNb.addressIsComplete = true;
5219
+ this.quitPrefillMode();
5220
+ }
5221
+ else {
5222
+ this.addressParams.minLevel = ADDRESSLEVEL.BOX_NUMBER;
5223
+ this.prefillData = event.prefillData;
5224
+ this.prefillData.ts = new Date();
5225
+ this.prefillData.parameters.minLevel = ADDRESSLEVEL.BOX_NUMBER;
5226
+ // const suggestionAddressLocalityName
5227
+ // = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address.localityName;
5228
+ const suggestionAddress = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;
5229
+ const suggestionAddressLocalityName = suggestionAddress.localityName;
5230
+ this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;
5231
+ this.prefillData.parameters.municipalityName = suggestionAddressLocalityName;
5232
+ this.prefillData.parameters.postalCode = suggestionAddress.postalCode;
5233
+ this.prefillData.parameters.streetName = suggestionAddress.streetName;
5234
+ this.prefillData.parameters.streetNumber = suggestionAddress.houseNumber;
5235
+ // this.updatePostalCodeLocality(suggestionAddress);
5236
+ // this.updatePostalCodeLocality(suggestionAddress);
5237
+ const boxNumber = this.prefillData.parameters.boxNumber;
5238
+ if (!addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '')) {
5239
+ this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);
5240
+ // this.quitPrefillMode();
5241
+ }
5242
+ else {
5243
+ this.updatePostalCodeLocality(address);
5244
+ this.updateStreetName(address);
5245
+ this.updateStreetNumber(address); // $$
5246
+ this.streetAddress = address;
5247
+ this.streetNumberAddress = address;
5248
+ if (address.hasOwnProperty('isComplete') && address.isComplete === true) {
5249
+ this.autocompleteStreetNb.addressIsComplete = true;
5250
+ if (addressIsNotInList) {
5251
+ this.autocompleteBoxNb.streetNumber = address.houseNumber;
5252
+ }
5253
+ else {
5254
+ this.autocompleteBoxNb.streetNumber = '';
5255
+ }
5256
+ }
5257
+ else {
5258
+ this.autocompleteBoxNb.streetNumber = address.houseNumber;
5259
+ }
5260
+ /*
5261
+ this.autocompleteBoxNb.clearWidget();
5262
+ this.autocompleteBoxNb.searchText = '';
5263
+ */
5264
+ this.autocompleteBoxNb.searchText = '';
5265
+ }
5266
+ /*
5267
+ const boxNumber = this.prefillData.parameters.boxNumber;
5268
+ if ( ! addressIsNotInList && (boxNumber === null || boxNumber === undefined || boxNumber === '') )
5269
+ {
5270
+ this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);
5271
+ this.quitPrefillMode();
5272
+ }
5273
+ else
5274
+ {
5275
+ if (this.showDebugMessageToConsole) { console.log('lib::prefill: trigger checking box number match... ', this.prefillData); }
5276
+ this.boxNumberPrefillData = this.prefillData;
5277
+ }
5278
+ */
5279
+ if (this.showDebugMessageToConsole) {
5280
+ console.warn('lib::streetnumber: prefill - transmitting prefill data for box :', this.prefillData);
5281
+ }
5282
+ this.boxNumberPrefillData = this.prefillData;
5283
+ }
5284
+ }
5285
+ else {
5286
+ const prefillStreetNumber = this.prefillData.parameters.streetNumber;
5287
+ const address = this.prefillData.prefillStreetPerfectMatchSuggestion.address;
5288
+ this.autocompleteBoxNb.streetNumber = '';
5289
+ if (this.showDebugMessageToConsole) {
5290
+ console.error('lib::onStreetNumberPrefillEvent - NO MATCH AT STREET-NUMBER LEVEL', prefillStreetNumber);
5291
+ }
5292
+ if (prefillStreetNumber === null || prefillStreetNumber === undefined || prefillStreetNumber.length === 0) {
5293
+ this.setAddress(address, ADDRESSLEVEL.STREET);
5294
+ }
5295
+ else {
5296
+ // address.houseNumber = prefillStreetNumber;
5297
+ address.searchBarString = prefillStreetNumber;
5298
+ this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);
5299
+ }
5300
+ this.quitPrefillMode();
5301
+ }
5302
+ }
5019
5303
  onStreetNumberPrefillEvent(event) {
5020
5304
  if (this.showDebugMessageToConsole) {
5021
5305
  console.log('lib::street number prefill event received:', event);
@@ -5086,6 +5370,31 @@ class LibAddressAutocompleteByComponentComponent {
5086
5370
  this.quitPrefillMode();
5087
5371
  }
5088
5372
  }
5373
+ onBoxNumberPrefillEvent_new(event) {
5374
+ if (this.showDebugMessageToConsole) {
5375
+ console.log('lib::prefill: box number event received:', event);
5376
+ }
5377
+ const data = event.prefillData;
5378
+ if (data.prefillBoxNumberPerfectMatchFound === true) {
5379
+ const suggestion = data.prefillBoxNumberPerfectMatchSuggestion;
5380
+ const address = suggestion.address;
5381
+ this.autocompleteBoxNb.selectedAddress = address;
5382
+ this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);
5383
+ }
5384
+ else {
5385
+ const prefillBoxNumber = this.prefillData.parameters.boxNumber;
5386
+ const address = this.prefillData.prefillStreetNumberPerfectMatchSuggestion.address;
5387
+ if (prefillBoxNumber === null || prefillBoxNumber === undefined || prefillBoxNumber.length === 0) {
5388
+ this.setAddress(address, ADDRESSLEVEL.STREET_NUMBER);
5389
+ }
5390
+ else {
5391
+ // address.boxNumber = prefillBoxNumber;
5392
+ address.searchBarString = prefillBoxNumber;
5393
+ this.setAddress(address, ADDRESSLEVEL.BOX_NUMBER);
5394
+ }
5395
+ }
5396
+ this.quitPrefillMode();
5397
+ }
5089
5398
  onBoxNumberPrefillEvent(event) {
5090
5399
  if (this.showDebugMessageToConsole) {
5091
5400
  console.log('lib::prefill: box number event received:', event);