import { IAbstractObject } from '@vmfvmf/kraftos-lib';
import { PageElement, IPageElement } from './page-element';
import { Form } from './form';
import { FormField } from '../form-field/form-field';

export interface IPageElementMatTab extends IPageElement {
  title: string;
  form?: FormField[];
  propertyName: string;
}

export class PageElementMatTab<I extends IAbstractObject> extends PageElement {
  title: string;
  form?: Form;
  propertyName: string;

  constructor(ipe: IPageElementMatTab) {
    super(ipe);
    this.title = ipe.title;
    if (ipe.form) this.form = new Form(ipe.form);
    this.propertyName = ipe.propertyName;
  }

  override validateDefaultFieldValues(): void {
      super.validateDefaultFieldValues();

      this.form?.validateDefaultFieldValues();
  }

  fillForm(enty: I, fields: FormField[] = this.form?.fields || []) {
    this.form?.setFieldsValues(enty, fields);
  }
}
