]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
a721bcae5fcd99d856bf867f4255179d847fee99
[ceph.git] /
1 import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
2 import { FormControl, Validators } from '@angular/forms';
3
4 import { BsModalRef } from 'ngx-bootstrap/modal';
5 import { Observable } from 'rxjs';
6
7 import { CdFormGroup } from '../../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)
17   submitButton: SubmitButtonComponent;
18   bodyTemplate: TemplateRef<any>;
19   bodyContext: object;
20   submitActionObservable: () => Observable<any>;
21   submitAction: Function;
22   deletionForm: CdFormGroup;
23   itemDescription: 'entry';
24   actionDescription = 'delete';
25
26   constructor(public modalRef: BsModalRef) {}
27
28   ngOnInit() {
29     this.deletionForm = new CdFormGroup({
30       confirmation: new FormControl(false, [Validators.requiredTrue])
31     });
32
33     if (!(this.submitAction || this.submitActionObservable)) {
34       throw new Error('No submit action defined');
35     }
36   }
37
38   callSubmitAction() {
39     if (this.submitActionObservable) {
40       this.submitActionObservable().subscribe(
41         null,
42         this.stopLoadingSpinner.bind(this),
43         this.hideModal.bind(this)
44       );
45     } else {
46       this.submitAction();
47     }
48   }
49
50   hideModal() {
51     this.modalRef.hide();
52   }
53
54   stopLoadingSpinner() {
55     this.deletionForm.setErrors({ cdSubmitButton: true });
56   }
57 }