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' ;
44import { NgsgClassService } from '../helpers/class/ngsg-class.service' ;
55import { NgsgStoreService } from '../store/ngsg-store.service' ;
66import { 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