@cluetec/ngcx-tree 0.1.0-angular-15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/LICENSE +21 -0
- package/README.md +318 -0
- package/esm2020/cluetec-ngcx-tree.mjs +5 -0
- package/esm2020/lib/ngcx-tree/ngcx-tree-data.source.mjs +16 -0
- package/esm2020/lib/ngcx-tree/ngcx-tree-models.mjs +2 -0
- package/esm2020/lib/ngcx-tree/ngcx-tree-node/ngcx-tree-node.component.mjs +49 -0
- package/esm2020/lib/ngcx-tree/ngcx-tree-utils.mjs +10 -0
- package/esm2020/lib/ngcx-tree/ngcx-tree.component.mjs +323 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/cluetec-ngcx-tree.mjs +410 -0
- package/fesm2015/cluetec-ngcx-tree.mjs.map +1 -0
- package/fesm2020/cluetec-ngcx-tree.mjs +400 -0
- package/fesm2020/cluetec-ngcx-tree.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/ngcx-tree/ngcx-tree-data.source.d.ts +9 -0
- package/lib/ngcx-tree/ngcx-tree-models.d.ts +46 -0
- package/lib/ngcx-tree/ngcx-tree-node/ngcx-tree-node.component.d.ts +19 -0
- package/lib/ngcx-tree/ngcx-tree-utils.d.ts +2 -0
- package/lib/ngcx-tree/ngcx-tree.component.d.ts +56 -0
- package/package.json +52 -0
- package/public-api.d.ts +2 -0
- package/styles/_ngcx-common.scss +5 -0
- package/styles/_ngcx-doted-tree-line.scss +44 -0
- package/styles/_ngcx-icon-color.scss +7 -0
- package/styles/_ngcx-selection.scss +24 -0
- package/styles/styles.scss +4 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CdkDrag, CdkDragRelease, CdkDropList } from '@angular/cdk/drag-drop';
|
|
2
|
+
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
3
|
+
import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
4
|
+
import { NgcxTreeDataSource } from './ngcx-tree-data.source';
|
|
5
|
+
import { NgcxTreeApi, NgcxTreeConfig, NgcxTreeNode, NgcxTreeNodeMovedEvent, NgcxTreeNodeWrapper } from './ngcx-tree-models';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class NgcxTreeComponent implements OnChanges, OnInit {
|
|
8
|
+
nodes?: NgcxTreeNode[];
|
|
9
|
+
config?: NgcxTreeConfig<any>;
|
|
10
|
+
nodeMoved: EventEmitter<NgcxTreeNodeMovedEvent<any>>;
|
|
11
|
+
customEvent: EventEmitter<any>;
|
|
12
|
+
clickEvent: EventEmitter<NgcxTreeNodeWrapper<any>>;
|
|
13
|
+
selectEvent: EventEmitter<NgcxTreeNodeWrapper<any>>;
|
|
14
|
+
readonly api: NgcxTreeApi<any>;
|
|
15
|
+
dataSource: NgcxTreeDataSource<NgcxTreeNodeWrapper<any>>;
|
|
16
|
+
treeControl: NestedTreeControl<NgcxTreeNodeWrapper<any>, string>;
|
|
17
|
+
dragging?: NgcxTreeNodeWrapper<any>;
|
|
18
|
+
selectedNode?: NgcxTreeNodeWrapper<any>;
|
|
19
|
+
DropType: typeof DropType;
|
|
20
|
+
disable: () => boolean;
|
|
21
|
+
private canceledByEsq?;
|
|
22
|
+
ngOnInit(): void;
|
|
23
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
24
|
+
updateTree(): void;
|
|
25
|
+
createWrapperNodes(nodes: NgcxTreeNode[], parent?: NgcxTreeNodeWrapper<any>, depth?: number): NgcxTreeNodeWrapper<any>[];
|
|
26
|
+
hasChild: (_: number, node: NgcxTreeNodeWrapper<any>) => boolean;
|
|
27
|
+
allowDrop(dropNode: NgcxTreeNodeWrapper<any>, dropType: DropType): boolean;
|
|
28
|
+
sortPredicate(): (index: number, drag: CdkDrag, drop: CdkDropList) => boolean;
|
|
29
|
+
disableDrag(node: NgcxTreeNodeWrapper<any>): boolean;
|
|
30
|
+
keyDownArrowUp(event: Event): void;
|
|
31
|
+
keyDownArrowDown(event: Event): void;
|
|
32
|
+
keyDownArrowLeft(event: Event): void;
|
|
33
|
+
keyDownArrowRight(event: Event): void;
|
|
34
|
+
keyEscapeWhileDragging(): void;
|
|
35
|
+
handleDragRelease(event: CdkDragRelease<NgcxTreeNodeWrapper<any>>): void;
|
|
36
|
+
private findAddIndex;
|
|
37
|
+
private removeElementFromPreviousPosition;
|
|
38
|
+
nodeClicked(nodeWrapper: NgcxTreeNodeWrapper<any>): void;
|
|
39
|
+
selectNode(nodeWrapper: NgcxTreeNodeWrapper<any> | undefined): void;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgcxTreeComponent, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgcxTreeComponent, "ngcx-tree", never, { "nodes": "nodes"; "config": "config"; }, { "nodeMoved": "nodeMoved"; "customEvent": "customEvent"; "clickEvent": "clickEvent"; "selectEvent": "selectEvent"; }, never, never, true, never>;
|
|
42
|
+
}
|
|
43
|
+
declare enum DropType {
|
|
44
|
+
DROP_AFTER = "DROP_AFTER",
|
|
45
|
+
DROP_BEFORE = "DROP_BEFORE",
|
|
46
|
+
DROP_INTO = "DROP_INTO"
|
|
47
|
+
}
|
|
48
|
+
export declare class NgcxTreeControl implements NgcxTreeApi<any> {
|
|
49
|
+
private treeComponent;
|
|
50
|
+
constructor(treeComponent: NgcxTreeComponent);
|
|
51
|
+
get treeControl(): NestedTreeControl<NgcxTreeNodeWrapper<any>, string>;
|
|
52
|
+
selectNodeById(id: string): void;
|
|
53
|
+
findNodeById(id: string): NgcxTreeNodeWrapper<any> | undefined;
|
|
54
|
+
private findNodeByIdInNodes;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cluetec/ngcx-tree",
|
|
3
|
+
"version": "0.1.0-angular-15",
|
|
4
|
+
"description": "An angular tree component that allows to move nodes by drag and drop.",
|
|
5
|
+
"author": "Michael Niedermaier <mn@cluetec.de>",
|
|
6
|
+
"repository": "https://github.com/cluetec/ngcx-tree",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"private": false,
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/cluetec/ngcx-tree/issues"
|
|
11
|
+
},
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"@angular/common": ">=15",
|
|
14
|
+
"@angular/core": ">=15",
|
|
15
|
+
"@angular/cdk": ">=15"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tslib": "^2.6.1"
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"keywords": [
|
|
22
|
+
"angular",
|
|
23
|
+
"ng",
|
|
24
|
+
"tree",
|
|
25
|
+
"dnd",
|
|
26
|
+
"d&d",
|
|
27
|
+
"drag",
|
|
28
|
+
"and",
|
|
29
|
+
"drop",
|
|
30
|
+
"drag and drop",
|
|
31
|
+
"cluetec"
|
|
32
|
+
],
|
|
33
|
+
"module": "fesm2015/cluetec-ngcx-tree.mjs",
|
|
34
|
+
"es2020": "fesm2020/cluetec-ngcx-tree.mjs",
|
|
35
|
+
"esm2020": "esm2020/cluetec-ngcx-tree.mjs",
|
|
36
|
+
"fesm2020": "fesm2020/cluetec-ngcx-tree.mjs",
|
|
37
|
+
"fesm2015": "fesm2015/cluetec-ngcx-tree.mjs",
|
|
38
|
+
"typings": "index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
"./package.json": {
|
|
41
|
+
"default": "./package.json"
|
|
42
|
+
},
|
|
43
|
+
".": {
|
|
44
|
+
"types": "./index.d.ts",
|
|
45
|
+
"esm2020": "./esm2020/cluetec-ngcx-tree.mjs",
|
|
46
|
+
"es2020": "./fesm2020/cluetec-ngcx-tree.mjs",
|
|
47
|
+
"es2015": "./fesm2015/cluetec-ngcx-tree.mjs",
|
|
48
|
+
"node": "./fesm2015/cluetec-ngcx-tree.mjs",
|
|
49
|
+
"default": "./fesm2020/cluetec-ngcx-tree.mjs"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.tree-node-content-container,
|
|
2
|
+
.tree-node-children-container {
|
|
3
|
+
position: relative;
|
|
4
|
+
cursor: default;
|
|
5
|
+
|
|
6
|
+
&::before {
|
|
7
|
+
content: '';
|
|
8
|
+
position: absolute;
|
|
9
|
+
border-left: 1px solid lightgrey;
|
|
10
|
+
top: 0;
|
|
11
|
+
bottom: 0px;
|
|
12
|
+
left: 25px;
|
|
13
|
+
}
|
|
14
|
+
.small-horizontal-tree-line {
|
|
15
|
+
width: 5px;
|
|
16
|
+
position: absolute;
|
|
17
|
+
left: 25px;
|
|
18
|
+
border-top: 1px solid lightgrey;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.tree-node-content-container {
|
|
23
|
+
&.first::before {
|
|
24
|
+
top: 5px;
|
|
25
|
+
}
|
|
26
|
+
&.last:not(.expanded)::before {
|
|
27
|
+
bottom: 14px;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.tree-node-children-container.last::before {
|
|
32
|
+
bottom: 14px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.cdk-drag-preview {
|
|
36
|
+
.tree-node-content-container {
|
|
37
|
+
&::before {
|
|
38
|
+
border-left: none;
|
|
39
|
+
}
|
|
40
|
+
.small-horizontal-tree-line {
|
|
41
|
+
border-top: none;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.ngcx-tree {
|
|
2
|
+
.tree-node-content-container {
|
|
3
|
+
&.selected {
|
|
4
|
+
.tree-node-content {
|
|
5
|
+
font-weight: 600;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
&:not(.dragging) {
|
|
11
|
+
.tree-node-content-container.is-selectable:hover {
|
|
12
|
+
.tree-node-content {
|
|
13
|
+
font-weight: 600;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
.cdk-drag-preview {
|
|
19
|
+
.ngcx-tree .tree-node-content-container.selected {
|
|
20
|
+
.tree-node-content {
|
|
21
|
+
background-color: inherit;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|