Skip to content

Commit

Permalink
Sortable: Copy the cell structure when sorting a table row. Fixes #91…
Browse files Browse the repository at this point in the history
…85 - Sortable: Placeholder breaks table-layout: fixed.
  • Loading branch information
scottgonzalez committed Apr 2, 2013
1 parent 5217b97 commit 09b3533
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
3 changes: 3 additions & 0 deletions tests/unit/sortable/sortable.html
Expand Up @@ -44,6 +44,9 @@
border-width: 0; border-width: 0;
height:19px; height:19px;
} }
#sortable-table {
width: 100%;
}
</style> </style>
</head> </head>
<body> <body>
Expand Down
38 changes: 25 additions & 13 deletions tests/unit/sortable/sortable_options.js
Expand Up @@ -359,19 +359,31 @@ test( "{ placeholder: String }", function() {
}); });


test( "{ placholder: String } tr", function() { test( "{ placholder: String } tr", function() {
expect( 3 ); expect( 4 );


var element = $( "#sortable-table tbody" ).sortable({ var originalWidths,
placeholder: "test", element = $( "#sortable-table tbody" ).sortable({
start: function( event, ui ) { placeholder: "test",
ok( ui.placeholder.hasClass( "test" ), "placeholder has class" ); start: function( event, ui ) {
equal( ui.placeholder.children().length, 1, "placeholder tr contains a td" ); var currentWidths = otherRow.children().map(function() {
equal( ui.placeholder.children().html(), $( "<span>&#160;</span>" ).html(), return $( this ).width();
"placeholder td has content for forced dimensions" ); }).get();
} ok( ui.placeholder.hasClass( "test" ), "placeholder has class" );
}); deepEqual( currentWidths, originalWidths, "table cells maintian size" );

equal( ui.placeholder.children().length, dragRow.children().length,
element.find( "tr" ).eq( 0 ).simulate( "drag", { "placeholder has correct number of cells" );
equal( ui.placeholder.children().html(), $( "<span>&#160;</span>" ).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() {
return $( this ).width();
}).get();
dragRow.simulate( "drag", {
dy: 1 dy: 1
}); });
}); });
Expand Down
11 changes: 6 additions & 5 deletions ui/jquery.ui.sortable.js
Expand Up @@ -752,15 +752,16 @@ $.widget("ui.sortable", $.ui.mouse, {
element: function() { element: function() {


var nodeName = that.currentItem[0].nodeName.toLowerCase(), var nodeName = that.currentItem[0].nodeName.toLowerCase(),
element = $( that.document[0].createElement( nodeName ) ) element = $( "<" + nodeName + ">", that.document[0] )
.addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder")
.removeClass("ui-sortable-helper"); .removeClass("ui-sortable-helper");


if ( nodeName === "tr" ) { if ( nodeName === "tr" ) {
// Use a high colspan to force the td to expand the full that.currentItem.children().each(function() {
// width of the table (browsers are smart enough to $( "<td>&#160;</td>", that.document[0] )
// handle this properly) .attr( "colspan", $( this ).attr( "colspan" ) || 1 )
element.append( "<td colspan='99'>&#160;</td>" ); .appendTo( element );
});
} else if ( nodeName === "img" ) { } else if ( nodeName === "img" ) {
element.attr( "src", that.currentItem.attr( "src" ) ); element.attr( "src", that.currentItem.attr( "src" ) );
} }
Expand Down

0 comments on commit 09b3533

Please sign in to comment.