ACS-8254 [ADF] Add functionality to pass data on confirmation in DialogComponent (#9845)

This commit is contained in:
Darya Blavanovich
2024-06-21 16:14:53 +02:00
committed by GitHub
parent 215b9c2e4b
commit 785b5821a0
6 changed files with 28 additions and 6 deletions

View File

@@ -36,6 +36,7 @@ export interface DialogData {
headerIcon?: string;
additionalActionButtons?: AdditionalDialogActionButton[];
componentData?: any;
dataOnConfirm$?: Subject<any>;
}
export interface AdditionalDialogActionButton {

View File

@@ -23,6 +23,7 @@ import { DialogData } from './dialog-data.interface';
import { DialogSize } from './dialog.model';
import { CoreTestingModule } from '../../testing';
import { Component, DebugElement, inject } from '@angular/core';
import { Subject } from 'rxjs';
@Component({
selector: 'adf-dummy-component'
@@ -38,6 +39,8 @@ describe('DialogComponent', () => {
let cancelButton: HTMLButtonElement;
let confirmButton: HTMLButtonElement;
let dialogContainer: HTMLElement;
const mockId = 'mockId';
const mockDataOnConfirm$ = new Subject();
const data: DialogData = {
title: 'Title',
@@ -96,7 +99,7 @@ describe('DialogComponent', () => {
describe('confirm action', () => {
const mockButtonTitle = 'mockTitle';
beforeEach(() => {
setupBeforeEach({ ...data, confirmButtonTitle: mockButtonTitle });
setupBeforeEach({ ...data, confirmButtonTitle: mockButtonTitle, dataOnConfirm$: mockDataOnConfirm$ });
fixture.detectChanges();
});
@@ -124,11 +127,19 @@ describe('DialogComponent', () => {
expect(confirmButton.getAttribute('disabled')).toBeTruthy();
});
it('should close dialog', () => {
it('should close dialog and pass default value', () => {
component.onConfirm();
expect(dialogRef.close).toHaveBeenCalledWith(true);
});
it('should close dialog and pass dataOnConfirm$', () => {
mockDataOnConfirm$.next(mockId);
component.onConfirm();
expect(dialogRef.close).toHaveBeenCalledWith(mockId);
});
it('should set correct button title', () => {
expect(component.confirmButtonTitle).toEqual(mockButtonTitle);
});

View File

@@ -43,6 +43,7 @@ export class DialogComponent implements OnDestroy {
cancelButtonTitle: string;
dialogSize: DialogSizes;
additionalActionButtons: AdditionalDialogActionButton[];
dataOnConfirm: any;
dataInjector: Injector;
@@ -68,12 +69,16 @@ export class DialogComponent implements OnDestroy {
if (data.isConfirmButtonDisabled$) {
data.isConfirmButtonDisabled$.pipe(takeUntil(this.onDestroy$)).subscribe((value) => this.isConfirmButtonDisabled$.next(value));
}
if (data.dataOnConfirm$) {
data.dataOnConfirm$.pipe(takeUntil(this.onDestroy$)).subscribe((value) => (this.dataOnConfirm = value));
}
}
}
onConfirm() {
this.isConfirmButtonDisabled$.next(true);
this.dialogRef.close(true);
this.dialogRef.close(this.dataOnConfirm || true);
}
ngOnDestroy() {