PageSourceSearch

https://santillanapractica.com.ec/js/core/app.js

js santillanapractica.com.ec collected 2026-09-24 15:00:00 UTC 38,531 bytes, 1,064 lines download raw bytes

1/******/ (() => { // webpackBootstrap
2var __webpack_exports__ = {};
3/*!**********************************!*\
4  !*** ./resources/js/core/app.js ***!
5  \**********************************/
6/*=========================================================================================
7  File Name: app.js
8  Description: Template related app JS.
9  ----------------------------------------------------------------------------------------
10  Item Name: Vuexy  - Vuejs, HTML & Laravel Admin Dashboard Template
11  Author: Pixinvent
12  Author URL: hhttp://www.themeforest.net/user/pixinvent
13==========================================================================================*/
14window.colors = {
15  solid: {
16    primary: '#7367F0',
17    secondary: '#82868b',
18    success: '#28C76F',
19    info: '#00cfe8',
20    warning: '#FF9F43',
21    danger: '#EA5455',
22    dark: '#4b4b4b',
23    black: '#000',
24    white: '#fff',
25    body: '#f8f8f8'
26  },
27  light: {
28    primary: '#7367F01a',
29    secondary: '#82868b1a',
30    success: '#28C76F1a',
31    info: '#00cfe81a',
32    warning: '#FF9F431a',
33    danger: '#EA54551a',
34    dark: '#4b4b4b1a'
35  }
36};
37
38(function (window, document, $) {
39  'use strict';
40
41  var $html = $('html');
42  var $body = $('body');
43  var $textcolor = '#4e5154';
44  var assetPath = '../../../app-assets/';
45
46  if ($('body').attr('data-framework') === 'laravel') {
47    assetPath = $('body').attr('data-asset-path');
48  } // to remove sm control classes from datatables
49
50
51  if ($.fn.dataTable) {
52    $.extend($.fn.dataTable.ext.classes, {
53      sFilterInput: 'form-control',
54      sLengthSelect: 'form-select'
55    });
56  }
57
58  $(window).on('load', function () {
59    var rtl;
60    var compactMenu = false;
61
62    if ($body.hasClass('menu-collapsed') || localStorage.getItem('menuCollapsed') === 'true') {
63      compactMenu = true;
64    }
65
66    if ($('html').data('textdirection') == 'rtl') {
67      rtl = true;
68    }
69
70    setTimeout(function () {
71      $html.removeClass('loading').addClass('loaded');
72    }, 1200);
73    $.app.menu.init(compactMenu); // Navigation configurations
74
75    var config = {
76      speed: 300 // set speed to expand / collapse menu
77
78    };
79
80    if ($.app.nav.initialized === false) {
81      $.app.nav.init(config);
82    }
83
84    Unison.on('change', function (bp) {
85      $.app.menu.change(compactMenu);
86    }); // Tooltip Initialization
87    // $('[data-bs-toggle="tooltip"]').tooltip({
88    //   container: 'body'
89    // });
90
91    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
92    var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
93      return new bootstrap.Tooltip(tooltipTriggerEl);
94    }); // Collapsible Card
95
96    $('a[data-action="collapse"]').on('click', function (e) {
97      e.preventDefault();
98      $(this).closest('.card').children('.card-content').collapse('toggle');
99      $(this).closest('.card').find('[data-action="collapse"]').toggleClass('rotate');
100    }); // Cart dropdown touchspin
101
102    if ($('.touchspin-cart').length > 0) {
103      $('.touchspin-cart').TouchSpin({
104        buttondown_class: 'btn btn-primary',
105        buttonup_class: 'btn btn-primary',
106        buttondown_txt: feather.icons['minus'].toSvg(),
107        buttonup_txt: feather.icons['plus'].toSvg()
108      });
109    } // Do not close cart or notification dropdown on click of the items
110
111
112    $('.dropdown-notification .dropdown-menu, .dropdown-cart .dropdown-menu').on('click', function (e) {
113      e.stopPropagation();
114    }); //  Notifications & messages scrollable
115
116    $('.scrollable-container').each(function () {
117      var scrollable_container = new PerfectScrollbar($(this)[0], {
118        wheelPropagation: false
119      });
120    }); // Reload Card
121
122    $('a[data-action="reload"]').on('click', function () {
123      var block_ele = $(this).closest('.card');
124      var reloadActionOverlay;
125
126      if ($html.hasClass('dark-layout')) {
127        var reloadActionOverlay = '#10163a';
128      } else {
129        var reloadActionOverlay = '#fff';
130      } // Block Element
131
132
133      block_ele.block({
134        message: feather.icons['refresh-cw'].toSvg({
135          "class": 'font-medium-1 spinner text-primary'
136        }),
137        timeout: 2000,
138        //unblock after 2 seconds
139        overlayCSS: {
140          backgroundColor: reloadActionOverlay,
141          cursor: 'wait'
142        },
143        css: {
144          border: 0,
145          padding: 0,
146          backgroundColor: 'none'
147        }
148      });
149    }); // Close Card
150
151    $('a[data-action="close"]').on('click', function () {
152      $(this).closest('.card').removeClass().slideUp('fast');
153    });
154    $('.card .heading-elements a[data-action="collapse"]').on('click', function () {
155      var $this = $(this),
156          card = $this.closest('.card');
157      var cardHeight;
158
159      if (parseInt(card[0].style.height, 10) > 0) {
160        cardHeight = card.css('height');
161        card.css('height', '').attr('data-height', cardHeight);
162      } else {
163        if (card.data('height')) {
164          cardHeight = card.data('height');
165          card.css('height', cardHeight).attr('data-height', '');
166        }
167      }
168    }); // Add disabled class to input group when input is disabled
169
170    $('input:disabled, textarea:disabled').closest('.input-group').addClass('disabled'); // Add sidebar group active class to active menu
171
172    $('.main-menu-content').find('li.active').parents('li').addClass('sidebar-group-active'); // Add open class to parent list item if subitem is active except compact menu
173
174    var menuType = $body.data('menu');
175
176    if (menuType != 'horizontal-menu' && compactMenu === false) {
177      $('.main-menu-content').find('li.active').parents('li').addClass('open');
178    }
179
180    if (menuType == 'horizontal-menu') {
181      $('.main-menu-content').find('li.active').parents('li:not(.nav-item)').addClass('open');
182      $('.main-menu-content').find('li.active').closest('li.nav-item').addClass('sidebar-group-active open'); // $(".main-menu-content")
183      //   .find("li.active")
184      //   .parents("li")
185      //   .addClass("active");
186    } //  Dynamic height for the chartjs div for the chart animations to work
187
188
189    var chartjsDiv = $('.chartjs'),
190        canvasHeight = chartjsDiv.children('canvas').attr('height'),
191        mainMenu = $('.main-menu');
192    chartjsDiv.css('height', canvasHeight);
193
194    if ($body.hasClass('boxed-layout')) {
195      if ($body.hasClass('vertical-overlay-menu')) {
196        var menuWidth = mainMenu.width();
197        var contentPosition = $('.app-content').position().left;
198        var menuPositionAdjust = contentPosition - menuWidth;
199
200        if ($body.hasClass('menu-flipped')) {
201          mainMenu.css('right', menuPositionAdjust + 'px');
202        } else {
203          mainMenu.css('left', menuPositionAdjust + 'px');
204        }
205      }
206    }
207    /* Text Area Counter Set Start */
208
209
210    $('.char-textarea').on('keyup', function (event) {
211      checkTextAreaMaxLength(this, event); // to later change text color in dark layout
212
213      $(this).addClass('active');
214    });
215    /*
216    Checks the MaxLength of the Textarea
217    -----------------------------------------------------
218    @prerequisite:  textBox = textarea dom element
219            e = textarea event
220                    length = Max length of characters
221    */
222
223    function checkTextAreaMaxLength(textBox, e) {
224      var maxLength = parseInt($(textBox).data('length')),
225          counterValue = $('.textarea-counter-value'),
226          charTextarea = $('.char-textarea');
227
228      if (!checkSpecialKeys(e)) {
229        if (textBox.value.length < maxLength - 1) textBox.value = textBox.value.substring(0, maxLength);
230      }
231
232      $('.char-count').html(textBox.value.length);
233
234      if (textBox.value.length > maxLength) {
235        counterValue.css('background-color', window.colors.solid.danger);
236        charTextarea.css('color', window.colors.solid.danger); // to change text color after limit is maxedout out
237
238        charTextarea.addClass('max-limit');
239      } else {
240        counterValue.css('background-color', window.colors.solid.primary);
241        charTextarea.css('color', $textcolor);
242        charTextarea.removeClass('max-limit');
243      }
244
245      return true;
246    }
247    /*
248    Checks if the keyCode pressed is inside special chars
249    -------------------------------------------------------
250    @prerequisite:  e = e.keyCode object for the key pressed
251    */
252
253
254    function checkSpecialKeys(e) {
255      if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40) return false;else return true;
256    }
257
258    $('.content-overlay').on('click', function () {
259      $('.search-list').removeClass('show');
260      var searchInput = $('.search-input-close').closest('.search-input');
261
262      if (searchInput.hasClass('open')) {
263        searchInput.removeClass('open');
264        searchInputInputfield.val('');
265        searchInputInputfield.blur();
266        searchList.removeClass('show');
267      }
268
269      $('.app-content').removeClass('show-overlay');
270      $('.bookmark-wrapper .bookmark-input').removeClass('show');
271    }); // To show shadow in main menu when menu scrolls
272
273    var container = document.getElementsByClassName('main-menu-content');
274
275    if (container.length > 0) {
276      container[0].addEventListener('ps-scroll-y', function () {
277        if ($(this).find('.ps__thumb-y').position().top > 0) {
278          $('.shadow-bottom').css('display', 'block');
279        } else {
280          $('.shadow-bottom').css('display', 'none');
281        }
282      });
283    }
284  }); // Hide overlay menu on content overlay click on small screens
285
286  $(document).on('click', '.sidenav-overlay', function (e) {
287    // Hide menu
288    $.app.menu.hide();
289    return false;
290  }); // Execute below code only if we find hammer js for touch swipe feature on small screen
291
292  if (typeof Hammer !== 'undefined') {
293    var rtl;
294
295    if ($('html').data('textdirection') == 'rtl') {
296      rtl = true;
297    } // Swipe menu gesture
298
299
300    var swipeInElement = document.querySelector('.drag-target'),
301        swipeInAction = 'panright',
302        swipeOutAction = 'panleft';
303
304    if (rtl === true) {
305      swipeInAction = 'panleft';
306      swipeOutAction = 'panright';
307    }
308
309    if ($(swipeInElement).length > 0) {
310      var swipeInMenu = new Hammer(swipeInElement);
311      swipeInMenu.on(swipeInAction, function (ev) {
312        if ($body.hasClass('vertical-overlay-menu')) {
313          $.app.menu.open();
314          return false;
315        }
316      });
317    } // menu swipe out gesture
318
319
320    setTimeout(function () {
321      var swipeOutElement = document.querySelector('.main-menu');
322      var swipeOutMenu;
323
324      if ($(swipeOutElement).length > 0) {
325        swipeOutMenu = new Hammer(swipeOutElement);
326        swipeOutMenu.get('pan').set({
327          direction: Hammer.DIRECTION_ALL,
328          threshold: 250
329        });
330        swipeOutMenu.on(swipeOutAction, function (ev) {
331          if ($body.hasClass('vertical-overlay-menu')) {
332            $.app.menu.hide();
333            return false;
334          }
335        });
336      }
337    }, 300); // menu close on overlay tap
338
339    var swipeOutOverlayElement = document.querySelector('.sidenav-overlay');
340
341    if ($(swipeOutOverlayElement).length > 0) {
342      var swipeOutOverlayMenu = new Hammer(swipeOutOverlayElement);
343      swipeOutOverlayMenu.on('tap', function (ev) {
344        if ($body.hasClass('vertical-overlay-menu')) {
345          $.app.menu.hide();
346          return false;
347        }
348      });
349    }
350  }
351
352  $(document).on('click', '.menu-toggle, .modern-nav-toggle', function (e) {
353    e.preventDefault(); // Toggle menu
354
355    $.app.menu.toggle();
356    setTimeout(function () {
357      $(window).trigger('resize');
358    }, 200);
359
360    if ($('#collapse-sidebar-switch').length > 0) {
361      setTimeout(function () {
362        if ($body.hasClass('menu-expanded') || $body.hasClass('menu-open')) {
363          $('#collapse-sidebar-switch').prop('checked', false);
364        } else {
365          $('#collapse-sidebar-switch').prop('checked', true);
366        }
367      }, 50);
368    } // Save menu collapsed status in localstorage
369
370
371    if ($body.hasClass('menu-expanded') || $body.hasClass('menu-open')) {
372      localStorage.setItem('menuCollapsed', false);
373    } else {
374      localStorage.setItem('menuCollapsed', true);
375    } // Hides dropdown on click of menu toggle
376    // $('[data-bs-toggle="dropdown"]').dropdown('hide');
377
378
379    return false;
380  }); // Add Children Class
381
382  $('.navigation').find('li').has('ul').addClass('has-sub'); // Update manual scroller when window is resized
383
384  $(window).resize(function () {
385    $.app.menu.manualScroller.updateHeight();
386  });
387  $('#sidebar-page-navigation').on('click', 'a.nav-link', function (e) {
388    e.preventDefault();
389    e.stopPropagation();
390    var $this = $(this),
391        href = $this.attr('href');
392    var offset = $(href).offset();
393    var scrollto = offset.top - 80; // minus fixed header height
394
395    $('html, body').animate({
396      scrollTop: scrollto
397    }, 0);
398    setTimeout(function () {
399      $this.parent('.nav-item').siblings('.nav-item').children('.nav-link').removeClass('active');
400      $this.addClass('active');
401    }, 100);
402  }); // main menu internationalization
403  // init i18n and load language file
404
405  if ($body.attr('data-framework') === 'laravel') {
406    // change language according to data-language of dropdown item
407    var language = $('html')[0].lang;
408
409    if (language !== null) {
410      // get the selected flag class
411      var selectedLang = $('.dropdown-language').find('a[data-language=' + language + ']').text();
412      var selectedFlag = $('.dropdown-language').find('a[data-language=' + language + '] .flag-icon').attr('class'); // set the class in button
413
414      $('#dropdown-flag .selected-language').text(selectedLang);
415      $('#dropdown-flag .flag-icon').removeClass().addClass(selectedFlag);
416    }
417  } else {
418    i18next.use(window.i18nextXHRBackend).init({
419      debug: false,
420      fallbackLng: 'en',
421      backend: {
422        loadPath: assetPath + 'data/locales/{{lng}}.json'
423      },
424      returnObjects: true
425    }, function (err, t) {
426      // resources have been loaded
427      jqueryI18next.init(i18next, $);
428    }); // change language according to data-language of dropdown item
429
430    $('.dropdown-language .dropdown-item').on('click', function () {
431      var $this = $(this);
432      $this.siblings('.selected').removeClass('selected');
433      $this.addClass('selected');
434      var selectedLang = $this.text();
435      var selectedFlag = $this.find('.flag-icon').attr('class');
436      $('#dropdown-flag .selected-language').text(selectedLang);
437      $('#dropdown-flag .flag-icon').removeClass().addClass(selectedFlag);
438      var currentLanguage = $this.data('language');
439      i18next.changeLanguage(currentLanguage, function (err, t) {
440        $('.main-menu, .horizontal-menu-wrapper').localize();
441      });
442    });
443  }
444  /********************* Bookmark & Search ***********************/
445  // This variable is used for mouseenter and mouseleave events of search list
446
447
448  var $filename = $('.search-input input').data('search'),
449      bookmarkWrapper = $('.bookmark-wrapper'),
450      bookmarkStar = $('.bookmark-wrapper .bookmark-star'),
451      bookmarkInput = $('.bookmark-wrapper .bookmark-input'),
452      navLinkSearch = $('.nav-link-search'),
453      searchInput = $('.search-input'),
454      searchInputInputfield = $('.search-input input'),
455      searchList = $('.search-input .search-list'),
456      appContent = $('.app-content'),
457      bookmarkSearchList = $('.bookmark-input .search-list'); // Bookmark icon click
458
459  bookmarkStar.on('click', function (e) {
460    e.stopPropagation();
461    bookmarkInput.toggleClass('show');
462    bookmarkInput.find('input').val('');
463    bookmarkInput.find('input').blur();
464    bookmarkInput.find('input').focus();
465    bookmarkWrapper.find('.search-list').addClass('show');
466    var arrList = $('ul.nav.navbar-nav.bookmark-icons li'),
467        $arrList = '',
468        $activeItemClass = '';
469    $('ul.search-list li').remove();
470
471    for (var i = 0; i < arrList.length; i++) {
472      if (i === 0) {
473        $activeItemClass = 'current_item';
474      } else {
475        $activeItemClass = '';
476      }
477
478      var iconName = '',
479          className = '';
480
481      if ($(arrList[i].firstChild.firstChild).hasClass('feather')) {
482        var classString = arrList[i].firstChild.firstChild.getAttribute('class');
483        iconName = classString.split('feather-')[1].split(' ')[0];
484        className = classString.split('feather-')[1].split(' ')[1];
485      }
486
487      $arrList += '<li class="auto-suggestion ' + $activeItemClass + '">' + '<a class="d-flex align-items-center justify-content-between w-100" href=' + arrList[i].firstChild.href + '>' + '<div class="d-flex justify-content-start align-items-center">' + feather.icons[iconName].toSvg({
488        "class": 'me-75 ' + className
489      }) + '<span>' + arrList[i].firstChild.dataset.bsOriginalTitle + '</span>' + '</div>' + feather.icons['star'].toSvg({
490        "class": 'text-warning bookmark-icon float-end'
491      }) + '</a>' + '</li>';
492    }
493
494    $('ul.search-list').append($arrList);
495  }); // Navigation Search area Open
496
497  navLinkSearch.on('click', function () {
498    var $this = $(this);
499    var searchInput = $(this).parent('.nav-search').find('.search-input');
500    searchInput.addClass('open');
501    searchInputInputfield.focus();
502    searchList.find('li').remove();
503    bookmarkInput.removeClass('show');
504  }); // Navigation Search area Close
505
506  $('.search-input-close').on('click', function () {
507    var $this = $(this),
508        searchInput = $(this).closest('.search-input');
509
510    if (searchInput.hasClass('open')) {
511      searchInput.removeClass('open');
512      searchInputInputfield.val('');
513      searchInputInputfield.blur();
514      searchList.removeClass('show');
515      appContent.removeClass('show-overlay');
516    }
517  }); // Filter
518
519  if ($('.search-list-main').length) {
520    var searchListMain = new PerfectScrollbar('.search-list-main', {
521      wheelPropagation: false
522    });
523  }
524
525  if ($('.search-list-bookmark').length) {
526    var searchListBookmark = new PerfectScrollbar('.search-list-bookmark', {
527      wheelPropagation: false
528    });
529  } // update Perfect Scrollbar on hover
530
531
532  $('.search-list-main').mouseenter(function () {
533    searchListMain.update();
534  });
535  searchInputInputfield.on('keyup', function (e) {
536    $(this).closest('.search-list').addClass('show');
537
538    if (e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 13) {
539      if (e.keyCode == 27) {
540        appContent.removeClass('show-overlay');
541        bookmarkInput.find('input').val('');
542        bookmarkInput.find('input').blur();
543        searchInputInputfield.val('');
544        searchInputInputfield.blur();
545        searchInput.removeClass('open');
546
547        if (searchInput.hasClass('show')) {
548          $(this).removeClass('show');
549          searchInput.removeClass('show');
550        }
551      } // Define variables
552
553
554      var value = $(this).val().toLowerCase(),
555          //get values of input on keyup
556      activeClass = '',
557          bookmark = false,
558          liList = $('ul.search-list li'); // get all the list items of the search
559
560      liList.remove(); // To check if current is bookmark input
561
562      if ($(this).parent().hasClass('bookmark-input')) {
563        bookmark = true;
564      } // If input value is blank
565
566
567      if (value != '') {
568        appContent.addClass('show-overlay'); // condition for bookmark and search input click
569
570        if (bookmarkInput.focus()) {
571          bookmarkSearchList.addClass('show');
572        } else {
573          searchList.addClass('show');
574          bookmarkSearchList.removeClass('show');
575        }
576
577        if (bookmark === false) {
578          searchList.addClass('show');
579          bookmarkSearchList.removeClass('show');
580        }
581
582        var $startList = '',
583            $otherList = '',
584            $htmlList = '',
585            $bookmarkhtmlList = '',
586            $pageList = '<li class="d-flex align-items-center">' + '<a href="#">' + '<h6 class="section-label mt-75 mb-0">Pages</h6>' + '</a>' + '</li>',
587            $activeItemClass = '',
588            $bookmarkIcon = '',
589            $defaultList = '',
590            a = 0; // getting json data from file for search results
591
592        $.getJSON(assetPath + 'data/' + $filename + '.json', function (data) {
593          for (var i = 0; i < data.listItems.length; i++) {
594            // if current is bookmark then give class to star icon
595            // for laravel
596            if ($('body').attr('data-framework') === 'laravel') {
597              data.listItems[i].url = assetPath + data.listItems[i].url;
598            }
599
600            if (bookmark === true) {
601              activeClass = ''; // resetting active bookmark class
602
603              var arrList = $('ul.nav.navbar-nav.bookmark-icons li'),
604                  $arrList = ''; // Loop to check if current seach value match with the bookmarks already there in navbar
605
606              for (var j = 0; j < arrList.length; j++) {
607                if (data.listItems[i].name === arrList[j].firstChild.dataset.bsOriginalTitle) {
608                  activeClass = ' text-warning';
609                  break;
610                } else {
611                  activeClass = '';
612                }
613              }
614
615              $bookmarkIcon = feather.icons['star'].toSvg({
616                "class": 'bookmark-icon float-end' + activeClass
617              });
618            } // Search list item start with entered letters and create list
619
620
621            if (data.listItems[i].name.toLowerCase().indexOf(value) == 0 && a < 5) {
622              if (a === 0) {
623                $activeItemClass = 'current_item';
624              } else {
625                $activeItemClass = '';
626              }
627
628              $startList += '<li class="auto-suggestion ' + $activeItemClass + '">' + '<a class="d-flex align-items-center justify-content-between w-100" href=' + data.listItems[i].url + '>' + '<div class="d-flex justify-content-start align-items-center">' + feather.icons[data.listItems[i].icon].toSvg({
629                "class": 'me-75 '
630              }) + '<span>' + data.listItems[i].name + '</span>' + '</div>' + $bookmarkIcon + '</a>' + '</li>';
631              a++;
632            }
633          }
634
635          for (var i = 0; i < data.listItems.length; i++) {
636            if (bookmark === true) {
637              activeClass = ''; // resetting active bookmark class
638
639              var arrList = $('ul.nav.navbar-nav.bookmark-icons li'),
640                  $arrList = ''; // Loop to check if current search value match with the bookmarks already there in navbar
641
642              for (var j = 0; j < arrList.length; j++) {
643                if (data.listItems[i].name === arrList[j].firstChild.dataset.bsOriginalTitle) {
644                  activeClass = ' text-warning';
645                } else {
646                  activeClass = '';
647                }
648              }
649
650              $bookmarkIcon = feather.icons['star'].toSvg({
651                "class": 'bookmark-icon float-end' + activeClass
652              });
653            } // Search list item not start with letters and create list
654
655
656            if (!(data.listItems[i].name.toLowerCase().indexOf(value) == 0) && data.listItems[i].name.toLowerCase().indexOf(value) > -1 && a < 5) {
657              if (a === 0) {
658                $activeItemClass = 'current_item';
659              } else {
660                $activeItemClass = '';
661              }
662
663              $otherList += '<li class="auto-suggestion ' + $activeItem
663Class + '">' + '<a class="d-flex align-items-center justify-content-between w-100" href=' + data.listItems[i].url + '>' + '<div class="d-flex justify-content-start align-items-center">' + feather.icons[data.listItems[i].icon].toSvg({
664                "class": 'me-75 '
665              }) + '<span>' + data.listItems[i].name + '</span>' + '</div>' + $bookmarkIcon + '</a>' + '</li>';
666              a++;
667            }
668          }
669
670          $defaultList = $('.main-search-list-defaultlist').html();
671
672          if ($startList == '' && $otherList == '') {
673            $otherList = $('.main-search-list-defaultlist-other-list').html();
674          } // concatinating startlist, otherlist, defalutlist with pagelist
675
676
677          $htmlList = $pageList.concat($startList, $otherList, $defaultList);
678          $('ul.search-list').html($htmlList); // concatinating otherlist with startlist
679
680          $bookmarkhtmlList = $startList.concat($otherList);
681          $('ul.search-list-bookmark').html($bookmarkhtmlList); // Feather Icons
682          // if (feather) {
683          //   featherSVG();
684          // }
685        });
686      } else {
687        if (bookmark === true) {
688          var arrList = $('ul.nav.navbar-nav.bookmark-icons li'),
689              $arrList = '';
690
691          for (var i = 0; i < arrList.length; i++) {
692            if (i === 0) {
693              $activeItemClass = 'current_item';
694            } else {
695              $activeItemClass = '';
696            }
697
698            var iconName = '',
699                className = '';
700
701            if ($(arrList[i].firstChild.firstChild).hasClass('feather')) {
702              var classString = arrList[i].firstChild.firstChild.getAttribute('class');
703              iconName = classString.split('feather-')[1].split(' ')[0];
704              className = classString.split('feather-')[1].split(' ')[1];
705            }
706
707            $arrList += '<li class="auto-suggestion">' + '<a class="d-flex align-items-center justify-content-between w-100" href=' + arrList[i].firstChild.href + '>' + '<div class="d-flex justify-content-start align-items-center">' + feather.icons[iconName].toSvg({
708              "class": 'me-75 '
709            }) + '<span>' + arrList[i].firstChild.dataset.bsOriginalTitle + '</span>' + '</div>' + feather.icons['star'].toSvg({
710              "class": 'text-warning bookmark-icon float-end'
711            }) + '</a>' + '</li>';
712          }
713
714          $('ul.search-list').append($arrList); // Feather Icons
715          // if (feather) {
716          //   featherSVG();
717          // }
718        } else {
719          // if search input blank, hide overlay
720          if (appContent.hasClass('show-overlay')) {
721            appContent.removeClass('show-overlay');
722          } // If filter box is empty
723
724
725          if (searchList.hasClass('show')) {
726            searchList.removeClass('show');
727          }
728        }
729      }
730    }
731  }); // Add class on hover of the list
732
733  $(document).on('mouseenter', '.search-list li', function (e) {
734    $(this).siblings().removeClass('current_item');
735    $(this).addClass('current_item');
736  });
737  $(document).on('click', '.search-list li', function (e) {
738    e.stopPropagation();
739  });
740  $('html').on('click', function ($this) {
741    if (!$($this.target).hasClass('bookmark-icon')) {
742      if (bookmarkSearchList.hasClass('show')) {
743        bookmarkSearchList.removeClass('show');
744      }
745
746      if (bookmarkInput.hasClass('show')) {
747        bookmarkInput.removeClass('show');
748        appContent.removeClass('show-overlay');
749      }
750    }
751  }); // Prevent closing bookmark dropdown on input textbox click
752
753  $(document).on('click', '.bookmark-input input', function (e) {
754    bookmarkInput.addClass('show');
755    bookmarkSearchList.addClass('show');
756  }); // Favorite star click
757
758  $(document).on('click', '.bookmark-input .search-list .bookmark-icon', function (e) {
759    e.stopPropagation();
760
761    if ($(this).hasClass('text-warning')) {
762      $(this).removeClass('text-warning');
763      var arrList = $('ul.nav.navbar-nav.bookmark-icons li');
764
765      for (var i = 0; i < arrList.length; i++) {
766        if (arrList[i].firstChild.dataset.bsOriginalTitle == $(this).parent()[0].innerText) {
767          arrList[i].remove();
768        }
769      }
770
771      e.preventDefault();
772    } else {
773      var arrList = $('ul.nav.navbar-nav.bookmark-icons li');
774      $(this).addClass('text-warning');
775      e.preventDefault();
776      var $url = $(this).parent()[0].href,
777          $name = $(this).parent()[0].innerText,
778          $listItem = '',
779          $listItemDropdown = '',
780          iconName = $(this).parent()[0].firstChild.firstChild.dataset.icon;
781
782      if ($($(this).parent()[0].firstChild.firstChild).hasClass('feather')) {
783        var classString = $(this).parent()[0].firstChild.firstChild.getAttribute('class');
784        iconName = classString.split('feather-')[1].split(' ')[0];
785      }
786
787      $listItem = '<li class="nav-item d-none d-lg-block">' + '<a class="nav-link" href="' + $url + '" data-bs-toggle="tooltip" data-bs-placement="bottom" title="' + $name + '">' + feather.icons[iconName].toSvg({
788        "class": 'ficon'
789      }) + '</a>' + '</li>';
790      $('ul.nav.bookmark-icons').append($listItem);
791      $('[data-bs-toggle="tooltip"]').tooltip();
792    }
793  }); // If we use up key(38) Down key (40) or Enter key(13)
794
795  $(window).on('keydown', function (e) {
796    var $current = $('.search-list li.current_item'),
797        $next,
798        $prev;
799
800    if (e.keyCode === 40) {
801      $next = $current.next();
802      $current.removeClass('current_item');
803      $current = $next.addClass('current_item');
804    } else if (e.keyCode === 38) {
805      $prev = $current.prev();
806      $current.removeClass('current_item');
807      $current = $prev.addClass('current_item');
808    }
809
810    if (e.keyCode === 13 && $('.search-list li.current_item').length > 0) {
811      var selected_item = $('.search-list li.current_item a');
812      window.location = selected_item.attr('href');
813      $(selected_item).trigger('click');
814    }
815  }); // Waves Effect
816
817  Waves.init();
818  Waves.attach(".btn:not([class*='btn-relief-']):not([class*='btn-gradient-']):not([class*='btn-outline-']):not([class*='btn-flat-'])", ['waves-float', 'waves-light']);
819  Waves.attach("[class*='btn-outline-']");
820  Waves.attach("[class*='btn-flat-']");
821  $('.form-password-toggle .input-group-text').on('click', function (e) {
822    e.preventDefault();
823    var $this = $(this),
824        inputGroupText = $this.closest('.form-password-toggle'),
825        formPasswordToggleIcon = $this,
826        formPasswordToggleInput = inputGroupText.find('input');
827
828    if (formPasswordToggleInput.attr('type') === 'text') {
829      formPasswordToggleInput.attr('type', 'password');
830
831      if (feather) {
832        formPasswordToggleIcon.find('svg').replaceWith(feather.icons['eye'].toSvg({
833          "class": 'font-small-4'
834        }));
835      }
836    } else if (formPasswordToggleInput.attr('type') === 'password') {
837      formPasswordToggleInput.attr('type', 'text');
838
839      if (feather) {
840        formPasswordToggleIcon.find('svg').replaceWith(feather.icons['eye-off'].toSvg({
841          "class": 'font-small-4'
842        }));
843      }
844    }
845  }); // on window scroll button show/hide
846
847  $(window).on('scroll', function () {
848    if ($(this).scrollTop() > 400) {
849      $('.scroll-top').fadeIn();
850    } else {
851      $('.scroll-top').fadeOut();
852    } // On Scroll navbar color on horizontal menu
853
854
855    if ($body.hasClass('navbar-static')) {
856      var scroll = $(window).scrollTop();
857
858      if (scroll > 65) {
859        $('html:not(.dark-layout) .horizontal-menu .header-navbar.navbar-fixed').css({
860          background: '#fff',
861          'box-shadow': '0 4px 20px 0 rgba(0,0,0,.05)'
862        });
863        $('.horizontal-menu.dark-layout .header-navbar.navbar-fixed').css({
864          background: '#161d31',
865          'box-shadow': '0 4px 20px 0 rgba(0,0,0,.05)'
866        });
867        $('html:not(.dark-layout) .horizontal-menu .horizontal-menu-wrapper.header-navbar').css('background', '#fff');
868        $('.dark-layout .horizontal-menu .horizontal-menu-wrapper.header-navbar').css('background', '#161d31');
869      } else {
870        $('html:not(.dark-layout) .horizontal-menu .header-navbar.navbar-fixed').css({
871          background: '#f8f8f8',
872          'box-shadow': 'none'
873        });
874        $('.dark-layout .horizontal-menu .header-navbar.navbar-fixed').css({
875          background: '#161d31',
876          'box-shadow': 'none'
877        });
878        $('html:not(.dark-layout) .horizontal-menu .horizontal-menu-wrapper.header-navbar').css('background', '#fff');
879        $('.dark-layout .horizontal-menu .horizontal-menu-wrapper.header-navbar').css('background', '#161d31');
880      }
881    }
882  }); // Click event to scroll to top
883
884  $('.scroll-top').on('click', function () {
885    $('html, body').animate({
886      scrollTop: 0
887    }, 75);
888  });
889
890  function getCurrentLayout() {
891    var currentLayout = '';
892
893    if ($html.hasClass('dark-layout')) {
894      currentLayout = 'dark-layout';
895    } else if ($html.hasClass('bordered-layout')) {
896      currentLayout = 'bordered-layout';
897    } else if ($html.hasClass('semi-dark-layout')) {
898      currentLayout = 'semi-dark-layout';
899    } else {
900      currentLayout = 'light-layout';
901    }
902
903    return currentLayout;
904  } // Get the data layout, for blank set to light layout
905
906
907  var dataLayout = $html.attr('data-layout') ? $html.attr('data-layout') : 'light-layout'; // Navbar Dark / Light Layout Toggle Switch
908
909  $('.nav-link-style').on('click', function () {
910    var currentLayout = getCurrentLayout(),
911        switchToLayout = '',
912        prevLayout = localStorage.getItem(dataLayout + '-prev-skin', currentLayout); // If currentLayout is not dark layout
913
914    if (currentLayout !== 'dark-layout') {
915      // Switch to dark
916      switchToLayout = 'dark-layout';
917    } else {
918      // Switch to light
919      // switchToLayout = prevLayout ? prevLayout : 'light-layout';
920      if (currentLayout === prevLayout) {
921        switchToLayout = 'light-layout';
922      } else {
923        switchToLayout = prevLayout ? prevLayout : 'light-layout';
924      }
925    } // Set Previous skin in local db
926
927
928    localStorage.setItem(dataLayout + '-prev-skin', currentLayout); // Set Current skin in local db
929
930    localStorage.setItem(dataLayout + '-current-skin', switchToLayout); // Call set layout
931
932    setLayout(switchToLayout); // ToDo: Customizer fix
933
934    $('.horizontal-menu .header-navbar.navbar-fixed').css({
935      background: 'inherit',
936      'box-shadow': 'inherit'
937    });
938    $('.horizontal-menu .horizontal-menu-wrapper.header-navbar').css('background', 'inherit');
939  }); // Get current local storage layout
940
941  var currentLocalStorageLayout = localStorage.getItem(dataLayout + '-current-skin'); // Set layout on screen load
942  //? Comment it if you don't want to sync layout with local db
943  // setLayout(currentLocalStorageLayout);
944
945  function setLayout(currentLocalStorageLayout) {
946    var navLinkStyle = $('.nav-link-style'),
947        currentLayout = getCurrentLayout(),
948        mainMenu = $('.main-menu'),
949        navbar = $('.header-navbar'),
950        // Witch to local storage layout if we have else current layout
951    switchToLayout = currentLocalStorageLayout ? currentLocalStorageLayout : currentLayout;
952    $html.removeClass('semi-dark-layout dark-layout bordered-layout');
953
954    if (switchToLayout === 'dark-layout') {
955      $html.addClass('dark-layout');
956      mainMenu.removeClass('menu-light').addClass('menu-dark');
957      navbar.removeClass('navbar-light').addClass('navbar-dark');
958      navLinkStyle.find('.ficon').replaceWith(feather.icons['sun'].toSvg({
959        "class": 'ficon'
960      }));
961    } else if (switchToLayout === 'bordered-layout') {
962      $html.addClass('bordered-layout');
963      mainMenu.removeClass('menu-dark').addClass('menu-light');
964      navbar.removeClass('navbar-dark').addClass('navbar-light');
965      navLinkStyle.find('.ficon').replaceWith(feather.icons['moon'].toSvg({
966        "class": 'ficon'
967      }));
968    } else if (switchToLayout === 'semi-dark-layout') {
969      $html.addClass('semi-dark-layout');
970      mainMenu.removeClass('menu-dark').addClass('menu-light');
971      navbar.removeClass('navbar-dark').addClass('navbar-light');
972      navLinkStyle.find('.ficon').replaceWith(feather.icons['moon'].toSvg({
973        "class": 'ficon'
974      }));
975    } else {
976      $html.addClass('light-layout');
977      mainMenu.removeClass('menu-dark').addClass('menu-light');
978      navbar.removeClass('navbar-dark').addClass('navbar-light');
979      navLinkStyle.find('.ficon').replaceWith(feather.icons['moon'].toSvg({
980        "class": 'ficon'
981      }));
982    } // Set radio in customizer if we have
983
984
985    if ($('input:radio[data-layout=' + switchToLayout + ']').length > 0) {
986      setTimeout(function () {
987        $('input:radio[data-layout=' + switchToLayout + ']').prop('checked', true);
988      });
989    }
990  }
991})(window, document, jQuery); // To use feather svg icons with different sizes
992
993
994function featherSVG(iconSize) {
995  // Feather Icons
996  if (iconSize == undefined) {
997    iconSize = '14';
998  }
999
1000  return feather.replace({
1001    width: iconSize,
1002    height: iconSize
1003  });
1004} // jQuery Validation Global Defaults
1005
1006
1007if (typeof jQuery.validator === 'function') {
1008  jQuery.validator.setDefaults({
1009    errorElement: 'span',
1010    errorPlacement: function errorPlacement(error, element) {
1011      if (element.parent().hasClass('input-group') || element.hasClass('select2') || element.attr('type') === 'checkbox') {
1012        error.insertAfter(element.parent());
1013      } else if (element.hasClass('form-check-input')) {
1014        error.insertAfter(element.parent().siblings(':last'));
1015      } else {
1016        error.insertAfter(element);
1017      }
1018
1019      if (element.parent().hasClass('input-group')) {
1020        element.parent().addClass('is-invalid');
1021      }
1022    },
1023    highlight: function highlight(element, errorClass, validClass) {
1024      $(element).addClass('error');
1025
1026      if ($(element).parent().hasClass('input-group')) {
1027        $(element).parent().addClass('is-invalid');
1028      }
1029    },
1030    unhighlight: function unhighlight(element, errorClass, validClass) {
1031      $(element).removeClass('error');
1032
1033      if ($(element).parent().hasClass('input-group')) {
1034        $(element).parent().removeClass('is-invalid');
1035      }
1036    }
1037  });
1038} // Add validation class to input-group (input group validation fix, currently disabled but will be useful in future)
1039
1040/* function inputGroupValidation(el) {
1041  var validEl,
1042    invalidEl,
1043    elem = $(el);
1044
1045  if (elem.hasClass('form-control')) {
1046    if ($(elem).is('.form-control:valid, .form-control.is-valid')) {
1047      validEl = elem;
1048    }
1049    if ($(elem).is('.form-control:invalid, .form-control.is-invalid')) {
1050      invalidEl = elem;
1051    }
1052  } else {
1053    validEl = elem.find('.form-control:valid, .form-control.is-valid');
1054    invalidEl = elem.find('.form-control:invalid, .form-control.is-invalid');
1055  }
1056  if (validEl !== undefined) {
1057    validEl.closest('.input-group').removeClass('.is-valid is-invalid').addClass('is-valid');
1058  }
1059  if (invalidEl !== undefined) {
1060    invalidEl.closest('.input-group').removeClass('.is-valid is-invalid').addClass('is-invalid');
1061  }
1062} */
1063/******/ })()
1064;

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.