]> git.wh0rd.org - chrome-ext/web-power-switch.git/blobdiff - options.js
fix dark theme
[chrome-ext/web-power-switch.git] / options.js
index b017cd8087c240d7aaf1d1f4e7f0d21f66fca40e..4df24aab976c29ef1d0c0dbbc8510cada2ea3528 100644 (file)
@@ -1,4 +1,4 @@
-// Written by Mike Frysinger <vapier@gmail.com>.  Released into the public domain.  Suck it.
+// Written by Mike Frysinger <vapier@gmail.com>.  Released into the public domain.
 
 function update_settings() {
        var url = document.getElementById('url').value + '/*';
@@ -37,18 +37,60 @@ function update_settings() {
        });
 
        msg.timeout = setTimeout(function() {
-               msg.innerText = '';
+               // Can't leave this blank or Chrome will resize the options page.
+               msg.innerHTML = '&nbsp;';
        }, 5000);
 }
 
+function keydown(e) {
+       if (e.key == 'Enter') {
+               update_settings();
+       }
+}
+
+function toggle_visible_pass() {
+       const ele = document.getElementById('pass');
+       ele.type = (ele.type == 'password') ? 'text' : 'password';
+       // Disable form submission.
+       return false;
+}
+
+function theme_select(theme, init) {
+       const theme_system = $('#theme-system');
+       const theme_light = $('#theme-light');
+       const theme_dark = $('#theme-dark');
+
+       theme_system.className = theme == 'system' ? 'selected' : '';
+       theme_light.className = theme == 'light' ? 'selected' : '';
+       theme_dark.className = theme == 'dark' ? 'selected' : '';
+
+       if (init) {
+               theme_system.onclick = theme_click;
+               theme_light.onclick = theme_click;
+               theme_dark.onclick = theme_click;
+       }
+}
+
+function theme_click() {
+       const theme = this.textContent.toLowerCase();
+       theme_select(theme);
+       storage.set({theme});
+}
+
 window.onload = function() {
-       storage.get(settings_keys, function(settings) {
+       storage.get(settings_keys, function(settings_storage) {
+               const settings = Object.assign({}, settings_defaults, settings_storage);
+
+               theme_select(settings['theme'], true);
+
                var field = document.getElementById('save');
                field.onclick = update_settings;
 
                settings_keys.forEach(function(key) {
                        var field = document.getElementById(key);
-                       field.value = settings[key] || settings_defaults[key];
+                       field.value = settings[key];
+                       field.onkeydown = keydown;
                });
        });
+       document.getElementById('show-pass').onclick = toggle_visible_pass;
 };