UNPKG

sl-vue-tree

Version:

draggable tree vue component

56 lines (55 loc) 2.33 kB
import Vue from 'vue'; export interface ISlTreeNodeModel<TDataType> { title: string; isLeaf?: boolean; children?: ISlTreeNodeModel<TDataType>[]; isExpanded?: boolean; isSelected?: boolean; isDraggable?: boolean; isSelectable?: boolean; data?: TDataType; } export interface ISlTreeNode<TDataType> extends ISlTreeNodeModel<TDataType> { isVisible?: boolean; isFirstChild: boolean; isLastChild: boolean; ind: number; level: number; path: number[]; pathStr: string; children: ISlTreeNode<TDataType>[]; } export interface ICursorPosition<TDataType> { node: ISlTreeNode<TDataType>; placement: 'before' | 'inside' | 'after'; } export interface IVueData<TDataType> { rootCursorPosition: ICursorPosition<TDataType>; rootDraggingNode: ISlTreeNode<TDataType>; } export default class SlVueTree<TDataType> extends Vue { value: ISlTreeNodeModel<TDataType>[]; edgeSize: number; allowMultiselect: boolean; showBranches: boolean; level: number; parentInd: number; allowToggleBranch: boolean; private rootCursorPosition; private rootDraggingNode; cursorPosition: ICursorPosition<TDataType>; draggingNode: ISlTreeNode<TDataType>; readonly nodes: ISlTreeNode<TDataType>[]; getNode(path: number[]): ISlTreeNode<TDataType>; getFirstNode(): ISlTreeNode<TDataType>; getLastNode(): ISlTreeNode<TDataType>; getNextNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>; getPrevNode(path: number[], filter?: (node: ISlTreeNode<TDataType>) => boolean): ISlTreeNode<TDataType>; updateNode(path: number[], patch: Partial<ISlTreeNodeModel<TDataType>>): void; getSelected(): ISlTreeNode<TDataType>[]; traverse(cb: (node: ISlTreeNode<TDataType>, nodeModel: ISlTreeNodeModel<TDataType>, siblings: ISlTreeNodeModel<TDataType>[]) => boolean | void, nodeModels?: ISlTreeNodeModel<TDataType>[], parentPath?: number[]): ISlTreeNode<TDataType>[] | boolean; getNodeEl(path: number[]): HTMLElement; select(path: number[], addToSelection?: boolean): ISlTreeNode<TDataType>; remove(paths: number[][]): void; insert(cursorPosition: ICursorPosition<TDataType>, nodeModel:ISlTreeNodeModel<TDataType>): void; }