tree-ngx
Version:
A highly customizable Angular Tree Component, usable with minimal implementation.
1 lines • 49.3 kB
Source Map (JSON)
{"version":3,"file":"tree-ngx.mjs","sources":["../../src/app/modules/tree-ngx/src/model/node-selected-state.ts","../../src/app/modules/tree-ngx/src/model/tree-mode.ts","../../src/app/modules/tree-ngx/src/util/util.ts","../../src/app/modules/tree-ngx/src/service/tree-service.ts","../../src/app/modules/tree-ngx/src/node-icon-wrapper/node-icon-wrapper.component.ts","../../src/app/modules/tree-ngx/src/node-icon-wrapper/node-icon-wrapper.component.html","../../src/app/modules/tree-ngx/src/node-name/node-name.component.ts","../../src/app/modules/tree-ngx/src/node-name/node-name.component.html","../../src/app/modules/tree-ngx/src/node/node.component.ts","../../src/app/modules/tree-ngx/src/node/node.component.html","../../src/app/modules/tree-ngx/src/tree-ngx/tree-ngx.component.ts","../../src/app/modules/tree-ngx/src/tree-ngx/tree-ngx.component.html","../../src/app/modules/tree-ngx/tree-ngx.module.ts","../../src/app/modules/tree-ngx/tree-ngx.ts"],"sourcesContent":["export enum NodeSelectedState {\r\n checked,\r\n unChecked,\r\n indeterminate\r\n}\r\n","export enum TreeMode {\r\n NoSelect,\r\n SingleSelect,\r\n MultiSelect,\r\n HideSelected\r\n}\r\n","import { NodeItem } from '../model/node-item';\r\nimport { NodeState } from '../model/node-state';\r\nimport { NodeSelectedState } from '../model/node-selected-state';\r\nimport { TreeOptions } from '../model/tree-options';\r\nimport { TreeMode } from '../model/tree-mode';\r\n\r\nexport class TreeUtil {\r\n\r\n public static initState(parent: NodeState, nodeItem: NodeItem<any>, options: TreeOptions): NodeState {\r\n\r\n const nodeState: NodeState = {\r\n parent: parent,\r\n children: [],\r\n filteredChildren: [],\r\n hasFilteredChildren: false,\r\n nodeItem: nodeItem,\r\n expanded: nodeItem.expanded === false ? false : true,\r\n disabled: nodeItem.disabled === true ? true : false,\r\n markSelected: this.getMarkSelected(nodeItem, options),\r\n selectedState: NodeSelectedState.unChecked,\r\n selected: false,\r\n showCheckBox: options.checkboxes\r\n };\r\n\r\n return nodeState;\r\n }\r\n\r\n public static getMarkSelected(nodeItem: NodeItem<any>, options: TreeOptions): boolean {\r\n if (((!nodeItem.children || nodeItem.children.length === 0) || options.mode === TreeMode.SingleSelect) && !options.checkboxes) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { NodeItem } from '../model/node-item';\r\nimport { NodeState } from '../model/node-state';\r\nimport { NodeSelectedState } from '../model/node-selected-state';\r\nimport { TreeMode } from '../model/tree-mode';\r\nimport { TreeOptions } from '../model/tree-options';\r\nimport { TreeCallbacks } from '../model/tree-callbacks';\r\nimport { TreeUtil } from '../util/util';\r\n\r\n@Injectable()\r\nexport class TreeService {\r\n\r\n public options: TreeOptions;\r\n public callbacks: TreeCallbacks = {};\r\n public treeState: NodeState[] = [];\r\n public nodeItems: NodeItem<any>[];\r\n\r\n private selectedItems: any[] = [];\r\n private selectedStates: NodeState[] = [];\r\n private filterValue = '';\r\n private selectedItemsSubject = new BehaviorSubject(this.selectedItems);\r\n private filterChangeSubject = new BehaviorSubject(this.filterValue);\r\n\r\n constructor() {\r\n this.filterChangeSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(it => {\r\n this.filterTraverse(this.treeState, this.filterValue);\r\n });\r\n }\r\n\r\n public toggleSelected(state: NodeState) {\r\n this.toggleSelectedState(state, false);\r\n\r\n if (this.callbacks.toggle) {\r\n this.callbacks.toggle(state.nodeItem);\r\n }\r\n }\r\n\r\n public toggleSelectedState(state, ignoreDisabled: boolean) {\r\n if (this.isDisabled(state, ignoreDisabled)) {\r\n return;\r\n }\r\n\r\n if (state.selectedState === NodeSelectedState.unChecked) {\r\n if (this.options.mode === TreeMode.SingleSelect) {\r\n this.clear();\r\n this.setChecked(state, false, true, ignoreDisabled);\r\n } else {\r\n this.setChecked(state, true, false, ignoreDisabled);\r\n }\r\n } else if (state.selectedState === NodeSelectedState.checked) {\r\n if (this.options.mode === TreeMode.SingleSelect) {\r\n this.setUnchecked(state, false, true, ignoreDisabled);\r\n } else {\r\n this.setUnchecked(state, true, false, ignoreDisabled);\r\n }\r\n } else {\r\n if (this.anyActiveSelected(state) && !state.selected) {\r\n this.setUnchecked(state, true, false, ignoreDisabled);\r\n } else {\r\n this.setChecked(state, true, false, ignoreDisabled);\r\n }\r\n }\r\n\r\n if (state.parent && this.options.mode !== TreeMode.SingleSelect) {\r\n this.childStateChanged(state.parent);\r\n }\r\n }\r\n\r\n public setInitialState() {\r\n this.setInitialSelectedState(this.treeState);\r\n }\r\n\r\n public childStateChanged(state: NodeState) {\r\n if (this.anyChildSelected(state)) {\r\n if (this.allChildrenSelected(state)) {\r\n this.setChecked(state, false);\r\n } else {\r\n this.setIndeterminate(state);\r\n }\r\n } else {\r\n this.setUnchecked(state, false);\r\n }\r\n\r\n if (state.parent) {\r\n this.childStateChanged(state.parent);\r\n }\r\n }\r\n\r\n public checkBoxClick(state: NodeState) {\r\n if (this.options.mode !== TreeMode.HideSelected) {\r\n this.toggleSelected(state);\r\n }\r\n }\r\n\r\n public nameClick(state: NodeState) {\r\n if (this.callbacks.nameClick) {\r\n this.callbacks.nameClick(state.nodeItem);\r\n }\r\n\r\n if (this.canToggleChildrenOnName()) {\r\n this.toggleSelected(state);\r\n }\r\n }\r\n\r\n public toggleExpanded(value: boolean) {\r\n this.toggleExpandedTraverse(this.treeState, value);\r\n }\r\n\r\n public clear() {\r\n for (let state of this.selectedStates) {\r\n state.selected = false;\r\n state.selectedState = NodeSelectedState.unChecked;\r\n }\r\n\r\n this.selectedItems.length = 0;\r\n this.selectedStates.length = 0;\r\n }\r\n\r\n public addNodeById(nodeState: NodeState, id: string) {\r\n let result = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (result) {\r\n if (!result.children) {\r\n result.children = [];\r\n }\r\n\r\n this.addNewNode(nodeState, result);\r\n\r\n if (result.nodeItem.item && this.options.mode === TreeMode.MultiSelect) {\r\n this.removeSelected(result.nodeItem.item);\r\n }\r\n }\r\n }\r\n\r\n public selectById(id: string) {\r\n let result = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (result) {\r\n this.toggleSelected(result);\r\n }\r\n }\r\n\r\n public editNameById(id: string, name: string) {\r\n const nodeState = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (nodeState && nodeState.nodeItem) {\r\n nodeState.nodeItem.name = name;\r\n }\r\n }\r\n\r\n public editItemById(id: string, item: any) {\r\n const nodeState = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (nodeState && nodeState.nodeItem) {\r\n if (this.selectedItems.includes(nodeState.nodeItem.item)) {\r\n this.removeSelected(nodeState.nodeItem.item);\r\n this.selectedItems.push(item);\r\n this.selectedItemsSubject.next(this.selectedItems);\r\n }\r\n\r\n nodeState.nodeItem.item = item;\r\n }\r\n }\r\n\r\n public deleteById(id: string) {\r\n let result = this.getNodeState(this.treeState, id, this.findById);\r\n if (result) {\r\n this.deleteByState(result);\r\n }\r\n }\r\n\r\n public deleteByState(state: NodeState) {\r\n this.delete(state);\r\n this.childStateChanged(state);\r\n this.filterTraverse(this.treeState, this.filterValue);\r\n }\r\n\r\n public expandById(id: string) {\r\n const result = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (result) {\r\n this.toggleExpandedTraverseAsc(result, true);\r\n }\r\n }\r\n\r\n public collapseById(id: string) {\r\n const result = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (result) {\r\n result.expanded = false;\r\n }\r\n }\r\n\r\n public reEvaluateSelectedState(state: NodeState): void {\r\n if (this.options.mode !== TreeMode.SingleSelect) {\r\n if (!this.hasNoChildren(state)) {\r\n this.childStateChanged(state);\r\n for (const child of state.children) {\r\n this.reEvaluateSelectedState(child);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public filterChanged(value: string) {\r\n this.filterValue = value;\r\n this.filterChangeSubject.next(value);\r\n }\r\n\r\n public canToggleChildrenOnName() {\r\n if (this.options.checkboxes === false) {\r\n if (this.options.mode === TreeMode.SingleSelect || this.options.mode === TreeMode.MultiSelect) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getParentById(id: string): NodeItem<any> {\r\n const result = this.getNodeState(this.treeState, id, this.findById);\r\n\r\n if (result) {\r\n return result.parent.nodeItem;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public forceFilterTraverse() {\r\n this.filterTraverse(this.treeState, this.filterValue);\r\n }\r\n\r\n private setInitialSelectedState(nodeStates: NodeState[]) {\r\n for (const state of nodeStates) {\r\n if (this.options.mode === TreeMode.MultiSelect) {\r\n if (state.nodeItem.selected && (!state.children || state.children.length === 0)) {\r\n this.toggleSelectedState(state, true);\r\n }\r\n } else {\r\n if (state.nodeItem.selected) {\r\n this.toggleSelectedState(state, true);\r\n }\r\n }\r\n\r\n this.setInitialSelectedState(state.children);\r\n }\r\n }\r\n\r\n private delete(state: NodeState) {\r\n while (state.children.length > 0) {\r\n this.delete(state.children.pop());\r\n }\r\n\r\n this.removeSelected(state.nodeItem.item);\r\n this.remove(state);\r\n\r\n if (!state.parent) {\r\n this.deleteRoot(state, this.treeState, this.nodeItems);\r\n }\r\n }\r\n\r\n private toggleExpandedTraverse(nodeStates: NodeState[], value: boolean) {\r\n for (let state of nodeStates) {\r\n state.expanded = value;\r\n this.toggleExpandedTraverse(state.children, value);\r\n }\r\n }\r\n\r\n private deleteRoot(state: NodeState, nodeStates: NodeState[], nodeItems: NodeItem<any>[]) {\r\n let itemIndex = nodeItems.indexOf(state.nodeItem);\r\n\r\n if (itemIndex !== -1) {\r\n nodeItems.splice(itemIndex, 1);\r\n }\r\n\r\n let index = nodeStates.indexOf(state);\r\n\r\n if (index !== -1) {\r\n nodeStates.splice(index, 1);\r\n }\r\n }\r\n\r\n private isDisabled(state: NodeState, ignoreDisabled: boolean): boolean {\r\n return (this.options.mode === TreeMode.NoSelect || (state.disabled && !ignoreDisabled));\r\n }\r\n\r\n private addNewNode(nodeState: NodeState, parent: NodeState): void {\r\n nodeState.parent = parent;\r\n parent.children.push(nodeState);\r\n parent.nodeItem.children.push(nodeState.nodeItem);\r\n\r\n parent.markSelected = TreeUtil.getMarkSelected(parent.nodeItem, this.options);\r\n\r\n if (this.options.mode === TreeMode.MultiSelect) {\r\n this.childStateChanged(parent);\r\n }\r\n\r\n this.filterTraverse(this.treeState, this.filterValue);\r\n }\r\n\r\n private remove(state: NodeState) {\r\n if (state.parent) {\r\n state.parent.hasFilteredChildren = false;\r\n\r\n let itemIndex = state.parent.nodeItem.children.indexOf(state.nodeItem);\r\n if (itemIndex !== -1) {\r\n state.parent.nodeItem.children.splice(itemIndex, 1);\r\n }\r\n\r\n let index = state.parent.children.indexOf(state);\r\n if (index !== -1) {\r\n state.parent.children.splice(index, 1);\r\n }\r\n\r\n let filteredIndex = state.parent.filteredChildren.indexOf(state);\r\n if (filteredIndex !== -1) {\r\n state.parent.filteredChildren.splice(filteredIndex, 1);\r\n }\r\n }\r\n }\r\n\r\n private anyChildSelected(state: NodeState): boolean {\r\n return state.children.find(it => {\r\n return it.selectedState === NodeSelectedState.checked || it.selectedState === NodeSelectedState.indeterminate;\r\n }) != null ? true : false;\r\n }\r\n\r\n private allChildrenSelected(state: NodeState) {\r\n return state.children.every(it => it.selectedState === NodeSelectedState.checked)\r\n && state.children.length === state.nodeItem.children.length;\r\n }\r\n\r\n private toggleExpandedTraverseAsc(nodeState: NodeState, value: boolean): void {\r\n nodeState.expanded = value;\r\n\r\n if (nodeState.parent) {\r\n this.toggleExpandedTraverseAsc(nodeState.parent, value);\r\n }\r\n }\r\n\r\n private setUnchecked(state: NodeState, propogate: boolean, force?: boolean, ignoreDisabled?: boolean) {\r\n if (state.disabled && !ignoreDisabled) {\r\n return;\r\n }\r\n\r\n state.selectedState = NodeSelectedState.unChecked;\r\n state.selected = false;\r\n\r\n if (this.hasNoChildren(state) || force) {\r\n this.removeSelected(state.nodeItem.item);\r\n\r\n if (this.options.alwaysEmitSelected === true) {\r\n this.selectedItemsSubject.next(this.selectedItems);\r\n }\r\n\r\n if (this.callbacks.unSelect) {\r\n this.callbacks.unSelect(state.nodeItem);\r\n }\r\n\r\n } else if (propogate === true) {\r\n for (const child of state.children) {\r\n this.setUnchecked(child, propogate, force, ignoreDisabled);\r\n }\r\n }\r\n }\r\n\r\n private setIndeterminate(state) {\r\n state.selectedState = NodeSelectedState.indeterminate;\r\n state.selected = false;\r\n }\r\n\r\n private anyActiveSelected(state: NodeState): boolean {\r\n let result = state.children.filter(it => !it.disabled && it.selected).length > 0;\r\n\r\n for (const child of state.children) {\r\n if (!this.hasNoChildren(child) && this.anyActiveSelected(child)) {\r\n result = true;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private hasNoChildren(state: NodeState): boolean {\r\n return (!state.children || state.children.length === 0);\r\n }\r\n\r\n private setChecked(state: NodeState, propogate: boolean, force?: boolean, ignoreDisabled?: boolean) {\r\n if (state.disabled && !ignoreDisabled) {\r\n return;\r\n }\r\n\r\n state.selectedState = NodeSelectedState.checked;\r\n state.selected = true;\r\n\r\n if (this.hasNoChildren(state) || force) {\r\n this.addSelected(state);\r\n } else if (propogate === true) {\r\n for (const child of state.children) {\r\n this.setChecked(child, propogate, force, ignoreDisabled);\r\n }\r\n }\r\n }\r\n\r\n private addSelected(state: NodeState) {\r\n this.selectedItems.push(state.nodeItem.item);\r\n this.selectedStates.push(state);\r\n\r\n if (this.options.alwaysEmitSelected === true) {\r\n this.selectedItemsSubject.next(this.selectedItems);\r\n }\r\n\r\n if (this.callbacks.select) {\r\n this.callbacks.select(state.nodeItem);\r\n }\r\n }\r\n\r\n private removeSelected(item: any) {\r\n let index = this.selectedItems.indexOf(item);\r\n if (index !== -1) {\r\n this.selectedItems.splice(index, 1);\r\n }\r\n }\r\n\r\n private findById(state: NodeState, arg: string) {\r\n return state.nodeItem.id === arg;\r\n }\r\n\r\n private getNodeState(nodeStates: NodeState[], arg: any, compare: (state: NodeState, find: any) => boolean) {\r\n let result = nodeStates.find(it => compare(it, arg));\r\n\r\n if (result) {\r\n return result;\r\n } else {\r\n for (let state of nodeStates) {\r\n result = this.getNodeState(state.children, arg, compare);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public connect(): Observable<any[]> {\r\n return this.selectedItemsSubject.asObservable();\r\n }\r\n\r\n public applyFilter(state: NodeState, filter: string) {\r\n state.filteredChildren = this.filter(state.children, filter);\r\n return state.filteredChildren.length > 0;\r\n }\r\n\r\n private filter(states: NodeState[], value: string) {\r\n return states.filter(it => {\r\n if (this.options.mode === TreeMode.HideSelected && !it.selected) {\r\n return false;\r\n }\r\n\r\n if ((it.hasFilteredChildren || value === '' || it.nodeItem.name.toLowerCase().indexOf(value) !== -1)) {\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n private filterTraverse(states: NodeState[], filter: string) {\r\n let results: boolean[] = [];\r\n\r\n for (let state of states) {\r\n if (state.children.length > 0) {\r\n state.hasFilteredChildren = false;\r\n state.hasFilteredChildren = this.filterTraverse(state.children, filter);\r\n\r\n let res = this.applyFilter(state, filter);\r\n if (res) {\r\n state.hasFilteredChildren = true;\r\n }\r\n\r\n results.push(state.hasFilteredChildren);\r\n }\r\n }\r\n\r\n return results.some(it => it === true);\r\n }\r\n}\r\n","import { Component, OnInit, Input, TemplateRef } from '@angular/core';\r\nimport { NodeState } from '../model/node-state';\r\n\r\n@Component({\r\n selector: 'node-icon-wrapper',\r\n templateUrl: './node-icon-wrapper.component.html'\r\n})\r\nexport class NodeIconWrapperComponent {\r\n\r\n @Input() state: NodeState;\r\n @Input() nodeCollapsibleTemplate: TemplateRef<any>;\r\n\r\n public _this = this;\r\n\r\n constructor() { }\r\n\r\n public toggleExpand() {\r\n this.state.expanded = !this.state.expanded;\r\n }\r\n}\r\n","<div class=\"node-icon-wrapper\" [class.disabled]=\"state.nodeItem?.children?.length == 0\" [class.collapsable]=\"state.nodeItem?.children?.length > 0\"\r\n [class.iconCheckbox]=\"state.showCheckBox\" (click)=\"state.expanded = !state.expanded;\">\r\n <ng-container *ngIf=\"!nodeCollapsibleTemplate\">\r\n <ng-container *ngIf=\"state.nodeItem?.children?.length > 0\">\r\n <i *ngIf=\"!state.expanded\" class=\"arrow-right\"></i>\r\n <i *ngIf=\"state.expanded\" class=\"arrow-down\"></i>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"state.nodeItem?.children?.length > 0\">\r\n <ng-container *ngTemplateOutlet=\"nodeCollapsibleTemplate; context: { expanded: state.expanded, context: _this }\">\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, OnInit, Input, TemplateRef, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { NodeState } from '../model/node-state';\r\nimport { TreeService } from '../service/tree-service';\r\n\r\n@Component({\r\n selector: 'node-name',\r\n templateUrl: './node-name.component.html'\r\n})\r\nexport class NodeNameComponent implements OnChanges {\r\n\r\n @Input() state: NodeState;\r\n @Input() nodeNameTemplate: TemplateRef<any>;\r\n\r\n public _this = this;\r\n public active = false;\r\n\r\n constructor(private treeService: TreeService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.state) {\r\n this.active = this.treeService.canToggleChildrenOnName();\r\n }\r\n }\r\n\r\n public nameClick() {\r\n this.treeService.nameClick(this.state);\r\n }\r\n\r\n public delete() {\r\n this.treeService.deleteByState(this.state);\r\n }\r\n}\r\n","<div (click)=\"nameClick()\" [class.markSelected]=\"state.markSelected && state.selected\" [class.nodeDisabled]=\"state.disabled\" class=\"node-name\">\r\n <ng-container *ngIf=\"!nodeNameTemplate\">\r\n <span [class.active]=\"active\">{{state.nodeItem.name}}</span>\r\n </ng-container>\r\n\r\n <ng-container *ngTemplateOutlet=\"nodeNameTemplate; context: { $implicit: state.nodeItem, node: state.nodeItem, context: _this }\">\r\n </ng-container>\r\n</div>\r\n","import { Component, OnChanges, ElementRef, ViewChild, Input, TemplateRef, SimpleChanges, AfterViewInit } from '@angular/core';\r\nimport { NodeState } from '../model/node-state';\r\nimport { NodeSelectedState } from '../model/node-selected-state';\r\nimport { TreeService } from '../service/tree-service';\r\n\r\n\r\n@Component({\r\n selector: 'node',\r\n templateUrl: './node.component.html'\r\n})\r\nexport class NodeComponent implements OnChanges, AfterViewInit {\r\n\r\n @ViewChild('nodeCheckbox', { static: false }) nodeCheckbox: ElementRef;\r\n\r\n @Input() state: NodeState;\r\n @Input() selectedState: NodeSelectedState;\r\n @Input() nodeNameTemplate: TemplateRef<any>;\r\n @Input() nodeCollapsibleTemplate: TemplateRef<any>;\r\n\r\n public _this = this;\r\n\r\n constructor(public treeService: TreeService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedState) {\r\n this.selectedStateChanged();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectedStateChanged();\r\n }\r\n\r\n private selectedStateChanged() {\r\n if (this.nodeCheckbox) {\r\n if (this.selectedState === NodeSelectedState.indeterminate) {\r\n this.nodeCheckbox.nativeElement.indeterminate = true;\r\n } else {\r\n this.nodeCheckbox.nativeElement.indeterminate = false;\r\n }\r\n\r\n if (this.selectedState === NodeSelectedState.checked) {\r\n this.nodeCheckbox.nativeElement.checked = true;\r\n } else if (this.selectedState === NodeSelectedState.unChecked) {\r\n this.nodeCheckbox.nativeElement.checked = false;\r\n }\r\n }\r\n }\r\n\r\n public checkBoxClick() {\r\n this.treeService.checkBoxClick(this.state);\r\n\r\n setTimeout(() => {\r\n this.treeService.reEvaluateSelectedState(this.state);\r\n }, 1);\r\n }\r\n}\r\n","<div class=\"node\">\r\n <div class=\"node-container\">\r\n <node-icon-wrapper [state]=\"state\" [nodeCollapsibleTemplate]=\"nodeCollapsibleTemplate\"></node-icon-wrapper>\r\n\r\n <input #nodeCheckbox class=\"node-checkbox\" *ngIf=\"state.showCheckBox\" (click)=\"checkBoxClick()\" [disabled]=\"state.disabled\" [checked]=\"state.selected\" type=\"checkbox\" />\r\n <node-name [state]=\"state\" [nodeNameTemplate]=\"nodeNameTemplate\"></node-name>\r\n </div>\r\n <div *ngIf=\"state.nodeItem.children\" class=\"collapsible-wrapper\" [class.collapsed]=\"!state.expanded && state.nodeItem.children.length > 0 && state.filteredChildren.length > 0\">\r\n <div class=\"collapsible\">\r\n <node class=\"node-offset\" [state]=\"child\" [selectedState]=\"child.selectedState\" [nodeCollapsibleTemplate]=\"nodeCollapsibleTemplate\" [nodeNameTemplate]=\"nodeNameTemplate\" *ngFor=\"let child of state.filteredChildren\"></node>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ContentChild,\r\n TemplateRef,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NodeItem } from '../model/node-item';\r\nimport { TreeService } from '../service/tree-service';\r\nimport { TreeOptions } from '../model/tree-options';\r\nimport { TreeCallbacks } from '../model/tree-callbacks';\r\nimport { TreeMode } from '../model/tree-mode';\r\nimport { Subscription, timer } from 'rxjs';\r\nimport { NodeState } from '../model/node-state';\r\nimport { TreeNgx } from '../model/tree-ngx';\r\nimport { TreeUtil } from '../util/util';\r\n\r\n@Component({\r\n selector: 'tree-ngx',\r\n templateUrl: './tree-ngx.component.html',\r\n providers: [TreeService]\r\n})\r\nexport class TreeNgxComponent implements OnInit, OnDestroy, OnChanges, TreeNgx {\r\n @ContentChild('nodeNameTemplate', { static: false }) nodeNameTemplate: TemplateRef<any>;\r\n @ContentChild('nodeCollapsibleTemplate', { static: false }) nodeCollapsibleTemplate: TemplateRef<any>;\r\n\r\n private subscription: Subscription;\r\n\r\n private defaultOptions: TreeOptions = {\r\n mode: TreeMode.SingleSelect,\r\n checkboxes: false,\r\n alwaysEmitSelected: false\r\n };\r\n\r\n @Input() options: TreeOptions = this.defaultOptions;\r\n @Input() callbacks: TreeCallbacks = this.treeService.callbacks;\r\n @Input() nodeItems: NodeItem<any>[];\r\n @Input() filter = '';\r\n @Output() selectedItems = new EventEmitter<any>();\r\n\r\n constructor(public treeService: TreeService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.treeService.connect().subscribe(it => {\r\n const sub = timer(0).subscribe(() => {\r\n this.selectedItems.emit(it);\r\n sub.unsubscribe();\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.filter) {\r\n this.treeService.filterChanged(this.filter.toLowerCase());\r\n }\r\n\r\n if (changes.options) {\r\n this.setOptions();\r\n if (this.treeService.nodeItems) {\r\n this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems, this.treeService.options);\r\n this.treeService.clear();\r\n this.treeService.setInitialState();\r\n this.treeService.forceFilterTraverse();\r\n }\r\n }\r\n\r\n if (changes.callbacks) {\r\n this.treeService.callbacks = this.callbacks;\r\n }\r\n\r\n if (changes.nodeItems) {\r\n this.initialize();\r\n }\r\n }\r\n\r\n public addNodeById(nodeItem: NodeItem<any>, id?: string): void {\r\n const newNodeState = TreeUtil.initState(null, nodeItem, this.options);\r\n this.treeService.addNodeById(newNodeState, id);\r\n }\r\n\r\n public deleteById(id: string): void {\r\n this.treeService.deleteById(id);\r\n }\r\n\r\n public editNameById(id: string, name: string): void {\r\n this.treeService.editNameById(id, name);\r\n }\r\n\r\n public editItemById(id: string, item: any): void {\r\n this.treeService.editItemById(id, item);\r\n }\r\n\r\n public getParentById(id: string): NodeItem<any> {\r\n return this.treeService.getParentById(id);\r\n }\r\n\r\n public expandAll(): void {\r\n this.treeService.toggleExpanded(true);\r\n }\r\n\r\n public collapseAll(): void {\r\n this.treeService.toggleExpanded(false);\r\n }\r\n\r\n public expandById(id: string): void {\r\n this.treeService.expandById(id);\r\n }\r\n\r\n public collapseById(id: string): void {\r\n this.treeService.collapseById(id);\r\n }\r\n\r\n public selectById(id: string): void {\r\n this.treeService.selectById(id);\r\n }\r\n\r\n public initialize() {\r\n this.setOptions();\r\n this.treeService.callbacks = this.callbacks;\r\n this.treeService.nodeItems = this.nodeItems;\r\n\r\n this.treeService.treeState = this.initTreeStructure(null, this.treeService.nodeItems, this.treeService.options);\r\n this.treeService.clear();\r\n this.treeService.setInitialState();\r\n }\r\n\r\n private initTreeStructure(parent: NodeState, nodeItems: NodeItem<any>[], options: TreeOptions) {\r\n let treeStructure: NodeState[] = [];\r\n\r\n for (let nodeItem of nodeItems) {\r\n\r\n const nodeState = TreeUtil.initState(parent, nodeItem, options);\r\n\r\n if (nodeItem.children) {\r\n nodeState.children = this.initTreeStructure(nodeState, nodeItem.children, options);\r\n nodeState.filteredChildren = nodeState.children;\r\n }\r\n\r\n treeStructure.push(nodeState);\r\n }\r\n\r\n return treeStructure;\r\n }\r\n\r\n private setOptions() {\r\n if (this.options.mode === TreeMode.NoSelect) {\r\n this.treeService.options = { ...this.options, checkboxes: false };\r\n } else {\r\n this.treeService.options = { ...this.options };\r\n }\r\n }\r\n}\r\n","<div class=\"tree-ngx\">\r\n <node class=\"node-root\" [state]=\"state\" [selectedState]=\"state.selectedState\" [nodeCollapsibleTemplate]=\"nodeCollapsibleTemplate\"\r\n [nodeNameTemplate]=\"nodeNameTemplate\" *ngFor=\"let state of treeService.treeState\"></node>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TreeNgxComponent } from './src/tree-ngx/tree-ngx.component';\r\nimport { NodeComponent } from './src//node/node.component';\r\nimport { TreeService } from './src//service/tree-service';\r\nimport { NodeNameComponent } from './src/node-name/node-name.component';\r\nimport { NodeIconWrapperComponent } from './src/node-icon-wrapper/node-icon-wrapper.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n TreeNgxComponent,\r\n NodeComponent,\r\n NodeNameComponent,\r\n NodeIconWrapperComponent,\r\n ],\r\n providers: [\r\n TreeService\r\n ],\r\n exports: [\r\n TreeNgxComponent\r\n ]\r\n})\r\nexport class TreeNgxModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}