collapsible widget remember their collapsed state

This commit is contained in:
zadam 2020-03-01 20:49:11 +01:00
parent 4e0e2e8926
commit 26599f057c
3 changed files with 20 additions and 8 deletions

View file

@ -1,4 +1,5 @@
import TabAwareWidget from "./tab_aware_widget.js";
import options from "../services/options.js";
const WIDGET_TPL = `
<div class="card widget">
@ -33,7 +34,15 @@ export default class CollapsibleWidget extends TabAwareWidget {
this.$bodyWrapper = this.$widget.find('.body-wrapper');
this.$bodyWrapper.attr('id', this.componentId); // for toggle to work we need id
this.$bodyWrapper.collapse("show");
const widgetName = this.constructor.name;
if (!options.is(widgetName + 'Collapsed')) {
this.$bodyWrapper.collapse("show");
}
this.$bodyWrapper.on('hidden.bs.collapse', () => options.save(widgetName + 'Collapsed', 'true'));
this.$bodyWrapper.on('shown.bs.collapse', () => options.save(widgetName + 'Collapsed', 'false'));
this.$body = this.$bodyWrapper.find('.card-body');

View file

@ -107,7 +107,9 @@ async function getUserThemes() {
}
function isAllowed(name) {
return ALLOWED_OPTIONS.has(name) || name.startsWith("keyboardShortcuts");
return ALLOWED_OPTIONS.has(name)
|| name.startsWith("keyboardShortcuts")
|| name.endsWith("Collapsed");
}
module.exports = {

View file

@ -41,13 +41,14 @@ async function getOptionBool(name) {
async function setOption(name, value) {
const option = await require('./repository').getOption(name);
if (!option) {
throw new Error(`Option ${name} doesn't exist`);
if (option) {
option.value = value;
await option.save();
}
else {
await createOption(name, value, false);
}
option.value = value;
await option.save();
}
async function createOption(name, value, isSynced) {