PageSourceSearch

https://www.weddingku.id/wp-content/themes/weddingku/js/meanmenu.js

js weddingku.id collected 2026-09-29 07:06:02 UTC 17,540 bytes, 285 lines download raw bytes

1/*!------------------------------------------------------------------------------------------------------------
2* 8. jQuery meanMenu
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        $.fn.meanmenu = function (options) {
30                var defaults = {
31                        meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
32                        meanMenuContainer: '.mobile-menu-area', // Choose where meanmenu will be placed within the HTML
33                        meanMenuClose: "X", // single character you want to represent the close menu button
34                        meanMenuCloseSize: "18px", // set font size of close button
35                        meanMenuOpen: "<span/>", // text/markup you want when menu is closed
36                        meanRevealPosition: "right", // left right or center positions
37                        meanRevealPositionDistance: "0", // Tweak the position of the menu
38                        meanRevealColour: "", // override CSS colours for the reveal background
39                        meanScreenWidth: "1170", // set the screen width you want meanmenu to kick in at
40                        meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
41                        meanShowChildren: true, // true to show children in the menu, false to hide them
42                        meanExpandableChildren: true, // true to allow expand/collapse children
43                        meanExpand: "+", // single character you want to represent the expand for ULs
44                        meanContract: "-", // single character you want to represent the contract for ULs
45                        meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
46                        onePage: false, // set to true for one page sites
47                        meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell
48                        removeElements: "" // set to hide page elements
49                };
50                options = $.extend(defaults, options);
51
52                // get browser width
53                var currentWidth = window.innerWidth || document.documentElement.clientWidth;
54
55                return this.each(function () {
56                        var meanMenu = options.meanMenuTarget;
57                        var meanContainer = options.meanMenuContainer;
58                        var meanMenuClose = options.meanMenuClose;
59                        var meanMenuCloseSize = options.meanMenuCloseSize;
60                        var meanMenuOpen = options.meanMenuOpen;
61                        var meanRevealPosition = options.meanRevealPosition;
62                        var meanRevealPositionDistance = options.meanRevealPositionDistance;
63                        var meanRevealColour = options.meanRevealColour;
64                        var meanScreenWidth = options.meanScreenWidth;
65                        var meanNavPush = options.meanNavPush;
66                        var meanRevealClass = ".meanmenu-reveal";
67                        var meanShowChildren = options.meanShowChildren;
68                        var meanExpandableChildren = options.meanExpandableChildren;
69                        var meanExpand = options.meanExpand;
70                        var meanContract = options.meanContract;
71                        var meanRemoveAttrs = options.meanRemoveAttrs;
72                        var onePage = options.onePage;
73                        var meanDisplay = options.meanDisplay;
74                        var removeElements = options.removeElements;
75
76                        //detect known mobile/tablet usage
77                        var isMobile = false;
78                        if ( (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)) ) {
79                                isMobile = true;
80                        }
81
82                        if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
83                            // add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
84                                jQuery('html').css("overflow-y" , "scroll");
85                        }
86
87                        var meanRevealPos = "";
88                        var meanCentered = function() {
89                            if (meanRevealPosition === "center") {
90                                var newWidth = window.innerWidth || document.documentElement.clientWidth;
91                                var meanCenter = ( (newWidth/2)-22 )+"px";
92                                meanRevealPos = "left:" + meanCenter + ";right:auto;";
93
94                                if (!isMobile) {
95                                    jQuery('.meanmenu-reveal').css("left",meanCenter);
96                                } else {
97                                    jQuery('.meanmenu-reveal').animate({
98                                            left: meanCenter
99                                    });
100                                }
101                            }
102                        };
103
104                        var menuOn = false;
105                        var meanMenuExist = false;
106
107
108                        if (meanRevealPosition === "right") {
109                                meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
110                        }
111                        if (meanRevealPosition === "left") {
112                                meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
113                        }
114                        // run center function
115                        meanCentered();
116
117                        // set all styles for mean-reveal
118                        var $navreveal = "";
119
120                        var meanInner = function() {
121                                // get last class name
122                                if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
123                                        $navreveal.html(meanMenuClose);
124                                } else {
125                                        $navreveal.html(meanMenuOpen);
126                                }
127                        };
128
129                        // re-instate original nav (and call this on window.width functions)
130                        var meanOriginal = function() {
131                            jQuery('.mean-bar,.mean-push').remove();
132                            jQuery(meanContainer).removeClass("mean-container");
133                            jQuery(meanMenu).css('display', meanDisplay);
134                            menuOn = false;
135                            meanMenuExist = false;
136                            jQuery(removeElements).removeClass('mean-remove');
137                        };
138
139                        // navigation reveal
140                        var showMeanMenu = function() {
141                                var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
142                                if (currentWidth <= meanScreenWidth) {
143                                jQuery(removeElements).addClass('mean-remove');
144                                    meanMenuExist = true;
145                                    // add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
146                                    jQuery(meanContainer).addClass("mean-container");
147                                    jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
148
149                                    //push meanMenu navigation into .mean-nav
150                                    var meanMenuContents = jQuery(meanMenu).html();
151                                    jQuery('.mean-nav').html(meanMenuContents);
152
153                                    // remove all classes from EVERYTHING inside meanmenu nav
154                                    if(meanRemoveAttrs) {
155                                        jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
156                                            // First check if this has mean-remove class
157                                            if (jQuery(this).is('.mean-remove')) {
158                                                jQuery(this).attr('class', 'mean-remove');
159                                            } else {
160                                                jQuery(this).removeAttr("class");
161                                            }
162                                            jQuery(this).removeAttr("id");
163                                        });
164                                    }
165
166                                    // push in a holder div (this can be used if removal of nav is causing layout issues)
167                                    jQuery(meanMenu).before('<div class="mean-push" />');
168                                    jQuery('.mean-push').css("margin-top",meanNavPush);
169
170                                    // hide current navigation and reveal mean nav link
171                                    jQuery(meanMenu).hide();
172                                    jQuery(".meanmenu-reveal").show();
173
174                                    // turn 'X' on or off
175                                    jQuery(meanRevealClass).html(meanMenuOpen);
176                                    $navreveal = jQuery(meanRevealClass);
177
178                                    //hide mean-nav ul
179                                    jQuery('.mean-nav ul').hide();
180
181                                    // hide sub nav
182                                    if(meanShowChildren) {
183                                            // allow expandable sub nav(s)
184                                            if(meanExpandableChildren){
185                                                jQuery('.mean-nav ul ul').each(function() {
186                                                        if(jQuery(this).children().length){
187                                                                jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
188                                                        }
189                                                });
190                                                jQuery('.mean-expand').on("click",function(e){
191                                                        e.preventDefault();
192                                                            if (jQuery(this).hasClass("mean-clicked")) {
193                                                                    jQuery(this).text(meanExpand);
194                                                                jQuery(this).prev('ul').slideUp(300, function(){});
195                                                        } else {
196                                                                jQuery(this).text(meanContract);
197                                                                jQuery(this).prev('ul').slideDown(300, function(){});
198                                                        }
199                                                        jQuery(this).toggleClass("mean-clicked");
200                                                });
201                                            } else {
202                                                    jQuery('.mean-nav ul ul').show();
203                                            }
204                                    } else {
205                                            jQuery('.mean-nav ul ul').hide();
206                                    }
207
208                                    // add last class to tidy up borders
209                                    jQuery('.mean-nav ul li').last().addClass('mean-last');
210                                    $navreveal.removeClass("meanclose");
211                                    jQuery($navreveal).click(function(e){
212                                        e.preventDefault();
213                                if( menuOn === false ) {
214                                                $navreveal.css("text-align", "center");
215                                                $navreveal.css("text-indent", "0");
216                                                $navreveal.css("font-size", meanMenuCloseSize);
217                                                jQuery('.mean-nav ul:first').slideDown();
218                                                menuOn = true;
219                                        } else {
220                                            jQuery('.mean-nav ul:first').slideUp();
221                                            menuOn = false;
222                                        }
223                                            $navreveal.toggleClass("meanclose");
224                                            meanInner();
225                                            jQuery(removeElements).addClass('mean-remove');
226                                    });
227
228                                    // for one page websites, reset all variables...
229                                    if ( onePage ) {
230                                        jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
231                                            jQuery('.mean-nav ul:first').slideUp();
232                                            menuOn = false;
233                                            jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
234                                        });
235                                    }
236                            } else {
237                                meanOriginal();
238                            }
239                        };
240
241                        if (!isMobile) {
242                                // reset menu on resize above meanScreenWidth
243                                jQuery(window).resize(function () {
244                                        currentWidth = window.innerWidth || document.documentElement.clientWidth;
245                                        if (currentWidth > meanScreenWidth) {
246                                                meanOriginal();
247                                        } else {
248                                            meanOriginal();
249                                        }
250                                        if (currentWidth <= meanScreenWidth) {
251                                                showMeanMenu();
252                                                meanCentered();
253                                        } else {
254                                            meanOriginal();
255                                        }
256                                });
257                        }
258
259                    jQuery(window).resize(function () {
260                                // get browser width
261                                currentWidth = window.innerWidth || document.documentElement.clientWidth;
262
263                                if (!isMobile) {
264                                        meanOriginal();
265                                        if (currentWidth <= meanScreenWidth) {
266                                                showMeanMenu();
267                                                meanCentered();
268                                        }
269                                } else {
270                                        meanCentered();
271                                        if (currentWidth <= meanScreenWidth) {
272                                                if (meanMenuExist === false) {
273                                                        showMeanMenu();
274                                                }
275                                        } else {
276                                                meanOriginal();
277                                        }
278                                }
279                        });
280
281                    // run main menuMenu function on load
282                    showMeanMenu();
283                });
284        };
285})(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.