From 29ec4b0120fee958c13f5ce28820e3e56c312282 Mon Sep 17 00:00:00 2001 From: Marcos Moura Date: Tue, 13 Dec 2016 00:41:30 -0200 Subject: [PATCH] validate theme name and apply default theme --- src/core/components/mdTheme/index.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/core/components/mdTheme/index.js b/src/core/components/mdTheme/index.js index b8c4bd3..1c4c68d 100644 --- a/src/core/components/mdTheme/index.js +++ b/src/core/components/mdTheme/index.js @@ -25,8 +25,9 @@ const DEFAULT_THEME_COLORS = { const createNewStyleElement = (style, name) => { let head = document.head; let styleId = 'md-theme-' + name; + let styleElement = head.querySelector('#' + styleId); - if (!head.querySelector('#' + styleId)) { + if (!styleElement) { let newTag = document.createElement('style'); style = style.replace(/THEME_NAME/g, styleId); @@ -36,6 +37,8 @@ const createNewStyleElement = (style, name) => { newTag.textContent = style; head.appendChild(newTag); + } else { + styleElement.textContent = style; } }; @@ -108,11 +111,6 @@ const registerTheme = (theme, name, themeStyles) => { const registerAllThemes = (themes, themeStyles) => { let themeNames = themes ? Object.keys(themes) : []; - if (themeNames.indexOf('default') === -1) { - registerTheme(DEFAULT_THEME_COLORS, 'default', themeStyles); - registeredThemes.push('default'); - } - themeNames.forEach((name) => { registerTheme(themes[name], name, themeStyles); registeredThemes.push(name); @@ -137,10 +135,23 @@ export default function install(Vue) { registerAllThemes(theme, this.styles); }, - setCurrentTheme(themeName) { + applyCurrentTheme(themeName) { document.body.classList.remove('md-theme-' + this.currentTheme); document.body.classList.add('md-theme-' + themeName); this.currentTheme = themeName; + }, + setCurrentTheme(themeName) { + if (registeredThemes.indexOf(themeName) >= 0) { + this.applyCurrentTheme(themeName); + } else { + if (registeredThemes.indexOf('default') === -1) { + this.registerTheme('default', DEFAULT_THEME_COLORS); + } else { + console.warn(`The theme '${themeName}' doesn't exists. You need to register it first in order to use.`); + } + + this.applyCurrentTheme('default'); + } } } });