mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
feat(TreeSelect): add dot option (#4433)
This commit is contained in:
parent
b1f01c2fb7
commit
b279408e10
@ -64,14 +64,8 @@ export default {
|
|||||||
:main-active-index.sync="activeIndex"
|
:main-active-index.sync="activeIndex"
|
||||||
>
|
>
|
||||||
<template slot="content">
|
<template slot="content">
|
||||||
<van-image
|
<van-image v-if="activeIndex === 0" src="https://img.yzcdn.cn/vant/apple-1.jpg" />
|
||||||
v-if="activeIndex === 0"
|
<van-image v-if="activeIndex === 1" src="https://img.yzcdn.cn/vant/apple-2.jpg" />
|
||||||
src="https://img.yzcdn.cn/vant/apple-1.jpg"
|
|
||||||
/>
|
|
||||||
<van-image
|
|
||||||
v-if="activeIndex === 1"
|
|
||||||
src="https://img.yzcdn.cn/vant/apple-2.jpg"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</van-tree-select>
|
</van-tree-select>
|
||||||
```
|
```
|
||||||
@ -87,6 +81,30 @@ export default {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Show Info
|
||||||
|
|
||||||
|
```html
|
||||||
|
<van-tree-select
|
||||||
|
height="55vw"
|
||||||
|
:items="items"
|
||||||
|
:main-active-index.sync="activeIndex"
|
||||||
|
/>
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeIndex: 0,
|
||||||
|
items: [
|
||||||
|
{ text: 'Group 1', children: [], dot: true },
|
||||||
|
{ text: 'Group 2', children: [], info: 5 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
### Props
|
### Props
|
||||||
@ -125,6 +143,8 @@ In every tree object, `text` property defines `id` stands for the unique key whi
|
|||||||
text: 'Group 1',
|
text: 'Group 1',
|
||||||
// info
|
// info
|
||||||
info: 3,
|
info: 3,
|
||||||
|
// Whether to show red dot
|
||||||
|
dot: true,
|
||||||
// leaves of this parent node
|
// leaves of this parent node
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -70,14 +70,8 @@ export default {
|
|||||||
:main-active-index.sync="activeIndex"
|
:main-active-index.sync="activeIndex"
|
||||||
>
|
>
|
||||||
<template slot="content">
|
<template slot="content">
|
||||||
<van-image
|
<van-image v-if="activeIndex === 0" src="https://img.yzcdn.cn/vant/apple-1.jpg" />
|
||||||
v-if="activeIndex === 0"
|
<van-image v-if="activeIndex === 1" src="https://img.yzcdn.cn/vant/apple-2.jpg" />
|
||||||
src="https://img.yzcdn.cn/vant/apple-1.jpg"
|
|
||||||
/>
|
|
||||||
<van-image
|
|
||||||
v-if="activeIndex === 1"
|
|
||||||
src="https://img.yzcdn.cn/vant/apple-2.jpg"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</van-tree-select>
|
</van-tree-select>
|
||||||
```
|
```
|
||||||
@ -93,6 +87,32 @@ export default {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 提示信息
|
||||||
|
|
||||||
|
设置`dot`属性后,会在图标右上角展示一个小红点。设置`info`属性后,会在图标右上角展示相应的徽标
|
||||||
|
|
||||||
|
```html
|
||||||
|
<van-tree-select
|
||||||
|
height="55vw"
|
||||||
|
:items="items"
|
||||||
|
:main-active-index.sync="activeIndex"
|
||||||
|
/>
|
||||||
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeIndex: 0,
|
||||||
|
items: [
|
||||||
|
{ text: '浙江', children: [], dot: true },
|
||||||
|
{ text: '江苏', children: [], info: 5 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
### Props
|
### Props
|
||||||
@ -129,6 +149,8 @@ export default {
|
|||||||
text: '所有城市',
|
text: '所有城市',
|
||||||
// 导航名称右上角徽标
|
// 导航名称右上角徽标
|
||||||
info: 3,
|
info: 3,
|
||||||
|
// 是否在导航名称右上角显示小红点
|
||||||
|
dot: true,
|
||||||
// 该导航下所有的可选项
|
// 该导航下所有的可选项
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -24,16 +24,22 @@
|
|||||||
</template>
|
</template>
|
||||||
</van-tree-select>
|
</van-tree-select>
|
||||||
</demo-block>
|
</demo-block>
|
||||||
|
|
||||||
|
<demo-block :title="$t('showInfo')">
|
||||||
|
<van-tree-select height="55vw" :items="infoItems" :active-id.sync="activeId2" :main-active-index.sync="activeIndex4" />
|
||||||
|
</demo-block>
|
||||||
</demo-section>
|
</demo-section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { zhCNData } from './data.zh-CN';
|
import { zhCNData } from './data.zh-CN';
|
||||||
import { enUSData } from './data.en-US';
|
import { enUSData } from './data.en-US';
|
||||||
|
import { deepClone } from '../../utils/deep-clone';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
i18n: {
|
i18n: {
|
||||||
'zh-CN': {
|
'zh-CN': {
|
||||||
|
showInfo: '提示信息',
|
||||||
radioMode: '单选模式',
|
radioMode: '单选模式',
|
||||||
multipleMode: '多选模式',
|
multipleMode: '多选模式',
|
||||||
customContent: '自定义内容',
|
customContent: '自定义内容',
|
||||||
@ -41,6 +47,7 @@ export default {
|
|||||||
dataSimple: [{ text: '分组 1' }, { text: '分组 2' }]
|
dataSimple: [{ text: '分组 1' }, { text: '分组 2' }]
|
||||||
},
|
},
|
||||||
'en-US': {
|
'en-US': {
|
||||||
|
showInfo: 'Show Info',
|
||||||
radioMode: 'Radio Mode',
|
radioMode: 'Radio Mode',
|
||||||
multipleMode: 'Multiple Mode',
|
multipleMode: 'Multiple Mode',
|
||||||
customContent: 'Custom Content',
|
customContent: 'Custom Content',
|
||||||
@ -56,7 +63,8 @@ export default {
|
|||||||
activeIds: [1, 2],
|
activeIds: [1, 2],
|
||||||
activeIndex: 0,
|
activeIndex: 0,
|
||||||
activeIndex2: 0,
|
activeIndex2: 0,
|
||||||
activeIndex3: 0
|
activeIndex3: 0,
|
||||||
|
activeIndex4: 0
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -67,6 +75,15 @@ export default {
|
|||||||
|
|
||||||
simpleItems() {
|
simpleItems() {
|
||||||
return this.$t('dataSimple');
|
return this.$t('dataSimple');
|
||||||
|
},
|
||||||
|
|
||||||
|
infoItems() {
|
||||||
|
const data = deepClone(this.$t('data')).slice(0, 2);
|
||||||
|
|
||||||
|
data[0].dot = true;
|
||||||
|
data[1].info = 5;
|
||||||
|
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -10,6 +10,7 @@ import { DefaultSlots, ScopedSlot } from '../utils/types';
|
|||||||
|
|
||||||
export type TreeSelectItem = {
|
export type TreeSelectItem = {
|
||||||
text: string;
|
text: string;
|
||||||
|
dot?: boolean;
|
||||||
info?: string | number;
|
info?: string | number;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
children: TreeSelectChildren[];
|
children: TreeSelectChildren[];
|
||||||
@ -57,6 +58,7 @@ function TreeSelect(
|
|||||||
|
|
||||||
const Navs = items.map(item => (
|
const Navs = items.map(item => (
|
||||||
<SidebarItem
|
<SidebarItem
|
||||||
|
dot={item.dot}
|
||||||
info={item.info}
|
info={item.info}
|
||||||
title={item.text}
|
title={item.text}
|
||||||
disabled={item.disabled}
|
disabled={item.disabled}
|
||||||
|
@ -71,5 +71,23 @@ exports[`renders demo correctly 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="van-tree-select" style="height: 55vw;">
|
||||||
|
<div class="van-sidebar van-tree-select__nav"><a class="van-sidebar-item van-sidebar-item--select van-tree-select__nav-item">
|
||||||
|
<div class="van-sidebar-item__text">浙江<div class="van-info van-info--dot van-sidebar-item__info"></div>
|
||||||
|
</div>
|
||||||
|
</a><a class="van-sidebar-item van-tree-select__nav-item">
|
||||||
|
<div class="van-sidebar-item__text">江苏<div class="van-info van-sidebar-item__info">5</div>
|
||||||
|
</div>
|
||||||
|
</a></div>
|
||||||
|
<div class="van-tree-select__content">
|
||||||
|
<div class="van-ellipsis van-tree-select__item van-tree-select__item--active">杭州<i class="van-icon van-icon-checked van-tree-select__selected" style="font-size: 16px;">
|
||||||
|
<!----></i></div>
|
||||||
|
<div class="van-ellipsis van-tree-select__item">温州</div>
|
||||||
|
<div class="van-ellipsis van-tree-select__item van-tree-select__item--disabled">宁波</div>
|
||||||
|
<div class="van-ellipsis van-tree-select__item">义乌</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user