]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
4c634f8ca2559b3be7423104f3c32ede94484eb2
[ceph.git] /
1 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
3
4 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
5 import { Observable } from 'rxjs';
6
7 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
8 import { SubmitButtonComponent } from '../submit-button/submit-button.component';
9
10 @Component({
11   selector: 'cd-deletion-modal',
12   templateUrl: './critical-confirmation-modal.component.html',
13   styleUrls: ['./critical-confirmation-modal.component.scss']
14 })
15 export class CriticalConfirmationModalComponent implements OnInit {
16   @ViewChild(SubmitButtonComponent, { static: true })
17   submitButton: SubmitButtonComponent;
18   bodyTemplate: TemplateRef<any>;
19   bodyContext: object;
20   submitActionObservable: () => Observable<any>;
21   submitAction: Function;
22   deletionForm: CdFormGroup;
23   itemDescription: 'entry';
24   itemNames: string[];
25   actionDescription = 'delete';
26
27   childFormGroup: CdFormGroup;
28   childFormGroupTemplate: TemplateRef<any>;
29
30   constructor(public activeModal: NgbActiveModal) {}
31
32   ngOnInit() {
33     const controls = {
34       confirmation: new FormControl(false, [Validators.requiredTrue])
35     };
36     if (this.childFormGroup) {
37       controls['child'] = this.childFormGroup;
38     }
39     this.deletionForm = new CdFormGroup(controls);
40     if (!(this.submitAction || this.submitActionObservable)) {
41       throw new Error('No submit action defined');
42     }
43   }
44
45   callSubmitAction() {
46     if (this.submitActionObservable) {
47       this.submitActionObservable().subscribe({
48         error: this.stopLoadingSpinner.bind(this),
49         complete: this.hideModal.bind(this)
50       });
51     } else {
52       this.submitAction();
53     }
54   }
55
56   hideModal() {
57     this.activeModal.close();
58   }
59
60   stopLoadingSpinner() {
61     this.deletionForm.setErrors({ cdSubmitButton: true });
62   }
63 }