- Patch #329797 by danielb: better support for nested elements.
parent
cf7371805e
commit
122ba8461e
|
@ -79,13 +79,15 @@ Drupal.tableDrag = function (table, tableSettings) {
|
||||||
// manually append 2 indentations in the first draggable row, measure
|
// manually append 2 indentations in the first draggable row, measure
|
||||||
// the offset, then remove.
|
// the offset, then remove.
|
||||||
var indent = Drupal.theme('tableDragIndentation');
|
var indent = Drupal.theme('tableDragIndentation');
|
||||||
var testCell = $('tr.draggable:first td:first', table).prepend(indent).prepend(indent);
|
// Match immediate children of the parent element to allow nesting.
|
||||||
|
var testCell = $('> tbody > tr.draggable:first td:first, > tr.draggable:first td:first', table).prepend(indent).prepend(indent);
|
||||||
this.indentAmount = $('.indentation', testCell).get(1).offsetLeft - $('.indentation', testCell).get(0).offsetLeft;
|
this.indentAmount = $('.indentation', testCell).get(1).offsetLeft - $('.indentation', testCell).get(0).offsetLeft;
|
||||||
$('.indentation', testCell).slice(0, 2).remove();
|
$('.indentation', testCell).slice(0, 2).remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make each applicable row draggable.
|
// Make each applicable row draggable.
|
||||||
$('tr.draggable', table).each(function () { self.makeDraggable(this); });
|
// Match immediate children of the parent element to allow nesting.
|
||||||
|
$('> tr.draggable, > tbody > tr.draggable', table).each(function() { self.makeDraggable(this); });
|
||||||
|
|
||||||
// Hide columns containing affected form elements.
|
// Hide columns containing affected form elements.
|
||||||
this.hideColumns();
|
this.hideColumns();
|
||||||
|
@ -115,9 +117,10 @@ Drupal.tableDrag.prototype.hideColumns = function () {
|
||||||
// Hide the column containing this field.
|
// Hide the column containing this field.
|
||||||
if (hidden && cell[0] && cell.css('display') != 'none') {
|
if (hidden && cell[0] && cell.css('display') != 'none') {
|
||||||
// Add 1 to our indexes. The nth-child selector is 1 based, not 0 based.
|
// Add 1 to our indexes. The nth-child selector is 1 based, not 0 based.
|
||||||
var columnIndex = $('td', cell.parent()).index(cell.get(0)) + 1;
|
// Match immediate children of the parent element to allow nesting.
|
||||||
var headerIndex = $('td:not(:hidden)', cell.parent()).index(cell.get(0)) + 1;
|
var columnIndex = $('> td', cell.parent()).index(cell.get(0)) + 1;
|
||||||
$('tr', this.table).each(function () {
|
var headerIndex = $('> td:not(:hidden)', cell.parent()).index(cell.get(0)) + 1;
|
||||||
|
$('> thead > tr, > tbody > tr, > tr', this.table).each(function(){
|
||||||
var row = $(this);
|
var row = $(this);
|
||||||
var parentTag = row.parent().get(0).tagName.toLowerCase();
|
var parentTag = row.parent().get(0).tagName.toLowerCase();
|
||||||
var index = (parentTag == 'thead') ? headerIndex : columnIndex;
|
var index = (parentTag == 'thead') ? headerIndex : columnIndex;
|
||||||
|
@ -763,7 +766,8 @@ Drupal.tableDrag.prototype.setScroll = function (scrollAmount) {
|
||||||
Drupal.tableDrag.prototype.restripeTable = function () {
|
Drupal.tableDrag.prototype.restripeTable = function () {
|
||||||
// :even and :odd are reversed because jQuery counts from 0 and
|
// :even and :odd are reversed because jQuery counts from 0 and
|
||||||
// we count from 1, so we're out of sync.
|
// we count from 1, so we're out of sync.
|
||||||
$('tr.draggable', this.table)
|
// Match immediate children of the parent element to allow nesting.
|
||||||
|
$('> tbody > tr.draggable, > tr.draggable', this.table)
|
||||||
.filter(':odd').filter('.odd')
|
.filter(':odd').filter('.odd')
|
||||||
.removeClass('odd').addClass('even')
|
.removeClass('odd').addClass('even')
|
||||||
.end().end()
|
.end().end()
|
||||||
|
|
Loading…
Reference in New Issue