@anglr/common 12.0.0-beta.20220413104159 → 12.0.0-beta.20220414093434
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 +50 -2
- package/es2015/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js +53 -0
- package/es2015/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js.map +1 -0
- package/es2015/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.js +75 -0
- package/es2015/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.js.map +1 -0
- package/es2015/forms/src/components/index.js +3 -0
- package/es2015/forms/src/components/index.js.map +1 -0
- package/es2015/forms/src/directives/hasError/hasError.directive.js +16 -6
- package/es2015/forms/src/directives/hasError/hasError.directive.js.map +1 -1
- package/es2015/forms/src/index.js +3 -1
- package/es2015/forms/src/index.js.map +1 -1
- package/es2015/forms/src/misc/formModel/interfaces/modelDecoratorMetadata.js.map +1 -1
- package/es2015/forms/src/misc/formModel/misc/utils.js +11 -8
- package/es2015/forms/src/misc/formModel/misc/utils.js.map +1 -1
- package/es2015/forms/src/misc/tokens.js +14 -0
- package/es2015/forms/src/misc/tokens.js.map +1 -0
- package/es2015/forms/src/misc/validationErrorsContainerView.js +31 -0
- package/es2015/forms/src/misc/validationErrorsContainerView.js.map +1 -0
- package/es2015/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js +1 -1
- package/es2015/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js.map +1 -1
- package/es2015/forms/src/modules/errorMessage/pipes/withErrorMessage/withErrorMessage.pipe.js +1 -1
- package/es2015/forms/src/modules/errorMessage/pipes/withErrorMessage/withErrorMessage.pipe.js.map +1 -1
- package/es2015/forms/src/modules/hasError.module.js +15 -4
- package/es2015/forms/src/modules/hasError.module.js.map +1 -1
- package/es2015/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.js +18 -9
- package/es2015/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.js.map +1 -1
- package/es2015/forms/src/services/validationErrorRenderer/validationErrorRenderer.interface.js.map +1 -1
- package/es2015/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.js +31 -145
- package/es2015/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.js.map +1 -1
- package/es2020/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js +53 -0
- package/es2020/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js.map +1 -0
- package/es2020/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.js +75 -0
- package/es2020/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.js.map +1 -0
- package/es2020/forms/src/components/index.js +3 -0
- package/es2020/forms/src/components/index.js.map +1 -0
- package/es2020/forms/src/directives/hasError/hasError.directive.js +15 -6
- package/es2020/forms/src/directives/hasError/hasError.directive.js.map +1 -1
- package/es2020/forms/src/index.js +3 -1
- package/es2020/forms/src/index.js.map +1 -1
- package/es2020/forms/src/misc/formModel/interfaces/modelDecoratorMetadata.js.map +1 -1
- package/es2020/forms/src/misc/formModel/misc/utils.js +8 -5
- package/es2020/forms/src/misc/formModel/misc/utils.js.map +1 -1
- package/es2020/forms/src/misc/tokens.js +14 -0
- package/es2020/forms/src/misc/tokens.js.map +1 -0
- package/es2020/forms/src/misc/validationErrorsContainerView.js +31 -0
- package/es2020/forms/src/misc/validationErrorsContainerView.js.map +1 -0
- package/es2020/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js +1 -1
- package/es2020/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js.map +1 -1
- package/es2020/forms/src/modules/errorMessage/pipes/withErrorMessage/withErrorMessage.pipe.js +1 -1
- package/es2020/forms/src/modules/errorMessage/pipes/withErrorMessage/withErrorMessage.pipe.js.map +1 -1
- package/es2020/forms/src/modules/hasError.module.js +15 -4
- package/es2020/forms/src/modules/hasError.module.js.map +1 -1
- package/es2020/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.js +18 -9
- package/es2020/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.js.map +1 -1
- package/es2020/forms/src/services/validationErrorRenderer/validationErrorRenderer.interface.js.map +1 -1
- package/es2020/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.js +31 -143
- package/es2020/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.js.map +1 -1
- package/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.css +4 -0
- package/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.d.ts +32 -0
- package/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.d.ts.map +1 -0
- package/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.html +3 -0
- package/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.css +4 -0
- package/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.d.ts +51 -0
- package/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.d.ts.map +1 -0
- package/forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.html +0 -0
- package/forms/src/components/index.d.ts +3 -0
- package/forms/src/components/index.d.ts.map +1 -0
- package/forms/src/directives/hasError/hasError.directive.d.ts +6 -3
- package/forms/src/directives/hasError/hasError.directive.d.ts.map +1 -1
- package/forms/src/index.d.ts +3 -1
- package/forms/src/index.d.ts.map +1 -1
- package/forms/src/misc/formModel/interfaces/modelDecoratorMetadata.d.ts +6 -1
- package/forms/src/misc/formModel/interfaces/modelDecoratorMetadata.d.ts.map +1 -1
- package/forms/src/misc/formModel/misc/utils.d.ts.map +1 -1
- package/forms/src/misc/tokens.d.ts +16 -0
- package/forms/src/misc/tokens.d.ts.map +1 -0
- package/forms/src/misc/validationErrorsContainerView.d.ts +25 -0
- package/forms/src/misc/validationErrorsContainerView.d.ts.map +1 -0
- package/forms/src/modules/hasError.module.d.ts +4 -1
- package/forms/src/modules/hasError.module.d.ts.map +1 -1
- package/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.d.ts +4 -7
- package/forms/src/services/errorMessagesExtractor/errorMessagesExtractor.service.d.ts.map +1 -1
- package/forms/src/services/validationErrorRenderer/validationErrorRenderer.interface.d.ts +43 -12
- package/forms/src/services/validationErrorRenderer/validationErrorRenderer.interface.d.ts.map +1 -1
- package/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.d.ts +15 -63
- package/forms/src/services/validationErrorRenderer/validationErrorRenderer.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/version.bak +1 -1
- package/es2015/forms/src/misc/types.js +0 -6
- package/es2015/forms/src/misc/types.js.map +0 -1
- package/es2020/forms/src/misc/types.js +0 -6
- package/es2020/forms/src/misc/types.js.map +0 -1
- package/forms/src/misc/types.d.ts +0 -7
- package/forms/src/misc/types.d.ts.map +0 -1
package/changelog.md
CHANGED
|
@@ -1,19 +1,67 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## Version 12.0.0 (2022-04-
|
|
3
|
+
## Version 12.0.0 (2022-04-14)
|
|
4
4
|
|
|
5
5
|
### Bug Fixes
|
|
6
6
|
|
|
7
7
|
- *subpackage* `@anglr/common/forms`
|
|
8
8
|
- fixed double error displaying for validations, when submit clicked
|
|
9
9
|
- fixed `FormGroupValidator` and `FormGroupAsyncValidator`, now works correctly
|
|
10
|
+
- fixed `buildFormGroup` function, now correctly applies form group validators
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- *subpackage* `@anglr/common/forms`
|
|
15
|
+
- **Form Model Builder**
|
|
16
|
+
- updated `ModelDecoratorMetadata`
|
|
17
|
+
- property `ɵArgs` object storing additional arguments for customization
|
|
18
|
+
- new `IGNORED_VALIDATION_ERRORS` injection token for injecting array of ignored error names when automatically processed
|
|
19
|
+
- updated `ErrorMessagesExtractor` service
|
|
20
|
+
- now supports `IGNORED_VALIDATION_ERRORS`
|
|
21
|
+
- now allows to display validation error 'value' if it is `string`
|
|
22
|
+
- new `ValidationErrorsOptions` interface, that are options for displayed validation errors
|
|
23
|
+
- created super interface for `ValidationErrorsContainerOptions`
|
|
24
|
+
- property `prefix` prefix of css classes applied to element
|
|
25
|
+
- property `suffix` suffix of css classes applied to element
|
|
26
|
+
- property `wrapperDivClass` css class attached to wrapper div
|
|
27
|
+
- new `ValidationErrorsContainerOptions` interface, that are options for validation errors container
|
|
28
|
+
- created super interface for `ValidationErrorsRendererOptions`
|
|
29
|
+
- property `component` component used for rendering validation errors
|
|
30
|
+
- property `template` template used for rendering validation errors
|
|
31
|
+
- updated `ValidationErrorsTemplateContext` interface
|
|
32
|
+
- property `options` options used for displaying validation errors
|
|
33
|
+
- new `ValidationErrorsContainerComponent` interface, that is component that is used for rendering validation errors container
|
|
34
|
+
- method `show` shows validation errors
|
|
35
|
+
- method `hide` hides validation errors
|
|
36
|
+
- new `ValidationErrorsContainerView` class, that holds validation errors view container
|
|
37
|
+
- property `viewContainer` gets or sets current instance of view container
|
|
38
|
+
- property `viewContainerChange` occurs when view container instance changes
|
|
39
|
+
- new `DefaultValidationErrorsContainerComponent` component, that serves as container for validation errors, either component or templates
|
|
40
|
+
- implements `ValidationErrorsContainerComponent` interface
|
|
41
|
+
- default value for `ValidationErrorRendererFactory`
|
|
42
|
+
- new `DefaultValidationErrorsComponent` component, that is default validation errors component, displaying validation errors
|
|
43
|
+
- implements `ValidationErrorsComponent` interface
|
|
44
|
+
- default value for `ValidationErrorRendererFactory`
|
|
10
45
|
|
|
11
46
|
### BREAKING CHANGES
|
|
12
47
|
|
|
13
48
|
- `ValidationErrorRenderer` interface
|
|
14
|
-
- `update` method, has
|
|
49
|
+
- `update` method, parameters has changed
|
|
50
|
+
- removed `wrapperElement`
|
|
15
51
|
- `ValidationErrorRendererFactory` service
|
|
52
|
+
- changed constructor parameters
|
|
53
|
+
- `DefaultValidationErrorRenderer` class
|
|
16
54
|
- now implements updated `ValidationErrorRenderer`
|
|
55
|
+
- completely refactored
|
|
56
|
+
- now using `ValidationErrorsContainerComponent` for rendering errors
|
|
57
|
+
- `ErrorMessagesExtractor` service
|
|
58
|
+
- changed constructor parameters
|
|
59
|
+
- `HasErrorDirective` directive
|
|
60
|
+
- changed constructor parameters
|
|
61
|
+
- `ValidationErrorsComponent` interface
|
|
62
|
+
- `show` now has new parameter *options*
|
|
63
|
+
- `ValidationErrorRendererCtor` interface
|
|
64
|
+
- `ctor` has changed parameters
|
|
17
65
|
|
|
18
66
|
## Version 11.3.1 (2022-04-13)
|
|
19
67
|
|
package/es2015/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, HostBinding } from '@angular/core';
|
|
2
|
+
import { animateChild, query, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { slideInOutTrigger } from '@anglr/animations';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
//TODO: move animation to common
|
|
7
|
+
/**
|
|
8
|
+
* Default validation errors component, displaying validation errors
|
|
9
|
+
*/
|
|
10
|
+
export class DefaultValidationErrorsComponent {
|
|
11
|
+
//######################### constructor #########################
|
|
12
|
+
constructor(_changeDetector) {
|
|
13
|
+
this._changeDetector = _changeDetector;
|
|
14
|
+
//######################### public properties - host #########################
|
|
15
|
+
/**
|
|
16
|
+
* Enables leave animations for internal stuff
|
|
17
|
+
*/
|
|
18
|
+
this.animate = true;
|
|
19
|
+
}
|
|
20
|
+
//######################### public methods - implementation of ValidationErrorsComponent #########################
|
|
21
|
+
/**
|
|
22
|
+
* @inheritdoc
|
|
23
|
+
*/
|
|
24
|
+
show(errors, options) {
|
|
25
|
+
this.errors = errors;
|
|
26
|
+
this.options = options;
|
|
27
|
+
this._changeDetector.detectChanges();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
DefaultValidationErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DefaultValidationErrorsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
DefaultValidationErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DefaultValidationErrorsComponent, selector: "default-validation-errors", host: { properties: { "@componentContent": "this.animate" } }, ngImport: i0, template: "<div [ngClass]=\"options?.wrapperDivClass\" *ngIf=\"errors?.errorMessages?.length\" @slideInOut>\n <div *ngFor=\"let error of errors?.errorMessages\">{{error}}</div>\n</div>", styles: [":host\n{\n display: contents;\n}"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
|
|
32
|
+
slideInOutTrigger,
|
|
33
|
+
trigger('componentContent', [
|
|
34
|
+
transition(':enter, :leave', [
|
|
35
|
+
query('@*', animateChild(), { optional: true })
|
|
36
|
+
])
|
|
37
|
+
])
|
|
38
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DefaultValidationErrorsComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'default-validation-errors', animations: [
|
|
42
|
+
slideInOutTrigger,
|
|
43
|
+
trigger('componentContent', [
|
|
44
|
+
transition(':enter, :leave', [
|
|
45
|
+
query('@*', animateChild(), { optional: true })
|
|
46
|
+
])
|
|
47
|
+
])
|
|
48
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"options?.wrapperDivClass\" *ngIf=\"errors?.errorMessages?.length\" @slideInOut>\n <div *ngFor=\"let error of errors?.errorMessages\">{{error}}</div>\n</div>", styles: [":host\n{\n display: contents;\n}"] }]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { animate: [{
|
|
50
|
+
type: HostBinding,
|
|
51
|
+
args: ['@componentContent']
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=defaultValidationErrors.component.js.map
|
package/es2015/forms/src/components/defaultValidationErrors/defaultValidationErrors.component.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultValidationErrors.component.js","sourceRoot":"","sources":["../../../../../forms/src/components/defaultValidationErrors/defaultValidationErrors.component.ts","../../../../../forms/src/components/defaultValidationErrors/defaultValidationErrors.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AACjG,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;;;AAKpD,gCAAgC;AAEhC;;GAEG;AAmBH,MAAM,OAAO,gCAAgC;IAwBzC,iEAAiE;IACjE,YAAsB,eAAkC;QAAlC,oBAAe,GAAf,eAAe,CAAmB;QATxD,8EAA8E;QAE9E;;WAEG;QAEI,YAAO,GAAY,IAAI,CAAC;IAK/B,CAAC;IAED,kHAAkH;IAElH;;OAEG;IACI,IAAI,CAAC,MAA8B,EAAE,OAAgC;QAExE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;;6HAxCQ,gCAAgC;iHAAhC,gCAAgC,gIC9B7C,kLAEM,mVDgBF;QACI,iBAAiB;QACjB,OAAO,CAAC,kBAAkB,EAC1B;YACI,UAAU,CAAC,gBAAgB,EAC3B;gBACI,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;aAChD,CAAC;SACL,CAAC;KACL;2FAGQ,gCAAgC;kBAlB5C,SAAS;+BAEI,2BAA2B,cAIrC;wBACI,iBAAiB;wBACjB,OAAO,CAAC,kBAAkB,EAC1B;4BACI,UAAU,CAAC,gBAAgB,EAC3B;gCACI,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;6BAChD,CAAC;yBACL,CAAC;qBACL,mBACgB,uBAAuB,CAAC,MAAM;wGAwBxC,OAAO;sBADb,WAAW;uBAAC,mBAAmB","sourcesContent":["import {Component, ChangeDetectionStrategy, ChangeDetectorRef, HostBinding} from '@angular/core';\nimport {animateChild, query, transition, trigger} from '@angular/animations';\nimport {slideInOutTrigger} from '@anglr/animations';\n\nimport {ValidationErrorsResult} from '../../services/errorMessagesExtractor/errorMessagesExtractor.interface';\nimport {ValidationErrorsComponent, ValidationErrorsOptions} from '../../services/validationErrorRenderer/validationErrorRenderer.interface';\n\n//TODO: move animation to common\n\n/**\n * Default validation errors component, displaying validation errors\n */\n@Component(\n{\n selector: 'default-validation-errors',\n templateUrl: 'defaultValidationErrors.component.html',\n styleUrls: ['defaultValidationErrors.component.css'],\n animations: \n [\n slideInOutTrigger,\n trigger('componentContent',\n [\n transition(':enter, :leave',\n [\n query('@*', animateChild(), {optional: true})\n ])\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultValidationErrorsComponent implements ValidationErrorsComponent\n{\n //######################### public properties - template bindings #########################\n\n /**\n * Errors to be shown\n * @internal\n */\n public errors: ValidationErrorsResult;\n \n /**\n * Options used for displaying validation errors\n * @internal\n */\n public options: ValidationErrorsOptions;\n\n //######################### public properties - host #########################\n\n /**\n * Enables leave animations for internal stuff\n */\n @HostBinding('@componentContent')\n public animate: boolean = true;\n\n //######################### constructor #########################\n constructor(protected _changeDetector: ChangeDetectorRef)\n {\n }\n\n //######################### public methods - implementation of ValidationErrorsComponent #########################\n\n /**\n * @inheritdoc\n */\n public show(errors: ValidationErrorsResult, options: ValidationErrorsOptions): void\n {\n this.errors = errors;\n this.options = options;\n\n this._changeDetector.detectChanges();\n }\n}","<div [ngClass]=\"options?.wrapperDivClass\" *ngIf=\"errors?.errorMessages?.length\" @slideInOut>\n <div *ngFor=\"let error of errors?.errorMessages\">{{error}}</div>\n</div>"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Component that serves as container for validation errors, either component or templates
|
|
5
|
+
*/
|
|
6
|
+
export class DefaultValidationErrorsContainerComponent {
|
|
7
|
+
//######################### constructor #########################
|
|
8
|
+
constructor(_viewContainer) {
|
|
9
|
+
this._viewContainer = _viewContainer;
|
|
10
|
+
}
|
|
11
|
+
//######################### public methods - implementation of #########################
|
|
12
|
+
/**
|
|
13
|
+
* Shows validation errors
|
|
14
|
+
* @param errors - Errors to be shown
|
|
15
|
+
* @param options - Options used for displaying validation errors
|
|
16
|
+
* @param errorClasses - Array of css error classes
|
|
17
|
+
*/
|
|
18
|
+
show(errors, options) {
|
|
19
|
+
this._errors = errors;
|
|
20
|
+
this._options = options;
|
|
21
|
+
if (options.template) {
|
|
22
|
+
this._renderTemplate();
|
|
23
|
+
}
|
|
24
|
+
else if (options.component) {
|
|
25
|
+
this._renderComponent();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error('Missing template or component for rendering validation errors!');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Hides validation errors
|
|
33
|
+
*/
|
|
34
|
+
hide() {
|
|
35
|
+
this._viewContainer.clear();
|
|
36
|
+
this._component = null;
|
|
37
|
+
this._template = null;
|
|
38
|
+
}
|
|
39
|
+
//######################### protected methods #########################
|
|
40
|
+
/**
|
|
41
|
+
* Renders validation errors component
|
|
42
|
+
*/
|
|
43
|
+
_renderComponent() {
|
|
44
|
+
if (!this._component) {
|
|
45
|
+
this._component = this._viewContainer.createComponent(this._options.component);
|
|
46
|
+
}
|
|
47
|
+
this._component.instance.show(this._errors, this._options);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Renders validation errors template
|
|
51
|
+
*/
|
|
52
|
+
_renderTemplate() {
|
|
53
|
+
if (!this._template) {
|
|
54
|
+
this._template = this._viewContainer.createEmbeddedView(this._options.template, {
|
|
55
|
+
$implicit: this._errors,
|
|
56
|
+
options: this._options
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this._template.context =
|
|
61
|
+
{
|
|
62
|
+
$implicit: this._errors,
|
|
63
|
+
options: this._options
|
|
64
|
+
};
|
|
65
|
+
this._template.detectChanges();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
DefaultValidationErrorsContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DefaultValidationErrorsContainerComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
+
DefaultValidationErrorsContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: DefaultValidationErrorsContainerComponent, selector: "default-validation-errors-container", ngImport: i0, template: "", styles: [":host\n{\n display: contents;\n}"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: DefaultValidationErrorsContainerComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'default-validation-errors-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "", styles: [":host\n{\n display: contents;\n}"] }]
|
|
74
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
75
|
+
//# sourceMappingURL=defaultValidationErrorsContainer.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultValidationErrorsContainer.component.js","sourceRoot":"","sources":["../../../../../forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.ts","../../../../../forms/src/components/defaultValidationErrorsContainer/defaultValidationErrorsContainer.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,uBAAuB,EAAE,gBAAgB,EAAgC,MAAM,eAAe,CAAC;;AAKlH;;GAEG;AAQH,MAAM,OAAO,yCAAyC;IA0BlD,iEAAiE;IACjE,YAAsB,cAAgC;QAAhC,mBAAc,GAAd,cAAc,CAAkB;IAEtD,CAAC;IAED,yFAAyF;IAEzF;;;;;OAKG;IACI,IAAI,CAAC,MAA8B,EAAE,OAAyC;QAEjF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAG,OAAO,CAAC,QAAQ,EACnB;YACI,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;aACI,IAAG,OAAO,CAAC,SAAS,EACzB;YACI,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;aAED;YACI,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;SACrF;IACL,CAAC;IAED;;OAEG;IACI,IAAI;QAEP,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,uEAAuE;IAEvE;;OAEG;IACO,gBAAgB;QAEtB,IAAG,CAAC,IAAI,CAAC,UAAU,EACnB;YACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAClF;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACO,eAAe;QAErB,IAAG,CAAC,IAAI,CAAC,SAAS,EAClB;YACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAC9E;gBACI,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,OAAO,EAAE,IAAI,CAAC,QAAQ;aACzB,CAAC,CAAC;SACN;aAED;YACI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACtB;oBACI,SAAS,EAAE,IAAI,CAAC,OAAO;oBACvB,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACzB,CAAC;YAEF,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;SAClC;IACL,CAAC;;sIA1GQ,yCAAyC;0HAAzC,yCAAyC,2ECftD,EAAA;2FDea,yCAAyC;kBAPrD,SAAS;+BAEI,qCAAqC,mBAG9B,uBAAuB,CAAC,MAAM","sourcesContent":["import {Component, ChangeDetectionStrategy, ViewContainerRef, ComponentRef, EmbeddedViewRef} from '@angular/core';\n\nimport {ValidationErrorsResult} from '../../services/errorMessagesExtractor/errorMessagesExtractor.interface';\nimport {ValidationErrorsComponent, ValidationErrorsContainerComponent, ValidationErrorsContainerOptions, ValidationErrorsTemplateContext} from '../../services/validationErrorRenderer/validationErrorRenderer.interface';\n\n/**\n * Component that serves as container for validation errors, either component or templates\n */\n@Component(\n{\n selector: 'default-validation-errors-container',\n templateUrl: 'defaultValidationErrorsContainer.component.html',\n styleUrls: ['defaultValidationErrorsContainer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DefaultValidationErrorsContainerComponent implements ValidationErrorsContainerComponent\n{\n //######################### protected fields #########################\n\n /**\n * Errors to be shown\n * @internal\n */\n protected _errors: ValidationErrorsResult;\n \n /**\n * Options used for displaying validation errors\n * @internal\n */\n protected _options: ValidationErrorsContainerOptions;\n\n /**\n * Instance of component reference for rendered errors\n */\n protected _component: ComponentRef<ValidationErrorsComponent>;\n\n /**\n * Instance of template reference for rendered errors\n */\n protected _template: EmbeddedViewRef<ValidationErrorsTemplateContext>;\n\n //######################### constructor #########################\n constructor(protected _viewContainer: ViewContainerRef)\n {\n }\n\n //######################### public methods - implementation of #########################\n\n /**\n * Shows validation errors\n * @param errors - Errors to be shown\n * @param options - Options used for displaying validation errors\n * @param errorClasses - Array of css error classes\n */\n public show(errors: ValidationErrorsResult, options: ValidationErrorsContainerOptions): void\n {\n this._errors = errors;\n this._options = options;\n\n if(options.template)\n {\n this._renderTemplate();\n }\n else if(options.component)\n {\n this._renderComponent();\n }\n else\n {\n throw new Error('Missing template or component for rendering validation errors!');\n }\n }\n\n /**\n * Hides validation errors\n */\n public hide(): void\n {\n this._viewContainer.clear();\n this._component = null;\n this._template = null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Renders validation errors component\n */\n protected _renderComponent(): void\n {\n if(!this._component)\n {\n this._component = this._viewContainer.createComponent(this._options.component);\n }\n\n this._component.instance.show(this._errors, this._options);\n }\n\n /**\n * Renders validation errors template\n */\n protected _renderTemplate(): void\n {\n if(!this._template)\n {\n this._template = this._viewContainer.createEmbeddedView(this._options.template,\n {\n $implicit: this._errors,\n options: this._options\n });\n }\n else\n {\n this._template.context =\n {\n $implicit: this._errors,\n options: this._options\n };\n\n this._template.detectChanges();\n }\n }\n}",""]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../forms/src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,6DAA6D,CAAC;AAC5E,cAAc,+EAA+E,CAAC","sourcesContent":["export * from './defaultValidationErrors/defaultValidationErrors.component';\nexport * from './defaultValidationErrorsContainer/defaultValidationErrorsContainer.component';\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Directive, ElementRef, Optional, SkipSelf, Inject, Input, Injector } from '@angular/core';
|
|
2
|
+
import { Directive, ElementRef, Optional, SkipSelf, Inject, Input, Injector, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { FormControlDirective, FormControlName, NgModel } from '@angular/forms';
|
|
4
4
|
import { STRING_LOCALIZATION } from '@anglr/common';
|
|
5
5
|
import { generateId, BindThis } from '@jscrpt/common';
|
|
@@ -7,25 +7,29 @@ import { Subscription } from 'rxjs';
|
|
|
7
7
|
import { ValidationErrorRendererFactory } from '../../services/validationErrorRenderer/validationErrorRenderer.service';
|
|
8
8
|
import { SubmittedService } from '../../services/submitted/submitted.service';
|
|
9
9
|
import { GroupHasErrorDirective } from '../groupHasError/groupHasError.directive';
|
|
10
|
+
import { ValidationErrorsContainerView } from '../../misc/validationErrorsContainerView';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "../../services/validationErrorRenderer/validationErrorRenderer.service";
|
|
12
13
|
import * as i2 from "../groupHasError/groupHasError.directive";
|
|
13
14
|
import * as i3 from "@angular/forms";
|
|
14
15
|
import * as i4 from "../../services/submitted/submitted.service";
|
|
16
|
+
import * as i5 from "../../misc/validationErrorsContainerView";
|
|
15
17
|
//TODO - add support for setting renderer factory options using input
|
|
16
18
|
/**
|
|
17
19
|
* Directive that is attached to control element and handles css classes that are added to this element
|
|
18
20
|
*/
|
|
19
21
|
export class HasErrorDirective {
|
|
20
22
|
//######################### constructor #########################
|
|
21
|
-
constructor(_element, _rendererFactory, _groupHasError, _formControl, _formControlName, _ngModel, _submittedSvc, _stringLocalization, _injector) {
|
|
23
|
+
constructor(_element, _rendererFactory, _viewContainer, _groupHasError, _formControl, _formControlName, _ngModel, _submittedSvc, _containerView, _stringLocalization, _injector) {
|
|
22
24
|
this._element = _element;
|
|
23
25
|
this._rendererFactory = _rendererFactory;
|
|
26
|
+
this._viewContainer = _viewContainer;
|
|
24
27
|
this._groupHasError = _groupHasError;
|
|
25
28
|
this._formControl = _formControl;
|
|
26
29
|
this._formControlName = _formControlName;
|
|
27
30
|
this._ngModel = _ngModel;
|
|
28
31
|
this._submittedSvc = _submittedSvc;
|
|
32
|
+
this._containerView = _containerView;
|
|
29
33
|
this._stringLocalization = _stringLocalization;
|
|
30
34
|
this._injector = _injector;
|
|
31
35
|
//######################### private fields #########################
|
|
@@ -59,8 +63,12 @@ export class HasErrorDirective {
|
|
|
59
63
|
* Initialize component
|
|
60
64
|
*/
|
|
61
65
|
ngOnInit() {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
var _c;
|
|
68
|
+
(_a = this._containerView) !== null && _a !== void 0 ? _a : (this._containerView = new ValidationErrorsContainerView());
|
|
69
|
+
(_b = (_c = this._containerView).viewContainer) !== null && _b !== void 0 ? _b : (_c.viewContainer = this._viewContainer);
|
|
62
70
|
this._registerMutationObserver();
|
|
63
|
-
this.renderer = this._rendererFactory.create(this.control, this.
|
|
71
|
+
this.renderer = this._rendererFactory.create(this.control, this._containerView, this._injector, this._isSubmittedOrDirty);
|
|
64
72
|
this._subscriptions.add(this._stringLocalization.textsChange.subscribe(() => this._updateStatus()));
|
|
65
73
|
this._subscriptions.add(this.control.statusChanges.subscribe(() => this._updateStatus()));
|
|
66
74
|
this._updateStatus();
|
|
@@ -85,7 +93,7 @@ export class HasErrorDirective {
|
|
|
85
93
|
*/
|
|
86
94
|
_updateStatus() {
|
|
87
95
|
this._previousDirty = this.control.dirty;
|
|
88
|
-
this._hasErrors = this.renderer.update(this.errorMessages);
|
|
96
|
+
this._hasErrors = this.renderer.update({}, this.errorMessages);
|
|
89
97
|
this._toggleGroupHasError();
|
|
90
98
|
}
|
|
91
99
|
/**
|
|
@@ -129,7 +137,7 @@ export class HasErrorDirective {
|
|
|
129
137
|
});
|
|
130
138
|
}
|
|
131
139
|
}
|
|
132
|
-
HasErrorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: HasErrorDirective, deps: [{ token: i0.ElementRef }, { token: i1.ValidationErrorRendererFactory }, { token: i2.GroupHasErrorDirective, optional: true, skipSelf: true }, { token: i3.FormControlDirective, optional: true }, { token: i3.FormControlName, optional: true }, { token: i3.NgModel, optional: true }, { token: i4.SubmittedService, optional: true }, { token: STRING_LOCALIZATION }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
140
|
+
HasErrorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: HasErrorDirective, deps: [{ token: i0.ElementRef }, { token: i1.ValidationErrorRendererFactory }, { token: i0.ViewContainerRef }, { token: i2.GroupHasErrorDirective, optional: true, skipSelf: true }, { token: i3.FormControlDirective, optional: true }, { token: i3.FormControlName, optional: true }, { token: i3.NgModel, optional: true }, { token: i4.SubmittedService, optional: true }, { token: i5.ValidationErrorsContainerView, optional: true }, { token: STRING_LOCALIZATION }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
133
141
|
HasErrorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: HasErrorDirective, selector: "[hasError]", inputs: { errorMessages: "errorMessages" }, ngImport: i0 });
|
|
134
142
|
__decorate([
|
|
135
143
|
BindThis,
|
|
@@ -142,7 +150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
142
150
|
args: [{
|
|
143
151
|
selector: '[hasError]'
|
|
144
152
|
}]
|
|
145
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ValidationErrorRendererFactory }, { type: i2.GroupHasErrorDirective, decorators: [{
|
|
153
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ValidationErrorRendererFactory }, { type: i0.ViewContainerRef }, { type: i2.GroupHasErrorDirective, decorators: [{
|
|
146
154
|
type: Optional
|
|
147
155
|
}, {
|
|
148
156
|
type: SkipSelf
|
|
@@ -154,6 +162,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
154
162
|
type: Optional
|
|
155
163
|
}] }, { type: i4.SubmittedService, decorators: [{
|
|
156
164
|
type: Optional
|
|
165
|
+
}] }, { type: i5.ValidationErrorsContainerView, decorators: [{
|
|
166
|
+
type: Optional
|
|
157
167
|
}] }, { type: undefined, decorators: [{
|
|
158
168
|
type: Inject,
|
|
159
169
|
args: [STRING_LOCALIZATION]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasError.directive.js","sourceRoot":"","sources":["../../../../../forms/src/directives/hasError/hasError.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {Directive, ElementRef, Optional, SkipSelf, OnInit, OnDestroy, Inject, Input, Injector} from '@angular/core';\nimport {FormControlDirective, FormControlName, FormControl, NgModel} from '@angular/forms';\nimport {StringLocalization, STRING_LOCALIZATION} from '@anglr/common';\nimport {generateId, BindThis, StringDictionary} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {ValidationErrorRendererFactory} from '../../services/validationErrorRenderer/validationErrorRenderer.service';\nimport {ValidationErrorRenderer} from '../../services/validationErrorRenderer/validationErrorRenderer.interface';\nimport {SubmittedService} from '../../services/submitted/submitted.service';\nimport {GroupHasErrorDirective} from '../groupHasError/groupHasError.directive';\n\n//TODO - add support for setting renderer factory options using input\n\n/**\n * Directive that is attached to control element and handles css classes that are added to this element\n */\n@Directive(\n{\n selector: '[hasError]'\n})\nexport class HasErrorDirective implements OnInit, OnDestroy\n{\n //######################### private fields #########################\n\n /**\n * Subscriptions that are destroyed with destruction of this directive\n */\n private _subscriptions: Subscription = new Subscription();\n\n /**\n * Unique generated id of control\n */\n private _id: string = generateId(10);\n\n /**\n * Last value of control pristine attribute\n */\n private _previousDirty: boolean = false;\n\n /**\n * Indication whether currently are any errors rendered\n */\n private _hasErrors: boolean = false;\n\n /**\n * Mutation observer used for observing changes on class of element\n */\n private _observer: MutationObserver;\n\n //######################### private properties #########################\n\n /**\n * Gets control which was assigned to this element\n */\n private get control(): FormControl\n {\n return this._formControl?.control || this._formControlName?.control || this._ngModel?.control;\n }\n\n //######################### public properties #########################\n\n /**\n * Instance of validation error renderer\n */\n public renderer: ValidationErrorRenderer;\n\n //######################### public propeties - inputs #########################\n\n /**\n * Customized error messages\n */\n @Input()\n public errorMessages: StringDictionary;\n\n //######################### constructor #########################\n constructor(private _element: ElementRef<HTMLElement>,\n private _rendererFactory: ValidationErrorRendererFactory,\n @Optional() @SkipSelf() private _groupHasError: GroupHasErrorDirective,\n @Optional() private _formControl: FormControlDirective,\n @Optional() private _formControlName: FormControlName,\n @Optional() private _ngModel: NgModel,\n @Optional() private _submittedSvc: SubmittedService,\n @Inject(STRING_LOCALIZATION) protected _stringLocalization: StringLocalization,\n protected _injector: Injector)\n {\n }\n\n //######################### public methods - implementation of OnInit #########################\n \n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n this._registerMutationObserver();\n\n this.renderer = this._rendererFactory.create(this.control,\n this._element.nativeElement,\n this._injector,\n this._isSubmittedOrDirty,\n {\n });\n\n this._subscriptions.add(this._stringLocalization.textsChange.subscribe(() => this._updateStatus()));\n this._subscriptions.add(this.control.statusChanges.subscribe(() => this._updateStatus()));\n\n this._updateStatus();\n\n if(this._submittedSvc)\n {\n this._subscriptions.add(this._submittedSvc.submittedChange.subscribe(() => this._isSubmittedOrDirty(() => this._updateStatus())));\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._subscriptions.unsubscribe();\n\n this._groupHasError?.unregisterControl(this._id);\n this._observer?.disconnect();\n this.renderer?.destroy();\n }\n\n //######################### private methods #########################\n\n /**\n * Updates status of control and css classes\n */\n private _updateStatus(): void\n {\n this._previousDirty = this.control.dirty;\n this._hasErrors = this.renderer.update(this.errorMessages);\n this._toggleGroupHasError();\n }\n\n /**\n * Toggles registration of control in parent group\n */\n private _toggleGroupHasError(): void\n {\n if(this._groupHasError)\n {\n this._isSubmittedOrDirty(() => this._groupHasError.registerControl(this._id),\n () => this._groupHasError.unregisterControl(this._id),\n this._hasErrors);\n }\n }\n\n /**\n * Calls action when form is submitted or control is dirty\n * @param action - Action to be called when form is submitted or control dirty\n * @param falseAction - Action to be called when form is not submitted and control is not dirty\n * @param additionalCondition - Additional condition to be evaluated\n */\n @BindThis\n private _isSubmittedOrDirty(action: () => void, falseAction: () => void = () => {}, additionalCondition: boolean = true): void\n {\n //submitted form or dirty control\n if((this._submittedSvc?.submitted ||\n this.control?.dirty) &&\n additionalCondition)\n {\n action();\n }\n else\n {\n falseAction();\n }\n }\n\n /**\n * Registers mutation observer which watch for changes of class list\n */\n private _registerMutationObserver(): void\n {\n this._observer = new MutationObserver(() =>\n {\n if(this.control.dirty != this._previousDirty)\n {\n this._updateStatus();\n }\n });\n\n this._observer.observe(this._element.nativeElement, \n {\n attributeFilter: ['class'],\n attributes: true\n });\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"hasError.directive.js","sourceRoot":"","sources":["../../../../../forms/src/directives/hasError/hasError.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {Directive, ElementRef, Optional, SkipSelf, OnInit, OnDestroy, Inject, Input, Injector, ViewContainerRef} from '@angular/core';\nimport {FormControlDirective, FormControlName, FormControl, NgModel} from '@angular/forms';\nimport {StringLocalization, STRING_LOCALIZATION} from '@anglr/common';\nimport {generateId, BindThis, StringDictionary} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {ValidationErrorRendererFactory} from '../../services/validationErrorRenderer/validationErrorRenderer.service';\nimport {ValidationErrorRenderer} from '../../services/validationErrorRenderer/validationErrorRenderer.interface';\nimport {SubmittedService} from '../../services/submitted/submitted.service';\nimport {GroupHasErrorDirective} from '../groupHasError/groupHasError.directive';\nimport {ValidationErrorsContainerView} from '../../misc/validationErrorsContainerView';\n\n//TODO - add support for setting renderer factory options using input\n\n/**\n * Directive that is attached to control element and handles css classes that are added to this element\n */\n@Directive(\n{\n selector: '[hasError]'\n})\nexport class HasErrorDirective implements OnInit, OnDestroy\n{\n //######################### private fields #########################\n\n /**\n * Subscriptions that are destroyed with destruction of this directive\n */\n private _subscriptions: Subscription = new Subscription();\n\n /**\n * Unique generated id of control\n */\n private _id: string = generateId(10);\n\n /**\n * Last value of control pristine attribute\n */\n private _previousDirty: boolean = false;\n\n /**\n * Indication whether currently are any errors rendered\n */\n private _hasErrors: boolean = false;\n\n /**\n * Mutation observer used for observing changes on class of element\n */\n private _observer: MutationObserver;\n\n //######################### private properties #########################\n\n /**\n * Gets control which was assigned to this element\n */\n private get control(): FormControl\n {\n return this._formControl?.control || this._formControlName?.control || this._ngModel?.control;\n }\n\n //######################### public properties #########################\n\n /**\n * Instance of validation error renderer\n */\n public renderer: ValidationErrorRenderer;\n\n //######################### public propeties - inputs #########################\n\n /**\n * Customized error messages\n */\n @Input()\n public errorMessages: StringDictionary;\n\n //######################### constructor #########################\n constructor(private _element: ElementRef<HTMLElement>,\n private _rendererFactory: ValidationErrorRendererFactory,\n private _viewContainer: ViewContainerRef,\n @Optional() @SkipSelf() private _groupHasError: GroupHasErrorDirective,\n @Optional() private _formControl: FormControlDirective,\n @Optional() private _formControlName: FormControlName,\n @Optional() private _ngModel: NgModel,\n @Optional() private _submittedSvc: SubmittedService,\n @Optional() private _containerView: ValidationErrorsContainerView,\n @Inject(STRING_LOCALIZATION) protected _stringLocalization: StringLocalization,\n protected _injector: Injector)\n {\n }\n\n //######################### public methods - implementation of OnInit #########################\n \n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n this._containerView ??= new ValidationErrorsContainerView();\n this._containerView.viewContainer ??= this._viewContainer;\n\n this._registerMutationObserver();\n\n this.renderer = this._rendererFactory.create(this.control,\n this._containerView,\n this._injector,\n this._isSubmittedOrDirty);\n\n this._subscriptions.add(this._stringLocalization.textsChange.subscribe(() => this._updateStatus()));\n this._subscriptions.add(this.control.statusChanges.subscribe(() => this._updateStatus()));\n\n this._updateStatus();\n\n if(this._submittedSvc)\n {\n this._subscriptions.add(this._submittedSvc.submittedChange.subscribe(() => this._isSubmittedOrDirty(() => this._updateStatus())));\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._subscriptions.unsubscribe();\n\n this._groupHasError?.unregisterControl(this._id);\n this._observer?.disconnect();\n this.renderer?.destroy();\n }\n\n //######################### private methods #########################\n\n /**\n * Updates status of control and css classes\n */\n private _updateStatus(): void\n {\n this._previousDirty = this.control.dirty;\n this._hasErrors = this.renderer.update({}, this.errorMessages);\n this._toggleGroupHasError();\n }\n\n /**\n * Toggles registration of control in parent group\n */\n private _toggleGroupHasError(): void\n {\n if(this._groupHasError)\n {\n this._isSubmittedOrDirty(() => this._groupHasError.registerControl(this._id),\n () => this._groupHasError.unregisterControl(this._id),\n this._hasErrors);\n }\n }\n\n /**\n * Calls action when form is submitted or control is dirty\n * @param action - Action to be called when form is submitted or control dirty\n * @param falseAction - Action to be called when form is not submitted and control is not dirty\n * @param additionalCondition - Additional condition to be evaluated\n */\n @BindThis\n private _isSubmittedOrDirty(action: () => void, falseAction: () => void = () => {}, additionalCondition: boolean = true): void\n {\n //submitted form or dirty control\n if((this._submittedSvc?.submitted ||\n this.control?.dirty) &&\n additionalCondition)\n {\n action();\n }\n else\n {\n falseAction();\n }\n }\n\n /**\n * Registers mutation observer which watch for changes of class list\n */\n private _registerMutationObserver(): void\n {\n this._observer = new MutationObserver(() =>\n {\n if(this.control.dirty != this._previousDirty)\n {\n this._updateStatus();\n }\n });\n\n this._observer.observe(this._element.nativeElement, \n {\n attributeFilter: ['class'],\n attributes: true\n });\n }\n}"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './components';
|
|
1
2
|
export * from './directives/numberInput/maxValueNumberValidator.directive';
|
|
2
3
|
export * from './directives/numberInput/minValueNumberValidator.directive';
|
|
3
4
|
export * from './directives/numberInput/numberInputValidator.directive';
|
|
@@ -12,7 +13,8 @@ export * from './services/validationErrorRenderer/validationErrorRenderer.interf
|
|
|
12
13
|
export * from './services/validationErrorRenderer/validationErrorRenderer.service';
|
|
13
14
|
export * from './misc/validators';
|
|
14
15
|
export * from './misc/utils';
|
|
15
|
-
export * from './misc/
|
|
16
|
+
export * from './misc/tokens';
|
|
17
|
+
export * from './misc/validationErrorsContainerView';
|
|
16
18
|
export * from './modules/numberInput.module';
|
|
17
19
|
export * from './modules/hasError.module';
|
|
18
20
|
export * from './modules/requiredClass.module';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../forms/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4DAA4D,CAAC;AAC3E,cAAc,yDAAyD,CAAC;AACxE,cAAc,oEAAoE,CAAC;AACnF,cAAc,0CAA0C,CAAC;AACzD,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wCAAwC,CAAC;AACvD,cAAc,oEAAoE,CAAC;AACnF,cAAc,kEAAkE,CAAC;AACjF,cAAc,sEAAsE,CAAC;AACrF,cAAc,oEAAoE,CAAC;AACnF,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../forms/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4DAA4D,CAAC;AAC3E,cAAc,yDAAyD,CAAC;AACxE,cAAc,oEAAoE,CAAC;AACnF,cAAc,0CAA0C,CAAC;AACzD,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wCAAwC,CAAC;AACvD,cAAc,oEAAoE,CAAC;AACnF,cAAc,kEAAkE,CAAC;AACjF,cAAc,sEAAsE,CAAC;AACrF,cAAc,oEAAoE,CAAC;AACnF,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './components';\nexport * from './directives/numberInput/maxValueNumberValidator.directive';\nexport * from './directives/numberInput/minValueNumberValidator.directive';\nexport * from './directives/numberInput/numberInputValidator.directive';\nexport * from './directives/numberInput/numberInputControlValueAccessor.directive';\nexport * from './directives/hasError/hasError.directive';\nexport * from './directives/groupHasError/groupHasError.directive';\nexport * from './directives/requiredClass/requiredClass.directive';\nexport * from './services/submitted/submitted.service';\nexport * from './services/errorMessagesExtractor/errorMessagesExtractor.interface';\nexport * from './services/errorMessagesExtractor/errorMessagesExtractor.service';\nexport * from './services/validationErrorRenderer/validationErrorRenderer.interface';\nexport * from './services/validationErrorRenderer/validationErrorRenderer.service';\nexport * from './misc/validators';\nexport * from './misc/utils';\nexport * from './misc/tokens';\nexport * from './misc/validationErrorsContainerView';\nexport * from './modules/numberInput.module';\nexport * from './modules/hasError.module';\nexport * from './modules/requiredClass.module';\nexport * from './modules/formPipes';\nexport * from './modules/errorMessage';\nexport * from './misc/formModel';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelDecoratorMetadata.js","sourceRoot":"","sources":["../../../../../../forms/src/misc/formModel/interfaces/modelDecoratorMetadata.ts"],"names":[],"mappings":"","sourcesContent":["import {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\n\nimport {AsyncValidatorFnFactory, ValidatorFnFactory} from '../misc/validatorFactories';\nimport {ModelPropertyDecoratorMetadata} from './modelPropertyDecoratorMetadata';\n\n/**\n * Metadata describing whole model\n */\nexport interface ModelDecoratorMetadata<TModel = any>\n{\n /**\n * Array of controls metadata\n */\n ɵControlsMetadata: Partial<Record<keyof TModel, ModelPropertyDecoratorMetadata>>;\n\n /**\n * Array of validator functions\n */\n ɵValidators?: Array<ValidatorFn|ValidatorFnFactory>;\n\n /**\n * Array of async validator functions\n */\n ɵAsyncValidators?: Array<AsyncValidatorFn|AsyncValidatorFnFactory>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"modelDecoratorMetadata.js","sourceRoot":"","sources":["../../../../../../forms/src/misc/formModel/interfaces/modelDecoratorMetadata.ts"],"names":[],"mappings":"","sourcesContent":["import {AsyncValidatorFn, ValidatorFn} from '@angular/forms';\nimport {Dictionary} from '@jscrpt/common';\n\nimport {AsyncValidatorFnFactory, ValidatorFnFactory} from '../misc/validatorFactories';\nimport {ModelPropertyDecoratorMetadata} from './modelPropertyDecoratorMetadata';\n\n/**\n * Metadata describing whole model\n */\nexport interface ModelDecoratorMetadata<TModel = any, TArgs extends Dictionary<any> = any>\n{\n /**\n * Array of controls metadata\n */\n ɵControlsMetadata: Partial<Record<keyof TModel, ModelPropertyDecoratorMetadata>>;\n\n /**\n * Array of validator functions\n */\n ɵValidators?: Array<ValidatorFn|ValidatorFnFactory>;\n\n /**\n * Array of async validator functions\n */\n ɵAsyncValidators?: Array<AsyncValidatorFn|AsyncValidatorFnFactory>;\n\n /**\n * Object storing additional arguments for customization\n */\n ɵArgs?: TArgs;\n}\n"]}
|
|
@@ -8,18 +8,21 @@ import { AsyncValidatorFnFactory, ValidatorFnFactory } from './validatorFactorie
|
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
10
|
function buildFormGroup(model, args) {
|
|
11
|
-
var _a, _b, _c, _d;
|
|
11
|
+
var _a, _b, _c, _d, _e;
|
|
12
12
|
if (!model) {
|
|
13
|
-
return new FormGroup({}
|
|
14
|
-
validators: (_a = model.ɵValidators) === null || _a === void 0 ? void 0 : _a.map(validator => validator instanceof ValidatorFnFactory ? validator.valueOf()(args) : validator).filter(itm => !!itm),
|
|
15
|
-
asyncValidators: (_b = model.ɵAsyncValidators) === null || _b === void 0 ? void 0 : _b.map(validator => validator instanceof AsyncValidatorFnFactory ? validator.valueOf()(args) : validator).filter(itm => !!itm)
|
|
16
|
-
});
|
|
13
|
+
return new FormGroup({});
|
|
17
14
|
}
|
|
18
|
-
const modelMetadata = (
|
|
15
|
+
const modelMetadata = (_a = model.ɵControlsMetadata) !== null && _a !== void 0 ? _a : {};
|
|
16
|
+
const groupValidators = (_b = model.ɵValidators) !== null && _b !== void 0 ? _b : [];
|
|
17
|
+
const groupAsyncValidators = (_c = model.ɵAsyncValidators) !== null && _c !== void 0 ? _c : [];
|
|
18
|
+
const groupArgs = (_d = model.ɵArgs) !== null && _d !== void 0 ? _d : {};
|
|
19
19
|
const properties = Object.keys(model);
|
|
20
|
-
const formGroup = new FormGroup({}
|
|
20
|
+
const formGroup = new FormGroup({}, {
|
|
21
|
+
validators: groupValidators === null || groupValidators === void 0 ? void 0 : groupValidators.map(validator => validator instanceof ValidatorFnFactory ? validator.valueOf()(Object.assign(Object.assign({}, groupArgs), args)) : validator).filter(itm => !!itm),
|
|
22
|
+
asyncValidators: groupAsyncValidators === null || groupAsyncValidators === void 0 ? void 0 : groupAsyncValidators.map(validator => validator instanceof AsyncValidatorFnFactory ? validator.valueOf()(Object.assign(Object.assign({}, groupArgs), args)) : validator).filter(itm => !!itm)
|
|
23
|
+
});
|
|
21
24
|
for (const propertyName of properties) {
|
|
22
|
-
const metadata = (
|
|
25
|
+
const metadata = (_e = modelMetadata[propertyName]) !== null && _e !== void 0 ? _e : ɵDefaultPropertyMetadata;
|
|
23
26
|
const defaultValue = model[propertyName];
|
|
24
27
|
//Skip control creation if value is undefined
|
|
25
28
|
if (defaultValue === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../forms/src/misc/formModel/misc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAKlF,OAAO,EAAC,wBAAwB,EAAC,MAAM,YAAY,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEjF;;;;;GAKG;AACH,SAAS,cAAc,CAAwC,KAAuD,EAAE,IAAY;;IAEhI,IAAG,CAAC,KAAK,EACT;QACI,OAAO,IAAI,SAAS,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../forms/src/misc/formModel/misc/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {AbstractControl, FormArray, FormControl, FormGroup} from '@angular/forms';\nimport {Dictionary} from '@jscrpt/common';\n\nimport {ModelDecoratorMetadata} from '../interfaces/modelDecoratorMetadata';\nimport {ModelPropertyDecoratorMetadata} from '../interfaces/modelPropertyDecoratorMetadata';\nimport {ɵDefaultPropertyMetadata} from './defaults';\nimport {AsyncValidatorFnFactory, ValidatorFnFactory} from './validatorFactories';\n\n/**\n * Builds form group from decorated model\n * @param model - Model that can be decorated for enhancing created form group with validation and so on\n * @param args - Object storing arguments from owning component for customization\n * @returns\n */\nfunction buildFormGroup<TModel, TArgs = Record<string, never>>(model: ModelDecoratorMetadata<TModel> & Dictionary<any>, args?: TArgs): FormGroup\n{\n if(!model)\n {\n return new FormGroup({});\n }\n\n const modelMetadata: Dictionary<any> = model.ɵControlsMetadata ?? {};\n const groupValidators = model.ɵValidators ?? [];\n const groupAsyncValidators = model.ɵAsyncValidators ?? [];\n const groupArgs: Dictionary<any> = model.ɵArgs ?? {};\n const properties = Object.keys(model);\n const formGroup: FormGroup = new FormGroup({},\n {\n validators: groupValidators?.map(validator => validator instanceof ValidatorFnFactory ? validator.valueOf()({...groupArgs, ...args}) : validator).filter(itm => !!itm),\n asyncValidators: groupAsyncValidators?.map(validator => validator instanceof AsyncValidatorFnFactory ? validator.valueOf()({...groupArgs, ...args}) : validator).filter(itm => !!itm)\n });\n\n for(const propertyName of properties)\n {\n const metadata: ModelPropertyDecoratorMetadata = modelMetadata[propertyName] ?? ɵDefaultPropertyMetadata;\n const defaultValue = model[propertyName];\n\n //Skip control creation if value is undefined\n if(defaultValue === undefined)\n {\n continue;\n }\n\n const validators = metadata.validators.map(validator => validator instanceof ValidatorFnFactory ? validator.valueOf()({...metadata.args, ...args}) : validator).filter(itm => !!itm);\n const asyncValidators = metadata.asyncValidators.map(validator => validator instanceof AsyncValidatorFnFactory ? validator.valueOf()({...metadata.args, ...args}) : validator).filter(itm => !!itm);\n\n let control: AbstractControl;\n\n switch(metadata.type)\n {\n case FormGroup:\n {\n control = buildFormGroup(defaultValue, args);\n\n //TODO: think of setting metadata from property to model\n\n break;\n }\n case FormArray:\n {\n //TODO - enhance FormArray child definition and finish it\n control = new FormArray([],\n {\n validators: validators,\n asyncValidators: asyncValidators,\n ...metadata.controlOptions\n });\n\n if(defaultValue && Array.isArray(defaultValue))\n {\n const formArray = control as FormArray;\n\n for(const val of defaultValue)\n {\n switch(metadata.childType)\n {\n case FormGroup:\n {\n formArray.push(buildFormGroup(val, args));\n\n break;\n }\n case FormArray:\n {\n break;\n }\n default:\n //case FormControl:\n {\n formArray.push(new FormControl(val,\n {\n validators: validators,\n asyncValidators: asyncValidators,\n ...metadata.controlOptions\n }));\n\n break;\n }\n }\n }\n }\n\n break;\n }\n default:\n //case FormControl:\n {\n control = new FormControl(defaultValue,\n {\n validators: validators,\n asyncValidators: asyncValidators,\n ...metadata.controlOptions\n });\n\n break;\n }\n }\n\n if(metadata.disabled)\n {\n control.disable();\n }\n\n formGroup.addControl(propertyName, control);\n }\n\n return formGroup;\n}\n\n/**\n * Builds form from decorated model, only for properties with non `undefined` value\n * @param model - Model that can be decorated for enhancing created form group with validation and so on\n * @param args - Object storing arguments from owning component for customization\n * @returns\n */\nexport function buildFormModel<TModel, TArgs = Record<string, never>>(model: TModel, args?: TArgs): FormGroup\n{\n return buildFormGroup(model as any, args);\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Injection token containing validation error messages
|
|
4
|
+
*/
|
|
5
|
+
export const VALIDATION_ERROR_MESSAGES = new InjectionToken('VALIDATION_ERROR_MESSAGES');
|
|
6
|
+
/**
|
|
7
|
+
* Injection token for injecting array of ignored error names when automatically processed
|
|
8
|
+
*/
|
|
9
|
+
export const IGNORED_VALIDATION_ERRORS = new InjectionToken('IGNORED_VALIDATION_ERRORS', { providedIn: 'root', factory: () => ['actual'] });
|
|
10
|
+
/**
|
|
11
|
+
* Injection token used for injecting global options for ValidationErrorRendererFactory
|
|
12
|
+
*/
|
|
13
|
+
export const VALIDATION_ERROR_RENDERER_FACTORY_OPTIONS = new InjectionToken('VALIDATION_ERROR_RENDERER_FACTORY_OPTIONS');
|
|
14
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../forms/src/misc/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAK7C;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAqC,IAAI,cAAc,CAAmB,2BAA2B,CAAC,CAAC;AAE7I;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA6B,IAAI,cAAc,CAAW,2BAA2B,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC;AAE9K;;GAEG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAA0D,IAAI,cAAc,CAAwC,2CAA2C,CAAC,CAAC","sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {StringDictionary} from '@jscrpt/common';\n\nimport {ValidationErrorRendererFactoryOptions} from '../services/validationErrorRenderer/validationErrorRenderer.interface';\n\n/**\n * Injection token containing validation error messages\n */\nexport const VALIDATION_ERROR_MESSAGES: InjectionToken<StringDictionary> = new InjectionToken<StringDictionary>('VALIDATION_ERROR_MESSAGES');\n\n/**\n * Injection token for injecting array of ignored error names when automatically processed\n */\nexport const IGNORED_VALIDATION_ERRORS: InjectionToken<string[]> = new InjectionToken<string[]>('IGNORED_VALIDATION_ERRORS', {providedIn: 'root', factory: () => ['actual']});\n\n/**\n * Injection token used for injecting global options for ValidationErrorRendererFactory\n */\nexport const VALIDATION_ERROR_RENDERER_FACTORY_OPTIONS: InjectionToken<ValidationErrorRendererFactoryOptions> = new InjectionToken<ValidationErrorRendererFactoryOptions>('VALIDATION_ERROR_RENDERER_FACTORY_OPTIONS');\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* Class that holds validation errors view container
|
|
4
|
+
*/
|
|
5
|
+
export class ValidationErrorsContainerView {
|
|
6
|
+
constructor() {
|
|
7
|
+
//######################### private fields #########################
|
|
8
|
+
/**
|
|
9
|
+
* Used for emitting viewContainer changes
|
|
10
|
+
*/
|
|
11
|
+
this._viewContainerChange = new Subject();
|
|
12
|
+
}
|
|
13
|
+
//######################### public properties #########################
|
|
14
|
+
/**
|
|
15
|
+
* Gets or sets current instance of view container
|
|
16
|
+
*/
|
|
17
|
+
get viewContainer() {
|
|
18
|
+
return this._viewContainer;
|
|
19
|
+
}
|
|
20
|
+
set viewContainer(value) {
|
|
21
|
+
this._viewContainer = value;
|
|
22
|
+
this._viewContainerChange.next();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Occurs when view container instance changes
|
|
26
|
+
*/
|
|
27
|
+
get viewContainerChange() {
|
|
28
|
+
return this._viewContainerChange.asObservable();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=validationErrorsContainerView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationErrorsContainerView.js","sourceRoot":"","sources":["../../../../forms/src/misc/validationErrorsContainerView.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,OAAO,EAAC,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,6BAA6B;IAA1C;QAEI,oEAAoE;QAOpE;;WAEG;QACK,yBAAoB,GAAkB,IAAI,OAAO,EAAQ,CAAC;IAwBtE,CAAC;IAtBG,uEAAuE;IAEvE;;OAEG;IACH,IAAW,aAAa;QAEpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,IAAW,aAAa,CAAC,KAAuB;QAE5C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAE1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;IACpD,CAAC;CACJ","sourcesContent":["import {ViewContainerRef} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/**\n * Class that holds validation errors view container\n */\nexport class ValidationErrorsContainerView\n{\n //######################### private fields #########################\n \n /**\n * Current instance of view container\n */\n private _viewContainer: ViewContainerRef;\n \n /**\n * Used for emitting viewContainer changes\n */\n private _viewContainerChange: Subject<void> = new Subject<void>();\n \n //######################### public properties #########################\n \n /**\n * Gets or sets current instance of view container\n */\n public get viewContainer(): ViewContainerRef\n {\n return this._viewContainer;\n }\n public set viewContainer(value: ViewContainerRef)\n {\n this._viewContainer = value;\n this._viewContainerChange.next();\n }\n\n /**\n * Occurs when view container instance changes\n */\n public get viewContainerChange(): Observable<void>\n {\n return this._viewContainerChange.asObservable();\n }\n}"]}
|
package/es2015/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Directive, ElementRef, Inject, Input } from '@angular/core';
|
|
|
2
2
|
import { STRING_LOCALIZATION } from '@anglr/common';
|
|
3
3
|
import { isBlank, nameof } from '@jscrpt/common';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
|
-
import { VALIDATION_ERROR_MESSAGES } from '../../../../misc/
|
|
5
|
+
import { VALIDATION_ERROR_MESSAGES } from '../../../../misc/tokens';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
8
8
|
* Directive used for displaying form error message
|
package/es2015/forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorMessage.directive.js","sourceRoot":"","sources":["../../../../../../../forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAsC,MAAM,eAAe,CAAC;AACxG,OAAO,EAAqB,mBAAmB,EAAC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAa,OAAO,EAAE,MAAM,EAAmB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,yBAAyB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"errorMessage.directive.js","sourceRoot":"","sources":["../../../../../../../forms/src/modules/errorMessage/directives/errorMessage/errorMessage.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAsC,MAAM,eAAe,CAAC;AACxG,OAAO,EAAqB,mBAAmB,EAAC,MAAM,eAAe,CAAC;AACtE,OAAO,EAAa,OAAO,EAAE,MAAM,EAAmB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;;AAElE;;GAEG;AAMH,MAAM,OAAO,qBAAqB;IAuB9B,iEAAiE;IACjE,YAAsB,QAAiC,EACJ,aAAiC,EAC3B,cAAgC;QAFnE,aAAQ,GAAR,QAAQ,CAAyB;QACJ,kBAAa,GAAb,aAAa,CAAoB;QAC3B,mBAAc,GAAd,cAAc,CAAkB;QAxBzF,0EAA0E;QAE1E;;WAEG;QACO,uBAAkB,GAAiB,IAAI,YAAY,EAAE,CAAC;QAqB5D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW,CAAC,OAAsB;QAErC,IAAG,MAAM,CAAwB,WAAW,CAAC,IAAI,OAAO,EACxD;YACI,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;IACL,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;;QAEd,MAAA,IAAI,CAAC,kBAAkB,0CAAE,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,uEAAuE;IAEvE;;OAEG;IACO,YAAY;QAElB,IAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAC1B;YACI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;YAE3C,OAAO;SACV;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC;IACpD,CAAC;;kHAzEQ,qBAAqB,4CAyBV,mBAAmB,aACnB,yBAAyB;sGA1BpC,qBAAqB;2FAArB,qBAAqB;kBALjC,SAAS;mBACV;oBACI,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;iBAC3B;;0BA0BgB,MAAM;2BAAC,mBAAmB;;0BAC1B,MAAM;2BAAC,yBAAyB;4CAXtC,SAAS;sBADf,KAAK;uBAAC,cAAc;gBAOd,MAAM;sBADZ,KAAK","sourcesContent":["import {Directive, ElementRef, Inject, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core';\nimport {StringLocalization, STRING_LOCALIZATION} from '@anglr/common';\nimport {Dictionary, isBlank, nameof, StringDictionary} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {VALIDATION_ERROR_MESSAGES} from '../../../../misc/tokens';\n\n/**\n * Directive used for displaying form error message\n */\n@Directive(\n{\n selector: '[errorMessage]',\n exportAs: 'errorMessage'\n})\nexport class ErrorMessageDirective implements OnChanges, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Subscriptions created during initialization\n */\n protected _initSubscriptions: Subscription = new Subscription();\n\n //######################### public properties - inputs #########################\n\n /**\n * Name/code of error message to be displayed\n */\n @Input('errorMessage')\n public errorName: string;\n\n /**\n * Object storing all errors\n */\n @Input()\n public errors: Dictionary;\n\n //######################### constructor #########################\n constructor(protected _element: ElementRef<HTMLElement>,\n @Inject(STRING_LOCALIZATION) protected _localization: StringLocalization,\n @Inject(VALIDATION_ERROR_MESSAGES) protected _errorMessages: StringDictionary,)\n {\n this._initSubscriptions.add(this._localization.textsChange.subscribe(() => this._showMessage()));\n }\n\n //######################### public methods - implementation of OnChanges #########################\n \n /**\n * Called when input value changes\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<ErrorMessageDirective>('errorName') in changes)\n {\n this._showMessage();\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._initSubscriptions?.unsubscribe();\n this._initSubscriptions = null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Shows message inside of element\n */\n protected _showMessage(): void\n {\n if(isBlank(this.errorName))\n {\n this._element.nativeElement.innerHTML = '';\n\n return;\n }\n\n const errorMessage = this._errorMessages[this.errorName];\n const message = this._localization.get(errorMessage, this.errors);\n\n this._element.nativeElement.innerHTML = message;\n }\n}"]}
|
package/es2015/forms/src/modules/errorMessage/pipes/withErrorMessage/withErrorMessage.pipe.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Inject, Pipe } from '@angular/core';
|
|
2
|
-
import { VALIDATION_ERROR_MESSAGES } from '../../../../misc/
|
|
2
|
+
import { VALIDATION_ERROR_MESSAGES } from '../../../../misc/tokens';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Filters array of errors with messages
|