mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-30 07:46:28 +00:00
66 lines
1.3 KiB
JavaScript
66 lines
1.3 KiB
JavaScript
/**
|
|
* Dark theme component
|
|
*
|
|
* @author Pierre HUBERT
|
|
*/
|
|
|
|
ComunicWeb.components.darkTheme = {
|
|
|
|
/**
|
|
* Specify whether dark theme has to be enabled or not
|
|
*/
|
|
_local_storage_name: "dark_theme_mode",
|
|
|
|
/**
|
|
* CSS element that contains dark theme CSS rules
|
|
*/
|
|
_cssElem: null,
|
|
|
|
/**
|
|
* Check out whether dark theme is enabled or not
|
|
*
|
|
* @return {boolean} TRUE if enabled / FALSE else
|
|
*/
|
|
isEnabled: function(){
|
|
return localStorage.getItem(this._local_storage_name) == "true";
|
|
},
|
|
|
|
/**
|
|
* Specify whether dark theme should be enabled or not
|
|
*
|
|
* @param {boolean} enable TRUE to enable / FALSE else
|
|
*/
|
|
setEnabled: function(enable){
|
|
localStorage.setItem(this._local_storage_name, enable ? "true" : "false");
|
|
|
|
this.refresh();
|
|
},
|
|
|
|
/**
|
|
* Refresh dark theme state
|
|
*/
|
|
refresh: function(){
|
|
|
|
//Check if the theme has to be disabled
|
|
if(!this.isEnabled()){
|
|
if(this._cssElem != null)
|
|
this._cssElem.disabled = true;
|
|
return;
|
|
}
|
|
|
|
//Check if CSS element is already loaded
|
|
else if(this._cssElem != null)
|
|
this._cssElem.disabled = false;
|
|
|
|
//We need to load dark theme
|
|
else {
|
|
|
|
this._cssElem = createElem2({
|
|
type: "link",
|
|
href: ComunicWeb.__config.assetsURL + "css/dark_theme.css"
|
|
});
|
|
this._cssElem.setAttribute("rel", "stylesheet");
|
|
document.head.appendChild(this._cssElem);
|
|
}
|
|
}
|
|
} |