vue中align_Vue的简单Treeview组件,没有额外的依赖——VueTeatree

介绍

Vue Teatree是一个不依赖第三方库的Vue树组件,简单易用!


1b1b68037439cfab765a401737876fed.gif

Github

https://github.com/sarimabbas/vue-teatree

安装

yarn add vue-teatree # (or use npm)

范例

  • 导入组件
import { Teatree, NodeType, NodeName, NodeToggle } from "vue-teatree";
Teatree 是将数据传递到的主要组件(如下)。NodeType 包含定义每个节点类型的Typescript接口。NodeName 是将传递到插槽中(slot)的预制组件。NodeToggle 是将传递到插槽中(slot)的预制组件。

准备数据

const data: NodeType[] = [  {    name: "parent",    show: true,    showChildren: true,    selected: false,    children: [      {        name: "child",        show: true,        showChildren: true,        selected: false,        children: [          {            name: "grandchild",            show: true,            showChildren: true,            selected: false,            children: [],          },        ],      },    ],  },];

Teatree树视图纯粹是数据的功能。如果要更改树视图(例如,切换子代,隐藏节点等),则应修改数据对象。NodeToggle和NodeName可以用自己的组件替换,并分别传递到node-toggle和node-name插槽中。

NodeType

Teatree接受NodeType数组作为其根属性。这意味着可以在树视图中渲染多个根。

interface NodeType {  // show: 切换此选项将显示/隐藏节点及其子节点  show: boolean;  // showChildren: 切换此操作将切换其子级  showChildren: boolean;  // selected: 切换此选项将应用“选中的” CSS样式  selected: boolean;  // children: 子代还必须符合节点规范  children: Array;  // name: 节点名称  name: string;  // icon: base64编码的图标(可选)  icon?: string;  data?: object;}

NodeToggle

它是用于渲染节点切换的预构建组件。如果想实现自己的代码,可以看一下源代码!

  • 属性
84fe35957ccbe4d9f1472c499c8042b7.png

NodeName

cd674801dfcb459fe692f6fcf4df532c.png

样式

默认导入

@import "~vue-teatree/build/Teatree.css"

Teatree

.teatree {  cursor: pointer;  height: 100%;  overflow: hidden;}.teatree-node {  padding-right: 0.25rem;}.teatree-node-item {  display: flex;  align-items: center;  height: 1.5rem;  background: transparent;  /* hack to make hover the full width of parent */  padding-left: 100%;  margin-left: -100%;  padding-right: 100%;  margin-right: -100%;}.teatree-node-item:hover {  background-color: #718096;}.teatree-node-item-selected {  background-color: #718096;}.teatree-node-item-name-padded-leaf {  padding-left: 1.25rem;}

NodeToggle

.teatree-node-item-icon {  display: flex;  align-items: center;  margin-left: 0.5rem;  color: #cbd5e0;}

NodeName

.teatree-node-item-name {  display: inline-block;  font-size: 0.875rem;  color: #a0aec0;  margin-left: 0.5rem;  user-select: none;  /* truncate */  overflow: hidden;  text-overflow: ellipsis;  white-space: nowrap;}.teatree-node-item-name-padded {  padding-left: 1.5rem;}

显示右键菜单

可以参考:https://github.com/rawilk/vue-context
export default class MyComponent extends Vue {  handleNodeRightClick(node: NodeType, event: any) {    this.$refs.menu.open(event, node);  }}

使用handleNodeRightClick组件prop调用上下文菜单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值