]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/components/critical-confirmation-modal/critical-confirmation-modal.component.ts
a721bcae5fcd99d856bf867f4255179d847fee99
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / components / critical-confirmation-modal / critical-confirmation-modal.component.ts
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 }