select range with shift

This commit is contained in:
2025-09-04 16:59:31 +02:00
parent 76aedbaf96
commit cdd4151462
2 changed files with 90 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ export const useWarrenStore = defineStore('warrens', {
} | null;
} | null,
selection: new Set() as Set<DirectoryEntry>,
selectionRangeAnchor: null as DirectoryEntry | null,
loading: false,
}),
actions: {
@@ -86,19 +87,33 @@ export const useWarrenStore = defineStore('warrens', {
addToSelection(entry: DirectoryEntry) {
this.selection.add(entry);
},
setSelection(entries: DirectoryEntry[]) {
this.selection = new Set(entries);
if (
this.selectionRangeAnchor != null &&
!this.selection.has(this.selectionRangeAnchor)
) {
this.selectionRangeAnchor = null;
}
},
addMultipleToSelection(entries: DirectoryEntry[]) {
for (const entry of entries) {
this.selection.add(entry);
}
},
setSelectedRangeAnchor(entry: DirectoryEntry) {
this.selectionRangeAnchor = entry;
},
removeFromSelection(entry: DirectoryEntry): boolean {
return this.selection.delete(entry);
},
toggleSelection(entry: DirectoryEntry) {
toggleSelection(entry: DirectoryEntry): boolean {
if (this.selection.has(entry)) {
this.removeFromSelection(entry);
return false;
} else {
this.addToSelection(entry);
return true;
}
},
isSelected(entry: DirectoryEntry): boolean {
@@ -110,6 +125,7 @@ export const useWarrenStore = defineStore('warrens', {
},
clearSelection() {
this.selection.clear();
this.selectionRangeAnchor = null;
},
},
});