# TreeSelect ### Intro Used to select from a set of related data sets. ### Install Register component globally via `app.use`, refer to [Component Registration](#/en-US/advanced-usage#zu-jian-zhu-ce) for more registration ways. ```js import { createApp } from 'vue'; import { TreeSelect } from 'vant'; const app = createApp(); app.use(TreeSelect); ``` ## Usage ### Radio Mode ```html ``` ```js 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 ```html ``` ```js 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 ```html ``` ```js import { ref } from 'vue'; export default { setup() { const activeIndex = ref(0); return { activeIndex, items: [{ text: 'Group 1' }, { text: 'Group 2' }], }; }, }; ``` ### Show Badge ```html ``` ```js 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. ```js [ { // 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](#/en-US/config-provider). | 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_ | - |