1 2function UCSideMenu(menuWrapperID, urlAjax){ 3 4 var g_backLinkClass; 5 var g_subMenuSelector; 6 var g_menuWrapper, g_objWrapper, g_menuID, g_objButtonToggle, g_objInputBox, g_isCloseOnOpen, g_isClickable, g_isOpenOnLoad, g_subsFromSide; 7 var g_pushOnOpen, g_pushOnOpenMobile, g_lastBodyPadding; 8 var g_startExpanded; 9 var g_dataLinkNum; 10 var g_dataSpeed; 11 var g_menuOpenedClass; 12 13 /** 14 * add support to swiper container 15 */ 16 function pushSwipers(num){ 17 var objSwipers = jQuery(".swiper-container"); 18 19 objSwipers.each(function(){ 20 var objSwiper = jQuery(this); 21 22 objSwiper.css("transform", "translate("+num+"px, 0)"); 23 24 }); 25 } 26 27 /** 28 * add support to swiper container 29 */ 30 function releaseSwipers(){ 31 var objSwipers = jQuery(".swiper-container"); 32 33 objSwipers.each(function(){ 34 var objSwiper = jQuery(this); 35 36 objSwiper.css("transform", ""); 37 }); 38 } 39 40 /** 41 * open nav 42 */ 43 function openNav() { 44 var objBody = jQuery("body"); 45 var menuWidth = g_menuWrapper.width(); 46 47 objBody.addClass(g_menuOpenedClass); 48 49 if ( g_menuWrapper.hasClass("menu-right-close")) { 50 51 function pushContentToLeft(){ 52 objBody.addClass("uc-menu-push"); 53 objBody.css("padding-right",menuWidth+"px"); 54 55 pushSwipers(-menuWidth); 56 } 57 58 g_menuWrapper.removeClass("menu-right-close"); 59 g_menuWrapper.addClass("menu-right-open"); 60 61 if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){ 62 pushContentToLeft(); 63 } 64 65 if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){ 66 pushContentToLeft(); 67 } 68 69 g_lastBodyPadding = objBody.css("padding-right"); 70 71 } else if (g_menuWrapper.hasClass("menu-left-close")) { 72 73 function pushContentToRight(){ 74 objBody.addClass("uc-menu-push"); 75 objBody.css("padding-left",menuWidth+"px"); 76 77 pushSwipers(menuWidth); 78 } 79 80 g_menuWrapper.removeClass("menu-left-close"); 81 g_menuWrapper.addClass("menu-left-open"); 82 83 if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){ 84 pushContentToRight(); 85 } 86 87 if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true){ 88 pushContentToRight(); 89 } 90 91 g_lastBodyPadding = objBody.css("padding-left"); 92 } 93 g_objButtonToggle.addClass("uc-close-action"); 94 } 95 96 /** 97 * close the menu 98 */ 99 function closeNav() { 100 g_objButtonToggle.removeClass("uc-close-action"); 101 102 checkUrlAndSelectActive(); 103 104 var objBody = jQuery("body"); 105 objBody.removeClass(g_menuOpenedClass); 106 107 if (g_menuWrapper.hasClass("menu-left-open")) { 108 109 function lastBodyPaddingLeft() { 110 111 setTimeout(function(){ 112 objBody.removeClass("uc-menu-push"); 113 },g_dataSpeed*1000); 114 115 objBody.css("padding-left", ''); 116 117 releaseSwipers(); 118 } 119 120 g_menuWrapper.toggleClass("menu-left-close"); 121 122 if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true) { 123 lastBodyPaddingLeft(); 124 } 125 126 if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) { 127 lastBodyPaddingLeft(); 128 } 129 130 } else if (g_menuWrapper.hasClass("menu-right-open")) { 131 132 function lastBodyPaddingRight() { 133 134 setTimeout(function(){ 135 objBody.removeClass("uc-menu-push"); 136 },g_dataSpeed*1000) 137 138 objBody.css("padding-right", ''); 139 140 releaseSwipers(); 141 142 } 143 144 g_menuWrapper.toggleClass("menu-right-close"); 145 146 if(window.matchMedia("(min-width: 420px)").matches && g_pushOnOpen == true){ 147 lastBodyPaddingRight(); 148 } 149 150 if(window.matchMedia("(max-width: 420px)").matches && g_pushOnOpenMobile == true) { 151 lastBodyPaddingRight(); 152 } 153 154 } 155 156 if(g_subsFromSide == true){ 157 var objAllExpanded = g_menuWrapper.find(".expanded"); 158 159 if(objAllExpanded.length == false) 160 return(false); 161 162 jQuery.each(objAllExpanded, function(index, link){ 163 var objLink = jQuery(link); 164 var section = link.nextElementSibling; 165 166 collapseSection(section, objLink); 167 menuItemIconToggle(objLink[0]); 168 }); 169 } 170 } 171 172 /** 173 * get closed state 174 */ 175 function isMenuClosed(){ 176 var isClose = g_objButtonToggle.hasClass("uc-close-action"); 177 178 return(!isClose); 179 } 180 181 /** 182 * toggle click 183 */ 184 function onButtonToggleClick(){ 185 var isClose = g_objButtonToggle.hasClass("uc-close-action"); 186 187 if(isClose == true) 188 closeNav(); 189 else 190 openNav(); 191 } 192 193 /** 194 * collapse inner section 195 */ 196 function collapseInnerSection(element){ 197 198 if(g_subsFromSide == false){ 199 var sectionHeight = element.scrollHeight; 200 201 var elementTransition = element.style.transition; 202 element.style.transition = ''; 203 204 requestAnimationFrame(function() { 205 element.style.height = sectionHeight + 'px'; 206 element.style.transition = elementTransition; 207 208 requestAnimationFrame(function() { 209 element.style.height = 0 + 'px'; 210 }); 211 212 }); 213 } 214 215 element.setAttribute('data-collapsed', 'true'); 216 } 217 218 /** 219 * expand the inner of the section 220 */ 221 function expandSectionInner(element){ 222 if(g_subsFromSide == false){ 223 var sectionHeight = element.scrollHeight; 224 element.style.height = sectionHeight + 'px'; 225 226 element.addEventListener('transitionend', function(e) { 227 element.removeEventListener('transitionend', arguments.callee); 228 element.style.height = null; 229 230 }); 231 } 232 233 element.setAttribute('data-collapsed', 'false'); 234 } 235 236 /** 237 * expand section 238 */ 239 function expandSection(section, objLink){ 240 expandSectionInner(section); 241 242 section.setAttribute('data-collapsed', 'false') 243 objLink.removeClass("collapsed"); 244 objLink.addClass("expanded"); 245 } 246 247 /** 248 * collapse the section 249 */ 250 function collapseSection(section, objLink){ 251 collapseInnerSection(section); 252 253 objLink.addClass("collapsed"); 254 objLink.removeClass("expanded"); 255 } 256 257 /** 258 * collapse all expanded sections 259 */ 260 function collapseAllExpanded(clickedItem){ 261 262 var clickedParentExpanded = jQuery(clickedItem).parents(g_subMenuSelector).prev(); 263 var clickedChildrenExpanded = jQuery(clickedItem).next().find('.expanded'); 264 265 var objAllExpanded = g_menuWrapper.find(".expanded").not(clickedChildrenExpanded).not(clickedParentExpanded); 266 267 if(objAllExpanded.length == false) 268 return(false); 269 270 271 jQuery.each(objAllExpanded, function(index, link){ 272 var objLink = jQuery(link); 273 var section = link.nextElementSibling; 274 275 //make sure link is link, and not icon 276 if(objLink.prop("tagName") == "SPAN"){ 277 objLink = objLink.parent(); 278 } 279 280 var objSection = objLink.next(); 281 var objChildSection = objSection.find(".sub-menu"); 282 283 //check if objLink has opened children if so, skip this one (disabled until case with it is found) 284 if(objChildSection && objChildSection.length > 0){ 285 //return(true); 286 } 287 288 var section = objLink[0].nextElementSibling; 289 collapseSection(section, objLink); 290 }); 291 } 292 293 /** 294 * close or open link 295 */ 296 function toggleSection(objLink){ 297 298 var link = objLink[0]; 299 var section = link.nextElementSibling; 300 301 var isCollapsed = section.getAttribute('data-collapsed') === 'true'; 302 303 if (isCollapsed) { //expend current 304 305 if(g_isCloseOnOpen == true) 306 collapseAllExpanded(link); 307 308 expandSection(section, objLink); 309 310 } else { //collapse current 311 collapseSection(section,objLink); 312 } 313 314 } 315 316 /** 317 * toggle menu item icon 318 */ 319 function menuItemIconToggle(link){ 320 //add icons to pointer elements 321 var pointerSelector = ".uc-menu-item-pointer"; 322 323 var objPointer = jQuery(link).find(pointerSelector); 324 var objPsrentsMenuItems = jQuery(link).parents(".menu-item-has-children"); 325 var objParentsPointers = objPsrentsMenuItems.find(pointerSelector); 326 var objAllPointers = g_menuWrapper.find(pointerSelector).not(objParentsPointers); 327 328 var objExpandedIcon = g_objWrapper.find(".uc-side-menu-expand-icon"); 329 var objCollapsedIcon = g_objWrapper.find(".uc-side-menu-collapse-icon"); 330 331 if(!objExpandedIcon.length || !objCollapsedIcon) 332 return(false); 333 334 var expandedIconHtml = objExpandedIcon.html(); 335 var collapsedIconHtml = objCollapsedIcon.html(); 336 337 if(jQuery(link).hasClass("collapsed") == true){ 338 339 if(g_isCloseOnOpen == true) 340 objAllPointers.html(expandedIconHtml); 341 342 objPointer.html(expandedIconHtml); 343 } 344 345 if(jQuery(link).hasClass("expanded") == true){ 346 347 if(g_isCloseOnOpen == true) 348 objAllPointers.html(expandedIconHtml); 349 350 objPointer.html(collapsedIconHtml); 351 352 } 353 } 354 355 /** 356 * open or close some item 357 */ 358 function openCloseItem(link, event, isPointer, isOnlyOpen){ 359 var section = link.nextElementSibling; 360 361 if(isPointer == true){ 362 section = jQuery(link).parents("a")[0].nextElementSibling; 363 } 364 365 if(!section) 366 return(true); 367 368 var objSection = jQuery(section); 369 370 if(objSection.hasClass("sub-menu") == false) 371 return(true); 372 373 if(event) 374 event.preventDefault(); 375 376 var objLink = jQuery(link); 377 var isCollapsed = section.getAttribute('data-collapsed') === 'true'; 378 379 if(isCollapsed == true && isOnlyOpen == true){ 380 381 if(isPointer == true) { 382 expandSection(section, objLink.parent()); 383 menuItemIconToggle(objLink.parent());
384 }else{ 385 expandSection(section, objLink); 386 menuItemIconToggle(objLink); 387 } 388 389 return(true); 390 } 391 392 if (isCollapsed == true && !isOnlyOpen) { //expend current 393 if(g_isCloseOnOpen == true) 394 collapseAllExpanded(link); 395 396 expandSection(section, objLink); 397 398 } else if(isCollapsed == false && !isOnlyOpen) { //collapse current 399 400 collapseSection(section,objLink); 401 } 402 menuItemIconToggle(link); 403 } 404 405 /** 406 * if clicked link is an anchor then close nav 407 */ 408 function closeNavOnAnchorLinkClick(objLink, event){ 409 var url = objLink.attr("href"); 410 url = jQuery.trim(url); 411 412 if(!url) 413 return(true); 414 415 var objLinkIcon = objLink.find('.uc-menu-item-pointer'); 416 417 if(!objLinkIcon) 418 return(true); 419 420 var target = event.target; 421 422 if(target == objLinkIcon[0]) 423 return(true); 424 425 var objLinkParent = objLink.parent(); 426 427 if(g_isClickable == false){ 428 429 if(objLinkParent.hasClass('menu-item-has-children')) 430 return(true) 431 432 //check if clicked link is an anchor link 433 if (url.indexOf("#") > -1) 434 closeNav(); 435 }else{ 436 437 //check if clicked link is an anchor link 438 if (url.indexOf("#") > -1) 439 closeNav(); 440 } 441 } 442 443 /** 444 * on menu item click, if sub menu, open or close 445 */ 446 function onMenuItemClick(event){ 447 openCloseItem(this,event); 448 449 var objLink = jQuery(this); 450 451 closeNavOnAnchorLinkClick(objLink, event) 452 } 453 454 /** 455 * console log shortcut 456 */ 457 function trace(str){ 458 console.log(str); 459 } 460 461 /** 462 * do search 463 */ 464 function doSearch(){ 465 if(!g_objInputBox) 466 return(false); 467 468 var searchString = g_objInputBox.val(); 469 470 searchString = jQuery.trim(searchString); 471 472 if(!searchString) 473 return(true); 474 475 var urlBase = g_objInputBox.data("urlbase"); 476 var urlSearch = urlBase+"?s="+searchString; 477 478 location.href = urlSearch; 479 } 480 481 /** 482 * on input box key up - if enter clicked - go to search 483 */ 484 function onInputBoxKeyUp(event){ 485 if(event.keyCode !== 13) 486 return(true); 487 488 doSearch(); 489 } 490 491 /** 492 * on menu body click - disable propogation 493 */ 494 function onMenuBodyClick(event){ 495 event.stopPropagation(); 496 } 497 498 /** 499 * on body click - close the menu if needed 500 */ 501 function onBodyClick(){ 502 var isClosed = isMenuClosed(); 503 504 if(isClosed == true) 505 return(true); 506 507 closeNav(); 508 } 509 510 //on trigger link click 511 512 function onLinkClick(e){ 513 var objLink = jQuery(this); 514 515 var dataMenuName = g_menuWrapper.data('name'); 516 var dataLinkName = objLink.data('name'); 517 518 if(dataLinkName == undefined){ 519 return(false); 520 } 521 522 e.preventDefault(); 523 if(dataLinkName == dataMenuName){ 524 g_objButtonToggle.trigger("click"); 525 }else{ 526 return(false); 527 } 528 } 529 530 /** 531 * init open links 532 */ 533 function initLinks(){ 534 var objLinks = jQuery('.ue-link-open-menu').not(".uc-link-inited"); 535 536 if(objLinks.length == 0){ 537 return(false); 538 } 539 540 var elementName = g_menuWrapper.data("name"); 541 542 jQuery.each(objLinks, function(index, linkElement){ 543 var objLink = jQuery(linkElement); 544 var name = objLink.data("name"); 545 546 if(name != elementName) 547 return(true); 548 549 objLink.addClass("uc-link-inited"); 550 objLink.on("click", onLinkClick); 551 552 }); 553 } 554 555 /* 556 * scrolls to elment 557 */ 558 function scrollMenuToElement(elementOffsetTop){ 559 560 var objScrollableHolder = jQuery("#"+menuWrapperID).find(".uc-side-menu-items"); 561 562 //wait untill all transitions are finished 563 setTimeout(function(){ 564 objScrollableHolder.animate({ 565 scrollTop: elementOffsetTop 566 }, 100) 567 568 }, 500); 569 } 570 571 /** 572 * finds if element is in viewport 573 */ 574 function isElementInViewport(element) { 575 var elementTop = element.offset().top; 576 var elementBottom = elementTop + element.outerHeight(); 577 578 var viewportTop = jQuery(window).scrollTop(); 579 var viewportBottom = viewportTop + jQuery(window).height(); 580 581 var isInViwport = elementBottom > viewportTop && elementTop < viewportBottom; 582 583 return(isInViwport); 584 } 585 586 /* 587 * check url and select active item 588 */ 589 function checkUrlAndSelectActive(){ 590 var currentPageClass = "current_page_item"; 591 var objlinks = jQuery("#"+menuWrapperID).find('a'); 592 593 objlinks.each(function(){ 594 var objLink = jQuery(this); 595 var linkHref = objLink.attr("href"); 596 597 //if link has same link adress as menu item then open menu item 598 if(linkHref != urlAjax) 599 return(true); 600 601 var objMenuListItem = objLink.parents('li'); 602 603 objlinks.removeClass(currentPageClass); 604 objMenuListItem.addClass(currentPageClass); 605 606 var objParentLinks = objLink.parents(g_subMenuSelector).prev(); 607 608 objParentLinks.each(function(index, elem){ 609 var objParentLink = jQuery(this); 610 611 if(objParentLink.hasClass("collapsed")){ 612 613 if(g_isClickable == false){ 614 openCloseItem(objParentLink[0]); 615 } 616 617 if(g_isClickable == true){ 618 var objPointer = objParentLink.find(".uc-menu-item-pointer"); 619 620 openCloseItem(objPointer[0], false, true, true); 621 } 622 } 623 }); 624 625 //check if item is in viewport and scroll if needed 626 objLinkOffsetTop = objLink.offset().top; 627 628 if(isElementInViewport(objLink) == false){ 629 scrollMenuToElement(objLinkOffsetTop); 630 } 631 }); 632 } 633 634 /* 635 * open current page menu item 636 */ 637 function checkUrlAndTriggerClick(){ 638 if(g_startExpanded == true) 639 return(false); 640 641 var currentPageClass = "current_page_item"; 642 643 var objlinks = jQuery("#"+menuWrapperID).find('a'); 644 645 objlinks.each(function(){ 646 647 var objLink = jQuery(this); 648 var linkHref = objLink.attr("href"); 649 650 //if link has same link adress as menu item then open menu item 651 if(linkHref != urlAjax) 652 return(true); 653 654 var objMenuListItem = objLink.parents('li'); 655 656 objlinks.removeClass(currentPageClass); 657 objMenuListItem.addClass(currentPageClass); 658 659 //check if item is in viewport and scroll if needed 660 objLinkOffsetTop = objLink.offset().top; 661 662 if(isElementInViewport(objLink) == false){ 663 scrollMenuToElement(objLinkOffsetTop); 664 } 665 666 var objLinkToOpens = objLink.parents(g_subMenuSelector).prev(); 667 668 if(g_isClickable == false){ 669 objLinkToOpens.each(function(){ 670 var objLinkToOpen = jQuery(this); 671 openCloseItem(objLinkToOpen[0]); 672 673 }); 674 } 675 676 if(g_isClickable == true){ 677 objLinkToOpens.each(function(){ 678 679 var objLinkToOpen = jQuery(this); 680 var objPointer = objLinkToOpen.find(".uc-menu-item-pointer"); 681 682 openCloseItem(objPointer[0], false, true, true); 683 }); 684 } 685 }); 686 } 687 688 /** 689 * check if menu is hidden after resize 690 */ 691 function onWindowResize(){ 692 var isMenuOpened = jQuery("body").hasClass(g_menuOpenedClass); 693 694 //only if menu is opened and body has overflow hidden 695 if(isMenuOpened == false) 696 return(false); 697 698 var objParents = g_menuWrapper.parents(); 699 700 objParents.each(function(){ 701 702 var objParent = jQuery(this); 703 var isParentVisible = objParent.is(":visible"); 704 705 if(isParentVisible == true) 706 return(true); 707 708 closeNav(); 709 }); 710 711 } 712 713 /** 714 * append back links to submenus 715 */ 716 function appendBackLinksToSubMenus(){ 717 if(g_subsFromSide == false) 718 return(false); 719 720 var objSubMenus = g_menuWrapper.find(g_subMenuSelector); 721 722 if(!objSubMenus || objSubMenus.length == 0) 723 return(false); 724 725 var iconHtml; 726 var backLinkIconClass = "ue-back-link-icon";
727 var objBackLinkIconPlaceholder = g_objWrapper.find(".uc-side-menu-back-link-icon"); 728 729 if(!objBackLinkIconPlaceholder || objBackLinkIconPlaceholder.length == 0) 730 iconHtml = `<span class="${backLinkIconClass}"></span>`; 731 else 732 iconHtml = `<span class="${backLinkIconClass}">${objBackLinkIconPlaceholder.html()}</span>`; 733 734 objSubMenus.each(function(){ 735 var objSubMenu = jQuery(this); 736 var backlinkText = g_objWrapper.data("backlink-text"); 737 var backLinkHtml = `<li class="${g_backLinkClass}"><a href="javascript:void(0);">${backlinkText} ${iconHtml}</a></li>`; 738 739 objSubMenu.prepend(backLinkHtml); 740 }); 741 } 742 743 /** 744 * on back link click 745 */ 746 function onBackLinkClick(){ 747 var objBackLink = jQuery(this); 748 var objParentSubMenu = objBackLink.closest(g_subMenuSelector); 749 var objMenuLink = objParentSubMenu.prev(); 750 751 collapseSection(objParentSubMenu[0], objMenuLink); 752 menuItemIconToggle(objMenuLink[0]); 753 } 754 755 /** 756 * collapse inner section after init 757 */ 758 function initCollapsedState(item){ 759 collapseInnerSection(item.nextElementSibling); 760 761 jQuery(item).addClass("collapsed"); 762 jQuery(item).removeClass("expanded"); 763 } 764 765 /** 766 * run the menu, init 767 */ 768 function runMenu(){ 769 770 //classes 771 g_backLinkClass = "ue-back-link"; 772 773 //selectors 774 g_subMenuSelector = ".sub-menu"; 775 776 g_objWrapper = jQuery("#"+menuWrapperID); 777 g_menuWrapper = g_objWrapper.find(".uc-side-menu-wrapper"); 778 g_isClickable = g_objWrapper.data("clickable"); 779 g_isCloseOnOpen = g_objWrapper.data("closeothers"); 780 g_subsFromSide = g_objWrapper.data("subs-from-side"); 781 var isCloseOnBody = g_objWrapper.data("closeonbody"); 782 g_isOpenOnLoad = g_menuWrapper.data("openonload"); 783 g_pushOnOpen = g_objWrapper.data("push"); 784 g_pushOnOpenMobile = g_objWrapper.data("push-mobile") 785 g_dataSpeed = g_objWrapper.data("speed"); 786 g_startExpanded = g_objWrapper.data("expand"); 787 var objButtonClose = g_menuWrapper.find(".uc-close-side-menu"); 788 g_objButtonToggle = g_objWrapper.find(".open_side_menu"); 789 g_objInputBox = g_menuWrapper.find("input[type='text']"); 790 g_menuID = menuWrapperID; 791 g_menuOpenedClass = "menu-opened"; 792 793 if(g_menuWrapper.length == 0){ 794 console.log("menu with ID: "+menuWrapperID+" not found!"); 795 return(false); 796 } 797 798 if(objButtonClose.length == 0){ 799 console.log("The close button not found"); 800 return(false); 801 } 802 803 if(g_objButtonToggle.length == 0){ 804 console.log("The trigger button not found"); 805 return(false); 806 } 807 808 //collapse or expand all 809 var dataExpandFirst = g_objWrapper.data("first-expand"); 810 811 g_menuWrapper.find("ul.uc-list-menu li a").each((i, item) => { 812 if(item.nextElementSibling){ 813 814 var objItem = jQuery(item); 815 objItem.append("<span class='uc-menu-item-pointer'></span>"); 816 817 if(g_startExpanded == false){ 818 819 //expand first 820 if(dataExpandFirst == true && i != 0) 821 initCollapsedState(item); 822 else if(dataExpandFirst == false) 823 initCollapsedState(item); 824 825 }else{ 826 827 jQuery(item).removeClass("collapsed"); 828 jQuery(item).addClass("expanded"); 829 830 } 831 832 //add icons to pointer elements 833 menuItemIconToggle(item); 834 } 835 }); 836 837 initLinks(); 838 839 //append sub menu back links 840 appendBackLinksToSubMenus(); 841 842 //on back link click 843 jQuery(`.${g_backLinkClass}`).on("click", onBackLinkClick); 844 845 //init events 846
847 if(g_objInputBox.length == 0) 848 g_objInputBox = null; 849 850 if(g_objInputBox) 851 g_objInputBox.on("keyup",onInputBoxKeyUp); 852 853 var objButtonSearch = g_menuWrapper.find(".side-menu-search-button-search"); 854 objButtonSearch.on("click", doSearch); 855 856 var objLinks = g_menuWrapper.find("ul.uc-list-menu li a"); 857 858 if(g_isClickable == false){ 859 objLinks.on("click", onMenuItemClick); 860 }else{ 861 862 var objPointers = g_menuWrapper.find("ul.uc-list-menu li .uc-menu-item-pointer"); 863 864 //pointer click - toggle section 865 objPointers.on("click", function(event){ 866 event.preventDefault(); 867 868 var objLink = jQuery(this); 869 var objParentLink = objLink.parent(); 870 871 toggleSection(objParentLink); 872 873 menuItemIconToggle(objParentLink[0]); 874 875 }); 876 877 //close nav if anchor link clicked 878 objLinks.on("click", function(event){ 879 var objLink = jQuery(this); 880 881 closeNavOnAnchorLinkClick(objLink, event); 882 }); 883 884 } 885 886 if(dataExpandFirst == false) 887 setTimeout(checkUrlAndTriggerClick,500); 888 889 objButtonClose.on("click", closeNav); 890 891 g_objButtonToggle.on("click", onButtonToggleClick); 892 893 if(isCloseOnBody === true){ 894 var objOverlay = g_menuWrapper.find(".ue_side_menu_overlay"); 895 896 if(objOverlay.length) 897 objOverlay.on("click", closeNav); 898 else{ 899 g_menuWrapper.on("click", onBodyClick); 900 g_objButtonToggle.on("click", onBodyClick); 901 902 jQuery("body").on("click", onBodyClick); 903 } 904 } 905 906 if(g_isOpenOnLoad === true){ 907 g_objButtonToggle.trigger("click"); 908 } 909 910 jQuery(window).on("resize", onWindowResize); 911 } 912 913 runMenu(); 914} 915
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.