mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-05 19:41:42 +08:00
5.1 KiB
5.1 KiB
TreeSelect
Intro
Used to select from a set of related data sets.
Install
Register component globally via app.use
, refer to Component Registration for more registration ways.
import { createApp } from 'vue';
import { TreeSelect } from 'vant';
const app = createApp();
app.use(TreeSelect);
Usage
Radio Mode
<van-tree-select
v-model:active-id="activeId"
v-model:main-active-index="activeIndex"
:items="items"
/>
import { ref } from 'vue';
export default {
setup() {
const activeId = ref(1);
const activeIndex = ref(0);
const items = [
{
text: 'Group 1',
children: [
{ text: 'Delaware', id: 1 },
{ text: 'Florida', id: 2 },
],
},
{
text: 'Group 2',
children: [
{ text: 'Alabama', id: 5 },
{ text: 'Kansas', id: 6 },
],
},
];
return {
items,
activeId,
activeIndex,
};
},
};
Multiple Mode
<van-tree-select
v-model:active-id="activeIds"
v-model:main-active-index="activeIndex"
:items="items"
/>
import { ref } from 'vue';
export default {
setup() {
const activeId = ref([1, 2]);
const activeIndex = ref(0);
const items = [
{
text: 'Group 1',
children: [
{ text: 'Delaware', id: 1 },
{ text: 'Florida', id: 2 },
],
},
{
text: 'Group 2',
children: [
{ text: 'Alabama', id: 5 },
{ text: 'Kansas', id: 6 },
],
},
];
return {
items,
activeId,
activeIndex,
};
},
};
Custom Content
<van-tree-select
v-model:main-active-index="activeIndex"
height="55vw"
:items="items"
>
<template #content>
<van-image
v-if="activeIndex === 0"
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>
</van-tree-select>
import { ref } from 'vue';
export default {
setup() {
const activeIndex = ref(0);
return {
activeIndex,
items: [{ text: 'Group 1' }, { text: 'Group 2' }],
};
},
};
Show Badge
<van-tree-select
v-model:main-active-index="activeIndex"
height="55vw"
:items="items"
/>
import { ref } from 'vue';
export default {
setup() {
const activeIndex = ref(0);
return {
activeIndex,
items: [
{ text: 'Group 1', children: [], dot: true },
{ text: 'Group 2', children: [], badge: 5 },
],
};
},
};
API
Props
Attribute | Description | Type | Default |
---|---|---|---|
items | Required datasets for the component | TreeSelectItem[] | [] |
height | Height | number | string | 300 |
main-active-index | The index of selected parent node | number | string | 0 |
active-id | Id of selected item | number | string | (number | string)[] |
0 |
max | Maximum number of selected items | number | string | Infinity |
selected-icon | Selected icon | string | success |
Events
Event | Description | Arguments |
---|---|---|
click-nav | Emitted when parent node is selected | index: number |
click-item | Emitted when item is selected | item: TreeSelectChild |
Slots
Name | Description |
---|---|
content | Custom right content |
Data Structure of TreeSelectItem
TreeSelectItem
should be an array contains specified tree objects.
In every tree object, text
property defines id
stands for the unique key while the children
contains sub-tree objects.
[
{
// name of the parent node
text: 'Group 1',
// badge
badge: 3,
// Whether to show red dot
dot: true,
// ClassName of parent node
className: 'my-class',
// leaves of this parent node
children: [
{
// name of the leaf node
text: 'Washington',
// id of the leaf node, component highlights leaf node by comparing the activeId with this.
id: 1,
// disable options
disabled: true,
},
{
text: 'Baltimore',
id: 2,
},
],
},
];
CSS Variables
The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.
Name | Default Value | Description |
---|---|---|
--van-tree-select-font-size | var(--van-font-size-md) | - |
--van-tree-select-nav-background-color | var(--van-background-color) | - |
--van-tree-select-content-background-color | var(--van-white) | - |
--van-tree-select-nav-item-padding | 14px var(--van-padding-sm) | - |
--van-tree-select-item-height | 48px | - |
--van-tree-select-item-active-color | var(--van-danger-color) | - |
--van-tree-select-item-disabled-color | var(--van-gray-5) | - |
--van-tree-select-item-selected-size | 16px | - |