fix(modal): preserve sequential dialogs
This commit is contained in:
@@ -80,6 +80,21 @@ describe('ModalService', () => {
|
|||||||
expect(ref.dismissReason()).toBeNull();
|
expect(ref.dismissReason()).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('keeps a modal opened synchronously from an afterClosed subscriber', () => {
|
||||||
|
const firstRef = service.open(FirstTestModalComponent);
|
||||||
|
let secondRef: ModalRef | undefined;
|
||||||
|
|
||||||
|
firstRef.afterClosed$.subscribe(() => {
|
||||||
|
secondRef = service.open(SecondTestModalComponent);
|
||||||
|
});
|
||||||
|
|
||||||
|
firstRef.close();
|
||||||
|
|
||||||
|
expect(secondRef).toBeDefined();
|
||||||
|
expect(service.activeModal()?.ref).toBe(secondRef);
|
||||||
|
expect(service.activeModal()?.component).toBe(SecondTestModalComponent);
|
||||||
|
});
|
||||||
|
|
||||||
it('tracks dismiss reasons when closing programmatically', () => {
|
it('tracks dismiss reasons when closing programmatically', () => {
|
||||||
const ref = service.open(FirstTestModalComponent);
|
const ref = service.open(FirstTestModalComponent);
|
||||||
const closedSpy = vi.fn();
|
const closedSpy = vi.fn();
|
||||||
|
|||||||
@@ -253,8 +253,8 @@ export class ModalService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref.finalize(result);
|
|
||||||
this.activeModalState.set(null);
|
this.activeModalState.set(null);
|
||||||
|
ref.finalize(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private dismiss<TResult>(
|
private dismiss<TResult>(
|
||||||
@@ -265,8 +265,8 @@ export class ModalService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref.finalize(undefined, reason);
|
|
||||||
this.activeModalState.set(null);
|
this.activeModalState.set(null);
|
||||||
|
ref.finalize(undefined, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
private normalizeConfig<TData>(config: ModalConfig<TData>): NormalizedModalConfig<TData> {
|
private normalizeConfig<TData>(config: ModalConfig<TData>): NormalizedModalConfig<TData> {
|
||||||
|
|||||||
Reference in New Issue
Block a user