From f857b7e2fee09627b4099d66937d924905470fb7 Mon Sep 17 00:00:00 2001 From: Denis Schneider Date: Fri, 27 Mar 2015 11:47:22 +0100 Subject: [PATCH] add read only gesture --- src/angular-reorderable.js | 2 ++ test/angular-reorderable.js | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/angular-reorderable.js b/src/angular-reorderable.js index ac1cbe1..804578b 100644 --- a/src/angular-reorderable.js +++ b/src/angular-reorderable.js @@ -106,6 +106,8 @@ angular }); element.on('mousedown', function (event) { + if (itemElement.attr('readonly')) return; + // Prevent default dragging of selected content event.preventDefault(); isDragging = false; diff --git a/test/angular-reorderable.js b/test/angular-reorderable.js index 3c2fe70..632ed88 100644 --- a/test/angular-reorderable.js +++ b/test/angular-reorderable.js @@ -146,6 +146,48 @@ describe('angular reorderable', function () { expect(element.find('[reorderable]')).to.have.css('position', 'relative'); }); + it('should do nothing if readOnly is set to true', inject(function ($document) { + template = + ''; + var element = createElement(); + + var dragElement = element.find('[reorderable-handle]:eq(0)'); + var dropElement = element.find('[reorderable]:eq(2)'); + + // Click first element. + dragElement.trigger(jQuery.Event('mousedown', { + clientX: dragElement.get(0).getBoundingClientRect().left, + clientY: dragElement.get(0).getBoundingClientRect().top + })); + + // Move mouse to third element. + $document.trigger(jQuery.Event('mousemove', { + clientX: dropElement.get(0).getBoundingClientRect().left, + clientY: dropElement.get(0).getBoundingClientRect().top + })); + scope.$digest(); + + // Release mouse button (not really needed, but whatever). + $document.trigger('mouseup'); + + expect(element.find('[reorderable]:eq(0)')).to.have.text('Qux'); + expect(element.find('[reorderable]:eq(1)')).to.have.text('Baz'); + expect(element.find('[reorderable]:eq(2)')).to.have.text('Bar'); + expect(element.find('[reorderable]:eq(3)')).to.have.text('Foo'); + + expect(scope.collection[0].name).eql('Qux'); + expect(scope.collection[1].name).eql('Baz'); + expect(scope.collection[2].name).eql('Bar'); + expect(scope.collection[3].name).eql('Foo'); + })); + it('should allow to move item forward', inject(function ($document) { template = '