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);