File tree Expand file tree Collapse file tree 5 files changed +78
-1
lines changed Expand file tree Collapse file tree 5 files changed +78
-1
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,7 @@ override-click-behavior.vue
55
55
| expand-on-dragenter | ` boolean ` | ` true ` | Whether to expand nodes after dragenter. | |
56
56
| expand-on-click | ` boolean ` | ` false ` | Whether to expand or collapse nodes after click. | 2.29.1 |
57
57
| expanded-keys | ` Array<string \| number> ` | ` undefined ` | If set, expanded status will work in controlled manner. | |
58
+ | ellipsis | ` boolean ` | ` false ` | Whether to ellipsis the text that exceeds the width. | |
58
59
| filter | ` (pattern: string, node: TreeOption) => boolean ` | A simple string based filter. | The function that filter tree nodes based on pattern. | |
59
60
| get-children | ` (option: any) => unknown ` | ` undefined ` | Get children of the option. | 2.34.3 |
60
61
| indent | ` number ` | ` 24 ` | Indent of per level of the tree. | 2.9.0 |
Original file line number Diff line number Diff line change
1
+ <markdown >
2
+ # 省略
3
+
4
+ 有时候节点的文本会很长,可以使用 `ellipsis` 来省略文本。
5
+ </markdown >
6
+
7
+ <script lang="ts">
8
+ import type { TreeOption } from ' naive-ui'
9
+ import { repeat } from ' seemly'
10
+ import { defineComponent , ref } from ' vue'
11
+
12
+ function createData(level = 4 , baseKey = ' ' ): TreeOption [] | undefined {
13
+ if (! level )
14
+ return undefined
15
+ return repeat (6 - level , undefined ).map ((_ , index ) => {
16
+ const key = ` ${baseKey }${level }${index } `
17
+ const label = createLabel (level )
18
+ return {
19
+ label ,
20
+ key ,
21
+ children: createData (level - 1 , key )
22
+ }
23
+ })
24
+ }
25
+
26
+ function createLabel(level : number ): string {
27
+ if (level === 4 )
28
+ return ' 站在能分割世界的桥 还是看不清 在那些时刻 遮蔽我们 黑暗的心 究竟是什么'
29
+ if (level === 3 )
30
+ return ' 住在我心里孤独的 孤独的海怪 痛苦之王 开始厌倦 深海的光 停滞的海浪 你的心里 有没有一点点想念我'
31
+ if (level === 2 )
32
+ return ' 站在能看到灯火的桥 还是看不清 在那些夜晚 照亮我们 黑暗的心 究竟是什么'
33
+ if (level === 1 )
34
+ return ' 于是他默默追逐着 横渡海峡 年轻的人 看着他们 为了彼岸 骄傲的 骄傲的 灭亡'
35
+ return ' '
36
+ }
37
+
38
+ export default defineComponent ({
39
+ setup() {
40
+ return {
41
+ data: createData (),
42
+ defaultExpandedKeys: ref ([' 40' , ' 41' ])
43
+ }
44
+ }
45
+ })
46
+ </script >
47
+
48
+ <template >
49
+ <n-tree
50
+ ellipsis
51
+ :data =" data"
52
+ :default-expanded-keys =" defaultExpandedKeys"
53
+ :selectable =" false"
54
+ />
55
+ </template >
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ node-props.vue
24
24
show-line.vue
25
25
checkbox-placement.vue
26
26
override-click-behavior.vue
27
+ ellipsis.vue
27
28
check-strategy-debug.vue
28
29
change-debug.vue
29
30
scrollbar-debug.vue
@@ -58,6 +59,7 @@ expand-debug.vue
58
59
| default-expanded-keys | ` Array<string \| number> ` | ` [] ` | 默认展开项 | |
59
60
| default-selected-keys | ` Array<string \| number> ` | ` [] ` | 默认选中的节点 | |
60
61
| draggable | ` boolean ` | ` false ` | 是否可拖拽 | |
62
+ | ellipsis | ` boolean ` | ` false ` | 是否省略超出宽度的文本 | |
61
63
| expand-on-dragenter | ` boolean ` | ` true ` | 是否在拖入后展开节点 | |
62
64
| expand-on-click | ` boolean ` | ` false ` | 是否在点击节点后展开或收缩节点 | 2.29.1 |
63
65
| expanded-keys | ` Array<string \| number> ` | ` undefined ` | 如果设定则展开受控 | |
Original file line number Diff line number Diff line change @@ -274,6 +274,10 @@ export const treeProps = {
274
274
type : Boolean ,
275
275
default : true
276
276
} ,
277
+ ellipsis : {
278
+ type : Boolean ,
279
+ default : false
280
+ } ,
277
281
checkboxPlacement : {
278
282
type : String as PropType < 'left' | 'right' > ,
279
283
default : 'left'
@@ -1748,6 +1752,7 @@ export default defineComponent({
1748
1752
blockLine,
1749
1753
draggable,
1750
1754
disabled,
1755
+ ellipsis,
1751
1756
internalFocusable,
1752
1757
checkable,
1753
1758
handleKeydown,
@@ -1762,7 +1767,8 @@ export default defineComponent({
1762
1767
rtlEnabled && `${ mergedClsPrefix } -tree--rtl` ,
1763
1768
checkable && `${ mergedClsPrefix } -tree--checkable` ,
1764
1769
( blockLine || blockNode ) && `${ mergedClsPrefix } -tree--block-node` ,
1765
- blockLine && `${ mergedClsPrefix } -tree--block-line`
1770
+ blockLine && `${ mergedClsPrefix } -tree--block-line` ,
1771
+ ellipsis && `${ mergedClsPrefix } -tree--ellipsis`
1766
1772
]
1767
1773
const createNode = ( tmNode : TmNode | MotionData ) : VNode => {
1768
1774
return '__motion' in tmNode ? (
Original file line number Diff line number Diff line change @@ -127,6 +127,19 @@ export default cB('tree', `
127
127
` )
128
128
] )
129
129
] ) ,
130
+ cM ( 'ellipsis' , [
131
+ cB ( 'tree-node' , [
132
+ cB ( 'tree-node-content' , `
133
+ overflow: hidden;
134
+ ` , [
135
+ cE ( 'text' , `
136
+ text-overflow: ellipsis;
137
+ white-space: nowrap;
138
+ overflow: hidden;
139
+ ` )
140
+ ] )
141
+ ] )
142
+ ] ) ,
130
143
cB ( 'tree-node-indent' , `
131
144
flex-grow: 0;
132
145
flex-shrink: 0;
You can’t perform that action at this time.
0 commit comments