mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Sortable: Redetermine floating flag when recalculating positions
This addresses a bug where users initialize empty sortable lists are add items dynamically. In this situation refresh() should recognize the position and orientation of the new items. Fixes #7498 Closes gh-1381
This commit is contained in:
parent
fb4124b7af
commit
f656aebe3f
@ -90,4 +90,39 @@ test( "disable", function() {
|
||||
equal( chainable, element, "disable is chainable" );
|
||||
});
|
||||
|
||||
test( "refresh() should update the positions of initially empty lists (see #7498)", function() {
|
||||
expect( 1 );
|
||||
|
||||
var changeCount = 0,
|
||||
element = $( "#qunit-fixture" ).html( "<ul></ul>" ).find( "ul" );
|
||||
|
||||
element
|
||||
.css({
|
||||
"float": "left",
|
||||
width: "100px"
|
||||
})
|
||||
.sortable({
|
||||
change: function() {
|
||||
changeCount++;
|
||||
}
|
||||
})
|
||||
.append( "<li>a</li><li>a</li>" )
|
||||
.find( "li" )
|
||||
.css({
|
||||
"float": "left",
|
||||
width: "50px",
|
||||
height: "50px"
|
||||
});
|
||||
|
||||
element.sortable( "refresh" );
|
||||
|
||||
// Switch the order of the two li elements
|
||||
element.find( "li" ).eq( 0 ).simulate( "drag", {
|
||||
dx: 55,
|
||||
moves: 15
|
||||
});
|
||||
|
||||
equal( changeCount, 1 );
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
@ -77,17 +77,12 @@ return $.widget("ui.sortable", $.ui.mouse, {
|
||||
},
|
||||
|
||||
_create: function() {
|
||||
|
||||
var o = this.options;
|
||||
this.containerCache = {};
|
||||
this.element.addClass("ui-sortable");
|
||||
|
||||
//Get the items
|
||||
this.refresh();
|
||||
|
||||
//Let's determine if the items are being displayed horizontally
|
||||
this.floating = this.items.length ? o.axis === "x" || this._isFloating(this.items[0].item) : false;
|
||||
|
||||
//Let's determine the parent's offset
|
||||
this.offset = this.element.offset();
|
||||
|
||||
@ -731,6 +726,11 @@ return $.widget("ui.sortable", $.ui.mouse, {
|
||||
|
||||
refreshPositions: function(fast) {
|
||||
|
||||
// Determine whether items are being displayed horizontally
|
||||
this.floating = this.items.length ?
|
||||
this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
|
||||
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) {
|
||||
this.offset.parent = this._getParentOffset();
|
||||
|
Loading…
Reference in New Issue
Block a user