@lagoshny/ngx-validation-messages 15.0.0 → 17.0.0
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/CHANGELOG.md +8 -0
- package/{esm2020 → esm2022}/lagoshny-ngx-validation-messages.mjs +4 -4
- package/esm2022/lib/components/ngx-custom-message/ngx-custom-message.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/components/ngx-validation-messages/ngx-validation-messages.component.mjs +112 -97
- package/esm2022/lib/directivies/ngx-validator-name.directive.mjs +38 -0
- package/{esm2020 → esm2022}/lib/interface/ngx-validation-messages.config.mjs +2 -2
- package/{esm2020 → esm2022}/lib/ngx-validation-messages.module.mjs +56 -56
- package/esm2022/lib/service/ngx-validation-messages.service.mjs +73 -0
- package/{esm2020 → esm2022}/public-api.mjs +4 -4
- package/{fesm2020 → fesm2022}/lagoshny-ngx-validation-messages.mjs +281 -248
- package/{fesm2020 → fesm2022}/lagoshny-ngx-validation-messages.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/ngx-custom-message/ngx-custom-message.component.d.ts +20 -20
- package/lib/components/ngx-validation-messages/ngx-validation-messages.component.d.ts +40 -40
- package/lib/directivies/ngx-validator-name.directive.d.ts +25 -25
- package/lib/interface/ngx-validation-messages.config.d.ts +17 -17
- package/lib/ngx-validation-messages.module.d.ts +18 -18
- package/lib/service/ngx-validation-messages.service.d.ts +37 -37
- package/package.json +8 -11
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/ngx-custom-message/ngx-custom-message.component.mjs +0 -32
- package/esm2020/lib/directivies/ngx-validator-name.directive.mjs +0 -29
- package/esm2020/lib/service/ngx-validation-messages.service.mjs +0 -72
- package/fesm2015/lagoshny-ngx-validation-messages.mjs +0 -280
- package/fesm2015/lagoshny-ngx-validation-messages.mjs.map +0 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { NGX_VALIDATION_MESSAGES_CONFIG } from '../interface/ngx-validation-messages.config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Service allows getting validation messages from client's settings.
|
|
6
|
+
* Injecting {@link NgxValidationMessagesConfig} to get client's configuration with validation messages.
|
|
7
|
+
*/
|
|
8
|
+
export class NgxValidationMessagesService {
|
|
9
|
+
messagesConfig;
|
|
10
|
+
static SERVER_ERRORS = 'serverErrors';
|
|
11
|
+
/**
|
|
12
|
+
* Regular expression to find params placeholder '#[paramName]'.
|
|
13
|
+
*/
|
|
14
|
+
paramsRegExp = new RegExp(/#[[a-zA-Z_\\-]*]/);
|
|
15
|
+
constructor(messagesConfig) {
|
|
16
|
+
this.messagesConfig = messagesConfig;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get validation message for specified validator.
|
|
20
|
+
*
|
|
21
|
+
* @param validatorName for which to get message
|
|
22
|
+
* @param params passed from validator for more detailed validation message
|
|
23
|
+
*
|
|
24
|
+
* @returns string validation message
|
|
25
|
+
*/
|
|
26
|
+
getValidatorErrorMessages(validatorName, params) {
|
|
27
|
+
const validationMessages = this.messagesConfig.messages;
|
|
28
|
+
const validationMessage = validationMessages[validatorName];
|
|
29
|
+
if (!validationMessage) {
|
|
30
|
+
throw new Error('Validation message for validator: ' + validatorName
|
|
31
|
+
+ ' cannot be found, please check validation message key for validator it is case sensitive.');
|
|
32
|
+
}
|
|
33
|
+
if (params) {
|
|
34
|
+
return this.expandParameterizedTemplateMessage(validationMessage, params);
|
|
35
|
+
}
|
|
36
|
+
return validationMessage;
|
|
37
|
+
}
|
|
38
|
+
expandParameterizedTemplateMessage(msg, params) {
|
|
39
|
+
while (this.paramsRegExp.test(msg)) {
|
|
40
|
+
const foundParams = this.paramsRegExp.exec(msg);
|
|
41
|
+
foundParams.forEach(value => {
|
|
42
|
+
const paramPlaceholder = value;
|
|
43
|
+
value = value.replace('#[', '').replace(']', '');
|
|
44
|
+
msg = msg.replace(paramPlaceholder, this.getParameter(params, value));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return msg;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A utilitarian method to get a property from an object.
|
|
51
|
+
* if there is no property, an empty string is returned.
|
|
52
|
+
*
|
|
53
|
+
* @param obj from which the property must be obtained
|
|
54
|
+
* @param prop property name
|
|
55
|
+
*
|
|
56
|
+
* @return property value or empty string
|
|
57
|
+
*/
|
|
58
|
+
getParameter(obj, prop) {
|
|
59
|
+
return prop.split('.')
|
|
60
|
+
.reduce((m, i) => {
|
|
61
|
+
return m && typeof m === 'object' ? m[i] : '';
|
|
62
|
+
}, obj);
|
|
63
|
+
}
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
65
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService });
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxValidationMessagesService, decorators: [{
|
|
68
|
+
type: Injectable
|
|
69
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
70
|
+
type: Inject,
|
|
71
|
+
args: [NGX_VALIDATION_MESSAGES_CONFIG]
|
|
72
|
+
}] }] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBK0IsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFMUg7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQVNxQjtJQVByRCxNQUFNLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUU3Qzs7T0FFRztJQUNLLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXRELFlBQTRELGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUN2RyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLGFBQXFCLEVBQUUsTUFBZTtRQUNyRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3hELE1BQU0saUJBQWlCLEdBQVcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxhQUFhO2tCQUNoRSwyRkFBMkYsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztJQUVNLGtDQUFrQyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxZQUFZLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDZixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBL0RVLDRCQUE0QixrQkFTbkIsOEJBQThCOzRHQVR2Qyw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVU7OzBCQVVJLE1BQU07MkJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcsIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xuXG4vKipcbiAqIFNlcnZpY2UgYWxsb3dzIGdldHRpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcyBmcm9tIGNsaWVudCdzIHNldHRpbmdzLlxuICogSW5qZWN0aW5nIHtAbGluayBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWd9IHRvIGdldCBjbGllbnQncyBjb25maWd1cmF0aW9uIHdpdGggdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2Uge1xuXG4gIHB1YmxpYyBzdGF0aWMgU0VSVkVSX0VSUk9SUyA9ICdzZXJ2ZXJFcnJvcnMnO1xuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmluZCBwYXJhbXMgcGxhY2Vob2xkZXIgJyNbcGFyYW1OYW1lXScuXG4gICAqL1xuICBwcml2YXRlIHBhcmFtc1JlZ0V4cCA9IG5ldyBSZWdFeHAoLyNbW2EtekEtWl9cXFxcLV0qXS8pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHKSBwcml2YXRlIG1lc3NhZ2VzQ29uZmlnOiBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsaWRhdG9yTmFtZSBmb3Igd2hpY2ggdG8gZ2V0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHBhcmFtcyBwYXNzZWQgZnJvbSB2YWxpZGF0b3IgZm9yIG1vcmUgZGV0YWlsZWQgdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyB2YWxpZGF0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBnZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2VzKHZhbGlkYXRvck5hbWU6IHN0cmluZywgcGFyYW1zPzogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzQ29uZmlnLm1lc3NhZ2VzO1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSB2YWxpZGF0aW9uTWVzc2FnZXNbdmFsaWRhdG9yTmFtZV07XG5cbiAgICBpZiAoIXZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbGlkYXRpb24gbWVzc2FnZSBmb3IgdmFsaWRhdG9yOiAnICsgdmFsaWRhdG9yTmFtZVxuICAgICAgICArICcgY2Fubm90IGJlIGZvdW5kLCBwbGVhc2UgY2hlY2sgdmFsaWRhdGlvbiBtZXNzYWdlIGtleSBmb3IgdmFsaWRhdG9yIGl0IGlzIGNhc2Ugc2Vuc2l0aXZlLicpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cGFuZFBhcmFtZXRlcml6ZWRUZW1wbGF0ZU1lc3NhZ2UodmFsaWRhdGlvbk1lc3NhZ2UsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlO1xuICB9XG5cbiAgcHVibGljIGV4cGFuZFBhcmFtZXRlcml6ZWRUZW1wbGF0ZU1lc3NhZ2UobXNnOiBzdHJpbmcsIHBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICB3aGlsZSAodGhpcy5wYXJhbXNSZWdFeHAudGVzdChtc2cpKSB7XG4gICAgICBjb25zdCBmb3VuZFBhcmFtcyA9IHRoaXMucGFyYW1zUmVnRXhwLmV4ZWMobXNnKTtcbiAgICAgIGZvdW5kUGFyYW1zLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbVBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnI1snLCAnJykucmVwbGFjZSgnXScsICcnKTtcbiAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UocGFyYW1QbGFjZWhvbGRlciwgdGhpcy5nZXRQYXJhbWV0ZXIocGFyYW1zLCB2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1zZztcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHV0aWxpdGFyaWFuIG1ldGhvZCB0byBnZXQgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cbiAgICogaWYgdGhlcmUgaXMgbm8gcHJvcGVydHksIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIG9iaiBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG9idGFpbmVkXG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICpcbiAgICogQHJldHVybiBwcm9wZXJ0eSB2YWx1ZSBvciBlbXB0eSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVyKG9iajogb2JqZWN0LCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwcm9wLnNwbGl0KCcuJylcbiAgICAgIC5yZWR1Y2UoKG0sIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIG0gJiYgdHlwZW9mIG0gPT09ICdvYmplY3QnID8gbVtpXSA6ICcnO1xuICAgICAgfSwgb2JqKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBzdGF0aWMgYXBwbHlTZXJ2ZXJFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3IpOiB2b2lkIHtcbiAgLy8gICBpZiAoIWNvbnRyb2wpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgaWYgKGNvbnRyb2wuZ2V0RXJyb3IoTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5TRVJWRVJfRVJST1JTKSkge1xuICAvLyAgICAgY29uc3QgZXhpc3RpbmdFcnJvck1lc3NhZ2VzID0gY29udHJvbC5nZXRFcnJvcihOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlMpO1xuICAvLyAgICAgaWYgKF8uaXNBcnJheShleGlzdGluZ0Vycm9yTWVzc2FnZXMuY3VzdG9tTWVzc2FnZXMpICYmXG4gIC8vICAgICAgIGV4aXN0aW5nRXJyb3JNZXNzYWdlcy5jdXN0b21NZXNzYWdlcy5pbmRleE9mKHNlcnZlckVycm9yLm1lc3NhZ2UpID09PSAtMSkge1xuICAvLyAgICAgICBleGlzdGluZ0Vycm9yTWVzc2FnZXMuY3VzdG9tTWVzc2FnZXMucHVzaChzZXJ2ZXJFcnJvci5tZXNzYWdlKTtcbiAgLy8gICAgIH1cbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29udHJvbC5zZXRFcnJvcnMoe1tOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlNdOiB7Y3VzdG9tTWVzc2FnZXM6IFtzZXJ2ZXJFcnJvci5tZXNzYWdlXX19KTtcbiAgLy8gICB9XG4gIC8vICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIC8vIH1cblxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of ngx-validation-messages
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/ngx-validation-messages.module';
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-validation-messages
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngx-validation-messages.module';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXZhbGlkYXRpb24tbWVzc2FnZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMubW9kdWxlJztcbiJdfQ==
|