diff --git a/src/App.vue b/src/App.vue
index a5f74f1d6..79e9da706 100755
--- a/src/App.vue
+++ b/src/App.vue
@@ -10,9 +10,9 @@
-
+
-
+
@@ -35,7 +35,8 @@ export default {
data() {
return {
sidebarActive: false,
- newsActive: false
+ newsActive: false,
+ theme: 'saga-blue'
}
},
watch: {
@@ -62,6 +63,41 @@ export default {
},
hideNews() {
this.newsActive = false;
+ },
+ changeTheme(event) {
+ let themeElement = document.getElementById('theme-link');
+ themeElement.setAttribute('href', themeElement.getAttribute('href').replace(this.theme, event.theme));
+ this.theme = event.theme;
+
+ if (event.dark) {
+ this.addClass(document.body, event.dark);
+ }
+ else {
+ this.removeClass(document.body, 'dark-theme');
+ this.removeClass(document.body, 'dark-theme-alt');
+ }
+
+ this.activeMenuIndex = null;
+ },
+ addClass(element, className) {
+ if (!this.hasClass(element, className)) {
+ if (element.classList)
+ element.classList.add(className);
+ else
+ element.className += ' ' + className;
+ }
+ },
+ removeClass(element, className) {
+ if (element.classList)
+ element.classList.remove(className);
+ else
+ element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
+ },
+ hasClass(element, className) {
+ if (element.classList)
+ return element.classList.contains(className);
+ else
+ return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
}
},
components: {
diff --git a/src/AppConfigurator.vue b/src/AppConfigurator.vue
index f50b47a17..4989c2054 100755
--- a/src/AppConfigurator.vue
+++ b/src/AppConfigurator.vue
@@ -12,7 +12,64 @@
FREE THEMES
Built-in component themes created by the PrimeVue Theme Designer.
+
+
+
+
Saga-Blue
+
+
+
+
Saga-Green
+
+
+
+
Saga-Purple
+
+
+
+
Saga-Orange
+
+
+
+
Vela-Blue
+
+
+
+
Vela-Green
+
+
+
+
Vela-Purple
+
+
+
+
Vela-Orange
+
Luna-Blue
Luna-Green
Luna-Amber
Luna-Pink
@@ -130,10 +187,12 @@
import DomHandler from './components/utils/DomHandler';
export default {
+ props: {
+ theme: String
+ },
data() {
return {
- active: false,
- theme: 'nova-light'
+ active: false
}
},
outsideClickListener: null,
@@ -166,20 +225,7 @@ export default {
event.preventDefault();
},
changeTheme(event, theme, dark) {
- let themeElement = document.getElementById('theme-link');
- themeElement.setAttribute('href', themeElement.getAttribute('href').replace(this.theme, theme));
- this.theme = theme;
- const hasBodyDarkTheme = DomHandler.hasClass(document.body, 'dark-theme');
-
- if (dark) {
- if (!hasBodyDarkTheme) {
- this.addClass(document.body, 'dark-theme');
- }
- }
- else if(hasBodyDarkTheme) {
- this.removeClass(document.body, 'dark-theme');
- }
-
+ this.$emit('change-theme', {theme: theme, dark: dark});
event.preventDefault();
},
bindOutsideClickListener() {
@@ -200,7 +246,7 @@ export default {
},
isOutsideClicked(event) {
return !(this.$el.isSameNode(event.target) || this.$el.contains(event.target));
- },
+ }
}
}
diff --git a/src/AppFooter.vue b/src/AppFooter.vue
index 4f7553318..ee76a2409 100755
--- a/src/AppFooter.vue
+++ b/src/AppFooter.vue
@@ -1,9 +1,5 @@
-