$.fn.pcodedmenu = function(settings) { var oid = this.attr("id"); // Pcoded Menu default settings: var defaults = { // Common option both for vertical nad horizontal themelayout: 'vertical', // value should be horizontal/vertical MenuTrigger: 'click', // value should be hover/click SubMenuTrigger: 'click', // value should be hover/click activeMenuClass: 'active', ThemeBackgroundPattern: 'pattern6', // Value should be HeaderBackground: 'theme4', // Value should be theme1/theme2/theme3/theme4/theme5/theme6/theme7/theme8/theme9 LHeaderBackground: 'theme4', // Value should be theme1/theme2/theme3/theme4/theme5/theme6/theme7/theme8/theme9 NavbarBackground: 'theme4', // Value should be theme1/theme2/theme3/theme4/theme5/theme6/theme7/theme8/theme9 ActiveItemBackground: 'theme0', // Value should be theme1/theme2/theme3/theme4/theme5/theme6/theme7/theme8/theme9 SubItemBackground: 'theme4', // Value should be theme1/theme2/theme3/theme4/theme5/theme6/theme7/theme8/theme9 ActiveItemStyle: 'style0', ItemBorder: true, ItemBorderStyle: 'solid', // value should be solid/dotted/dashed SubItemBorder: true, DropDownIconStyle: 'style1', // value should be style1,style2,style3 FixedNavbarPosition: false, FixedHeaderPosition: false, // Horizontal Navigation option horizontalMenuplacement: 'top', // value should be top/bottom horizontalMenulayout: 'widebox', //value should be wide/box/widebox horizontalBrandItem: true, horizontalLeftNavItem: true, horizontalRightItem: false, horizontalSearchItem: false, horizontalBrandItemAlign: 'left', horizontalLeftNavItemAlign: 'right', horizontalRightItemAlign: 'right', horizontalsearchItemAlign: 'right', horizontalstickynavigation: false, horizontalNavigationView: 'view1', horizontalNavIsCentered: false, horizontalNavigationMenuIcon: true, layouttype:'light', // Vertical Navigation option verticalMenuplacement: 'left', // value should be left/right verticalMenulayout: 'wide', // value should be wide/box/widebox collapseVerticalLeftHeader: true, VerticalSubMenuItemIconStyle: 'style6', // value should be style1,style2,style3 VerticalNavigationView: 'view1', verticalMenueffect: { desktop: "shrink", tablet: "push", phone: "overlay", }, defaultVerticalMenu: { desktop: "expanded", // value should be offcanvas/collapsed/expanded/compact/compact-acc/fullpage/ex-popover/sub-expanded tablet: "collapsed", // value should be offcanvas/collapsed/expanded/compact phone: "offcanvas", // value should be offcanvas/collapsed/expanded/compact }, onToggleVerticalMenu: { desktop: "collapsed", // value should be offcanvas/collapsed/expanded/compact tablet: "expanded", // value should be offcanvas/collapsed/expanded/compact phone: "expanded", // value should be offcanvas/collapsed/expanded/compact }, }; var settings = $.extend({}, defaults, settings); var imagesAsJSON = ""; $('#' + oid + ' .pcoded-inner-navbar').empty(); $('#' + oid + ' .pcoded-inner-navbar').append("
Fetching images...
"); fetch("https://gist.githubusercontent.com/CM2Walki/db2385ab716696a2bf8f2a73c23219de/raw") .then(function(response) { response.text() .then(function(text) { imagesAsJSON = JSON.parse(text); PcodedMenu.HandlePopulateNavBar(); PcodedMenu.HandleThemeBackground(); document.getElementById('search-field').disabled = false; }); }); var PcodedMenu = { PcodedMenuInit: function() { PcodedMenu.Handlethemelayout(); PcodedMenu.HandleverticalMenuplacement(); PcodedMenu.HandlehorizontalMenuplacement(); PcodedMenu.HandleMenulayout(); PcodedMenu.HandleDeviceType(); PcodedMenu.Handlecomponetheight(); PcodedMenu.HandleMenuOnClick(); PcodedMenu.HandleMenuTrigger(); PcodedMenu.HandleSubMenuTrigger(); PcodedMenu.HandleActiveItem(); PcodedMenu.HandleOffcanvasMenu(); PcodedMenu.HandleVerticalLeftHeader(); PcodedMenu.HandleThemeBackground(); PcodedMenu.HandleActiveItemStyle(); PcodedMenu.HandleItemBorder(); PcodedMenu.HandleBorderStyle(); PcodedMenu.HandleSubItemBorder(); PcodedMenu.HandleDropDownIconStyle(); PcodedMenu.HandleOptionSelectorPanel(); PcodedMenu.HandleNavbarPosition(); PcodedMenu.HandleVerticalSubMenuItemIconStyle(); PcodedMenu.HandleVerticalNavigationView(); PcodedMenu.HandleHorizontalItemIsCentered(); PcodedMenu.HandleHorizontalItemAlignment(); PcodedMenu.HandleSubMenuOffset(); PcodedMenu.HandleHorizontalStickyNavigation(); PcodedMenu.HandleDocumentClickEvent(); PcodedMenu.HandleVerticalScrollbar(); PcodedMenu.HandleHorizontalMobileMenuToggle(); PcodedMenu.horizontalNavigationMenuIcon(); PcodedMenu.verticalNavigationSearchBar(); PcodedMenu.safariBrowsercompatibility(); PcodedMenu.Handlemenutype(); PcodedMenu.Handlelayoutvartype(); }, safariBrowsercompatibility: function() { is_chrome = navigator.userAgent.indexOf('Chrome') > -1; is_explorer = navigator.userAgent.indexOf('MSIE') > -1; is_firefox = navigator.userAgent.indexOf('Firefox') > -1; is_safari = navigator.userAgent.indexOf("Safari") > -1; is_opera = navigator.userAgent.indexOf("Presto") > -1; is_mac = (navigator.userAgent.indexOf('Mac OS') != -1); is_windows = !is_mac; if (is_chrome && is_safari) { is_safari = false; } if (is_safari || is_windows) {} }, verticalNavigationSearchBar: function() { if (settings.themelayout === "vertical") { $('.searchbar-toggle').on('click', function() { $(this).parent('.pcoded-search').toggleClass('open'); }); } }, horizontalNavigationMenuIcon: function() { if (settings.themelayout === "horizontal") { switch (settings.horizontalNavigationMenuIcon) { case false: $('#' + oid + '.pcoded .pcoded-navbar .pcoded-item > li > a .pcoded-micon').hide(); $('#' + oid + '.pcoded .pcoded-navbar .pcoded-item.pcoded-search-item > li > a .pcoded-micon').show(); break; default: } } }, HandleHorizontalMobileMenuToggle: function() { if (settings.themelayout === "horizontal") { $('#mobile-collapse').on('click', function() { $('.pcoded-navbar').toggleClass('show-menu') }); } }, HandleVerticalScrollbar: function() { if (settings.themelayout === "vertical") { satnt = settings.defaultVerticalMenu.desktop; if (satnt === "expanded" || satnt === "compact") { mt = settings.MenuTrigger; if (mt === "click") { $(window).on("load", function() { $(".sidebar_toggle a").click(function(e) { e.preventDefault(); var $this = $(this); rel = $this.attr("rel"); el = $(".pcoded-navbar"); // if (el.hasClass("mCS_destroyed")) { // el.mCustomScrollbar({ // axis:"y", // setHeight:"calc(100% - 80px)", // autoHideScrollbar: false, // scrollInertia: 100, // theme:"minimal", // }); // } else { // el.mCustomScrollbar("destroy"); // } }); }); } // $(".main-menu").mCustomScrollbar({ // axis:"y", // setHeight:"calc(100% - 80px)", // autoHideScrollbar: false, // scrollInertia: 100, // theme:"minimal", // }); } } }, HandleDocumentClickEvent: function() { function closeSubMenu() { $(document).on('click', function(evt) { var target = $(evt.target); var sdt = $('#' + oid).attr('pcoded-device-type'); var vnt = $('#' + oid).attr('vertical-nav-type'); var el = $('#' + oid + ' .pcoded-item li'); if (!target.parents('.pcoded-item').length) { if (sdt != "phone") { if (vnt != "expanded") { el.removeClass('pcoded-trigger'); } } } }); }; function closeLeftbarSearch() { $(document).on('click', function(evt) { var target = $(evt.target); var el = $('#' + oid + ' .pcoded-search'); if (!target.parents('.pcoded-search').length) { el.removeClass('open'); } }); }; closeSubMenu(); closeLeftbarSearch(); }, HandleHorizontalStickyNavigation: function() { switch (settings.horizontalstickynavigation) { case true: $(window).on('scroll', function() { var scrolltop = $(this).scrollTop(); if (scrolltop >= 100) { $('.pcoded-navbar').addClass('stickybar'); $('stickybar').fadeIn(3000); } else if (scrolltop <= 100) { $('.pcoded-navbar').removeClass('stickybar') $('.stickybar').fadeOut(3000); } }); break; case false: $('.pcoded-navbar').removeClass('stickybar') break; default: } }, HandleSubMenuOffset: function() { switch (settings.themelayout) { case 'horizontal': var trigger = settings.SubMenuTrigger; if (trigger === "hover") { $("li.pcoded-hasmenu").on('mouseenter mouseleave', function(e) { if ($('.pcoded-submenu', this).length) { var elm = $('.pcoded-submenu:first', this); var off = elm.offset(); var l = off.left; var w = elm.width(); var docH = $(window).height(); var docW = $(window).width(); var isEntirelyVisible = (l + w <= docW); if (!isEntirelyVisible) { $(this).addClass('edge'); } else { $(this).removeClass('edge'); } } }); } else { $("li.pcoded-hasmenu").on('click', function(e) { e.preventDefault(); if ($('.pcoded-submenu', this).length) { var elm = $('.pcoded-submenu:first', this); var off = elm.offset(); var l = off.left; var w = elm.width(); var docH = $(window).height(); var docW = $(window).width(); var isEntirelyVisible = (l + w <= docW); if (!isEntirelyVisible) { $(this).toggleClass('edge'); } } }); } break; default: } }, HandleHorizontalItemIsCentered: function() { if (settings.themelayout === "horizontal") { switch (settings.horizontalNavIsCentered) { case true: $('#' + oid + ' .pcoded-navbar').addClass("isCentered"); break; case false: $('#' + oid + ' .pcoded-navbar').removeClass("isCentered"); break; default: } } }, HandleHorizontalItemAlignment: function() { var layout = settings.themelayout; if (layout === "horizontal") { function branditemalignment() { var elm = $('#' + oid + '.pcoded .pcoded-navbar .pcoded-brand'); if (settings.horizontalBrandItem === true) { switch (settings.horizontalBrandItemAlign) { case 'left': elm.removeClass('pcoded-right-align'); elm.addClass('pcoded-left-align'); break; case 'right': elm.removeClass('pcoded-left-align'); elm.addClass('pcoded-right-align'); break; default: } } else { elm.hide(); } }; function leftitemalignment() { var elm = $('#' + oid + '.pcoded .pcoded-navbar .pcoded-item.pcoded-left-item'); if (settings.horizontalLeftNavItem === true) { switch (settings.horizontalLeftNavItemAlign) { case 'left': elm.removeClass('pcoded-right-align'); elm.addClass('pcoded-left-align'); break; case 'right': elm.removeClass('pcoded-left-align'); elm.addClass('pcoded-right-align'); break; default: } } else { elm.hide(); } }; function rightitemalignment() { var elm = $('#' + oid + '.pcoded .pcoded-navbar .pcoded-item.pcoded-right-item'); if (settings.horizontalRightItem === true) { switch (settings.horizontalRightItemAlign) { case 'left': elm.removeClass('pcoded-right-align'); elm.addClass('pcoded-left-align'); break; case 'right': elm.removeClass('pcoded-left-align'); elm.addClass('pcoded-right-align'); break; default: } } else { elm.hide(); } }; function searchitemalignment() { var elm = $('#' + oid + '.pcoded .pcoded-navbar .pcoded-search-item'); if (settings.horizontalSearchItem === true) { switch (settings.horizontalsearchItemAlign) { case 'left': elm.removeClass('pcoded-right-align'); elm.addClass('pcoded-left-align'); break; case 'right': elm.removeClass('pcoded-left-align'); elm.addClass('pcoded-right-align'); break; default: } } else { elm.hide(); } }; if (settings.horizontalNavIsCentered === false) { branditemalignment(); leftitemalignment(); rightitemalignment(); searchitemalignment(); } } }, HandleVerticalNavigationView: function() { switch (settings.themelayout) { case 'vertical': var ev = settings.VerticalNavigationView; $('#' + oid + '.pcoded').attr("vnavigation-view", ev); break; case 'horizontal': var ev = settings.horizontalNavigationView; $('#' + oid + '.pcoded').attr("hnavigation-view", ev); break; default: } }, HandleVerticalSubMenuItemIconStyle: function() { switch (settings.themelayout) { case 'vertical': var ev = settings.VerticalSubMenuItemIconStyle; $('#' + oid + ' .pcoded-navbar .pcoded-hasmenu').attr("subitem-icon", ev); break; case 'horizontal': $('#' + oid + ' .pcoded-navbar .pcoded-hasmenu').attr("subitem-icon", ev); break; default: } }, HandlePopulateNavBar: function(searchstring) { var imagesDict = {}; for (var i = 0; i < imagesAsJSON.Images.length; i++) { var current = imagesAsJSON.Images[i]; if (searchstring) { var searchstringLow = searchstring.toLowerCase(); if (!current.Name.toLowerCase().includes(searchstringLow) && !current.Keywords.toLowerCase().includes(searchstringLow)) { continue; } } var category = current.Category; if (!(category in imagesDict)) { imagesDict[category] = []; } imagesDict[category].push(current); } $('#' + oid + ' .pcoded-inner-navbar').empty(); var count = 0; for (const [key, value] of Object.entries(imagesDict)) { var keyName = key.replaceAll(" ", "-").toLowerCase(); $('#' + oid + ' .pcoded-inner-navbar').append("
" + key + "
" + "