15 demo of global dialog with reactive state

This commit is contained in:
survellow
2023-11-06 16:16:05 +01:00
parent fafdd96d89
commit 3819b03065
11 changed files with 130 additions and 31 deletions

View File

@ -3,17 +3,30 @@ import { defineStore } from "pinia";
const moduleStore = defineStore("moduleStore", {
state: () => ({
modules: [] as Module[],
modules: new Map<string, Module>(),
}),
actions: {
addModule(module: Module) {
this.modules.push(module);
this.modules.set(module.uuid, module);
},
removeModule(module: Module) {
this.modules.splice(this.modules.indexOf(module), 1);
this.modules.delete(module.uuid);
},
hasModule(module: Module): boolean {
return this.modules.has(module.uuid) &&
(this.modules.get(module.uuid)?.isEqual(module) ?? false);
},
removeAllModules() {
this.modules = [];
this.modules.clear();
},
overwriteModules(modules: Module[]) {
this.modules.clear();
modules.forEach((module) => {
this.modules.set(module.uuid, module);
});
},
getAllModules(): Module[] {
return Array.from(this.modules.values());
},
},
});