Skip to content

Commit 4aa76f0

Browse files
committed
fix(selection): reset selection if we click on another item
1 parent 57485d5 commit 4aa76f0

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

projects/ng-sortgrid/src/lib/mutliselect/ngsg-selection.service.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { Injectable } from '@angular/core';
2-
import { fromEvent, merge, NEVER, Observable, Subject } from 'rxjs';
3-
import { filter, mapTo, switchMap } from 'rxjs/operators';
1+
import {Injectable} from '@angular/core';
2+
import {fromEvent, merge, NEVER, Observable, Subject} from 'rxjs';
3+
import {filter, mapTo, switchMap, withLatestFrom} from 'rxjs/operators';
44
import {NgsgClassService} from '../helpers/class/ngsg-class.service';
55
import {NgsgStoreService} from '../store/ngsg-store.service';
66
import {NgsgElementsHelper} from '../helpers/element/ngsg-elements.helper';
@@ -27,9 +27,18 @@ export class NgsgSelectionService {
2727

2828
constructor(private classService: NgsgClassService, private ngsgStore: NgsgStoreService) {
2929
const selectionKeyPressed$ = this.selectionKeyPressed();
30-
selectionKeyPressed$
31-
.pipe(switchMap(pressed => (pressed ? this.selectionChange$ : NEVER)))
32-
.subscribe((selectionChange: SelectionChange) => this.handleSelectionChange(selectionChange));
30+
this.selectionChange$
31+
.pipe(withLatestFrom(selectionKeyPressed$))
32+
.subscribe(([selectionChange, selectionKeyPressed]) => {
33+
selectionKeyPressed
34+
? this.handleSelectionChange(selectionChange)
35+
: this.resetSelectedItems(selectionChange.key);
36+
});
37+
}
38+
39+
private resetSelectedItems(group: string): void {
40+
this.ngsgStore.getSelectedItems(group).forEach(item => this.classService.removeSelectedClass(item.node));
41+
this.ngsgStore.resetSelectedItems(group);
3342
}
3443

3544
private handleSelectionChange(selectionChange: SelectionChange): void {

0 commit comments

Comments
 (0)