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.