fix(menu): construct menu on first drag

Closes #580
This commit is contained in:
Adam Bradley
2015-11-19 09:10:39 -06:00
parent d23b59a085
commit 0a1f63d3fb
3 changed files with 18 additions and 15 deletions

View File

@ -1,5 +1,5 @@
import {Menu} from './menu'; import {Menu} from './menu';
import {SlideEdgeGesture} from 'ionic/gestures/slide-edge-gesture'; import {SlideEdgeGesture} from '../../gestures/slide-edge-gesture';
import * as util from 'ionic/util'; import * as util from 'ionic/util';

View File

@ -116,16 +116,14 @@ class MenuPushType extends MenuType {
let easing = 'ease'; let easing = 'ease';
let duration = 250; let duration = 250;
let contentClosedX, contentOpenedX, menuClosedX, menuOpenedX; let contentOpenedX, menuClosedX, menuOpenedX;
if (menu.side == 'right') { if (menu.side == 'right') {
contentOpenedX = -menu.width() + 'px'; contentOpenedX = -menu.width() + 'px';
contentClosedX = '0px';
menuOpenedX = (menu.platform.width() - menu.width()) + 'px'; menuOpenedX = (menu.platform.width() - menu.width()) + 'px';
menuClosedX = menu.platform.width() + 'px'; menuClosedX = menu.platform.width() + 'px';
} else { } else {
contentOpenedX = menu.width() + 'px'; contentOpenedX = menu.width() + 'px';
contentClosedX = '0px';
menuOpenedX = '0px'; menuOpenedX = '0px';
menuClosedX = -menu.width() + 'px'; menuClosedX = -menu.width() + 'px';
} }
@ -139,7 +137,7 @@ class MenuPushType extends MenuType {
this.open.add(menuOpen); this.open.add(menuOpen);
let contentOpen = new Animation(menu.getContentElement()); let contentOpen = new Animation(menu.getContentElement());
contentOpen.fromTo(TRANSLATE_X, contentClosedX, contentOpenedX); contentOpen.fromTo(TRANSLATE_X, '0px', contentOpenedX);
this.open.add(contentOpen); this.open.add(contentOpen);
let menuClose = new Animation(menu.getMenuElement()); let menuClose = new Animation(menu.getMenuElement());
@ -147,7 +145,7 @@ class MenuPushType extends MenuType {
this.close.add(menuClose); this.close.add(menuClose);
let contentClose = new Animation(menu.getContentElement()); let contentClose = new Animation(menu.getContentElement());
contentClose.fromTo(TRANSLATE_X, contentOpenedX, contentClosedX); contentClose.fromTo(TRANSLATE_X, contentOpenedX, '0px');
this.close.add(contentClose); this.close.add(contentClose);
} }
} }

View File

@ -147,15 +147,20 @@ export class Menu extends Ion {
if (!type) { if (!type) {
type = this.config.get('menuType'); type = this.config.get('menuType');
} }
this._type = new menuTypes[type](this);
this.type = type; this.type = type;
}
_getType() {
if (!this._type) {
this._type = new menuTypes[this.type](this);
if (this.config.get('animate') === false) { if (this.config.get('animate') === false) {
this._type.open.duration(33); this._type.open.duration(33);
this._type.close.duration(33); this._type.close.duration(33);
} }
} }
return this._type;
}
/** /**
* Sets the state of the Menu to open or not. * Sets the state of the Menu to open or not.
@ -171,7 +176,7 @@ export class Menu extends Ion {
this._before(); this._before();
return this._type.setOpen(shouldOpen).then(() => { return this._getType().setOpen(shouldOpen).then(() => {
this._after(shouldOpen); this._after(shouldOpen);
}); });
} }
@ -185,7 +190,7 @@ export class Menu extends Ion {
this._before(); this._before();
this._type.setProgressStart(this.isOpen); this._getType().setProgressStart(this.isOpen);
} }
/** /**
@ -196,7 +201,7 @@ export class Menu extends Ion {
if (this.isEnabled) { if (this.isEnabled) {
this._prevent(); this._prevent();
this.app.setTransitioning(true); this.app.setTransitioning(true);
this._type.setProgess(value); this._getType().setProgess(value);
} }
} }
@ -208,7 +213,7 @@ export class Menu extends Ion {
if (this.isEnabled) { if (this.isEnabled) {
this._prevent(); this._prevent();
this.app.setTransitioning(true); this.app.setTransitioning(true);
this._type.setProgressEnd(shouldComplete).then(isOpen => { this._getType().setProgressEnd(shouldComplete).then(isOpen => {
this._after(isOpen); this._after(isOpen);
}); });
} }