PageSourceSearch

https://www.boatshownorwalk.com/themes/custom/boatshow/assets-dist/js/featuresFilter.js?v=1.0.0

js boatshownorwalk.com collected 2026-09-24 23:57:40 UTC 4,857 bytes, 124 lines download raw bytes

1'use strict';
2
3(function ($, Drupal) {
4  'use strict';
5
6  // Convert a single date to min (00:00:00) and max(23:59:59) for a given day
7  // and set values to date-between form fields
8
9  function filterDateRangeCheckboxes(value, minTarget, maxTarget) {
10    if (value) {
11      var min = value.split('|')[0];
12      var max = value.split('|')[1];
13      console.log(min, max);
14      $(minTarget).val(min);
15      $(maxTarget).val(max);
16    }
17  }
18
19  // Example of Drupal behavior loaded.
20  Drupal.behaviors.boatshowCustomFilters = {
21    attach: function attach(context, settings) {
22
23      $('.brick--type--exposed-filters').once('boatshowCustomFilters').each(function () {
24        var $filtersParent = $(this);
25        var $form = $(this).closest('.brick--type--exposed-filters.collapsible');
26
27        $filtersParent.find('input[type="radio"][name="field_date_radios"]').change(function () {
28          var value = $(this).val();
29          var minTarget = "#edit-field-smnr-seminar-date-value-min";
30          var maxTarget = "#edit-field-smnr-seminar-date-value-max";
31          filterDateRangeCheckboxes(value, minTarget, maxTarget);
32        });
33
34        $filtersParent.find('input[type="radio"][name="field_speaker_radios"]').change(function () {
35          var value = $(this).val();
36          $('#edit-field-smnr-speaker-target-id').val(value);
37        });
38
39        if ($filtersParent.hasClass('collapsible')) {
40
41          // Select the view which corresponds to the exposed filters
42          var viewPluginId = $filtersParent.find('.block-views').attr('data-block-plugin-id'); //e.g.
43          var viewId = viewPluginId.replace('views_exposed_filter_block:', '').split('-')[0];
44          var viewDisplayId = viewPluginId.replace('views_exposed_filter_block:', '').split('-')[1];
45          var $view = $('.view-id-' + viewId + '.view-display-id-' + viewDisplayId);
46
47          // Determine whether to open the filters by default
48          var openFiltersByDefault = $view.find('.views-col').length >= 6 || // Open by default if there are more than 6 results
49          $filtersParent.find('[data-drupal-selector="edit-reset"]').length >= 1 // Open by default if filters are set (tested using presence of reset button)
50          ;
51
52          $filtersParent.find('.form--inline >.form-item').each(function () {
53            if ($(this).css('display') != 'none' && openFiltersByDefault) {
54              $(this).attr('open', '');
55            }
56          });
57
58          if (openFiltersByDefault) {
59            $form.removeClass('collapse');
60          } else {
61            $form.addClass('collapse');
62          }
63
64          $filtersParent.find('.toggle-filters').click(function () {
65            $form.toggleClass('collapse');
66            $form.find('.form--inline >.form-item').each(function () {
67              if (!$form.hasClass('collapse') && $(this).css('display') != 'none') {
68                $(this).attr('open', '');
69              } else {
70                $(this).removeAttr('open');
71              }
72            });
73          });
74
75          $filtersParent.find('.close-filters').click(function () {
76            var $form = $(this).closest('.brick--type--exposed-filters.collapsible');
77            $form.addClass('collapse');
78            $form.find('.form--inline >.form-item').each(function () {
79              $(this).removeAttr('open');
80            });
81          });
82        }
83      });
84    }
85  };
86
87  Drupal.behaviors.boatshowFeaturesFilter = {
88    attach: function attach(context, settings) {
89
90      // Features filter.
91      $('.features-filter .filter').once('boatshowFeaturesFilter').on('click', function () {
92        var class_name = $.grep(this.className.split(" "), function (v, i) {
93          return v.indexOf('filter-') === 0;
94        }).join();
95
96        var $this = $(this);
97        var isSelected = $this.hasClass('filter-selected');
98        var selectedFilters = $('.features-filter .filter-selected');
99        var isFirstSelection = !selectedFilters.length;
100        var allCards = $('.features-grid .filter');
101
102        if (isSelected) {
103          $this.removeClass('filter-selected');
104          selectedFilters = $('.features-filter .filter-selected');
105          // If all filters are now unchecked, show all results.
106          if (!selectedFilters.length) {
107            allCards.closest('.column-item').show();
108          } else {
109            allCards.filter('.' + class_name).closest('.column-item').hide();
110          }
111        } else {
112          $this.addClass('filter-selected');
113          if (isFirstSelection) {
114            allCards.closest('.column-item').hide();
115            allCards.filter('.' + class_name).closest('.column-item').show();
116          } else {
117            allCards.filter('.' + class_name).closest('.column-item').show();
118          }
119        }
120      });
121    }
122  };
123})(jQuery, Drupal);
124//# sourceMappingURL=featuresFilter.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.