@lidorsystems/integralui-web
Version:
IntegralUI Web - Advanced UI Components for Angular
358 lines (310 loc) • 15.8 kB
text/typescript
/*
Copyright © 2016-2019 Lidor Systems. All rights reserved.
This file is part of the "IntegralUI Web" Library.
The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License.
A copy of the License should have been installed in the product's root installation directory or it can be found at
http://www.lidorsystems.com/products/web/studio/license-agreement.aspx.
This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language
governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws.
*/
import { Component, ViewContainerRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
import { IntegralUITreeView } from '../../integralui/components/integralui.treeview';
export class TreeViewEventsSample {
applicationRef: ViewContainerRef;
treeview: IntegralUITreeView;
public data: Array<any> = [];
public eventLog: Array<any> = [];
private itemCount: number = 3;
public disableButtons: boolean = false;
private parentItem: any = null;
private itemIndex: number = -1;
constructor(){
this.data = [
{
id: 1,
text: "Item1",
items: [
{ id: 11, pid: 1, text: "Item11" },
{
id: 12,
pid: 1,
text: "Item12",
items: [
{ id: 121, pid: 12, text: "Item121" },
{
id: 122,
pid: 12,
text: "Item122",
expanded: false,
items: [
{ id: 1221, pid: 122, text: "Item1221" },
{ id: 1222, pid: 122, text: "Item1222" }
]
},
{ id: 123, pid: 12, text: "Item123" }
]
}
]
},
{
id: 2,
text: "Item2",
expanded: false,
items: [
{ id: 21, pid: 2, text: "Item21" },
{
id: 22,
pid: 2,
text: "Item22",
expanded: false,
items: [
{ id: 221, pid: 22, text: "Item221" }
]
}
]
},
{ id: 3, text: "Item3" }
];
}
createNewItem(){
this.itemCount++;
return { text: "Item " + this.itemCount };
}
addRoot(){
let item: any = this.createNewItem();
this.treeview.addItem(item);
this.treeview.selectedItem = item;
this.treeview.updateLayout();
this.disableButtons = false;
}
addChild(){
let item: any = this.createNewItem();
this.treeview.addItem(item, this.treeview.selectedItem);
this.treeview.updateLayout();
this.disableButtons = false;
}
remove(){
if (this.treeview.selectedItem){
this.treeview.removeItem(this.treeview.selectedItem);
this.treeview.updateLayout();
}
}
clear(){
this.treeview.clearItems();
this.treeview.updateLayout();
}
selectNewItem(){
let list: Array<any> = this.treeview.getList('', this.parentItem);
if (list && list.length > 0){
if (this.itemIndex == list.length)
this.itemIndex = list.length - 1;
if (this.itemIndex >= 0 && this.itemIndex < list.length){
if (this.itemIndex < list.length)
this.treeview.selectedItem = list[this.itemIndex];
else
this.treeview.selectedItem = list[list.length-1];
}
}
else if (this.parentItem)
this.treeview.selectedItem = this.parentItem;
else
this.treeview.selectedItem = null;
}
clearEventLog(){
this.eventLog.length = 0;
}
// Events
onAfterCollapse(e: any){
if (e.item)
this.eventLog.unshift({ name: "afterCollapse", info: " event was fired after item is collapsed: ", value: e.item.text });
}
onAfterExpand(e: any){
if (e.item)
this.eventLog.unshift({ name: "afterExpand", info: " event was fired after item is expanded: ", value: e.item.text });
}
onAfterSelect(e: any){
if (e.item)
this.eventLog.unshift({ name: "afterSelect", info: " event was fired after item is selected: ", value: e.item.text });
}
onBeforeCollapse(e: any){
if (e.item)
this.eventLog.unshift({ name: "beforeCollapse", info: " event was fired before item is collapsed: ", value: e.item.text });
}
onBeforeExpand(e: any){
if (e.item)
this.eventLog.unshift({ name: "beforeExpand", info: " event was fired before item is expanded: ", value: e.item.text });
}
onBeforeSelect(e: any){
if (e.item)
this.eventLog.unshift({ name: "beforeSelect", info: " event was fired before item is selected: ", value: e.item.text });
}
onDragOver(e: any){
this.eventLog.unshift({ name: "dragover", info: " event was fired when item is dragged over TreeView space" });
}
onDragDrop(e: any){
this.eventLog.unshift({ name: "dragdrop", info: " event was fired when drag-drop operation is completed" });
let self = this;
setTimeout(function(){
self.treeview.selectedItem = e.dragItem;
}, 100);
}
onItemAdding(e: any){
this.eventLog.unshift({ name: "itemAdding", info: " event was fired before item is added: ", value: e.item.text });
}
onItemAdded(e: any){
this.eventLog.unshift({ name: "itemAdded", info: " event was fired after item is added: ", value: e.item.text });
this.disableButtons = false;
}
onClear(e: any){
this.eventLog.unshift({ name: "clear", info: " event was fired when all items are removed at once", value: '' });
this.itemCount = 0;
this.disableButtons = true;
}
onItemRemoving(e: any){
this.eventLog.unshift({ name: "itemRemoving", info: " event was fired before item is removed: ", value: e.item.text });
this.itemIndex = -1;
this.parentItem = this.treeview.getItemParent(e.item);
let list: Array<any> = this.treeview.getList('', this.parentItem);
if (list && list.length > 0)
this.itemIndex = list.indexOf(e.item);
}
onItemRemoved(e: any){
this.eventLog.unshift({ name: "itemRemoved", info: " event was fired after item is removed: ", value: e.item.text });
this.itemCount = this.itemCount > 0 ? this.itemCount - 1 : 0;
this.selectNewItem();
if (this.itemCount == 0)
this.disableButtons = true;
}
onKeyDown(e: any){
this.eventLog.unshift({ name: "keyDown", info: " event was fired when key is hold down while the item has focus: ", value: e.item.text });
}
onKeyPress(e: any){
this.eventLog.unshift({ name: "keyPress", info: " event was fired when key is pressed while the item has focus: ", value: e.item.text });
}
onKeyUp(e: any){
this.eventLog.unshift({ name: "keyUp", info: " event was fired when key is released while the item has focus: ", value: e.item.text });
}
onScrollPosChanged(e: any){
this.eventLog.unshift({ name: "scrollPosChanged", info: " event was fired when scroll position changes: ", value: "{ x: " + e.value.x + ", y: " + e.value.y + " }" });
}
onSelectionChanged(e: any){
this.eventLog.unshift({ name: "selectionChanged", info: " event was fired when selected item has changed: ", value: e.item.text });
}
}