@hmcts/rpx-xui-common-lib 1.9.0-postcode-validation → 1.9.0-postcode-style-edit

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.
@@ -8,9 +8,15 @@ export class WriteAddressFieldComponent {
8
8
  this.addressesService = addressesService;
9
9
  this.internationalMode = false;
10
10
  this.submissionAttempted = false;
11
+ this.addressChosen = false;
11
12
  this.postcodeOptionSelected = new EventEmitter();
12
13
  this.internationalModeStart = new EventEmitter();
13
14
  this.ukAddressOptionSelected = new EventEmitter();
15
+ // indicated what error to display to user
16
+ this.canSelectAddress = new EventEmitter();
17
+ // tells parent to reset submission attempted field
18
+ // only relevant to when user re-clicks find address
19
+ this.resetSubmission = new EventEmitter();
14
20
  this.addressField = {
15
21
  addressLine1: '',
16
22
  addressLine2: '',
@@ -21,9 +27,11 @@ export class WriteAddressFieldComponent {
21
27
  county: ''
22
28
  };
23
29
  this.optionErrorsPresent = false;
24
- this.addressChosen = false;
30
+ this.addressSelectable = false;
25
31
  this.missingPostcode = false;
26
32
  this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
33
+ this.postcodeErrorMessage = AddressMessageEnum.NO_POSTCODE_SELECTED;
34
+ this.selectErrorMessage = AddressMessageEnum.SELECT_ADDRESS;
27
35
  }
28
36
  ngOnInit() {
29
37
  if (!this.formGroup.get('address')) {
@@ -37,10 +45,13 @@ export class WriteAddressFieldComponent {
37
45
  postcode: new FormControl(''),
38
46
  addressList: new FormControl('')
39
47
  });
48
+ this.setPostcodeForm();
40
49
  }
41
50
  findAddress() {
51
+ this.resetSubmission.emit();
42
52
  if (!this.addressFormGroup.get('postcode').value) {
43
53
  this.missingPostcode = true;
54
+ this.canSelectAddress.emit(false);
44
55
  }
45
56
  else {
46
57
  this.missingPostcode = false;
@@ -53,6 +64,7 @@ export class WriteAddressFieldComponent {
53
64
  });
54
65
  this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
55
66
  }, (error) => {
67
+ // Edited this so that errors not produced if there are no results for a postcode
56
68
  console.log(`An error occurred retrieving addresses for postcode ${postcode}. ${error}`);
57
69
  this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
58
70
  });
@@ -61,6 +73,7 @@ export class WriteAddressFieldComponent {
61
73
  }
62
74
  blankAddress() {
63
75
  this.setFormValue();
76
+ this.resetSubmission.emit();
64
77
  if (this.internationalMode) {
65
78
  this.internationalModeStart.emit();
66
79
  }
@@ -81,6 +94,7 @@ export class WriteAddressFieldComponent {
81
94
  return hasAddress;
82
95
  }
83
96
  addressSelected() {
97
+ this.missingPostcode = false;
84
98
  this.addressField = this.addressFormGroup.get('addressList').value;
85
99
  this.addressChosen = true;
86
100
  this.setFormValue();
@@ -95,12 +109,17 @@ export class WriteAddressFieldComponent {
95
109
  if (internationalChange && this.addressFormGroup && this.addressFormGroup.get('ukAddress')) {
96
110
  this.addressFormGroup.get('ukAddress').patchValue(this.isInternational ? 'no' : 'yes');
97
111
  }
112
+ if (!this.addressChosen && this.addressFormGroup && this.addressFormGroup.get('addressList')) {
113
+ // resets address options on internal back
114
+ this.addressFormGroup.get('addressList').patchValue(undefined);
115
+ }
98
116
  this.checkIfErrorsNeeded();
99
117
  }
100
118
  checkIfErrorsNeeded() {
101
- if (this.submissionAttempted && this.shouldShowDetailFields() && this.internationalMode && !this.addressChosen) {
119
+ if (this.submissionAttempted && this.internationalMode && !this.postcodeLookupVisible()) {
102
120
  // ensure errors present when submission attmempted on international radio buttons
103
121
  this.optionErrorsPresent = true;
122
+ this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
104
123
  }
105
124
  else {
106
125
  this.optionErrorsPresent = false;
@@ -114,7 +133,16 @@ export class WriteAddressFieldComponent {
114
133
  this.isInternational = isInternational;
115
134
  this.ukAddressOptionSelected.emit(this.isInternational);
116
135
  }
136
+ postcodeErrorPresent(isPostcodeField) {
137
+ const checkForField = isPostcodeField ? !this.addressSelectable : this.addressSelectable;
138
+ return this.submissionAttempted && checkForField;
139
+ }
140
+ postcodeLookupVisible() {
141
+ return !this.shouldShowDetailFields() || (!this.startedInternational && !this.addressChosen);
142
+ }
117
143
  defaultLabel(numberOfAddresses) {
144
+ this.addressSelectable = numberOfAddresses > 0 ? true : false;
145
+ this.canSelectAddress.emit(this.addressSelectable);
118
146
  return numberOfAddresses === 0 ? 'No address found'
119
147
  : `${numberOfAddresses}${numberOfAddresses === 1 ? ' address ' : ' addresses '}found`;
120
148
  }
@@ -123,12 +151,16 @@ export class WriteAddressFieldComponent {
123
151
  this.formGroup.get('address').patchValue(this.addressField);
124
152
  }
125
153
  }
154
+ setPostcodeForm() {
155
+ const postcodeNeeded = this.isInternational === undefined && this.formGroup.get('address') && this.formGroup.get('address').get('postCode');
156
+ this.addressFormGroup.get('postcode').patchValue(postcodeNeeded ? this.formGroup.get('address').get('postCode').value : '');
157
+ }
126
158
  }
127
159
  WriteAddressFieldComponent.decorators = [
128
160
  { type: Component, args: [{
129
161
  selector: 'xuilib-write-address-field',
130
- template: "<div class=\"govuk-form-group\" [formGroup]=\"addressFormGroup\" [ngClass]=\"{'govuk-form-group--error': optionErrorsPresent}\">\n <p class=\"govuk-error-message\" *ngIf=\"optionErrorsPresent\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{optionErrorMessage}}\n </p>\n <div *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\">\n <div class=\"govuk-form-group postcodeLookup\" id=\"addressLookup\"\n [ngClass]=\"{'form-group-error': missingPostcode}\">\n <label for=\"postcodeInput\">\n <span class=\"govuk-label\"><b>Provide address details</b></span>\n <span class=\"govuk-label\">Enter a UK postcode</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">Enter the Postcode</span>\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\" id=\"postcodeInput\" name=\"postcode\"\n class=\"govuk-input govuk-!-width-two-thirds postcodeinput inline-block\" formControlName=\"postcode\">\n <button type=\"button\" class=\"govuk-button\" (click)=\"findAddress()\">Find address</button>\n </div>\n\n <div class=\"govuk-form-group\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <label class=\"govuk-label\" for=\"addressList\">\n <span class=\"form-label\">Select an address</span>\n </label>\n\n <select class=\"form-control govuk-select ccd-dropdown addressList\" id=\"addressList\" name=\"address\"\n formControlName=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description}}\n </option>\n </select>\n </div>\n\n <a class=\"manual-link govuk-link\" *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\" (click)=\"blankAddress()\"\n href=\"javascript:void(0)\">I can't enter a UK postcode</a>\n </div>\n\n <div class=\"govuk-radios\" data-module=\"govuk-radios\"\n *ngIf=\"shouldShowDetailFields() && internationalMode && startedInternational && !addressChosen\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"yes\" value=\"yes\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(false)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"yes\">\n Yes\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"no\" value=\"no\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(true)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"no\">\n No\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"address-fields\">\n <xuilib-write-address-inputs *ngIf=\"isInternational !== undefined\" [formGroup]=\"formGroup\" [isInternational]=\"isInternational\"\n [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n </div>\n </div>\n\n <xuilib-write-address-inputs *ngIf=\"shouldShowDetailFields() && (addressChosen || !internationalMode)\"\n [formGroup]=\"formGroup\" [isInternational]=\"false\" [submissionAttempted]=\"submissionAttempted\"></xuilib-write-address-inputs>\n\n</div>",
131
- styles: [".manual-link{cursor:pointer;text-decoration:underline}.manual-link,:host{display:block}"]
162
+ template: "<div class=\"govuk-form-group\" [formGroup]=\"addressFormGroup\" [ngClass]=\"{'govuk-form-group--error': optionErrorsPresent}\">\n <p class=\"govuk-error-message\" *ngIf=\"optionErrorsPresent\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{optionErrorMessage}}\n </p>\n <div *ngIf=\"postcodeLookupVisible()\">\n <span class=\"govuk-label\"><strong>Provide address details</strong></span>\n <div class=\"govuk-body postcode-lookup\" id=\"addressLookup\" [ngClass]=\"{'govuk-form-group--error': missingPostcode || postcodeErrorPresent(true)}\">\n <p class=\"govuk-error-message\" *ngIf=\"missingPostcode || postcodeErrorPresent(true)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{postcodeErrorMessage}}\n </p>\n <label for=\"postcodeInput\">\n <span class=\"govuk-hint\">Enter a UK postcode</span>\n </label>\n <div class=\"govuk-body\">\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\" id=\"postcodeInput\" name=\"postcode\"\n class=\"govuk-input govuk-!-width-one-third postcodeinput inline-block\" formControlName=\"postcode\">\n <button type=\"button\" class=\"govuk-button find-address\" (click)=\"findAddress()\">Find address</button>\n </div>\n </div>\n\n <div class=\"govuk-body\"\n *ngIf=\"addressOptions\" id=\"selectAddress\">\n <div class=\"govuk-body\"\n [ngClass]=\"{'govuk-form-group--error': postcodeErrorPresent(false)}\">\n <p class=\"govuk-error-message\" *ngIf=\"postcodeErrorPresent(false)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{selectErrorMessage}}\n </p>\n <label class=\"govuk-label\" for=\"addressList\">\n <span class=\"form-label\">Select an address</span>\n </label>\n <select class=\"form-control govuk-select ccd-dropdown addressList\" id=\"addressList\" name=\"address\"\n formControlName=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description}}\n </option>\n </select>\n </div>\n </div>\n\n <a class=\"manual-link govuk-link\" *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\" (click)=\"blankAddress()\"\n href=\"javascript:void(0)\">I can't enter a UK postcode</a>\n </div>\n\n <div id=\"govuk-radios\" class=\"govuk-radios\" data-module=\"govuk-radios\"\n *ngIf=\"shouldShowDetailFields() && internationalMode && startedInternational && !addressChosen\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"yes\" value=\"yes\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(false)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"yes\">\n Yes\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"no\" value=\"no\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(true)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"no\">\n No\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"address-fields\">\n <xuilib-write-address-inputs *ngIf=\"isInternational !== undefined\" [formGroup]=\"formGroup\" [isInternational]=\"isInternational\"\n [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n </div>\n </div>\n\n <xuilib-write-address-inputs *ngIf=\"shouldShowDetailFields() && (addressChosen || !internationalMode)\"\n [formGroup]=\"formGroup\" [isInternational]=\"false\" [submissionAttempted]=\"submissionAttempted\"></xuilib-write-address-inputs>\n\n</div>",
163
+ styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline;font-size:1.1875rem}.postcode-lookup{margin-bottom:-30px}.find-address{left:1%}:host{display:block}"]
132
164
  },] }
133
165
  ];
134
166
  WriteAddressFieldComponent.ctorParameters = () => [
@@ -140,8 +172,11 @@ WriteAddressFieldComponent.propDecorators = {
140
172
  isInternational: [{ type: Input }],
141
173
  submissionAttempted: [{ type: Input }],
142
174
  startedInternational: [{ type: Input }],
175
+ addressChosen: [{ type: Input }],
143
176
  postcodeOptionSelected: [{ type: Output }],
144
177
  internationalModeStart: [{ type: Output }],
145
- ukAddressOptionSelected: [{ type: Output }]
178
+ ukAddressOptionSelected: [{ type: Output }],
179
+ canSelectAddress: [{ type: Output }],
180
+ resetSubmission: [{ type: Output }]
146
181
  };
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dyaXRlLWFkZHJlc3Mvd3JpdGUtYWRkcmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFnQixNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBT3hFLE1BQU0sT0FBTywwQkFBMEI7SUF1Q3JDLFlBQTZCLGdCQUFnQztRQUFoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO1FBbEN0RCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFJMUIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBSWxCLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWhFLGlCQUFZLEdBQWlCO1lBQ2xDLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixPQUFPLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVLLHdCQUFtQixHQUFHLEtBQUss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QUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FDdEMsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7O1lBaEtGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNEJBQTRCO2dCQUV0QywwNkdBQTZDOzthQUM5Qzs7O1lBTlEsY0FBYzs7O3dCQVNwQixLQUFLO2dDQUVMLEtBQUs7OEJBRUwsS0FBSztrQ0FFTCxLQUFLO21DQUVMLEtBQUs7cUNBR0wsTUFBTTtxQ0FDTixNQUFNO3NDQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBZGRyZXNzTWVzc2FnZUVudW0sIEFkZHJlc3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBZGRyZXNzT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZHJlc3Mtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFkZHJlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWRkcmVzcy9hZGRyZXNzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItd3JpdGUtYWRkcmVzcy1maWVsZCcsXG4gIHN0eWxlVXJsczogWycuL3dyaXRlLWFkZHJlc3MuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWFkZHJlc3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQWRkcmVzc0ZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KClcbiAgcHVibGljIGludGVybmF0aW9uYWxNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc0ludGVybmF0aW9uYWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdWJtaXNzaW9uQXR0ZW1wdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydGVkSW50ZXJuYXRpb25hbDogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgcHVibGljIHBvc3Rjb2RlT3B0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW50ZXJuYXRpb25hbE1vZGVTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB1a0FkZHJlc3NPcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgYWRkcmVzc0ZpZWxkOiBBZGRyZXNzTW9kZWwgPSB7XG4gICAgYWRkcmVzc0xpbmUxOiAnJyxcbiAgICBhZGRyZXNzTGluZTI6ICcnLFxuICAgIGFkZHJlc3NMaW5lMzogJycsXG4gICAgcG9zdENvZGU6ICcnLFxuICAgIHBvc3RUb3duOiAnJyxcbiAgICBjb3VudHJ5OiAnJyxcbiAgICBjb3VudHk6ICcnXG4gIH07XG5cbiAgcHVibGljIG9wdGlvbkVycm9yc1ByZXNlbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgYWRkcmVzc0Nob3NlbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhZGRyZXNzRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGFkZHJlc3NPcHRpb25zOiBBZGRyZXNzT3B0aW9uW107XG5cbiAgcHVibGljIG1pc3NpbmdQb3N0Y29kZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBvcHRpb25FcnJvck1lc3NhZ2UgPSBBZGRyZXNzTWVzc2FnZUVudW0uTk9fT1BUSU9OX1NFTEVDVEVEO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzc2VzU2VydmljZTogQWRkcmVzc1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzJywgbmV3IEZvcm1Db250cm9sKHt9KSk7XG4gICAgfVxuICAgIC8vIHNldCB0aGUgZm9ybSBncm91cCByZWxldmFudCB0byBvbmx5IHRoZSBleHRlcm5hbCBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAvLyByZWxldmFudCB0byBpbnRlcm5hdGlvbmFsIG1vZGVcbiAgICAgIHVrQWRkcmVzczogbmV3IEZvcm1Db250cm9sKHRoaXMuaXNJbnRlcm5hdGlvbmFsICE9PSB1bmRlZmluZWQgPyAodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpIDogbnVsbCksXG4gICAgICAvLyByZWxldmFudCB0byBwb3N0b2NvZGUgbG9va3VwXG4gICAgICBwb3N0Y29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGFkZHJlc3NMaXN0OiBuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZEFkZHJlc3MoKSB7XG4gICAgaWYgKCF0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdwb3N0Y29kZScpLnZhbHVlKSB7XG4gICAgICB0aGlzLm1pc3NpbmdQb3N0Y29kZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZHJlc3NGaWVsZCA9IG51bGw7XG4gICAgICBjb25zdCBwb3N0Y29kZSA9IHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3Rjb2RlJykudmFsdWU7XG4gICAgICB0aGlzLmFkZHJlc3NPcHRpb25zID0gW107XG4gICAgICB0aGlzLmFkZHJlc3Nlc1NlcnZpY2UuZ2V0QWRkcmVzc2VzRm9yUG9zdGNvZGUocG9zdGNvZGUucmVwbGFjZSgnICcsICcnKS50b1VwcGVyQ2FzZSgpKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgcmVzdWx0LmZvckVhY2goXG4gICAgICAgICAgICBhZGRyZXNzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy5wdXNoKG5ldyBBZGRyZXNzT3B0aW9uKGFkZHJlc3MsIG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMudW5zaGlmdChcbiAgICAgICAgICAgIG5ldyBBZGRyZXNzT3B0aW9uKHVuZGVmaW5lZCwgdGhpcy5kZWZhdWx0TGFiZWwodGhpcy5hZGRyZXNzT3B0aW9ucy5sZW5ndGgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBBbiBlcnJvciBvY2N1cnJlZCByZXRyaWV2aW5nIGFkZHJlc3NlcyBmb3IgcG9zdGNvZGUgJHtwb3N0Y29kZX0uICR7ZXJyb3J9YCk7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgICAgbmV3IEFkZHJlc3NPcHRpb24odW5kZWZpbmVkLCB0aGlzLmRlZmF1bHRMYWJlbCh0aGlzLmFkZHJlc3NPcHRpb25zLmxlbmd0aCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJsYW5rQWRkcmVzcygpIHtcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIGlmICh0aGlzLmludGVybmF0aW9uYWxNb2RlKSB7XG4gICAgICB0aGlzLmludGVybmF0aW9uYWxNb2RlU3RhcnQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzaG91bGRTaG93RGV0YWlsRmllbGRzKCkge1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWRkcmVzcyA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpLnZhbHVlO1xuICAgIGxldCBoYXNBZGRyZXNzID0gZmFsc2U7XG4gICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgIE9iamVjdC5rZXlzKGFkZHJlc3MpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoYWRkcmVzc1trZXldICE9PSBudWxsKSB7XG4gICAgICAgICAgaGFzQWRkcmVzcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaGFzQWRkcmVzcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRyZXNzU2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5hZGRyZXNzRmllbGQgPSB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnZhbHVlO1xuICAgIHRoaXMuYWRkcmVzc0Nob3NlbiA9IHRydWU7XG4gICAgdGhpcy5zZXRGb3JtVmFsdWUoKTtcbiAgICB0aGlzLnBvc3Rjb2RlT3B0aW9uU2VsZWN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBhZGRyZXNzQ2hhbmdlID0gY2hhbmdlc1snYWRkcmVzc0ZpZWxkJ107XG4gICAgY29uc3QgaW50ZXJuYXRpb25hbENoYW5nZSA9IGNoYW5nZXNbJ2lzSW50ZXJuYXRpb25hbCddO1xuICAgIGlmIChhZGRyZXNzQ2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuYXRpb25hbENoYW5nZSAmJiB0aGlzLmFkZHJlc3NGb3JtR3JvdXAgJiYgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgndWtBZGRyZXNzJykpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3VrQWRkcmVzcycpLnBhdGNoVmFsdWUodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrSWZFcnJvcnNOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZkVycm9yc05lZWRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJtaXNzaW9uQXR0ZW1wdGVkICYmIHRoaXMuc2hvdWxkU2hvd0RldGFpbEZpZWxkcygpICYmIHRoaXMuaW50ZXJuYXRpb25hbE1vZGUgJiYgIXRoaXMuYWRkcmVzc0Nob3Nlbikge1xuICAgICAgLy8gZW5zdXJlIGVycm9ycyBwcmVzZW50IHdoZW4gc3VibWlzc2lvbiBhdHRtZW1wdGVkIG9uIGludGVybmF0aW9uYWwgcmFkaW8gYnV0dG9uc1xuICAgICAgdGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbkVycm9yc1ByZXNlbnQgJiYgKHRoaXMuYWRkcmVzc0Nob3NlbiB8fCB0aGlzLmlzSW50ZXJuYXRpb25hbCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgLy8gZW5zdXJlIHBhcmVudCBlcnJvcnMgbm90IHByZXNlbnQgd2hlbiB0aGUgY2hpbGQgZm9ybSBncm91cCBpcyBwcmVzZW50XG4gICAgICB0aGlzLm9wdGlvbkVycm9yc1ByZXNlbnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0SW50ZXJuYXRpb25hbEFkZHJlc3MoaXNJbnRlcm5hdGlvbmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0ludGVybmF0aW9uYWwgPSBpc0ludGVybmF0aW9uYWw7XG4gICAgdGhpcy51a0FkZHJlc3NPcHRpb25TZWxlY3RlZC5lbWl0KHRoaXMuaXNJbnRlcm5hdGlvbmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVmYXVsdExhYmVsKG51bWJlck9mQWRkcmVzc2VzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbnVtYmVyT2ZBZGRyZXNzZXMgPT09IDAgPyAnTm8gYWRkcmVzcyBmb3VuZCdcbiAgICAgIDogYCR7bnVtYmVyT2ZBZGRyZXNzZXN9JHtudW1iZXJPZkFkZHJlc3NlcyA9PT0gMSA/ICcgYWRkcmVzcyAnIDogJyBhZGRyZXNzZXMgJ31mb3VuZGA7XG4gIH1cblxuICBwcml2YXRlIHNldEZvcm1WYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpLnBhdGNoVmFsdWUoXG4gICAgICAgIHRoaXMuYWRkcmVzc0ZpZWxkXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dyaXRlLWFkZHJlc3Mvd3JpdGUtYWRkcmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFnQixNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBT3hFLE1BQU0sT0FBTywwQkFBMEI7SUErQ3JDLFlBQTZCLGdCQUFnQztRQUFoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO1FBMUN0RCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFJMUIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBSTVCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRVosMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xELDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdkUsMENBQTBDO1FBQ3pCLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEUsbURBQW1EO1FBQ25ELG9EQUFvRDtRQUNuQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckQsaUJBQVksR0FBaUI7WUFDbEMsWUFBWSxFQUFFLEVBQUU7WUFDaEIsWUFBWSxFQUFF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TUFBTTtxQ0FDTixNQUFNO3NDQUNOLE1BQU07K0JBRU4sTUFBTTs4QkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWRkcmVzc01lc3NhZ2VFbnVtLCBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWRkcmVzc09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzLW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkZHJlc3MvYWRkcmVzcy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXdyaXRlLWFkZHJlc3MtZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1hZGRyZXNzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1hZGRyZXNzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbnRlcm5hdGlvbmFsTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnRlcm5hdGlvbmFsOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VibWlzc2lvbkF0dGVtcHRlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRlZEludGVybmF0aW9uYWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZGRyZXNzQ2hvc2VuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBwb3N0Y29kZU9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGludGVybmF0aW9uYWxNb2RlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdWtBZGRyZXNzT3B0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vIGluZGljYXRlZCB3aGF0IGVycm9yIHRvIGRpc3BsYXkgdG8gdXNlclxuICBAT3V0cHV0KCkgcHVibGljIGNhblNlbGVjdEFkZHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vIHRlbGxzIHBhcmVudCB0byByZXNldCBzdWJtaXNzaW9uIGF0dGVtcHRlZCBmaWVsZFxuICAvLyBvbmx5IHJlbGV2YW50IHRvIHdoZW4gdXNlciByZS1jbGlja3MgZmluZCBhZGRyZXNzXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzZXRTdWJtaXNzaW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBhZGRyZXNzRmllbGQ6IEFkZHJlc3NNb2RlbCA9IHtcbiAgICBhZGRyZXNzTGluZTE6ICcnLFxuICAgIGFkZHJlc3NMaW5lMjogJycsXG4gICAgYWRkcmVzc0xpbmUzOiAnJyxcbiAgICBwb3N0Q29kZTogJycsXG4gICAgcG9zdFRvd246ICcnLFxuICAgIGNvdW50cnk6ICcnLFxuICAgIGNvdW50eTogJydcbiAgfTtcblxuICBwdWJsaWMgb3B0aW9uRXJyb3JzUHJlc2VudCA9IGZhbHNlO1xuICBwdWJsaWMgYWRkcmVzc1NlbGVjdGFibGUgPSBmYWxzZTtcblxuICBwdWJsaWMgYWRkcmVzc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBhZGRyZXNzT3B0aW9uczogQWRkcmVzc09wdGlvbltdO1xuXG4gIHB1YmxpYyBtaXNzaW5nUG9zdGNvZGUgPSBmYWxzZTtcblxuICBwdWJsaWMgb3B0aW9uRXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLk5PX09QVElPTl9TRUxFQ1RFRDtcbiAgcHVibGljIHBvc3Rjb2RlRXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLk5PX1BPU1RDT0RFX1NFTEVDVEVEO1xuICBwdWJsaWMgc2VsZWN0RXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLlNFTEVDVF9BRERSRVNTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzc2VzU2VydmljZTogQWRkcmVzc1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzJywgbmV3IEZvcm1Db250cm9sKHt9KSk7XG4gICAgfVxuICAgIC8vIHNldCB0aGUgZm9ybSBncm91cCByZWxldmFudCB0byBvbmx5IHRoZSBleHRlcm5hbCBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAvLyByZWxldmFudCB0byBpbnRlcm5hdGlvbmFsIG1vZGVcbiAgICAgIHVrQWRkcmVzczogbmV3IEZvcm1Db250cm9sKHRoaXMuaXNJbnRlcm5hdGlvbmFsICE9PSB1bmRlZmluZWQgPyAodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpIDogbnVsbCksXG4gICAgICAvLyByZWxldmFudCB0byBwb3N0b2NvZGUgbG9va3VwXG4gICAgICBwb3N0Y29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGFkZHJlc3NMaXN0OiBuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgfSk7XG4gICAgdGhpcy5zZXRQb3N0Y29kZUZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWRkcmVzcygpIHtcbiAgICB0aGlzLnJlc2V0U3VibWlzc2lvbi5lbWl0KCk7XG4gICAgaWYgKCF0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdwb3N0Y29kZScpLnZhbHVlKSB7XG4gICAgICB0aGlzLm1pc3NpbmdQb3N0Y29kZSA9IHRydWU7XG4gICAgICB0aGlzLmNhblNlbGVjdEFkZHJlc3MuZW1pdChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZHJlc3NGaWVsZCA9IG51bGw7XG4gICAgICBjb25zdCBwb3N0Y29kZSA9IHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3Rjb2RlJykudmFsdWU7XG4gICAgICB0aGlzLmFkZHJlc3NPcHRpb25zID0gW107XG4gICAgICB0aGlzLmFkZHJlc3Nlc1NlcnZpY2UuZ2V0QWRkcmVzc2VzRm9yUG9zdGNvZGUocG9zdGNvZGUucmVwbGFjZSgnICcsICcnKS50b1VwcGVyQ2FzZSgpKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgcmVzdWx0LmZvckVhY2goXG4gICAgICAgICAgICBhZGRyZXNzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy5wdXNoKG5ldyBBZGRyZXNzT3B0aW9uKGFkZHJlc3MsIG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMudW5zaGlmdChcbiAgICAgICAgICAgIG5ldyBBZGRyZXNzT3B0aW9uKHVuZGVmaW5lZCwgdGhpcy5kZWZhdWx0TGFiZWwodGhpcy5hZGRyZXNzT3B0aW9ucy5sZW5ndGgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIC8vIEVkaXRlZCB0aGlzIHNvIHRoYXQgZXJyb3JzIG5vdCBwcm9kdWNlZCBpZiB0aGVyZSBhcmUgbm8gcmVzdWx0cyBmb3IgYSBwb3N0Y29kZVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBBbiBlcnJvciBvY2N1cnJlZCByZXRyaWV2aW5nIGFkZHJlc3NlcyBmb3IgcG9zdGNvZGUgJHtwb3N0Y29kZX0uICR7ZXJyb3J9YCk7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgICAgbmV3IEFkZHJlc3NPcHRpb24odW5kZWZpbmVkLCB0aGlzLmRlZmF1bHRMYWJlbCh0aGlzLmFkZHJlc3NPcHRpb25zLmxlbmd0aCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJsYW5rQWRkcmVzcygpIHtcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIHRoaXMucmVzZXRTdWJtaXNzaW9uLmVtaXQoKTtcbiAgICBpZiAodGhpcy5pbnRlcm5hdGlvbmFsTW9kZSkge1xuICAgICAgdGhpcy5pbnRlcm5hdGlvbmFsTW9kZVN0YXJ0LmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvdWxkU2hvd0RldGFpbEZpZWxkcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKS52YWx1ZTtcbiAgICBsZXQgaGFzQWRkcmVzcyA9IGZhbHNlO1xuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICBPYmplY3Qua2V5cyhhZGRyZXNzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGFkZHJlc3Nba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICAgIGhhc0FkZHJlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgYWRkcmVzc1NlbGVjdGVkKCkge1xuICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZGRyZXNzRmllbGQgPSB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnZhbHVlO1xuICAgIHRoaXMuYWRkcmVzc0Nob3NlbiA9IHRydWU7XG4gICAgdGhpcy5zZXRGb3JtVmFsdWUoKTtcbiAgICB0aGlzLnBvc3Rjb2RlT3B0aW9uU2VsZWN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBhZGRyZXNzQ2hhbmdlID0gY2hhbmdlc1snYWRkcmVzc0ZpZWxkJ107XG4gICAgY29uc3QgaW50ZXJuYXRpb25hbENoYW5nZSA9IGNoYW5nZXNbJ2lzSW50ZXJuYXRpb25hbCddO1xuICAgIGlmIChhZGRyZXNzQ2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuYXRpb25hbENoYW5nZSAmJiB0aGlzLmFkZHJlc3NGb3JtR3JvdXAgJiYgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgndWtBZGRyZXNzJykpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3VrQWRkcmVzcycpLnBhdGNoVmFsdWUodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWRkcmVzc0Nob3NlbiAmJiB0aGlzLmFkZHJlc3NGb3JtR3JvdXAgJiYgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgnYWRkcmVzc0xpc3QnKSkge1xuICAgICAgLy8gcmVzZXRzIGFkZHJlc3Mgb3B0aW9ucyBvbiBpbnRlcm5hbCBiYWNrXG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnBhdGNoVmFsdWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5jaGVja0lmRXJyb3JzTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZFcnJvcnNOZWVkZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbkF0dGVtcHRlZCAmJiB0aGlzLmludGVybmF0aW9uYWxNb2RlICYmICF0aGlzLnBvc3Rjb2RlTG9va3VwVmlzaWJsZSgpKSB7XG4gICAgICAvLyBlbnN1cmUgZXJyb3JzIHByZXNlbnQgd2hlbiBzdWJtaXNzaW9uIGF0dG1lbXB0ZWQgb24gaW50ZXJuYXRpb25hbCByYWRpbyBidXR0b25zXG4gICAgICB0aGlzLm9wdGlvbkVycm9yc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgdGhpcy5vcHRpb25FcnJvck1lc3NhZ2UgPSBBZGRyZXNzTWVzc2FnZUVudW0uTk9fT1BUSU9OX1NFTEVDVEVEO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uRXJyb3JzUHJlc2VudCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ICYmICh0aGlzLmFkZHJlc3NDaG9zZW4gfHwgdGhpcy5pc0ludGVybmF0aW9uYWwgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIC8vIGVuc3VyZSBwYXJlbnQgZXJyb3JzIG5vdCBwcmVzZW50IHdoZW4gdGhlIGNoaWxkIGZvcm0gZ3JvdXAgaXMgcHJlc2VudFxuICAgICAgdGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEludGVybmF0aW9uYWxBZGRyZXNzKGlzSW50ZXJuYXRpb25hbDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNJbnRlcm5hdGlvbmFsID0gaXNJbnRlcm5hdGlvbmFsO1xuICAgIHRoaXMudWtBZGRyZXNzT3B0aW9uU2VsZWN0ZWQuZW1pdCh0aGlzLmlzSW50ZXJuYXRpb25hbCk7XG4gIH1cblxuICBwdWJsaWMgcG9zdGNvZGVFcnJvclByZXNlbnQoaXNQb3N0Y29kZUZpZWxkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hlY2tGb3JGaWVsZCA9IGlzUG9zdGNvZGVGaWVsZCA/ICF0aGlzLmFkZHJlc3NTZWxlY3RhYmxlIDogdGhpcy5hZGRyZXNzU2VsZWN0YWJsZTtcbiAgICByZXR1cm4gdGhpcy5zdWJtaXNzaW9uQXR0ZW1wdGVkICYmIGNoZWNrRm9yRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgcG9zdGNvZGVMb29rdXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zaG91bGRTaG93RGV0YWlsRmllbGRzKCkgfHwgKCF0aGlzLnN0YXJ0ZWRJbnRlcm5hdGlvbmFsICYmICF0aGlzLmFkZHJlc3NDaG9zZW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZhdWx0TGFiZWwobnVtYmVyT2ZBZGRyZXNzZXM6IG51bWJlcikge1xuICAgIHRoaXMuYWRkcmVzc1NlbGVjdGFibGUgPSBudW1iZXJPZkFkZHJlc3NlcyA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5jYW5TZWxlY3RBZGRyZXNzLmVtaXQodGhpcy5hZGRyZXNzU2VsZWN0YWJsZSk7XG4gICAgcmV0dXJuIG51bWJlck9mQWRkcmVzc2VzID09PSAwID8gJ05vIGFkZHJlc3MgZm91bmQnXG4gICAgICA6IGAke251bWJlck9mQWRkcmVzc2VzfSR7bnVtYmVyT2ZBZGRyZXNzZXMgPT09IDEgPyAnIGFkZHJlc3MgJyA6ICcgYWRkcmVzc2VzICd9Zm91bmRgO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKS5wYXRjaFZhbHVlKFxuICAgICAgICB0aGlzLmFkZHJlc3NGaWVsZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBvc3Rjb2RlRm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCBwb3N0Y29kZU5lZWRlZCA9IHRoaXMuaXNJbnRlcm5hdGlvbmFsID09PSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJykgJiYgdGhpcy5mb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJykuZ2V0KCdwb3N0Q29kZScpO1xuICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3Rjb2RlJykucGF0Y2hWYWx1ZShwb3N0Y29kZU5lZWRlZCA/IHRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpLmdldCgncG9zdENvZGUnKS52YWx1ZSA6ICcnKTtcbiAgfVxufVxuIl19
@@ -18,7 +18,7 @@ export class WriteAddressInputsComponent {
18
18
  WriteAddressInputsComponent.decorators = [
19
19
  { type: Component, args: [{
20
20
  selector: 'xuilib-write-address-inputs',
21
- template: "<ng-container>\n <form [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" formGroupName=\"address\" [ngClass]=\"{'govuk-form-group--error': submissionAttempted && errorsPresent}\">\n <label class=\"govuk-label govuk-!-font-weight-bold\">\n Enter address details\n </label>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine1\">\n Building and Street\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('addressLine1').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_STREET_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine1\" name=\"addressLine1\" type=\"text\"\n formControlName=\"addressLine1\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine2\">\n Address line 2 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine2\" name=\"addressLine2\" type=\"text\"\n formControlName=\"addressLine2\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine3\">\n Address line 3 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine3\" name=\"addressLine3\" type=\"text\"\n formControlName=\"addressLine3\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"postTown\">\n Town or City\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('postTown').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_CITY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"postTown\" name=\"postTown\" type=\"text\"\n formControlName=\"postTown\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"county\">\n County{{this.isInternational ? '/ State/ Province' : ''}} (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"county\" name=\"county\" type=\"text\"\n formControlName=\"county\">\n </div>\n\n <div *ngIf=\"isInternational\" class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"country\">\n Country\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('country').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_COUNTRY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"country\" name=\"country\" type=\"text\"\n formControlName=\"country\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"postCode\">\n Postcode{{this.isInternational ? ' (Optional)' : ''}}\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('required')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_POSTCODE_SELECTED}}\n </p>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('invalidPostcode')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.INVALID_POSTCODE}}\n </p>\n <input class=\"govuk-input govuk-!-width-one-third\" id=\"postCode\" name=\"postCode\" type=\"text\"\n formControlName=\"postCode\">\n </div>\n </div>\n</form>\n</ng-container>"
21
+ template: "<ng-container>\n <form [formGroup]=\"formGroup\">\n <div class=\"govuk-body\" formGroupName=\"address\" [ngClass]=\"{'govuk-form-group--error': submissionAttempted && errorsPresent}\">\n <label class=\"govuk-label govuk-!-font-weight-bold\">\n Enter address details\n </label>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine1\">\n Building and Street\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('addressLine1').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_STREET_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine1\" name=\"addressLine1\" type=\"text\"\n formControlName=\"addressLine1\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine2\">\n Address line 2 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine2\" name=\"addressLine2\" type=\"text\"\n formControlName=\"addressLine2\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine3\">\n Address line 3 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine3\" name=\"addressLine3\" type=\"text\"\n formControlName=\"addressLine3\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"postTown\">\n Town or City\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('postTown').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_CITY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"postTown\" name=\"postTown\" type=\"text\"\n formControlName=\"postTown\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"county\">\n County{{this.isInternational ? '/ State/ Province' : ''}} (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"county\" name=\"county\" type=\"text\"\n formControlName=\"county\">\n </div>\n\n <div *ngIf=\"isInternational\" class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"country\">\n Country\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('country').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_COUNTRY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"country\" name=\"country\" type=\"text\"\n formControlName=\"country\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"postCode\">\n Postcode{{this.isInternational ? ' (Optional)' : ''}}\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('required')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_POSTCODE_SELECTED}}\n </p>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('invalidPostcode')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.INVALID_POSTCODE}}\n </p>\n <input class=\"govuk-input govuk-!-width-one-third\" id=\"postCode\" name=\"postCode\" type=\"text\"\n formControlName=\"postCode\">\n </div>\n </div>\n</form>\n</ng-container>"
22
22
  },] }
23
23
  ];
24
24
  WriteAddressInputsComponent.ctorParameters = () => [];
@@ -27,4 +27,4 @@ WriteAddressInputsComponent.propDecorators = {
27
27
  isInternational: [{ type: Input }],
28
28
  submissionAttempted: [{ type: Input }]
29
29
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy93cml0ZS1hZGRyZXNzLWlucHV0cy93cml0ZS1hZGRyZXNzLWlucHV0cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU1sRCxNQUFNLE9BQU8sMkJBQTJCO0lBaUJ0QztRQWZPLGlCQUFZLEdBQUcsa0JBQWtCLENBQUM7UUFNbEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHeEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRzdCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUMzQyxDQUFDOzs7WUE1QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLGd0SEFBb0Q7YUFDckQ7Ozs7d0JBS0UsS0FBSzs4QkFHTCxLQUFLO2tDQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFkZHJlc3NNZXNzYWdlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi13cml0ZS1hZGRyZXNzLWlucHV0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1hZGRyZXNzLWlucHV0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVBZGRyZXNzSW5wdXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBwdWJsaWMgTUVTU0FHRV9FTlVNID0gQWRkcmVzc01lc3NhZ2VFbnVtO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnRlcm5hdGlvbmFsID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1Ym1pc3Npb25BdHRlbXB0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgbWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG5cbiAgcHVibGljIGVycm9yc1ByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBhZGRyZXNzR3JvdXAgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKTtcbiAgICAvLyBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIHRoZSBmb3JtZ3JvdXAsIGVuc3VyZSBlcnJvciBzdHlsaW5nIGlzIGRpc3BsYXllZFxuICAgIHRoaXMuZXJyb3JzUHJlc2VudCA9ICFhZGRyZXNzR3JvdXAudmFsaWQ7XG4gIH1cblxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy93cml0ZS1hZGRyZXNzLWlucHV0cy93cml0ZS1hZGRyZXNzLWlucHV0cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU1sRCxNQUFNLE9BQU8sMkJBQTJCO0lBaUJ0QztRQWZPLGlCQUFZLEdBQUcsa0JBQWtCLENBQUM7UUFNbEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHeEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBRzdCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztJQUMzQyxDQUFDOzs7WUE1QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLGdxSEFBb0Q7YUFDckQ7Ozs7d0JBS0UsS0FBSzs4QkFHTCxLQUFLO2tDQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFkZHJlc3NNZXNzYWdlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi13cml0ZS1hZGRyZXNzLWlucHV0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1hZGRyZXNzLWlucHV0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVBZGRyZXNzSW5wdXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBwdWJsaWMgTUVTU0FHRV9FTlVNID0gQWRkcmVzc01lc3NhZ2VFbnVtO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnRlcm5hdGlvbmFsID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1Ym1pc3Npb25BdHRlbXB0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgbWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG5cbiAgcHVibGljIGVycm9yc1ByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBhZGRyZXNzR3JvdXAgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKTtcbiAgICAvLyBpZiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIHRoZSBmb3JtZ3JvdXAsIGVuc3VyZSBlcnJvciBzdHlsaW5nIGlzIGRpc3BsYXllZFxuICAgIHRoaXMuZXJyb3JzUHJlc2VudCA9ICFhZGRyZXNzR3JvdXAudmFsaWQ7XG4gIH1cblxufVxuIl19
@@ -1,10 +1,11 @@
1
1
  export var AddressMessageEnum;
2
2
  (function (AddressMessageEnum) {
3
- AddressMessageEnum["NO_OPTION_SELECTED"] = "Please select an answer";
3
+ AddressMessageEnum["NO_OPTION_SELECTED"] = "Select an option";
4
4
  AddressMessageEnum["NO_STREET_SELECTED"] = "Enter building and street";
5
5
  AddressMessageEnum["NO_CITY_SELECTED"] = "Enter town or city";
6
6
  AddressMessageEnum["NO_COUNTRY_SELECTED"] = "Enter country";
7
- AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter postcode";
7
+ AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter a valid postcode";
8
+ AddressMessageEnum["SELECT_ADDRESS"] = "Select an address";
8
9
  AddressMessageEnum["INVALID_POSTCODE"] = "Enter valid postcode";
9
10
  })(AddressMessageEnum || (AddressMessageEnum = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1tZXNzYWdlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9tb2RlbHMvYWRkcmVzcy1tZXNzYWdlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBUVQ7QUFSSCxXQUFZLGtCQUFrQjtJQUMxQixvRUFBOEMsQ0FBQTtJQUM5QyxzRUFBZ0QsQ0FBQTtJQUNoRCw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2QywrREFBeUMsQ0FBQTtBQUUzQyxDQUFDLEVBUlMsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVEzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFkZHJlc3NNZXNzYWdlRW51bSB7XG4gICAgTk9fT1BUSU9OX1NFTEVDVEVEID0gJ1BsZWFzZSBzZWxlY3QgYW4gYW5zd2VyJyxcbiAgICBOT19TVFJFRVRfU0VMRUNURUQgPSAnRW50ZXIgYnVpbGRpbmcgYW5kIHN0cmVldCcsXG4gICAgTk9fQ0lUWV9TRUxFQ1RFRCA9ICdFbnRlciB0b3duIG9yIGNpdHknLFxuICAgIE5PX0NPVU5UUllfU0VMRUNURUQgPSAnRW50ZXIgY291bnRyeScsXG4gICAgTk9fUE9TVENPREVfU0VMRUNURUQgPSAnRW50ZXIgcG9zdGNvZGUnLFxuICAgIElOVkFMSURfUE9TVENPREUgPSAnRW50ZXIgdmFsaWQgcG9zdGNvZGUnXG5cbiAgfSJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1tZXNzYWdlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9tb2RlbHMvYWRkcmVzcy1tZXNzYWdlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBUVQ7QUFSSCxXQUFZLGtCQUFrQjtJQUMxQiw2REFBdUMsQ0FBQTtJQUN2QyxzRUFBZ0QsQ0FBQTtJQUNoRCw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyxxRUFBK0MsQ0FBQTtJQUMvQywwREFBb0MsQ0FBQTtJQUNwQywrREFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBUlMsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVEzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFkZHJlc3NNZXNzYWdlRW51bSB7XG4gICAgTk9fT1BUSU9OX1NFTEVDVEVEID0gJ1NlbGVjdCBhbiBvcHRpb24nLFxuICAgIE5PX1NUUkVFVF9TRUxFQ1RFRCA9ICdFbnRlciBidWlsZGluZyBhbmQgc3RyZWV0JyxcbiAgICBOT19DSVRZX1NFTEVDVEVEID0gJ0VudGVyIHRvd24gb3IgY2l0eScsXG4gICAgTk9fQ09VTlRSWV9TRUxFQ1RFRCA9ICdFbnRlciBjb3VudHJ5JyxcbiAgICBOT19QT1NUQ09ERV9TRUxFQ1RFRCA9ICdFbnRlciBhIHZhbGlkIHBvc3Rjb2RlJyxcbiAgICBTRUxFQ1RfQUREUkVTUyA9ICdTZWxlY3QgYW4gYWRkcmVzcycsXG4gICAgSU5WQUxJRF9QT1NUQ09ERSA9ICdFbnRlciB2YWxpZCBwb3N0Y29kZSdcbiAgfSJdfQ==
@@ -11,7 +11,7 @@ export class AddressService {
11
11
  return this.http
12
12
  .get('/external/addresses?postcode=${postcode}'.replace('${postcode}', postcode), undefined)
13
13
  .pipe(map((res) => res.results))
14
- .pipe(map(output => output.map((addresses) => this.format(new AddressParser().parse(addresses[AddressType.DPA])))));
14
+ .pipe(map(output => output ? output.map((addresses) => this.format(new AddressParser().parse(addresses[AddressType.DPA]))) : []));
15
15
  }
16
16
  format(addressModel) {
17
17
  return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
@@ -47,4 +47,4 @@ AddressService.decorators = [
47
47
  AddressService.ctorParameters = () => [
48
48
  { type: HttpClient }
49
49
  ];
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvYWRkcmVzcy9hZGRyZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUM3QyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBZ0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBTSwwQ0FBMEMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQW1CLENBQUM7YUFDMUcsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNCLElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDbkUsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQTBCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxZQUEwQjtRQUNuRCxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUN4RyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNwRCxJQUFJLFlBQVksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO1lBQ3BDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN0RCxZQUFZLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUNoQztRQUNELElBQUksWUFBWSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7WUFDcEMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3RELFlBQVksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFnQjtRQUNwQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7O1lBaERGLFVBQVU7OztZQVJGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWRkcmVzc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFkZHJlc3NQYXJzZXIgfSBmcm9tICcuL2FkZHJlc3MtcGFyc2VyJztcbmltcG9ydCB7IEFkZHJlc3NUeXBlIH0gZnJvbSAnLi9hZGRyZXNzLXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGRyZXNzU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWRkcmVzc2VzRm9yUG9zdGNvZGUocG9zdGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8QWRkcmVzc01vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oJy9leHRlcm5hbC9hZGRyZXNzZXM/cG9zdGNvZGU9JHtwb3N0Y29kZX0nLnJlcGxhY2UoJyR7cG9zdGNvZGV9JywgcG9zdGNvZGUpLCB1bmRlZmluZWQgYXMgb2JqZWN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiByZXMucmVzdWx0cykpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKG91dHB1dCA9PiBvdXRwdXQubWFwKChhZGRyZXNzZXM6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmZvcm1hdChuZXcgQWRkcmVzc1BhcnNlcigpLnBhcnNlKGFkZHJlc3Nlc1tBZGRyZXNzVHlwZS5EUEFdKSlcbiAgICAgICAgKSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdChhZGRyZXNzTW9kZWw6IEFkZHJlc3NNb2RlbCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdEFkZHJlc3NMaW5lcyh0aGlzLnNoaWZ0QWRkcmVzc0xpbmVzVXAoYWRkcmVzc01vZGVsKSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEFkZHJlc3NMaW5lcyhhZGRyZXNzTW9kZWw6IEFkZHJlc3NNb2RlbCkge1xuICAgIFsnYWRkcmVzc0xpbmUxJywgJ2FkZHJlc3NMaW5lMicsICdhZGRyZXNzTGluZTMnLCAncG9zdFRvd24nXS5mb3JFYWNoKCh2YWx1ZToga2V5b2YgdHlwZW9mIGFkZHJlc3NNb2RlbCkgPT4ge1xuICAgICAgYWRkcmVzc01vZGVsW3ZhbHVlXSA9IHRoaXMudG9DYXBpdGFsQ2FzZShhZGRyZXNzTW9kZWxbdmFsdWVdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWRkcmVzc01vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdEFkZHJlc3NMaW5lc1VwKGFkZHJlc3NNb2RlbDogQWRkcmVzc01vZGVsKSB7XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTIgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuYWRkcmVzc0xpbmUyID0gYWRkcmVzc01vZGVsLmFkZHJlc3NMaW5lMztcbiAgICAgIGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTMgPSAnJztcbiAgICB9XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTEgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuYWRkcmVzc0xpbmUxID0gYWRkcmVzc01vZGVsLmFkZHJlc3NMaW5lMjtcbiAgICAgIGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTIgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3NNb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9DYXBpdGFsQ2FzZShzZW50ZW5jZTogc3RyaW5nKSB7XG4gICAgc2VudGVuY2UgPSBzZW50ZW5jZS50b0xvd2VyQ2FzZSgpO1xuICAgIHNlbnRlbmNlLnNwbGl0KCcgJykuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgc2VudGVuY2UgPSBzZW50ZW5jZS5yZXBsYWNlKHZhbHVlLCB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnN1YnN0cigxKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc2VudGVuY2U7XG4gIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvYWRkcmVzcy9hZGRyZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUM3QyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBZ0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBTSwwQ0FBMEMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQW1CLENBQUM7YUFDMUcsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNCLElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNuRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDUixDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUEwQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsWUFBMEI7UUFDbkQsQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7WUFDeEcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsWUFBMEI7UUFDcEQsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTtZQUNwQyxZQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDdEQsWUFBWSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDaEM7UUFDRCxJQUFJLFlBQVksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO1lBQ3BDLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUN0RCxZQUFZLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUNoQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBZ0I7UUFDcEMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OztZQWhERixVQUFVOzs7WUFSRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFkZHJlc3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBZGRyZXNzUGFyc2VyIH0gZnJvbSAnLi9hZGRyZXNzLXBhcnNlcic7XG5pbXBvcnQgeyBBZGRyZXNzVHlwZSB9IGZyb20gJy4vYWRkcmVzcy10eXBlLmVudW0nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWRkcmVzc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge1xuICB9XG5cbiAgcHVibGljIGdldEFkZHJlc3Nlc0ZvclBvc3Rjb2RlKHBvc3Rjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFkZHJlc3NNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnk+KCcvZXh0ZXJuYWwvYWRkcmVzc2VzP3Bvc3Rjb2RlPSR7cG9zdGNvZGV9Jy5yZXBsYWNlKCcke3Bvc3Rjb2RlfScsIHBvc3Rjb2RlKSwgdW5kZWZpbmVkIGFzIG9iamVjdClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLnJlc3VsdHMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChvdXRwdXQgPT4gb3V0cHV0ID8gb3V0cHV0Lm1hcCgoYWRkcmVzc2VzOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5mb3JtYXQobmV3IEFkZHJlc3NQYXJzZXIoKS5wYXJzZShhZGRyZXNzZXNbQWRkcmVzc1R5cGUuRFBBXSkpXG4gICAgICAgICkgOiBbXSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdChhZGRyZXNzTW9kZWw6IEFkZHJlc3NNb2RlbCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdEFkZHJlc3NMaW5lcyh0aGlzLnNoaWZ0QWRkcmVzc0xpbmVzVXAoYWRkcmVzc01vZGVsKSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEFkZHJlc3NMaW5lcyhhZGRyZXNzTW9kZWw6IEFkZHJlc3NNb2RlbCkge1xuICAgIFsnYWRkcmVzc0xpbmUxJywgJ2FkZHJlc3NMaW5lMicsICdhZGRyZXNzTGluZTMnLCAncG9zdFRvd24nXS5mb3JFYWNoKCh2YWx1ZToga2V5b2YgdHlwZW9mIGFkZHJlc3NNb2RlbCkgPT4ge1xuICAgICAgYWRkcmVzc01vZGVsW3ZhbHVlXSA9IHRoaXMudG9DYXBpdGFsQ2FzZShhZGRyZXNzTW9kZWxbdmFsdWVdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWRkcmVzc01vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdEFkZHJlc3NMaW5lc1VwKGFkZHJlc3NNb2RlbDogQWRkcmVzc01vZGVsKSB7XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTIgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuYWRkcmVzc0xpbmUyID0gYWRkcmVzc01vZGVsLmFkZHJlc3NMaW5lMztcbiAgICAgIGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTMgPSAnJztcbiAgICB9XG4gICAgaWYgKGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTEgPT09ICcnKSB7XG4gICAgICBhZGRyZXNzTW9kZWwuYWRkcmVzc0xpbmUxID0gYWRkcmVzc01vZGVsLmFkZHJlc3NMaW5lMjtcbiAgICAgIGFkZHJlc3NNb2RlbC5hZGRyZXNzTGluZTIgPSAnJztcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3NNb2RlbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9DYXBpdGFsQ2FzZShzZW50ZW5jZTogc3RyaW5nKSB7XG4gICAgc2VudGVuY2UgPSBzZW50ZW5jZS50b0xvd2VyQ2FzZSgpO1xuICAgIHNlbnRlbmNlLnNwbGl0KCcgJykuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgc2VudGVuY2UgPSBzZW50ZW5jZS5yZXBsYWNlKHZhbHVlLCB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnN1YnN0cigxKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc2VudGVuY2U7XG4gIH1cbn1cbiJdfQ==
@@ -16,10 +16,11 @@ export class FeatureToggleGuard {
16
16
  * in the data array for the route:
17
17
  * - needsFeaturesEnabled: An array of feature keys that need to be enabled for this route
18
18
  * - featureDisabledRedirect: the URL to redirect to when the this route is not accessible due to disabled features
19
+ * - expectFeatureEnabled: Sets whether a route should be enabled/disabled based on whether feature is present
19
20
  * @param route Automatically provided by Angular
20
21
  */
21
22
  canActivate(route) {
22
- return combineLatest(...route.data.needsFeaturesEnabled.map(feature => this.featureToggleService.getValueOnce(feature, false))).pipe(map(featureStatuses => featureStatuses.every(status => status)), map(status => status || this.router.parseUrl(route.data.featureDisabledRedirect)));
23
+ return combineLatest([...route.data.needsFeaturesEnabled.map(feature => this.featureToggleService.getValueOnce(feature, false))]).pipe(map(featureStatuses => featureStatuses.every(status => status)), map(status => (route.data.expectFeatureEnabled !== false && status) || (route.data.expectFeatureEnabled === false && !status) || this.router.parseUrl(route.data.featureDisabledRedirect)));
23
24
  }
24
25
  }
25
26
  FeatureToggleGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function FeatureToggleGuard_Factory() { return new FeatureToggleGuard(i0.ɵɵinject(i1.FeatureToggleService), i0.ɵɵinject(i2.Router)); }, token: FeatureToggleGuard, providedIn: "root" });
@@ -32,4 +33,4 @@ FeatureToggleGuard.ctorParameters = () => [
32
33
  { type: FeatureToggleService },
33
34
  { type: Router }
34
35
  ];
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS10b2dnbGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy9mZWF0dXJlLXRvZ2dsZS9mZWF0dXJlLXRvZ2dsZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUMsTUFBTSxFQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLaEUsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQixZQUNxQixvQkFBMEMsRUFDMUMsTUFBYztRQURkLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNoQyxDQUFDO0lBRUo7Ozs7OztPQU1HO0lBQ0ksV0FBVyxDQUFDLEtBQTZCO1FBQzVDLE9BQU8sYUFBYSxDQUFDLEdBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBaUMsQ0FBQyxHQUFHLENBQ2pFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBVSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQ2pGLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQy9ELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUFpQyxDQUFDLENBQUMsQ0FDOUYsQ0FBQztJQUNOLENBQUM7Ozs7WUF4QkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFKUSxvQkFBb0I7WUFIaUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmUtdG9nZ2xlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVUb2dnbGVHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlVG9nZ2xlU2VydmljZTogRmVhdHVyZVRvZ2dsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBVc2FnZTogQWRkIHRoZSBGZWF0dXJlVG9nZ2xlR3VhcmQgYXMgdGhlIEd1YXJkIGZvciBhIHJvdXRlLCBhbmQgcHJvdmlkZSB0aGUgZm9sbG93aW5nXG4gICAgICogaW4gdGhlIGRhdGEgYXJyYXkgZm9yIHRoZSByb3V0ZTpcbiAgICAgKiAtIG5lZWRzRmVhdHVyZXNFbmFibGVkOiBBbiBhcnJheSBvZiBmZWF0dXJlIGtleXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgcm91dGVcbiAgICAgKiAtIGZlYXR1cmVEaXNhYmxlZFJlZGlyZWN0OiB0aGUgVVJMIHRvIHJlZGlyZWN0IHRvIHdoZW4gdGhlIHRoaXMgcm91dGUgaXMgbm90IGFjY2Vzc2libGUgZHVlIHRvIGRpc2FibGVkIGZlYXR1cmVzXG4gICAgICogQHBhcmFtIHJvdXRlIEF1dG9tYXRpY2FsbHkgcHJvdmlkZWQgYnkgQW5ndWxhclxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoLi4uKHJvdXRlLmRhdGEubmVlZHNGZWF0dXJlc0VuYWJsZWQgYXMgc3RyaW5nW10pLm1hcChcbiAgICAgICAgICAgICAgICBmZWF0dXJlID0+IHRoaXMuZmVhdHVyZVRvZ2dsZVNlcnZpY2UuZ2V0VmFsdWVPbmNlPGJvb2xlYW4+KGZlYXR1cmUsIGZhbHNlKVxuICAgICAgICApKS5waXBlKFxuICAgICAgICAgICAgbWFwKGZlYXR1cmVTdGF0dXNlcyA9PiBmZWF0dXJlU3RhdHVzZXMuZXZlcnkoc3RhdHVzID0+IHN0YXR1cykpLFxuICAgICAgICAgICAgbWFwKHN0YXR1cyA9PiBzdGF0dXMgfHwgdGhpcy5yb3V0ZXIucGFyc2VVcmwocm91dGUuZGF0YS5mZWF0dXJlRGlzYWJsZWRSZWRpcmVjdCBhcyBzdHJpbmcpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS10b2dnbGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy9mZWF0dXJlLXRvZ2dsZS9mZWF0dXJlLXRvZ2dsZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUMsTUFBTSxFQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLaEUsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQixZQUNxQixvQkFBMEMsRUFDMUMsTUFBYztRQURkLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNoQyxDQUFDO0lBRUo7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxLQUE2QjtRQUM1QyxPQUFPLGFBQWEsQ0FBQyxDQUFDLEdBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBaUMsQ0FBQyxHQUFHLENBQ2xFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBVSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQ2pGLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDL0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBaUMsQ0FBQyxDQUFDLENBQ3ZNLENBQUM7SUFDTixDQUFDOzs7O1lBekJKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBSlEsb0JBQW9CO1lBSGlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlLXRvZ2dsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlVG9nZ2xlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVRvZ2dsZVNlcnZpY2U6IEZlYXR1cmVUb2dnbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogVXNhZ2U6IEFkZCB0aGUgRmVhdHVyZVRvZ2dsZUd1YXJkIGFzIHRoZSBHdWFyZCBmb3IgYSByb3V0ZSwgYW5kIHByb3ZpZGUgdGhlIGZvbGxvd2luZ1xuICAgICAqIGluIHRoZSBkYXRhIGFycmF5IGZvciB0aGUgcm91dGU6XG4gICAgICogLSBuZWVkc0ZlYXR1cmVzRW5hYmxlZDogQW4gYXJyYXkgb2YgZmVhdHVyZSBrZXlzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIHJvdXRlXG4gICAgICogLSBmZWF0dXJlRGlzYWJsZWRSZWRpcmVjdDogdGhlIFVSTCB0byByZWRpcmVjdCB0byB3aGVuIHRoZSB0aGlzIHJvdXRlIGlzIG5vdCBhY2Nlc3NpYmxlIGR1ZSB0byBkaXNhYmxlZCBmZWF0dXJlc1xuICAgICAqIC0gZXhwZWN0RmVhdHVyZUVuYWJsZWQ6IFNldHMgd2hldGhlciBhIHJvdXRlIHNob3VsZCBiZSBlbmFibGVkL2Rpc2FibGVkIGJhc2VkIG9uIHdoZXRoZXIgZmVhdHVyZSBpcyBwcmVzZW50XG4gICAgICogQHBhcmFtIHJvdXRlIEF1dG9tYXRpY2FsbHkgcHJvdmlkZWQgYnkgQW5ndWxhclxuICAgICAqL1xuICAgIHB1YmxpYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoWy4uLihyb3V0ZS5kYXRhLm5lZWRzRmVhdHVyZXNFbmFibGVkIGFzIHN0cmluZ1tdKS5tYXAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZSA9PiB0aGlzLmZlYXR1cmVUb2dnbGVTZXJ2aWNlLmdldFZhbHVlT25jZTxib29sZWFuPihmZWF0dXJlLCBmYWxzZSlcbiAgICAgICAgKV0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoZmVhdHVyZVN0YXR1c2VzID0+IGZlYXR1cmVTdGF0dXNlcy5ldmVyeShzdGF0dXMgPT4gc3RhdHVzKSksXG4gICAgICAgICAgICBtYXAoc3RhdHVzID0+IChyb3V0ZS5kYXRhLmV4cGVjdEZlYXR1cmVFbmFibGVkICE9PSBmYWxzZSAmJiBzdGF0dXMpIHx8IChyb3V0ZS5kYXRhLmV4cGVjdEZlYXR1cmVFbmFibGVkID09PSBmYWxzZSAmJiAhc3RhdHVzKSB8fCB0aGlzLnJvdXRlci5wYXJzZVVybChyb3V0ZS5kYXRhLmZlYXR1cmVEaXNhYmxlZFJlZGlyZWN0IGFzIHN0cmluZykpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -399,10 +399,11 @@ class FeatureToggleGuard {
399
399
  * in the data array for the route:
400
400
  * - needsFeaturesEnabled: An array of feature keys that need to be enabled for this route
401
401
  * - featureDisabledRedirect: the URL to redirect to when the this route is not accessible due to disabled features
402
+ * - expectFeatureEnabled: Sets whether a route should be enabled/disabled based on whether feature is present
402
403
  * @param route Automatically provided by Angular
403
404
  */
404
405
  canActivate(route) {
405
- return combineLatest(...route.data.needsFeaturesEnabled.map(feature => this.featureToggleService.getValueOnce(feature, false))).pipe(map(featureStatuses => featureStatuses.every(status => status)), map(status => status || this.router.parseUrl(route.data.featureDisabledRedirect)));
406
+ return combineLatest([...route.data.needsFeaturesEnabled.map(feature => this.featureToggleService.getValueOnce(feature, false))]).pipe(map(featureStatuses => featureStatuses.every(status => status)), map(status => (route.data.expectFeatureEnabled !== false && status) || (route.data.expectFeatureEnabled === false && !status) || this.router.parseUrl(route.data.featureDisabledRedirect)));
406
407
  }
407
408
  }
408
409
  FeatureToggleGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function FeatureToggleGuard_Factory() { return new FeatureToggleGuard(i0.ɵɵinject(FeatureToggleService), i0.ɵɵinject(i1.Router)); }, token: FeatureToggleGuard, providedIn: "root" });
@@ -472,11 +473,12 @@ LaunchDarklyService.decorators = [
472
473
 
473
474
  var AddressMessageEnum;
474
475
  (function (AddressMessageEnum) {
475
- AddressMessageEnum["NO_OPTION_SELECTED"] = "Please select an answer";
476
+ AddressMessageEnum["NO_OPTION_SELECTED"] = "Select an option";
476
477
  AddressMessageEnum["NO_STREET_SELECTED"] = "Enter building and street";
477
478
  AddressMessageEnum["NO_CITY_SELECTED"] = "Enter town or city";
478
479
  AddressMessageEnum["NO_COUNTRY_SELECTED"] = "Enter country";
479
- AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter postcode";
480
+ AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter a valid postcode";
481
+ AddressMessageEnum["SELECT_ADDRESS"] = "Select an address";
480
482
  AddressMessageEnum["INVALID_POSTCODE"] = "Enter valid postcode";
481
483
  })(AddressMessageEnum || (AddressMessageEnum = {}));
482
484
 
@@ -642,7 +644,7 @@ class AddressService {
642
644
  return this.http
643
645
  .get('/external/addresses?postcode=${postcode}'.replace('${postcode}', postcode), undefined)
644
646
  .pipe(map((res) => res.results))
645
- .pipe(map(output => output.map((addresses) => this.format(new AddressParser().parse(addresses[AddressType.DPA])))));
647
+ .pipe(map(output => output ? output.map((addresses) => this.format(new AddressParser().parse(addresses[AddressType.DPA]))) : []));
646
648
  }
647
649
  format(addressModel) {
648
650
  return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
@@ -4071,9 +4073,15 @@ class WriteAddressFieldComponent {
4071
4073
  this.addressesService = addressesService;
4072
4074
  this.internationalMode = false;
4073
4075
  this.submissionAttempted = false;
4076
+ this.addressChosen = false;
4074
4077
  this.postcodeOptionSelected = new EventEmitter();
4075
4078
  this.internationalModeStart = new EventEmitter();
4076
4079
  this.ukAddressOptionSelected = new EventEmitter();
4080
+ // indicated what error to display to user
4081
+ this.canSelectAddress = new EventEmitter();
4082
+ // tells parent to reset submission attempted field
4083
+ // only relevant to when user re-clicks find address
4084
+ this.resetSubmission = new EventEmitter();
4077
4085
  this.addressField = {
4078
4086
  addressLine1: '',
4079
4087
  addressLine2: '',
@@ -4084,9 +4092,11 @@ class WriteAddressFieldComponent {
4084
4092
  county: ''
4085
4093
  };
4086
4094
  this.optionErrorsPresent = false;
4087
- this.addressChosen = false;
4095
+ this.addressSelectable = false;
4088
4096
  this.missingPostcode = false;
4089
4097
  this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
4098
+ this.postcodeErrorMessage = AddressMessageEnum.NO_POSTCODE_SELECTED;
4099
+ this.selectErrorMessage = AddressMessageEnum.SELECT_ADDRESS;
4090
4100
  }
4091
4101
  ngOnInit() {
4092
4102
  if (!this.formGroup.get('address')) {
@@ -4100,10 +4110,13 @@ class WriteAddressFieldComponent {
4100
4110
  postcode: new FormControl(''),
4101
4111
  addressList: new FormControl('')
4102
4112
  });
4113
+ this.setPostcodeForm();
4103
4114
  }
4104
4115
  findAddress() {
4116
+ this.resetSubmission.emit();
4105
4117
  if (!this.addressFormGroup.get('postcode').value) {
4106
4118
  this.missingPostcode = true;
4119
+ this.canSelectAddress.emit(false);
4107
4120
  }
4108
4121
  else {
4109
4122
  this.missingPostcode = false;
@@ -4116,6 +4129,7 @@ class WriteAddressFieldComponent {
4116
4129
  });
4117
4130
  this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
4118
4131
  }, (error) => {
4132
+ // Edited this so that errors not produced if there are no results for a postcode
4119
4133
  console.log(`An error occurred retrieving addresses for postcode ${postcode}. ${error}`);
4120
4134
  this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
4121
4135
  });
@@ -4124,6 +4138,7 @@ class WriteAddressFieldComponent {
4124
4138
  }
4125
4139
  blankAddress() {
4126
4140
  this.setFormValue();
4141
+ this.resetSubmission.emit();
4127
4142
  if (this.internationalMode) {
4128
4143
  this.internationalModeStart.emit();
4129
4144
  }
@@ -4144,6 +4159,7 @@ class WriteAddressFieldComponent {
4144
4159
  return hasAddress;
4145
4160
  }
4146
4161
  addressSelected() {
4162
+ this.missingPostcode = false;
4147
4163
  this.addressField = this.addressFormGroup.get('addressList').value;
4148
4164
  this.addressChosen = true;
4149
4165
  this.setFormValue();
@@ -4158,12 +4174,17 @@ class WriteAddressFieldComponent {
4158
4174
  if (internationalChange && this.addressFormGroup && this.addressFormGroup.get('ukAddress')) {
4159
4175
  this.addressFormGroup.get('ukAddress').patchValue(this.isInternational ? 'no' : 'yes');
4160
4176
  }
4177
+ if (!this.addressChosen && this.addressFormGroup && this.addressFormGroup.get('addressList')) {
4178
+ // resets address options on internal back
4179
+ this.addressFormGroup.get('addressList').patchValue(undefined);
4180
+ }
4161
4181
  this.checkIfErrorsNeeded();
4162
4182
  }
4163
4183
  checkIfErrorsNeeded() {
4164
- if (this.submissionAttempted && this.shouldShowDetailFields() && this.internationalMode && !this.addressChosen) {
4184
+ if (this.submissionAttempted && this.internationalMode && !this.postcodeLookupVisible()) {
4165
4185
  // ensure errors present when submission attmempted on international radio buttons
4166
4186
  this.optionErrorsPresent = true;
4187
+ this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
4167
4188
  }
4168
4189
  else {
4169
4190
  this.optionErrorsPresent = false;
@@ -4177,7 +4198,16 @@ class WriteAddressFieldComponent {
4177
4198
  this.isInternational = isInternational;
4178
4199
  this.ukAddressOptionSelected.emit(this.isInternational);
4179
4200
  }
4201
+ postcodeErrorPresent(isPostcodeField) {
4202
+ const checkForField = isPostcodeField ? !this.addressSelectable : this.addressSelectable;
4203
+ return this.submissionAttempted && checkForField;
4204
+ }
4205
+ postcodeLookupVisible() {
4206
+ return !this.shouldShowDetailFields() || (!this.startedInternational && !this.addressChosen);
4207
+ }
4180
4208
  defaultLabel(numberOfAddresses) {
4209
+ this.addressSelectable = numberOfAddresses > 0 ? true : false;
4210
+ this.canSelectAddress.emit(this.addressSelectable);
4181
4211
  return numberOfAddresses === 0 ? 'No address found'
4182
4212
  : `${numberOfAddresses}${numberOfAddresses === 1 ? ' address ' : ' addresses '}found`;
4183
4213
  }
@@ -4186,12 +4216,16 @@ class WriteAddressFieldComponent {
4186
4216
  this.formGroup.get('address').patchValue(this.addressField);
4187
4217
  }
4188
4218
  }
4219
+ setPostcodeForm() {
4220
+ const postcodeNeeded = this.isInternational === undefined && this.formGroup.get('address') && this.formGroup.get('address').get('postCode');
4221
+ this.addressFormGroup.get('postcode').patchValue(postcodeNeeded ? this.formGroup.get('address').get('postCode').value : '');
4222
+ }
4189
4223
  }
4190
4224
  WriteAddressFieldComponent.decorators = [
4191
4225
  { type: Component, args: [{
4192
4226
  selector: 'xuilib-write-address-field',
4193
- template: "<div class=\"govuk-form-group\" [formGroup]=\"addressFormGroup\" [ngClass]=\"{'govuk-form-group--error': optionErrorsPresent}\">\n <p class=\"govuk-error-message\" *ngIf=\"optionErrorsPresent\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{optionErrorMessage}}\n </p>\n <div *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\">\n <div class=\"govuk-form-group postcodeLookup\" id=\"addressLookup\"\n [ngClass]=\"{'form-group-error': missingPostcode}\">\n <label for=\"postcodeInput\">\n <span class=\"govuk-label\"><b>Provide address details</b></span>\n <span class=\"govuk-label\">Enter a UK postcode</span>\n </label>\n <span class=\"error-message\" *ngIf=\"missingPostcode\">Enter the Postcode</span>\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\" id=\"postcodeInput\" name=\"postcode\"\n class=\"govuk-input govuk-!-width-two-thirds postcodeinput inline-block\" formControlName=\"postcode\">\n <button type=\"button\" class=\"govuk-button\" (click)=\"findAddress()\">Find address</button>\n </div>\n\n <div class=\"govuk-form-group\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <label class=\"govuk-label\" for=\"addressList\">\n <span class=\"form-label\">Select an address</span>\n </label>\n\n <select class=\"form-control govuk-select ccd-dropdown addressList\" id=\"addressList\" name=\"address\"\n formControlName=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description}}\n </option>\n </select>\n </div>\n\n <a class=\"manual-link govuk-link\" *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\" (click)=\"blankAddress()\"\n href=\"javascript:void(0)\">I can't enter a UK postcode</a>\n </div>\n\n <div class=\"govuk-radios\" data-module=\"govuk-radios\"\n *ngIf=\"shouldShowDetailFields() && internationalMode && startedInternational && !addressChosen\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"yes\" value=\"yes\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(false)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"yes\">\n Yes\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"no\" value=\"no\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(true)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"no\">\n No\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"address-fields\">\n <xuilib-write-address-inputs *ngIf=\"isInternational !== undefined\" [formGroup]=\"formGroup\" [isInternational]=\"isInternational\"\n [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n </div>\n </div>\n\n <xuilib-write-address-inputs *ngIf=\"shouldShowDetailFields() && (addressChosen || !internationalMode)\"\n [formGroup]=\"formGroup\" [isInternational]=\"false\" [submissionAttempted]=\"submissionAttempted\"></xuilib-write-address-inputs>\n\n</div>",
4194
- styles: [".manual-link{cursor:pointer;text-decoration:underline}.manual-link,:host{display:block}"]
4227
+ template: "<div class=\"govuk-form-group\" [formGroup]=\"addressFormGroup\" [ngClass]=\"{'govuk-form-group--error': optionErrorsPresent}\">\n <p class=\"govuk-error-message\" *ngIf=\"optionErrorsPresent\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{optionErrorMessage}}\n </p>\n <div *ngIf=\"postcodeLookupVisible()\">\n <span class=\"govuk-label\"><strong>Provide address details</strong></span>\n <div class=\"govuk-body postcode-lookup\" id=\"addressLookup\" [ngClass]=\"{'govuk-form-group--error': missingPostcode || postcodeErrorPresent(true)}\">\n <p class=\"govuk-error-message\" *ngIf=\"missingPostcode || postcodeErrorPresent(true)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{postcodeErrorMessage}}\n </p>\n <label for=\"postcodeInput\">\n <span class=\"govuk-hint\">Enter a UK postcode</span>\n </label>\n <div class=\"govuk-body\">\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\" id=\"postcodeInput\" name=\"postcode\"\n class=\"govuk-input govuk-!-width-one-third postcodeinput inline-block\" formControlName=\"postcode\">\n <button type=\"button\" class=\"govuk-button find-address\" (click)=\"findAddress()\">Find address</button>\n </div>\n </div>\n\n <div class=\"govuk-body\"\n *ngIf=\"addressOptions\" id=\"selectAddress\">\n <div class=\"govuk-body\"\n [ngClass]=\"{'govuk-form-group--error': postcodeErrorPresent(false)}\">\n <p class=\"govuk-error-message\" *ngIf=\"postcodeErrorPresent(false)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{selectErrorMessage}}\n </p>\n <label class=\"govuk-label\" for=\"addressList\">\n <span class=\"form-label\">Select an address</span>\n </label>\n <select class=\"form-control govuk-select ccd-dropdown addressList\" id=\"addressList\" name=\"address\"\n formControlName=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description}}\n </option>\n </select>\n </div>\n </div>\n\n <a class=\"manual-link govuk-link\" *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\" (click)=\"blankAddress()\"\n href=\"javascript:void(0)\">I can't enter a UK postcode</a>\n </div>\n\n <div id=\"govuk-radios\" class=\"govuk-radios\" data-module=\"govuk-radios\"\n *ngIf=\"shouldShowDetailFields() && internationalMode && startedInternational && !addressChosen\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"yes\" value=\"yes\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(false)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"yes\">\n Yes\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"no\" value=\"no\" name=\"ukAddress\" type=\"radio\" data-aria-controls=\"address-fields\"\n (click)=\"setInternationalAddress(true)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"no\">\n No\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"address-fields\">\n <xuilib-write-address-inputs *ngIf=\"isInternational !== undefined\" [formGroup]=\"formGroup\" [isInternational]=\"isInternational\"\n [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n </div>\n </div>\n\n <xuilib-write-address-inputs *ngIf=\"shouldShowDetailFields() && (addressChosen || !internationalMode)\"\n [formGroup]=\"formGroup\" [isInternational]=\"false\" [submissionAttempted]=\"submissionAttempted\"></xuilib-write-address-inputs>\n\n</div>",
4228
+ styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline;font-size:1.1875rem}.postcode-lookup{margin-bottom:-30px}.find-address{left:1%}:host{display:block}"]
4195
4229
  },] }
4196
4230
  ];
4197
4231
  WriteAddressFieldComponent.ctorParameters = () => [
@@ -4203,9 +4237,12 @@ WriteAddressFieldComponent.propDecorators = {
4203
4237
  isInternational: [{ type: Input }],
4204
4238
  submissionAttempted: [{ type: Input }],
4205
4239
  startedInternational: [{ type: Input }],
4240
+ addressChosen: [{ type: Input }],
4206
4241
  postcodeOptionSelected: [{ type: Output }],
4207
4242
  internationalModeStart: [{ type: Output }],
4208
- ukAddressOptionSelected: [{ type: Output }]
4243
+ ukAddressOptionSelected: [{ type: Output }],
4244
+ canSelectAddress: [{ type: Output }],
4245
+ resetSubmission: [{ type: Output }]
4209
4246
  };
4210
4247
 
4211
4248
  class WriteAddressInputsComponent {
@@ -4225,7 +4262,7 @@ class WriteAddressInputsComponent {
4225
4262
  WriteAddressInputsComponent.decorators = [
4226
4263
  { type: Component, args: [{
4227
4264
  selector: 'xuilib-write-address-inputs',
4228
- template: "<ng-container>\n <form [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" formGroupName=\"address\" [ngClass]=\"{'govuk-form-group--error': submissionAttempted && errorsPresent}\">\n <label class=\"govuk-label govuk-!-font-weight-bold\">\n Enter address details\n </label>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine1\">\n Building and Street\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('addressLine1').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_STREET_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine1\" name=\"addressLine1\" type=\"text\"\n formControlName=\"addressLine1\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine2\">\n Address line 2 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine2\" name=\"addressLine2\" type=\"text\"\n formControlName=\"addressLine2\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"addressLine3\">\n Address line 3 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine3\" name=\"addressLine3\" type=\"text\"\n formControlName=\"addressLine3\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"postTown\">\n Town or City\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('postTown').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_CITY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"postTown\" name=\"postTown\" type=\"text\"\n formControlName=\"postTown\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"county\">\n County{{this.isInternational ? '/ State/ Province' : ''}} (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"county\" name=\"county\" type=\"text\"\n formControlName=\"county\">\n </div>\n\n <div *ngIf=\"isInternational\" class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"country\">\n Country\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('country').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_COUNTRY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"country\" name=\"country\" type=\"text\"\n formControlName=\"country\">\n </div>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"postCode\">\n Postcode{{this.isInternational ? ' (Optional)' : ''}}\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('required')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_POSTCODE_SELECTED}}\n </p>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('invalidPostcode')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.INVALID_POSTCODE}}\n </p>\n <input class=\"govuk-input govuk-!-width-one-third\" id=\"postCode\" name=\"postCode\" type=\"text\"\n formControlName=\"postCode\">\n </div>\n </div>\n</form>\n</ng-container>"
4265
+ template: "<ng-container>\n <form [formGroup]=\"formGroup\">\n <div class=\"govuk-body\" formGroupName=\"address\" [ngClass]=\"{'govuk-form-group--error': submissionAttempted && errorsPresent}\">\n <label class=\"govuk-label govuk-!-font-weight-bold\">\n Enter address details\n </label>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine1\">\n Building and Street\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('addressLine1').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_STREET_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine1\" name=\"addressLine1\" type=\"text\"\n formControlName=\"addressLine1\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine2\">\n Address line 2 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine2\" name=\"addressLine2\" type=\"text\"\n formControlName=\"addressLine2\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"addressLine3\">\n Address line 3 (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-full\" id=\"addressLine3\" name=\"addressLine3\" type=\"text\"\n formControlName=\"addressLine3\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"postTown\">\n Town or City\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('postTown').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_CITY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"postTown\" name=\"postTown\" type=\"text\"\n formControlName=\"postTown\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"county\">\n County{{this.isInternational ? '/ State/ Province' : ''}} (Optional)\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"county\" name=\"county\" type=\"text\"\n formControlName=\"county\">\n </div>\n\n <div *ngIf=\"isInternational\" class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"country\">\n Country\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !formGroup.get('address').get('country').valid\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_COUNTRY_SELECTED}}\n </p>\n <input class=\"govuk-input govuk-!-width-two-thirds\" id=\"country\" name=\"country\" type=\"text\"\n formControlName=\"country\">\n </div>\n\n <div class=\"govuk-body\">\n <label class=\"govuk-label\" for=\"postCode\">\n Postcode{{this.isInternational ? ' (Optional)' : ''}}\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('required')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.NO_POSTCODE_SELECTED}}\n </p>\n <p class=\"govuk-error-message\" *ngIf=\"submissionAttempted && !isInternational && this.formGroup.get('address').get('postCode').hasError('invalidPostcode')\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{MESSAGE_ENUM.INVALID_POSTCODE}}\n </p>\n <input class=\"govuk-input govuk-!-width-one-third\" id=\"postCode\" name=\"postCode\" type=\"text\"\n formControlName=\"postCode\">\n </div>\n </div>\n</form>\n</ng-container>"
4229
4266
  },] }
4230
4267
  ];
4231
4268
  WriteAddressInputsComponent.ctorParameters = () => [];