1(function($) { 2 window.FWP = window.FWP || {}; 3 window.FWP.flyout = { 4 open: function() { 5 FWP.flyout.swapFacets('open'); 6 }, 7 close: function() { 8 FWP.flyout.swapFacets('close'); 9 }, 10 getOrderedFacets: function() { 11 var facets = []; 12 13 $('.facetwp-facet').each(function() { 14 var name = $(this).attr('data-name'); 15 var type = $(this).attr('data-type'); 16 17 if ('map' !== type && 'pager' !== type) { 18 facets.push(name); 19 } 20 }); 21 22 return FWP.hooks.applyFilters('facetwp/flyout/facets', facets); 23 }, 24 init: function() { 25 var content = ''; 26 var facet_html = ` 27 <div class="flyout-row name-{name}"> 28 <h3>{label}</h3> 29 <div class="flyout-item"></div> 30 </div> 31 `; 32 33 $.each(FWP.flyout.getOrderedFacets(), function(facet_name) { 34 35 // Support for custom HTML 36 var temp = FWP.hooks.applyFilters('facetwp/flyout/facet_html', facet_html, { 37 facet_name: facet_name 38 }); 39 temp = temp.split('{label}').join(FWP.settings.labels[facet_name]); 40 temp = temp.split('{name}').join(facet_name); 41 content += temp; 42 }); 43 44 // Custom flyout content 45 $tpl = $('.facetwp-flyout-tpl'); 46 var layout = $tpl.len() ? $tpl.html() : '{content}'; 47 48 var flyout = ` 49 <div class="facetwp-flyout"> 50 <div class="facetwp-flyout-close">x</div> 51 <div class="facetwp-flyout-wrap"> 52 <div class="facetwp-flyout-content">${layout}</div> 53 </div> 54 </div> 55 <div class="facetwp-flyout-fog"></div> 56 `; 57 58 // Hook to modify flyout HTML 59 flyout = FWP.hooks.applyFilters('facetwp/flyout/flyout_html', flyout); 60 flyout = flyout.replace('{content}', content); 61 62 if (0 < $('.facetwp-flyout').len()) { 63 $('.facetwp-flyout').nodes[0].remove(); 64 $('.facetwp-flyout-fog').nodes[0].remove(); 65 } 66 67 $('body').append(flyout); 68 }, 69 swapFacets: function(action) { 70 var action = ('undefined' !== typeof action) ? action : 'open'; 71 var is_open = $('.facetwp-flyout.active').len() > 0; 72 73 if ((is_open && 'open' == action) || (!is_open && 'close' == action)) { 74 return; 75 } 76 77 // Loop through each facet 78 $.each(FWP.flyout.getOrderedFacets(), function(facet_name) { 79 var $this = $('.facetwp-facet-' + facet_name).nodes[0]; 80 81 if ('open' == action) { 82 var $dest = $('.flyout-row.name-' + facet_name + ' .flyout-item').nodes[0]; 83 $this.insertAdjacentHTML('afterend', '<div class="placeholder-' + facet_name + '"></div>'); 84 $dest.appendChild($this); 85 } 86 else { 87 var $dest = $('.placeholder-' + facet_name).nodes[0]; 88 $dest.parentNode.insertBefore($this, $dest.nextSibling); 89 $dest.remove(); 90 } 91 }); 92 93 // Add the open or close CSS class 94 var which = ('open' == action) ? 'addClass' : 'removeClass'; 95 $('.facetwp-flyout, .facetwp-flyout-fog')[which]('active'); 96 97 // Custom action 98 FWP.hooks.doAction('facetwp/flyout/' + action); 99 }, 100 hideEmptyFacets: function() { 101 $.each(FWP.settings.num_choices, function(num_choices, facet_name) { 102 var $el = $('.flyout-row.name-' + facet_name); 103 var which = (num_choices < 1) ? 'addClass' : 'removeClass'; 104 $el[which]('facetwp-hidden'); 105 }); 106 } 107 }; 108 109 $().on('facetwp-loaded', function() { 110 if (!FWP.loaded) { 111 FWP.flyout.init(); 112 } 113 FWP.flyout.hideEmptyFacets(); 114 }); 115 116 $().on('click', '.facetwp-flyout-open', function() { 117 FWP.flyout.open(); 118 }); 119 120 $().on('click', '.facetwp-flyout-close, .facetwp-flyout-fog', function() { 121 FWP.flyout.close(); 122 }); 123})(fUtil);
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.