From f2e4db183cb665ada7640a5d492e9b3ae4be90c6 Mon Sep 17 00:00:00 2001 From: mic Date: Wed, 3 Apr 2024 21:24:14 +0200 Subject: [PATCH] prefs: managing different input types. related to #14 --- options/mzta-options.js | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/options/mzta-options.js b/options/mzta-options.js index 611bc850..cd1cbe74 100644 --- a/options/mzta-options.js +++ b/options/mzta-options.js @@ -2,7 +2,23 @@ function saveOptions(e) { e.preventDefault(); let options = {}; document.querySelectorAll(".option-input").forEach(element => { - options[element.id] = element.checked; + switch (element.type) { + case 'checkbox': + options[element.id] = element.checked; + break; + case 'number': + options[element.id] = element.valueAsNumber; + break; + case 'text': + options[element.id] = element.value.trim(); + break; + default: + if (element.tagName === 'SELECT') { + options[element.id] = element.value; + }else{ + console.log('Unhandled input type:', element.type); + } + } }); browser.storage.sync.set(options); } @@ -10,7 +26,26 @@ function saveOptions(e) { function restoreOptions() { function setCurrentChoice(result) { document.querySelectorAll(".option-input").forEach(element => { - element.checked = result[element.id] || false; + switch (element.type) { + case 'checkbox': + element.checked = result[element.id] || false; + break; + case 'number': + element.value = result[element.id] || 0; + break; + case 'text': + element.value = result[element.id] || ''; + break; + default: + if (element.tagName === 'SELECT') { + element.value = result[element.id] || ''; + if (element.value === '') { + element.selectedIndex = -1; + } + }else{ + console.log('Unhandled input type:', element.type); + } + } }); }