All files / src/app/features/jobs/forms/inputs baseinput.component.ts

60.6% Statements 20/33
30% Branches 3/10
54.54% Functions 6/11
94.44% Lines 17/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5222x 22x       22x         78x 78x     78x               78x       82x 77x   82x 82x       4x 4x   4x       33x       82x 82x          
import { Directive, inject, Input, OnInit } from "@angular/core";
import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
import { EditorComponent } from "@tinymce/tinymce-angular";
 
@Directive()
export abstract class BaseInputComponent implements OnInit {
    @Input({required: true}) form!: FormGroup;
    @Input() controlName!: string;
    @Input() initialValue: string | undefined;
 
    protected fb = inject(FormBuilder);
    public control: FormControl | null = null;
 
    // for rich text editors
    init: EditorComponent['init'] = {
        plugins: ['link', 'autolink', 'lists'],
        toolbar: 'undo redo | bold italic | link | bullist',
        promotion: false,
        menubar: 'null',
        statusbar: false
    };
    
    constructor(protected defaultControlName: string){
    }
 
    ngOnInit(): void {
        if(!this.controlName) {
            this.controlName = this.defaultControlName;
        }
        this.control = this.fb.control(this.initialValue, this.getValidators());
        this.getForm().addControl(this.controlName, this.control);
    }
 
    updateRichText(event: any) :boolean {
        if(this.control !== null) {
            this.control.setValue(event.editor.getContent());
        }
        return true;
    }
 
    protected getValidators(): any[] {
        return [];
    }
 
    protected getForm(): FormGroup {
        if (this.form instanceof FormGroup) {
            return this.form;
        } else E{
            throw new Error('Form is not a FormGroup');
        }
    }
}