From ba5653db2098fe247b4594f641ac878ab95d4a33 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 29 Sep 2017 22:06:57 +0200 Subject: [PATCH] fix(drawer): open event not firing on init (#7214) Fixes a regression that caused the drawer not to fire its `open` event if it is open on init. Fixes #7208. --- src/lib/sidenav/drawer.spec.ts | 15 +++++++++++++-- src/lib/sidenav/drawer.ts | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/lib/sidenav/drawer.spec.ts b/src/lib/sidenav/drawer.spec.ts index d5e36955528a..f5f0b458b150 100644 --- a/src/lib/sidenav/drawer.spec.ts +++ b/src/lib/sidenav/drawer.spec.ts @@ -126,6 +126,15 @@ describe('MatDrawer', () => { expect(testComponent.closeCount).toBe(1, 'Expected one close event.'); })); + it('should fire the open event when open on init', fakeAsync(() => { + let fixture = TestBed.createComponent(DrawerSetToOpenedTrue); + + fixture.detectChanges(); + tick(); + + expect(fixture.componentInstance.openCallback).toHaveBeenCalledTimes(1); + })); + it('should not close by pressing escape when disableClose is set', fakeAsync(() => { let fixture = TestBed.createComponent(BasicTestApp); let testComponent = fixture.debugElement.componentInstance; @@ -430,12 +439,14 @@ class DrawerSetToOpenedFalse { } @Component({ template: ` - + Closed Drawer. `, }) -class DrawerSetToOpenedTrue { } +class DrawerSetToOpenedTrue { + openCallback = jasmine.createSpy('open callback'); +} @Component({ template: ` diff --git a/src/lib/sidenav/drawer.ts b/src/lib/sidenav/drawer.ts index deb90d49abb2..95b1ac23eece 100644 --- a/src/lib/sidenav/drawer.ts +++ b/src/lib/sidenav/drawer.ts @@ -329,9 +329,9 @@ export class MatDrawer implements AfterContentInit, OnDestroy { _onAnimationEnd(event: AnimationEvent) { const {fromState, toState} = event; - if (toState === 'open' && fromState === 'void') { + if (toState.indexOf('open') === 0 && fromState === 'void') { this.onOpen.emit(new MatDrawerToggleResult('open', true)); - } else if (toState === 'void' && fromState === 'open') { + } else if (toState === 'void' && fromState.indexOf('open') === 0) { this.onClose.emit(new MatDrawerToggleResult('close', true)); }