1 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
4 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
5 import { Observable } from 'rxjs';
7 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
8 import { SubmitButtonComponent } from '../submit-button/submit-button.component';
11 selector: 'cd-deletion-modal',
12 templateUrl: './critical-confirmation-modal.component.html',
13 styleUrls: ['./critical-confirmation-modal.component.scss']
15 export class CriticalConfirmationModalComponent implements OnInit {
16 @ViewChild(SubmitButtonComponent, { static: true })
17 submitButton: SubmitButtonComponent;
18 bodyTemplate: TemplateRef<any>;
20 submitActionObservable: () => Observable<any>;
21 submitAction: Function;
22 deletionForm: CdFormGroup;
23 itemDescription: 'entry';
25 actionDescription = 'delete';
27 childFormGroup: CdFormGroup;
28 childFormGroupTemplate: TemplateRef<any>;
30 constructor(public activeModal: NgbActiveModal) {}
34 confirmation: new FormControl(false, [Validators.requiredTrue])
36 if (this.childFormGroup) {
37 controls['child'] = this.childFormGroup;
39 this.deletionForm = new CdFormGroup(controls);
40 if (!(this.submitAction || this.submitActionObservable)) {
41 throw new Error('No submit action defined');
46 if (this.submitActionObservable) {
47 this.submitActionObservable().subscribe({
48 error: this.stopLoadingSpinner.bind(this),
49 complete: this.hideModal.bind(this)
57 this.activeModal.close();
60 stopLoadingSpinner() {
61 this.deletionForm.setErrors({ cdSubmitButton: true });