Skip to content

Commit 31430f5

Browse files
webvs2yangtangjinzhou
authored
feat: cascader add tagRender slot (#5954)
* Cascader :修复 tagRender 选项,并添加demo 🐛 📝 Cascader: Fix the tagRender option and add Demo 🐛 📝 * 修改 test 中等待时机 * Update index.tsx * Update index.test.js Co-authored-by: yang <[email protected]> Co-authored-by: tangjinzhou <[email protected]>
1 parent c2b197a commit 31430f5

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

components/cascader/demo/index.vue

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<fields-name />
1313
<suffix />
1414
<multipleVue />
15+
<tagRender />
1516
</demo-sort>
1617
</template>
1718
<script>
@@ -27,6 +28,7 @@ import Size from './size.vue';
2728
import FieldsName from './fields-name.vue';
2829
import Suffix from './suffix.vue';
2930
import multipleVue from './multiple.vue';
31+
import tagRender from './tagRender.vue';
3032
3133
import CN from '../index.zh-CN.md';
3234
import US from '../index.en-US.md';
@@ -47,6 +49,7 @@ export default defineComponent({
4749
FieldsName,
4850
Suffix,
4951
multipleVue,
52+
tagRender,
5053
},
5154
});
5255
</script>
+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<docs>
2+
---
3+
order: 10
4+
title:
5+
zh-CN: 自定义 tag 内容
6+
en-US: The custom tag
7+
---
8+
9+
</docs>
10+
11+
<template>
12+
<a-cascader
13+
v-model:value="value"
14+
multiple
15+
:options="options"
16+
placeholder="Please select"
17+
suffix-icon="Shopping Around"
18+
>
19+
<template #tagRender="data">
20+
<a-tag :key="data.value" color="blue">{{ data.label }}</a-tag>
21+
</template>
22+
</a-cascader>
23+
</template>
24+
<script lang="ts">
25+
import { defineComponent, ref } from 'vue';
26+
import type { CascaderProps } from 'ant-design-vue';
27+
const options: CascaderProps['options'] = [
28+
{
29+
value: 'zhejiang',
30+
label: 'Zhejiang',
31+
children: [
32+
{
33+
value: 'freezeKey',
34+
label: 'freeze',
35+
children: [
36+
{
37+
value: 'key1',
38+
label: 'salmon',
39+
},
40+
{
41+
value: 'key2',
42+
label: 'beef',
43+
},
44+
],
45+
},
46+
{
47+
value: 'fruitsKey',
48+
label: 'fruits',
49+
children: [
50+
{
51+
value: 'key11',
52+
label: 'apple',
53+
},
54+
{
55+
value: 'key22',
56+
label: 'banana',
57+
},
58+
],
59+
},
60+
],
61+
},
62+
{
63+
value: 'Chinese delicious food',
64+
label: '中国美食',
65+
children: [
66+
{
67+
value: 'key3',
68+
label: '月饼',
69+
children: [
70+
{
71+
value: 'key4',
72+
label: '蛋黄馅',
73+
},
74+
{
75+
value: 'key5',
76+
label: '五仁馅',
77+
},
78+
],
79+
},
80+
],
81+
},
82+
];
83+
export default defineComponent({
84+
setup() {
85+
return {
86+
value: ref<string[]>([]),
87+
options,
88+
};
89+
},
90+
});
91+
</script>

components/cascader/index.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ const Cascader = defineComponent({
281281
...slots,
282282
checkable: () => <span class={`${cascaderPrefixCls.value}-checkbox-inner`} />,
283283
}}
284+
tagRender={props.tagRender || slots.tagRender}
284285
displayRender={props.displayRender || slots.displayRender}
285286
maxTagPlaceholder={props.maxTagPlaceholder || slots.maxTagPlaceholder}
286287
showArrow={props.showArrow}

0 commit comments

Comments
 (0)