80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
(function (GravityFlowFrontEnd, $) {
|
|
|
|
$(document).ready(function () {
|
|
var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions, $firstHeading,
|
|
lastClicked = false;
|
|
|
|
// check all checkboxes
|
|
$('tbody').children().children('.check-column').find(':checkbox').click(function (e) {
|
|
if ('undefined' == e.shiftKey) {
|
|
return true;
|
|
}
|
|
if (e.shiftKey) {
|
|
if (!lastClicked) {
|
|
return true;
|
|
}
|
|
checks = $(lastClicked).closest('form').find(':checkbox');
|
|
first = checks.index(lastClicked);
|
|
last = checks.index(this);
|
|
checked = $(this).prop('checked');
|
|
if (0 < first && 0 < last && first != last) {
|
|
sliced = ( last > first ) ? checks.slice(first, last) : checks.slice(last, first);
|
|
sliced.prop('checked', function () {
|
|
if ($(this).closest('tr').is(':visible'))
|
|
return checked;
|
|
|
|
return false;
|
|
});
|
|
}
|
|
}
|
|
lastClicked = this;
|
|
|
|
// toggle "check all" checkboxes
|
|
var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible').not(':checked');
|
|
$(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function () {
|
|
return ( 0 === unchecked.length );
|
|
});
|
|
|
|
return true;
|
|
});
|
|
|
|
$('thead, tfoot').find('.check-column :checkbox').on('click.wp-toggle-checkboxes', function (event) {
|
|
var $this = $(this),
|
|
$table = $this.closest('table'),
|
|
controlChecked = $this.prop('checked'),
|
|
toggle = event.shiftKey || $this.data('wp-toggle');
|
|
|
|
$table.children('tbody').filter(':visible')
|
|
.children().children('.check-column').find(':checkbox')
|
|
.prop('checked', function () {
|
|
if ($(this).is(':hidden')) {
|
|
return false;
|
|
}
|
|
|
|
if (toggle) {
|
|
return !$(this).prop('checked');
|
|
} else if (controlChecked) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
|
|
$table.children('thead, tfoot').filter(':visible')
|
|
.children().children('.check-column').find(':checkbox')
|
|
.prop('checked', function () {
|
|
if (toggle) {
|
|
return false;
|
|
} else if (controlChecked) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
|
|
}(window.GravityFlowFrontEnd = window.GravityFlowFrontEnd || {}, jQuery));
|