1jQuery(document).ready(function($) { 2 3 if(slickNavVars.ng_slicknav.ng_slicknav_fixhead || !slickNavVars.ng_slicknav.ng_slicknav_position ) { 4 slickNavVars.ng_slicknav.ng_slicknav_position = 'body'; 5 } 6 7 if(slickNavVars.ng_slicknav.ng_slicknav_openedsymbol === "") { 8 slickNavVars.ng_slicknav.ng_slicknav_openedsymbol = "▼"; 9 } 10 11 if(slickNavVars.ng_slicknav.ng_slicknav_closedsymbol === "") { 12 slickNavVars.ng_slicknav.ng_slicknav_closedsymbol = "►"; 13 } 14 15 if(slickNavVars.ng_slicknav.ng_slicknav_search_text === "") { 16 slickNavVars.ng_slicknav.ng_slicknav_search_text = "search..."; 17 } 18 19 // Ov3rfly 20 var ng_slicknav_menu = ''; 21 var ng_slicknav_menu_duplicate = true; 22 var ng_slicknav_menu_arr = slickNavVars.ng_slicknav.ng_slicknav_menu.split(','); 23 24 if ( ng_slicknav_menu_arr.length > 1 ) { 25 // multiple comma seperated selectors 26 // based on http://codepen.io/ComputerWolf/pen/tjyIg 27 // clone all menus to keep them intact 28 ng_slicknav_menu = $( ng_slicknav_menu_arr[0].trim() ).clone(); 29 for ( var i = 1; i < ng_slicknav_menu_arr.length; i++ ) { 30 var ng_slicknav_other = $( ng_slicknav_menu_arr[i].trim() ).clone(); 31 ng_slicknav_other.children( 'li' ).appendTo( ng_slicknav_menu ); 32 } 33 ng_slicknav_menu_duplicate = false; 34 } else { 35 // only one selector 36 ng_slicknav_menu = ng_slicknav_menu_arr[0].trim(); 37 //ng_slicknav_menu = ng_slicknav_menu.trim(); 38 } 39 40 $(ng_slicknav_menu).slicknav({ // Ov3rfly 41 prependTo : slickNavVars.ng_slicknav.ng_slicknav_position, 42 label : slickNavVars.ng_slicknav.ng_slicknav_label, 43 duration : slickNavVars.ng_slicknav.ng_slicknav_speed, 44 animations : slickNavVars.ng_slicknav_animation_library, 45 showChildren : slickNavVars.ng_slicknav.ng_slicknav_child_links, 46 allowParentLinks: slickNavVars.ng_slicknav.ng_slicknav_parent_links, 47 closeOnClick : slickNavVars.ng_slicknav.ng_slicknav_close_click, 48 brand : slickNavVars.ng_slicknav.ng_slicknav_brand, 49 openedSymbol : slickNavVars.ng_slicknav.ng_slicknav_openedsymbol, 50 closedSymbol : slickNavVars.ng_slicknav.ng_slicknav_closedsymbol, 51 duplicate : ng_slicknav_menu_duplicate, // Ov3rfly 52 beforeOpen : (slickNavVars.ng_slicknav.ng_slicknav_accordion == true) ? function(trigger) { slicknavOpened(trigger); } : function(){}, 53 }); 54 55 56 if ( slickNavVars.ng_slicknav.ng_slicknav_search === true ) { 57 $( '.slicknav_nav' ).append( '<li class="search"><form role="search" method="get" id="slicknav-searchform" action="'+ slickNavVars.ng_slicknav.ng_slicksearch + '"><input type="text" placeholder="'+ slickNavVars.ng_slicknav.ng_slicknav_search_text + '" name="s" id="s" /><input type="submit" id="searchsubmit" value="" /></form></li>'); 58 } 59 60 if ( !slickNavVars.ng_slicknav.ng_slicknav_brand && slickNavVars.ng_slicknav.ng_slicknav_brand_text ) { 61 $( '.slicknav_menu' ).prepend( '<p class="slicknav-logo-text"><a href="'+ slickNavVars.ng_slicknav.ng_slicksearch + '">'+ slickNavVars.ng_slicknav.ng_slicknav_brand_text + '</p>'); 62 63 } 64 65 // Accordion used to show 1 sublevel at a time - https://github.com/ComputerWolf/SlickNav/issues/16 66 function slicknavOpened(trigger) { 67 var $trigger = $(trigger[0]); 68 if ($trigger.hasClass('slicknav_btn')) { 69 // this is the top-level menu/list opening. 70 // we only want to trap lower-level/sublists. 71 return; 72 } 73 // trigger is an <a> anchor contained in a <li> 74 var $liParent = $trigger.parent(); 75 // parent <li> is contained inside a <ul> 76 var $ulParent = $liParent.parent(); 77 // loop through all children of parent <ul> 78 // i.e. all siblings of this <li> 79 $ulParent.children().each(function () { 80 var $child = $(this); 81 if ($child.is($liParent)) { 82 // this child is self, not is sibling 83 return; 84 } 85 if ($child.hasClass('slicknav_collapsed')) { 86 // this child is already collapsed 87 return; 88 } 89 if (!$child.hasClass('slicknav_open')) { 90 // could throw an exception here: this shouldn't happen 91 // because I expect li to have class either slicknav_collapsed or slicknav_open 92 return; 93 } 94 // found a sibling <li> which is already open. 95 // expect that its first child is an anchor item. 96 var $anchor = $child.children().first(); 97 if (!$anchor.hasClass('slicknav_item')) { 98 return; 99 }
100 // close the sibling by emulating a click on its anchor. 101 $anchor.click(); 102 }); 103 104 } 105 106 // Add Flex container around brand/brand text and Menu icon/label divs so button can be centered 107 var brandBlank = ( slickNavVars.ng_slicknav.ng_slicknav_brand == '' ); 108 var brandBlankText = ( slickNavVars.ng_slicknav.ng_slicknav_brand_text == '' ); 109 if ( ! brandBlank ) { 110 $( ".slicknav_brand" ).next().addBack().wrapAll( "<div class='slicknav-flex'></div>" ); 111 } 112 else if ( ! brandBlankText ) { 113 $( ".slicknav-logo-text" ).next().addBack().wrapAll( "<div class='slicknav-flex'></div>" ); 114 } 115 else 116 $( ".slicknav_btn" ).wrapAll( "<div class='slicknav-flex'></div>" ); 117 118 119 });
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.