@ipi-soft/ng-components
Version:
Custom Angular Components
1 lines • 7.67 kB
Source Map (JSON)
{"version":3,"file":"ipi-soft-ng-components-textarea.mjs","sources":["../../../../projects/ipi-soft/ng-components/textarea/src/textarea.component.ts","../../../../projects/ipi-soft/ng-components/textarea/src/textarea.component.html","../../../../projects/ipi-soft/ng-components/textarea/ipi-soft-ng-components-textarea.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { AbstractControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\n\nimport { IpiImageComponent } from '@ipi-soft/ng-components/image';\n\nimport { IpiControlErrors } from '@ipi-soft/ng-components/input';\n\nexport interface IpiTextAreaOptions {\n label: string;\n icon?: string;\n placeholder?: string;\n formGroup?: FormGroup;\n formControlName?: string;\n errors?: IpiControlErrors;\n}\n\n@Component({\n selector: 'ipi-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.css'],\n imports: [\n NgClass,\n FormsModule,\n IpiImageComponent,\n ReactiveFormsModule,\n ],\n})\n\nexport class IpiTextAreaComponent {\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {\n this.changeDetectorRef.detach();\n }\n\n @Input() options!: IpiTextAreaOptions;\n\n @Output() textAreaChange = new EventEmitter<string>();\n\n public controlError!: string;\n public controlInvalid = false;\n public control!: AbstractControl;\n\n private controlSubscription!: Subscription;\n\n public ngOnInit(): void {\n this.setControl();\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n\n this.textAreaChange.emit(target.value);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private setControl(): void{\n if (!this.options.formGroup || !this.options.formControlName) {\n return;\n }\n\n this.control = this.options.formGroup.controls[this.options.formControlName];\n\n this.control.markAsTouched();\n\n this.controlSubscription = this.control.statusChanges.subscribe(() => {\n this.setControlInvalid(this.control);\n\n this.getErrors();\n\n this.changeDetectorRef.detectChanges();\n })\n }\n\n private setControlInvalid(control: AbstractControl): void {\n this.controlInvalid = control.touched && control.invalid;\n }\n\n private getErrors(): void {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n if (formGroup && formControlName && options.errors && this.controlInvalid) {\n\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n this.controlError = options.errors[error];\n\n return;\n }\n }\n\n }\n\n this.controlError = '';\n }\n\n}\n","@if (options) {\n @if (options.label !== '') {\n <div class=\"header\">\n <label> {{ options.label }}</label>\n </div>\n }\n\n @if (!options.formGroup) {\n <div class=\"textArea\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea [placeholder]=\"options.placeholder ? options.placeholder : ''\" autocomplete=\"off\" (input)=\"onInput($event)\"></textarea>\n </div>\n </div>\n }\n\n @if (options.formGroup && options.formControlName) {\n <div class=\"textArea\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': controlInvalid, 'disabled': control.disabled }\">\n <div class=\"container\">\n @if (options.icon) {\n <ipi-img class=\"icon\" [src]=\"'assets/img/' + options.icon\" [ariaLabel]=\"'textarea icon'\"></ipi-img>\n }\n\n <textarea autocomplete=\"off\" [placeholder]=\"options.placeholder ? options.placeholder : ''\" [formControlName]=\"options.formControlName\"></textarea>\n </div>\n </div>\n\n <div class=\"footer\">\n {{ controlError }}\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}