1 import { Component, Inject, OnInit, Optional, TemplateRef, ViewChild } from '@angular/core';
2 import { UntypedFormControl, Validators } from '@angular/forms';
4 import { Observable } from 'rxjs';
6 import { CdFormGroup } from '~/app/shared/forms/cd-form-group';
7 import { SubmitButtonComponent } from '../submit-button/submit-button.component';
8 import { BaseModal } from 'carbon-components-angular';
11 selector: 'cd-deletion-modal',
12 templateUrl: './critical-confirmation-modal.component.html',
13 styleUrls: ['./critical-confirmation-modal.component.scss']
15 export class CriticalConfirmationModalComponent extends BaseModal implements OnInit {
16 @ViewChild(SubmitButtonComponent, { static: true })
17 submitButton: SubmitButtonComponent;
18 deletionForm: CdFormGroup;
20 childFormGroup: CdFormGroup;
21 childFormGroupTemplate: TemplateRef<any>;
24 @Optional() @Inject('itemDescription') public itemDescription: 'entry',
25 @Optional() @Inject('itemNames') public itemNames: string[],
26 @Optional() @Inject('actionDescription') public actionDescription = 'delete',
27 @Optional() @Inject('submitAction') public submitAction?: Function,
28 @Optional() @Inject('backAction') public backAction?: Function,
29 @Optional() @Inject('bodyTemplate') public bodyTemplate?: TemplateRef<any>,
30 @Optional() @Inject('bodyContext') public bodyContext?: object,
31 @Optional() @Inject('infoMessage') public infoMessage?: string,
33 @Inject('submitActionObservable')
34 public submitActionObservable?: () => Observable<any>,
36 @Inject('callBackAtionObservable')
37 public callBackAtionObservable?: () => Observable<any>
40 this.actionDescription = actionDescription || 'delete';
45 confirmation: new UntypedFormControl(false, [Validators.requiredTrue])
47 if (this.childFormGroup) {
48 controls['child'] = this.childFormGroup;
50 this.deletionForm = new CdFormGroup(controls);
51 if (!(this.submitAction || this.submitActionObservable)) {
52 throw new Error('No submit action defined');
57 if (this.submitActionObservable) {
58 this.submitActionObservable().subscribe({
59 error: this.stopLoadingSpinner.bind(this),
60 complete: this.hideModal.bind(this)
68 if (this.callBackAtionObservable) {
69 this.callBackAtionObservable().subscribe({
70 error: this.stopLoadingSpinner.bind(this),
71 complete: this.hideModal.bind(this)
82 stopLoadingSpinner() {
83 this.deletionForm.setErrors({ cdSubmitButton: true });