@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.
- package/bundles/hmcts-rpx-xui-common-lib.umd.js +47 -10
- package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/components/write-address/write-address.component.js +41 -6
- package/esm2015/lib/components/write-address-inputs/write-address-inputs.component.js +2 -2
- package/esm2015/lib/models/address-message.enum.js +4 -3
- package/esm2015/lib/services/address/address.service.js +2 -2
- package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +3 -2
- package/fesm2015/hmcts-rpx-xui-common-lib.js +47 -10
- package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
- package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
- package/lib/components/write-address/write-address.component.d.ts +9 -1
- package/lib/models/address-message.enum.d.ts +3 -2
- package/lib/services/feature-toggle/feature-toggle.guard.d.ts +1 -0
- package/package.json +1 -1
|
@@ -779,11 +779,12 @@
|
|
|
779
779
|
* in the data array for the route:
|
|
780
780
|
* - needsFeaturesEnabled: An array of feature keys that need to be enabled for this route
|
|
781
781
|
* - featureDisabledRedirect: the URL to redirect to when the this route is not accessible due to disabled features
|
|
782
|
+
* - expectFeatureEnabled: Sets whether a route should be enabled/disabled based on whether feature is present
|
|
782
783
|
* @param route Automatically provided by Angular
|
|
783
784
|
*/
|
|
784
785
|
FeatureToggleGuard.prototype.canActivate = function (route) {
|
|
785
786
|
var _this = this;
|
|
786
|
-
return rxjs.combineLatest
|
|
787
|
+
return rxjs.combineLatest(__spread(route.data.needsFeaturesEnabled.map(function (feature) { return _this.featureToggleService.getValueOnce(feature, false); }))).pipe(operators.map(function (featureStatuses) { return featureStatuses.every(function (status) { return status; }); }), operators.map(function (status) { return (route.data.expectFeatureEnabled !== false && status) || (route.data.expectFeatureEnabled === false && !status) || _this.router.parseUrl(route.data.featureDisabledRedirect); }));
|
|
787
788
|
};
|
|
788
789
|
return FeatureToggleGuard;
|
|
789
790
|
}());
|
|
@@ -859,11 +860,12 @@
|
|
|
859
860
|
|
|
860
861
|
exports.AddressMessageEnum = void 0;
|
|
861
862
|
(function (AddressMessageEnum) {
|
|
862
|
-
AddressMessageEnum["NO_OPTION_SELECTED"] = "
|
|
863
|
+
AddressMessageEnum["NO_OPTION_SELECTED"] = "Select an option";
|
|
863
864
|
AddressMessageEnum["NO_STREET_SELECTED"] = "Enter building and street";
|
|
864
865
|
AddressMessageEnum["NO_CITY_SELECTED"] = "Enter town or city";
|
|
865
866
|
AddressMessageEnum["NO_COUNTRY_SELECTED"] = "Enter country";
|
|
866
|
-
AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter postcode";
|
|
867
|
+
AddressMessageEnum["NO_POSTCODE_SELECTED"] = "Enter a valid postcode";
|
|
868
|
+
AddressMessageEnum["SELECT_ADDRESS"] = "Select an address";
|
|
867
869
|
AddressMessageEnum["INVALID_POSTCODE"] = "Enter valid postcode";
|
|
868
870
|
})(exports.AddressMessageEnum || (exports.AddressMessageEnum = {}));
|
|
869
871
|
|
|
@@ -1046,7 +1048,7 @@
|
|
|
1046
1048
|
return this.http
|
|
1047
1049
|
.get('/external/addresses?postcode=${postcode}'.replace('${postcode}', postcode), undefined)
|
|
1048
1050
|
.pipe(operators.map(function (res) { return res.results; }))
|
|
1049
|
-
.pipe(operators.map(function (output) { return output.map(function (addresses) { return _this.format(new AddressParser().parse(addresses[AddressType.DPA])); }); }));
|
|
1051
|
+
.pipe(operators.map(function (output) { return output ? output.map(function (addresses) { return _this.format(new AddressParser().parse(addresses[AddressType.DPA])); }) : []; }));
|
|
1050
1052
|
};
|
|
1051
1053
|
AddressService.prototype.format = function (addressModel) {
|
|
1052
1054
|
return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));
|
|
@@ -4854,9 +4856,15 @@
|
|
|
4854
4856
|
this.addressesService = addressesService;
|
|
4855
4857
|
this.internationalMode = false;
|
|
4856
4858
|
this.submissionAttempted = false;
|
|
4859
|
+
this.addressChosen = false;
|
|
4857
4860
|
this.postcodeOptionSelected = new i0.EventEmitter();
|
|
4858
4861
|
this.internationalModeStart = new i0.EventEmitter();
|
|
4859
4862
|
this.ukAddressOptionSelected = new i0.EventEmitter();
|
|
4863
|
+
// indicated what error to display to user
|
|
4864
|
+
this.canSelectAddress = new i0.EventEmitter();
|
|
4865
|
+
// tells parent to reset submission attempted field
|
|
4866
|
+
// only relevant to when user re-clicks find address
|
|
4867
|
+
this.resetSubmission = new i0.EventEmitter();
|
|
4860
4868
|
this.addressField = {
|
|
4861
4869
|
addressLine1: '',
|
|
4862
4870
|
addressLine2: '',
|
|
@@ -4867,9 +4875,11 @@
|
|
|
4867
4875
|
county: ''
|
|
4868
4876
|
};
|
|
4869
4877
|
this.optionErrorsPresent = false;
|
|
4870
|
-
this.
|
|
4878
|
+
this.addressSelectable = false;
|
|
4871
4879
|
this.missingPostcode = false;
|
|
4872
4880
|
this.optionErrorMessage = exports.AddressMessageEnum.NO_OPTION_SELECTED;
|
|
4881
|
+
this.postcodeErrorMessage = exports.AddressMessageEnum.NO_POSTCODE_SELECTED;
|
|
4882
|
+
this.selectErrorMessage = exports.AddressMessageEnum.SELECT_ADDRESS;
|
|
4873
4883
|
}
|
|
4874
4884
|
WriteAddressFieldComponent.prototype.ngOnInit = function () {
|
|
4875
4885
|
if (!this.formGroup.get('address')) {
|
|
@@ -4883,11 +4893,14 @@
|
|
|
4883
4893
|
postcode: new forms.FormControl(''),
|
|
4884
4894
|
addressList: new forms.FormControl('')
|
|
4885
4895
|
});
|
|
4896
|
+
this.setPostcodeForm();
|
|
4886
4897
|
};
|
|
4887
4898
|
WriteAddressFieldComponent.prototype.findAddress = function () {
|
|
4888
4899
|
var _this = this;
|
|
4900
|
+
this.resetSubmission.emit();
|
|
4889
4901
|
if (!this.addressFormGroup.get('postcode').value) {
|
|
4890
4902
|
this.missingPostcode = true;
|
|
4903
|
+
this.canSelectAddress.emit(false);
|
|
4891
4904
|
}
|
|
4892
4905
|
else {
|
|
4893
4906
|
this.missingPostcode = false;
|
|
@@ -4900,6 +4913,7 @@
|
|
|
4900
4913
|
});
|
|
4901
4914
|
_this.addressOptions.unshift(new AddressOption(undefined, _this.defaultLabel(_this.addressOptions.length)));
|
|
4902
4915
|
}, function (error) {
|
|
4916
|
+
// Edited this so that errors not produced if there are no results for a postcode
|
|
4903
4917
|
console.log("An error occurred retrieving addresses for postcode " + postcode_1 + ". " + error);
|
|
4904
4918
|
_this.addressOptions.unshift(new AddressOption(undefined, _this.defaultLabel(_this.addressOptions.length)));
|
|
4905
4919
|
});
|
|
@@ -4908,6 +4922,7 @@
|
|
|
4908
4922
|
};
|
|
4909
4923
|
WriteAddressFieldComponent.prototype.blankAddress = function () {
|
|
4910
4924
|
this.setFormValue();
|
|
4925
|
+
this.resetSubmission.emit();
|
|
4911
4926
|
if (this.internationalMode) {
|
|
4912
4927
|
this.internationalModeStart.emit();
|
|
4913
4928
|
}
|
|
@@ -4928,6 +4943,7 @@
|
|
|
4928
4943
|
return hasAddress;
|
|
4929
4944
|
};
|
|
4930
4945
|
WriteAddressFieldComponent.prototype.addressSelected = function () {
|
|
4946
|
+
this.missingPostcode = false;
|
|
4931
4947
|
this.addressField = this.addressFormGroup.get('addressList').value;
|
|
4932
4948
|
this.addressChosen = true;
|
|
4933
4949
|
this.setFormValue();
|
|
@@ -4942,12 +4958,17 @@
|
|
|
4942
4958
|
if (internationalChange && this.addressFormGroup && this.addressFormGroup.get('ukAddress')) {
|
|
4943
4959
|
this.addressFormGroup.get('ukAddress').patchValue(this.isInternational ? 'no' : 'yes');
|
|
4944
4960
|
}
|
|
4961
|
+
if (!this.addressChosen && this.addressFormGroup && this.addressFormGroup.get('addressList')) {
|
|
4962
|
+
// resets address options on internal back
|
|
4963
|
+
this.addressFormGroup.get('addressList').patchValue(undefined);
|
|
4964
|
+
}
|
|
4945
4965
|
this.checkIfErrorsNeeded();
|
|
4946
4966
|
};
|
|
4947
4967
|
WriteAddressFieldComponent.prototype.checkIfErrorsNeeded = function () {
|
|
4948
|
-
if (this.submissionAttempted && this.
|
|
4968
|
+
if (this.submissionAttempted && this.internationalMode && !this.postcodeLookupVisible()) {
|
|
4949
4969
|
// ensure errors present when submission attmempted on international radio buttons
|
|
4950
4970
|
this.optionErrorsPresent = true;
|
|
4971
|
+
this.optionErrorMessage = exports.AddressMessageEnum.NO_OPTION_SELECTED;
|
|
4951
4972
|
}
|
|
4952
4973
|
else {
|
|
4953
4974
|
this.optionErrorsPresent = false;
|
|
@@ -4961,7 +4982,16 @@
|
|
|
4961
4982
|
this.isInternational = isInternational;
|
|
4962
4983
|
this.ukAddressOptionSelected.emit(this.isInternational);
|
|
4963
4984
|
};
|
|
4985
|
+
WriteAddressFieldComponent.prototype.postcodeErrorPresent = function (isPostcodeField) {
|
|
4986
|
+
var checkForField = isPostcodeField ? !this.addressSelectable : this.addressSelectable;
|
|
4987
|
+
return this.submissionAttempted && checkForField;
|
|
4988
|
+
};
|
|
4989
|
+
WriteAddressFieldComponent.prototype.postcodeLookupVisible = function () {
|
|
4990
|
+
return !this.shouldShowDetailFields() || (!this.startedInternational && !this.addressChosen);
|
|
4991
|
+
};
|
|
4964
4992
|
WriteAddressFieldComponent.prototype.defaultLabel = function (numberOfAddresses) {
|
|
4993
|
+
this.addressSelectable = numberOfAddresses > 0 ? true : false;
|
|
4994
|
+
this.canSelectAddress.emit(this.addressSelectable);
|
|
4965
4995
|
return numberOfAddresses === 0 ? 'No address found'
|
|
4966
4996
|
: "" + numberOfAddresses + (numberOfAddresses === 1 ? ' address ' : ' addresses ') + "found";
|
|
4967
4997
|
};
|
|
@@ -4970,13 +5000,17 @@
|
|
|
4970
5000
|
this.formGroup.get('address').patchValue(this.addressField);
|
|
4971
5001
|
}
|
|
4972
5002
|
};
|
|
5003
|
+
WriteAddressFieldComponent.prototype.setPostcodeForm = function () {
|
|
5004
|
+
var postcodeNeeded = this.isInternational === undefined && this.formGroup.get('address') && this.formGroup.get('address').get('postCode');
|
|
5005
|
+
this.addressFormGroup.get('postcode').patchValue(postcodeNeeded ? this.formGroup.get('address').get('postCode').value : '');
|
|
5006
|
+
};
|
|
4973
5007
|
return WriteAddressFieldComponent;
|
|
4974
5008
|
}());
|
|
4975
5009
|
WriteAddressFieldComponent.decorators = [
|
|
4976
5010
|
{ type: i0.Component, args: [{
|
|
4977
5011
|
selector: 'xuilib-write-address-field',
|
|
4978
|
-
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=\"
|
|
4979
|
-
styles: [".manual-link{cursor:pointer;text-decoration:underline}.
|
|
5012
|
+
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>",
|
|
5013
|
+
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}"]
|
|
4980
5014
|
},] }
|
|
4981
5015
|
];
|
|
4982
5016
|
WriteAddressFieldComponent.ctorParameters = function () { return [
|
|
@@ -4988,9 +5022,12 @@
|
|
|
4988
5022
|
isInternational: [{ type: i0.Input }],
|
|
4989
5023
|
submissionAttempted: [{ type: i0.Input }],
|
|
4990
5024
|
startedInternational: [{ type: i0.Input }],
|
|
5025
|
+
addressChosen: [{ type: i0.Input }],
|
|
4991
5026
|
postcodeOptionSelected: [{ type: i0.Output }],
|
|
4992
5027
|
internationalModeStart: [{ type: i0.Output }],
|
|
4993
|
-
ukAddressOptionSelected: [{ type: i0.Output }]
|
|
5028
|
+
ukAddressOptionSelected: [{ type: i0.Output }],
|
|
5029
|
+
canSelectAddress: [{ type: i0.Output }],
|
|
5030
|
+
resetSubmission: [{ type: i0.Output }]
|
|
4994
5031
|
};
|
|
4995
5032
|
|
|
4996
5033
|
var WriteAddressInputsComponent = /** @class */ (function () {
|
|
@@ -5011,7 +5048,7 @@
|
|
|
5011
5048
|
WriteAddressInputsComponent.decorators = [
|
|
5012
5049
|
{ type: i0.Component, args: [{
|
|
5013
5050
|
selector: 'xuilib-write-address-inputs',
|
|
5014
|
-
template: "<ng-container>\n <form [formGroup]=\"formGroup\">\n <div class=\"govuk-
|
|
5051
|
+
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>"
|
|
5015
5052
|
},] }
|
|
5016
5053
|
];
|
|
5017
5054
|
WriteAddressInputsComponent.ctorParameters = function () { return []; };
|