Advertisement
Guest User

Untitled

a guest
Jul 24th, 2020
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*=========================================================================================
  2.   File Name: app.js
  3.   Description: Template related app JS.
  4.   ----------------------------------------------------------------------------------------
  5.   Item Name: Vuexy  - Vuejs, HTML & Laravel Admin Dashboard Template
  6.   Author: Pixinvent
  7.   Author URL: hhttp://www.themeforest.net/user/pixinvent
  8. ==========================================================================================*/
  9.  
  10. (function (window, document, $) {
  11.   "use strict";
  12.   var $html = $("html");
  13.   var $body = $("body");
  14.   var $danger = "#ea5455";
  15.   var $primary = "#7367f0";
  16.   var $textcolor = "#4e5154";
  17.  
  18.   $(window).on("load", function () {
  19.     var rtl;
  20.     var compactMenu = false; // Set it to true, if you want default menu to be compact
  21.  
  22.     if ($body.hasClass("menu-collapsed")) {
  23.       compactMenu = true;
  24.     }
  25.  
  26.     if ($("html").data("textdirection") == "rtl") {
  27.       rtl = true;
  28.     }
  29.  
  30.     setTimeout(function () {
  31.       $html.removeClass("loading").addClass("loaded");
  32.     }, 1200);
  33.  
  34.     $.app.menu.init(compactMenu);
  35.  
  36.     // Navigation configurations
  37.     var config = {
  38.       speed: 300 // set speed to expand / collpase menu
  39.     };
  40.     if ($.app.nav.initialized === false) {
  41.       $.app.nav.init(config);
  42.     }
  43.  
  44.     Unison.on("change", function (bp) {
  45.       $.app.menu.change();
  46.     });
  47.  
  48.     // Tooltip Initialization
  49.     $('[data-toggle="tooltip"]').tooltip({
  50.       container: "body"
  51.     });
  52.  
  53.     // Top Navbars - Hide on Scroll
  54.     if ($(".navbar-hide-on-scroll").length > 0) {
  55.       $(".navbar-hide-on-scroll.fixed-top").headroom({
  56.         offset: 205,
  57.         tolerance: 5,
  58.         classes: {
  59.           // when element is initialised
  60.           initial: "headroom",
  61.           // when scrolling up
  62.           pinned: "headroom--pinned-top",
  63.           // when scrolling down
  64.           unpinned: "headroom--unpinned-top"
  65.         }
  66.       });
  67.       // Bottom Navbars - Hide on Scroll
  68.       $(".navbar-hide-on-scroll.fixed-bottom").headroom({
  69.         offset: 205,
  70.         tolerance: 5,
  71.         classes: {
  72.           // when element is initialised
  73.           initial: "headroom",
  74.           // when scrolling up
  75.           pinned: "headroom--pinned-bottom",
  76.           // when scrolling down
  77.           unpinned: "headroom--unpinned-bottom"
  78.         }
  79.       });
  80.     }
  81.  
  82.     // Collapsible Card
  83.     $('a[data-action="collapse"]').on("click", function (e) {
  84.       e.preventDefault();
  85.       $(this)
  86.         .closest(".card")
  87.         .children(".card-content")
  88.         .collapse("toggle");
  89.       // Adding bottom padding on card collapse
  90.       $(this)
  91.         .closest(".card")
  92.         .children(".card-header")
  93.         .css("padding-bottom", "1.5rem");
  94.       $(this)
  95.         .closest(".card")
  96.         .find('[data-action="collapse"]')
  97.         .toggleClass("rotate");
  98.     });
  99.  
  100.     // Toggle fullscreen
  101.     $('a[data-action="expand"]').on("click", function (e) {
  102.       e.preventDefault();
  103.       $(this)
  104.         .closest(".card")
  105.         .find('[data-action="expand"] i')
  106.         .toggleClass("icon-maximize icon-minimize");
  107.       $(this)
  108.         .closest(".card")
  109.         .toggleClass("card-fullscreen");
  110.     });
  111.  
  112.     //  Notifications & messages scrollable
  113.     $(".scrollable-container").each(function () {
  114.       var scrollable_container = new PerfectScrollbar($(this)[0], {
  115.         wheelPropagation: false
  116.       });
  117.     });
  118.  
  119.     // Reload Card
  120.     $('a[data-action="reload"]').on("click", function () {
  121.       var block_ele = $(this)
  122.         .closest(".card")
  123.         .find(".card-content");
  124.       var reloadActionOverlay;
  125.       if ($body.hasClass("dark-layout")) {
  126.         var reloadActionOverlay = "#10163a";
  127.       } else {
  128.         var reloadActionOverlay = "#fff";
  129.       }
  130.       // Block Element
  131.       block_ele.block({
  132.         message: '<div class="feather icon-refresh-cw icon-spin font-medium-2 text-primary"></div>',
  133.         timeout: 2000, //unblock after 2 seconds
  134.         overlayCSS: {
  135.           backgroundColor: reloadActionOverlay,
  136.           cursor: "wait"
  137.         },
  138.         css: {
  139.           border: 0,
  140.           padding: 0,
  141.           backgroundColor: "none"
  142.         }
  143.       });
  144.     });
  145.  
  146.     // Close Card
  147.     $('a[data-action="close"]').on("click", function () {
  148.       $(this).closest(".card").removeClass().slideUp("fast");
  149.     });
  150.  
  151.     // Match the height of each card in a row
  152.     setTimeout(function () {
  153.       $(".row.match-height").each(function () {
  154.         $(this).find(".card").not(".card .card").matchHeight(); // Not .card .card prevents collapsible cards from taking height
  155.       });
  156.     }, 500);
  157.  
  158.     $('.card .heading-elements a[data-action="collapse"]').on(
  159.       "click",
  160.       function () {
  161.         var $this = $(this),
  162.           card = $this.closest(".card");
  163.         var cardHeight;
  164.  
  165.         if (parseInt(card[0].style.height, 10) > 0) {
  166.           cardHeight = card.css("height");
  167.           card.css("height", "").attr("data-height", cardHeight);
  168.         } else {
  169.           if (card.data("height")) {
  170.             cardHeight = card.data("height");
  171.             card.css("height", cardHeight).attr("data-height", "");
  172.           }
  173.         }
  174.       }
  175.     );
  176.  
  177.     // Add sidebar group active class to active menu
  178.     $(".main-menu-content").find("li.active").parents("li").addClass("sidebar-group-active");
  179.  
  180.     // Add open class to parent list item if subitem is active except compact menu
  181.     var menuType = $body.data("menu");
  182.     if (menuType != "horizontal-menu" && compactMenu === false) {
  183.       $(".main-menu-content").find("li.active").parents("li").addClass("open");
  184.     }
  185.     if (menuType == "horizontal-menu") {
  186.       $(".main-menu-content").find("li.active").parents("li:not(.nav-item)").addClass("open");
  187.       $(".main-menu-content").find('li.active').closest('li.nav-item').addClass('sidebar-group-active open');
  188.       // $(".main-menu-content")
  189.       //   .find("li.active")
  190.       //   .parents("li")
  191.       //   .addClass("active");
  192.     }
  193.  
  194.     //card heading actions buttons small screen support
  195.     $(".heading-elements-toggle").on("click", function () {
  196.       $(this)
  197.         .next(".heading-elements")
  198.         .toggleClass("visible");
  199.     });
  200.  
  201.     //  Dynamic height for the chartjs div for the chart animations to work
  202.     var chartjsDiv = $(".chartjs"),
  203.       canvasHeight = chartjsDiv.children("canvas").attr("height"),
  204.       mainMenu = $(".main-menu");
  205.     chartjsDiv.css("height", canvasHeight);
  206.  
  207.     if ($body.hasClass("boxed-layout")) {
  208.       if ($body.hasClass("vertical-overlay-menu")) {
  209.         var menuWidth = mainMenu.width();
  210.         var contentPosition = $(".app-content").position().left;
  211.         var menuPositionAdjust = contentPosition - menuWidth;
  212.         if ($body.hasClass("menu-flipped")) {
  213.           mainMenu.css("right", menuPositionAdjust + "px");
  214.         } else {
  215.           mainMenu.css("left", menuPositionAdjust + "px");
  216.         }
  217.       }
  218.     }
  219.  
  220.     //Custom File Input
  221.     $(".custom-file input").change(function (e) {
  222.       $(this)
  223.         .next(".custom-file-label")
  224.         .html(e.target.files[0].name);
  225.     });
  226.  
  227.     /* Text Area Counter Set Start */
  228.  
  229.     $(".char-textarea").on("keyup", function (event) {
  230.       checkTextAreaMaxLength(this, event);
  231.       // to later change text color in dark layout
  232.       $(this).addClass("active");
  233.     });
  234.  
  235.     /*
  236.     Checks the MaxLength of the Textarea
  237.     -----------------------------------------------------
  238.     @prerequisite:  textBox = textarea dom element
  239.             e = textarea event
  240.                     length = Max length of characters
  241.     */
  242.     function checkTextAreaMaxLength(textBox, e) {
  243.       var maxLength = parseInt($(textBox).data("length")),
  244.         counterValue = $(".counter-value"),
  245.         charTextarea = $(".char-textarea");
  246.  
  247.       if (!checkSpecialKeys(e)) {
  248.         if (textBox.value.length < maxLength - 1)
  249.           textBox.value = textBox.value.substring(0, maxLength);
  250.       }
  251.       $(".char-count").html(textBox.value.length);
  252.  
  253.       if (textBox.value.length > maxLength) {
  254.         counterValue.css("background-color", $danger);
  255.         charTextarea.css("color", $danger);
  256.         // to change text color after limit is maxedout out
  257.         charTextarea.addClass("max-limit");
  258.       } else {
  259.         counterValue.css("background-color", $primary);
  260.         charTextarea.css("color", $textcolor);
  261.         charTextarea.removeClass("max-limit");
  262.       }
  263.  
  264.       return true;
  265.     }
  266.     /*
  267.     Checks if the keyCode pressed is inside special chars
  268.     -------------------------------------------------------
  269.     @prerequisite:  e = e.keyCode object for the key pressed
  270.     */
  271.     function checkSpecialKeys(e) {
  272.       if (
  273.         e.keyCode != 8 &&
  274.         e.keyCode != 46 &&
  275.         e.keyCode != 37 &&
  276.         e.keyCode != 38 &&
  277.         e.keyCode != 39 &&
  278.         e.keyCode != 40
  279.       )
  280.         return false;
  281.       else return true;
  282.     }
  283.  
  284.     $(".content-overlay").on("click", function () {
  285.       $(".search-list").removeClass("show");
  286.       $(".app-content").removeClass("show-overlay");
  287.       $(".bookmark-wrapper .bookmark-input").removeClass("show");
  288.     });
  289.  
  290.     // To show shadow in main menu when menu scrolls
  291.     var container = document.getElementsByClassName("main-menu-content");
  292.     if (container.length > 0) {
  293.       container[0].addEventListener("ps-scroll-y", function () {
  294.         if (
  295.           $(this)
  296.             .find(".ps__thumb-y")
  297.             .position().top > 0
  298.         ) {
  299.           $(".shadow-bottom").css("display", "block");
  300.         } else {
  301.           $(".shadow-bottom").css("display", "none");
  302.         }
  303.       });
  304.     }
  305.   });
  306.  
  307.   // Hide overlay menu on content overlay click on small screens
  308.   $(document).on("click", ".sidenav-overlay", function (e) {
  309.     // Hide menu
  310.     $.app.menu.hide();
  311.     return false;
  312.   });
  313.  
  314.   // Execute below code only if we find hammer js for touch swipe feature on small screen
  315.   if (typeof Hammer !== "undefined") {
  316.     // Swipe menu gesture
  317.     var swipeInElement = document.querySelector(".drag-target");
  318.  
  319.     if ($(swipeInElement).length > 0) {
  320.       var swipeInMenu = new Hammer(swipeInElement);
  321.  
  322.       swipeInMenu.on("panright", function (ev) {
  323.         if ($body.hasClass("vertical-overlay-menu")) {
  324.           $.app.menu.open();
  325.           return false;
  326.         }
  327.       });
  328.     }
  329.  
  330.     // menu swipe out gesture
  331.     setTimeout(function () {
  332.       var swipeOutElement = document.querySelector(".main-menu");
  333.       var swipeOutMenu;
  334.  
  335.       if ($(swipeOutElement).length > 0) {
  336.         swipeOutMenu = new Hammer(swipeOutElement);
  337.  
  338.         swipeOutMenu.get("pan").set({
  339.           direction: Hammer.DIRECTION_ALL,
  340.           threshold: 250
  341.         });
  342.  
  343.         swipeOutMenu.on("panleft", function (ev) {
  344.           if ($body.hasClass("vertical-overlay-menu")) {
  345.             $.app.menu.hide();
  346.             return false;
  347.           }
  348.         });
  349.       }
  350.     }, 300);
  351.  
  352.     // menu overlay swipe out gestrue
  353.     var swipeOutOverlayElement = document.querySelector(".sidenav-overlay");
  354.  
  355.     if ($(swipeOutOverlayElement).length > 0) {
  356.       var swipeOutOverlayMenu = new Hammer(swipeOutOverlayElement);
  357.  
  358.       swipeOutOverlayMenu.on("panleft", function (ev) {
  359.         if ($body.hasClass("vertical-overlay-menu")) {
  360.           $.app.menu.hide();
  361.           return false;
  362.         }
  363.       });
  364.     }
  365.   }
  366.  
  367.   $(document).on("click", ".menu-toggle, .modern-nav-toggle", function (e) {
  368.     e.preventDefault();
  369.  
  370.     // Toggle menu
  371.     $.app.menu.toggle();
  372.  
  373.     setTimeout(function () {
  374.       $(window).trigger("resize");
  375.     }, 200);
  376.  
  377.     if ($("#collapse-sidebar-switch").length > 0) {
  378.       setTimeout(function () {
  379.         if ($body.hasClass("menu-expanded") || $body.hasClass("menu-open")) {
  380.           $("#collapse-sidebar-switch").prop("checked", false);
  381.         } else {
  382.           $("#collapse-sidebar-switch").prop("checked", true);
  383.         }
  384.       }, 50);
  385.     }
  386.  
  387.     // Hides dropdown on click of menu toggle
  388.     // $('[data-toggle="dropdown"]').dropdown('hide');
  389.  
  390.     // Hides collapse dropdown on click of menu toggle
  391.     if (
  392.       $(".vertical-overlay-menu .navbar-with-menu .navbar-container .navbar-collapse").hasClass("show")
  393.     ) {
  394.       $(".vertical-overlay-menu .navbar-with-menu .navbar-container .navbar-collapse").removeClass("show");
  395.     }
  396.  
  397.     return false;
  398.   });
  399.  
  400.   // Add Children Class
  401.   $(".navigation")
  402.     .find("li")
  403.     .has("ul")
  404.     .addClass("has-sub");
  405.  
  406.   $(".carousel").carousel({
  407.     interval: 2000
  408.   });
  409.  
  410.   // Page full screen
  411.   $(".nav-link-expand").on("click", function (e) {
  412.     if (typeof screenfull != "undefined") {
  413.       if (screenfull.isEnabled) {
  414.         screenfull.toggle();
  415.       }
  416.     }
  417.   });
  418.   if (typeof screenfull != "undefined") {
  419.     if (screenfull.isEnabled) {
  420.       $(document).on(screenfull.raw.fullscreenchange, function () {
  421.         if (screenfull.isFullscreen) {
  422.           $(".nav-link-expand")
  423.             .find("i")
  424.             .toggleClass("icon-minimize icon-maximize");
  425.           $("html").addClass("full-screen");
  426.         } else {
  427.           $(".nav-link-expand")
  428.             .find("i")
  429.             .toggleClass("icon-maximize icon-minimize");
  430.           $("html").removeClass("full-screen");
  431.         }
  432.       });
  433.     }
  434.   }
  435.   $(document).ready(function () {
  436.     /**********************************
  437.      *   Form Wizard Step Icon
  438.      **********************************/
  439.     $(".step-icon").each(function () {
  440.       var $this = $(this);
  441.       if ($this.siblings("span.step").length > 0) {
  442.         $this.siblings("span.step").empty();
  443.         $(this).appendTo($(this).siblings("span.step"));
  444.       }
  445.     });
  446.   });
  447.  
  448.   // Update manual scroller when window is resized
  449.   $(window).resize(function () {
  450.     $.app.menu.manualScroller.updateHeight();
  451.   });
  452.  
  453.   $("#sidebar-page-navigation").on("click", "a.nav-link", function (e) {
  454.     e.preventDefault();
  455.     e.stopPropagation();
  456.     var $this = $(this),
  457.       href = $this.attr("href");
  458.     var offset = $(href).offset();
  459.     var scrollto = offset.top - 80; // minus fixed header height
  460.     $("html, body").animate({
  461.       scrollTop: scrollto
  462.     },
  463.       0
  464.     );
  465.     setTimeout(function () {
  466.       $this
  467.         .parent(".nav-item")
  468.         .siblings(".nav-item")
  469.         .children(".nav-link")
  470.         .removeClass("active");
  471.       $this.addClass("active");
  472.     }, 100);
  473.   });
  474.  
  475.  
  476.   // change language according to data-language of dropdown item
  477.   $(".dropdown-language .dropdown-item").on("click", function () {
  478.     var $this = $(this);
  479.     $this.siblings(".selected").removeClass("selected");
  480.     $this.addClass("selected");
  481.     var selectedLang = $this.text();
  482.     var selectedFlag = $this.find(".flag-icon").attr("class");
  483.     $("#dropdown-flag .selected-language").text(selectedLang);
  484.     $("#dropdown-flag .flag-icon")
  485.       .removeClass()
  486.       .addClass(selectedFlag);
  487.     // var currentLanguage = $this.data("language");
  488.     // i18next.changeLanguage(currentLanguage, function (err, t) {
  489.     //   $(".main-menu, .horizontal-menu-wrapper").localize();
  490.     // });
  491.   });
  492.  
  493.   // set language flag icon as
  494.   var language = $('html')[0].lang;
  495.   if (language !== null) {
  496.     // get the selected flag class
  497.     var selectedFlag = $(".dropdown-language .dropdown-item[data-language=" + language + "]").find(".flag-icon").attr("class");
  498.     var selectedLang = $(".dropdown-language .dropdown-item[data-language=" + language + "]").text();
  499.     // set the class in button
  500.     $("#dropdown-flag .selected-language").text(selectedLang);
  501.     $("#dropdown-flag .flag-icon")
  502.       .removeClass()
  503.       .addClass(selectedFlag);
  504.   }
  505.  
  506.   /********************* Bookmark & Search ***********************/
  507.   // This variable is used for mouseenter and mouseleave events of search list
  508.   var $filename = $(".search-input input").data("search"),
  509.     bookmarkWrapper = $(".bookmark-wrapper"),
  510.     bookmarkStar = $(".bookmark-wrapper .bookmark-star"),
  511.     bookmarkInput = $(".bookmark-wrapper .bookmark-input"),
  512.     navLinkSearch = $(".nav-link-search"),
  513.     searchInput = $(".search-input"),
  514.     searchInputInputfield = $(".search-input input"),
  515.     searchList = $(".search-input .search-list"),
  516.     appContent = $(".app-content"),
  517.     bookmarkSearchList = $(".bookmark-input .search-list");
  518.  
  519.   // Bookmark icon click
  520.   bookmarkStar.on("click", function (e) {
  521.     e.stopPropagation();
  522.     bookmarkInput.toggleClass("show");
  523.     bookmarkInput.find("input").val("");
  524.     bookmarkInput.find("input").blur();
  525.     bookmarkInput.find("input").focus();
  526.     bookmarkWrapper.find(".search-list").addClass("show");
  527.  
  528.     var arrList = $("ul.nav.navbar-nav.bookmark-icons li"),
  529.       $arrList = "",
  530.       $activeItemClass = "";
  531.  
  532.     $("ul.search-list li").remove();
  533.  
  534.     for (var i = 0; i < arrList.length; i++) {
  535.       if (i === 0) {
  536.         $activeItemClass = "current_item";
  537.       } else {
  538.         $activeItemClass = "";
  539.       }
  540.       $arrList +=
  541.         '<li class="auto-suggestion d-flex align-items-center justify-content-between cursor-pointer ' +
  542.         $activeItemClass +
  543.         '">' +
  544.         '<a class="d-flex align-items-center justify-content-between w-100" href=' +
  545.         arrList[i].firstChild.href +
  546.         ">" +
  547.         '<div class="d-flex justify-content-start align-items-center">' +
  548.         '<span class="mr-75 ' +
  549.         arrList[i].firstChild.firstChild.className +
  550.         '"  data-icon="' +
  551.         arrList[i].firstChild.firstChild.className +
  552.         '"></span>' +
  553.         "<span>" +
  554.         arrList[i].firstChild.dataset.originalTitle +
  555.         "</span>" +
  556.         "</div>" +
  557.         '<span class="float-right bookmark-icon feather icon-star warning"></span>' +
  558.         "</a>" +
  559.         "</li>";
  560.     }
  561.     $("ul.search-list").append($arrList);
  562.   });
  563.  
  564.   // Navigation Search area Open
  565.   navLinkSearch.on("click", function () {
  566.     var $this = $(this);
  567.     var searchInput = $(this).parent(".nav-search").find(".search-input");
  568.     searchInput.addClass("open");
  569.     searchInputInputfield.focus();
  570.     searchList.find("li").remove();
  571.     bookmarkInput.removeClass("show");
  572.   });
  573.  
  574.   // Navigation Search area Close
  575.   $(".search-input-close i").on("click", function () {
  576.     var $this = $(this),
  577.       searchInput = $(this).closest(".search-input");
  578.     if (searchInput.hasClass("open")) {
  579.       searchInput.removeClass("open");
  580.       searchInputInputfield.val("");
  581.       searchInputInputfield.blur();
  582.       searchList.removeClass("show");
  583.       appContent.removeClass("show-overlay");
  584.     }
  585.   });
  586.  
  587.   // Filter
  588.   if ($('.search-list-main').length) {
  589.     var searchListMain = new PerfectScrollbar(".search-list-main", {
  590.       wheelPropagation: false
  591.     });
  592.   }
  593.   if ($('.search-list-bookmark').length) {
  594.     var searchListBookmark = new PerfectScrollbar(".search-list-bookmark", {
  595.       wheelPropagation: false
  596.     });
  597.   }
  598.   // update Perfect Scrollbar on hover
  599.   $(".search-list-main").mouseenter(function () {
  600.     searchListMain.update();
  601.   });
  602.  
  603.   searchInputInputfield.on("keyup", function (e) {
  604.     $(this).closest(".search-list").addClass("show");
  605.     if (e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 13) {
  606.       if (e.keyCode == 27) {
  607.         appContent.removeClass("show-overlay");
  608.         bookmarkInput.find("input").val("");
  609.         bookmarkInput.find("input").blur();
  610.         searchInputInputfield.val("");
  611.         searchInputInputfield.blur();
  612.         searchInput.removeClass("open");
  613.         if (searchInput.hasClass("show")) {
  614.           $(this).removeClass("show");
  615.           searchInput.removeClass("show");
  616.         }
  617.       }
  618.  
  619.       // Define variables
  620.       var value = $(this).val().toLowerCase(), //get values of input on keyup
  621.         activeClass = "",
  622.         bookmark = false,
  623.         liList = $("ul.search-list li"); // get all the list items of the search
  624.       liList.remove();
  625.       // To check if current is bookmark input
  626.       if (
  627.         $(this)
  628.           .parent()
  629.           .hasClass("bookmark-input")
  630.       ) {
  631.         bookmark = true;
  632.       }
  633.  
  634.       // If input value is blank
  635.       if (value != "") {
  636.         appContent.addClass("show-overlay");
  637.  
  638.         // condition for bookmark and search input click
  639.         if (bookmarkInput.focus()) {
  640.           bookmarkSearchList.addClass("show");
  641.         } else {
  642.           searchList.addClass("show");
  643.           bookmarkSearchList.removeClass("show");
  644.         }
  645.         if (bookmark === false) {
  646.           searchList.addClass("show");
  647.           bookmarkSearchList.removeClass("show");
  648.         }
  649.  
  650.         var $startList = "",
  651.           $otherList = "",
  652.           $htmlList = "",
  653.           $bookmarkhtmlList = "",
  654.           $pageList = '<li class=" d-flex align-items-center">' +
  655.             '<a href="#" class="pb-25">' +
  656.             '<h6 class="text-primary mb-0">Pages</h6>' +
  657.             '</a>' +
  658.             '</li>',
  659.           $activeItemClass = "",
  660.           $bookmarkIcon = "",
  661.           $defaultList = "",
  662.           a = 0;
  663.  
  664.         // getting json data from file for search results
  665.         $.getJSON("data/" + $filename + ".json", function (
  666.           data
  667.         ) {
  668.           for (var i = 0; i < data.listItems.length; i++) {
  669.             // if current is bookmark then give class to star icon
  670.             if (bookmark === true) {
  671.               activeClass = ""; // resetting active bookmark class
  672.               var arrList = $("ul.nav.navbar-nav.bookmark-icons li"),
  673.                 $arrList = "";
  674.               // Loop to check if current seach value match with the bookmarks already there in navbar
  675.               for (var j = 0; j < arrList.length; j++) {
  676.                 if (
  677.                   data.listItems[i].name ===
  678.                   arrList[j].firstChild.dataset.originalTitle
  679.                 ) {
  680.                   activeClass = " warning";
  681.                   break;
  682.                 } else {
  683.                   activeClass = "";
  684.                 }
  685.               }
  686.               $bookmarkIcon =
  687.                 '<span class="float-right bookmark-icon feather icon-star' +
  688.                 activeClass +
  689.                 '"></span>';
  690.             }
  691.             // Search list item start with entered letters and create list
  692.             if (
  693.               data.listItems[i].name.toLowerCase().indexOf(value) == 0 &&
  694.               a < 5
  695.             ) {
  696.               if (a === 0) {
  697.                 $activeItemClass = "current_item";
  698.               } else {
  699.                 $activeItemClass = "";
  700.               }
  701.               $startList +=
  702.                 '<li class="auto-suggestion d-flex align-items-center justify-content-between cursor-pointer ' +
  703.                 $activeItemClass +
  704.                 '">' +
  705.                 '<a class="d-flex align-items-center justify-content-between w-100" href=' +
  706.                 data.listItems[i].url +
  707.                 ">" +
  708.                 '<div class="d-flex justify-content-start align-items-center">' +
  709.                 '<span class="mr-75 ' +
  710.                 data.listItems[i].icon +
  711.                 '" data-icon="' +
  712.                 data.listItems[i].icon +
  713.                 '"></span>' +
  714.                 "<span>" +
  715.                 data.listItems[i].name +
  716.                 "</span>" +
  717.                 "</div>" +
  718.                 $bookmarkIcon +
  719.                 "</a>" +
  720.                 "</li>";
  721.               a++;
  722.             }
  723.           }
  724.           for (var i = 0; i < data.listItems.length; i++) {
  725.             if (bookmark === true) {
  726.               activeClass = ""; // resetting active bookmark class
  727.               var arrList = $("ul.nav.navbar-nav.bookmark-icons li"),
  728.                 $arrList = "";
  729.               // Loop to check if current seach value match with the bookmarks already there in navbar
  730.               for (var j = 0; j < arrList.length; j++) {
  731.                 if (
  732.                   data.listItems[i].name ===
  733.                   arrList[j].firstChild.dataset.originalTitle
  734.                 ) {
  735.                   activeClass = " warning";
  736.                 } else {
  737.                   activeClass = "";
  738.                 }
  739.               }
  740.               $bookmarkIcon =
  741.                 '<span class="float-right bookmark-icon feather icon-star' +
  742.                 activeClass +
  743.                 '"></span>';
  744.             }
  745.             // Search list item not start with letters and create list
  746.             if (
  747.               !(data.listItems[i].name.toLowerCase().indexOf(value) == 0) &&
  748.               data.listItems[i].name.toLowerCase().indexOf(value) > -1 &&
  749.               a < 5
  750.             ) {
  751.               if (a === 0) {
  752.                 $activeItemClass = "current_item";
  753.               } else {
  754.                 $activeItemClass = "";
  755.               }
  756.               $otherList +=
  757.                 '<li class="auto-suggestion d-flex align-items-center justify-content-between cursor-pointer ' +
  758.                 $activeItemClass +
  759.                 '">' +
  760.                 '<a class="d-flex align-items-center justify-content-between w-100" href=' +
  761.                 data.listItems[i].url +
  762.                 ">" +
  763.                 '<div class="d-flex justify-content-start align-items-center">' +
  764.                 '<span class="mr-75 ' +
  765.                 data.listItems[i].icon +
  766.                 '" data-icon="' +
  767.                 data.listItems[i].icon +
  768.                 '"></span>' +
  769.                 "<span>" +
  770.                 data.listItems[i].name +
  771.                 "</span>" +
  772.                 "</div>" +
  773.                 $bookmarkIcon +
  774.                 "</a>" +
  775.                 "</li>";
  776.               a++;
  777.             }
  778.           }
  779.           $defaultList = $(".main-search-list-defaultlist").html();
  780.           if ($startList == "" && $otherList == "") {
  781.             $otherList = $(".main-search-list-defaultlist-other-list").html();
  782.           }
  783.           // concatinating startlist, otherlist, defalutlist with pagelist
  784.           $htmlList = $pageList.concat($startList, $otherList, $defaultList);
  785.           $("ul.search-list").html($htmlList);
  786.           // concatinating otherlist with startlist
  787.           $bookmarkhtmlList = $startList.concat($otherList);
  788.           $("ul.search-list-bookmark").html($bookmarkhtmlList);
  789.         });
  790.       } else {
  791.         if (bookmark === true) {
  792.           var arrList = $("ul.nav.navbar-nav.bookmark-iconss li"),
  793.             $arrList = "";
  794.           for (var i = 0; i < arrList.length; i++) {
  795.             if (i === 0) {
  796.               $activeItemClass = "current_item";
  797.             } else {
  798.               $activeItemClass = "";
  799.             }
  800.             $arrList +=
  801.               '<li class="auto-suggestion d-flex align-items-center justify-content-between cursor-pointer">' +
  802.               '<a class="d-flex align-items-center justify-content-between w-100" href=' +
  803.               arrList[i].firstChild.href +
  804.               ">" +
  805.               '<div class="d-flex justify-content-start align-items-center">' +
  806.               '<span class="mr-75 ' +
  807.               arrList[i].firstChild.firstChild.className +
  808.               '"  data-icon="' +
  809.               arrList[i].firstChild.firstChild.className +
  810.               '"></span>' +
  811.               "<span>" +
  812.               arrList[i].firstChild.dataset.originalTitle +
  813.               "</span>" +
  814.               "</div>" +
  815.               '<span class="float-right bookmark-icon feather icon-star warning"></span>' +
  816.               "</a>" +
  817.               "</li>";
  818.           }
  819.           $("ul.search-list").append($arrList);
  820.         } else {
  821.           // if search input blank, hide overlay
  822.           if (appContent.hasClass("show-overlay")) {
  823.             appContent.removeClass("show-overlay");
  824.           }
  825.           // If filter box is empty
  826.           if (searchList.hasClass("show")) {
  827.             searchList.removeClass("show");
  828.           }
  829.         }
  830.       }
  831.     }
  832.   });
  833.  
  834.   // Add class on hover of the list
  835.   $(document).on("mouseenter", ".search-list li", function (e) {
  836.     $(this)
  837.       .siblings()
  838.       .removeClass("current_item");
  839.     $(this).addClass("current_item");
  840.   });
  841.   $(document).on("click", ".search-list li", function (e) {
  842.     e.stopPropagation();
  843.   });
  844.  
  845.   $("html").on("click", function ($this) {
  846.     if (!$($this.target).hasClass("bookmark-icon")) {
  847.       if (bookmarkSearchList.hasClass("show")) {
  848.         bookmarkSearchList.removeClass("show");
  849.       }
  850.       if (bookmarkInput.hasClass("show")) {
  851.         bookmarkInput.removeClass("show");
  852.       }
  853.     }
  854.   });
  855.  
  856.   // Prevent closing bookmark dropdown on input textbox click
  857.   $(document).on("click", ".bookmark-input input", function (e) {
  858.     bookmarkInput.addClass("show");
  859.     bookmarkSearchList.addClass("show");
  860.   });
  861.  
  862.   // Favorite star click
  863.   $(document).on("click", ".bookmark-input .search-list .bookmark-icon", function (e) {
  864.     e.stopPropagation();
  865.     if ($(this).hasClass("warning")) {
  866.       $(this).removeClass("warning");
  867.       var arrList = $("ul.nav.navbar-nav.bookmark-icons li");
  868.       for (var i = 0; i < arrList.length; i++) {
  869.         if (
  870.           arrList[i].firstChild.dataset.originalTitle ==
  871.           $(this).parent()[0].innerText
  872.         ) {
  873.           arrList[i].remove();
  874.         }
  875.       }
  876.       e.preventDefault();
  877.     } else {
  878.       var arrList = $("ul.nav.navbar-nav.bookmark-icons li");
  879.       $(this).addClass("warning");
  880.       e.preventDefault();
  881.       var $url = $(this).parent()[0].href,
  882.         $name = $(this).parent()[0].innerText,
  883.         $icon = $(this).parent()[0].firstChild.firstChild.dataset.icon,
  884.         $listItem = "",
  885.         $listItemDropdown = "";
  886.       $listItem =
  887.         '<li class="nav-item d-none d-lg-block">' +
  888.         '<a class="nav-link" href="' +
  889.         $url +
  890.         '" data-toggle="tooltip" data-placement="top" title="" data-original-title="' +
  891.         $name +
  892.         '">' +
  893.         '<i class="ficon ' +
  894.         $icon +
  895.         '"></i>' +
  896.         "</a>" +
  897.         "</li>";
  898.       $("ul.nav.bookmark-icons").append($listItem);
  899.       $('[data-toggle="tooltip"]').tooltip();
  900.     }
  901.   });
  902.  
  903.   // If we use up key(38) Down key (40) or Enter key(13)
  904.   $(window).on("keydown", function (e) {
  905.     var $current = $(".search-list li.current_item"),
  906.       $next,
  907.       $prev;
  908.     if (e.keyCode === 40) {
  909.       $next = $current.next();
  910.       $current.removeClass("current_item");
  911.       $current = $next.addClass("current_item");
  912.     } else if (e.keyCode === 38) {
  913.       $prev = $current.prev();
  914.       $current.removeClass("current_item");
  915.       $current = $prev.addClass("current_item");
  916.     }
  917.  
  918.     if (e.keyCode === 13 && $(".search-list li.current_item").length > 0) {
  919.       var selected_item = $(".search-list li.current_item a");
  920.       window.location = selected_item.attr("href");
  921.       $(selected_item).trigger("click");
  922.     }
  923.   });
  924.  
  925.   // Waves Effect
  926.   Waves.init();
  927.   Waves.attach(".btn", ["waves-light"]);
  928. })(window, document, jQuery);
  929.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement