Skip to content

Commit 30b6ea7

Browse files
author
Dobromir Hristov
authored
make sure closeNav resolves, even if already closed (#387)
closes rdar://94461604
1 parent 1d1886b commit 30b6ea7

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/components/NavBase.vue

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,15 @@ export default {
214214
this.isTransitioning = true;
215215
},
216216
closeNav() {
217+
const oldValue = this.isOpen;
218+
// close the nav
217219
this.isOpen = false;
218-
return this.resolveOnceTransitionsEnd();
220+
// return a promise, that resolves when transitions end
221+
return this.resolveOnceTransitionsEnd(oldValue);
219222
},
220-
resolveOnceTransitionsEnd() {
221-
// if outside the breakpoint, resolve as there is no tray animation
222-
if (!this.inBreakpoint) return Promise.resolve();
223+
resolveOnceTransitionsEnd(oldIsOpen) {
224+
// if outside the breakpoint, or was already closed, resolve as there is no tray animation
225+
if (!oldIsOpen || !this.inBreakpoint) return Promise.resolve();
223226
// enable the transitioning up tracking
224227
this.isTransitioning = true;
225228
// resolve a promise, when we stop transitioning

tests/unit/components/NavBase.spec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,5 +574,13 @@ describe('NavBase', () => {
574574
await wrapper.vm.$nextTick();
575575
expect(resolved).toBe(true);
576576
});
577+
578+
it('resolves closeNav immediately, if already closed and in breakpoint', async () => {
579+
wrapper = await createWrapper({
580+
data: () => ({ inBreakpoint: true, isOpen: false }),
581+
});
582+
expect(wrapper.classes()).not.toContain(NavStateClasses.isOpen);
583+
await expect(wrapper.vm.closeNav()).resolves.toBeUndefined();
584+
});
577585
});
578586
});

0 commit comments

Comments
 (0)