From f9199fb3be6ce6b0a693e2e3b944b47ed8575531 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Tue, 8 Dec 2015 12:08:17 -0600 Subject: [PATCH] fix(itemSliding): onDragEnd on mouseout of sliding element Closes #https://github.com/driftyco/ionic2/issues/702 --- ionic/components/item/item-sliding-gesture.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/ionic/components/item/item-sliding-gesture.ts b/ionic/components/item/item-sliding-gesture.ts index 97d6add026..06abc5aefa 100644 --- a/ionic/components/item/item-sliding-gesture.ts +++ b/ionic/components/item/item-sliding-gesture.ts @@ -30,7 +30,9 @@ export class ItemSlidingGesture extends DragGesture { }; this.mouseOut = (ev) => { - this.onDragEnd(ev); + if (ev.target.tagName === 'ION-ITEM-SLIDING') { + this.onDragEnd(ev); + } }; } @@ -54,10 +56,6 @@ export class ItemSlidingGesture extends DragGesture { this.set(itemContainerEle, 'offsetX', openAmout); this.set(itemContainerEle, 'startX', ev.center[this.direction]); - if (ev.srcEvent.type.indexOf('mouse') > -1) { - ev.target.addEventListener('mouseout', this.mouseOut); - } - this.dragEnded = false; } @@ -87,6 +85,11 @@ export class ItemSlidingGesture extends DragGesture { newX = -Math.min(-itemData.optsWidth, -itemData.optsWidth + (((delta + itemData.optsWidth) * 0.4))); } + if (newX > 5 && ev.srcEvent.type.indexOf('mouse') > -1 && !itemData.hasMouseOut) { + itemContainerEle.addEventListener('mouseout', this.mouseOut); + itemData.hasMouseOut = true; + } + raf(() => { if (!this.dragEnded && !this.preventDrag) { isItemActive(itemContainerEle, true); @@ -119,7 +122,8 @@ export class ItemSlidingGesture extends DragGesture { } } - ev.target.removeEventListener('mouseout', this.mouseOut); + itemContainerEle.removeEventListener('mouseout', this.mouseOut); + itemData.hasMouseOut = false; raf(() => { this.open(itemContainerEle, restingPoint, true);