diff --git a/tests/unit/sortable/common.js b/tests/unit/sortable/common.js index a28c2511a..dd22c0433 100644 --- a/tests/unit/sortable/common.js +++ b/tests/unit/sortable/common.js @@ -48,6 +48,6 @@ common.testWidget( "sortable", { stop: null, update: null } -}); +} ); } ); diff --git a/tests/unit/sortable/core.js b/tests/unit/sortable/core.js index 68f275604..d12416f09 100644 --- a/tests/unit/sortable/core.js +++ b/tests/unit/sortable/core.js @@ -9,12 +9,12 @@ module( "sortable: core" ); test( "#9314: Sortable: Items cannot be dragged directly into bottom position", function() { expect( 1 ); - var el = $( ".connectWith" ).sortable({ + var el = $( ".connectWith" ).sortable( { connectWith: ".connectWith" - }); + } ); testHelper.sort( $( "li", el[ 1 ] )[ 0 ], 0, -12, 5, "Dragging the sortable into connected sortable" ); -}); +} ); test( "ui-sortable-handle applied to appropriate element", function( assert ) { expect( 8 ); @@ -37,6 +37,6 @@ test( "ui-sortable-handle applied to appropriate element", function( assert ) { el.sortable( "destroy" ); equal( el.find( ".ui-sortable-handle" ).length, 0, "class name removed on destroy" ); -}); +} ); } ); diff --git a/tests/unit/sortable/events.js b/tests/unit/sortable/events.js index 74f10dfeb..d2416fbc4 100644 --- a/tests/unit/sortable/events.js +++ b/tests/unit/sortable/events.js @@ -5,223 +5,223 @@ define( [ "ui/widgets/draggable" ], function( $, testHelper ) { -module("sortable: events"); +module( "sortable: events" ); -test("start", function() { +test( "start", function() { expect( 7 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { start: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 10 - }); + } ); - ok(hash, "start event triggered"); - ok(hash.helper, "UI hash includes: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "start event triggered" ); + ok( hash.helper, "UI hash includes: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); // Todo: see if these events should actually have sane values in them - ok("position" in hash, "UI hash includes: position"); - ok("offset" in hash, "UI hash includes: offset"); -}); + ok( "position" in hash, "UI hash includes: position" ); + ok( "offset" in hash, "UI hash includes: offset" ); +} ); -test("sort", function() { +test( "sort", function() { expect( 7 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { sort: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 10 - }); + } ); - ok(hash, "sort event triggered"); - ok(hash.helper, "UI hash includes: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position"); - ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "sort event triggered" ); + ok( hash.helper, "UI hash includes: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" ); + ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); -}); +} ); -test("change", function() { +test( "change", function() { expect( 8 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { change: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dx: 1, dy: 1 - }); + } ); - ok(!hash, "1px drag, change event should not be triggered"); + ok( !hash, "1px drag, change event should not be triggered" ); - $("#sortable").sortable({ + $( "#sortable" ).sortable( { change: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 22 - }); + } ); - ok(hash, "change event triggered"); - ok(hash.helper, "UI hash includes: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position"); - ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "change event triggered" ); + ok( hash.helper, "UI hash includes: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" ); + ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); -}); +} ); -test("beforeStop", function() { +test( "beforeStop", function() { expect( 7 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { beforeStop: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 20 - }); + } ); - ok(hash, "beforeStop event triggered"); - ok(hash.helper, "UI hash includes: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position"); - ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "beforeStop event triggered" ); + ok( hash.helper, "UI hash includes: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" ); + ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); -}); +} ); -test("stop", function() { +test( "stop", function() { expect( 7 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { stop: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 20 - }); + } ); - ok(hash, "stop event triggered"); - ok(!hash.helper, "UI should not include: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position"); - ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "stop event triggered" ); + ok( !hash.helper, "UI should not include: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" ); + ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); -}); +} ); -test("update", function() { +test( "update", function() { expect( 8 ); var hash; - $("#sortable").sortable({ + $( "#sortable" ).sortable( { update: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dx: 1, dy: 1 - }); + } ); - ok(!hash, "1px drag, update event should not be triggered"); + ok( !hash, "1px drag, update event should not be triggered" ); - $("#sortable").sortable({ + $( "#sortable" ).sortable( { update: function( e, ui ) { hash = ui; } - }).find("li:eq(0)").simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 22 - }); + } ); - ok(hash, "update event triggered"); - ok(!hash.helper, "UI hash should not include: helper"); - ok(hash.placeholder, "UI hash includes: placeholder"); - ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position"); - ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset"); - ok(hash.item, "UI hash includes: item"); - ok(!hash.sender, "UI hash does not include: sender"); + ok( hash, "update event triggered" ); + ok( !hash.helper, "UI hash should not include: helper" ); + ok( hash.placeholder, "UI hash includes: placeholder" ); + ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" ); + ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" ); + ok( hash.item, "UI hash includes: item" ); + ok( !hash.sender, "UI hash does not include: sender" ); -}); +} ); -test("#3019: Stop fires too early", function() { - expect(2); +test( "#3019: Stop fires too early", function() { + expect( 2 ); var helper = null, - el = $("#sortable").sortable({ - stop: function(event, ui) { + el = $( "#sortable" ).sortable( { + stop: function( event, ui ) { helper = ui.helper; } - }); + } ); - testHelper.sort($("li", el)[0], 0, 44, 2, "Dragging the sortable"); - equal(helper, null, "helper should be false"); + testHelper.sort( $( "li", el )[ 0 ], 0, 44, 2, "Dragging the sortable" ); + equal( helper, null, "helper should be false" ); -}); +} ); -test("#4752: link event firing on sortable with connect list", function () { +test( "#4752: link event firing on sortable with connect list", function() { expect( 10 ); var fired = {}, - hasFired = function (type) { return (type in fired) && (true === fired[type]); }; + hasFired = function( type ) { return ( type in fired ) && ( true === fired[ type ] ); }; - $("#sortable").clone().attr("id", "sortable2").insertAfter("#sortable"); + $( "#sortable" ).clone().attr( "id", "sortable2" ).insertAfter( "#sortable" ); - $("#qunit-fixture ul").sortable({ + $( "#qunit-fixture ul" ).sortable( { connectWith: "#qunit-fixture ul", - change: function () { + change: function() { fired.change = true; }, - receive: function () { + receive: function() { fired.receive = true; }, - remove: function () { + remove: function() { fired.remove = true; } - }); + } ); - $("#qunit-fixture ul").on("click.ui-sortable-test", function () { + $( "#qunit-fixture ul" ).on( "click.ui-sortable-test", function() { fired.click = true; - }); + } ); - $("#sortable li:eq(0)").simulate("click"); - ok(!hasFired("change"), "Click only, change event should not have fired"); - ok(hasFired("click"), "Click event should have fired"); + $( "#sortable li:eq(0)" ).simulate( "click" ); + ok( !hasFired( "change" ), "Click only, change event should not have fired" ); + ok( hasFired( "click" ), "Click event should have fired" ); // Drag an item within the first list fired = {}; - $("#sortable li:eq(0)").simulate("drag", { dx: 0, dy: 40 }); - ok(hasFired("change"), "40px drag, change event should have fired"); - ok(!hasFired("receive"), "Receive event should not have fired"); - ok(!hasFired("remove"), "Remove event should not have fired"); - ok(!hasFired("click"), "Click event should not have fired"); + $( "#sortable li:eq(0)" ).simulate( "drag", { dx: 0, dy: 40 } ); + ok( hasFired( "change" ), "40px drag, change event should have fired" ); + ok( !hasFired( "receive" ), "Receive event should not have fired" ); + ok( !hasFired( "remove" ), "Remove event should not have fired" ); + ok( !hasFired( "click" ), "Click event should not have fired" ); // Drag an item from the first list to the second, connected list fired = {}; - $("#sortable li:eq(0)").simulate("drag", { dx: 0, dy: 150 }); - ok(hasFired("change"), "150px drag, change event should have fired"); - ok(hasFired("receive"), "Receive event should have fired"); - ok(hasFired("remove"), "Remove event should have fired"); - ok(!hasFired("click"), "Click event should not have fired"); -}); + $( "#sortable li:eq(0)" ).simulate( "drag", { dx: 0, dy: 150 } ); + ok( hasFired( "change" ), "150px drag, change event should have fired" ); + ok( hasFired( "receive" ), "Receive event should have fired" ); + ok( hasFired( "remove" ), "Remove event should have fired" ); + ok( !hasFired( "click" ), "Click event should not have fired" ); +} ); /* test("receive", function() { @@ -239,14 +239,14 @@ test( "over", function() { var hash, overCount = 0; - $( "#sortable" ).sortable({ + $( "#sortable" ).sortable( { over: function( e, ui ) { hash = ui; overCount++; } - }).find( "li:eq(0)" ).simulate( "drag", { + } ).find( "li:eq(0)" ).simulate( "drag", { dy: 20 - }); + } ); ok( hash, "over event triggered" ); ok( hash.helper, "UI includes: helper" ); @@ -256,7 +256,7 @@ test( "over", function() { ok( hash.item, "UI hash includes: item" ); ok( hash.sender, "UI hash includes: sender" ); equal( overCount, 1, "over fires only once" ); -}); +} ); // http://bugs.jqueryui.com/ticket/9335 // Sortable: over & out events does not consistently fire @@ -267,25 +267,25 @@ test( "over, fires with draggable connected to sortable", function() { overCount = 0, item = $( "
" ).text( "6" ).insertAfter( "#sortable" ); - item.draggable({ + item.draggable( { connectToSortable: "#sortable" - }); - $( ".connectWith" ).sortable({ + } ); + $( ".connectWith" ).sortable( { connectWith: ".connectWith", over: function( event, ui ) { hash = ui; overCount++; } - }); + } ); item.simulate( "drag", { dy: -20 - }); + } ); ok( hash, "over event triggered" ); ok( !hash.sender, "UI should not include: sender" ); equal( overCount, 1, "over fires only once" ); -}); +} ); test( "over, with connected sortable", function() { expect( 3 ); @@ -293,21 +293,21 @@ test( "over, with connected sortable", function() { var hash, overCount = 0; - $( ".connectWith" ).sortable({ + $( ".connectWith" ).sortable( { connectWith: ".connectWith" - }); + } ); $( "#sortable2" ).on( "sortover", function( event, ui ) { hash = ui; overCount++; - }); + } ); $( "#sortable" ).find( "li:eq(0)" ).simulate( "drag", { dy: 102 - }); + } ); ok( hash, "over event triggered" ); - equal( hash.sender[ 0 ], $(" #sortable" )[ 0 ], "UI includes: sender" ); + equal( hash.sender[ 0 ], $( " #sortable" )[ 0 ], "UI includes: sender" ); equal( overCount, 1, "over fires only once" ); -}); +} ); /* test("out", function() { @@ -321,20 +321,20 @@ test( "out, with connected sortable", function() { var hash, outCount = 0; - $( ".connectWith" ).sortable({ + $( ".connectWith" ).sortable( { connectWith: ".connectWith" - }); + } ); $( "#sortable" ).on( "sortout", function( event, ui ) { hash = ui; outCount++; - }); + } ); $( "#sortable" ).find( "li:last" ).simulate( "drag", { dy: 40 - }); + } ); ok( hash, "out event triggered" ); equal( outCount, 1, "out fires only once" ); -}); +} ); test( "repeated out & over between connected sortables", function() { expect( 2 ); @@ -342,28 +342,29 @@ test( "repeated out & over between connected sortables", function() { var outCount = 0, overCount = 0; - $( ".connectWith" ).sortable({ + $( ".connectWith" ).sortable( { connectWith: ".connectWith", over: function() { overCount++; }, out: function( event, ui ) { + // Ignore events that trigger when an item has dropped // checking for the presence of the helper. if ( !ui.helper ) { outCount++; } } - }); + } ); $( "#sortable" ).find( "li:last" ).simulate( "drag", { dy: 40 - }).simulate( "drag", { + } ).simulate( "drag", { dy: -40 - }); + } ); equal( outCount, 2, "out fires twice" ); equal( overCount, 4, "over fires four times" ); -}); +} ); /* test("activate", function() { diff --git a/tests/unit/sortable/helper.js b/tests/unit/sortable/helper.js index 76545022e..c1c0b6e74 100644 --- a/tests/unit/sortable/helper.js +++ b/tests/unit/sortable/helper.js @@ -8,7 +8,7 @@ return $.extend( helper, { $( handle ).simulate( "drag", { dx: dx, dy: dy - }); + } ); equal( $( handle ).parent().children().index( handle ), index, msg ); } } ); diff --git a/tests/unit/sortable/methods.js b/tests/unit/sortable/methods.js index f58ac052d..1d2fda8ff 100644 --- a/tests/unit/sortable/methods.js +++ b/tests/unit/sortable/methods.js @@ -4,72 +4,72 @@ define( [ "ui/widgets/sortable" ], function( $, testHelper ) { -module("sortable: methods"); +module( "sortable: methods" ); -test("init", function() { - expect(5); +test( "init", function() { + expect( 5 ); - $("
").appendTo("body").sortable().remove(); - ok(true, ".sortable() called on element"); + $( "
" ).appendTo( "body" ).sortable().remove(); + ok( true, ".sortable() called on element" ); - $([]).sortable(); - ok(true, ".sortable() called on empty collection"); + $( [] ).sortable(); + ok( true, ".sortable() called on empty collection" ); - $("
").sortable(); - ok(true, ".sortable() called on disconnected DOMElement"); + $( "
" ).sortable(); + ok( true, ".sortable() called on disconnected DOMElement" ); - $("
").sortable().sortable("option", "foo"); - ok(true, "arbitrary option getter after init"); + $( "
" ).sortable().sortable( "option", "foo" ); + ok( true, "arbitrary option getter after init" ); - $("
").sortable().sortable("option", "foo", "bar"); - ok(true, "arbitrary option setter after init"); -}); + $( "
" ).sortable().sortable( "option", "foo", "bar" ); + ok( true, "arbitrary option setter after init" ); +} ); -test("destroy", function() { - expect(4); - $("
").appendTo("body").sortable().sortable("destroy").remove(); - ok(true, ".sortable('destroy') called on element"); +test( "destroy", function() { + expect( 4 ); + $( "
" ).appendTo( "body" ).sortable().sortable( "destroy" ).remove(); + ok( true, ".sortable('destroy') called on element" ); - $([]).sortable().sortable("destroy"); - ok(true, ".sortable('destroy') called on empty collection"); + $( [] ).sortable().sortable( "destroy" ); + ok( true, ".sortable('destroy') called on empty collection" ); - $("
").sortable().sortable("destroy"); - ok(true, ".sortable('destroy') called on disconnected DOMElement"); + $( "
" ).sortable().sortable( "destroy" ); + ok( true, ".sortable('destroy') called on disconnected DOMElement" ); - var expected = $("
").sortable(), - actual = expected.sortable("destroy"); - equal(actual, expected, "destroy is chainable"); -}); + var expected = $( "
" ).sortable(), + actual = expected.sortable( "destroy" ); + equal( actual, expected, "destroy is chainable" ); +} ); -test("enable", function() { - expect(5); +test( "enable", function() { + expect( 5 ); var el, actual, expected; - el = $("#sortable").sortable({ disabled: true }); + el = $( "#sortable" ).sortable( { disabled: true } ); - testHelper.sort($("li", el)[0], 0, 44, 0, ".sortable({ disabled: true })"); + testHelper.sort( $( "li", el )[ 0 ], 0, 44, 0, ".sortable({ disabled: true })" ); - el.sortable("enable"); - equal(el.sortable("option", "disabled"), false, "disabled option getter"); + el.sortable( "enable" ); + equal( el.sortable( "option", "disabled" ), false, "disabled option getter" ); - el.sortable("destroy"); - el.sortable({ disabled: true }); - el.sortable("option", "disabled", false); - equal(el.sortable("option", "disabled"), false, "disabled option setter"); + el.sortable( "destroy" ); + el.sortable( { disabled: true } ); + el.sortable( "option", "disabled", false ); + equal( el.sortable( "option", "disabled" ), false, "disabled option setter" ); - testHelper.sort($("li", el)[0], 0, 44, 2, ".sortable('option', 'disabled', false)"); + testHelper.sort( $( "li", el )[ 0 ], 0, 44, 2, ".sortable('option', 'disabled', false)" ); - expected = $("
").sortable(), - actual = expected.sortable("enable"); - equal(actual, expected, "enable is chainable"); -}); + expected = $( "
" ).sortable(), + actual = expected.sortable( "enable" ); + equal( actual, expected, "enable is chainable" ); +} ); test( "disable", function( assert ) { expect( 9 ); var chainable, - element = $( "#sortable" ).sortable({ disabled: false }); + element = $( "#sortable" ).sortable( { disabled: false } ); testHelper.sort( $( "li", element )[ 0 ], 0, 44, 2, ".sortable({ disabled: false })" ); @@ -78,18 +78,18 @@ test( "disable", function( assert ) { element.sortable( "destroy" ); - element.sortable({ disabled: false }); + element.sortable( { disabled: false } ); testHelper.sort( $( "li", element )[ 0 ], 0, 44, 2, ".sortable({ disabled: false })" ); - element.sortable( "option", "disabled", true); + element.sortable( "option", "disabled", true ); equal( element.sortable( "option", "disabled" ), true, "disabled option setter" ); assert.lacksClasses( element.sortable( "widget" ), "ui-state-disabled" ); ok( !element.sortable( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" ); assert.hasClasses( element.sortable( "widget" ), "ui-sortable-disabled" ); - testHelper.sort($( "li", element )[ 0 ], 0, 44, 0, ".sortable('option', 'disabled', true)" ); + testHelper.sort( $( "li", element )[ 0 ], 0, 44, 0, ".sortable('option', 'disabled', true)" ); equal( chainable, element, "disable is chainable" ); -}); +} ); test( "refresh() should update the positions of initially empty lists (see #7498)", function() { expect( 1 ); @@ -98,22 +98,22 @@ test( "refresh() should update the positions of initially empty lists (see #7498 element = $( "#qunit-fixture" ).html( "" ).find( "ul" ); element - .css({ + .css( { "float": "left", width: "100px" - }) - .sortable({ + } ) + .sortable( { change: function() { changeCount++; } - }) + } ) .append( "
  • a
  • a
  • " ) .find( "li" ) - .css({ + .css( { "float": "left", width: "50px", height: "50px" - }); + } ); element.sortable( "refresh" ); @@ -121,9 +121,9 @@ test( "refresh() should update the positions of initially empty lists (see #7498 element.find( "li" ).eq( 0 ).simulate( "drag", { dx: 55, moves: 15 - }); + } ); equal( changeCount, 1 ); -}); +} ); } ); diff --git a/tests/unit/sortable/options.js b/tests/unit/sortable/options.js index 5d24a3606..cdb932af3 100644 --- a/tests/unit/sortable/options.js +++ b/tests/unit/sortable/options.js @@ -3,7 +3,7 @@ define( [ "ui/widgets/sortable" ], function( $ ) { -module("sortable: options"); +module( "sortable: options" ); /* test("{ appendTo: 'parent' }, default", function() { @@ -19,14 +19,14 @@ test( "{ axis: false }, default", function() { expect( 2 ); var offsetAfter, - element = $( "#sortable" ).sortable({ + element = $( "#sortable" ).sortable( { axis: false, change: function() { offsetAfter = item.offset(); notEqual( offsetAfter.left, offsetBefore.left, "x axis not constrained when axis: false" ); notEqual( offsetAfter.top, offsetBefore.top, "y axis not constrained when axis: false" ); } - }), + } ), item = element.find( "li" ).eq( 0 ), offsetBefore = item.offset(); @@ -34,21 +34,21 @@ test( "{ axis: false }, default", function() { dx: 50, dy: 25, moves: 1 - }); -}); + } ); +} ); test( "{ axis: 'x' }", function() { expect( 2 ); var offsetAfter, - element = $( "#sortable" ).sortable({ + element = $( "#sortable" ).sortable( { axis: "x", change: function() { offsetAfter = item.offset(); notEqual( offsetAfter.left, offsetBefore.left, "x axis not constrained when axis: x" ); equal( offsetAfter.top, offsetBefore.top, "y axis constrained when axis: x" ); } - }), + } ), item = element.find( "li" ).eq( 0 ), offsetBefore = item.offset(); @@ -56,21 +56,21 @@ test( "{ axis: 'x' }", function() { dx: 50, dy: 25, moves: 1 - }); -}); + } ); +} ); test( "{ axis: 'y' }", function() { expect( 2 ); var offsetAfter, - element = $( "#sortable" ).sortable({ + element = $( "#sortable" ).sortable( { axis: "y", change: function() { offsetAfter = item.offset(); equal( offsetAfter.left, offsetBefore.left, "x axis constrained when axis: y" ); notEqual( offsetAfter.top, offsetBefore.top, "y axis not constrained when axis: y" ); } - }), + } ), item = element.find( "li" ).eq( 0 ), offsetBefore = item.offset(); @@ -78,33 +78,33 @@ test( "{ axis: 'y' }", function() { dx: 50, dy: 25, moves: 1 - }); -}); + } ); +} ); asyncTest( "#7415: Incorrect revert animation with axis: 'y'", function() { expect( 2 ); var expectedLeft, - element = $( "#sortable" ).sortable({ + element = $( "#sortable" ).sortable( { axis: "y", revert: true, stop: start, sort: function() { expectedLeft = item.css( "left" ); } - }), + } ), item = element.find( "li" ).eq( 0 ); item.simulate( "drag", { dy: 300, dx: 50 - }); + } ); - setTimeout(function() { + setTimeout( function() { var top = parseFloat( item.css( "top" ) ); equal( item.css( "left" ), expectedLeft, "left not animated" ); ok( top > 0 && top < 300, "top is animated" ); }, 100 ); -}); +} ); /* test("{ cancel: 'input,textarea,button,select,option' }, default", function() { @@ -124,15 +124,15 @@ test( "#8792: issues with floated items in connected lists", function() { $( "#qunit-fixture" ) .html( "" ) - .find( "ul" ).css({ "float": "left", width: "100px" }).end() - .find( "li" ).css({ "float": "left", width: "50px", height: "50px" }); + .find( "ul" ).css( { "float": "left", width: "100px" } ).end() + .find( "li" ).css( { "float": "left", width: "50px", height: "50px" } ); - $( "#qunit-fixture .c" ).sortable({ + $( "#qunit-fixture .c" ).sortable( { connectWith: "#qunit-fixture .c", change: function() { changeCount++; } - }); + } ); element = $( "#qunit-fixture li:eq(0)" ); @@ -140,7 +140,7 @@ test( "#8792: issues with floated items in connected lists", function() { element.simulate( "drag", { dx: 55, moves: 15 - }); + } ); equal( changeCount, 1, "change fired only once (no jitters) when dragging a floated sortable in it's own container" ); @@ -149,37 +149,37 @@ test( "#8792: issues with floated items in connected lists", function() { element.simulate( "drag", { dx: 100, moves: 15 - }); + } ); equal( changeCount, 3, "change fired once for each expected change when dragging a floated sortable to a connected container" ); -}); +} ); test( "#8301: single axis with connected list", function() { expect( 1 ); - var element = $( "#sortable" ).sortable({ + var element = $( "#sortable" ).sortable( { axis: "y", tolerance: "pointer", connectWith: ".connected" - }); + } ); $( "" ) - .sortable({ + .sortable( { axis: "y", tolerance: "pointer", connectWith: "#sortable", receive: function() { ok( true, "connected list received item" ); } - }) + } ) .insertAfter( element ); element.find( "li" ).eq( 0 ).simulate( "drag", { handle: "corner", dy: 120, moves: 1 - }); -}); + } ); +} ); /* test("{ connectWith: false }, default", function() { @@ -330,44 +330,44 @@ test("{ placeholder: false }, default", function() { test( "{ placeholder: false } img", function() { expect( 3 ); - var element = $( "#sortable-images" ).sortable({ + var element = $( "#sortable-images" ).sortable( { start: function( event, ui ) { ok( ui.placeholder.attr( "src" ).indexOf( "images/jqueryui_32x32.png" ) > 0, "placeholder img has correct src" ); equal( ui.placeholder.height(), 32, "placeholder has correct height" ); equal( ui.placeholder.width(), 32, "placeholder has correct width" ); } - }); + } ); element.find( "img" ).eq( 0 ).simulate( "drag", { dy: 1 - }); -}); + } ); +} ); test( "{ placeholder: String }", function( assert ) { expect( 1 ); - var element = $( "#sortable" ).sortable({ + var element = $( "#sortable" ).sortable( { placeholder: "test", start: function( event, ui ) { assert.hasClasses( ui.placeholder, "test" ); } - }); + } ); element.find( "li" ).eq( 0 ).simulate( "drag", { dy: 1 - }); -}); + } ); +} ); test( "{ placholder: String } tr", function( assert ) { expect( 4 ); var originalWidths, - element = $( "#sortable-table tbody" ).sortable({ + element = $( "#sortable-table tbody" ).sortable( { placeholder: "test", start: function( event, ui ) { - var currentWidths = otherRow.children().map(function() { + var currentWidths = otherRow.children().map( function() { return $( this ).width(); - }).get(); + } ).get(); assert.hasClasses( ui.placeholder, "test" ); deepEqual( currentWidths, originalWidths, "table cells maintian size" ); equal( ui.placeholder.children().length, dragRow.children().length, @@ -375,29 +375,29 @@ test( "{ placholder: String } tr", function( assert ) { equal( ui.placeholder.children().html(), $( " " ).html(), "placeholder td has content for forced dimensions" ); } - }), + } ), rows = element.children( "tr" ), dragRow = rows.eq( 0 ), otherRow = rows.eq( 1 ); - originalWidths = otherRow.children().map(function() { + originalWidths = otherRow.children().map( function() { return $( this ).width(); - }).get(); + } ).get(); dragRow.simulate( "drag", { dy: 1 - }); -}); + } ); +} ); test( "{ placholder: String } tbody", function() { expect( 6 ); var originalWidths, - element = $( "#sortable-table" ).sortable({ + element = $( "#sortable-table" ).sortable( { placeholder: "test", start: function( event, ui ) { - var currentWidths = otherBody.children().map(function() { + var currentWidths = otherBody.children().map( function() { return $( this ).width(); - }).get(); + } ).get(); ok( ui.placeholder.hasClass( "test" ), "placeholder has class" ); deepEqual( currentWidths, originalWidths, "table cells maintain size" ); equal( ui.placeholder.children().length, 1, @@ -411,18 +411,18 @@ test( "{ placholder: String } tbody", function() { $( " " ).html(), "placeholder td has content for forced dimensions" ); } - }), + } ), bodies = element.children( "tbody" ), dragBody = bodies.eq( 0 ), otherBody = bodies.eq( 1 ); - originalWidths = otherBody.children().map(function() { + originalWidths = otherBody.children().map( function() { return $( this ).width(); - }).get(); + } ).get(); dragBody.simulate( "drag", { dy: 1 - }); -}); + } ); +} ); /* test("{ revert: false }, default", function() { diff --git a/ui/widgets/sortable.js b/ui/widgets/sortable.js index bea58defd..423bb81f8 100644 --- a/ui/widgets/sortable.js +++ b/ui/widgets/sortable.js @@ -14,11 +14,11 @@ //>>demos: http://jqueryui.com/sortable/ //>>css.structure: ../themes/base/sortable.css -(function( factory ) { +( function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. - define([ + define( [ "jquery", "./mouse", "../data", @@ -32,9 +32,9 @@ // Browser globals factory( jQuery ); } -}(function( $ ) { +}( function( $ ) { -return $.widget("ui.sortable", $.ui.mouse, { +return $.widget( "ui.sortable", $.ui.mouse, { version: "@VERSION", widgetEventPrefix: "sort", ready: false, @@ -82,7 +82,7 @@ return $.widget("ui.sortable", $.ui.mouse, { }, _isFloating: function( item ) { - return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); + return ( /left|right/ ).test( item.css( "float" ) ) || ( /inline|table-cell/ ).test( item.css( "display" ) ); }, _create: function() { @@ -123,56 +123,56 @@ return $.widget("ui.sortable", $.ui.mouse, { this.item, "ui-sortable-handle" ); - }); + } ); }, _destroy: function() { this._mouseDestroy(); for ( var i = this.items.length - 1; i >= 0; i-- ) { - this.items[i].item.removeData(this.widgetName + "-item"); + this.items[ i ].item.removeData( this.widgetName + "-item" ); } return this; }, - _mouseCapture: function(event, overrideHandle) { + _mouseCapture: function( event, overrideHandle ) { var currentItem = null, validHandle = false, that = this; - if (this.reverting) { + if ( this.reverting ) { return false; } - if(this.options.disabled || this.options.type === "static") { + if ( this.options.disabled || this.options.type === "static" ) { return false; } //We have to refresh the items data once first - this._refreshItems(event); + this._refreshItems( event ); //Find out if the clicked node (or one of its parents) is a actual item in this.items - $(event.target).parents().each(function() { - if($.data(this, that.widgetName + "-item") === that) { - currentItem = $(this); + $( event.target ).parents().each( function() { + if ( $.data( this, that.widgetName + "-item" ) === that ) { + currentItem = $( this ); return false; } - }); - if($.data(event.target, that.widgetName + "-item") === that) { - currentItem = $(event.target); + } ); + if ( $.data( event.target, that.widgetName + "-item" ) === that ) { + currentItem = $( event.target ); } - if(!currentItem) { + if ( !currentItem ) { return false; } - if(this.options.handle && !overrideHandle) { - $(this.options.handle, currentItem).find("*").addBack().each(function() { - if(this === event.target) { + if ( this.options.handle && !overrideHandle ) { + $( this.options.handle, currentItem ).find( "*" ).addBack().each( function() { + if ( this === event.target ) { validHandle = true; } - }); - if(!validHandle) { + } ); + if ( !validHandle ) { return false; } } @@ -183,7 +183,7 @@ return $.widget("ui.sortable", $.ui.mouse, { }, - _mouseStart: function(event, overrideHandle, noActivation) { + _mouseStart: function( event, overrideHandle, noActivation ) { var i, body, o = this.options; @@ -194,7 +194,7 @@ return $.widget("ui.sortable", $.ui.mouse, { this.refreshPositions(); //Create and append the visible helper - this.helper = this._createHelper(event); + this.helper = this._createHelper( event ); //Cache the helper size this._cacheHelperProportions(); @@ -217,33 +217,33 @@ return $.widget("ui.sortable", $.ui.mouse, { left: this.offset.left - this.margins.left }; - $.extend(this.offset, { + $.extend( this.offset, { click: { //Where the click happened, relative to the element left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper - }); + } ); // Only after we got the offset, we can change the helper's position to absolute // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css("position", "absolute"); - this.cssPosition = this.helper.css("position"); + this.helper.css( "position", "absolute" ); + this.cssPosition = this.helper.css( "position" ); //Generate the original position - this.originalPosition = this._generatePosition(event); + this.originalPosition = this._generatePosition( event ); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied - (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); + ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) ); //Cache the former DOM position - this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; + this.domPosition = { prev: this.currentItem.prev()[ 0 ], parent: this.currentItem.parent()[ 0 ] }; //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way - if(this.helper[0] !== this.currentItem[0]) { + if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { this.currentItem.hide(); } @@ -251,141 +251,140 @@ return $.widget("ui.sortable", $.ui.mouse, { this._createPlaceholder(); //Set a containment if given in the options - if(o.containment) { + if ( o.containment ) { this._setContainment(); } - if( o.cursor && o.cursor !== "auto" ) { // cursor option + if ( o.cursor && o.cursor !== "auto" ) { // cursor option body = this.document.find( "body" ); // Support: IE this.storedCursor = body.css( "cursor" ); body.css( "cursor", o.cursor ); - this.storedStylesheet = $( "" ).appendTo( body ); + this.storedStylesheet = $( "" ).appendTo( body ); } - if(o.opacity) { // opacity option - if (this.helper.css("opacity")) { - this._storedOpacity = this.helper.css("opacity"); + if ( o.opacity ) { // opacity option + if ( this.helper.css( "opacity" ) ) { + this._storedOpacity = this.helper.css( "opacity" ); } - this.helper.css("opacity", o.opacity); + this.helper.css( "opacity", o.opacity ); } - if(o.zIndex) { // zIndex option - if (this.helper.css("zIndex")) { - this._storedZIndex = this.helper.css("zIndex"); + if ( o.zIndex ) { // zIndex option + if ( this.helper.css( "zIndex" ) ) { + this._storedZIndex = this.helper.css( "zIndex" ); } - this.helper.css("zIndex", o.zIndex); + this.helper.css( "zIndex", o.zIndex ); } //Prepare scrolling - if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") { + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ].tagName !== "HTML" ) { this.overflowOffset = this.scrollParent.offset(); } //Call callbacks - this._trigger("start", event, this._uiHash()); + this._trigger( "start", event, this._uiHash() ); //Recache the helper size - if(!this._preserveHelperProportions) { + if ( !this._preserveHelperProportions ) { this._cacheHelperProportions(); } - //Post "activate" events to possible containers - if( !noActivation ) { + if ( !noActivation ) { for ( i = this.containers.length - 1; i >= 0; i-- ) { this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); } } //Prepare possible droppables - if($.ui.ddmanager) { + if ( $.ui.ddmanager ) { $.ui.ddmanager.current = this; } - if ($.ui.ddmanager && !o.dropBehaviour) { - $.ui.ddmanager.prepareOffsets(this, event); + if ( $.ui.ddmanager && !o.dropBehaviour ) { + $.ui.ddmanager.prepareOffsets( this, event ); } this.dragging = true; this._addClass( this.helper, "ui-sortable-helper" ); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position + this._mouseDrag( event ); //Execute the drag once - this causes the helper not to be visible before getting its correct position return true; }, - _mouseDrag: function(event) { + _mouseDrag: function( event ) { var i, item, itemElement, intersection, o = this.options, scrolled = false; //Compute the helpers position - this.position = this._generatePosition(event); - this.positionAbs = this._convertPositionTo("absolute"); + this.position = this._generatePosition( event ); + this.positionAbs = this._convertPositionTo( "absolute" ); - if (!this.lastPositionAbs) { + if ( !this.lastPositionAbs ) { this.lastPositionAbs = this.positionAbs; } //Do scrolling - if(this.options.scroll) { - if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") { + if ( this.options.scroll ) { + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ].tagName !== "HTML" ) { - if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; - } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { - this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) - event.pageY < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollTop = scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed; + } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollTop = scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed; } - if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; - } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { - this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) - event.pageX < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollLeft = scrolled = this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed; + } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollLeft = scrolled = this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed; } } else { - if(event.pageY - this.document.scrollTop() < o.scrollSensitivity) { - scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed); - } else if(this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) { - scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed); + if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) { + scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed ); + } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) < o.scrollSensitivity ) { + scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed ); } - if(event.pageX - this.document.scrollLeft() < o.scrollSensitivity) { - scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed); - } else if(this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) { - scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed); + if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) { + scrolled = this.document.scrollLeft( this.document.scrollLeft() - o.scrollSpeed ); + } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) < o.scrollSensitivity ) { + scrolled = this.document.scrollLeft( this.document.scrollLeft() + o.scrollSpeed ); } } - if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { - $.ui.ddmanager.prepareOffsets(this, event); + if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) { + $.ui.ddmanager.prepareOffsets( this, event ); } } //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo("absolute"); + this.positionAbs = this._convertPositionTo( "absolute" ); //Set the helper position - if(!this.options.axis || this.options.axis !== "y") { - this.helper[0].style.left = this.position.left+"px"; + if ( !this.options.axis || this.options.axis !== "y" ) { + this.helper[ 0 ].style.left = this.position.left + "px"; } - if(!this.options.axis || this.options.axis !== "x") { - this.helper[0].style.top = this.position.top+"px"; + if ( !this.options.axis || this.options.axis !== "x" ) { + this.helper[ 0 ].style.top = this.position.top + "px"; } //Rearrange - for (i = this.items.length - 1; i >= 0; i--) { + for ( i = this.items.length - 1; i >= 0; i-- ) { //Cache variables and intersection, continue if no intersection - item = this.items[i]; - itemElement = item.item[0]; - intersection = this._intersectsWithPointer(item); - if (!intersection) { + item = this.items[ i ]; + itemElement = item.item[ 0 ]; + intersection = this._intersectsWithPointer( item ); + if ( !intersection ) { continue; } @@ -396,77 +395,77 @@ return $.widget("ui.sortable", $.ui.mouse, { // // Without this, moving items in "sub-sortables" can cause // the placeholder to jitter between the outer and inner container. - if (item.instance !== this.currentContainer) { + if ( item.instance !== this.currentContainer ) { continue; } // Cannot intersect with itself // no useless actions that have been done before // no action if the item moved is the parent of the item checked - if (itemElement !== this.currentItem[0] && - this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && - !$.contains(this.placeholder[0], itemElement) && - (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) + if ( itemElement !== this.currentItem[ 0 ] && + this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement && + !$.contains( this.placeholder[ 0 ], itemElement ) && + ( this.options.type === "semi-dynamic" ? !$.contains( this.element[ 0 ], itemElement ) : true ) ) { this.direction = intersection === 1 ? "down" : "up"; - if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { - this._rearrange(event, item); + if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) { + this._rearrange( event, item ); } else { break; } - this._trigger("change", event, this._uiHash()); + this._trigger( "change", event, this._uiHash() ); break; } } //Post events to containers - this._contactContainers(event); + this._contactContainers( event ); //Interconnect with droppables - if($.ui.ddmanager) { - $.ui.ddmanager.drag(this, event); + if ( $.ui.ddmanager ) { + $.ui.ddmanager.drag( this, event ); } //Call callbacks - this._trigger("sort", event, this._uiHash()); + this._trigger( "sort", event, this._uiHash() ); this.lastPositionAbs = this.positionAbs; return false; }, - _mouseStop: function(event, noPropagation) { + _mouseStop: function( event, noPropagation ) { - if(!event) { + if ( !event ) { return; } //If we are using droppables, inform the manager about the drop - if ($.ui.ddmanager && !this.options.dropBehaviour) { - $.ui.ddmanager.drop(this, event); + if ( $.ui.ddmanager && !this.options.dropBehaviour ) { + $.ui.ddmanager.drop( this, event ); } - if(this.options.revert) { + if ( this.options.revert ) { var that = this, cur = this.placeholder.offset(), axis = this.options.axis, animation = {}; if ( !axis || axis === "x" ) { - animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft); + animation.left = cur.left - this.offset.parent.left - this.margins.left + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollLeft ); } if ( !axis || axis === "y" ) { - animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop); + animation.top = cur.top - this.offset.parent.top - this.margins.top + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? 0 : this.offsetParent[ 0 ].scrollTop ); } this.reverting = true; - $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { - that._clear(event); - }); + $( this.helper ).animate( animation, parseInt( this.options.revert, 10 ) || 500, function() { + that._clear( event ); + } ); } else { - this._clear(event, noPropagation); + this._clear( event, noPropagation ); } return false; @@ -475,11 +474,11 @@ return $.widget("ui.sortable", $.ui.mouse, { cancel: function() { - if(this.dragging) { + if ( this.dragging ) { - this._mouseUp({ target: null }); + this._mouseUp( { target: null } ); - if(this.options.helper === "original") { + if ( this.options.helper === "original" ) { this.currentItem.css( this._storedCSS ); this._removeClass( this.currentItem, "ui-sortable-helper" ); } else { @@ -487,36 +486,37 @@ return $.widget("ui.sortable", $.ui.mouse, { } //Post deactivating events to containers - for (var i = this.containers.length - 1; i >= 0; i--){ - this.containers[i]._trigger("deactivate", null, this._uiHash(this)); - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", null, this._uiHash(this)); - this.containers[i].containerCache.over = 0; + for ( var i = this.containers.length - 1; i >= 0; i-- ) { + this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) ); + if ( this.containers[ i ].containerCache.over ) { + this.containers[ i ]._trigger( "out", null, this._uiHash( this ) ); + this.containers[ i ].containerCache.over = 0; } } } - if (this.placeholder) { + if ( this.placeholder ) { + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - if(this.placeholder[0].parentNode) { - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + if ( this.placeholder[ 0 ].parentNode ) { + this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); } - if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { + if ( this.options.helper !== "original" && this.helper && this.helper[ 0 ].parentNode ) { this.helper.remove(); } - $.extend(this, { + $.extend( this, { helper: null, dragging: false, reverting: false, _noFinalSort: null - }); + } ); - if(this.domPosition.prev) { - $(this.domPosition.prev).after(this.currentItem); + if ( this.domPosition.prev ) { + $( this.domPosition.prev ).after( this.currentItem ); } else { - $(this.domPosition.parent).prepend(this.currentItem); + $( this.domPosition.parent ).prepend( this.currentItem ); } } @@ -524,41 +524,41 @@ return $.widget("ui.sortable", $.ui.mouse, { }, - serialize: function(o) { + serialize: function( o ) { - var items = this._getItemsAsjQuery(o && o.connected), + var items = this._getItemsAsjQuery( o && o.connected ), str = []; o = o || {}; - $(items).each(function() { - var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); - if (res) { - str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); + $( items ).each( function() { + var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" ).match( o.expression || ( /(.+)[\-=_](.+)/ ) ); + if ( res ) { + str.push( ( o.key || res[ 1 ] + "[]" ) + "=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) ); } - }); + } ); - if(!str.length && o.key) { - str.push(o.key + "="); + if ( !str.length && o.key ) { + str.push( o.key + "=" ); } - return str.join("&"); + return str.join( "&" ); }, - toArray: function(o) { + toArray: function( o ) { - var items = this._getItemsAsjQuery(o && o.connected), + var items = this._getItemsAsjQuery( o && o.connected ), ret = []; o = o || {}; - items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); + items.each( function() { ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" ); } ); return ret; }, /* Be careful with the following core functions */ - _intersectsWith: function(item) { + _intersectsWith: function( item ) { var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, @@ -576,27 +576,27 @@ return $.widget("ui.sortable", $.ui.mouse, { if ( this.options.tolerance === "pointer" || this.options.forcePointerForContainers || - (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) + ( this.options.tolerance !== "pointer" && this.helperProportions[ this.floating ? "width" : "height" ] > item[ this.floating ? "width" : "height" ] ) ) { return isOverElement; } else { - return (l < x1 + (this.helperProportions.width / 2) && // Right Half - x2 - (this.helperProportions.width / 2) < r && // Left Half - t < y1 + (this.helperProportions.height / 2) && // Bottom Half - y2 - (this.helperProportions.height / 2) < b ); // Top Half + return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half + x2 - ( this.helperProportions.width / 2 ) < r && // Left Half + t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half + y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half } }, - _intersectsWithPointer: function(item) { + _intersectsWithPointer: function( item ) { var verticalDirection, horizontalDirection, - isOverElementHeight = (this.options.axis === "x") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), - isOverElementWidth = (this.options.axis === "y") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), + isOverElementHeight = ( this.options.axis === "x" ) || this._isOverAxis( this.positionAbs.top + this.offset.click.top, item.top, item.height ), + isOverElementWidth = ( this.options.axis === "y" ) || this._isOverAxis( this.positionAbs.left + this.offset.click.left, item.left, item.width ), isOverElement = isOverElementHeight && isOverElementWidth; - if (!isOverElement) { + if ( !isOverElement ) { return false; } @@ -604,38 +604,38 @@ return $.widget("ui.sortable", $.ui.mouse, { horizontalDirection = this._getDragHorizontalDirection(); return this.floating ? - ( (horizontalDirection === "right" || verticalDirection === "down") ? 2 : 1 ) - : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); + ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) + : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) ); }, - _intersectsWithSides: function(item) { + _intersectsWithSides: function( item ) { - var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), - isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), + var isOverBottomHalf = this._isOverAxis( this.positionAbs.top + this.offset.click.top, item.top + ( item.height / 2 ), item.height ), + isOverRightHalf = this._isOverAxis( this.positionAbs.left + this.offset.click.left, item.left + ( item.width / 2 ), item.width ), verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); - if (this.floating && horizontalDirection) { - return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); + if ( this.floating && horizontalDirection ) { + return ( ( horizontalDirection === "right" && isOverRightHalf ) || ( horizontalDirection === "left" && !isOverRightHalf ) ); } else { - return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); + return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) || ( verticalDirection === "up" && !isOverBottomHalf ) ); } }, _getDragVerticalDirection: function() { var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta !== 0 && (delta > 0 ? "down" : "up"); + return delta !== 0 && ( delta > 0 ? "down" : "up" ); }, _getDragHorizontalDirection: function() { var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta !== 0 && (delta > 0 ? "right" : "left"); + return delta !== 0 && ( delta > 0 ? "right" : "left" ); }, - refresh: function(event) { - this._refreshItems(event); + refresh: function( event ) { + this._refreshItems( event ); this._setHandleClassName(); this.refreshPositions(); return this; @@ -643,100 +643,100 @@ return $.widget("ui.sortable", $.ui.mouse, { _connectWith: function() { var options = this.options; - return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; + return options.connectWith.constructor === String ? [ options.connectWith ] : options.connectWith; }, - _getItemsAsjQuery: function(connected) { + _getItemsAsjQuery: function( connected ) { var i, j, cur, inst, items = [], queries = [], connectWith = this._connectWith(); - if(connectWith && connected) { - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i], this.document[0]); - for ( j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); + if ( connectWith && connected ) { + for ( i = connectWith.length - 1; i >= 0; i-- ) { + cur = $( connectWith[ i ], this.document[ 0 ] ); + for ( j = cur.length - 1; j >= 0; j-- ) { + inst = $.data( cur[ j ], this.widgetFullName ); + if ( inst && inst !== this && !inst.options.disabled ) { + queries.push( [ $.isFunction( inst.options.items ) ? inst.options.items.call( inst.element ) : $( inst.options.items, inst.element ).not( ".ui-sortable-helper" ).not( ".ui-sortable-placeholder" ), inst ] ); } } } } - queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); + queries.push( [ $.isFunction( this.options.items ) ? this.options.items.call( this.element, null, { options: this.options, item: this.currentItem } ) : $( this.options.items, this.element ).not( ".ui-sortable-helper" ).not( ".ui-sortable-placeholder" ), this ] ); function addItems() { items.push( this ); } - for (i = queries.length - 1; i >= 0; i--){ - queries[i][0].each( addItems ); + for ( i = queries.length - 1; i >= 0; i-- ) { + queries[ i ][ 0 ].each( addItems ); } - return $(items); + return $( items ); }, _removeCurrentsFromItems: function() { - var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); + var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" ); - this.items = $.grep(this.items, function (item) { - for (var j=0; j < list.length; j++) { - if(list[j] === item.item[0]) { + this.items = $.grep( this.items, function( item ) { + for ( var j = 0; j < list.length; j++ ) { + if ( list[ j ] === item.item[ 0 ] ) { return false; } } return true; - }); + } ); }, - _refreshItems: function(event) { + _refreshItems: function( event ) { this.items = []; - this.containers = [this]; + this.containers = [ this ]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items, - queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], + queries = [ [ $.isFunction( this.options.items ) ? this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) : $( this.options.items, this.element ), this ] ], connectWith = this._connectWith(); - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - for (i = connectWith.length - 1; i >= 0; i--){ - cur = $(connectWith[i], this.document[0]); - for (j = cur.length - 1; j >= 0; j--){ - inst = $.data(cur[j], this.widgetFullName); - if(inst && inst !== this && !inst.options.disabled) { - queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); - this.containers.push(inst); + if ( connectWith && this.ready ) { //Shouldn't be run the first time through due to massive slow-down + for ( i = connectWith.length - 1; i >= 0; i-- ) { + cur = $( connectWith[ i ], this.document[ 0 ] ); + for ( j = cur.length - 1; j >= 0; j-- ) { + inst = $.data( cur[ j ], this.widgetFullName ); + if ( inst && inst !== this && !inst.options.disabled ) { + queries.push( [ $.isFunction( inst.options.items ) ? inst.options.items.call( inst.element[ 0 ], event, { item: this.currentItem } ) : $( inst.options.items, inst.element ), inst ] ); + this.containers.push( inst ); } } } } - for (i = queries.length - 1; i >= 0; i--) { - targetData = queries[i][1]; - _queries = queries[i][0]; + for ( i = queries.length - 1; i >= 0; i-- ) { + targetData = queries[ i ][ 1 ]; + _queries = queries[ i ][ 0 ]; - for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { - item = $(_queries[j]); + for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) { + item = $( _queries[ j ] ); - item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) + item.data( this.widgetName + "-item", targetData ); // Data for target checking (mouse manager) - items.push({ + items.push( { item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 - }); + } ); } } }, - refreshPositions: function(fast) { + refreshPositions: function( fast ) { // Determine whether items are being displayed horizontally this.floating = this.items.length ? @@ -744,23 +744,23 @@ return $.widget("ui.sortable", $.ui.mouse, { false; //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change - if(this.offsetParent && this.helper) { + if ( this.offsetParent && this.helper ) { this.offset.parent = this._getParentOffset(); } var i, item, t, p; - for (i = this.items.length - 1; i >= 0; i--){ - item = this.items[i]; + for ( i = this.items.length - 1; i >= 0; i-- ) { + item = this.items[ i ]; //We ignore calculating positions of all connected containers when we're not over them - if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { + if ( item.instance !== this.currentContainer && this.currentContainer && item.item[ 0 ] !== this.currentItem[ 0 ] ) { continue; } - t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; + t = this.options.toleranceElement ? $( this.options.toleranceElement, item.item ) : item.item; - if (!fast) { + if ( !fast ) { item.width = t.outerWidth(); item.height = t.outerHeight(); } @@ -770,33 +770,33 @@ return $.widget("ui.sortable", $.ui.mouse, { item.top = p.top; } - if(this.options.custom && this.options.custom.refreshContainers) { - this.options.custom.refreshContainers.call(this); + if ( this.options.custom && this.options.custom.refreshContainers ) { + this.options.custom.refreshContainers.call( this ); } else { - for (i = this.containers.length - 1; i >= 0; i--){ - p = this.containers[i].element.offset(); - this.containers[i].containerCache.left = p.left; - this.containers[i].containerCache.top = p.top; - this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); - this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); + for ( i = this.containers.length - 1; i >= 0; i-- ) { + p = this.containers[ i ].element.offset(); + this.containers[ i ].containerCache.left = p.left; + this.containers[ i ].containerCache.top = p.top; + this.containers[ i ].containerCache.width = this.containers[ i ].element.outerWidth(); + this.containers[ i ].containerCache.height = this.containers[ i ].element.outerHeight(); } } return this; }, - _createPlaceholder: function(that) { + _createPlaceholder: function( that ) { that = that || this; var className, o = that.options; - if(!o.placeholder || o.placeholder.constructor === String) { + if ( !o.placeholder || o.placeholder.constructor === String ) { className = o.placeholder; o.placeholder = { element: function() { - var nodeName = that.currentItem[0].nodeName.toLowerCase(), - element = $( "<" + nodeName + ">", that.document[0] ); + var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(), + element = $( "<" + nodeName + ">", that.document[ 0 ] ); that._addClass( element, "ui-sortable-placeholder", className || that.currentItem[ 0 ].className ) @@ -819,105 +819,106 @@ return $.widget("ui.sortable", $.ui.mouse, { return element; }, - update: function(container, p) { + update: function( container, p ) { // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified - if(className && !o.forcePlaceholderSize) { + if ( className && !o.forcePlaceholderSize ) { return; } //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item - if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } - if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } + if ( !p.height() ) { p.height( that.currentItem.innerHeight() - parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) - parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) ); } + if ( !p.width() ) { p.width( that.currentItem.innerWidth() - parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) - parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) ); } } }; } //Create the placeholder - that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); + that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) ); //Append it after the actual current item - that.currentItem.after(that.placeholder); + that.currentItem.after( that.placeholder ); //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update(that, that.placeholder); + o.placeholder.update( that, that.placeholder ); }, _createTrPlaceholder: function( sourceTr, targetTr ) { var that = this; - sourceTr.children().each(function() { + sourceTr.children().each( function() { $( " ", that.document[ 0 ] ) .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) .appendTo( targetTr ); - }); + } ); }, - _contactContainers: function(event) { + _contactContainers: function( event ) { var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer = null, innermostIndex = null; // Get innermost container that intersects with item - for (i = this.containers.length - 1; i >= 0; i--) { + for ( i = this.containers.length - 1; i >= 0; i-- ) { // Never consider a container that's located within the item itself - if($.contains(this.currentItem[0], this.containers[i].element[0])) { + if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) { continue; } - if(this._intersectsWith(this.containers[i].containerCache)) { + if ( this._intersectsWith( this.containers[ i ].containerCache ) ) { // If we've already found a container and it's more "inner" than this, then continue - if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { + if ( innermostContainer && $.contains( this.containers[ i ].element[ 0 ], innermostContainer.element[ 0 ] ) ) { continue; } - innermostContainer = this.containers[i]; + innermostContainer = this.containers[ i ]; innermostIndex = i; } else { + // container doesn't intersect. trigger "out" event if necessary - if(this.containers[i].containerCache.over) { - this.containers[i]._trigger("out", event, this._uiHash(this)); - this.containers[i].containerCache.over = 0; + if ( this.containers[ i ].containerCache.over ) { + this.containers[ i ]._trigger( "out", event, this._uiHash( this ) ); + this.containers[ i ].containerCache.over = 0; } } } // If no intersecting containers found, return - if(!innermostContainer) { + if ( !innermostContainer ) { return; } // Move the item into the container if it's not there already - if(this.containers.length === 1) { - if (!this.containers[innermostIndex].containerCache.over) { - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; + if ( this.containers.length === 1 ) { + if ( !this.containers[ innermostIndex ].containerCache.over ) { + this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); + this.containers[ innermostIndex ].containerCache.over = 1; } } else { //When entering a new container, we will find the item with the least distance and append our item near it dist = 10000; itemWithLeastDistance = null; - floating = innermostContainer.floating || this._isFloating(this.currentItem); + floating = innermostContainer.floating || this._isFloating( this.currentItem ); posProperty = floating ? "left" : "top"; sizeProperty = floating ? "width" : "height"; axis = floating ? "clientX" : "clientY"; - for (j = this.items.length - 1; j >= 0; j--) { - if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { + for ( j = this.items.length - 1; j >= 0; j-- ) { + if ( !$.contains( this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] ) ) { continue; } - if(this.items[j].item[0] === this.currentItem[0]) { + if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) { continue; } - cur = this.items[j].item.offset()[posProperty]; + cur = this.items[ j ].item.offset()[ posProperty ]; nearBottom = false; if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) { nearBottom = true; @@ -926,16 +927,16 @@ return $.widget("ui.sortable", $.ui.mouse, { if ( Math.abs( event[ axis ] - cur ) < dist ) { dist = Math.abs( event[ axis ] - cur ); itemWithLeastDistance = this.items[ j ]; - this.direction = nearBottom ? "up": "down"; + this.direction = nearBottom ? "up" : "down"; } } //Check if dropOnEmpty is enabled - if(!itemWithLeastDistance && !this.options.dropOnEmpty) { + if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) { return; } - if(this.currentContainer === this.containers[innermostIndex]) { + if ( this.currentContainer === this.containers[ innermostIndex ] ) { if ( !this.currentContainer.containerCache.over ) { this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() ); this.currentContainer.containerCache.over = 1; @@ -943,70 +944,68 @@ return $.widget("ui.sortable", $.ui.mouse, { return; } - itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); - this._trigger("change", event, this._uiHash()); - this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); - this.currentContainer = this.containers[innermostIndex]; + itemWithLeastDistance ? this._rearrange( event, itemWithLeastDistance, null, true ) : this._rearrange( event, null, this.containers[ innermostIndex ].element, true ); + this._trigger( "change", event, this._uiHash() ); + this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) ); + this.currentContainer = this.containers[ innermostIndex ]; //Update the placeholder - this.options.placeholder.update(this.currentContainer, this.placeholder); + this.options.placeholder.update( this.currentContainer, this.placeholder ); - this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); - this.containers[innermostIndex].containerCache.over = 1; + this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); + this.containers[ innermostIndex ].containerCache.over = 1; } - }, - _createHelper: function(event) { + _createHelper: function( event ) { var o = this.options, - helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); + helper = $.isFunction( o.helper ) ? $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) : ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem ); //Add the helper to the DOM if that didn't happen already - if(!helper.parents("body").length) { - $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); + if ( !helper.parents( "body" ).length ) { + $( o.appendTo !== "parent" ? o.appendTo : this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] ); } - if(helper[0] === this.currentItem[0]) { - this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; + if ( helper[ 0 ] === this.currentItem[ 0 ] ) { + this._storedCSS = { width: this.currentItem[ 0 ].style.width, height: this.currentItem[ 0 ].style.height, position: this.currentItem.css( "position" ), top: this.currentItem.css( "top" ), left: this.currentItem.css( "left" ) }; } - if(!helper[0].style.width || o.forceHelperSize) { - helper.width(this.currentItem.width()); + if ( !helper[ 0 ].style.width || o.forceHelperSize ) { + helper.width( this.currentItem.width() ); } - if(!helper[0].style.height || o.forceHelperSize) { - helper.height(this.currentItem.height()); + if ( !helper[ 0 ].style.height || o.forceHelperSize ) { + helper.height( this.currentItem.height() ); } return helper; }, - _adjustOffsetFromHelper: function(obj) { - if (typeof obj === "string") { - obj = obj.split(" "); + _adjustOffsetFromHelper: function( obj ) { + if ( typeof obj === "string" ) { + obj = obj.split( " " ); } - if ($.isArray(obj)) { - obj = {left: +obj[0], top: +obj[1] || 0}; + if ( $.isArray( obj ) ) { + obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; } - if ("left" in obj) { + if ( "left" in obj ) { this.offset.click.left = obj.left + this.margins.left; } - if ("right" in obj) { + if ( "right" in obj ) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } - if ("top" in obj) { + if ( "top" in obj ) { this.offset.click.top = obj.top + this.margins.top; } - if ("bottom" in obj) { + if ( "bottom" in obj ) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _getParentOffset: function() { - //Get the offsetParent and cache its position this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); @@ -1015,31 +1014,31 @@ return $.widget("ui.sortable", $.ui.mouse, { // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag - if(this.cssPosition === "absolute" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) { + if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } // This needs to be actually done for all browsers, since pageX/pageY includes this information // with an ugly IE fix - if( this.offsetParent[0] === this.document[0].body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + if ( this.offsetParent[ 0 ] === this.document[ 0 ].body || ( this.offsetParent[ 0 ].tagName && this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) { po = { top: 0, left: 0 }; } return { - top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), - left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ), + left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 ) }; }, _getRelativeOffset: function() { - if(this.cssPosition === "relative") { + if ( this.cssPosition === "relative" ) { var p = this.currentItem.position(); return { - top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), - left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) + this.scrollParent.scrollTop(), + left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) + this.scrollParent.scrollLeft() }; } else { return { top: 0, left: 0 }; @@ -1049,8 +1048,8 @@ return $.widget("ui.sortable", $.ui.mouse, { _cacheMargins: function() { this.margins = { - left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), - top: (parseInt(this.currentItem.css("marginTop"),10) || 0) + left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ), + top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 ) }; }, @@ -1065,72 +1064,72 @@ return $.widget("ui.sortable", $.ui.mouse, { var ce, co, over, o = this.options; - if(o.containment === "parent") { - o.containment = this.helper[0].parentNode; + if ( o.containment === "parent" ) { + o.containment = this.helper[ 0 ].parentNode; } - if(o.containment === "document" || o.containment === "window") { + if ( o.containment === "document" || o.containment === "window" ) { this.containment = [ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, - (o.containment === "document" ? this.document.width() : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ( o.containment === "document" ? this.document.width() : this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; } - if(!(/^(document|window|parent)$/).test(o.containment)) { - ce = $(o.containment)[0]; - co = $(o.containment).offset(); - over = ($(ce).css("overflow") !== "hidden"); + if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) { + ce = $( o.containment )[ 0 ]; + co = $( o.containment ).offset(); + over = ( $( ce ).css( "overflow" ) !== "hidden" ); this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top + co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left, + co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top, + co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) - ( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left, + co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) - ( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top ]; } }, - _convertPositionTo: function(d, pos) { + _convertPositionTo: function( d, pos ) { - if(!pos) { + if ( !pos ) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, - scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, - scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, + scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); return { top: ( pos.top + // The absolute mouse position this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod ) ), left: ( pos.left + // The absolute mouse position this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod ) ) }; }, - _generatePosition: function(event) { + _generatePosition: function( event ) { var top, left, o = this.options, pageX = event.pageX, pageY = event.pageY, - scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + scroll = this.cssPosition === "absolute" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? this.offsetParent : this.scrollParent, scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); // This is another very weird special case that only happens for relative elements: // 1. If the css position is relative // 2. and the scroll parent is the document or similar to the offset parent // we have to refresh the relative offset during the scroll so there are no jumps - if(this.cssPosition === "relative" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) { + if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) { this.offset.relative = this._getRelativeOffset(); } @@ -1139,29 +1138,29 @@ return $.widget("ui.sortable", $.ui.mouse, { * Constrain the position to a mix of grid, containment. */ - if(this.originalPosition) { //If we are not dragging yet, we won't check for options + if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) { - pageX = this.containment[0] + this.offset.click.left; + if ( this.containment ) { + if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) { + pageX = this.containment[ 0 ] + this.offset.click.left; } - if(event.pageY - this.offset.click.top < this.containment[1]) { - pageY = this.containment[1] + this.offset.click.top; + if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) { + pageY = this.containment[ 1 ] + this.offset.click.top; } - if(event.pageX - this.offset.click.left > this.containment[2]) { - pageX = this.containment[2] + this.offset.click.left; + if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) { + pageX = this.containment[ 2 ] + this.offset.click.left; } - if(event.pageY - this.offset.click.top > this.containment[3]) { - pageY = this.containment[3] + this.offset.click.top; + if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) { + pageY = this.containment[ 3 ] + this.offset.click.top; } } - if(o.grid) { - top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + if ( o.grid ) { + top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ]; + pageY = this.containment ? ( ( top - this.offset.click.top >= this.containment[ 1 ] && top - this.offset.click.top <= this.containment[ 3 ] ) ? top : ( ( top - this.offset.click.top >= this.containment[ 1 ] ) ? top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top; - left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ]; + pageX = this.containment ? ( ( left - this.offset.click.left >= this.containment[ 0 ] && left - this.offset.click.left <= this.containment[ 2 ] ) ? left : ( ( left - this.offset.click.left >= this.containment[ 0 ] ) ? left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left; } } @@ -1172,22 +1171,22 @@ return $.widget("ui.sortable", $.ui.mouse, { this.offset.click.top - // Click offset (relative to the element) this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top + // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) ) ), left: ( pageX - // The absolute mouse position this.offset.click.left - // Click offset (relative to the element) this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left + // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) ) ) }; }, - _rearrange: function(event, i, a, hardRefresh) { + _rearrange: function( event, i, a, hardRefresh ) { - a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); + a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) : i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ], ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) ); //Various things done here to improve the performance: // 1. we create a setTimeout, that calls refreshPositions @@ -1197,17 +1196,18 @@ return $.widget("ui.sortable", $.ui.mouse, { this.counter = this.counter ? ++this.counter : 1; var counter = this.counter; - this._delay(function() { - if(counter === this.counter) { - this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + this._delay( function() { + if ( counter === this.counter ) { + this.refreshPositions( !hardRefresh ); //Precompute after each DOM insertion, NOT on mousemove } - }); + } ); }, - _clear: function(event, noPropagation) { + _clear: function( event, noPropagation ) { this.reverting = false; + // We delay all events that have to be triggered to after the point where the placeholder has been removed and // everything else normalized again var i, @@ -1215,15 +1215,15 @@ return $.widget("ui.sortable", $.ui.mouse, { // We first have to update the dom position of the actual currentItem // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem.parent().length) { - this.placeholder.before(this.currentItem); + if ( !this._noFinalSort && this.currentItem.parent().length ) { + this.placeholder.before( this.currentItem ); } this._noFinalSort = null; - if(this.helper[0] === this.currentItem[0]) { - for(i in this._storedCSS) { - if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { - this._storedCSS[i] = ""; + if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) { + for ( i in this._storedCSS ) { + if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) { + this._storedCSS[ i ] = ""; } } this.currentItem.css( this._storedCSS ); @@ -1232,37 +1232,36 @@ return $.widget("ui.sortable", $.ui.mouse, { this.currentItem.show(); } - if(this.fromOutside && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); + if ( this.fromOutside && !noPropagation ) { + delayedTriggers.push( function( event ) { this._trigger( "receive", event, this._uiHash( this.fromOutside ) ); } ); } - if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { - delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed + if ( ( this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] || this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) { + delayedTriggers.push( function( event ) { this._trigger( "update", event, this._uiHash() ); } ); //Trigger update callback if the DOM position has changed } // Check if the items Container has Changed and trigger appropriate // events. - if (this !== this.currentContainer) { - if(!noPropagation) { - delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); - delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); - delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + if ( this !== this.currentContainer ) { + if ( !noPropagation ) { + delayedTriggers.push( function( event ) { this._trigger( "remove", event, this._uiHash() ); } ); + delayedTriggers.push( ( function( c ) { return function( event ) { c._trigger( "receive", event, this._uiHash( this ) ); }; } ).call( this, this.currentContainer ) ); + delayedTriggers.push( ( function( c ) { return function( event ) { c._trigger( "update", event, this._uiHash( this ) ); }; } ).call( this, this.currentContainer ) ); } } - //Post events to containers function delayEvent( type, instance, container ) { return function( event ) { container._trigger( type, event, instance._uiHash( instance ) ); }; } - for (i = this.containers.length - 1; i >= 0; i--){ - if (!noPropagation) { + for ( i = this.containers.length - 1; i >= 0; i-- ) { + if ( !noPropagation ) { delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); } - if(this.containers[i].containerCache.over) { + if ( this.containers[ i ].containerCache.over ) { delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); - this.containers[i].containerCache.over = 0; + this.containers[ i ].containerCache.over = 0; } } @@ -1271,21 +1270,21 @@ return $.widget("ui.sortable", $.ui.mouse, { this.document.find( "body" ).css( "cursor", this.storedCursor ); this.storedStylesheet.remove(); } - if(this._storedOpacity) { - this.helper.css("opacity", this._storedOpacity); + if ( this._storedOpacity ) { + this.helper.css( "opacity", this._storedOpacity ); } - if(this._storedZIndex) { - this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); + if ( this._storedZIndex ) { + this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex ); } this.dragging = false; - if(!noPropagation) { - this._trigger("beforeStop", event, this._uiHash()); + if ( !noPropagation ) { + this._trigger( "beforeStop", event, this._uiHash() ); } //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! - this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); if ( !this.cancelHelperRemoval ) { if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { @@ -1294,11 +1293,11 @@ return $.widget("ui.sortable", $.ui.mouse, { this.helper = null; } - if(!noPropagation) { - for (i=0; i < delayedTriggers.length; i++) { - delayedTriggers[i].call(this, event); + if ( !noPropagation ) { + for ( i = 0; i < delayedTriggers.length; i++ ) { + delayedTriggers[ i ].call( this, event ); } //Trigger all delayed events - this._trigger("stop", event, this._uiHash()); + this._trigger( "stop", event, this._uiHash() ); } this.fromOutside = false; @@ -1307,16 +1306,16 @@ return $.widget("ui.sortable", $.ui.mouse, { }, _trigger: function() { - if ($.Widget.prototype._trigger.apply(this, arguments) === false) { + if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) { this.cancel(); } }, - _uiHash: function(_inst) { + _uiHash: function( _inst ) { var inst = _inst || this; return { helper: inst.helper, - placeholder: inst.placeholder || $([]), + placeholder: inst.placeholder || $( [] ), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, @@ -1325,6 +1324,6 @@ return $.widget("ui.sortable", $.ui.mouse, { }; } -}); +} ); -})); +} ) );