diff --git a/src/material-experimental/mdc-snack-bar/snack-bar.spec.ts b/src/material-experimental/mdc-snack-bar/snack-bar.spec.ts index 16a7e708a467..dddd031cedc1 100644 --- a/src/material-experimental/mdc-snack-bar/snack-bar.spec.ts +++ b/src/material-experimental/mdc-snack-bar/snack-bar.spec.ts @@ -466,6 +466,20 @@ describe('MatSnackBar', () => { expect(viewContainerFixture.isStable()).toBe(true); })); + it('should clear the dismiss timeout when dismissed with action', fakeAsync(() => { + let config = new MatSnackBarConfig(); + config.duration = 1000; + const snackBarRef = snackBar.open('content', 'test', config); + + setTimeout(() => snackBarRef.dismissWithAction(), 500); + + tick(600); + viewContainerFixture.detectChanges(); + tick(); + + expect(viewContainerFixture.isStable()).toBe(true); + })); + it('should add extra classes to the container', () => { snackBar.open(simpleMessage, simpleActionLabel, { panelClass: ['one', 'two'] }); viewContainerFixture.detectChanges(); diff --git a/src/material/snack-bar/snack-bar-ref.ts b/src/material/snack-bar/snack-bar-ref.ts index a25805494915..ecb5e76018ec 100644 --- a/src/material/snack-bar/snack-bar-ref.ts +++ b/src/material/snack-bar/snack-bar-ref.ts @@ -74,6 +74,7 @@ export class MatSnackBarRef { this._onAction.next(); this._onAction.complete(); } + clearTimeout(this._durationTimeoutId); } diff --git a/src/material/snack-bar/snack-bar.spec.ts b/src/material/snack-bar/snack-bar.spec.ts index a44876348116..dd893e1f97e0 100644 --- a/src/material/snack-bar/snack-bar.spec.ts +++ b/src/material/snack-bar/snack-bar.spec.ts @@ -525,6 +525,20 @@ describe('MatSnackBar', () => { expect(viewContainerFixture.isStable()).toBe(true); })); + it('should clear the dismiss timeout when dismissed with action', fakeAsync(() => { + let config = new MatSnackBarConfig(); + config.duration = 1000; + const snackBarRef = snackBar.open('content', 'test', config); + + setTimeout(() => snackBarRef.dismissWithAction(), 500); + + tick(600); + viewContainerFixture.detectChanges(); + tick(); + + expect(viewContainerFixture.isStable()).toBe(true); + })); + it('should add extra classes to the container', () => { snackBar.open(simpleMessage, simpleActionLabel, { panelClass: ['one', 'two'] }); viewContainerFixture.detectChanges();