PageSourceSearch

https://www.flonidan.com/Files/Templates/Designs/standard_responsi…/nav/meanmenu/jquery.meanmenu.min.js

js flonidan.com collected 2026-10-09 23:07:20 UTC 9,329 bytes, 261 lines download raw bytes

1/*!
2* jQuery meanMenu v2.0.7
3* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)
4*
5*/
6/*
7* This program is free software: you can redistribute it and/or modify
8* it under the terms of the GNU General Public License as published by
9* the Free Software Foundation, either version 3 of the License, or
10* (at your option) any later version.
11*
12* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
13* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
14* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
15* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
16* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
17* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT
18* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
19* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
20*
21* You should have received a copy of the GNU General Public License
22* along with this program. If not, see <http://gnu.org/licenses/>.
23*
24* Find more information at http://www.meanthemes.com/plugins/meanmenu/
25*
26*/
27(function ($) {
28"use strict";
29
30$.fn.meanmenu = function (options) {
31var defaults = {
32meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
33meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML
34meanMenuClose: "X", // single character you want to represent the close menu button
35meanMenuCloseSize: "18px", // set font size of close button
36meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed
37meanRevealPosition: "right", // left right or center positions
38meanRevealPositionDistance: "0", // Tweak the position of the menu
39meanRevealColour: "", // override CSS colours for the reveal background
40meanScreenWidth: "480", // set the screen width you want meanmenu to kick in at
41meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
42meanShowChildren: true, // true to show children in the menu, false to hide them
43meanExpandableChildren: true, // true to allow expand/collapse children
44meanExpand: "+", // single character you want to represent the expand for ULs
45meanContract: "-", // single character you want to represent the contract for ULs
46meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
47onePage: false, // set to true for one page sites
48removeElements: "" // set to hide page elements
49};
50options = $.extend(defaults, options);
51// get browser width
52var currentWidth = window.innerWidth || document.documentElement.clientWidth;
53return this.each(function () {
54var meanMenu = options.meanMenuTarget;
55var meanContainer = options.meanMenuContainer;
56var meanMenuClose = options.meanMenuClose;
57var meanMenuCloseSize = options.meanMenuCloseSize;
58var meanMenuOpen = options.meanMenuOpen;
59var meanRevealPosition = options.meanRevealPosition;
60var meanRevealPositionDistance = options.meanRevealPositionDistance;
61var meanRevealColour = options.meanRevealColour;
62var meanScreenWidth = options.meanScreenWidth;
63var meanNavPush = options.meanNavPush;
64var meanRevealClass = ".meanmenu-reveal";
65var meanShowChildren = options.meanShowChildren;
66var meanExpandableChildren = options.meanExpandableChildren;
67var meanExpand = options.meanExpand;
68var meanContract = options.meanContract;
69var meanRemoveAttrs = options.meanRemoveAttrs;
70var onePage = options.onePage;
71var removeElements = options.removeElements;
72//detect known mobile/tablet usage
73var isMobile = false;
74if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {
75isMobile = true;
76}
77if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
78// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
79jQuery('html').css("overflow-y" , "scroll");
80}
81var meanRevealPos = "";
82var meanCentered = function() {
83if (meanRevealPosition === "center") {
84var newWidth = window.innerWidth || document.documentElement.clientWidth;
85var meanCenter = ( (newWidth/2)-22 )+"px";
86meanRevealPos = "left:" + meanCenter + ";right:auto;";
87
88if (!$isMobile) {
89jQuery('.meanmenu-reveal').css("left",meanCenter);
90} else {
91jQuery('.meanmenu-reveal').animate({
92left: meanCenter
93});
94}
95}
96};
97var menuOn = false;
98var meanMenuExist = false;
99if (meanRevealPosition === "right") {
100meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
101}
102if (meanRevealPosition === "left") {
103meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
104}
105// run center function
106meanCentered();
107// set all styles for mean-reveal
108var $navreveal = "";
109var meanInner = function() {
110// get last class name
111if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
112$navreveal.html(meanMenuClose);
113} else {
114$navreveal.html(meanMenuOpen);
115}
116};
117// re-instate original nav (and call this on window.width functions)
118var meanOriginal = function() {
119jQuery('.mean-bar,.mean-push').remove();
120jQuery(meanContainer).removeClass("mean-container");
121jQuery(meanMenu).show();
122menuOn = false;
123meanMenuExist = false;
124jQuery(removeElements).removeClass('mean-remove');
125};
126// navigation reveal
127var showMeanMenu = function() {
128var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
129if (currentWidth <= meanScreenWidth) {
130jQuery(removeElements).addClass('mean-remove');
131meanMenuExist = true;
132// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
133jQuery(meanContainer).addClass("mean-container");
134
135//adding language menu to mean-container MK added code
136var house = $(".show-house").clone();
137house.addClass("house-mobile");
138jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
139jQuery(".mean-bar").prepend(house); 
140
141
142//push meanMenu navigation into .mean-nav
143var meanMenuContents = jQuery(meanMenu).html();
144jQuery('.mean-nav').html(meanMenuContents);
145// remove all classes from EVERYTHING inside meanmenu nav
146if(meanRemoveAttrs) {
147jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
148jQuery(this).removeAttr("class");
149jQuery(this).removeAttr("id");
150});
151}
152// push in a holder div (this can be used if removal of nav is causing layout issues)
153jQuery(meanMenu).before('<div class="mean-push" />');
154jQuery('.mean-push').css("margin-top",meanNavPush);
155// hide current navigation and reveal mean nav link
156jQuery(meanMenu).hide();
157jQuery(".meanmenu-reveal").show();
158// turn 'X' on or off
159jQuery(meanRevealClass).html(meanMenuOpen);
160$navreveal = jQuery(meanRevealClass);
161//hide mean-nav ul
162jQuery('.mean-nav ul').hide();
163// hide sub nav
164if(meanShowChildren) {
165// allow expandable sub nav(s)
166if(meanExpandableChildren){
167jQuery('.mean-nav ul ul').each(function() {
168if(jQuery(this).children().length){
169jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
170}
171});
172jQuery('.mean-expand').on("click",function(e){
173e.preventDefault();
174if (jQuery(this).hasClass("mean-clicked")) {
175jQuery(this).text(meanExpand);
176jQuery(this).prev('ul').slideUp(300, function(){});
177} else {
178jQuery(this).text(meanContract);
179jQuery(this).prev('ul').slideDown(300, function(){});
180}
181jQuery(this).toggleClass("mean-clicked");
182});
183} else {
184jQuery('.mean-nav ul ul').show();
185}
186} else {
187jQuery('.mean-nav ul ul').hide();
188}
189// add last class to tidy up borders
190jQuery('.mean-nav ul li').last().addClass('mean-last');
191$navreveal.removeClass("meanclose");
192jQuery($navreveal).click(function(e){
193e.preventDefault();
194if( menuOn === false ) {
195$navreveal.css("text-align", "center");
196$navreveal.css("text-indent", "0");
197$navreveal.css("font-size", meanMenuCloseSize);
198jQuery('.mean-nav ul:first').slideDown();
199menuOn = true;
200} else {
201jQuery('.mean-nav ul:first').slideUp();
202menuOn = false;
203}
204$navreveal.toggleClass("meanclose");
205meanInner();
206jQuery(removeElements).addClass('mean-remove');
207});
208// for one page websites, reset all variables...
209if ( onePage ) {
210jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
211jQuery('.mean-nav ul:first').slideUp();
212menuOn = false;
213jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
214});
215}
216} else {
217meanOriginal();
218}
219};
220if (!isMobile) {
221// reset menu on resize above meanScreenWidth
222jQuery(window).resize(function () {
223currentWidth = window.innerWidth || document.documentElement.clientWidth;
224if (currentWidth > meanScreenWidth) {
225meanOriginal();
226} else {
227meanOriginal();
228}
229if (currentWidth <= meanScreenWidth) {
230showMeanMenu();
231meanCentered();
232} else {
233meanOriginal();
234}
235});
236}
237jQuery(window).resize(function () {
238// get browser width
239currentWidth = window.innerWidth || document.documentElement.clientWidth;
240if (!isMobile) {
241meanOriginal();
242if (currentWidth <= meanScreenWidth) {
243showMeanMenu();
244meanCentered();
245}
246} else {
247meanCentered();
248if (currentWidth <= meanScreenWidth) {
249if (meanMenuExist === false) {
250showMeanMenu();
251}
252} else {
253meanOriginal();
254}
255}
256});
257// run main menuMenu function on load
258showMeanMenu();
259});
260};
261})(jQuery);

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.