DarkMode.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. export default class DarkMode {
  2. constructor(Dcat) {
  3. this.options = {
  4. sidebar_dark: Dcat.config.sidebar_dark,
  5. dark_mode: Dcat.config.dark_mode,
  6. class: {
  7. dark: 'dark-mode',
  8. sidebarLight: Dcat.config.sidebar_light_style || 'sidebar-light-primary',
  9. sidebarDark: 'sidebar-dark-white',
  10. }
  11. };
  12. Dcat.darkMode = this;
  13. }
  14. toggle() {
  15. if ($('body').hasClass(this.options.class.dark)) {
  16. this.display(false)
  17. } else {
  18. this.display(true)
  19. }
  20. }
  21. display(show) {
  22. let $document = $(document),
  23. $body = $('body'),
  24. $sidebar = $('.main-menu .main-sidebar'),
  25. options = this.options,
  26. cls = options.class;
  27. if (show) {
  28. $body.addClass(cls.dark);
  29. $sidebar.removeClass(cls.sidebarLight).addClass(cls.sidebarDark);
  30. $document.trigger('dark-mode.shown');
  31. return;
  32. }
  33. $body.removeClass(cls.dark);
  34. if (! options.sidebar_dark) {
  35. $sidebar.addClass(cls.sidebarLight).removeClass(cls.sidebarDark);
  36. }
  37. $document.trigger('dark-mode.hide');
  38. }
  39. }