/** * This file is ONLY provided for the demo of Ace Admin Template. * You **should NOT** include it in your app. * For more information regarding how to apply various settings in your app, please refer to the documentation. */ // First we check if jQuery and other libraries are installed if (location.protocol == 'file:' && (!window.jQuery || !window.bootstrap)) { alert("jQuery, Bootstrap and other libraries are not available!\n\nPlease run `npm install` to install them first.") } window.currentLayout = 1; (function($ , undefined) { $(document).on('click', 'a[href="#"]', function(e) { // because in demo we have a `BASE` tag and clicking `a[href="#"]` elements will redirect us to homepage, which is not what we want e.preventDefault() }) ///////// sidebar tooltip $('.sidebar .badge[title]').tooltip({ template: '', placement: 'right', boundary: 'viewport' }) $('.sidebar:not(.sidebar-h) .btn[title]').tooltip({ template: '', placement: 'top', boundary: 'viewport' }) $('.sidebar.sidebar-h .btn[title]').tooltip({ template: '', placement: 'bottom', boundary: 'viewport' }) ////////handle widgets reload button for demo AceApp.EventHandler.on(document, 'reload.ace.card', '.card', function (ev) { var card = ev.delegateTarget setTimeout(function() { $(card).aceCard('stopLoading') }, 500 + parseInt(Math.random() * 500) ) }) ////////enable/disable sidebar submenu pull when it is in 'popup/hoverable' mode $(document) .on('expanded.ace.sidebar', '.sidebar.hoverable', function(ev) { $(this).aceSidebar('disableSubmenuPullup') }) .on('collapsed.ace.sidebar', '.sidebar.hoverable', function(ev) { $(this).aceSidebar('enableSubmenuPullup') }) //////////////////// // Handling settings box and theme changes var lastLightTheme = 'white'; var lastDarkTheme = 'dark'; var lastNavbarDarkTheme = 'blue'; var lastNavbarLightTheme = 'white'; var currentBoxedLayout = 'only-content'; var currentBodyTheme = 'auto'; //zoom in/out by increasing/decreasing html font-size $('input[name=zoom-level]').on('change', function() { HtmlZoom(this.value); }); //select sidebar theme $('input[name=sidebar-theme]').on('change', function() { SidebarTheme(this.value); }); $('input[name=sidebar-dark]').on('change', function() { lastDarkTheme = this.value;//save it so that when we choose "dark", last used dark theme gets selected applySidebarTheme(this.value); }); $('input[name=sidebar-light]').on('change', function() { lastLightTheme = this.value;//save it so that when we choose "light", last used light theme gets selected applySidebarTheme(this.value); }); $('#id-dropdown-select-light-theme').on('click', function() { $(this).button('toggle'); }); //change sidebar collapsed style $('input[name=sidebar-collapsed]').on('change', function() { var sidebar = $('.sidebar'); sidebar.removeClass('expandable hoverable hideable').addClass(this.value); if( this.value == 'hoverable' && sidebar.is('.sidebar-fixed.collapsed') ) { sidebar.aceSidebar('enableSubmenuPullup'); } else { sidebar.aceSidebar('disableSubmenuPullup'); } }); //select navbar theme $('input[name=navbar-theme]').on('change', function() { NavbarTheme(this.value); }); $('input[name=navbar-dark]').on('change', function() { lastNavbarDarkTheme = this.value;//save it so that when we choose "dark", last used dark theme gets selected applyNavbarTheme(this.value); }); $('input[name=navbar-light]').on('change', function() { lastNavbarLightTheme = this.value;//save it so that when we choose "light", last used light theme gets selected applyNavbarTheme(this.value); }); //select body theme $('input[name=body-theme]').on('change', function() { BodyTheme(this.value); }); //fixed navbar $('#id-navbar-fixed').on('change', function() { document.querySelector('.navbar').classList.toggle('navbar-fixed', this.checked); }); //fixed sidebar $('#id-sidebar-fixed').on('change', function() { document.querySelector('.sidebar').classList.toggle('sidebar-fixed', this.checked); }); //fixed footer $('#id-footer-fixed').on('change', function() { var checked = this.checked; $('.footer').each(function() { this.classList.toggle('footer-fixed', checked); }); }); //sidebar push content $('#id-push-content').on('change', function() { document.querySelector('.sidebar').classList.toggle('sidebar-push', this.checked); }); //display submenu on hover $('#id-sidebar-hover').on('change', function() { var sidebar = document.querySelector('#sidebar'); sidebar.classList.toggle('sidebar-hover', this.checked); if(this.checked) { $(sidebar) .aceSidebar('enableSubmenuPullup') .find('.nav-item.open').removeClass('open') .find('.submenu.show').removeClass('show') } else { $(sidebar).aceSidebar('disableSubmenuPullup'); } }); //boxed layout $('input[name=boxed-layout]').on('change', function() { BoxedLayout(this.value); }); //RTL $('#id-rtl').on('change', function() { RTLLayout(this.checked); }); //Change Fonts $('#id-change-font').on('change', function() { ChangeFont(this.value); }); //an animation for settings button icon when hovered var styleEl = document.createElement('style'); styleEl.innerHTML = ".flex-equal-sm > * {flex: 0 1 1% !important;}\ @media print {#id-ace-settings-modal {display: none !important;}}\ @media (hover: hover) { #id-ace-settings-modal:not(.show) .aside-header > .btn:hover > .fa { animation: 0.6s fa-spin ease-in-out; }}\ @media screen and (prefers-reduced-motion: reduce) { #id-ace-settings-modal:not(.show) .aside-header > .btn:hover > .fa { animation: none; } }"; document.head.appendChild(styleEl); var HtmlZoom = function(zoom) { var zoom = zoom || 'none'; if( zoom == 'none' ) $('html').css('font-size', ''); else { var sizes = {'90': '0.925rem', '110': '1.0625rem', '120': '1.125rem'}; $('html').css('font-size', sizes[zoom]); } } function SidebarTheme(theme) { loadThemesFile(); var theme = theme || 'light'; $('#id-sidebar-themes-light , #id-sidebar-themes-dark').addClass('d-none'); switch(theme) { case 'light': $('#id-sidebar-themes-light').removeClass('d-none'); break; case 'dark': $('#id-sidebar-themes-dark').removeClass('d-none'); break; } applySidebarTheme(theme); } function applySidebarTheme(theme) { var $sidebar = $('.sidebar'); resetSidebarColors($sidebar); switch(theme) { case 'light': applySidebarMatchingChanges($sidebar, lastLightTheme); break; case 'dark': applySidebarMatchingChanges($sidebar, lastDarkTheme); break; default: applySidebarMatchingChanges($sidebar, theme); break; }//switch } function resetSidebarColors($sidebar) { $sidebar.removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)sidebar-\S+/g); if(matchedClasses) matchedClasses = matchedClasses.filter(function(str) { return !(/sidebar-fixed|sidebar-visible|sidebar-backdrop|sidebar-top|sidebar-h|sidebar-push/.test(str)); }); return (matchedClasses || []).join('') }).find('.sidebar-inner').attr('class', 'sidebar-inner'); $sidebar.find('.nav').removeClass('has-active-border active-on-top active-on-right has-active-arrow'); if(currentBodyTheme == 'auto') $('body').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)body-\S+/g); return (matchedClasses || []).join('') }); $sidebar.find('.sidebar-shortcuts-mini').parent().find('.btn').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn-|radius-|border-|brc-|text-|opacity-)\S+/g); if(matchedClasses) matchedClasses = matchedClasses.filter(function(str) { return !(/btn-sm|btn-smd/.test(str)); }); return (matchedClasses || []).join('') }); $sidebar.find('.fa-exclamation-triangle, .fa.fa-search , .fa.fa-microphone').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(text-(\D)|opacity-)\S+/g); return (matchedClasses || []).join('') }).end().find('.badge').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(border-|badge-|bgc-|text-(\D))\S+/g); return (matchedClasses || []).join('') }); $('#sidebar-footer-bg').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(bgc-|brc-)\S+/g); return (matchedClasses || []).join('') }); $('#sidebar-footer .btn').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn-)\S+/g); return (matchedClasses || []).join('') }); if( window.currentLayout == 2) { $sidebar.find('.navbar-brand, .navbar-brand span:last, .fa-leaf, img, #id-user-info a, #id-user-info div').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(bgc-|brc-|text-|opacity-)\S+/g); return (matchedClasses || []).join('') }); $sidebar.find('#id-user-menu a, #id-user-menu a i').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn-|bgc-|brc-|text-|opacity-|shadow-|border-|radius-)\S+/g); return (matchedClasses || []).join('') }); } } var sidebarMatchings = {}; sidebarMatchings.light = { 'sidebar': 'sidebar-light', 'nav': ' has-active-border active-on-right', 'navbar': 'blue', 'exclamation': 'text-danger-m3', 'badge': 'badge-primary badge-sm py-1', 'search-icon': 'text-info', 'mic-icon': 'text-muted', 'brand': 'text-140 text-dark-m3', 'brand-icon': 'text-success-m1', 'user-img': 'brc-primary-tp2', 'user-info': 'text-blue-d2 bgc-h-secondary-l1', 'user-desc': 'text-dark-m3 text-85', 'footer': 'bgc-white brc-primary-m3', 'layout2-sidebar-header': 'brc-secondary-l2', 'layout2-sidebar-footer': 'sidebar-light brc-grey-l2', 'content-white': true, 'alert-2': 'This sidebar theme is more suitable for Dashboard 1', 'user-menu': 'btn-light-blue btn-brc-white btn-h-blue btn-a-blue radius-round border-2 shadow-sm', 'user-menu-icons': 'opacity-1' }; sidebarMatchings.lightblue = jQuery.extend({}, sidebarMatchings.light, { 'sidebar': 'sidebar-lightblue sidebar-spaced', 'nav': '', 'shortcuts': ['btn btn-outline-primary btn-bgc-white border-2 btn-text-success btn-h-success btn-a-success' , 'btn btn-outline-primary btn-bgc-white border-2 btn-text-info btn-h-info btn-a-info', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-orange btn-h-orange btn-a-orange', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-danger btn-h-danger btn-a-danger'], 'layout2-sidebar-header': 'brc-default-l1', 'layout2-sidebar-footer': 'sidebar-lightblue brc-secondary-l1' } ); sidebarMatchings.lightblue2 = jQuery.extend({}, sidebarMatchings.light, { 'sidebar': 'sidebar-lightblue2 sidebar-spaced', 'nav': '', 'shortcuts': ['btn btn-outline-primary btn-bgc-white border-2 btn-text-success btn-h-success btn-a-success' , 'btn btn-outline-primary btn-bgc-white border-2 btn-text-info btn-h-info btn-a-info', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-orange btn-h-orange btn-a-orange', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-danger btn-h-danger btn-a-danger'], 'layout2-sidebar-header': 'brc-default-l1', 'layout2-sidebar-footer': 'sidebar-lightblue2 brc-secondary-l1' } ); sidebarMatchings.lightpurple = jQuery.extend({}, sidebarMatchings.light, { 'navbar': 'purple', 'sidebar': 'sidebar-lightpurple sidebar-spaced', 'nav': '', 'shortcuts': ['btn btn-outline-purple btn-bgc-white btn-h-success btn-a-success border-2 radius-2 btn-text-success' , 'btn btn-outline-purple btn-bgc-white btn-h-purple btn-a-purple border-2 radius-2 btn-text-purple', 'btn btn-outline-purple btn-bgc-white btn-h-info btn-a-info border-2 radius-2 btn-text-info', 'btn btn-outline-purple btn-bgc-white btn-h-orange btn-a-orange border-2 radius-2 btn-text-orange'], 'brand': 'text-140 text-dark-tp3', 'brand-icon': 'text-success', 'user-img': 'brc-purple-tp2', 'user-info': 'text-purple light-1 text-center', 'user-desc': 'text-muted text-80', 'layout2-sidebar-header': 'brc-purple-l2', 'layout2-sidebar-footer': 'sidebar-lightpurple brc-purple-l2', 'layout2-sidebar-footer-btn': 'btn-purple btn-bold' } ); sidebarMatchings.white = jQuery.extend({}, sidebarMatchings.light, { 'sidebar': 'sidebar-white', 'sidebar-inner': 'shadow-sm', 'navbar-inner': 'shadow-md', 'layout2-sidebar-header': 'brc-secondary-l2', 'layout2-sidebar-footer': 'brc-secondary-l2', 'shortcuts': ['btn btn-outline-primary btn-bgc-white border-2 btn-text-success btn-h-success btn-a-success' , 'btn btn-outline-primary btn-bgc-white border-2 btn-text-info btn-h-info btn-a-info', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-orange btn-h-orange btn-a-orange', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-danger btn-h-danger btn-a-danger'], 'content-white': false, 'alert-2': false } ); sidebarMatchings.white2 = jQuery.extend({}, sidebarMatchings.light, { 'navbar': 'white', 'sidebar': 'sidebar-white2', 'nav': 'has-active-border active-on-right active-on-top', 'shortcuts': ['btn btn-outline-primary btn-bgc-white border-2 btn-text-success btn-h-success btn-a-success' , 'btn btn-outline-primary btn-bgc-white border-2 btn-text-info btn-h-info btn-a-info', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-orange btn-h-orange btn-a-orange', 'btn btn-outline-primary btn-bgc-white border-2 btn-text-danger btn-h-danger btn-a-danger'], 'layout2-sidebar-header': 'brc-secondary-l2', 'layout2-sidebar-footer': 'brc-secondary-l2', 'content-white': false, 'alert-2': false } ); sidebarMatchings.white3 = jQuery.extend({}, sidebarMatchings.light, { 'navbar': 'white', 'sidebar': 'sidebar-white3', 'nav': 'has-active-border active-on-top', 'navbar-inner': 'shadow-md', 'layout2-sidebar-header': 'brc-secondary-l2', 'layout2-sidebar-footer': 'brc-secondary-l2', 'content-white': false, 'alert-2': false } ); sidebarMatchings.white4 = jQuery.extend({}, sidebarMatchings.light, { 'navbar': 'lightblue', 'sidebar': 'sidebar-white4', 'sidebar-inner': 'shadow-sm', 'nav': 'has-active-border active-on-right', 'shortcuts': ['btn btn-outline-success border-b-2 radius-round' , 'btn btn-outline-info border-b-2 radius-round', 'btn btn-outline-warning border-b-2 radius-round', 'btn btn-outline-danger border-b-2 radius-round'], 'layout2-sidebar-header': 'brc-secondary-l2', 'layout2-sidebar-footer': 'brc-secondary-l2', 'navbar-inner': 'shadow-md', 'content-white': false, 'alert-2': false } ); sidebarMatchings.dark = jQuery.extend({}, sidebarMatchings.light, { 'body': 'body-darkblue3', 'navbar': 'darkblue', 'navbar-inner': 'shadow-md', 'sidebar': 'sidebar-color sidebar-dark', 'nav': ' has-active-border active-on-top', 'shortcuts': ['btn btn-outline-success border-b-2 btn-text-white' , 'btn btn-outline-info border-b-2 btn-text-white', 'btn btn-outline-warning border-b-2 btn-text-white', 'btn btn-outline-danger border-b-2 btn-text-white'], 'search-icon': 'text-info-l2', 'mic-icon': 'text-brown-l3 opacity-1', 'brand': 'text-white-tp1 text-140', 'brand-icon': 'text-success-l3', 'user-img': 'brc-primary-m2', 'user-info': 'text-orange-l2 bgc-h-white-tp9', 'user-desc': 'text-white text-85', 'exclamation': 'text-yellow-m3', 'badge': 'bgc-success-m1 text-dark-d2 badge-sm', 'footer': 'bgc-white brc-transparent', 'layout2-sidebar-header': 'brc-white-tp9', 'layout2-sidebar-footer': 'brc-white-tp10', 'content-white': false, 'alert-2': false, 'user-menu': ['bgc-black-tp8 btn-h-outline-blue', 'bgc-black-tp8 btn-h-outline-purple', 'bgc-black-tp8 btn-h-outline-orange'], 'user-menu-icons': ['text-blue-m2', 'text-purple-m2', 'text-orange-m2'] } ); sidebarMatchings.dark2 = jQuery.extend({}, sidebarMatchings.dark, { 'sidebar': 'sidebar-color sidebar-dark2', 'nav': ' has-active-border active-on-top has-active-arrow', } ); sidebarMatchings.steelblue = { 'body': 'body-darkblue', 'navbar': 'lightblue', 'sidebar': 'sidebar-color sidebar-steelblue', 'nav': ' has-active-border active-on-top has-active-arrow', 'shortcuts': 'btn-outline-white border-2 radius-2', 'exclamation': 'text-yellow-l1', 'badge': 'bgc-primary text-white-tp1 badge-sm border-1 brc-white-tp2', 'search-icon': 'text-orange-l2', 'mic-icon': 'text-white-tp3', 'brand': 'text-white-tp1 text-140', 'brand-icon': 'text-success-l3', 'user-img': 'brc-white-tp3', 'user-info': 'text-white bgc-h-white-tp9', 'user-desc': 'text-white-tp1 text-85', 'user-menu': ['bgc-black-tp8 btn-h-light-blue', 'bgc-black-tp8 btn-h-light-purple', 'bgc-black-tp8 btn-h-light-orange'], 'user-menu-icons': ['text-blue-l1', 'text-purple-l1', 'text-orange-l1'], 'footer': 'bgc-white brc-transparent', 'layout2-sidebar-header': 'brc-white-tp9', 'layout2-sidebar-footer': 'brc-white-tp10', 'layout2-sidebar-footer-btn': 'btn-outline-white btn-bold', 'content-white': false, 'alert-2': false }; sidebarMatchings.green = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-darkgreen', 'navbar': 'darkgreen', 'sidebar': 'sidebar-color sidebar-green', 'shortcuts': 'btn-outline-yellow border-2 btn-text-white radius-round', 'badge': 'border-0 bgc-white text-dark-tp1', 'search-icon': 'text-white-tp2', } ); sidebarMatchings.blue = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-darkblue', 'sidebar': 'sidebar-color sidebar-blue', 'nav': ' has-active-border has-active-arrow active-on-top', 'navbar': 'orange', 'exclamation': 'text-orange-l2', 'badge': 'border-1 badge-warning brc-white-tp3', } ); /** sidebarMatchings.teal = jQuery.extend({}, sidebarMatchings.green, { 'body': 'body-darkslategrey', 'navbar': 'green', 'sidebar': 'sidebar-color sidebar-teal', } ); */ sidebarMatchings.plum = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-lightplum', 'navbar': 'lightpurple', 'sidebar': 'sidebar-color sidebar-plum', //'shortcuts': ['btn text-dark-tp3 btn-warning', 'btn text-dark-tp3 btn-primary', 'btn text-dark-tp3 btn-purple', 'btn text-dark-tp3 btn-success'],//'btn text-white light-3 opacity-1 btn-outline-white brc-yellow-tp3 btn-h-dark border-2 radius-round', 'shortcuts': 'btn-outline-purple border-2 text-white radius-2', 'badge': 'bgc-white text-dark-tp3 badge-sm', 'exclamation': 'text-orange-l2', 'search-icon': 'text-orange-l2 opacity-2', } ); sidebarMatchings.purple = jQuery.extend({}, sidebarMatchings.plum, { 'body': 'body-img1', 'navbar': 'brown', 'sidebar': 'sidebar-color sidebar-purple', 'shortcuts': 'btn text-white btn-outline-success border-2 radius-round', 'exclamation': 'text-yellow-m2', 'badge': 'badge-success badge-sm border-1 brc-white-tp2', 'search-icon': 'text-white-tp2', 'mic-icon': 'text-white-tp3', } ); sidebarMatchings.darkblue = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-lightblue', 'navbar': 'skyblue', 'sidebar': 'sidebar-color sidebar-darkblue', 'nav': ' has-active-border active-on-right active-on-top', 'exclamation': 'text-orange-l1', } ); sidebarMatchings.darkslategrey = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-darkslategrey', 'navbar': 'lightgrey', 'sidebar': 'sidebar-color sidebar-darkslategrey', 'shortcuts': 'btn-outline-warning btn-text-white border-2 radius-2', 'exclamation': 'text-orange-l2', } ); sidebarMatchings.darkslateblue = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-img1', 'navbar': 'lightpurple', 'sidebar': 'sidebar-color sidebar-darkslateblue', 'nav': 'has-active-border active-on-right', 'shortcuts': 'btn-purple btn-h-warning border-2 radius-2', 'search-icon': 'text-white-tp3', 'badge': 'bgc-yellow-d1 text-dark-tp2 badge-sm border-1 brc-white-tp2', 'exclamation': 'text-yellow-l2', } ); sidebarMatchings.cadetblue = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-darkslategrey', 'navbar': 'lightgrey', 'sidebar': 'sidebar-color sidebar-cadetblue', 'shortcuts': 'btn-bgc-white btn-h-outline-success btn-text-success btn-h-text-white border-2 radius-2', 'badge': 'bgc-yellow-d1 text-dark-tp2 badge-sm border-1 brc-white-tp2', 'exclamation': 'text-yellow-l2' } ); sidebarMatchings.darkcrimson = jQuery.extend({}, sidebarMatchings.plum, { 'body': 'body-darkplum', 'navbar': 'darkgreen', 'sidebar': 'sidebar-color sidebar-darkcrimson', 'nav': ' has-active-border has-active-arrow active-on-top', 'shortcuts': 'btn text-dark-tp3 btn-warning', } ); sidebarMatchings.gradient1 = jQuery.extend({}, sidebarMatchings.green, { 'body': 'body-darkblue2', 'navbar': 'lightgrey', 'sidebar': 'sidebar-color sidebar-gradient1', } ); sidebarMatchings.gradient2 = jQuery.extend({}, sidebarMatchings.green, { 'body': '', 'navbar': 'green', 'sidebar': 'sidebar-color sidebar-gradient2', 'shortcuts': 'btn-outline-purple border-2 btn-text-white radius-round', } ); sidebarMatchings.gradient3 = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-lightblue3', 'navbar': 'cadetblue', 'sidebar': 'sidebar-color sidebar-gradient3', 'shortcuts': 'btn-outline-green border-2 text-white radius-round', 'badge': 'badge-danger badge-sm border-1 brc-white-tp2', 'search-icon': 'text-success-l3', 'mic-icon': 'text-white-tp2' } ); sidebarMatchings.gradient4 = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-darkblue3', 'navbar': 'skyblue', 'sidebar': 'sidebar-color sidebar-gradient4', } ); /** sidebarMatchings.gradient5 = jQuery.extend({}, sidebarMatchings.steelblue, { 'body': 'body-img1', 'navbar': 'burlywood', 'sidebar': 'sidebar-color sidebar-gradient5', 'shortcuts': 'btn-outline-warning border-2 btn-text-white radius-1', 'exclamation': 'text-yellow-l3', } ); */ //btn btn-outline-info border-0 btn-bgc-white radius-1 var _allowAutoMatchSidebar = true; var _allowAutoMatchNavbar = true; function applySidebarMatchingChanges($sidebar, theme) { var changes = sidebarMatchings[theme]; if (!changes) changes = sidebarMatchings['light']; if(currentBodyTheme == 'auto' && (currentBoxedLayout == 'all' || currentBoxedLayout == 'not-navbar')) $(document.body).addClass( changes['body'] ); if( changes['navbar'] && _allowAutoMatchNavbar && $('#id-auto-match').prop('checked') ) { _allowAutoMatchSidebar = false;//don't automatically change sidebar applyNavbarTheme(changes['navbar']); } _allowAutoMatchNavbar = true; if( changes['sidebar'] ) $sidebar.addClass( changes['sidebar'] ); if( changes['sidebar-inner'] ) $sidebar.find('.sidebar-inner').addClass( changes['sidebar-inner'] ); if( changes['nav'] ) { $sidebar.find('.nav').addClass( changes['nav'] ); if($sidebar.hasClass('sidebar-h')){ $sidebar.find('.nav').addClass('active-on-top'); if(theme != 'light') { $('#id-full-height').prop('checked', true) $sidebar.find('.container').removeClass('align-items-xl-end'); $sidebar.find('.nav').removeClass('nav-link-rounded'); } if(theme == 'light' || theme.indexOf('white') >= 0) { $sidebar.find('.sidebar-inner').addClass( 'border-b-1 brc-grey-l1' ); } } } var shortcuts = changes['shortcuts'] || ['btn-success opacity-2' , 'btn-info opacity-2', 'btn-orange opacity-2', 'btn-danger opacity-2']; if( !Array.isArray(shortcuts) || shortcuts.length == 1 ) $sidebar.find('.sidebar-shortcuts-mini').parent().find('.btn').addClass( !Array.isArray(shortcuts) ? shortcuts : shortcuts[0] ); else { var p = $sidebar.find('.sidebar-shortcuts-mini').parent(); for(var i = 0; i < 4; i++) { p.find('.btn:nth-child('+(i+1)+')').addClass( shortcuts.length > i ? shortcuts[i] : shortcuts[i - shortcuts.length] ); } } if( changes['exclamation'] ) $sidebar.find('.fa-exclamation-triangle').addClass( changes['exclamation'] ); if( changes['badge'] ) $sidebar.find('.badge:last').addClass( changes['badge'] ); if( changes['search-icon'] ) $sidebar.find('.fa.fa-search').addClass( changes['search-icon'] ); if( changes['mic-icon'] ) $sidebar.find('.fa.fa-microphone').addClass( changes['mic-icon'] ); // if( changes['footer'] && !window.isAceLayout4 ) { $('#sidebar-footer-bg').addClass( changes['footer'] ); } // if( window.currentLayout == 2 ) { if( changes['brand'] ) $sidebar.find('.navbar-brand').addClass(changes['brand']); if( changes['brand-icon'] ) $sidebar.find('.fa-leaf').addClass(changes['brand-icon']); if( changes['user-img'] ) $sidebar.find('img').addClass(changes['user-img']); if( changes['user-info'] ) $('#id-user-info a').addClass(changes['user-info']); if( changes['user-desc'] ) $('#id-user-info div').addClass(changes['user-desc']); var usermenu = changes['user-menu']; var usermenu_icons = changes['user-menu-icons']; if( !Array.isArray(usermenu) || usermenu.length == 1 ) { $('#id-user-menu .btn') .addClass( !Array.isArray(usermenu) ? usermenu : usermenu[0] ) .find('.fa').addClass( !Array.isArray(usermenu_icons) ? usermenu_icons : usermenu_icons[0] ); } else { for(var i = 0; i < 3; i++) { $('#id-user-menu .btn:nth-child('+(i+1)+')') .addClass( usermenu.length > i ? usermenu[i] : usermenu[i - usermenu.length] ) .find('.fa').addClass( usermenu_icons.length > i ? usermenu_icons[i] : usermenu_icons[i - usermenu_icons.length] ) } } var header = $('#sidebar-header-brand1, #sidebar-header-brand2'); header.removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(sidebar-|bgc-|bg-|brc-)\S*/g); return (matchedClasses || []).join('') }); var footer = $('#sidebar-footer'); footer.removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(sidebar-|bgc-|bg-|brc-)\S*/g); return (matchedClasses || []).join('') }); if (changes['layout2-sidebar-header']) { header.addClass( changes['layout2-sidebar-header'] ); } if (changes['layout2-sidebar-footer']) { footer.addClass( changes['layout2-sidebar-footer'] ); footer.find('.btn').addClass( changes['layout2-sidebar-footer-btn'] || 'btn-blue btn-bold'); } if (changes['sidebar'].indexOf('sidebar-color') >= 0) { // footer.addClass( changes['sidebar'] ); //if( changes['sidebar'].indexOf('sidebar-gradient') >= 0 ) { //footer.css('background-image', 'none'); //} } /////////////// $('.navbar-inner').addClass('shadow-md'); if (theme == 'white3') { $('.navbar-inner').removeClass('shadow-md'); } else if (theme == 'lightblue') { $('.sidebar-inner').addClass('border-r-1 brc-default-l1'); } else if (theme == 'lightblue2') { $('.sidebar-inner').addClass('border-r-1 brc-primary-l2'); } else if (theme == 'lightpurple') { $('.sidebar-inner').addClass('border-r-1 brc-purple-l2'); } } $.aceToaster.removeAll(null, true)//true means instantly remove (don't fade) if (changes['alert-'+ window.currentLayout]) { window.hideAlert = window.hideAlert || function() { $.aceToaster.removeAll('tc') window.alertHidden = true; } if(!window.alertHidden) $.aceToaster.add({ placement: 'tc', title: 'Note', body: '
' + changes['alert-'+ window.currentLayout] + '' , width: 480, closeClass: 'btn btn-xs btn-link no-underline bgc-h-black-tp8 text-white text-150 position-tr mr-n2', //delay: 8, sticky: true, icon: '', imageClass: 'mt-2 mx-15', className: 'bgc-red-tp2 border-0 px-2 shadow', headerClass: 'bg-transparent border-0 text-white text-120 pt-3', bodyClass: 'text-white pt-0 pb-3 text-110' }); } } //////////////////////////////////// var navbarMatchings = {}; navbarMatchings.blue = { 'sidebar': 'light', 'brand': 'text-white', 'search-icon': 'text-white mr-0', 'navbar-input': 'py-15', 'nav-item-bell': 'nav-link pl-lg-3 pr-lg-4', 'badge-bell': 'badge-sm bgc-warning-d2 text-white text-80 border-1 brc-white-tp5', 'nav-item-flask': 'nav-link pl-lg-3 pr-lg-4', 'badge-flask': 'badge-sm text-90 text-success-l5', 'bell-icon': 'mr-2 text-110', 'flask-icon': 'mr-1 text-110', 'toggler': ['' , ''], 'user-image': 'brc-white-tp1 border-2', 'user-welcome': 'text-90', 'button': 'btn-outline-default btn-h-white btn-a-white brc-white-tp3 btn-text-white', }; navbarMatchings.darkblue = jQuery.extend({}, navbarMatchings.blue, { // 'boxed': 'all', 'sidebar': 'dark', 'badge-bell': 'badge-sm bgc-white text-orange-d2 text-80 border-0' } ); navbarMatchings.purple = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'lightpurple', 'badge-bell': 'badge-sm btn-yellow text-80 border-1 brc-white', 'badge-flask': 'badge-sm text-90 text-yellow-l4 mt-lg-n1 mr-lg-n1', } ); navbarMatchings.plum = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'lightpurple', 'nav': 'nav-compact has-active-border', 'badge-bell': 'badge-sm badge-warning mt-lg-n1 text-80 border-1 brc-white', 'nav-item-flask': 'nav-link pl-lg-3 pr-lg-4', 'badge-flask': 'badge-sm text-90 text-yellow-l4 mt-lg-n1 mr-lg-n1', 'user-welcome': 'opacity-1', 'user-name': 'mt-n1', } ); navbarMatchings.orange = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'cadetblue', 'badge-bell': 'bgc-dark text-80 border-0', 'badge-flask': 'badge-sm text-dark-tp3 text-95', } ); navbarMatchings.brown = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'gradient5', 'nav': 'nav-compact has-active-border mr-1', 'badge-bell': 'bgc-white text-dark-tp2 text-85 border-0 mt-lg-n1', 'badge-flask': 'text-yellow-l4 text-95 text-600 mt-lg-n2 mr-lg-n1', } ); navbarMatchings.darkgreen = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'dark2', 'nav': 'nav-compact has-active-border mr-1', 'nav-item': 'mr-lg-1', 'badge-bell': 'btn-yellow text-80 mt-lg-n1 mr-lg-n1 border-0', 'nav-item-flask': 'nav-link pl-lg-3 pr-lg-3', 'badge-flask': 'badge-sm text-white text-90 mt-lg-n2 mr-lg-n2', 'bell-icon': 'text-white mr-lg-1 text-110' } ); navbarMatchings.skyblue = jQuery.extend({}, navbarMatchings.blue, { // 'boxed': 'all', 'sidebar': 'darkblue', 'nav': 'border-0 has-active-border', 'nav-item':'mr-lg-2px', 'navbar-input': 'radius-1 border-1 py-2', 'badge-bell': 'badge-sm badge-warning border-1 brc-white text-80', 'badge-flask': 'badge-sm text-90', } ); navbarMatchings.secondary = jQuery.extend({}, navbarMatchings.blue, { 'badge-flask': 'badge-sm text-white text-90', } ); navbarMatchings.green = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'darkblue', 'badge-bell': 'bgc-orange-m3 text-80 text-dark-tp2', 'badge-flask': 'bgc-orange-m3 text-80 text-dark-tp2 px-15 radius-round', } ); navbarMatchings.teal = jQuery.extend({}, navbarMatchings.blue, { // 'boxed': 'all', 'sidebar': 'cadetblue' } ); navbarMatchings.cadetblue = jQuery.extend({}, navbarMatchings.blue, { 'sidebar': 'purple', 'nav': 'has-active-border', 'nav-item-flask': 'btn btn-orange bgc-orange-tp3 pl-lg-3 pr-lg-4', 'badge-bell': 'badge-sm bgc-dark border-0 text-80', 'badge-flask': 'text-white-tp1 text-90', 'user-image': 'brc-white-tp3 border-2', } ); navbarMatchings.white = jQuery.extend({}, navbarMatchings.blue, { // 'boxed': 'all', 'sidebar': 'white2', 'nav': 'has-active-border', 'brand': 'text-grey', 'brand-icon': 'text-success', 'toggler': ['btn-h-white' , 'bgc-dark-tp3'], 'search': 'px-2', 'search-icon': 'text-primary-m1', 'badge-bell': 'badge-info border-0 badge-sm text-80', 'badge-flask': 'text-danger text-80', 'user-image': 'brc-primary-m2 border-2 p-1px', 'mega': 'mt-1px', 'button': 'btn-outline-primary', } ); navbarMatchings.white2 = jQuery.extend({}, navbarMatchings.white, { // 'boxed': 'all', 'navbar-input': 'border-1 radius-1 py-2' } ); navbarMatchings.lightblue = { 'sidebar': 'steelblue', // 'boxed': 'all', 'nav': 'nav-compact-2 mr-1 has-active-border', 'nav-item': 'mr-1', 'brand': 'text-dark-tp2', 'brand-icon': 'text-success-m2', 'brand-subtext': 'text-orange-d3 text-90', 'toggler': ['btn-h-lighter-blue' , 'bgc-primary'], 'search': 'px-2', 'search-icon': 'text-primary-m2', 'nav-item-bell': 'btn btn-orange text-white px-lg-3 opacity-1', 'badge-bell': 'badge-danger badge-dot border-0', 'nav-item-flask': 'btn btn-success px-lg-3 opacity-1', 'badge-flask': 'badge-tr p-lg-1 text-75', 'bell-icon': 'text-110', 'flask-icon': 'text-110', 'user-image': 'brc-primary-m2 border-1 p-1px', 'user-name': 'mt-n2', 'user-welcome': 'opacity-1 text-85', 'mega': 'mt-1px', 'button': 'btn-outline-primary', }; navbarMatchings.lightpurple = { 'sidebar': 'darkslateblue', // 'boxed': 'all', 'nav': 'nav-compact-2 mr-1 has-active-border', 'nav-item': 'mr-1', 'brand': 'text-dark-tp3', 'brand-icon': 'text-purple-d1', 'toggler': ['btn-h-lighter-purple' , 'bgc-dark-tp3'], 'search-icon': 'text-dark-tp3', 'nav-item-bell': 'btn btn-purple px-lg-3', 'badge-bell': 'btn-yellow badge-dot p-0 mr-lg-2 mt-lg-2', 'nav-item-flask': 'btn btn-grey px-lg-3', 'badge-flask': 'badge-tr p-lg-1 text-75', 'bell-icon': 'text-110', 'flask-icon': 'text-110', 'user-image': 'brc-grey-tp3 border-1 p-1px', 'user-name': 'mt-n2 font-bolder', 'user-welcome': 'opacity-1 text-85', 'mega': 'mt-1px', 'button': 'btn-outline-purple', }; navbarMatchings.lightgreen = { 'sidebar': 'green', // 'boxed': 'all', 'nav': 'nav-compact-2 mr-1 has-active-border', 'nav-item': 'mr-1', 'brand': 'text-dark-tp2', 'brand-icon': 'text-success-m1', 'toggler': ['btn-h-white' , 'bgc-dark-tp3'], 'search-icon': 'text-orange-d2', 'nav-item-bell': 'btn btn-orange opacity-1 px-lg-3', 'badge-bell': 'bgc-white badge-dot p-0 mr-lg-2 mt-lg-2', 'nav-item-flask': 'btn btn-outline-red px-lg-3', 'badge-flask': 'badge-tr p-lg-1 text-75 text-600', 'bell-icon': 'text-110', 'flask-icon': 'text-110', 'user-image': 'brc-grey-tp3 border-1 p-1px', 'user-name': 'mt-lg-n2 font-bolder', 'user-welcome': 'opacity-1', 'mega': 'mt-0', 'button': 'btn-outline-success', }; navbarMatchings.lightgrey = { 'sidebar': 'cadetblue', // 'boxed': 'all', 'intro': 'bgc-green-d2', 'nav': 'nav-compact-2 mr-1 has-active-border', 'nav-item': 'mr-1', 'brand': 'text-white-tp1', 'toggler': ['' , 'text-white-tp1'], 'search-icon': 'text-orange-d2', 'nav-item-bell': 'btn btn-purple px-lg-3', 'badge-bell': 'bgc-white badge-dot p-0 mr-lg-2 mt-lg-2', 'nav-item-flask': 'btn btn-outline-grey px-lg-3', 'badge-flask': 'badge-tr p-lg-1 text-75', 'bell-icon': 'text-110', 'flask-icon': 'text-110', 'user-image': 'brc-grey-tp3 border-1 p-1px', 'user-name': 'mt-lg-n2 text-600', 'user-welcome': 'opacity-1', 'mega': 'mt-0', 'button': 'btn-outline-default', }; /** navbarMatchings.lightyellow = { 'sidebar': 'cadetblue', // 'boxed': 'all', 'nav': 'has-active-border', 'nav-item': 'mr-1px', 'brand': 'text-dark-tp2', 'brand-icon': 'text-success', 'toggler': ['btn-h-light-yellow' , 'bgc-dark-tp3'], 'search-icon': 'text-brown-m2', 'nav-item-bell': 'btn btn-outline-purple pl-lg-3 pr-lg-4', 'badge-bell': 'badge-white text-75 brc-dark-tp3 border-1 badge-sm', 'nav-item-flask': 'btn btn-outline-success pl-lg-3 pr-lg-4', 'badge-flask': 'p-lg-1 text-85', 'bell-icon': 'text-110 mr-lg-2', 'flask-icon': 'text-110 mr-lg-1', 'user-image': 'brc-grey-tp3 border-1 p-1px', 'user-name': 'mt-n1', 'user-welcome': 'opacity-2', 'mega': 'mt-1px', 'button': 'btn-outline-success', }; navbarMatchings.khaki = { 'sidebar': 'gradient5', // 'boxed': 'all', 'nav': 'has-active-border', 'nav-item': 'mr-1px', 'brand': 'text-dark-tp2', 'brand-icon': 'text-dark-tp4', 'brand-subtext': 'text-85 ml-n1', 'toggler': ['btn-h-light-yellow' , 'bgc-dark-tp3'], 'search-icon': 'text-brown-m2', 'nav-item-bell': 'nav-link px-lg-3', 'badge-bell': 'text-85 border-0 badge-sm', 'nav-item-flask': 'nav-link px-lg-3', 'badge-flask': 'p-lg-1 text-85 badge-sm', 'bell-icon': 'text-110 mr-lg-2', 'flask-icon': 'text-110 mr-lg-2', 'user-image': 'brc-grey-tp3 border-1 p-1px', 'user-name': 'mt-n1', 'user-welcome': 'opacity-1 text-85', 'mega': 'mt-1px', 'button': 'btn-outline-dark', }; */ function NavbarTheme(theme) { loadThemesFile(); var theme = theme || 'blue'; $('#id-navbar-themes-light , #id-navbar-themes-dark').addClass('d-none'); switch(theme) { case 'light': $('#id-navbar-themes-light').removeClass('d-none'); break; case 'dark': $('#id-navbar-themes-dark').removeClass('d-none'); break; } applyNavbarTheme(theme); } function applyNavbarTheme(theme) { var theme = theme || 'blue'; var $navbar = $('.navbar'); resetNavbarColors($navbar); switch(theme) { case 'light': $navbar.addClass('navbar-'+lastNavbarLightTheme); applyNavbarMatchingChanges($navbar, lastNavbarLightTheme); break; case 'dark': $navbar.addClass('navbar-'+lastNavbarDarkTheme); applyNavbarMatchingChanges($navbar, lastNavbarDarkTheme); break; default: $navbar.addClass('navbar-'+theme); applyNavbarMatchingChanges($navbar, theme); break; } } function resetNavbarColors($navbar) { $navbar.removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)navbar-\S+/g); if(matchedClasses) matchedClasses = matchedClasses.filter(function(str) { return !(/navbar-fixed|navbar-sm|navbar-expand-lg/.test(str)); }); return (matchedClasses || []).join('') }); $navbar.find('.navbar-intro').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(text-|bgc-|bg-)\S+/g); return (matchedClasses || []).join('') }); $navbar.find('#navbarMenu .navbar-nav > .nav').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(nav-compact|border-0|has-active-border|mr-|m-|ml-|mx-)\S*/g); return (matchedClasses || []).join('') }).find('> .nav-item').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(mr-|m-|ml-|mx-)\S*/g); return (matchedClasses || []).join('') }).find('> a > .dropdown-caret').removeClass('d-none'); $navbar.find('.navbar-brand, .navbar-brand span:last, .fa-leaf, .fa-search, .fa-flask, .fa-bell, #id-navbar-badge1, #id-navbar-badge2, .nav-user-name, #id-user-welcome, #navbarMenu .navbar-nav > .nav > .nav-item > .nav-link, #navbarMenu .navbar-nav > .nav > .nav-item > .btn').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn-|bgc-|brc-|border-|text-|opacity-|m-|mx-|ml-|mr-|mt-|mb-|pl-|pr-|px-|p-|badge-)\S+/g); return (matchedClasses || []).join('') }); $navbar.find('.navbar-input').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(radius-|border-|py-)\S+/g); return (matchedClasses || []).join('') }); ////////// $navbar.find('[data-toggle="sidebar"] , [data-toggle-mobile="sidebar"]').add($navbar.find('.fa-flask, .fa-bell').parent()).removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn|btn-|brc-|text-|border-|(d-style))\S+/g); return (matchedClasses || []).join('') }).find('.bars').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(text-|bgc-|bg-)\S+/g); return (matchedClasses || []).join('') }); $navbar.find('.fa-flask, .fa-bell').parent().removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(d-)\S+/g); return (matchedClasses || []).join('') }); $navbar.find('#id-navbar-user-image , .navbar-toggler img').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(brc-|border-|p-)\S+/g); return (matchedClasses || []).join('') }); $navbar.find('.tmp--cloned').remove(); ////////// $navbar.find('.dropdown-mega > .dropdown-menu').removeClass('mt-1px mt-0 border-t-0'); // if( window.isAceLayout2 ) { $('#id-nav-post-btn').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(btn-|brc-)\S*/g); return (matchedClasses || []).join('') }); } } function applyNavbarMatchingChanges($navbar, theme) { var changes = navbarMatchings[theme]; if (!changes) changes = navbarMatchings['blue']; if( _allowAutoMatchSidebar && $('#id-auto-match').prop('checked') && changes['sidebar'] ) { _allowAutoMatchNavbar = false; //$('label.sidebar-' + changes['sidebar']).trigger('click'); applySidebarTheme(changes['sidebar']); } _allowAutoMatchSidebar = true; //if( changes['boxed'] && currentBoxedLayout == 'not-navbar' ) $('[name=boxed-layout][value='+changes['boxed']+']').parent().trigger('click'); if (changes['intro']) { $('.navbar-intro').addClass(changes['intro']) } var nav = $navbar.find('#navbarMenu .navbar-nav > .nav'); if( changes['nav'] ) nav.addClass( changes.nav ); if( changes['nav-item'] ) nav.find('> .nav-item').addClass( changes['nav-item'] ); //if( changes['hide-caret '] ) .find('> a > .dropdown-caret').addClass('d-none'); var brand = $navbar.find('.navbar-brand'); if( changes['brand'] ) brand.addClass( changes['brand'] ); if( changes['brand-icon'] ) brand.find('.fa-leaf').addClass( changes['brand-icon'] ); if( changes['brand-subtext'] ) brand.find('span:last').addClass( changes['brand-subtext'] ); if( changes['toggler'] ) { var toggler = $navbar.find('[data-toggle="sidebar"] , [data-toggle-mobile="sidebar"]'); toggler.addClass( Array.isArray( changes['toggler'] ) ? changes['toggler'][0] : changes['toggler'] ).addClass('btn-burger'); if( typeof Array.isArray( changes['toggler'] ) && changes['toggler'][1] ) toggler.find('.bars').addClass( changes['toggler'][1] ); } if( changes['search'] ) $navbar.find('[data-target="#navbarSearch"]').addClass( changes['search'] ); if( changes['navbar-input'] ) $navbar.find('.navbar-input').addClass( changes['navbar-input'] ); if( changes['search-icon'] ) $navbar.find('.fa.fa-search').addClass( changes['search-icon'] ); if( changes['nav-item-flask'] ) { var btn = $navbar.find('.fa-flask').parent(); var btnClass = changes['nav-item-flask'].match(/btn-(\w|\-)+/); if ( btnClass ) { //make a copy of this button to be displayed on mobile view, without btn-* colors var clone = btn.clone().insertAfter(btn).addClass('d-lg-none tmp--cloned'); clone.addClass('nav-link'); btn.addClass('d-none d-lg-flex'); //but still match the btn-* color for the icon clone.find('.fa').eq(0).addClass( btnClass[0].replace('outline-', '') +' radius-round w-4 h-4 text-center pt-2'); } btn.removeClass('nav-link').addClass( changes['nav-item-flask'] ); } if( changes['nav-item-bell'] ) { var btn = $navbar.find('.fa-bell').parent(); var btnClass = changes['nav-item-bell'].match(/btn-(\w|\-)+/); if ( btnClass ) { //make a copy of this button to be displayed on mobile view, without btn-* colors var clone = btn.clone().insertAfter(btn).addClass('d-lg-none tmp--cloned'); clone.addClass('nav-link'); btn.addClass('d-none d-lg-flex'); //but still match the btn-* color for the icon clone.find('.fa').eq(0).addClass( btnClass[0].replace('outline-', '') +' radius-round w-4 h-4 text-center pt-2'); } btn.removeClass('nav-link').addClass( changes['nav-item-bell'] ); } if( changes['badge-bell'] ) $navbar.find('#id-navbar-badge1').addClass( changes['badge-bell'] ); if( changes['badge-flask'] ) $navbar.find('#id-navbar-badge2').addClass( changes['badge-flask'] ); if( changes['bell-icon'] ) $navbar.find('.fa-bell').addClass( changes['bell-icon'] ); if( changes['flask-icon'] ) $navbar.find('.fa-flask').addClass( changes['flask-icon'] ); if( changes['user-image'] ) { $navbar.find('#id-navbar-user-image , .navbar-toggler img').addClass( changes['user-image'] )//.find('.badge').removeClass('border-1'); } if( changes['user-name'] ) $navbar.find('.nav-user-name').addClass( changes['user-name'] ); if( changes['user-welcome'] ) $navbar.find('#id-user-welcome').addClass( changes['user-welcome'] ); if( changes['mega'] ) $navbar.find('.dropdown-mega > .dropdown-menu').addClass( changes['mega'] ); //////////////// if (theme == 'lightgrey') { //in lightgrey navbar, .navbar-intro (& .navbar-brand) has green background //but in mobile mode it becomes transparent //so we insert a cloned .navbar-brand with dark colors for mobile view only //these are optional, and only for Ace's demo var navbrand = $navbar.find('.navbar-brand').removeClass('d-none d-lg-block'); var cloned = navbrand.clone(); cloned.removeClass('text-white-tp1').addClass('text-dark-tp4 d-lg-none tmp--cloned').find('.fa-leaf').addClass('text-success-m1'); navbrand.addClass('d-none d-lg-block');//hide it in mobile view navbrand.after(cloned); var toggle = $navbar.find('.btn-burger[data-toggle-mobile=sidebar]'); var bars = toggle.find('.bars'); cloned = bars.clone().removeClass('text-white-tp1 d-none').addClass('text-dark-tp4 d-lg-none tmp--cloned'); bars.addClass('d-none d-lg-block').after(cloned); if( window.isAceLayout2 ) { $navbar.find('.btn-burger[data-toggle=sidebar]').addClass('btn-light-success btn-bold').find('.bars').removeClass('text-white-tp1').addClass('text-dark-tp4'); } } else { $navbar.find('.navbar-brand , .btn-burger[data-toggle-mobile=sidebar] .bars').removeClass('d-none d-lg-block'); } // if( window.isAceLayout2 && changes['button'] ) { $('#id-nav-post-btn').addClass( changes['button'] + ' btn-bold btn-sm' ); } } function BodyTheme(theme) { loadThemesFile(); theme = theme || 'auto'; currentBodyTheme = theme; var $body = $('body'); $body.removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)body-\S+/g); return (matchedClasses || []).join('') }).css('background-image', '') if (this.value != 'auto') { $body.addClass('body-' + theme); // this is for 'demo' and correct asset paths if (theme == 'img1') { $body.css('background-image', "url('assets/image/body-bg-1.jpg')") } else if (theme == 'img2') { $body.css('background-image', "url('assets/image/body-bg-2.jpg')") } return; } //auto apply body color according to sidebar color } function BoxedLayout(box) { box = box || 'none'; currentBoxedLayout = box; if(box == 'none') { $('.body-container, .navbar-inner, .page-content').removeClass('container container-plus'); $('.navbar-inner > .container').contents().unwrap(); } else if(box == 'all') { $('.page-content').removeClass('container container-plus'); $('.body-container, .navbar-inner').addClass('container container-plus'); if( !window.isAceLayout2 ) { $('.navbar-inner > .container').contents().unwrap(); } else { if( $('.navbar-inner > .container').length == 0 ) $('.navbar-inner').wrapInner('
'); } } else if(box == 'not-navbar') { if( window.currentLayout == 2 ) return;//not applicable to second layout $('.navbar-inner, .page-content').removeClass('container container-plus'); $('.body-container').addClass('container container-plus'); $('.navbar-inner').wrapInner('
'); } else if(box == 'only-content') { BoxedLayout('none'); $('.page-content').addClass('container container-plus'); } if (box == 'all' || box == 'not-navbar') { $('#id-body-bg').collapse('show'); } else { $('#id-body-bg').collapse('hide'); } }//BoxedLayout //set rtl path for bootstrap css var bootstrapStylesheet = ''; $('link[rel=stylesheet][href*="/bootstrap.css"], link[rel=stylesheet][href*="/bootstrap.min.css"]').each(function() { var href = $(this).attr('href'); $(this).attr('data-rtl', href.indexOf('.min.css') == -1 ? './dist/css/rtl/bootstrap.css' : './dist/css/rtl/bootstrap.min.css'); bootstrapStylesheet = $(this).attr('href'); }); function ajaxGet(url) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open("GET", url); xhr.onload = function() {resolve(xhr.responseText)} xhr.onerror = function() {reject(xhr.statusText)} xhr.send(); }); } var _alreadyLoaded = {}; function loadCSS(href, message) { return new Promise(function(resolve, reject) { //because when running the static html demo, no waiting is required and also ajaxGet will fail if(location.protocol == 'file:') { resolve(); } else if (!_alreadyLoaded[href]) { var overlay = document.createElement('DIV') overlay.innerHTML = '
'+message+'
'; document.body.appendChild(overlay) ajaxGet(href) .then(function() { _alreadyLoaded[href] = true overlay.parentNode.removeChild(overlay) resolve() }).catch(function() { overlay.parentNode.removeChild(overlay) reject() }) } else { resolve() } }) } function RTLLayout(rtl) { if(rtl) { $('html').addClass('rtl').attr('dir', 'rtl'); $('link[rel=stylesheet][href*="/bootstrap.css"],link[rel=stylesheet][href*="/bootstrap.min.css"],link[rel=stylesheet][href*="/ace.css"],link[rel=stylesheet][href*="/ace.min.css"],link[rel=stylesheet][href*="/ace-themes.css"],link[rel=stylesheet][href*="/ace-themes.min.css"]') .each(function() { var href = $(this).attr('data-rtl') || $(this).attr('href').replace(/\/([^\/]+)$/, '/rtl/$1'); var link = this; try { loadCSS(href, 'Loading RTL stylesheets ... please wait ...').then(function() { $(link).attr('href', href); }) } catch(e) { //for IE $(link).attr('href', href); } }); //mirror popovers $(document).on('shown.bs.popover.rtl', function(e, e2) { $('.bs-popover-right, .bs-popover-left').each(function() { var placement = this.className.indexOf('-right') >= 0 ? 'right' : 'left'; if(placement == 'right') { this.setAttribute('x-placement', 'left'); this.className = this.className.replace('-right', '-left'); } else { this.setAttribute('x-placement', 'right'); this.className = this.className.replace('-left', '-right'); } }); }); } else { $('html').removeClass('rtl').attr('dir', 'ltr'); $('link[rel=stylesheet][href*="/bootstrap.css"], link[rel=stylesheet][href*="/bootstrap.min.css"]').attr('href', bootstrapStylesheet); $('link[rel=stylesheet][href*="/ace.css"],link[rel=stylesheet][href*="/ace.min.css"],link[rel=stylesheet][href*="/ace-themes.css"],link[rel=stylesheet][href*="/ace-themes.min.css"]').each(function() { $(this).attr('href', $(this).attr('href').replace(/\/rtl\/([^\/]+)$/, '/$1')); }); $(document).off('shown.bs.popover.rtl'); } //mirror Icons using js or you can also use CSS to flip icons by applying ``transform: scaleX(-1)`` //which I don't use because some icons are also animated using transform and it will conflict with that $('.fa[class*="-right"],.fa[class*="-left"]').each(function() { this.className = this.className.replace('-right', '-temp111'); this.className = this.className.replace('-left', '-right'); this.className = this.className.replace('-temp111', '-left'); }); $('[data-placement="right"],[data-placement="left]').each(function() { var placement = this.getAttribute('data-placement'); this.setAttribute('data-placement' , placement == 'right' ? 'left' : 'right'); }); } function loadThemesFile() { var href = ''; $('link[rel=stylesheet][href*="/ace.css"],link[rel=stylesheet][href*="/ace.min.css"]').each(function() { href = $(this).attr('href').replace('ace.', 'ace-themes.'); }); if ($('link[rel=stylesheet][href*="'+href+'"]').length > 0) return;// return if already loaded var addStylesheet = function(href) { var linkEl = document.createElement('link'); linkEl.setAttribute('rel', 'stylesheet'); linkEl.setAttribute('type', 'text/css'); linkEl.setAttribute('href', href); document.head.appendChild(linkEl); } try { loadCSS(href, 'Loading themes stylesheet ... please wait ...').then(function() { addStylesheet(href); }) } catch(e) { //for IE addStylesheet(href); } } //ChangeFont var loadedFonts = {}; function ChangeFont(font) { if( !font || font.length == 0 ) return; $('body,html').removeClass(function(index, className) { var matchedClasses = className.match(/(^|\s)(font-)\S*/g); return (matchedClasses || []).join('') }); if(font == 'open-sans') return;//this is default in Ace, so no need to load it! var fonts = { "lato": { name: "Lato", url: "https://fonts.googleapis.com/css?family=Lato:300,400,700,900&display=swap", rules: "body.font-lato { font-family: 'Lato'; letter-spacing: 0.5px; }", }, "manrope": { name: "Manrope", url: "https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;600;700&display=swap", rules: "body.font-manrope { font-family: 'Manrope'; }", }, "montserrat": { name: "Montserrat", url: "https://fonts.googleapis.com/css?family=Montserrat:300,400,500,600,700&display=swap", rules: "body.font-montserrat { font-family: 'Montserrat'; }", }, "noto-sans": { name: "Noto Sans", url: "https://fonts.googleapis.com/css?family=Noto+Sans:400,700&display=swap", rules: "body.font-noto-sans { font-family: 'Noto Sans'; }", }, "poppins": { name: "Poppins", url: "https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700&display=swap", rules: "body.font-poppins { font-family: 'Poppins'; }", }, "raleway": { name: "Raleway", url: "https://fonts.googleapis.com/css?family=Raleway:300,400,500,600,700&display=swap", rules: "body.font-raleway { font-family: 'Raleway'; font-weight: 500; } .font-raleway .text-300, .font-raleway .font-light {font-weight: 400 !important;} .font-raleway .page-title {font-weight: 400 !important;}", }, "roboto": { name: "Roboto", url: "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap", rules: "body.font-roboto { font-family: 'Roboto'; letter-spacing: 0.5px; } body.font-roboto .text-600 , body.font-roboto .font-bolder, body.font-roboto .btn-bold, body.font-roboto .badge {font-weight: 500 !important;} body.font-roboto .sidebar .nav > .nav-item.active:not(.open) > .nav-link {font-weight: 500;}", }, "markazi": { name: "Markazi Text", url: "https://fonts.googleapis.com/css?family=Markazi+Text:400,500,600,700&display=swap&subset=arabic", rules: "body.font-markazi { font-family: 'Markazi Text'; } html.font-markazi {font-size: 18px;}", }, }; if (!fonts[font]) return; if(!loadedFonts[font]) { var fontInfo = fonts[font]; var linkEl = document.createElement('link'); linkEl.setAttribute('rel', 'stylesheet'); linkEl.setAttribute('type', 'text/css'); linkEl.setAttribute('href', fontInfo.url); document.head.appendChild(linkEl); var styleEl = document.createElement('style'); styleEl.innerHTML = fontInfo.rules; document.head.appendChild(styleEl); loadedFonts[font] = true; } $('body,html').addClass('font-'+font); } })(window.jQuery); // https://github.com/jedtrow/Chart.js-Rounded-Bar-Charts /* * Rounded Rectangle Extension for Bar Charts and Horizontal Bar Charts * Tested with Charts.js 2.7.0 */ if (window.Chart) window.Chart.elements.Rectangle.prototype.draw = function() { var ctx = this._chart.ctx; var vm = this._view; var left, right, top, bottom, signX, signY, borderSkipped, radius; var borderWidth = vm.borderWidth; // If radius is less than 0 or is large enough to cause drawing errors a max // radius is imposed. If cornerRadius is not defined set it to 0. var cornerRadius = this._chart.config.options.cornerRadius; if(cornerRadius < 0){ cornerRadius = 0; } if(typeof cornerRadius == 'undefined'){ cornerRadius = 0; } if (!vm.horizontal) { // bar left = vm.x - vm.width / 2; right = vm.x + vm.width / 2; top = vm.y; bottom = vm.base; signX = 1; signY = bottom > top? 1: -1; borderSkipped = vm.borderSkipped || 'bottom'; } else { // horizontal bar left = vm.base; right = vm.x; top = vm.y - vm.height / 2; bottom = vm.y + vm.height / 2; signX = right > left? 1: -1; signY = 1; borderSkipped = vm.borderSkipped || 'left'; } // Canvas doesn't allow us to stroke inside the width so we can // adjust the sizes to fit if we're setting a stroke on the line if (borderWidth) { // borderWidth shold be less than bar width and bar height. var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); borderWidth = borderWidth > barSize? barSize: borderWidth; var halfStroke = borderWidth / 2; // Adjust borderWidth when bar top position is near vm.base(zero). var borderLeft = left + (borderSkipped !== 'left'? halfStroke * signX: 0); var borderRight = right + (borderSkipped !== 'right'? -halfStroke * signX: 0); var borderTop = top + (borderSkipped !== 'top'? halfStroke * signY: 0); var borderBottom = bottom + (borderSkipped !== 'bottom'? -halfStroke * signY: 0); // not become a vertical line? if (borderLeft !== borderRight) { top = borderTop; bottom = borderBottom; } // not become a horizontal line? if (borderTop !== borderBottom) { left = borderLeft; right = borderRight; } } ctx.beginPath(); ctx.fillStyle = vm.backgroundColor; ctx.strokeStyle = vm.borderColor; ctx.lineWidth = borderWidth; // Corner points, from bottom-left to bottom-right clockwise // | 1 2 | // | 0 3 | var corners = [ [left, bottom], [left, top], [right, top], [right, bottom] ]; // Find first (starting) corner with fallback to 'bottom' var borders = ['bottom', 'left', 'top', 'right']; var startCorner = borders.indexOf(borderSkipped, 0); if (startCorner === -1) { startCorner = 0; } function cornerAt(index) { return corners[(startCorner + index) % 4]; } // Draw rectangle from 'startCorner' var corner = cornerAt(0); ctx.moveTo(corner[0], corner[1]); for (var i = 1; i < 4; i++) { corner = cornerAt(i); nextCornerId = i+1; if(nextCornerId == 4){ nextCornerId = 0 } nextCorner = cornerAt(nextCornerId); width = corners[2][0] - corners[1][0]; height = corners[0][1] - corners[1][1]; x = corners[1][0]; y = corners[1][1]; var radius = cornerRadius; // Fix radius being too large if(radius > Math.abs(height)/2){ radius = Math.floor(Math.abs(height)/2); } if(radius > Math.abs(width)/2){ radius = Math.floor(Math.abs(width)/2); } if(height < 0){ // Negative values in a standard bar chart x_tl = x; x_tr = x+width; y_tl = y+height; y_tr = y+height; x_bl = x; x_br = x+width; y_bl = y; y_br = y; // Draw ctx.moveTo(x_bl+radius, y_bl); ctx.lineTo(x_br-radius, y_br); ctx.quadraticCurveTo(x_br, y_br, x_br, y_br-radius); ctx.lineTo(x_tr, y_tr+radius); ctx.quadraticCurveTo(x_tr, y_tr, x_tr-radius, y_tr); ctx.lineTo(x_tl+radius, y_tl); ctx.quadraticCurveTo(x_tl, y_tl, x_tl, y_tl+radius); ctx.lineTo(x_bl, y_bl-radius); ctx.quadraticCurveTo(x_bl, y_bl, x_bl+radius, y_bl); }else if(width < 0){ // Negative values in a horizontal bar chart x_tl = x+width; x_tr = x; y_tl= y; y_tr = y; x_bl = x+width; x_br = x; y_bl = y+height; y_br = y+height; // Draw ctx.moveTo(x_bl+radius, y_bl); ctx.lineTo(x_br-radius, y_br); ctx.quadraticCurveTo(x_br, y_br, x_br, y_br-radius); ctx.lineTo(x_tr, y_tr+radius); ctx.quadraticCurveTo(x_tr, y_tr, x_tr-radius, y_tr); ctx.lineTo(x_tl+radius, y_tl); ctx.quadraticCurveTo(x_tl, y_tl, x_tl, y_tl+radius); ctx.lineTo(x_bl, y_bl-radius); ctx.quadraticCurveTo(x_bl, y_bl, x_bl+radius, y_bl); }else{ //Positive Value ctx.moveTo(x + radius, y); ctx.lineTo(x + width - radius, y); ctx.quadraticCurveTo(x + width, y, x + width, y + radius); ctx.lineTo(x + width, y + height - radius); ctx.quadraticCurveTo(x + width, y + height, x + width - 0, y + height); ctx.lineTo(x + radius, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - 0); ctx.lineTo(x, y + radius); ctx.quadraticCurveTo(x, y, x + radius, y); } } ctx.fill(); if (borderWidth) { ctx.stroke(); } };