3
3
* Copyright (c) 2022 Alain Dumesny - see GridStack root license
4
4
*/
5
5
6
- import { AfterContentInit , ChangeDetectionStrategy , Component , ComponentFactoryResolver , ContentChildren , ElementRef , EventEmitter , Input ,
6
+ import { AfterContentInit , ChangeDetectionStrategy , Component , ContentChildren , ElementRef , EventEmitter , Input ,
7
7
NgZone , OnDestroy , OnInit , Output , QueryList , ViewChild , ViewContainerRef } from '@angular/core' ;
8
8
import { Subject } from 'rxjs' ;
9
9
import { takeUntil } from 'rxjs/operators' ;
@@ -24,7 +24,7 @@ export type droppedCB = {event: Event, previousNode: GridStackNode, newNode: Gri
24
24
selector : 'gridstack' ,
25
25
template : `
26
26
<!-- content to show when when grid is empty, like instructions on how to add widgets -->
27
- <ng-content select="[no-item- content]" *ngIf="showEmpty "></ng-content>
27
+ <ng-content select="[empty- content]" *ngIf="isEmpty "></ng-content>
28
28
<!-- where dynamic items go -->
29
29
<ng-template #container></ng-template>
30
30
<!-- where template items go -->
@@ -48,7 +48,7 @@ export class GridstackComponent implements OnInit, AfterContentInit, OnDestroy {
48
48
public get options ( ) : GridStackOptions { return this . _grid ?. opts || this . _options || { } ; }
49
49
50
50
/** true while ng-content with 'no-item-content' should be shown when last item is removed from a grid */
51
- @Input ( ) public showEmpty ?: boolean ;
51
+ @Input ( ) public isEmpty ?: boolean ;
52
52
53
53
/** individual list of GridStackEvent callbacks handlers as output
54
54
* otherwise use this.grid.on('name1 name2 name3', callback) to handle multiple at once
@@ -82,7 +82,6 @@ export class GridstackComponent implements OnInit, AfterContentInit, OnDestroy {
82
82
constructor (
83
83
private readonly ngZone : NgZone ,
84
84
private readonly elementRef : ElementRef < GridHTMLElement > ,
85
- private readonly resolver : ComponentFactoryResolver ,
86
85
) {
87
86
}
88
87
@@ -135,22 +134,22 @@ export class GridstackComponent implements OnInit, AfterContentInit, OnDestroy {
135
134
/** check if the grid is empty, if so show alternative content */
136
135
public checkEmpty ( ) {
137
136
if ( ! this . grid ) return ;
138
- this . showEmpty = ! this . grid . engine . nodes . length ;
137
+ this . isEmpty = ! this . grid . engine . nodes . length ;
139
138
}
140
139
141
140
/** get all known events as easy to use Outputs for convenience */
142
141
private hookEvents ( grid ?: GridStack ) {
143
142
if ( ! grid ) return ;
144
143
grid
145
- . on ( 'added' , ( event : Event , nodes : GridStackNode [ ] ) => this . ngZone . run ( ( ) => { this . added . emit ( { event, nodes} ) ; this . checkEmpty ( ) ; } ) )
144
+ . on ( 'added' , ( event : Event , nodes : GridStackNode [ ] ) => this . ngZone . run ( ( ) => { this . checkEmpty ( ) ; this . added . emit ( { event, nodes} ) ; } ) )
146
145
. on ( 'change' , ( event : Event , nodes : GridStackNode [ ] ) => this . ngZone . run ( ( ) => this . changeGS . emit ( { event, nodes} ) ) )
147
146
. on ( 'disable' , ( event : Event ) => this . ngZone . run ( ( ) => this . disable . emit ( { event} ) ) )
148
147
. on ( 'drag' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . drag . emit ( { event, el} ) ) )
149
148
. on ( 'dragstart' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . dragstart . emit ( { event, el} ) ) )
150
149
. on ( 'dragstop' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . dragstop . emit ( { event, el} ) ) )
151
150
. on ( 'dropped' , ( event : Event , previousNode : GridStackNode , newNode : GridStackNode ) => this . ngZone . run ( ( ) => this . dropped . emit ( { event, previousNode, newNode} ) ) )
152
151
. on ( 'enable' , ( event : Event ) => this . ngZone . run ( ( ) => this . enable . emit ( { event} ) ) )
153
- . on ( 'removed' , ( event : Event , nodes : GridStackNode [ ] ) => this . ngZone . run ( ( ) => { this . removed . emit ( { event, nodes} ) ; this . checkEmpty ( ) ; } ) )
152
+ . on ( 'removed' , ( event : Event , nodes : GridStackNode [ ] ) => this . ngZone . run ( ( ) => { this . checkEmpty ( ) ; this . removed . emit ( { event, nodes} ) ; } ) )
154
153
. on ( 'resize' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . resize . emit ( { event, el} ) ) )
155
154
. on ( 'resizestart' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . resizestart . emit ( { event, el} ) ) )
156
155
. on ( 'resizestop' , ( event : Event , el : GridItemHTMLElement ) => this . ngZone . run ( ( ) => this . resizestop . emit ( { event, el} ) ) )
@@ -161,12 +160,10 @@ export class GridstackComponent implements OnInit, AfterContentInit, OnDestroy {
161
160
if ( add ) {
162
161
if ( ! this . container ) return ;
163
162
// create the grid item dynamically - see https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html
164
- // and https://netbasal.com/dynamically-creating-components-with-angular-a7346f4a982d#.irxd1nulp
165
- const factory = this . resolver . resolveComponentFactory ( GridstackItemComponent ) ;
166
- const gridItem = this . container . createComponent ( factory ) . instance ;
167
- return gridItem . el ;
163
+ const gridItem = this . container . createComponent ( GridstackItemComponent ) ?. instance ;
164
+ return gridItem ?. el ;
168
165
}
169
- // if (this.outsideAddRemove) this.outsideAddRemove(g, w, add);
166
+ // if (this.outsideAddRemove) this.outsideAddRemove(g, w, add); // TODO: ?
170
167
return ;
171
168
}
172
169
}
0 commit comments