{"version":3,"file":"protoarch.angular-validation-message.mjs","sources":["../../../../libs/validation-message/src/lib/components/model/ValidationMessage.ts","../../../../libs/validation-message/src/lib/components/ValidationMessageComponent.ts","../../../../libs/validation-message/src/lib/directives/ValidationMessageDirective.ts","../../../../libs/validation-message/src/lib/services/errorBuilder/ValidationError.ts","../../../../libs/validation-message/src/lib/services/errorBuilder/ValidationErrorBuilder.ts","../../../../libs/validation-message/src/lib/validation-message.module.ts","../../../../libs/validation-message/src/protoarch.angular-validation-message.ts"],"sourcesContent":["export class ValidationMessage {\r\n    public key = '';\r\n    public params: any;\r\n\r\n    constructor(key: string = '', params: any = null) {\r\n        this.key = key;\r\n        this.params = params;\r\n    }\r\n}\r\n","/* eslint-disable @angular-eslint/prefer-signals */\r\n/* eslint-disable @angular-eslint/component-max-inline-declarations */\r\n/* eslint-disable @angular-eslint/prefer-on-push-component-change-detection */\r\nimport {Component, Input, ViewEncapsulation} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\n\r\nimport {ValidationMessage} from './model/ValidationMessage';\r\n\r\n@Component({\r\n    selector: 'validation-message',\r\n    template: `\r\n        <div class=\"error-container\">\r\n            {{ firstMessage.key + (firstMessage.params ? '(' + firstMessage.params + ')' : '') }}\r\n        </div>\r\n        <i class=\"error-icon\"></i>\r\n    `,\r\n    styles: `\r\n        validation-message {\r\n            display: none;\r\n            width: 100%;\r\n        }\r\n        validation-message.standalone,\r\n        .ng-dirty.ng-invalid + validation-message {\r\n            display: block;\r\n        }\r\n    `,\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: false,\r\n})\r\nexport class ValidationMessageComponent {\r\n    @Input() for: NgControl | null = null;\r\n\r\n    get messages(): ValidationMessage[] {\r\n        return this.getValidationMessages();\r\n    }\r\n\r\n    get firstMessage(): ValidationMessage {\r\n        return this.messages[0] ? this.messages[0] : new ValidationMessage();\r\n    }\r\n\r\n    get controlPath(): string {\r\n        if (this.for == null) return '';\r\n        return this.for.path?.join('.') || '';\r\n    }\r\n\r\n    private getValidationMessages(): ValidationMessage[] {\r\n        if (this.for == null || this.for.errors == null) return [];\r\n        const messages: ValidationMessage[] = [];\r\n        const keys = Object.keys(this.for.errors);\r\n        keys.forEach(k => {\r\n            const errValue = (<any>this.for?.errors)[k];\r\n            let params = null;\r\n            if (errValue instanceof Object) params = errValue;\r\n            else if (errValue !== true) {\r\n                params = {};\r\n                (<any>params)[k] = errValue;\r\n            }\r\n            messages.push(new ValidationMessage(k, params));\r\n        });\r\n        return messages;\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    ComponentRef,\r\n    Directive,\r\n    Inject,\r\n    OnDestroy,\r\n    Optional,\r\n    Type,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport {FormControlName, NgControl} from '@angular/forms';\r\n\r\nimport {ValidationMessageComponent} from './../components/ValidationMessageComponent';\r\n\r\n@Directive({\r\n    selector: '[formControlName][prtValidationMessage],[formGroupName][prtValidationMessage]',\r\n    standalone: false,\r\n})\r\nexport class ValidationMessageDirective implements AfterViewInit, OnDestroy {\r\n    private _validationMessageComponent: ComponentRef<ValidationMessageComponent> | null = null;\r\n\r\n    constructor(\r\n        private viewContainer: ViewContainerRef,\r\n        @Inject(ValidationMessageComponent) private vmComp: Type<ValidationMessageComponent>,\r\n        @Optional() private formControlName: FormControlName,\r\n    ) {}\r\n\r\n    ngAfterViewInit(): void {\r\n        // eslint-disable-next-line @angular-eslint/no-lifecycle-call\r\n        this.ngOnDestroy();\r\n        this._validationMessageComponent = this.viewContainer.createComponent(this.vmComp);\r\n\r\n        const control: NgControl = this.formControlName;\r\n        this._validationMessageComponent.instance.for = control;\r\n        this._validationMessageComponent.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this._validationMessageComponent) {\r\n            this._validationMessageComponent.changeDetectorRef.detach();\r\n        }\r\n    }\r\n}\r\n","import {FormControl} from '@angular/forms';\r\n\r\nexport class ValidationError {\r\n    control: FormControl;\r\n    controlKey: string;\r\n    errorKey: string;\r\n    get error() {\r\n        return this.control.getError(this.errorKey);\r\n    }\r\n}\r\n","import {AbstractControl, FormArray, FormControl, FormGroup} from '@angular/forms';\r\n\r\nimport {ValidationError} from './ValidationError';\r\n\r\nexport class ValidationErrorBuilder {\r\n    build(form: FormGroup | FormArray, prevKey?: string): ValidationError[] {\r\n        let validationErrors: ValidationError[] = [];\r\n        const formControls = form.controls;\r\n        for (const key in formControls) {\r\n            if (formControls.hasOwnProperty(key)) {\r\n                const fullKey = prevKey ? [prevKey, key].join('.') : key;\r\n                const ctrl: AbstractControl = (<any>formControls)[key];\r\n                if (ctrl instanceof FormControl) {\r\n                    if (!ctrl.valid) {\r\n                        for (const erKey in ctrl.errors) {\r\n                            if (ctrl.errors.hasOwnProperty(erKey)) {\r\n                                const valError = new ValidationError();\r\n                                valError.control = ctrl;\r\n                                valError.controlKey = fullKey;\r\n                                valError.errorKey = erKey;\r\n                                validationErrors.push(valError);\r\n                            }\r\n                        }\r\n                    }\r\n                } else {\r\n                    const group = <FormGroup | FormArray>ctrl;\r\n                    validationErrors = validationErrors.concat(this.build(group, fullKey));\r\n                }\r\n            }\r\n        }\r\n        return validationErrors;\r\n    }\r\n}\r\n","import {NgModule} from '@angular/core';\r\n\r\nimport {ValidationMessageComponent} from './components/ValidationMessageComponent';\r\nimport {ValidationMessageDirective} from './directives/ValidationMessageDirective';\r\nimport {ValidationErrorBuilder} from './services/errorBuilder/ValidationErrorBuilder';\r\n\r\nexport const declarations = [ValidationMessageDirective, ValidationMessageComponent];\r\n\r\n@NgModule({\r\n    declarations: declarations,\r\n    exports: declarations,\r\n    providers: [\r\n        ValidationErrorBuilder,\r\n        {\r\n            provide: ValidationMessageComponent,\r\n            useValue: ValidationMessageComponent,\r\n        },\r\n    ],\r\n})\r\nexport class ValidationMessageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}