// File: dialog-object-confirm.ts
// Author: Vinicius Martins Ferraz
// Date: 12/08/2023

import { PageElementAny } from "../page-element/page-element-any";
import { PageElementButton } from "../page-element/page-element-button";
import { BasicStruct } from "./i-page-structure";
import { PageObject } from "./page-object";

export class DialogObjectConfirm extends PageObject {

  constructor(title: string, private msg: string, private cancelButtonText = 'Cancel', private confirmButtonText = 'Yes, I confirm') {
    super({} as BasicStruct, title);
  }

  get dialogMsg() {
    return new PageElementAny({id: 'mat-dialog-container mat-dialog-content', text: this.msg})
  }

  get titleElement() {
    return new PageElementAny({id: 'h2[class*="mdc-dialog__title"]', text: this.title});
  }

  get confirmButton() {
    return new PageElementButton({id: 'mat-dialog-container mat-dialog-actions button[color="primary"]', text: this.confirmButtonText});
  }

  get cancelButton() {
    return new PageElementButton({id: 'mat-dialog-container mat-dialog-actions button[mat-dialog-close]', text: this.cancelButtonText});
  }

  public override validatePage(): void {
    this.dialogMsg.validateDefaultFieldValues();
    this.titleElement.validateDefaultFieldValues();
    this.confirmButton.validateDefaultFieldValues();
    this.cancelButton.validateDefaultFieldValues();
  }
}
