From d272d12e785c56042bfe5d579fc27a6c4a4dad1c Mon Sep 17 00:00:00 2001 From: Marius Petcu Date: Mon, 30 Jun 2014 12:03:20 +0300 Subject: [PATCH] IE11 support --- Sortable.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Sortable.js b/Sortable.js index 69f9ae2..2b44f62 100644 --- a/Sortable.js +++ b/Sortable.js @@ -104,6 +104,10 @@ _on(el, 'dragover', this._onDragOver); _on(el, 'dragenter', this._onDragOver); + _on(el, 'pointerdown', this._onTapStart); + + _css(el, 'touch-action', 'none'); + _css(el, '-ms-touch-action', 'none'); touchDragOverListeners.push(this._onDragOver); } @@ -158,7 +162,11 @@ this._onDragStart(tapEvt, true); evt.preventDefault(); } - + + if (evt.type == 'pointerdown') { + this._onDragStart(tapEvt, true); + evt.preventDefault(); + } _on(this.el, 'dragstart', this._onDragStart); _on(this.el, 'dragend', this._onDrop); @@ -211,16 +219,19 @@ }, - _onTouchMove: function (evt/**TouchEvent*/){ + _onTouchMove: function (evt/**TouchEvent|PointerEvent*/){ if( tapEvt ){ var - touch = evt.touches[0] + touch = (evt.type == 'pointermove') ? evt : evt.touches[0] , dx = touch.clientX - tapEvt.clientX , dy = touch.clientY - tapEvt.clientY ; touchEvt = touch; _css(ghostEl, 'webkitTransform', 'translate3d('+dx+'px,'+dy+'px,0)'); + _css(ghostEl, 'mozTransform', 'translate3d('+dx+'px,'+dy+'px,0)'); + _css(ghostEl, 'msTransform', 'translate3d('+dx+'px,'+dy+'px,0)'); + _css(ghostEl, 'transform', 'translate3d('+dx+'px,'+dy+'px,0)'); } }, @@ -263,6 +274,8 @@ // Bind touch events _on(document, 'touchmove', this._onTouchMove); _on(document, 'touchend', this._onDrop); + _on(document, 'pointermove', this._onTouchMove); + _on(document, 'pointerup', this._onDrop); this._loopId = setInterval(this._emulateDragOver, 150); } @@ -339,6 +352,8 @@ _off(document, 'touchmove', this._onTouchMove); _off(document, 'touchend', this._onDrop); + _off(document, 'pointermove', this._onTouchMove); + _off(document, 'pointerup', this._onDrop); if( evt ){ @@ -393,6 +408,7 @@ _off(el, 'mousedown', this._onTapStart); _off(el, 'touchstart', this._onTapStart); _off(el, 'selectstart', this._onTapStart); + _off(el, 'pointerdown', this._onTapStart); _off(el, 'dragover', this._onDragOver); _off(el, 'dragenter', this._onDragOver);