if (typeof jQuery === "undefined") { throw new Error("jQuery plugins need to be before this file"); } $.AdminBSB = {}; $.AdminBSB.options = { colors: { red: '#F44336', pink: '#E91E63', purple: '#9C27B0', deepPurple: '#673AB7', indigo: '#3F51B5', blue: '#2196F3', lightBlue: '#03A9F4', cyan: '#00BCD4', teal: '#009688', green: '#4CAF50', lightGreen: '#8BC34A', lime: '#CDDC39', yellow: '#ffe821', amber: '#FFC107', orange: '#FF9800', deepOrange: '#FF5722', brown: '#795548', grey: '#9E9E9E', blueGrey: '#607D8B', black: '#000000', white: '#ffffff' }, leftSideBar: { scrollColor: 'rgba(0,0,0,0.5)', scrollWidth: '4px', scrollAlwaysVisible: false, scrollBorderRadius: '0', scrollRailBorderRadius: '0', scrollActiveItemWhenPageLoad: true, breakpointWidth: 1170 }, dropdownMenu: { effectIn: 'fadeIn', effectOut: 'fadeOut' } } /* Left Sidebar - Function ================================================================================================= * You can manage the left sidebar menu options * */ $.AdminBSB.leftSideBar = { activate: function () { var _this = this; var $body = $('body'); var $overlay = $('.overlay'); //Close sidebar $(window).click(function (e) { var $target = $(e.target); if (e.target.nodeName.toLowerCase() === 'i') { $target = $(e.target).parent(); } if (!$target.hasClass('bars') && _this.isOpen() && $target.parents('#leftsidebar').length === 0) { if (!$target.hasClass('js-right-sidebar')) $overlay.fadeOut(); $body.removeClass('overlay-open'); } }); $.each($('.menu-toggle.toggled'), function (i, val) { $(val).next().slideToggle(0); }); //When page load $.each($('.menu .list li.active'), function (i, val) { var $activeAnchors = $(val).find('a:eq(0)'); $activeAnchors.addClass('toggled'); $activeAnchors.next().show(); }); //Collapse or Expand Menu $('.menu-toggle').on('click', function (e) { var $this = $(this); var $content = $this.next(); if ($($this.parents('ul')[0]).hasClass('list')) { var $not = $(e.target).hasClass('menu-toggle') ? e.target : $(e.target).parents('.menu-toggle'); $.each($('.menu-toggle.toggled').not($not).next(), function (i, val) { if ($(val).is(':visible')) { $(val).prev().toggleClass('toggled'); $(val).slideUp(); } }); } $this.toggleClass('toggled'); $content.slideToggle(320); }); //Set menu height _this.setMenuHeight(true); _this.checkStatusForResize(true); $(window).resize(function () { _this.setMenuHeight(false); _this.checkStatusForResize(false); }); //Set Waves Waves.attach('.menu .list a', ['waves-block']); Waves.init(); }, setMenuHeight: function (isFirstTime) { if (typeof $.fn.slimScroll != 'undefined') { var configs = $.AdminBSB.options.leftSideBar; var height = ($(window).height() - ($('.legal').outerHeight() + $('.user-info').outerHeight() + $('.navbar').innerHeight())); var $el = $('.list'); if (!isFirstTime) { $el.slimscroll({ destroy: true }); } $el.slimscroll({ height: height + "px", color: configs.scrollColor, size: configs.scrollWidth, alwaysVisible: configs.scrollAlwaysVisible, borderRadius: configs.scrollBorderRadius, railBorderRadius: configs.scrollRailBorderRadius }); //Scroll active menu item when page load, if option set = true if ($.AdminBSB.options.leftSideBar.scrollActiveItemWhenPageLoad) { var item = $('.menu .list li.active')[0]; if (item) { var activeItemOffsetTop = item.offsetTop; if (activeItemOffsetTop > 150) $el.slimscroll({ scrollTo: activeItemOffsetTop + 'px' }); } } } }, checkStatusForResize: function (firstTime) { var $body = $('body'); var $openCloseBar = $('.navbar .navbar-header .bars'); var width = $body.width(); if (firstTime) { $body.find('.content, .sidebar').addClass('no-animate').delay(1000).queue(function () { $(this).removeClass('no-animate').dequeue(); }); } if (width < $.AdminBSB.options.leftSideBar.breakpointWidth) { $body.addClass('ls-closed'); $openCloseBar.fadeIn(); } else { $body.removeClass('ls-closed'); $openCloseBar.fadeOut(); } }, isOpen: function () { return $('body').hasClass('overlay-open'); } }; //========================================================================================================================== /* Right Sidebar - Function ================================================================================================ * You can manage the right sidebar menu options * */ $.AdminBSB.rightSideBar = { activate: function () { var _this = this; var $sidebar = $('#rightsidebar'); var $overlay = $('.overlay'); //Close sidebar $(window).click(function (e) { var $target = $(e.target); if (e.target.nodeName.toLowerCase() === 'i') { $target = $(e.target).parent(); } if (!$target.hasClass('js-right-sidebar') && _this.isOpen() && $target.parents('#rightsidebar').length === 0) { if (!$target.hasClass('bars')) $overlay.fadeOut(); $sidebar.removeClass('open'); } }); $('.js-right-sidebar').on('click', function () { $sidebar.toggleClass('open'); if (_this.isOpen()) { $overlay.fadeIn(); } else { $overlay.fadeOut(); } }); }, isOpen: function () { return $('.right-sidebar').hasClass('open'); } } //========================================================================================================================== /* Searchbar - Function ================================================================================================ * You can manage the search bar * */ var $searchBar = $('.search-bar'); $.AdminBSB.search = { activate: function () { var _this = this; //Search button click event $('.js-search').on('click', function () { _this.showSearchBar(); }); //Close search click event $searchBar.find('.close-search').on('click', function () { _this.hideSearchBar(); }); //ESC key on pressed $searchBar.find('input[type="text"]').on('keyup', function (e) { if (e.keyCode == 27) { _this.hideSearchBar(); } }); }, showSearchBar: function () { $searchBar.addClass('open'); $searchBar.find('input[type="text"]').focus(); }, hideSearchBar: function () { $searchBar.removeClass('open'); $searchBar.find('input[type="text"]').val(''); } } //========================================================================================================================== /* Navbar - Function ======================================================================================================= * You can manage the navbar * */ $.AdminBSB.navbar = { activate: function () { var $body = $('body'); var $overlay = $('.overlay'); //Open left sidebar panel $('.bars').on('click', function () { $body.toggleClass('overlay-open'); if ($body.hasClass('overlay-open')) { $overlay.fadeIn(); } else { $overlay.fadeOut(); } }); //Close collapse bar on click event $('.nav [data-close="true"]').on('click', function () { var isVisible = $('.navbar-toggle').is(':visible'); var $navbarCollapse = $('.navbar-collapse'); if (isVisible) { $navbarCollapse.slideUp(function () { $navbarCollapse.removeClass('in').removeAttr('style'); }); } }); } } //========================================================================================================================== /* Input - Function ======================================================================================================== * You can manage the inputs(also textareas) with name of class 'form-control' * */ $.AdminBSB.input = { activate: function ($parentSelector) { $parentSelector = $parentSelector || $('body'); //On focus event $parentSelector.find('.form-control').focus(function () { $(this).closest('.form-line').addClass('focused'); }); //On focusout event $parentSelector.find('.form-control').focusout(function () { var $this = $(this); if ($this.parents('.form-group').hasClass('form-float')) { if ($this.val() == '') { $this.parents('.form-line').removeClass('focused'); } } else { $this.parents('.form-line').removeClass('focused'); } }); //On label click $parentSelector.on('click', '.form-float .form-line .form-label', function () { $(this).parent().find('input').focus(); }); //Not blank form $parentSelector.find('.form-control').each(function () { if ($(this).val() !== '') { $(this).parents('.form-line').addClass('focused'); } }); } } //========================================================================================================================== /* Form - Select - Function ================================================================================================ * You can manage the 'select' of form elements * */ $.AdminBSB.select = { activate: function () { if ($.fn.selectpicker) { $('select:not(.ms)').selectpicker(); } } } //========================================================================================================================== /* DropdownMenu - Function ================================================================================================= * You can manage the dropdown menu * */ $.AdminBSB.dropdownMenu = { activate: function () { var _this = this; $('.dropdown, .dropup, .btn-group').on({ "show.bs.dropdown": function () { var dropdown = _this.dropdownEffect(this); _this.dropdownEffectStart(dropdown, dropdown.effectIn); }, "shown.bs.dropdown": function () { var dropdown = _this.dropdownEffect(this); if (dropdown.effectIn && dropdown.effectOut) { _this.dropdownEffectEnd(dropdown, function () { }); } }, "hide.bs.dropdown": function (e) { var dropdown = _this.dropdownEffect(this); if (dropdown.effectOut) { e.preventDefault(); _this.dropdownEffectStart(dropdown, dropdown.effectOut); _this.dropdownEffectEnd(dropdown, function () { dropdown.dropdown.removeClass('open'); }); } } }); //Set Waves Waves.attach('.dropdown-menu li a', ['waves-block']); Waves.init(); }, dropdownEffect: function (target) { var effectIn = $.AdminBSB.options.dropdownMenu.effectIn, effectOut = $.AdminBSB.options.dropdownMenu.effectOut; var dropdown = $(target), dropdownMenu = $('.dropdown-menu', target); if (dropdown.length > 0) { var udEffectIn = dropdown.data('effect-in'); var udEffectOut = dropdown.data('effect-out'); if (udEffectIn !== undefined) { effectIn = udEffectIn; } if (udEffectOut !== undefined) { effectOut = udEffectOut; } } return { target: target, dropdown: dropdown, dropdownMenu: dropdownMenu, effectIn: effectIn, effectOut: effectOut }; }, dropdownEffectStart: function (data, effectToStart) { if (effectToStart) { data.dropdown.addClass('dropdown-animating'); data.dropdownMenu.addClass('animated dropdown-animated'); data.dropdownMenu.addClass(effectToStart); } }, dropdownEffectEnd: function (data, callback) { var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend'; data.dropdown.one(animationEnd, function () { data.dropdown.removeClass('dropdown-animating'); data.dropdownMenu.removeClass('animated dropdown-animated'); data.dropdownMenu.removeClass(data.effectIn); data.dropdownMenu.removeClass(data.effectOut); if (typeof callback == 'function') { callback(); } }); } } //========================================================================================================================== /* Browser - Function ====================================================================================================== * You can manage browser * */ var edge = 'Microsoft Edge'; var ie10 = 'Internet Explorer 10'; var ie11 = 'Internet Explorer 11'; var opera = 'Opera'; var firefox = 'Mozilla Firefox'; var chrome = 'Google Chrome'; var safari = 'Safari'; $.AdminBSB.browser = { activate: function () { var _this = this; var className = _this.getClassName(); if (className !== '') $('html').addClass(_this.getClassName()); }, getBrowser: function () { var userAgent = navigator.userAgent.toLowerCase(); if (/edge/i.test(userAgent)) { return edge; } else if (/rv:11/i.test(userAgent)) { return ie11; } else if (/msie 10/i.test(userAgent)) { return ie10; } else if (/opr/i.test(userAgent)) { return opera; } else if (/chrome/i.test(userAgent)) { return chrome; } else if (/firefox/i.test(userAgent)) { return firefox; } else if (!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)) { return safari; } return undefined; }, getClassName: function () { var browser = this.getBrowser(); if (browser === edge) { return 'edge'; } else if (browser === ie11) { return 'ie11'; } else if (browser === ie10) { return 'ie10'; } else if (browser === opera) { return 'opera'; } else if (browser === chrome) { return 'chrome'; } else if (browser === firefox) { return 'firefox'; } else if (browser === safari) { return 'safari'; } else { return ''; } } } //========================================================================================================================== $(function () { $.AdminBSB.browser.activate(); $.AdminBSB.leftSideBar.activate(); $.AdminBSB.rightSideBar.activate(); $.AdminBSB.navbar.activate(); $.AdminBSB.dropdownMenu.activate(); $.AdminBSB.input.activate(); $.AdminBSB.select.activate(); $.AdminBSB.search.activate(); setTimeout(function () { $('.page-loader-wrapper').fadeOut(); }, 50); });