Files
psp_panel/src/app/uikit/uikit-field.component.ts
T

40 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-12-04 21:07:18 +03:30
import { FormErrorsService } from '@/core/services/form-errors.service';
import { CommonModule } from '@angular/common';
import { Component, Input, inject } from '@angular/core';
import { AbstractControl } from '@angular/forms';
import { MessageModule } from 'primeng/message';
import { UikitLabelComponent } from './uikit-label.component';
type PSize = 'small' | 'normal' | 'large';
@Component({
selector: 'uikit-field',
standalone: true,
imports: [CommonModule, UikitLabelComponent, MessageModule],
templateUrl: './uikit-field.component.html',
})
export class UikitFieldComponent {
@Input() label: string = '';
2025-12-04 21:07:18 +03:30
@Input() name!: string;
@Input() pSize: PSize = 'normal';
@Input() className?: string;
@Input() invalid?: boolean = false;
// accept a FormControl or AbstractControl to display errors for
@Input() control?: AbstractControl | null;
@Input() showErrors: boolean = true;
@Input() showLabel: boolean = true;
2025-12-04 21:07:18 +03:30
private errorsService = inject(FormErrorsService);
get hasError(): boolean {
2025-12-04 21:07:18 +03:30
if (!this.control) return !!this.invalid;
return !!(this.control.invalid && (this.control.touched || this.control.dirty));
}
get errors(): string[] {
if (!this.control) return this.invalid ? ['خطا'] : [];
return this.errorsService.getErrors(this.control, this.label).map((m) => m.message);
}
}