@@ -10,15 +10,16 @@ import {
1010 Output
1111} from '@angular/core' ;
1212
13- import { NgsgReflectService } from './ngsg-reflect.service' ;
14- import { NgsgStoreService } from './ngsg-store.service' ;
15- import { NgsgSortService } from './ngsg-sort.service' ;
16- import { NgsgSelectionService } from './ngsg-selection.service' ;
17- import { NgsgClassService } from './ngsg-class.service' ;
13+ import { NgsgReflectService } from './ngsg-reflect.service' ;
14+ import { NgsgStoreService } from './ngsg-store.service' ;
15+ import { NgsgSortService } from './ngsg-sort.service' ;
16+ import { NgsgSelectionService } from './ngsg-selection.service' ;
17+ import { NgsgClassService } from './ngsg-class.service' ;
18+ import { NgsgElementsHelper } from './ngsg-elements.helper' ;
1819
19- @ Directive ( {
20- selector : '[ngSortgridItem]'
21- } )
20+ const selector = '[ngSortgridItem]' ;
21+
22+ @ Directive ( { selector } )
2223export class NgsgItemDirective implements OnInit , AfterViewInit {
2324 private DEFAULT_GROUP = 'defaultGroup' ;
2425
@@ -37,7 +38,8 @@ export class NgsgItemDirective implements OnInit, AfterViewInit {
3738 private reflectService : NgsgReflectService ,
3839 private classService : NgsgClassService ,
3940 private ngsgStore : NgsgStoreService
40- ) { }
41+ ) {
42+ }
4143
4244 ngOnInit ( ) : void {
4345 // TODO handle classes as input
@@ -54,13 +56,16 @@ export class NgsgItemDirective implements OnInit, AfterViewInit {
5456
5557 @HostListener ( 'dragstart' , [ '$event' ] )
5658 dragStart ( event ) : void {
59+ if ( ! this . occuredOnHost ( event ) ) {
60+ return ;
61+ }
5762 this . selectionService . selectElementIfNoSelection ( this . ngSortGridGroup , event . target ) ;
5863 this . sortService . initSort ( this . ngSortGridGroup ) ;
5964 }
6065
6166 @HostListener ( 'dragenter' , [ '$event' ] )
6267 dragEnter ( event ) : void {
63- if ( ! this . ngsgStore . hasSelectedItems ( this . ngSortGridGroup ) ) {
68+ if ( ! this . ngsgStore . hasSelectedItems ( this . ngSortGridGroup ) || ! this . occuredOnHost ( event ) ) {
6469 return ;
6570 }
6671 this . sortService . sort ( event . target ) ;
@@ -88,7 +93,12 @@ export class NgsgItemDirective implements OnInit, AfterViewInit {
8893
8994 @HostListener ( 'click' , [ '$event' ] )
9095 clicked ( event ) : void {
96+ const element = ! this . occuredOnHost ( event ) ? NgsgElementsHelper . findHost ( event . target , selector ) : event . target ;
9197 this . selected = ! this . selected ;
92- this . selectionService . updateSelectedDragItem ( this . ngSortGridGroup , event . target , this . selected ) ;
98+ this . selectionService . updateSelectedDragItem ( this . ngSortGridGroup , element , this . selected ) ;
99+ }
100+
101+ private occuredOnHost ( event ) : boolean {
102+ return event . target . matches ( selector ) ;
93103 }
94104}
0 commit comments