Add toggle for Drupal exposed views filters

The following snippet can be added into your theme javascript file and it will add a toggle option around views exposed filters,
so you save some screen estate.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function (Drupal, $) {
var minimumFiltersPresent = 3;
Drupal.behaviors.toggleFilters = {
attach: function () {
function toggleFilter() {
var $filters = $(this);
if ($filters.find(':input:visible').length >= minimumFiltersPresent) {
$filters.hide();
$('<a class="toggle-link toggle-link-filters-hidden">' + Drupal.t('Show filters') + '</a>').bind('click', function () {
var $link = $(this);
$filters.toggle();
$link.toggleClass('toggle-link-filters-hidden');
if ($link.hasClass('toggle-link-filters-hidden')) {
$link.text(Drupal.t('Show filters'));
}
else {
$link.text(Drupal.t('Hide filters'));
}
}).insertBefore($filters);
}
}
$('.view-filters').not('.no-toggle-filter').once('toggle-filter').each(toggleFilter);
}
};
})(Drupal, jQuery);