fix(aside): tap on content. Fixes #78

This commit is contained in:
Max Lynch
2015-08-30 22:17:46 -05:00
parent 95bc7095c0
commit ade97e81b7
5 changed files with 33 additions and 4 deletions

View File

@ -33,5 +33,6 @@ export class AsideToggle {
*/ */
toggle(event) { toggle(event) {
this.aside && this.aside.toggle(); this.aside && this.aside.toggle();
console.log('Aside toggle');
} }
} }

View File

@ -121,10 +121,12 @@ $aside-shadow: -1px 0px 8px rgba(0, 0, 0, 0.2) !default;
box-shadow: $aside-shadow; box-shadow: $aside-shadow;
&.aside-open-left { &.aside-open-left {
transform: translate3d($aside-width,0,0); transform: translate3d($aside-width,0,0);
pointer-events: none;
} }
&.aside-open-right { &.aside-open-right {
transform: translate3d(-$aside-width,0,0); transform: translate3d(-$aside-width,0,0);
pointer-events: none;
} }
} }

View File

@ -55,16 +55,24 @@ export class Aside extends Ion {
this.opening = new EventEmitter('opening'); this.opening = new EventEmitter('opening');
//this.animation = new Animation(element.querySelector('backdrop')); //this.animation = new Animation(element.querySelector('backdrop'));
this.contentClickFn = (e) => {
console.log('Click', this.isOpen, this.isChanging);
if(!this.isOpen || this.isChanging) { return; }
this.close();
};
let finishChanging = util.debounce(() => {
this.finishChanging = util.debounce(() => {
console.log('Done changing');
this.setChanging(false); this.setChanging(false);
}); });
// TODO: Use Animation Class // TODO: Use Animation Class
this.getNativeElement().addEventListener('transitionend', ev => { this.getNativeElement().addEventListener('transitionend', ev => {
console.log("Transition end");
//this.setChanging(false) //this.setChanging(false)
clearTimeout(this.setChangeTimeout); clearTimeout(this.setChangeTimeout);
this.setChangeTimeout = setInterval(finishChanging, 500); this.setChangeTimeout = setInterval(this.finishChanging, 400);
}) })
} }
@ -82,10 +90,27 @@ export class Aside extends Ion {
super.onInit(); super.onInit();
this.contentElement = (this.content instanceof Node) ? this.content : this.content.getNativeElement(); this.contentElement = (this.content instanceof Node) ? this.content : this.content.getNativeElement();
if(this.contentElement) {
this.contentElement.addEventListener('transitionend', ev => {
console.log("Transition end");
//this.setChanging(false)
clearTimeout(this.setChangeTimeout);
this.setChangeTimeout = setInterval(this.finishChanging, 400);
})
this.contentElement.addEventListener('click', this.contentClickFn);
} else {
console.error('Aside: must have a [content] element to listen for drag events on. Supply one like this:\n\n<ion-aside [content]="content"></ion-aside>\n\n<ion-content #content>');
}
this.gestureDelegate = this.getDelegate('gesture'); this.gestureDelegate = this.getDelegate('gesture');
this.typeDelegate = this.getDelegate('type'); this.typeDelegate = this.getDelegate('type');
} }
onDestroy() {
this.contentElement.removeEventListener('click', this.contentClickFn);
}
/** /**
* TODO * TODO
* @return {Element} The Aside's content element. * @return {Element} The Aside's content element.

View File

@ -1,4 +1,4 @@
<ion-aside #aside [content]="content" id="menu" type="overlay"> <ion-aside #aside [content]="content" id="menu" type="reveal">
<ion-toolbar secondary> <ion-toolbar secondary>
<ion-title>Left Menu</ion-title> <ion-title>Left Menu</ion-title>
@ -17,7 +17,6 @@
</button> </button>
</ion-list> </ion-list>
</ion-content> </ion-content>
</ion-aside> </ion-aside>

View File

@ -21,4 +21,6 @@
<button id="e2eContentToggleAside" aside-toggle>Toggle Aside</button> <button id="e2eContentToggleAside" aside-toggle>Toggle Aside</button>
</p> </p>
<f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f>
</ion-content> </ion-content>