|
|
|
@ -7,9 +7,11 @@ import {
|
|
|
|
|
TemplateRef,
|
|
|
|
|
ViewEncapsulation,
|
|
|
|
|
} from '@angular/core';
|
|
|
|
|
import { NzFormatEmitEvent } from 'ng-zorro-antd/tree';
|
|
|
|
|
import { NzFormatEmitEvent, NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';
|
|
|
|
|
import { of } from 'rxjs';
|
|
|
|
|
|
|
|
|
|
export type DropEvent = NzFormatEmitEvent & { pos: -1 | 0 | 1 };
|
|
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'abp-tree',
|
|
|
|
|
templateUrl: 'tree.component.html',
|
|
|
|
@ -20,11 +22,13 @@ import { of } from 'rxjs';
|
|
|
|
|
encapsulation: ViewEncapsulation.None,
|
|
|
|
|
})
|
|
|
|
|
export class TreeComponent {
|
|
|
|
|
dropPosition: -1 | 0 | 1;
|
|
|
|
|
|
|
|
|
|
@ContentChild('menu') menu: TemplateRef<any>;
|
|
|
|
|
@Output() readonly checkedKeysChange = new EventEmitter();
|
|
|
|
|
@Output() readonly expandedKeysChange = new EventEmitter<string[]>();
|
|
|
|
|
@Output() readonly selectedNodeChange = new EventEmitter();
|
|
|
|
|
@Output() readonly dropOver = new EventEmitter<NzFormatEmitEvent>();
|
|
|
|
|
@Output() readonly dropOver = new EventEmitter<DropEvent>();
|
|
|
|
|
@Input() draggable: boolean;
|
|
|
|
|
@Input() checkable: boolean;
|
|
|
|
|
@Input() checkStrictly: boolean;
|
|
|
|
@ -33,7 +37,10 @@ export class TreeComponent {
|
|
|
|
|
@Input() expandedKeys: string[] = [];
|
|
|
|
|
@Input() selectedNode: any;
|
|
|
|
|
@Input() isNodeSelected = node => this.selectedNode?.id === node.key;
|
|
|
|
|
@Input() beforeDrop = () => of(false);
|
|
|
|
|
@Input() beforeDrop = (event: NzFormatBeforeDropEvent) => {
|
|
|
|
|
this.dropPosition = event.pos;
|
|
|
|
|
return of(false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
onSelectedNodeChange(node) {
|
|
|
|
|
this.selectedNode = node.origin.entity;
|
|
|
|
@ -50,9 +57,10 @@ export class TreeComponent {
|
|
|
|
|
this.expandedKeysChange.emit(event.keys);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onDrop(event: NzFormatEmitEvent) {
|
|
|
|
|
onDrop(event: DropEvent) {
|
|
|
|
|
event.event.stopPropagation();
|
|
|
|
|
event.event.preventDefault();
|
|
|
|
|
event.pos = this.dropPosition;
|
|
|
|
|
|
|
|
|
|
this.dropOver.emit(event);
|
|
|
|
|
}
|
|
|
|
|