customizer.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. /*=========================================================================================
  2. File Name: customizer.js
  3. Description: Template customizer js.
  4. ----------------------------------------------------------------------------------------
  5. Item Name: Vusax - Vuejs, HTML & Laravel Admin Dashboard Template
  6. Author: Pixinvent
  7. Author URL: hhttp://www.themeforest.net/user/pixinvent
  8. ==========================================================================================*/
  9. (function (window, document, $) {
  10. 'use strict';
  11. // main menu active gradient colors object
  12. var themeColor = {
  13. "theme-primary": "linear-gradient(118deg, #7367f0, rgba(115, 103, 240, 0.7))",
  14. "theme-success": "linear-gradient(118deg, #28c76f, rgba(40, 199, 111, 0.7))",
  15. "theme-danger": "linear-gradient(118deg, #ea5455, rgba(234, 84, 85, 0.7))",
  16. "theme-info": "linear-gradient(118deg, #00cfe8, rgba(0, 207, 232, 0.7))",
  17. "theme-warning": "linear-gradient(118deg, #ff9f43, rgba(255, 159, 67, 0.7))",
  18. "theme-dark": "linear-gradient(118deg, #1e1e1e, rgba(30, 30, 30, 0.7))"
  19. }
  20. // main menu active box shadow object
  21. var themeBoxShadow = {
  22. "theme-primary": "0 0 10px 1px rgba(115, 103, 240, 0.7)",
  23. "theme-success": "0 0 10px 1px rgba(40, 199, 111, 0.7)",
  24. "theme-danger": "0 0 10px 1px rgba(234, 84, 85, 0.7)",
  25. "theme-info": "0 0 10px 1px rgba(0, 207, 232, 0.7)",
  26. "theme-warning": "0 0 10px 1px rgba(255, 159, 67, 0.7)",
  27. "theme-dark": "0 0 10px 1px rgba(30, 30, 30, 0.7)"
  28. }
  29. // colors for navbar header text of main menu
  30. var currentColor = {
  31. "theme-default": "#fff",
  32. "theme-primary": "#7367f0",
  33. "theme-success": "#28c76f",
  34. "theme-danger": "#ea5455",
  35. "theme-info": "#00cfe8",
  36. "theme-warning": "#ff9f43",
  37. "theme-dark": "#adb5bd"
  38. }
  39. // Brand Logo Poisitons
  40. var LogoPosition = {
  41. "theme-primary": "-65px -54px",
  42. "theme-success": "-120px -10px",
  43. "theme-danger": "-10px -10px",
  44. "theme-info": "-10px -54px",
  45. "theme-warning": "-120px -54px",
  46. "theme-dark": "-65px -10px"
  47. }
  48. var body = $("body"),
  49. appContent = $(".app-content"),
  50. mainMenu = $(".main-menu"),
  51. menuContent = $(".menu-content"),
  52. footer = $(".footer"),
  53. navbar = $(".header-navbar"),
  54. horizontalNavbar = $(".horizontal-menu-wrapper .header-navbar"),
  55. navBarShadow = $(".header-navbar-shadow"),
  56. toggleIcon = $(".toggle-icon"),
  57. collapseSidebar = $("#collapse-sidebar-switch"),
  58. customizer = $(".customizer"),
  59. brandLogo = $(".brand-logo");
  60. // Customizer toggle & close button click events [Remove customizer code from production]
  61. $('.customizer-toggle').on('click', function (e) {
  62. e.preventDefault();
  63. $(customizer).toggleClass('open');
  64. });
  65. $('.customizer-close').on('click', function () {
  66. $(customizer).removeClass('open');
  67. });
  68. // perfect scrollbar for customizer
  69. if ($('.customizer-content').length > 0) {
  70. var customizer_content = new PerfectScrollbar('.customizer-content');
  71. }
  72. /***** Theme Colors Options *****/
  73. $(document).on("click", "#customizer-theme-colors .color-box", function () {
  74. var $this = $(this);
  75. $this.siblings().removeClass('selected');
  76. $this.addClass("selected");
  77. var selectedColor = $(this).data("color"),
  78. changeColor = themeColor[selectedColor],
  79. selectedShadow = themeBoxShadow[selectedColor],
  80. selectedTextColor = currentColor[selectedColor],
  81. selectedLogo = LogoPosition[selectedColor];
  82. // main-menu
  83. if (body.data('menu') == "horizontal-menu") {
  84. if (horizontalNavbar.find("li.sidebar-group-active:not(.dropdown-submenu)").length) {
  85. horizontalNavbar.find("li.sidebar-group-active:not(.dropdown-submenu) > a").css(
  86. {
  87. "background": changeColor,
  88. "box-shadow": selectedShadow,
  89. "border-color": selectedTextColor
  90. }
  91. );
  92. horizontalNavbar.find("li.sidebar-group-active:not(.dropdown-submenu) > ul li.active > a").css(
  93. {
  94. "color": selectedTextColor
  95. }
  96. );
  97. }
  98. }
  99. else {
  100. if (mainMenu.find("li.active").length) {
  101. mainMenu.find("li.active >a").css(
  102. {
  103. "background": changeColor,
  104. "box-shadow": selectedShadow
  105. }
  106. );
  107. }
  108. else if ($(".main-menu-content").find("li.sidebar-group-active").length) {
  109. $(".main-menu-content").find("li.sidebar-group-active > a").css(
  110. {
  111. "background": changeColor,
  112. "box-shadow": selectedShadow
  113. }
  114. );
  115. }
  116. else {
  117. mainMenu.find(".nav-item.active a").css(
  118. {
  119. "background": changeColor,
  120. "box-shadow": selectedShadow
  121. }
  122. );
  123. }
  124. }
  125. // Text with logo
  126. $(".brand-text").css("color", selectedTextColor);
  127. // toggle icon
  128. toggleIcon.removeClass("primary").css("color", selectedTextColor);
  129. // Changes logo color
  130. brandLogo.css("background-position", selectedLogo);
  131. });
  132. /***** Menu Layout type *****/
  133. $(".layout-name").on("click", function () {
  134. var $this = $(this);
  135. var currentLayout = $this.data("layout");
  136. body.removeClass("dark-layout semi-dark-layout").addClass(currentLayout);
  137. if (currentLayout === "") {
  138. mainMenu.removeClass("menu-dark").addClass("menu-light");
  139. navbar.removeClass("navbar-dark").addClass("navbar-light");
  140. }
  141. else {
  142. mainMenu.removeClass("menu-light").addClass("menu-dark");
  143. }
  144. });
  145. // checks right radio if layout type matches
  146. var layout = body.data("layout");
  147. $(".layout-name[data-layout='" + layout + "']").prop('checked', true);
  148. /***** Collapse menu switch *****/
  149. collapseSidebar.on("click", function () {
  150. $(".modern-nav-toggle").trigger("click");
  151. mainMenu.trigger('mouseleave');
  152. });
  153. // checks if main menu is collapsed by default
  154. if (body.hasClass("menu-collapsed")) {
  155. collapseSidebar.prop("checked", true);
  156. }
  157. else {
  158. collapseSidebar.prop("checked", false);
  159. }
  160. /***** Navbar Color Options *****/
  161. $("#customizer-navbar-colors .color-box").on("click", function () {
  162. var $this = $(this);
  163. $this.siblings().removeClass('selected');
  164. $this.addClass("selected");
  165. var navbarColor = $this.data("navbar-color");
  166. // changes navbar colors
  167. if (navbarColor) {
  168. $(".app-content > .header-navbar")
  169. .removeClass("bg-primary bg-success bg-danger bg-info bg-warning bg-dark")
  170. .addClass(navbarColor + " navbar-dark");
  171. }
  172. else {
  173. $(".app-content > .header-navbar")
  174. .removeClass("bg-primary bg-success bg-danger bg-info bg-warning bg-dark navbar-dark");
  175. }
  176. if (body.hasClass("dark-layout")) {
  177. navbar.addClass("navbar-dark")
  178. }
  179. })
  180. /***** Navbar Type *****/
  181. if (body.hasClass('horizontal-menu')) {
  182. // $('.collapse_menu').removeClass('d-none');
  183. $('#collapse-sidebar').addClass('d-none');
  184. $('.menu_type').removeClass('d-none');
  185. $('.navbar_type').addClass('d-none');
  186. // Hides hidden option in Horizontal layout
  187. $('.navbar-type #navbar-hidden').closest('fieldset').parent('div').css('display', 'none');
  188. // On Scroll navbar color on horizontal menu
  189. $(window).scroll(function () {
  190. if (body.hasClass('navbar-static')) {
  191. var scroll = $(window).scrollTop();
  192. if (scroll > 65) {
  193. $(".horizontal-menu .header-navbar.navbar-fixed").css({ "background": "#fff", "box-shadow": "0 4px 20px 0 rgba(0,0,0,.05)" });
  194. $(".horizontal-menu .horizontal-menu-wrapper.header-navbar").css("background", "#fff");
  195. }
  196. else {
  197. $(".horizontal-menu .header-navbar.navbar-fixed").css({ "background": "#f8f8f8", "box-shadow": "none" });
  198. $(".horizontal-menu .horizontal-menu-wrapper.header-navbar").css("background", "#fff");
  199. }
  200. }
  201. })
  202. }
  203. // Hides Navbar
  204. $("#navbar-hidden").on("click", function () {
  205. navbar.addClass("d-none");
  206. navBarShadow.addClass("d-none");
  207. body.removeClass("navbar-static navbar-floating navbar-sticky").addClass("navbar-hidden");
  208. });
  209. // changes to Static navbar
  210. $("#navbar-static").on("click", function () {
  211. if (body.hasClass('horizontal-menu')) {
  212. horizontalNavbar
  213. .removeClass("d-none floating-nav fixed-top navbar-fixed");
  214. body.removeClass("navbar-hidden navbar-floating navbar-sticky").addClass("navbar-static");
  215. }
  216. else {
  217. navBarShadow.addClass("d-none");
  218. navbar
  219. .removeClass("d-none floating-nav fixed-top")
  220. .addClass("static-top");
  221. body.removeClass("navbar-hidden navbar-floating navbar-sticky").addClass("navbar-static");
  222. }
  223. });
  224. // change to floating navbar
  225. $("#navbar-floating").on("click", function () {
  226. if (body.hasClass('horizontal-menu')) {
  227. horizontalNavbar
  228. .removeClass("d-none fixed-top static-top")
  229. .addClass("floating-nav");
  230. body.removeClass("navbar-static navbar-hidden navbar-sticky").addClass("navbar-floating");
  231. }
  232. else {
  233. navBarShadow.removeClass("d-none");
  234. navbar
  235. .removeClass("d-none static-top fixed-top")
  236. .addClass("floating-nav");
  237. body.removeClass("navbar-static navbar-hidden navbar-sticky").addClass("navbar-floating");
  238. }
  239. });
  240. // changes to Static navbar
  241. $("#navbar-sticky").on("click", function () {
  242. if (body.hasClass('horizontal-menu')) {
  243. horizontalNavbar
  244. .removeClass("d-none floating-nav static-top navbar-fixed")
  245. .addClass("fixed-top");
  246. body.removeClass("navbar-static navbar-floating navbar-hidden").addClass("navbar-sticky");
  247. }
  248. else {
  249. navBarShadow.addClass("d-none");
  250. navbar
  251. .removeClass("d-none floating-nav static-top")
  252. .addClass("fixed-top");
  253. body.removeClass("navbar-static navbar-floating navbar-hidden").addClass("navbar-fixed");
  254. }
  255. });
  256. /***** Footer Type *****/
  257. // Hides footer
  258. $("#footer-hidden").on("click", function () {
  259. footer.addClass("d-none");
  260. body.removeClass("footer-static fixed-footer").addClass("footer-hidden");
  261. });
  262. // changes to Static footer
  263. $("#footer-static").on("click", function () {
  264. body.removeClass("fixed-footer");
  265. footer.removeClass("d-none").addClass("footer-static");
  266. body.removeClass("footer-hidden fixed-footer").addClass("footer-static");
  267. });
  268. // changes to Sticky footer
  269. $("#footer-sticky").on("click", function () {
  270. body.removeClass("footer-static footer-hidden").addClass("fixed-footer");
  271. footer.removeClass("d-none footer-static");
  272. });
  273. /***** Hide Scroll To Top *****/
  274. $("#hide-scroll-top-switch").on("click", function () {
  275. var scrollTopBtn = $(".scroll-top")
  276. if ($(this).prop("checked")) {
  277. scrollTopBtn.addClass("d-none");
  278. }
  279. else {
  280. scrollTopBtn.removeClass("d-none");
  281. }
  282. });
  283. })(window, document, jQuery);