filter_checkboxes-8.x-1.x-dev/js/filter-checkboxes.js
js/filter-checkboxes.js
(function ($, Drupal) {
/**
* Behavior for disallowing non-latin chars.
*/
Drupal.behaviors.checkboxesFilter = {
timer: null,
attach: function (context, settings) {
var $checkboxesElement = $('.checkboxes-filter-element');
var currentElement = $(this);
$checkboxesElement.once('checkboxes-filter').each(function() {
$(this).prepend(
$('<input type="text" class="form-text" placeholder="' + Drupal.t('Filter') + '">').on('blur', function () {
var $this = $(this);
if (Drupal.behaviors.checkboxesFilter.timer) {
clearTimeout(Drupal.behaviors.checkboxesFilter.timer);
}
Drupal.behaviors.checkboxesFilter.timer = setTimeout(function () {
Drupal.behaviors.checkboxesFilter.filter($this.val(), currentElement)
}, 100)
}).on('keyup', function () {
if (Drupal.behaviors.checkboxesFilter.timer) {
clearTimeout(Drupal.behaviors.checkboxesFilter.timer);
}
Drupal.behaviors.checkboxesFilter.timer = setTimeout(function () {
Drupal.behaviors.checkboxesFilter.filter($(this).val(), currentElement)
}, 100)
})
);
});
},
filter: function (filterText, $element) {
var checkboxes = $('div.form-item.form-type-checkbox', $element).addClass('hidden');
checkboxes.filter(function () {
if (filterText === '') {
return true;
}
var element = $(this);
var label = element.find('label');
var labelText = label.html();
var result = labelText.toUpperCase().indexOf(filterText.toUpperCase()) !== -1;
if (result === false) {
$element.closest('div.form-item.form-type-checkbox').addClass('hidden');
}
return result;
}).removeClass('hidden');
}
};
})(jQuery, Drupal);
