diff --git a/src/demo/app/app.component.ts b/src/demo/app/app.component.ts index 0a64eb94..cb332629 100644 --- a/src/demo/app/app.component.ts +++ b/src/demo/app/app.component.ts @@ -1,7 +1,7 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; -import { Ng2TreeSettings, NodeEvent, RenamableNode, TreeModel } from '../../../index'; -import { NodeMenuItemAction } from '../../menu/menu.events'; -import { MenuItemSelectedEvent } from '../../tree.events'; +import {Component, OnInit, ViewChild} from '@angular/core'; +import {Ng2TreeSettings, NodeEvent, RenamableNode, TreeModel} from '../../../index'; +import {NodeMenuItemAction} from '../../menu/menu.events'; +import {MenuItemSelectedEvent} from '../../tree.events'; declare const alertify: any; @@ -14,6 +14,7 @@ declare const alertify: any;
Remove 'nano' - - - - - - + + + + + +
@@ -192,6 +185,9 @@ export class AppComponent implements OnInit { public fonts: TreeModel = { value: 'Fonts', + settings: { + isCollapsedOnInit: true + }, children: [ { value: 'Serif - All my children and I are STATIC ¯\\_(ツ)_/¯', @@ -200,18 +196,18 @@ export class AppComponent implements OnInit { 'static': true }, children: [ - { value: 'Antiqua with HTML tags.', id: 2 }, - { value: 'DejaVu Serif', id: 3 }, - { value: 'Garamond', id: 4 }, - { value: 'Georgia', id: 5 }, - { value: 'Times New Roman', id: 6 }, + {value: 'Antiqua with HTML tags.', id: 2}, + {value: 'DejaVu Serif', id: 3}, + {value: 'Garamond', id: 4}, + {value: 'Georgia', id: 5}, + {value: 'Times New Roman', id: 6}, { value: 'Slab serif', id: 7, children: [ - { value: 'Candida', id: 8 }, - { value: 'Swift', id: 9 }, - { value: 'Guardian Egyptian', id: 10 } + {value: 'Candida', id: 8}, + {value: 'Swift', id: 9}, + {value: 'Guardian Egyptian', id: 10} ] } ] @@ -220,36 +216,36 @@ export class AppComponent implements OnInit { value: 'Sans-serif (Right click me - I have a custom menu)', id: 11, settings: { - menuItems: [ - { action: NodeMenuItemAction.Custom, name: 'Foo', cssClass: 'fa fa-arrow-right' }, - { action: NodeMenuItemAction.Custom, name: 'Bar', cssClass: 'fa fa-arrow-right' }, - { action: NodeMenuItemAction.Custom, name: 'Baz', cssClass: 'fa fa-arrow-right'} + menuItems: [ + {action: NodeMenuItemAction.Custom, name: 'Foo', cssClass: 'fa fa-arrow-right'}, + {action: NodeMenuItemAction.Custom, name: 'Bar', cssClass: 'fa fa-arrow-right'}, + {action: NodeMenuItemAction.Custom, name: 'Baz', cssClass: 'fa fa-arrow-right'} ] }, children: [ - { value: 'Arial', id: 12 }, - { value: 'Century Gothic', id: 13 }, - { value: 'DejaVu Sans', id: 14 }, - { value: 'Futura', id: 15 }, - { value: 'Geneva', id: 16 }, - { value: 'Liberation Sans', id: 17 } + {value: 'Arial', id: 12}, + {value: 'Century Gothic', id: 13}, + {value: 'DejaVu Sans', id: 14}, + {value: 'Futura', id: 15}, + {value: 'Geneva', id: 16}, + {value: 'Liberation Sans', id: 17} ] }, { value: 'Monospace - With ASYNC CHILDREN', id: 18, // children property is ignored if "loadChildren" is present - children: [{ value: 'I am the font that will be ignored' }], + children: [{value: 'I am the font that will be ignored'}], loadChildren: (callback) => { setTimeout(() => { callback([ - { value: 'Input Mono', id: 19 }, - { value: 'Roboto Mono', id: 20 }, - { value: 'Liberation Mono', id: 21 }, - { value: 'Hack', id: 22 }, - { value: 'Consolas', id: 23 }, - { value: 'Menlo', id: 24 }, - { value: 'Source Code Pro', id: 25 } + {value: 'Input Mono', id: 19}, + {value: 'Roboto Mono', id: 20}, + {value: 'Liberation Mono', id: 21}, + {value: 'Hack', id: 22}, + {value: 'Consolas', id: 23}, + {value: 'Menlo', id: 24}, + {value: 'Source Code Pro', id: 25} ]); }, 5000); } @@ -306,13 +302,13 @@ export class AppComponent implements OnInit { value: 'grub', id: 14, children: [ - { value: 'fonts', id: 15 }, - { value: 'gfxblacklist.txt', id: 16 }, - { value: 'grub.cfg', id: 17 }, - { value: 'grubenv', id: 18 }, - { value: 'i386-pc', id: 19 }, - { value: 'locale', id: 20 }, - { value: 'unicode.pf2', id: 21 } + {value: 'fonts', id: 15}, + {value: 'gfxblacklist.txt', id: 16}, + {value: 'grub.cfg', id: 17}, + {value: 'grubenv', id: 18}, + {value: 'i386-pc', id: 19}, + {value: 'locale', id: 20}, + {value: 'unicode.pf2', id: 21} ] }, { @@ -323,15 +319,15 @@ export class AppComponent implements OnInit { checked: true } }, - { value: 'abi-4.4.0-57-generic', id: 23 }, - { value: 'config-4.4.0-57-generic', id: 24 }, - { value: 'initrd.img-4.4.0-47-generic', id: 25 }, - { value: 'initrd.img-4.4.0-57-generic', id: 26 }, - { value: 'memtest86+.bin', id: 27 }, - { value: 'System.map-4.4.0-57-generic', id: 28 }, - { value: 'memtest86+.elf', id: 29 }, - { value: 'vmlinuz-4.4.0-57-generic', id: 30 }, - { value: 'memtest86+_multiboot.bin', id: 31 } + {value: 'abi-4.4.0-57-generic', id: 23}, + {value: 'config-4.4.0-57-generic', id: 24}, + {value: 'initrd.img-4.4.0-47-generic', id: 25}, + {value: 'initrd.img-4.4.0-57-generic', id: 26}, + {value: 'memtest86+.bin', id: 27}, + {value: 'System.map-4.4.0-57-generic', id: 28}, + {value: 'memtest86+.elf', id: 29}, + {value: 'vmlinuz-4.4.0-57-generic', id: 30}, + {value: 'memtest86+_multiboot.bin', id: 31} ] }, { @@ -365,8 +361,8 @@ export class AppComponent implements OnInit { } ] }, - { value: 'cdrom', id: 34, children: [] }, - { value: 'dev', id: 35, children: [] }, + {value: 'cdrom', id: 34, children: []}, + {value: 'dev', id: 35, children: []}, { value: 'etc', id: 36, @@ -374,10 +370,10 @@ export class AppComponent implements OnInit { console.log('callback function called to load etc`s children'); setTimeout(() => { callback([ - { value: 'apache2', id: 82, children: [] }, - { value: 'nginx', id: 83, children: [] }, - { value: 'dhcp', id: 84, children: [] }, - { value: 'dpkg', id: 85, children: [] } + {value: 'apache2', id: 82, children: []}, + {value: 'nginx', id: 83, children: []}, + {value: 'dhcp', id: 84, children: []}, + {value: 'dpkg', id: 85, children: []} ]); }); } @@ -402,38 +398,38 @@ export class AppComponent implements OnInit { value: 'bills', id: 41, children: [ - { value: '2016-07-01-mobile.pdf', id: 42 }, - { value: '2016-07-01-electricity.pdf', id: 43 }, - { value: '2016-07-01-water.pdf', id: 44 }, - { value: '2016-07-01-internet.pdf', id: 45 }, - { value: '2016-08-01-mobile.pdf', id: 46 }, - { value: '2016-10-01-internet.pdf', id: 47 } + {value: '2016-07-01-mobile.pdf', id: 42}, + {value: '2016-07-01-electricity.pdf', id: 43}, + {value: '2016-07-01-water.pdf', id: 44}, + {value: '2016-07-01-internet.pdf', id: 45}, + {value: '2016-08-01-mobile.pdf', id: 46}, + {value: '2016-10-01-internet.pdf', id: 47} ] }, - { value: 'photos', id: 48, children: [] } + {value: 'photos', id: 48, children: []} ] } ] }, - { value: 'Downloads', id: 49, children: [] }, - { value: 'Desktop', id: 50, children: [] }, - { value: 'Pictures', id: 51, children: [] }, + {value: 'Downloads', id: 49, children: []}, + {value: 'Desktop', id: 50, children: []}, + {value: 'Pictures', id: 51, children: []}, { value: 'Music', id: 52, - children: [{ value: 'won\'t be displayed' }], + children: [{value: 'won\'t be displayed'}], loadChildren: (callback) => { setTimeout(() => { callback([ - { value: '2Cellos', id: 78, children: [] }, - { value: 'Michael Jackson', id: 79, children: [] }, - { value: 'AC/DC', id: 80, children: [] }, - { value: 'Adel', id: 81, children: [] } + {value: '2Cellos', id: 78, children: []}, + {value: 'Michael Jackson', id: 79, children: []}, + {value: 'AC/DC', id: 80, children: []}, + {value: 'Adel', id: 81, children: []} ]); }, 5000); } }, - { value: 'Public', id: 53, children: [] } + {value: 'Public', id: 53, children: []} ] }, { @@ -443,7 +439,7 @@ export class AppComponent implements OnInit { leftMenu: true }, children: [ - { value: 'Documents', id: 55, children: [] }, + {value: 'Documents', id: 55, children: []}, { value: 'Downloads - custom left menu template', id: 56, @@ -453,33 +449,33 @@ export class AppComponent implements OnInit { } }, children: [ - { value: 'Actobat3', id: 57 }, - { value: 'Complib', id: 58 }, - { value: 'Eudora', id: 59 }, - { value: 'java', id: 60 }, - { value: 'drivers', id: 61 }, - { value: 'kathy', id: 62 } + {value: 'Actobat3', id: 57}, + {value: 'Complib', id: 58}, + {value: 'Eudora', id: 59}, + {value: 'java', id: 60}, + {value: 'drivers', id: 61}, + {value: 'kathy', id: 62} ] }, - { value: 'Desktop', id: 63, children: [] }, - { value: 'Pictures', id: 64, children: [] }, - { value: 'Music', id: 65, children: [] }, - { value: 'Public', id: 66, children: [] } + {value: 'Desktop', id: 63, children: []}, + {value: 'Pictures', id: 64, children: []}, + {value: 'Music', id: 65, children: []}, + {value: 'Public', id: 66, children: []} ] } ] }, - { value: 'lib', id: 67, children: [] }, - { value: 'media', id: 68, children: [] }, - { value: 'opt', id: 69, children: [] }, - { value: 'proc', id: 70, children: [] }, - { value: 'root', id: 71, children: [] }, - { value: 'run', id: 72, children: [] }, - { value: 'sbin', id: 73, children: [] }, - { value: 'srv', id: 74, children: [] }, - { value: 'sys', id: 75, children: [] }, - { value: 'usr', id: 76, children: [] }, - { value: 'var', id: 77, children: [] } + {value: 'lib', id: 67, children: []}, + {value: 'media', id: 68, children: []}, + {value: 'opt', id: 69, children: []}, + {value: 'proc', id: 70, children: []}, + {value: 'root', id: 71, children: []}, + {value: 'run', id: 72, children: []}, + {value: 'sbin', id: 73, children: []}, + {value: 'srv', id: 74, children: []}, + {value: 'sys', id: 75, children: []}, + {value: 'usr', id: 76, children: []}, + {value: 'var', id: 77, children: []} ] }; private lastFFSNodeId = 86; @@ -492,28 +488,28 @@ export class AppComponent implements OnInit { { value: 'Web Application Icons', children: [ - { value: 'calendar', icon: 'fa-calendar' }, - { value: 'download', icon: 'fa-download' }, - { value: 'group', icon: 'fa-group' }, - { value: 'print', icon: 'fa-print' } + {value: 'calendar', icon: 'fa-calendar'}, + {value: 'download', icon: 'fa-download'}, + {value: 'group', icon: 'fa-group'}, + {value: 'print', icon: 'fa-print'} ] }, { value: 'Hand Icons', children: [ - { value: 'pointer', icon: 'fa-hand-pointer-o' }, - { value: 'grab', icon: 'fa-hand-rock-o' }, - { value: 'thumbs up', icon: 'fa-thumbs-o-up ' }, - { value: 'thumbs down', icon: 'fa-thumbs-o-down' } + {value: 'pointer', icon: 'fa-hand-pointer-o'}, + {value: 'grab', icon: 'fa-hand-rock-o'}, + {value: 'thumbs up', icon: 'fa-thumbs-o-up '}, + {value: 'thumbs down', icon: 'fa-thumbs-o-down'} ] }, { value: 'File Type Icons', children: [ - { value: 'file', icon: 'fa-file-o' }, - { value: 'audio', icon: 'fa-file-audio-o' }, - { value: 'movie', icon: 'fa-file-movie-o ' }, - { value: 'archive', icon: 'fa-file-zip-o' } + {value: 'file', icon: 'fa-file-o'}, + {value: 'audio', icon: 'fa-file-audio-o'}, + {value: 'movie', icon: 'fa-file-movie-o '}, + {value: 'archive', icon: 'fa-file-zip-o'} ] }, ] @@ -532,8 +528,8 @@ export class AppComponent implements OnInit { { value: 'Aspect-oriented programming', children: [ - { value: 'AspectJ' }, - { value: 'AspectC++' } + {value: 'AspectJ'}, + {value: 'AspectC++'} ] }, { @@ -550,16 +546,16 @@ export class AppComponent implements OnInit { } } as RenamableNode }, - { value: 'C++' }, - { value: 'C#' } + {value: 'C++'}, + {value: 'C#'} ] }, { value: 'Prototype-based programming', children: [ - { value: 'JavaScript' }, - { value: 'CoffeeScript' }, - { value: 'TypeScript' } + {value: 'JavaScript'}, + {value: 'CoffeeScript'}, + {value: 'TypeScript'} ] } ] @@ -628,11 +624,11 @@ export class AppComponent implements OnInit { const treeController = this.treeFFS.getControllerByNodeId(id); if (treeController && typeof treeController.setChildren === 'function') { treeController.setChildren([ - { value: 'apache2', id: 82, children: [] }, - { value: 'nginx', id: 83, children: [] }, - { value: 'dhcp', id: 84, children: [] }, - { value: 'dpkg', id: 85, children: [] }, - { value: 'gdb', id: 86, children: [] } + {value: 'apache2', id: 82, children: []}, + {value: 'nginx', id: 83, children: []}, + {value: 'dhcp', id: 84, children: []}, + {value: 'dpkg', id: 85, children: []}, + {value: 'gdb', id: 86, children: []} ]); } else { console.log('There isn`t a controller for a node with id - ' + id); diff --git a/src/demo/app/app.module.ts b/src/demo/app/app.module.ts index 54a731aa..51b7d796 100644 --- a/src/demo/app/app.module.ts +++ b/src/demo/app/app.module.ts @@ -1,9 +1,9 @@ -import { NgModule } from '@angular/core'; -import { AppComponent } from './app.component'; -import { BrowserModule } from '@angular/platform-browser'; -import { TreeModule } from '../../../index'; -import { ButtonDirective } from './button'; -import { CommonModule } from '@angular/common'; +import {NgModule} from '@angular/core'; +import {AppComponent} from './app.component'; +import {BrowserModule} from '@angular/platform-browser'; +import {TreeModule} from '../../../index'; +import {ButtonDirective} from './button'; +import {CommonModule} from '@angular/common'; @NgModule({ declarations: [AppComponent, ButtonDirective], diff --git a/src/demo/app/button.ts b/src/demo/app/button.ts index 495d1881..08a3a937 100644 --- a/src/demo/app/button.ts +++ b/src/demo/app/button.ts @@ -1,4 +1,4 @@ -import { Directive, ElementRef } from '@angular/core'; +import {Directive, ElementRef} from '@angular/core'; @Directive({ selector: '[button]' diff --git a/src/demo/main.ts b/src/demo/main.ts index a9ca1caf..57d0769b 100644 --- a/src/demo/main.ts +++ b/src/demo/main.ts @@ -1,8 +1,8 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import {enableProdMode} from '@angular/core'; +import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; +import {AppModule} from './app/app.module'; +import {environment} from './environments/environment'; if (environment.production) { enableProdMode(); diff --git a/src/demo/polyfills.ts b/src/demo/polyfills.ts index 2758ef27..ec2f15ba 100644 --- a/src/demo/polyfills.ts +++ b/src/demo/polyfills.ts @@ -29,6 +29,13 @@ import 'core-js/es6/object'; import 'core-js/es6/string'; // import 'core-js/es6/date'; import 'core-js/es6/array'; +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. // import 'core-js/es6/regexp'; // import 'core-js/es6/map'; // import 'core-js/es6/set'; @@ -40,23 +47,11 @@ import 'core-js/es6/array'; // import 'web-animations-js'; // Run `npm install --save web-animations-js`. -/** Evergreen browsers require these. **/ -import 'core-js/es6/reflect'; -import 'core-js/es7/reflect'; - - /** ALL Firefox browsers require the following to support `@angular/animation`. **/ // import 'web-animations-js'; // Run `npm install --save web-animations-js`. -/*************************************************************************************************** - * Zone JS is required by Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. - - - /*************************************************************************************************** * APPLICATION IMPORTS */ diff --git a/src/draggable/captured-node.ts b/src/draggable/captured-node.ts index 07ae149e..f3a93aeb 100644 --- a/src/draggable/captured-node.ts +++ b/src/draggable/captured-node.ts @@ -1,5 +1,5 @@ -import { Tree } from '../tree'; -import { ElementRef } from '@angular/core'; +import {Tree} from '../tree'; +import {ElementRef} from '@angular/core'; export class CapturedNode { public constructor(private anElement: ElementRef, diff --git a/src/draggable/draggable.events.ts b/src/draggable/draggable.events.ts index d8aa989b..2dfc4e8d 100644 --- a/src/draggable/draggable.events.ts +++ b/src/draggable/draggable.events.ts @@ -1,5 +1,5 @@ -import { ElementRef } from '@angular/core'; -import { CapturedNode } from './captured-node'; +import {ElementRef} from '@angular/core'; +import {CapturedNode} from './captured-node'; export class NodeDraggableEvent { public constructor(public captured: CapturedNode, public target: ElementRef) { diff --git a/src/draggable/node-draggable.directive.ts b/src/draggable/node-draggable.directive.ts index ffcee317..ac6e6498 100644 --- a/src/draggable/node-draggable.directive.ts +++ b/src/draggable/node-draggable.directive.ts @@ -1,7 +1,7 @@ -import { Directive, ElementRef, Input, Inject, OnDestroy, OnInit, Renderer2 } from '@angular/core'; -import { NodeDraggableService } from './node-draggable.service'; -import { CapturedNode } from './captured-node'; -import { Tree } from '../tree'; +import {Directive, ElementRef, Inject, Input, OnDestroy, OnInit, Renderer2} from '@angular/core'; +import {NodeDraggableService} from './node-draggable.service'; +import {CapturedNode} from './captured-node'; +import {Tree} from '../tree'; @Directive({ selector: '[nodeDraggable]' diff --git a/src/draggable/node-draggable.service.ts b/src/draggable/node-draggable.service.ts index 89841db7..e929dd6f 100644 --- a/src/draggable/node-draggable.service.ts +++ b/src/draggable/node-draggable.service.ts @@ -1,7 +1,7 @@ -import { Injectable, ElementRef } from '@angular/core'; -import { Subject } from 'rxjs/Subject'; -import { CapturedNode } from './captured-node'; -import { NodeDraggableEvent } from './draggable.events'; +import {ElementRef, Injectable} from '@angular/core'; +import {Subject} from 'rxjs/Subject'; +import {CapturedNode} from './captured-node'; +import {NodeDraggableEvent} from './draggable.events'; @Injectable() export class NodeDraggableService { diff --git a/src/editable/node-editable.directive.ts b/src/editable/node-editable.directive.ts index f0253bab..8bc227c4 100644 --- a/src/editable/node-editable.directive.ts +++ b/src/editable/node-editable.directive.ts @@ -1,15 +1,15 @@ import { Directive, ElementRef, - Input, - OnInit, - Output, EventEmitter, HostListener, Inject, + Input, + OnInit, + Output, Renderer2 } from '@angular/core'; -import { NodeEditableEvent, NodeEditableEventAction } from './editable.events'; +import {NodeEditableEvent, NodeEditableEventAction} from './editable.events'; @Directive({ selector: '[nodeEditable]' diff --git a/src/menu/node-menu.component.ts b/src/menu/node-menu.component.ts index d82154a4..1226010c 100644 --- a/src/menu/node-menu.component.ts +++ b/src/menu/node-menu.component.ts @@ -1,9 +1,7 @@ -import { - Component, EventEmitter, Output, Input, Inject, OnDestroy, OnInit, ViewChild, Renderer2 -} from '@angular/core'; -import { NodeMenuService } from './node-menu.service'; -import { NodeMenuItemSelectedEvent, NodeMenuItemAction, NodeMenuAction } from './menu.events'; -import { isLeftButtonClicked, isEscapePressed } from '../utils/event.utils'; +import {Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild} from '@angular/core'; +import {NodeMenuService} from './node-menu.service'; +import {NodeMenuAction, NodeMenuItemAction, NodeMenuItemSelectedEvent} from './menu.events'; +import {isEscapePressed, isLeftButtonClicked} from '../utils/event.utils'; @Component({ selector: 'node-menu', diff --git a/src/menu/node-menu.service.ts b/src/menu/node-menu.service.ts index 6c0c00f8..2cf1dd48 100644 --- a/src/menu/node-menu.service.ts +++ b/src/menu/node-menu.service.ts @@ -1,7 +1,7 @@ -import { Injectable, ElementRef } from '@angular/core'; -import { Subject } from 'rxjs/Subject'; -import { Observable } from 'rxjs/Observable'; -import { NodeMenuEvent, NodeMenuAction } from './menu.events'; +import {ElementRef, Injectable} from '@angular/core'; +import {Subject} from 'rxjs/Subject'; +import {Observable} from 'rxjs/Observable'; +import {NodeMenuAction, NodeMenuEvent} from './menu.events'; @Injectable() export class NodeMenuService { diff --git a/src/tree-controller.ts b/src/tree-controller.ts index 42768901..3806f469 100644 --- a/src/tree-controller.ts +++ b/src/tree-controller.ts @@ -1,10 +1,10 @@ -import { TreeService } from './tree.service'; -import { Tree } from './tree'; -import { TreeModel } from './tree.types'; -import { NodeMenuItemAction } from './menu/menu.events'; -import { TreeInternalComponent } from './tree-internal.component'; -import { MouseButtons } from './utils/event.utils'; -import { get } from './utils/fn.utils'; +import {TreeService} from './tree.service'; +import {Tree} from './tree'; +import {TreeModel} from './tree.types'; +import {NodeMenuItemAction} from './menu/menu.events'; +import {TreeInternalComponent} from './tree-internal.component'; +import {MouseButtons} from './utils/event.utils'; +import {get} from './utils/fn.utils'; export class TreeController { private tree: Tree; diff --git a/src/tree-internal.component.ts b/src/tree-internal.component.ts index 4e582945..c1ccd9eb 100644 --- a/src/tree-internal.component.ts +++ b/src/tree-internal.component.ts @@ -1,4 +1,5 @@ import { + AfterContentChecked, Component, ElementRef, Input, @@ -7,24 +8,22 @@ import { OnInit, SimpleChanges, TemplateRef, - ViewChild, - AfterViewInit, - AfterContentChecked + ViewChild } from '@angular/core'; import * as TreeTypes from './tree.types'; -import { Tree } from './tree'; -import { TreeController } from './tree-controller'; -import { NodeMenuService } from './menu/node-menu.service'; -import { NodeMenuItemAction, NodeMenuItemSelectedEvent } from './menu/menu.events'; -import { NodeEditableEvent, NodeEditableEventAction } from './editable/editable.events'; -import { NodeEvent, NodeRemovedEvent, NodeCheckedEvent, NodeIndeterminedEvent } from './tree.events'; -import { TreeService } from './tree.service'; +import {Ng2TreeSettings} from './tree.types'; +import {Tree} from './tree'; +import {TreeController} from './tree-controller'; +import {NodeMenuService} from './menu/node-menu.service'; +import {NodeMenuItemAction, NodeMenuItemSelectedEvent} from './menu/menu.events'; +import {NodeEditableEvent, NodeEditableEventAction} from './editable/editable.events'; +import {NodeCheckedEvent, NodeEvent} from './tree.events'; +import {TreeService} from './tree.service'; import * as EventUtils from './utils/event.utils'; -import { NodeDraggableEvent } from './draggable/draggable.events'; -import { Subscription } from 'rxjs/Subscription'; -import { get, has, size, isNil } from './utils/fn.utils'; -import { Ng2TreeSettings } from './tree.types'; +import {NodeDraggableEvent} from './draggable/draggable.events'; +import {Subscription} from 'rxjs/Subscription'; +import {get, isNil} from './utils/fn.utils'; @Component({ selector: 'tree-internal', @@ -126,6 +125,10 @@ export class TreeInternalComponent implements OnInit, OnChanges, OnDestroy, Afte this.settings = this.settings || new Ng2TreeSettings(); this.isReadOnly = !get(this.settings, 'enableCheckboxes', true); + if (this.tree.isRoot() && this.settings.rootIsVisible === false) { + this.tree.disableCollapseOnInit(); + } + this.subscriptions.push(this.nodeMenuService.hideMenuStream(this.nodeElementRef) .subscribe(() => { this.isRightMenuVisible = false; diff --git a/src/tree.component.ts b/src/tree.component.ts index f4319f3a..8e925d87 100644 --- a/src/tree.component.ts +++ b/src/tree.component.ts @@ -1,15 +1,25 @@ import { - Input, Component, OnInit, EventEmitter, Output, Inject, OnChanges, SimpleChanges, ViewChild, - OnDestroy, TemplateRef, ContentChild + Component, + ContentChild, + EventEmitter, + Inject, + Input, + OnChanges, + OnDestroy, + OnInit, + Output, + SimpleChanges, + TemplateRef, + ViewChild } from '@angular/core'; -import { TreeService } from './tree.service'; +import {TreeService} from './tree.service'; import * as TreeTypes from './tree.types'; -import { NodeEvent, NodeCheckedEvent, NodeUncheckedEvent, MenuItemSelectedEvent } from './tree.events'; +import {MenuItemSelectedEvent, NodeCheckedEvent, NodeEvent, NodeUncheckedEvent} from './tree.events'; -import { Tree } from './tree'; -import { TreeController } from './tree-controller'; -import { Subscription } from 'rxjs/Subscription'; +import {Tree} from './tree'; +import {TreeController} from './tree-controller'; +import {Subscription} from 'rxjs/Subscription'; @Component({ selector: 'tree', @@ -49,7 +59,6 @@ export class TreeComponent implements OnInit, OnChanges, OnDestroy { public nodeCollapsed: EventEmitter = new EventEmitter(); @Output() - public loadNextLevel: EventEmitter = new EventEmitter(); @Output() @@ -58,16 +67,20 @@ export class TreeComponent implements OnInit, OnChanges, OnDestroy { @Output() public nodeUnchecked: EventEmitter = new EventEmitter(); + @Output() public menuItemSelected: EventEmitter = new EventEmitter(); public tree: Tree; - @ViewChild('rootComponent') public rootComponent; - @ContentChild(TemplateRef) public template; + @ViewChild('rootComponent') + public rootComponent; + + @ContentChild(TemplateRef) + public template; private subscriptions: Subscription[] = []; - public constructor( @Inject(TreeService) private treeService: TreeService) { + public constructor(@Inject(TreeService) private treeService: TreeService) { } public ngOnChanges(changes: SimpleChanges): void { diff --git a/src/tree.events.ts b/src/tree.events.ts index 3df84d83..ced44edd 100644 --- a/src/tree.events.ts +++ b/src/tree.events.ts @@ -1,6 +1,5 @@ -import { Tree } from './tree'; -import { TreeController } from './tree-controller'; -import { RenamableNode } from './tree.types'; +import {Tree} from './tree'; +import {RenamableNode} from './tree.types'; export class NodeEvent { public constructor(public node: Tree) { diff --git a/src/tree.module.ts b/src/tree.module.ts index 0d2c8df7..89168663 100644 --- a/src/tree.module.ts +++ b/src/tree.module.ts @@ -1,16 +1,16 @@ import './rxjs-imports'; -import { NgModule } from '@angular/core'; -import { TreeComponent } from './tree.component'; -import { TreeInternalComponent } from './tree-internal.component'; -import { CommonModule } from '@angular/common'; -import { NodeDraggableDirective } from './draggable/node-draggable.directive'; -import { NodeDraggableService } from './draggable/node-draggable.service'; -import { NodeEditableDirective } from './editable/node-editable.directive'; -import { NodeMenuComponent } from './menu/node-menu.component'; -import { NodeMenuService } from './menu/node-menu.service'; -import { TreeService } from './tree.service'; -import { SafeHtmlPipe } from './utils/safe-html.pipe'; +import {NgModule} from '@angular/core'; +import {TreeComponent} from './tree.component'; +import {TreeInternalComponent} from './tree-internal.component'; +import {CommonModule} from '@angular/common'; +import {NodeDraggableDirective} from './draggable/node-draggable.directive'; +import {NodeDraggableService} from './draggable/node-draggable.service'; +import {NodeEditableDirective} from './editable/node-editable.directive'; +import {NodeMenuComponent} from './menu/node-menu.component'; +import {NodeMenuService} from './menu/node-menu.service'; +import {TreeService} from './tree.service'; +import {SafeHtmlPipe} from './utils/safe-html.pipe'; @NgModule({ imports: [CommonModule], diff --git a/src/tree.service.ts b/src/tree.service.ts index e3bd83f0..f83c4769 100644 --- a/src/tree.service.ts +++ b/src/tree.service.ts @@ -1,26 +1,26 @@ import { + LoadNextLevelEvent, + MenuItemSelectedEvent, + NodeCheckedEvent, NodeCollapsedEvent, NodeCreatedEvent, NodeExpandedEvent, + NodeIndeterminedEvent, NodeMovedEvent, NodeRemovedEvent, NodeRenamedEvent, NodeSelectedEvent, - LoadNextLevelEvent, - NodeCheckedEvent, - NodeUncheckedEvent, - MenuItemSelectedEvent, - NodeIndeterminedEvent + NodeUncheckedEvent } from './tree.events'; -import { RenamableNode } from './tree.types'; -import { Tree } from './tree'; -import { TreeController } from './tree-controller'; -import { Observable } from 'rxjs/Observable'; -import { Subject } from 'rxjs/Subject'; -import { ElementRef, Inject, Injectable } from '@angular/core'; -import { NodeDraggableService } from './draggable/node-draggable.service'; -import { NodeDraggableEvent } from './draggable/draggable.events'; -import { isEmpty } from './utils/fn.utils'; +import {RenamableNode} from './tree.types'; +import {Tree} from './tree'; +import {TreeController} from './tree-controller'; +import {Observable} from 'rxjs/Observable'; +import {Subject} from 'rxjs/Subject'; +import {ElementRef, Inject, Injectable} from '@angular/core'; +import {NodeDraggableService} from './draggable/node-draggable.service'; +import {NodeDraggableEvent} from './draggable/draggable.events'; +import {isEmpty} from './utils/fn.utils'; @Injectable() export class TreeService { diff --git a/src/tree.ts b/src/tree.ts index efb9236f..012315cd 100644 --- a/src/tree.ts +++ b/src/tree.ts @@ -1,21 +1,16 @@ +import {defaultsDeep, get, has, includes, isEmpty, isFunction, isNil, omit, once, size, trim} from './utils/fn.utils'; + +import {Observable} from 'rxjs/Observable'; +import {Observer} from 'rxjs/Observer'; import { - isEmpty, - trim, - has, - isFunction, - get, - omit, - size, - once, - includes, - isNil, - defaultsDeep -} from './utils/fn.utils'; - -import { Observable } from 'rxjs/Observable'; -import { Observer } from 'rxjs/Observer'; -import { TreeModel, RenamableNode, FoldingType, TreeStatus, TreeModelSettings, ChildrenLoadingFunction } from './tree.types'; -import { NodeMenuItem } from './menu/node-menu.component'; + ChildrenLoadingFunction, + FoldingType, + RenamableNode, + TreeModel, + TreeModelSettings, + TreeStatus +} from './tree.types'; +import {NodeMenuItem} from './menu/node-menu.component'; import * as uuidv4 from 'uuid/v4'; @@ -564,7 +559,7 @@ export class Tree { return ''; } - private disableCollapseOnInit() { + public disableCollapseOnInit() { if (this.node.settings) { this.node.settings.isCollapsedOnInit = false; } diff --git a/src/tree.types.ts b/src/tree.types.ts index f21ba887..5b80a92c 100644 --- a/src/tree.types.ts +++ b/src/tree.types.ts @@ -1,5 +1,5 @@ -import { get, defaultsDeep } from './utils/fn.utils'; -import { NodeMenuItem } from './menu/node-menu.component'; +import {defaultsDeep, get} from './utils/fn.utils'; +import {NodeMenuItem} from './menu/node-menu.component'; export class FoldingType { public static Expanded: FoldingType = new FoldingType('node-expanded'); diff --git a/src/utils/safe-html.pipe.ts b/src/utils/safe-html.pipe.ts index 9fc59a81..64322fa9 100644 --- a/src/utils/safe-html.pipe.ts +++ b/src/utils/safe-html.pipe.ts @@ -1,5 +1,5 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; +import {Pipe, PipeTransform} from '@angular/core'; +import {DomSanitizer, SafeHtml} from '@angular/platform-browser'; @Pipe({ name: 'safeHtml' }) export class SafeHtmlPipe implements PipeTransform {