1
0
Fork 0
mirror of https://github.com/kkapsner/CanvasBlocker synced 2025-07-04 04:26:35 +02:00

Save state of the arrow menu in options page

Fixes #251
This commit is contained in:
kkapsner 2018-09-12 23:43:48 +02:00
parent 040acb311f
commit f73a4ee619
5 changed files with 77 additions and 5 deletions

View file

@ -23,6 +23,11 @@
hideContainer: true,
defaultValue: {}
},
{
name: "expandStatus",
expandContainer: true,
defaultValue: {}
},
{
name: "displayHiddenSettings",
defaultValue: false

View file

@ -40,6 +40,7 @@
const settings = {};
let urlContainer;
let hideContainer;
let expandContainer;
function isDefinitionInvalid(settingDefinition, newValue){
if (newValue === undefined && settingDefinition.optional){
@ -351,6 +352,40 @@
});
settingDefinition.hideAble = false;
}
if (settingDefinition.expandContainer){
expandContainer = settingDefinition;
let changeListeners = {};
settingDefinition.setExpandByName = function(name, value){
logging.verbose("set expand of", name, "to", value);
const expandStore = settingDefinition.get();
expandStore[name] = value;
settingDefinition.set(expandStore);
(changeListeners[name] || []).forEach(function(listener){
listener(value);
});
};
settingDefinition.getExpandByName = function(name){
const expandStore = settingDefinition.get();
return expandStore[name] || false;
};
settingDefinition.onExpandChange = function(name, listener){
if (!changeListeners[name]){
changeListeners[name] = [];
}
changeListeners[name].push(listener);
};
settingDefinition.on(function(event){
const value = event.newValue;
Object.keys(value).forEach(function(name){
if (value[name]){
(changeListeners[name] || []).forEach(function(listener){
listener(true);
});
}
});
});
}
});
scope.getDefinition = function(name){
@ -366,7 +401,8 @@
scope.getContainers = function(){
return {
url: Object.create(urlContainer),
hide: Object.create(hideContainer)
hide: Object.create(hideContainer),
expand: Object.create(expandContainer)
};
};