1- import { Component , Directive , ElementRef , Renderer , EventEmitter , DynamicComponentLoader , Host , ViewEncapsulation , Type , ComponentRef , KeyValueDiffer , KeyValueDiffers , OnInit , OnDestroy , DoCheck } from 'angular2/core' ;
1+ import { Component , Directive , ElementRef , Renderer , EventEmitter , DynamicComponentLoader , Host , ViewEncapsulation , Type , ComponentRef , KeyValueDiffer , KeyValueDiffers , OnInit , OnDestroy , DoCheck , ViewContainerRef } from 'angular2/core' ;
22
33// Default config
44export interface NgGridConfig {
@@ -41,13 +41,13 @@ export interface NgGridConfig {
4141} )
4242export class NgGrid implements OnInit , DoCheck , OnDestroy {
4343 // Event Emitters
44- public dragStart : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
45- public drag : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
46- public dragStop : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
47- public resizeStart : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
48- public resize : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
49- public resizeStop : EventEmitter < NgGridItem > = new EventEmitter ( ) ;
50- public itemChange : EventEmitter < Array < NgGridItemEvent > > = new EventEmitter ( ) ;
44+ public dragStart : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
45+ public drag : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
46+ public dragStop : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
47+ public resizeStart : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
48+ public resize : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
49+ public resizeStop : EventEmitter < NgGridItem > = new EventEmitter < NgGridItem > ( ) ;
50+ public itemChange : EventEmitter < Array < NgGridItemEvent > > = new EventEmitter < Array < NgGridItemEvent > > ( ) ;
5151
5252 // Public variables
5353 public colWidth : number = 250 ;
@@ -126,7 +126,7 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
126126 }
127127
128128 // Constructor
129- constructor ( private _differs : KeyValueDiffers , private _ngEl : ElementRef , private _renderer : Renderer , private _loader : DynamicComponentLoader ) { }
129+ constructor ( private _differs : KeyValueDiffers , private _ngEl : ElementRef , private _renderer : Renderer , private _loader : DynamicComponentLoader , private _containerRef : ViewContainerRef ) { }
130130
131131 // Public methods
132132 public ngOnInit ( ) : void {
@@ -458,7 +458,7 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
458458 this . _resizingItem = item ;
459459 this . _resizeDirection = item . canResize ( e ) ;
460460 this . _removeFromGrid ( item ) ;
461- this . _createPlaceholder ( item . getGridPosition ( ) , item . getSize ( ) ) ;
461+ this . _createPlaceholder ( item ) ;
462462 this . isResizing = true ;
463463
464464 this . resizeStart . emit ( item ) ;
@@ -477,7 +477,7 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
477477 this . _draggingItem = item ;
478478 this . _posOffset = pOffset ;
479479 this . _removeFromGrid ( item ) ;
480- this . _createPlaceholder ( item . getGridPosition ( ) , item . getSize ( ) ) ;
480+ this . _createPlaceholder ( item ) ;
481481 this . isDragging = true ;
482482
483483 this . dragStart . emit ( item ) ;
@@ -612,7 +612,7 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
612612 this . dragStop . emit ( this . _draggingItem ) ;
613613 this . _draggingItem = null ;
614614 this . _posOffset = null ;
615- this . _placeholderRef . dispose ( ) ;
615+ this . _placeholderRef . destroy ( ) ;
616616
617617 this . itemChange . emit ( this . _items . map ( item => item . getEventOutput ( ) ) ) ;
618618 }
@@ -634,7 +634,7 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
634634 this . resizeStop . emit ( this . _resizingItem ) ;
635635 this . _resizingItem = null ;
636636 this . _resizeDirection = null ;
637- this . _placeholderRef . dispose ( ) ;
637+ this . _placeholderRef . destroy ( ) ;
638638
639639 this . itemChange . emit ( this . _items . map ( item => item . getEventOutput ( ) ) ) ;
640640 }
@@ -1008,12 +1008,14 @@ export class NgGrid implements OnInit, DoCheck, OnDestroy {
10081008 return null ;
10091009 }
10101010
1011- private _createPlaceholder ( pos : { col : number , row : number } , dims : { x : number , y : number } ) {
1011+ private _createPlaceholder ( item : NgGridItem ) {
10121012 var me = this ;
1013- this . _loader . loadNextToLocation ( ( < Type > NgGridPlaceholder ) , ( < any > this . _ngEl ) . internalElement . parentView . appElements [ ( < any > this . _ngEl ) . internalElement . proto . index + 1 ] . ref ) . then ( componentRef => {
1013+ var pos = item . getGridPosition ( ) , dims = item . getSize ( ) ;
1014+
1015+ this . _loader . loadNextToLocation ( ( < Type > NgGridPlaceholder ) , item . containerRef ) . then ( componentRef => {
10141016 me . _placeholderRef = componentRef ;
10151017 var placeholder = componentRef . instance ;
1016- // me._placeholder.setGrid (me);
1018+ placeholder . registerGrid ( me ) ;
10171019 placeholder . setGridPosition ( pos . col , pos . row ) ;
10181020 placeholder . setSize ( dims . x , dims . y ) ;
10191021 } ) ;
@@ -1051,19 +1053,19 @@ export interface NgGridItemEvent {
10511053} )
10521054export class NgGridItem implements OnInit , OnDestroy {
10531055 // Event Emitters
1054- public itemChange : EventEmitter < NgGridItemEvent > = new EventEmitter ( false ) ;
1055- public dragStart : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1056- public drag : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1057- public dragStop : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1058- public dragAny : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1059- public resizeStart : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1060- public resize : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1061- public resizeStop : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1062- public resizeAny : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1063- public changeStart : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1064- public change : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1065- public changeStop : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1066- public changeAny : EventEmitter < NgGridItemEvent > = new EventEmitter ( ) ;
1056+ public itemChange : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( false ) ;
1057+ public dragStart : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1058+ public drag : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1059+ public dragStop : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1060+ public dragAny : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1061+ public resizeStart : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1062+ public resize : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1063+ public resizeStop : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1064+ public resizeAny : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1065+ public changeStart : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1066+ public change : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1067+ public changeStop : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
1068+ public changeAny : EventEmitter < NgGridItemEvent > = new EventEmitter < NgGridItemEvent > ( ) ;
10671069
10681070 // Default config
10691071 private static CONST_DEFAULT_CONFIG :NgGridItemConfig = {
@@ -1120,7 +1122,7 @@ export class NgGridItem implements OnInit, OnDestroy {
11201122 }
11211123
11221124 // Constructor
1123- constructor ( private _ngEl : ElementRef , private _renderer : Renderer , private _ngGrid : NgGrid ) { }
1125+ constructor ( private _ngEl : ElementRef , private _renderer : Renderer , private _ngGrid : NgGrid , public containerRef : ViewContainerRef ) { }
11241126
11251127 public onResizeStart ( ) : void {
11261128 var event = this . getEventOutput ( ) ;
@@ -1417,9 +1419,14 @@ export class NgGridPlaceholder implements OnInit {
14171419 private _sizey : number ;
14181420 private _col : number ;
14191421 private _row : number ;
1422+ private _ngGrid : NgGrid ;
14201423
1421- constructor ( private _ngEl : ElementRef , private _renderer : Renderer , private _ngGrid : NgGrid ) { }
1422-
1424+ constructor ( private _ngEl : ElementRef , private _renderer : Renderer ) { }
1425+
1426+ public registerGrid ( ngGrid : NgGrid ) {
1427+ this . _ngGrid = ngGrid ;
1428+ }
1429+
14231430 public ngOnInit ( ) : void {
14241431 this . _renderer . setElementClass ( this . _ngEl . nativeElement , 'grid-placeholder' , true ) ;
14251432 if ( this . _ngGrid . autoStyle ) this . _renderer . setElementStyle ( this . _ngEl . nativeElement , 'position' , 'absolute' ) ;
0 commit comments