@lagoshny/ngx-validation-messages 1.1.2 → 3.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/README.md +14 -5
- package/esm2020/lagoshny-ngx-validation-messages.mjs +5 -0
- package/esm2020/lib/components/ngx-custom-message/ngx-custom-message.component.mjs +32 -0
- package/esm2020/lib/components/ngx-validation-messages/ngx-validation-messages.component.mjs +97 -0
- package/esm2020/lib/directivies/ngx-validator-name.directive.mjs +29 -0
- package/esm2020/lib/interface/ngx-validation-messages.config.mjs +3 -0
- package/esm2020/lib/ngx-validation-messages.module.mjs +58 -0
- package/esm2020/lib/service/ngx-validation-messages.service.mjs +72 -0
- package/esm2020/public-api.mjs +5 -0
- package/fesm2015/lagoshny-ngx-validation-messages.mjs +282 -0
- package/fesm2015/lagoshny-ngx-validation-messages.mjs.map +1 -0
- package/fesm2020/lagoshny-ngx-validation-messages.mjs +278 -0
- package/fesm2020/lagoshny-ngx-validation-messages.mjs.map +1 -0
- package/lagoshny-ngx-validation-messages.d.ts +1 -1
- package/lib/components/ngx-custom-message/ngx-custom-message.component.d.ts +3 -0
- package/lib/components/ngx-validation-messages/ngx-validation-messages.component.d.ts +3 -0
- package/lib/directivies/ngx-validator-name.directive.d.ts +3 -0
- package/lib/ngx-validation-messages.module.d.ts +9 -0
- package/lib/service/ngx-validation-messages.service.d.ts +3 -0
- package/package.json +24 -17
- package/bundles/lagoshny-ngx-validation-messages.umd.js +0 -577
- package/bundles/lagoshny-ngx-validation-messages.umd.js.map +0 -1
- package/bundles/lagoshny-ngx-validation-messages.umd.min.js +0 -2
- package/bundles/lagoshny-ngx-validation-messages.umd.min.js.map +0 -1
- package/esm2015/lagoshny-ngx-validation-messages.js +0 -6
- package/esm2015/lib/components/ngx-custom-message/ngx-custom-message.component.js +0 -23
- package/esm2015/lib/components/ngx-validation-messages/ngx-validation-messages.component.js +0 -92
- package/esm2015/lib/directivies/ngx-validator-name.directive.js +0 -29
- package/esm2015/lib/interface/ngx-validation-messages.config.js +0 -3
- package/esm2015/lib/ngx-validation-messages.module.js +0 -45
- package/esm2015/lib/service/ngx-validation-messages.service.js +0 -69
- package/esm2015/public-api.js +0 -5
- package/fesm2015/lagoshny-ngx-validation-messages.js +0 -253
- package/fesm2015/lagoshny-ngx-validation-messages.js.map +0 -1
- package/lagoshny-ngx-validation-messages.metadata.json +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# NgxValidationMessages
|
|
2
|
-
<a href="https://www.npmjs.com/package/@lagoshny/ngx-validation-messages">
|
|
3
|
-
<img src="https://img.shields.io/npm/v/@lagoshny/ngx-validation-messages" alt="
|
|
2
|
+
<a href="https://www.npmjs.com/package/@lagoshny/ngx-validation-messages/v/latest">
|
|
3
|
+
<img src="https://img.shields.io/npm/v/@lagoshny/ngx-validation-messages/latest?label=npm" alt="Latest npm version" />
|
|
4
4
|
</a>
|
|
5
5
|
|
|
6
6
|
<a href="https://github.com/lagoshny/ngx-validation-messages/actions?query=workflow%3ABuild">
|
|
@@ -22,9 +22,18 @@
|
|
|
22
22
|
<br />
|
|
23
23
|
<br />
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
## ⭐Compatible with Angular 12.x.x - 13.x.x versions that uses `Ivy compilation`.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### ⚠ If you use old `View Engine` compilation or Angular 6.x.x - 11.x.x you need to use [2.x.x](https://github.com/lagoshny/ngx-validation-messages/tree/lts-view-engine) lib version.
|
|
29
|
+
>
|
|
30
|
+
>See more about it [here](https://github.com/lagoshny/ngx-validation-messages/blob/master/CHANGELOG.md#300-2021-12-23).
|
|
31
|
+
|
|
32
|
+
### 💡 New versioning policy.
|
|
33
|
+
|
|
34
|
+
- Versions that work with old `View Engine` compilation [`2.0.0`-`2.x.x`].
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
- Versions that work with new `Ivy` compilation [`3.0.0`-`x.x.x`].
|
|
28
37
|
|
|
29
38
|
This library allows you to decrease boilerplate code when handling validations error messages.
|
|
30
39
|
## Contents
|
|
@@ -52,7 +61,7 @@ This library allows you to decrease boilerplate code when handling validations e
|
|
|
52
61
|
|
|
53
62
|
### Installation
|
|
54
63
|
```
|
|
55
|
-
npm install @lagoshny/ngx-validation-messages --save
|
|
64
|
+
npm install @lagoshny/ngx-validation-messages@latest --save
|
|
56
65
|
```
|
|
57
66
|
|
|
58
67
|
### Base configuration
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFnb3Nobnktbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy9zcmMvbGFnb3Nobnktbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Component allows specifying custom validation message for the specified
|
|
5
|
+
* validator to override default message.
|
|
6
|
+
*
|
|
7
|
+
* Use this component as child in {@link NgxValidationMessagesComponent}.
|
|
8
|
+
*/
|
|
9
|
+
export class NgxCustomMessageComponent {
|
|
10
|
+
}
|
|
11
|
+
NgxCustomMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxCustomMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
NgxCustomMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxCustomMessageComponent, selector: "ngx-custom-message", inputs: { validatorName: ["forValidator", "validatorName"] }, viewQueries: [{ propertyName: "message", first: true, predicate: ["message"], descendants: true }], ngImport: i0, template: `
|
|
13
|
+
<div #message>
|
|
14
|
+
<ng-content></ng-content>
|
|
15
|
+
</div>`, isInline: true });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxCustomMessageComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{
|
|
19
|
+
selector: 'ngx-custom-message',
|
|
20
|
+
template: `
|
|
21
|
+
<div #message>
|
|
22
|
+
<ng-content></ng-content>
|
|
23
|
+
</div>`
|
|
24
|
+
}]
|
|
25
|
+
}], propDecorators: { validatorName: [{
|
|
26
|
+
type: Input,
|
|
27
|
+
args: ['forValidator']
|
|
28
|
+
}], message: [{
|
|
29
|
+
type: ViewChild,
|
|
30
|
+
args: ['message']
|
|
31
|
+
}] } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4RTs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7MEdBQXpCLHlCQUF5Qiw0TkFMMUI7OztXQUdEOzJGQUVFLHlCQUF5QjtrQkFQckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7OztXQUdEO2lCQUNWOzhCQU9RLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsY0FBYztnQkFPZCxPQUFPO3NCQURiLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCBhbGxvd3Mgc3BlY2lmeWluZyBjdXN0b20gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciB0aGUgc3BlY2lmaWVkXHJcbiAqIHZhbGlkYXRvciB0byBvdmVycmlkZSBkZWZhdWx0IG1lc3NhZ2UuXHJcbiAqXHJcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCBhcyBjaGlsZCBpbiB7QGxpbmsgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50fS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWN1c3RvbS1tZXNzYWdlJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAjbWVzc2FnZT5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2YWxpZGF0b3IgZm9yIHdoaWNoIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBtZXNzYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgnZm9yVmFsaWRhdG9yJylcclxuICBwdWJsaWMgdmFsaWRhdG9yTmFtZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBDb250YWlucyBvdmVycmlkZGVuIG1lc3NhZ2UgZm9yIHZhbGlkYXRvci5cclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdtZXNzYWdlJylcclxuICBwdWJsaWMgbWVzc2FnZTogRWxlbWVudFJlZjtcclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Component, ContentChildren, ElementRef, Inject, Input } from '@angular/core';
|
|
2
|
+
import { NgxValidatorNameDirective } from '../../directivies/ngx-validator-name.directive';
|
|
3
|
+
import { NGX_VALIDATION_MESSAGES_CONFIG } from '../../interface/ngx-validation-messages.config';
|
|
4
|
+
import { NgxValidationMessagesService } from '../../service/ngx-validation-messages.service';
|
|
5
|
+
import { NgxCustomMessageComponent } from '../ngx-custom-message/ngx-custom-message.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../service/ngx-validation-messages.service";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/material/form-field";
|
|
10
|
+
/**
|
|
11
|
+
* Component for displaying validation messages, supports child components of type {@link NgxCustomMessageComponent}
|
|
12
|
+
* and html elements with directive {@link NgxValidatorNameDirective} to override validation messages.
|
|
13
|
+
*/
|
|
14
|
+
export class NgxValidationMessagesComponent {
|
|
15
|
+
constructor(ngxValidationConfig, ngxValidationMessagesService, directiveElementRef) {
|
|
16
|
+
this.ngxValidationConfig = ngxValidationConfig;
|
|
17
|
+
this.ngxValidationMessagesService = ngxValidationMessagesService;
|
|
18
|
+
this.directiveElementRef = directiveElementRef;
|
|
19
|
+
this.isMaterialError = false;
|
|
20
|
+
/**
|
|
21
|
+
* Key to get default validation message.
|
|
22
|
+
*/
|
|
23
|
+
this.defaultError = 'error';
|
|
24
|
+
this.materialErrorElement = 'MAT-ERROR';
|
|
25
|
+
}
|
|
26
|
+
ngAfterViewInit() {
|
|
27
|
+
if (this.directiveElementRef && this.directiveElementRef.nativeElement
|
|
28
|
+
&& this.directiveElementRef.nativeElement.nodeName) {
|
|
29
|
+
this.isMaterialError = this.materialErrorElement.toLocaleUpperCase()
|
|
30
|
+
=== this.directiveElementRef.nativeElement.nodeName.toLocaleUpperCase();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all validation messages for specified form control.
|
|
35
|
+
*/
|
|
36
|
+
get errorMessages() {
|
|
37
|
+
const result = [];
|
|
38
|
+
if (!this.formControl || !this.formControl.errors) {
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
if (this.customMsgComponent && this.customMsgComponent.length > 0) {
|
|
42
|
+
this.processingCustomMessages(this.customMsgComponent);
|
|
43
|
+
}
|
|
44
|
+
if (this.customMsgDirective && this.customMsgDirective.length > 0) {
|
|
45
|
+
this.processingCustomMessages(this.customMsgDirective);
|
|
46
|
+
}
|
|
47
|
+
for (const property in this.formControl.errors) {
|
|
48
|
+
if (this.formControl.errors.hasOwnProperty(property)
|
|
49
|
+
&& (this.formControl.touched || this.formControl.dirty)) {
|
|
50
|
+
if (this.formControl.errors[property].customMessages instanceof Array) {
|
|
51
|
+
result.push(...this.formControl.errors[property].customMessages);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (this.formControl.errors[property].customMessage) {
|
|
55
|
+
result.push(this.formControl.errors[property].customMessage);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const validationMessage = this.ngxValidationMessagesService.getValidatorErrorMessages(property, this.formControl.errors[property]);
|
|
59
|
+
result.push(validationMessage || this.formControl.errors[property].message
|
|
60
|
+
|| this.ngxValidationMessagesService.getValidatorErrorMessages(this.defaultError));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
processingCustomMessages(customMessage) {
|
|
66
|
+
customMessage.forEach((msg) => {
|
|
67
|
+
if (!this.formControl.errors[msg.validatorName]) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
let message = (msg instanceof NgxCustomMessageComponent)
|
|
71
|
+
? msg.message.nativeElement.innerText : msg.message;
|
|
72
|
+
message = this.ngxValidationMessagesService.expandParameterizedTemplateMessage(message, this.formControl.errors[msg.validatorName]);
|
|
73
|
+
typeof this.formControl.errors[msg.validatorName] === 'object'
|
|
74
|
+
? this.formControl.errors[msg.validatorName].customMessage = message
|
|
75
|
+
: this.formControl.errors[msg.validatorName] = { customMessage: message };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
NgxValidationMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesComponent, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }, { token: i1.NgxValidationMessagesService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
NgxValidationMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: NgxValidationMessagesComponent, selector: "ngx-validation-messages, [ngxValidationMessages]", inputs: { formControl: ["for", "formControl"] }, queries: [{ propertyName: "customMsgComponent", predicate: NgxCustomMessageComponent }, { propertyName: "customMsgDirective", predicate: NgxValidatorNameDirective }], ngImport: i0, template: "<!--To show error messages standalone without component-->\r\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\r\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\r\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\r\n <ng-content></ng-content>\r\n </span>\r\n</div>\r\n\r\n<ng-container *ngIf=\"errorMessages.length > 0\">\r\n\r\n <!--To show error messages in material ui style-->\r\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\r\n <ng-container *ngFor=\"let message of errorMessages\">\r\n <mat-error>{{ message }}</mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!--To show error messages in user style-->\r\n <ng-template #withoutMaterial>\r\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\r\n <div *ngFor=\"let message of errorMessages\">\r\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\r\n {{ message }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</ng-container>\r\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatError, selector: "mat-error", inputs: ["id"] }] });
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'ngx-validation-messages, [ngxValidationMessages]', template: "<!--To show error messages standalone without component-->\r\n<div *ngIf=\"!formControl && customMsgComponent.length == 0 && customMsgDirective.length == 0\"\r\n [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\r\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\r\n <ng-content></ng-content>\r\n </span>\r\n</div>\r\n\r\n<ng-container *ngIf=\"errorMessages.length > 0\">\r\n\r\n <!--To show error messages in material ui style-->\r\n <ng-container *ngIf=\"isMaterialError; else withoutMaterial\">\r\n <ng-container *ngFor=\"let message of errorMessages\">\r\n <mat-error>{{ message }}</mat-error>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!--To show error messages in user style-->\r\n <ng-template #withoutMaterial>\r\n <div [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.blockClassNames || 'ngx_vm__def_error_block'\">\r\n <div *ngFor=\"let message of errorMessages\">\r\n <span [ngClass]=\"ngxValidationConfig?.validationMessagesStyle?.textClassNames || 'ngx_vm__def_error_text'\">\r\n {{ message }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</ng-container>\r\n", styles: [".ngx_vm__def_error_block{position:relative;display:inline-block;width:100%;margin-bottom:10px;margin-top:2px;padding:8px;border-radius:0;background:#c51244;box-shadow:1px 1px 1px #aaa;opacity:.8}.ngx_vm__def_error_text{color:#fff}\n"] }]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
85
|
+
type: Inject,
|
|
86
|
+
args: [NGX_VALIDATION_MESSAGES_CONFIG]
|
|
87
|
+
}] }, { type: i1.NgxValidationMessagesService }, { type: i0.ElementRef }]; }, propDecorators: { formControl: [{
|
|
88
|
+
type: Input,
|
|
89
|
+
args: ['for']
|
|
90
|
+
}], customMsgComponent: [{
|
|
91
|
+
type: ContentChildren,
|
|
92
|
+
args: [NgxCustomMessageComponent]
|
|
93
|
+
}], customMsgDirective: [{
|
|
94
|
+
type: ContentChildren,
|
|
95
|
+
args: [NgxValidatorNameDirective]
|
|
96
|
+
}] } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9jb21wb25lbnRzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvY29tcG9uZW50cy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUNMLDhCQUE4QixFQUUvQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7OztBQUUvRjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sOEJBQThCO0lBNkJ6QyxZQUEyRCxtQkFBZ0QsRUFDdkYsNEJBQTBELEVBQzFELG1CQUErQjtRQUZRLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNkI7UUFDdkYsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtRQUMxRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVk7UUFYNUMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFL0I7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLE9BQU8sQ0FBQztRQUV2Qix5QkFBb0IsR0FB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R0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ3RELE9BQU8sR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsa0NBQWtDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBRXBJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLFFBQVE7Z0JBQzVELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxHQUFHLE9BQU87Z0JBQ3BFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzsySEEzRlUsOEJBQThCLGtCQTZCckIsOEJBQThCOytHQTdCdkMsOEJBQThCLDRLQVd4Qix5QkFBeUIscURBTXpCLHlCQUF5Qiw2QkNuQzVDLG93Q0E2QkE7MkZEWGEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLGtEQUFrRDs7MEJBaUMvQyxNQUFNOzJCQUFDLDhCQUE4QjtnSEF2QjNDLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsS0FBSztnQkFPTCxrQkFBa0I7c0JBRHhCLGVBQWU7dUJBQUMseUJBQXlCO2dCQU9uQyxrQkFBa0I7c0JBRHhCLGVBQWU7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZpZXMvbmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLFxyXG4gIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZ1xyXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL25neC1jdXN0b20tbWVzc2FnZS9uZ3gtY3VzdG9tLW1lc3NhZ2UuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcywgc3VwcG9ydHMgY2hpbGQgY29tcG9uZW50cyBvZiB0eXBlIHtAbGluayBOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50fVxyXG4gKiBhbmQgaHRtbCBlbGVtZW50cyB3aXRoIGRpcmVjdGl2ZSB7QGxpbmsgTmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZX0gdG8gb3ZlcnJpZGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMsIFtuZ3hWYWxpZGF0aW9uTWVzc2FnZXNdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGNvbnRyb2wgZm9yIHdoaWNoIG5lZWQgdG8gc2hvdyB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgnZm9yJylcclxuICBwdWJsaWMgZm9ybUNvbnRyb2w6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGFpbnMge0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9IGlmIHByZXNlbnQuXHJcbiAgICovXHJcbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBjdXN0b21Nc2dDb21wb25lbnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRhaW5zIHtAbGluayBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlfSBpZiBwcmVzZW50LlxyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTmd4VmFsaWRhdG9yTmFtZURpcmVjdGl2ZSlcclxuICBwdWJsaWMgY3VzdG9tTXNnRGlyZWN0aXZlO1xyXG5cclxuICBwdWJsaWMgaXNNYXRlcmlhbEVycm9yID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEtleSB0byBnZXQgZGVmYXVsdCB2YWxpZGF0aW9uIG1lc3NhZ2UuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWZhdWx0RXJyb3IgPSAnZXJyb3InO1xyXG5cclxuICBwcml2YXRlIG1hdGVyaWFsRXJyb3JFbGVtZW50ID0gJ01BVC1FUlJPUic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHKSBwdWJsaWMgbmd4VmFsaWRhdGlvbkNvbmZpZzogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZTogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGRpcmVjdGl2ZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmICYmIHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICYmIHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuaXNNYXRlcmlhbEVycm9yID0gdGhpcy5tYXRlcmlhbEVycm9yRWxlbWVudC50b0xvY2FsZVVwcGVyQ2FzZSgpXHJcbiAgICAgICAgPT09IHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG9jYWxlVXBwZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsIHZhbGlkYXRpb24gbWVzc2FnZXMgZm9yIHNwZWNpZmllZCBmb3JtIGNvbnRyb2wuXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBlcnJvck1lc3NhZ2VzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sIHx8ICF0aGlzLmZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VzdG9tTXNnQ29tcG9uZW50ICYmIHRoaXMuY3VzdG9tTXNnQ29tcG9uZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9jZXNzaW5nQ3VzdG9tTWVzc2FnZXModGhpcy5jdXN0b21Nc2dDb21wb25lbnQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VzdG9tTXNnRGlyZWN0aXZlICYmIHRoaXMuY3VzdG9tTXNnRGlyZWN0aXZlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9jZXNzaW5nQ3VzdG9tTWVzc2FnZXModGhpcy5jdXN0b21Nc2dEaXJlY3RpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzLmhhc093blByb3BlcnR5KHByb3BlcnR5KVxyXG4gICAgICAgICYmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXJ0eSkpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbcHJvcGVydHldLmN1c3RvbU1lc3NhZ2VzIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5jdXN0b21NZXNzYWdlcyk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW3Byb3BlcnR5XS5jdXN0b21NZXNzYWdlKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0uY3VzdG9tTWVzc2FnZSk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9XHJcbiAgICAgICAgICB0aGlzLm5neFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2UuZ2V0VmFsaWRhdG9yRXJyb3JNZXNzYWdlcyhwcm9wZXJ0eSwgdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbcHJvcGVydHldKTtcclxuICAgICAgICByZXN1bHQucHVzaCh2YWxpZGF0aW9uTWVzc2FnZSB8fCB0aGlzLmZvcm1Db250cm9sLmVycm9yc1twcm9wZXJ0eV0ubWVzc2FnZVxyXG4gICAgICAgICAgfHwgdGhpcy5uZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmdldFZhbGlkYXRvckVycm9yTWVzc2FnZXModGhpcy5kZWZhdWx0RXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc2luZ0N1c3RvbU1lc3NhZ2VzKGN1c3RvbU1lc3NhZ2U6IFF1ZXJ5TGlzdDxhbnk+KTogdm9pZCB7XHJcbiAgICBjdXN0b21NZXNzYWdlLmZvckVhY2goKG1zZzogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBtZXNzYWdlID0gKG1zZyBpbnN0YW5jZW9mIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQpXHJcbiAgICAgICAgPyBtc2cubWVzc2FnZS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA6IG1zZy5tZXNzYWdlO1xyXG4gICAgICBtZXNzYWdlID0gdGhpcy5uZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmV4cGFuZFBhcmFtZXRlcml6ZWRUZW1wbGF0ZU1lc3NhZ2UobWVzc2FnZSwgdGhpcy5mb3JtQ29udHJvbC5lcnJvcnNbbXNnLnZhbGlkYXRvck5hbWVdKTtcclxuXHJcbiAgICAgIHR5cGVvZiB0aGlzLmZvcm1Db250cm9sLmVycm9yc1ttc2cudmFsaWRhdG9yTmFtZV0gPT09ICdvYmplY3QnXHJcbiAgICAgICAgPyB0aGlzLmZvcm1Db250cm9sLmVycm9yc1ttc2cudmFsaWRhdG9yTmFtZV0uY3VzdG9tTWVzc2FnZSA9IG1lc3NhZ2VcclxuICAgICAgICA6IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzW21zZy52YWxpZGF0b3JOYW1lXSA9IHtjdXN0b21NZXNzYWdlOiBtZXNzYWdlfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLVRvIHNob3cgZXJyb3IgbWVzc2FnZXMgc3RhbmRhbG9uZSB3aXRob3V0IGNvbXBvbmVudC0tPlxyXG48ZGl2ICpuZ0lmPVwiIWZvcm1Db250cm9sICYmIGN1c3RvbU1zZ0NvbXBvbmVudC5sZW5ndGggPT0gMCAmJiBjdXN0b21Nc2dEaXJlY3RpdmUubGVuZ3RoID09IDBcIlxyXG4gICAgIFtuZ0NsYXNzXT1cIm5neFZhbGlkYXRpb25Db25maWc/LnZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPy5ibG9ja0NsYXNzTmFtZXMgfHwgJ25neF92bV9fZGVmX2Vycm9yX2Jsb2NrJ1wiPlxyXG4gPHNwYW4gW25nQ2xhc3NdPVwibmd4VmFsaWRhdGlvbkNvbmZpZz8udmFsaWRhdGlvbk1lc3NhZ2VzU3R5bGU/LnRleHRDbGFzc05hbWVzIHx8ICduZ3hfdm1fX2RlZl9lcnJvcl90ZXh0J1wiPlxyXG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiA8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiPlxyXG5cclxuICA8IS0tVG8gc2hvdyBlcnJvciBtZXNzYWdlcyBpbiBtYXRlcmlhbCB1aSBzdHlsZS0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01hdGVyaWFsRXJyb3I7IGVsc2Ugd2l0aG91dE1hdGVyaWFsXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIj5cclxuICAgICAgPG1hdC1lcnJvcj57eyBtZXNzYWdlIH19PC9tYXQtZXJyb3I+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLVRvIHNob3cgZXJyb3IgbWVzc2FnZXMgaW4gdXNlciBzdHlsZS0tPlxyXG4gIDxuZy10ZW1wbGF0ZSAjd2l0aG91dE1hdGVyaWFsPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJuZ3hWYWxpZGF0aW9uQ29uZmlnPy52YWxpZGF0aW9uTWVzc2FnZXNTdHlsZT8uYmxvY2tDbGFzc05hbWVzIHx8ICduZ3hfdm1fX2RlZl9lcnJvcl9ibG9jaydcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XHJcbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwibmd4VmFsaWRhdGlvbkNvbmZpZz8udmFsaWRhdGlvbk1lc3NhZ2VzU3R5bGU/LnRleHRDbGFzc05hbWVzIHx8ICduZ3hfdm1fX2RlZl9lcnJvcl90ZXh0J1wiPlxyXG4gICAgICAgICAge3sgbWVzc2FnZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Allows to specify custom validator message to override default message.
|
|
5
|
+
*
|
|
6
|
+
* It's alternative for {@link NgxCustomMessageComponent}.
|
|
7
|
+
* If you want to use standard html tags to define custom message, use this directive on html tag within
|
|
8
|
+
* {@link NgxValidationMessagesComponent} specifying validator name as directive parameter,
|
|
9
|
+
* otherwise use {@link NgxCustomMessageComponent}.
|
|
10
|
+
*/
|
|
11
|
+
export class NgxValidatorNameDirective {
|
|
12
|
+
constructor(elem) {
|
|
13
|
+
this.elem = elem;
|
|
14
|
+
}
|
|
15
|
+
ngAfterViewInit() {
|
|
16
|
+
this.message = this.elem.nativeElement.innerText;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
NgxValidatorNameDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidatorNameDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
NgxValidatorNameDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: NgxValidatorNameDirective, selector: "[ngxValidatorName]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidatorNameDirective, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: '[ngxValidatorName]'
|
|
25
|
+
}]
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { validatorName: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvZGlyZWN0aXZpZXMvbmd4LXZhbGlkYXRvci1uYW1lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU1RTs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQWFwQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3BDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7O3NIQWxCVSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO2lHQU9RLGFBQWE7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQWxsb3dzIHRvIHNwZWNpZnkgY3VzdG9tIHZhbGlkYXRvciBtZXNzYWdlIHRvIG92ZXJyaWRlIGRlZmF1bHQgbWVzc2FnZS5cclxuICpcclxuICogSXQncyBhbHRlcm5hdGl2ZSBmb3Ige0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9LlxyXG4gKiBJZiB5b3Ugd2FudCB0byB1c2Ugc3RhbmRhcmQgaHRtbCB0YWdzIHRvIGRlZmluZSBjdXN0b20gbWVzc2FnZSwgdXNlIHRoaXMgZGlyZWN0aXZlIG9uIGh0bWwgdGFnIHdpdGhpblxyXG4gKiB7QGxpbmsgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50fSBzcGVjaWZ5aW5nIHZhbGlkYXRvciBuYW1lIGFzIGRpcmVjdGl2ZSBwYXJhbWV0ZXIsXHJcbiAqIG90aGVyd2lzZSB1c2Uge0BsaW5rIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnR9LlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbmd4VmFsaWRhdG9yTmFtZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2YWxpZGF0b3IgZm9yIHdoaWNoIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBtZXNzYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhbGlkYXRvck5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGFpbnMgb3ZlcnJpZGRlbiBtZXNzYWdlIGZvciB2YWxpZGF0b3IuXHJcbiAgICovXHJcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtOiBFbGVtZW50UmVmKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0O1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGX_VALIDATION_MESSAGES_CONFIG = new InjectionToken('NgxValidationMessagesConfig');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9pbnRlcmZhY2Uvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQ3ZDLElBQUksY0FBYyxDQUE4Qiw2QkFBNkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUc6IEluamVjdGlvblRva2VuPE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZz5cclxuICA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWc+KCdOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcnKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29uZmlnIHtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JqZWN0IGNvbnRhaW5zIHZhbGlkYXRpb24gbWVzc2FnZXMgaW4gdmFsaWRhdG9yTmFtZTogdmFsaWRhdG9yTWVzc2FnZSBmb3JtYXQuXHJcbiAgICovXHJcbiAgbWVzc2FnZXM6IHtcclxuICAgIFt2YWxpZGF0b3JOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGN1c3RvbSBzdHlsZXMgdG8gZGlzcGxheSB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxyXG4gICAqL1xyXG4gIHZhbGlkYXRpb25NZXNzYWdlc1N0eWxlPzoge1xyXG4gICAgYmxvY2tDbGFzc05hbWVzPzogc3RyaW5nO1xyXG4gICAgdGV4dENsYXNzTmFtZXM/OiBzdHJpbmc7XHJcbiAgfTtcclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
4
|
+
import { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
|
|
5
|
+
import { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
|
|
6
|
+
import { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
|
|
7
|
+
import { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
|
|
8
|
+
import { NgxValidationMessagesService } from './service/ngx-validation-messages.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export { NGX_VALIDATION_MESSAGES_CONFIG } from './interface/ngx-validation-messages.config';
|
|
11
|
+
export { NgxCustomMessageComponent } from './components/ngx-custom-message/ngx-custom-message.component';
|
|
12
|
+
export { NgxValidationMessagesComponent } from './components/ngx-validation-messages/ngx-validation-messages.component';
|
|
13
|
+
export { NgxValidatorNameDirective } from './directivies/ngx-validator-name.directive';
|
|
14
|
+
export class NgxValidationMessagesModule {
|
|
15
|
+
static forRoot(config) {
|
|
16
|
+
return {
|
|
17
|
+
ngModule: NgxValidationMessagesModule,
|
|
18
|
+
providers: [
|
|
19
|
+
NgxValidationMessagesService,
|
|
20
|
+
{
|
|
21
|
+
provide: NGX_VALIDATION_MESSAGES_CONFIG,
|
|
22
|
+
useValue: config
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
NgxValidationMessagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
29
|
+
NgxValidationMessagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesModule, declarations: [NgxValidationMessagesComponent,
|
|
30
|
+
NgxCustomMessageComponent,
|
|
31
|
+
NgxValidatorNameDirective], imports: [CommonModule,
|
|
32
|
+
MatFormFieldModule], exports: [NgxValidationMessagesComponent,
|
|
33
|
+
NgxCustomMessageComponent,
|
|
34
|
+
NgxValidatorNameDirective] });
|
|
35
|
+
NgxValidationMessagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesModule, imports: [[
|
|
36
|
+
CommonModule,
|
|
37
|
+
MatFormFieldModule
|
|
38
|
+
]] });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesModule, decorators: [{
|
|
40
|
+
type: NgModule,
|
|
41
|
+
args: [{
|
|
42
|
+
imports: [
|
|
43
|
+
CommonModule,
|
|
44
|
+
MatFormFieldModule
|
|
45
|
+
],
|
|
46
|
+
declarations: [
|
|
47
|
+
NgxValidationMessagesComponent,
|
|
48
|
+
NgxCustomMessageComponent,
|
|
49
|
+
NgxValidatorNameDirective
|
|
50
|
+
],
|
|
51
|
+
exports: [
|
|
52
|
+
NgxValidationMessagesComponent,
|
|
53
|
+
NgxCustomMessageComponent,
|
|
54
|
+
NgxValidatorNameDirective
|
|
55
|
+
]
|
|
56
|
+
}]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMvc3JjL2xpYi9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw4QkFBOEIsRUFBK0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFFekYsT0FBTyxFQUFFLDhCQUE4QixFQUErQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3pILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBa0J2RixNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBbUM7UUFDaEQsT0FBTztZQUNMLFFBQVEsRUFBRSwyQkFBMkI7WUFDckMsU0FBUyxFQUFFO2dCQUNULDRCQUE0QjtnQkFDNUI7b0JBQ0UsT0FBTyxFQUFFLDhCQUE4QjtvQkFDdkMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7d0hBWlUsMkJBQTJCO3lIQUEzQiwyQkFBMkIsaUJBVnBDLDhCQUE4QjtRQUM5Qix5QkFBeUI7UUFDekIseUJBQXlCLGFBTnpCLFlBQVk7UUFDWixrQkFBa0IsYUFRbEIsOEJBQThCO1FBQzlCLHlCQUF5QjtRQUN6Qix5QkFBeUI7eUhBR2hCLDJCQUEyQixZQWY3QjtZQUNQLFlBQVk7WUFDWixrQkFBa0I7U0FDbkI7MkZBWVUsMkJBQTJCO2tCQWhCdkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELFlBQVksRUFBRTt3QkFDWiw4QkFBOEI7d0JBQzlCLHlCQUF5Qjt3QkFDekIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5Qix5QkFBeUI7d0JBQ3pCLHlCQUF5QjtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9uZ3gtY3VzdG9tLW1lc3NhZ2Uvbmd4LWN1c3RvbS1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3Rpdmllcy9uZ3gtdmFsaWRhdG9yLW5hbWUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLCBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHsgTkdYX1ZBTElEQVRJT05fTUVTU0FHRVNfQ09ORklHLCBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xyXG5leHBvcnQgeyBOZ3hDdXN0b21NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25neC1jdXN0b20tbWVzc2FnZS9uZ3gtY3VzdG9tLW1lc3NhZ2UuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2aWVzL25neC12YWxpZGF0b3ItbmFtZS5kaXJlY3RpdmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzQ29tcG9uZW50LFxyXG4gICAgTmd4Q3VzdG9tTWVzc2FnZUNvbXBvbmVudCxcclxuICAgIE5neFZhbGlkYXRvck5hbWVEaXJlY3RpdmVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbXBvbmVudCxcclxuICAgIE5neEN1c3RvbU1lc3NhZ2VDb21wb25lbnQsXHJcbiAgICBOZ3hWYWxpZGF0b3JOYW1lRGlyZWN0aXZlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Tmd4VmFsaWRhdGlvbk1lc3NhZ2VzTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogTmd4VmFsaWRhdGlvbk1lc3NhZ2VzTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IE5HWF9WQUxJREFUSU9OX01FU1NBR0VTX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
constructor(messagesConfig) {
|
|
10
|
+
this.messagesConfig = messagesConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Regular expression to find params placeholder '#[paramName]'.
|
|
13
|
+
*/
|
|
14
|
+
this.paramsRegExp = new RegExp(/#[[a-zA-Z_\\-]*]/);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get validation message for specified validator.
|
|
18
|
+
*
|
|
19
|
+
* @param validatorName for which to get message
|
|
20
|
+
* @param params passed from validator for more detailed validation message
|
|
21
|
+
*
|
|
22
|
+
* @returns string validation message
|
|
23
|
+
*/
|
|
24
|
+
getValidatorErrorMessages(validatorName, params) {
|
|
25
|
+
const validationMessages = this.messagesConfig.messages;
|
|
26
|
+
const validationMessage = validationMessages[validatorName];
|
|
27
|
+
if (!validationMessage) {
|
|
28
|
+
throw new Error('Validation message for validator: ' + validatorName
|
|
29
|
+
+ ' cannot be found, please check validation message key for validator it is case sensitive.');
|
|
30
|
+
}
|
|
31
|
+
if (params) {
|
|
32
|
+
return this.expandParameterizedTemplateMessage(validationMessage, params);
|
|
33
|
+
}
|
|
34
|
+
return validationMessage;
|
|
35
|
+
}
|
|
36
|
+
expandParameterizedTemplateMessage(msg, params) {
|
|
37
|
+
while (this.paramsRegExp.test(msg)) {
|
|
38
|
+
const foundParams = this.paramsRegExp.exec(msg);
|
|
39
|
+
foundParams.forEach(value => {
|
|
40
|
+
const paramPlaceholder = value;
|
|
41
|
+
value = value.replace('#[', '').replace(']', '');
|
|
42
|
+
msg = msg.replace(paramPlaceholder, this.getParameter(params, value));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return msg;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A utilitarian method to get a property from an object.
|
|
49
|
+
* if there is no property, an empty string is returned.
|
|
50
|
+
*
|
|
51
|
+
* @param obj from which the property must be obtained
|
|
52
|
+
* @param prop property name
|
|
53
|
+
*
|
|
54
|
+
* @return property value or empty string
|
|
55
|
+
*/
|
|
56
|
+
getParameter(obj, prop) {
|
|
57
|
+
return prop.split('.')
|
|
58
|
+
.reduce((m, i) => {
|
|
59
|
+
return m && typeof m === 'object' ? m[i] : '';
|
|
60
|
+
}, obj);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
NgxValidationMessagesService.SERVER_ERRORS = 'serverErrors';
|
|
64
|
+
NgxValidationMessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesService, deps: [{ token: NGX_VALIDATION_MESSAGES_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
65
|
+
NgxValidationMessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesService });
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxValidationMessagesService, decorators: [{
|
|
67
|
+
type: Injectable
|
|
68
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
69
|
+
type: Inject,
|
|
70
|
+
args: [NGX_VALIDATION_MESSAGES_CONFIG]
|
|
71
|
+
}] }]; } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZhbGlkYXRpb24tbWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9saWIvc2VydmljZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBK0IsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFMUg7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQVN2QyxZQUE0RCxjQUEyQztRQUEzQyxtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFMdkc7O1dBRUc7UUFDSyxpQkFBWSxHQUFHLElBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFHdEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSx5QkFBeUIsQ0FBQyxhQUFxQixFQUFFLE1BQWU7UUFDckUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUN4RCxNQUFNLGlCQUFpQixHQUFXLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLGFBQWE7a0JBQ2hFLDJGQUEyRixDQUFDLENBQUM7U0FDbEc7UUFFRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzNFO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRU0sa0NBQWtDLENBQUMsR0FBVyxFQUFFLE1BQWM7UUFDbkUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssWUFBWSxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDbkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2YsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDOztBQTdEYSwwQ0FBYSxHQUFHLGNBQWUsQ0FBQTt5SEFGbEMsNEJBQTRCLGtCQVNuQiw4QkFBOEI7NkhBVHZDLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVOzswQkFVSSxNQUFNOzJCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcsIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZS9uZ3gtdmFsaWRhdGlvbi1tZXNzYWdlcy5jb25maWcnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgYWxsb3dzIGdldHRpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcyBmcm9tIGNsaWVudCdzIHNldHRpbmdzLlxyXG4gKiBJbmplY3Rpbmcge0BsaW5rIE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZ30gdG8gZ2V0IGNsaWVudCdzIGNvbmZpZ3VyYXRpb24gd2l0aCB2YWxpZGF0aW9uIG1lc3NhZ2VzLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgU0VSVkVSX0VSUk9SUyA9ICdzZXJ2ZXJFcnJvcnMnO1xyXG5cclxuICAvKipcclxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZmluZCBwYXJhbXMgcGxhY2Vob2xkZXIgJyNbcGFyYW1OYW1lXScuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJhbXNSZWdFeHAgPSBuZXcgUmVnRXhwKC8jW1thLXpBLVpfXFxcXC1dKl0vKTtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChOR1hfVkFMSURBVElPTl9NRVNTQUdFU19DT05GSUcpIHByaXZhdGUgbWVzc2FnZXNDb25maWc6IE5neFZhbGlkYXRpb25NZXNzYWdlc0NvbmZpZykge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHZhbGlkYXRpb24gbWVzc2FnZSBmb3Igc3BlY2lmaWVkIHZhbGlkYXRvci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JOYW1lIGZvciB3aGljaCB0byBnZXQgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFzc2VkIGZyb20gdmFsaWRhdG9yIGZvciBtb3JlIGRldGFpbGVkIHZhbGlkYXRpb24gbWVzc2FnZVxyXG4gICAqXHJcbiAgICogQHJldHVybnMgc3RyaW5nIHZhbGlkYXRpb24gbWVzc2FnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2VzKHZhbGlkYXRvck5hbWU6IHN0cmluZywgcGFyYW1zPzogb2JqZWN0KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IHRoaXMubWVzc2FnZXNDb25maWcubWVzc2FnZXM7XHJcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nID0gdmFsaWRhdGlvbk1lc3NhZ2VzW3ZhbGlkYXRvck5hbWVdO1xyXG5cclxuICAgIGlmICghdmFsaWRhdGlvbk1lc3NhZ2UpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIHZhbGlkYXRvcjogJyArIHZhbGlkYXRvck5hbWVcclxuICAgICAgICArICcgY2Fubm90IGJlIGZvdW5kLCBwbGVhc2UgY2hlY2sgdmFsaWRhdGlvbiBtZXNzYWdlIGtleSBmb3IgdmFsaWRhdG9yIGl0IGlzIGNhc2Ugc2Vuc2l0aXZlLicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kUGFyYW1ldGVyaXplZFRlbXBsYXRlTWVzc2FnZSh2YWxpZGF0aW9uTWVzc2FnZSwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kUGFyYW1ldGVyaXplZFRlbXBsYXRlTWVzc2FnZShtc2c6IHN0cmluZywgcGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xyXG4gICAgd2hpbGUgKHRoaXMucGFyYW1zUmVnRXhwLnRlc3QobXNnKSkge1xyXG4gICAgICBjb25zdCBmb3VuZFBhcmFtcyA9IHRoaXMucGFyYW1zUmVnRXhwLmV4ZWMobXNnKTtcclxuICAgICAgZm91bmRQYXJhbXMuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1QbGFjZWhvbGRlciA9IHZhbHVlO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnI1snLCAnJykucmVwbGFjZSgnXScsICcnKTtcclxuICAgICAgICBtc2cgPSBtc2cucmVwbGFjZShwYXJhbVBsYWNlaG9sZGVyLCB0aGlzLmdldFBhcmFtZXRlcihwYXJhbXMsIHZhbHVlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtc2c7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIHV0aWxpdGFyaWFuIG1ldGhvZCB0byBnZXQgYSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC5cclxuICAgKiBpZiB0aGVyZSBpcyBubyBwcm9wZXJ0eSwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG9iaiBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIG9idGFpbmVkXHJcbiAgICogQHBhcmFtIHByb3AgcHJvcGVydHkgbmFtZVxyXG4gICAqXHJcbiAgICogQHJldHVybiBwcm9wZXJ0eSB2YWx1ZSBvciBlbXB0eSBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldFBhcmFtZXRlcihvYmo6IG9iamVjdCwgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBwcm9wLnNwbGl0KCcuJylcclxuICAgICAgLnJlZHVjZSgobSwgaSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBtICYmIHR5cGVvZiBtID09PSAnb2JqZWN0JyA/IG1baV0gOiAnJztcclxuICAgICAgfSwgb2JqKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBzdGF0aWMgYXBwbHlTZXJ2ZXJFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3IpOiB2b2lkIHtcclxuICAvLyAgIGlmICghY29udHJvbCkge1xyXG4gIC8vICAgICByZXR1cm47XHJcbiAgLy8gICB9XHJcbiAgLy8gICBpZiAoY29udHJvbC5nZXRFcnJvcihOZ3hWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLlNFUlZFUl9FUlJPUlMpKSB7XHJcbiAgLy8gICAgIGNvbnN0IGV4aXN0aW5nRXJyb3JNZXNzYWdlcyA9IGNvbnRyb2wuZ2V0RXJyb3IoTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5TRVJWRVJfRVJST1JTKTtcclxuICAvLyAgICAgaWYgKF8uaXNBcnJheShleGlzdGluZ0Vycm9yTWVzc2FnZXMuY3VzdG9tTWVzc2FnZXMpICYmXHJcbiAgLy8gICAgICAgZXhpc3RpbmdFcnJvck1lc3NhZ2VzLmN1c3RvbU1lc3NhZ2VzLmluZGV4T2Yoc2VydmVyRXJyb3IubWVzc2FnZSkgPT09IC0xKSB7XHJcbiAgLy8gICAgICAgZXhpc3RpbmdFcnJvck1lc3NhZ2VzLmN1c3RvbU1lc3NhZ2VzLnB1c2goc2VydmVyRXJyb3IubWVzc2FnZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGNvbnRyb2wuc2V0RXJyb3JzKHtbTmd4VmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZS5TRVJWRVJfRVJST1JTXToge2N1c3RvbU1lc3NhZ2VzOiBbc2VydmVyRXJyb3IubWVzc2FnZV19fSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAvLyB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-validation-messages
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngx-validation-messages.module';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12YWxpZGF0aW9uLW1lc3NhZ2VzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtdmFsaWRhdGlvbi1tZXNzYWdlc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXZhbGlkYXRpb24tbWVzc2FnZXMubW9kdWxlJztcclxuIl19
|