add automatic enabling and disabling of UI elements based on existence of elements
This commit is contained in:
parent
94b01ea25b
commit
c4e4f5a29b
2 changed files with 40 additions and 2 deletions
|
@ -44,7 +44,8 @@
|
||||||
<legend data-text="filters"></legend>
|
<legend data-text="filters"></legend>
|
||||||
<label data-text="settings_filters_description"></label>
|
<label data-text="settings_filters_description"></label>
|
||||||
<div class="field-row action-buttons">
|
<div class="field-row action-buttons">
|
||||||
<button data-action="filters,update" data-text="settings_filters_update"></button>
|
<button data-action="filters,update" data-text="settings_filters_update"
|
||||||
|
data-enable="filters"></button>
|
||||||
<button href="settings/filters" tab-height="607.5" tab-width="1080"
|
<button href="settings/filters" tab-height="607.5" tab-width="1080"
|
||||||
data-text="settings_filters_open"></button>
|
data-text="settings_filters_open"></button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,7 +67,8 @@
|
||||||
<legend data-text="storage"></legend>
|
<legend data-text="storage"></legend>
|
||||||
<label data-text="settings_storage_description"></label>
|
<label data-text="settings_storage_description"></label>
|
||||||
<div class="field-row action-buttons">
|
<div class="field-row action-buttons">
|
||||||
<button data-text="settings_storage_clear" data-action="storage,clear"></button>
|
<button data-text="settings_storage_clear" data-enable="sites"
|
||||||
|
data-action="storage,clear"></button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -307,9 +307,45 @@ class windowman {
|
||||||
links();
|
links();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Update the interface based on the storage data changes.
|
||||||
|
*/
|
||||||
|
async function updates() {
|
||||||
|
// Import the module.
|
||||||
|
const secretariat = await import(
|
||||||
|
chrome.runtime.getURL("scripts/secretariat.js")
|
||||||
|
);
|
||||||
|
|
||||||
|
// Get the storage data.
|
||||||
|
let storage_data = await secretariat.read();
|
||||||
|
|
||||||
|
async function update_interface() {
|
||||||
|
let input_elements = document.querySelectorAll("[data-enable]");
|
||||||
|
|
||||||
|
if (input_elements) {
|
||||||
|
input_elements.forEach((input_element) => {
|
||||||
|
(async () => {
|
||||||
|
input_element.disabled =
|
||||||
|
(await secretariat.read(
|
||||||
|
input_element.getAttribute("data-enable"),
|
||||||
|
)) == null;
|
||||||
|
})();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the input elements.
|
||||||
|
secretariat.observe((what) => {
|
||||||
|
update_interface();
|
||||||
|
});
|
||||||
|
|
||||||
|
update_interface();
|
||||||
|
}
|
||||||
|
|
||||||
storage();
|
storage();
|
||||||
functionality();
|
functionality();
|
||||||
actions();
|
actions();
|
||||||
|
updates();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue