Skip to content

Commit f0729bc

Browse files
authored
Merge pull request #727 from opaduchak/ENG-9225
feat(ENG-9225): implement shift-click functionality
2 parents 626857d + 780d27b commit f0729bc

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/app/shared/components/files-tree/files-tree.component.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export class FilesTreeComponent implements OnDestroy, AfterViewInit {
111111
readonly resourceMetadata = select(CurrentResourceSelectors.getCurrentResource);
112112

113113
foldersStack: FileFolderModel[] = [];
114+
lastSelectedFile: FileModel | null = null;
114115
itemsPerPage = 10;
115116
virtualScrollItemSize = 46;
116117

@@ -437,7 +438,24 @@ export class FilesTreeComponent implements OnDestroy, AfterViewInit {
437438
}
438439

439440
onNodeSelect(event: TreeNodeSelectEvent) {
440-
this.selectFile.emit(event.node as FileModel);
441+
const files = this.files();
442+
const selectedNode = event.node as FileModel;
443+
if ((event.originalEvent as PointerEvent).shiftKey && this.lastSelectedFile) {
444+
const lastIndex = files.indexOf(this.lastSelectedFile);
445+
const currentIndex = files.indexOf(selectedNode);
446+
if (lastIndex == currentIndex) {
447+
return;
448+
}
449+
450+
const start = Math.min(lastIndex, currentIndex);
451+
const end = Math.max(lastIndex, currentIndex);
452+
453+
for (const file of files.slice(start, end)) {
454+
this.selectFile.emit(file);
455+
}
456+
}
457+
this.selectFile.emit(selectedNode);
458+
this.lastSelectedFile = selectedNode;
441459
}
442460

443461
onNodeUnselect(event: TreeNodeSelectEvent) {

0 commit comments

Comments
 (0)