select range with shift
This commit is contained in:
@@ -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;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user