1$(document).ready(function() { 2 // Slideout main menu 3 if (typeof Slideout !== "undefined" && document.getElementById("menu")) { 4 var slideout = new Slideout({ 5 panel: document.getElementById("page-container"), 6 menu: document.getElementById("menu"), 7 padding: 256, 8 tolerance: 70, 9 side: "left", 10 touch: false 11 }); 12 } 13 14 // slideout menu opening on mobile 15 enquire.register("screen and (max-width: 767px)", { 16 match: function() { 17 $("#menu-toggle-button").on("click.menu", function() { 18 slideout.toggle(); 19 }); 20 21 $(document).on("click.mobileCategory", "#menu .menu-category", function( 22 event 23 ) { 24 var clickedItem = $(event.target); 25 var submenu = clickedItem.find(".submenu"); 26 if (!clickedItem.data("isOpen")) { 27 clickedItem.addClass("is-open"); 28 submenu.slideDown(200, function() { 29 clickedItem.data("isOpen", true); 30 }); 31 } else { 32 clickedItem.removeClass("is-open"); 33 submenu.slideUp(200, function() { 34 clickedItem.data("isOpen", false); 35 }); 36 } 37 }); 38 39 // open search 40 $(document).on("click.mobileSearch", "#title-search", function(event) { 41 var clickedItem = $(event.target); 42 if (!clickedItem.data("isOpen")) { 43 clickedItem.addClass("is-open"); 44 $("#search").focus(); 45 } 46 }); 47 //close search 48 $(document).on("click.mobileSearchClose", ".search__close", function( 49 event 50 ) { 51 $("#title-search").removeClass("is-open"); 52 }); 53 }, 54 unmatch: function() { 55 $("#menu-toggle-button").off("click.menu"); 56 if (slideout.isOpen()) { 57 slideout.close(); 58 } 59 60 $(document).off("click.mobileCategory"); 61 $(document).off("click.mobileSearch"); 62 $(document).off("click.mobileSearchClose"); 63 } 64 }); 65 // category menu 66 var categoryMenu = document.getElementById("categories-menu"); 67 68 $("#menu-toggle-button").on("click.desktopCategoryMenu", function(event) { 69 if (!$(document).data("categoryMenuOpen")) { 70 makeVisible(categoryMenu, 100, "desktop_invisible"); 71 $(document).data("categoryMenuOpen", true); 72 } else { 73 makeInvisible(categoryMenu, 100, "desktop_invisible"); 74 $(document).data("categoryMenuOpen", false); 75 } 76 }); 77 78 $(document).on("mouseup.desktopCategoryMenu", function(event) { 79 if ($(categoryMenu).has(event.target).length === 0) { 80 makeInvisible(categoryMenu, 100, "desktop_invisible"); 81 $(document).data("categoryMenuOpen", false); 82 } 83 }); 84 85 // categoryy menu hovers 86 function toggleMenuHovers(toggle) { 87 var menuItems = $(".menu-category"); 88 var submenus = $(".submenu"); 89 90 if (toggle) { 91 $.each($(menuItems), function(index, item) { 92 var categoryName = $(item).find(".menu-category__name"); 93 var submenu = $(item).find(".submenu"); 94 var speed = 100; 95 96 $(categoryName).on("mouseover.desktopCategoryMenu", function(event) { 97 event.stopPropagation(); 98 makeVisible($(submenu), speed, "desktop_invisible"); 99 }); 100 101 $(categoryName).on("mouseout.desktopCategoryMenu", function(event) { 102 event.stopPropagation(); 103 var hovered = $(item).find(".submenu:hover").length; 104 if (!hovered) { 105 makeInvisible($(submenu), speed, "desktop_invisible"); 106 } 107 }); 108 109 $(submenu).on("mouseover.desktopSubmenu", function(event) { 110 event.stopPropagation(); 111 $(categoryName).addClass("hover"); 112 makeVisible($(submenu), 0, "desktop_invisible"); 113 }); 114 115 $(submenu).on("mouseout.desktopSubmenu", function(event) { 116 event.stopPropagation(); 117 var hovered = $(item).find(".submenu:hover").length; 118 if (!hovered) { 119 $(categoryName).removeClass("hover"); 120 makeInvisible($(submenu), speed, "desktop_invisible"); 121 } 122 }); 123 }); 124 } else { 125 $.each($(menuItems), function(index, item) { 126 var categoryName = $(item).find(".menu-category__name"); 127 var submenu = $(item).find(".submenu"); 128 129 $(categoryName).off("mouseover.desktopCategoryMenu"); 130 $(categoryName).off("mouseout.desktopCategoryMenu"); 131 $(submenu).off("mouseover.desktopSubmenu"); 132 $(submenu).off("mouseout.desktopSubmenu"); 133 }); 134 } 135 } 136 137 enquire.register("screen and (min-width:768px)", { 138 match: function() { 139 toggleMenuHovers(true); 140 }, 141 unmatch: function() { 142 toggleMenuHovers(false); 143 }, 144 deferSetup: true 145 }); 146 147 // utility functions 148 function makeVisible(el, speed, className) { 149 if (className === undefined) { 150 var invisibleClass = "invisible"; 151 } else { 152 invisibleClass = className; 153 } 154 155 $(el).css("display", "none"); 156 $(el).removeClass(invisibleClass); 157 $(el).fadeIn(speed, function() { 158 $(el).css("display", ""); 159 }); 160 } 161 162 function makeInvisible(el, speed, className) { 163 if (className === undefined) { 164 var invisibleClass = "invisible"; 165 } else { 166 invisibleClass = className; 167 } 168 169 $(el).fadeOut(speed, function() { 170 $(el).addClass(invisibleClass); 171 $(el).css("display", ""); 172 }); 173 } 174});
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.