@@ -5,21 +5,21 @@ import {
55 EventEmitter ,
66 HostListener ,
77 Input ,
8- NgZone , OnChanges , OnDestroy ,
8+ OnChanges ,
9+ OnDestroy ,
910 OnInit ,
10- Output , SimpleChanges
11+ Output ,
12+ SimpleChanges
1113} from '@angular/core' ;
1214
1315import { NgsgReflectService } from './ngsg-reflect.service' ;
1416import { NgsgStoreService } from './ngsg-store.service' ;
1517import { NgsgSortService } from './ngsg-sort.service' ;
1618import { NgsgSelectionService } from './ngsg-selection.service' ;
17- import { NgsgClassService } from './ngsg-class.service' ;
18- import { NgsgElementsHelper } from './ngsg-elements.helper' ;
1919import { NgsgEventsService } from './ngsg-events.service' ;
2020import { Subject } from 'rxjs' ;
2121import { takeUntil } from 'rxjs/operators' ;
22- import { group } from '@angular/animations ' ;
22+ import { ViewPortService } from './helpers/view-port.service ' ;
2323
2424const selector = '[ngSortgridItem]' ;
2525
@@ -31,6 +31,7 @@ export class NgsgItemDirective implements OnInit, OnChanges, AfterViewInit, OnDe
3131 @Output ( ) sorted = new EventEmitter < any > ( ) ;
3232
3333 private selected = false ;
34+ private SCROLLSPEED = 100 ;
3435 private destroy$ = new Subject ( ) ;
3536
3637 constructor (
@@ -39,7 +40,8 @@ export class NgsgItemDirective implements OnInit, OnChanges, AfterViewInit, OnDe
3940 private selectionService : NgsgSelectionService ,
4041 private reflectService : NgsgReflectService ,
4142 private ngsgStore : NgsgStoreService ,
42- private ngsgEventService : NgsgEventsService
43+ private ngsgEventService : NgsgEventsService ,
44+ private viewPortService : ViewPortService
4345 ) {
4446 }
4547
@@ -88,6 +90,15 @@ export class NgsgItemDirective implements OnInit, OnChanges, AfterViewInit, OnDe
8890
8991 @HostListener ( 'dragover' , [ '$event' ] )
9092 dragOver ( event ) : boolean {
93+
94+ if ( this . viewPortService . isOutOfViewport ( event . target ) . top ) {
95+ window . scrollBy ( { top : - this . SCROLLSPEED , behavior : 'smooth' } ) ;
96+ }
97+
98+ if ( this . viewPortService . isOutOfViewport ( event . target ) . bottom ) {
99+ window . scrollBy ( { top : this . SCROLLSPEED , behavior : 'smooth' } ) ;
100+ }
101+
91102 if ( event . preventDefault ) {
92103 // Necessary. Allows us to drop.
93104 event . preventDefault ( ) ;
0 commit comments