@@ -11,21 +11,27 @@ import {
1111 NodeMenuEvent ,
1212 TreeModel ,
1313 FoldingType ,
14- TreeEvent
14+ TreeEvent , NodeDraggableEventAction
1515} from './types' ;
1616import { NodeEditableDirective } from './node-editable.directive' ;
1717import { NodeMenuComponent } from './node-menu.component' ;
18- import Draggable from './node-draggable.directive' ;
1918import { NodeDraggableService } from './node-draggable.service' ;
2019import { NodeMenuService } from './node-menu.service' ;
20+ import { NodeDraggableDirective } from './node-draggable.directive' ;
2121
2222@Component ( {
2323 selector : 'tree' ,
24- styles : [ require ( './tree.component.styl' ) ] ,
25- template : require ( './tree.component.html' ) ,
26- directives : [ NodeEditableDirective , TreeComponent , NodeMenuComponent , Draggable , CORE_DIRECTIVES ] ,
24+ styles : [ require ( './branchy.component.styl' ) ] ,
25+ template : require ( './branchy.component.html' ) ,
26+ directives : [
27+ NodeEditableDirective ,
28+ TreeComponent ,
29+ NodeMenuComponent ,
30+ NodeDraggableDirective ,
31+ CORE_DIRECTIVES
32+ ] ,
2733} )
28- export class TreeComponent implements OnInit {
34+ class TreeComponent implements OnInit {
2935 @Input ( 'model' )
3036 private tree : TreeModel ;
3137
@@ -70,12 +76,12 @@ export class TreeComponent implements OnInit {
7076
7177 private setUpDraggableEventHandler ( ) {
7278 this . nodeDraggableService . draggableNodeEvents$
73- . filter ( event => event . action === 'remove' )
79+ . filter ( event => event . action === NodeDraggableEventAction . Remove )
7480 . filter ( event => event . captured . element === this . element )
7581 . subscribe ( event => this . onChildRemoved ( { node : event . captured . tree } , this . parentTree ) ) ;
7682
7783 this . nodeDraggableService . draggableNodeEvents$
78- . filter ( event => event . action !== 'remove' )
84+ . filter ( event => event . action !== NodeDraggableEventAction . Remove )
7985 . filter ( event => event . target === this . element )
8086 . filter ( event => ! this . hasChild ( event . captured . tree ) )
8187 . subscribe ( event => {
@@ -93,12 +99,12 @@ export class TreeComponent implements OnInit {
9399
94100 private moveNodeToThisTreeAndRemoveFromPreviousOne ( event : NodeDraggableEvent ) : void {
95101 this . tree . children . push ( event . captured . tree ) ;
96- this . nodeDraggableService . draggableNodeEvents$ . next ( _ . merge ( event , { action : 'remove' } ) ) ;
102+ this . nodeDraggableService . draggableNodeEvents$ . next ( _ . merge ( event , { action : NodeDraggableEventAction . Remove } ) ) ;
97103 }
98104
99105 private moveNodeToParentTreeAndRemoveFromPreviousOne ( event : NodeDraggableEvent ) : void {
100106 this . parentTree . children . splice ( this . indexInParent , 0 , event . captured . tree ) ;
101- this . nodeDraggableService . draggableNodeEvents$ . next ( _ . merge ( event , { action : 'remove' } ) ) ;
107+ this . nodeDraggableService . draggableNodeEvents$ . next ( _ . merge ( event , { action : NodeDraggableEventAction . Remove } ) ) ;
102108 }
103109
104110 private isEditInProgress ( ) {
@@ -114,7 +120,7 @@ export class TreeComponent implements OnInit {
114120 }
115121
116122 private isSiblingOf ( child : TreeModel ) {
117- return _ . includes ( this . parentTree . children , child ) ;
123+ return this . parentTree && _ . includes ( this . parentTree . children , child ) ;
118124 }
119125
120126 private swapWithSibling ( sibling : TreeModel ) : void {
@@ -132,7 +138,7 @@ export class TreeComponent implements OnInit {
132138 }
133139
134140 private switchFolding ( $event : any , tree : TreeModel ) : void {
135- this . handleFoldingType ( $event . target . parentTree . parentNode , tree ) ;
141+ this . handleFoldingType ( $event . target . parentNode . parentNode , tree ) ;
136142 }
137143
138144 private foldingType ( node : TreeModel ) : FoldingTypeCssClass {
@@ -257,3 +263,14 @@ export class TreeComponent implements OnInit {
257263}
258264
259265type FoldingTypeCssClass = 'node-expanded' | 'node-collapsed' | 'node-leaf' ;
266+
267+ @Component ( {
268+ selector : 'branchy' ,
269+ providers : [ NodeMenuService , NodeDraggableService ] ,
270+ template : `<tree [model]="tree"></tree>` ,
271+ directives : [ TreeComponent ]
272+ } )
273+ export class BranchyComponent {
274+ @Input ( 'model' )
275+ private tree : TreeModel
276+ }
0 commit comments