110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
| <docs>
 | ||
| ---
 | ||
| order: 5
 | ||
| title:
 | ||
|   zh-CN: 连接线
 | ||
|   en-US: Tree With Line
 | ||
| ---
 | ||
| 
 | ||
| ## zh-CN
 | ||
| 
 | ||
| 节点之间带连接线的树,常用于文件目录结构展示。使用 `showLine` 开启,可以用 `switcherIcon` 修改默认图标。
 | ||
| 
 | ||
| ## en-US
 | ||
| 
 | ||
| Tree with connected line between nodes, turn on by `showLine`, customize the preseted icon by `switcherIcon`.
 | ||
| 
 | ||
| </docs>
 | ||
| 
 | ||
| <template>
 | ||
|   <div>
 | ||
|     <div style="margin-bottom: 16px">
 | ||
|       showLine:
 | ||
|       <a-switch v-model:checked="showLine" />
 | ||
|       <br />
 | ||
|       <br />
 | ||
|       showIcon:
 | ||
|       <a-switch v-model:checked="showIcon" />
 | ||
|     </div>
 | ||
|     <a-tree
 | ||
|       :show-line="showLine"
 | ||
|       :show-icon="showIcon"
 | ||
|       :default-expanded-keys="['0-0-0']"
 | ||
|       :tree-data="treeData"
 | ||
|       @select="onSelect"
 | ||
|     >
 | ||
|       <template #icon><carry-out-outlined /></template>
 | ||
|       <template #title="{ dataRef }">
 | ||
|         <template v-if="dataRef.key === '0-0-0-1'">
 | ||
|           <div>multiple line title</div>
 | ||
|           <div>multiple line title</div>
 | ||
|         </template>
 | ||
|         <template v-else>{{ dataRef.title }}</template>
 | ||
|       </template>
 | ||
|       <template #switcherIcon="{ dataRef, defaultIcon }">
 | ||
|         <SmileTwoTone v-if="dataRef.key === '0-0-2'" />
 | ||
|         <component :is="defaultIcon" v-else />
 | ||
|       </template>
 | ||
|     </a-tree>
 | ||
|   </div>
 | ||
| </template>
 | ||
| <script lang="ts" setup>
 | ||
| import { ref } from 'vue';
 | ||
| import { CarryOutOutlined, SmileTwoTone } from '@ant-design/icons-vue';
 | ||
| import type { TreeProps } from 'ant-design-vue';
 | ||
| const showLine = ref<boolean>(true);
 | ||
| const showIcon = ref<boolean>(false);
 | ||
| const treeData = ref<TreeProps['treeData']>([
 | ||
|   {
 | ||
|     title: 'parent 1',
 | ||
|     key: '0-0',
 | ||
|     children: [
 | ||
|       {
 | ||
|         title: 'parent 1-0',
 | ||
|         key: '0-0-0',
 | ||
|         children: [
 | ||
|           { title: 'leaf', key: '0-0-0-0' },
 | ||
|           {
 | ||
|             key: '0-0-0-1',
 | ||
|           },
 | ||
|           { title: 'leaf', key: '0-0-0-2' },
 | ||
|         ],
 | ||
|       },
 | ||
|       {
 | ||
|         title: 'parent 1-1',
 | ||
|         key: '0-0-1',
 | ||
|         children: [{ title: 'leaf', key: '0-0-1-0' }],
 | ||
|       },
 | ||
|       {
 | ||
|         title: 'parent 1-2',
 | ||
|         key: '0-0-2',
 | ||
|         children: [
 | ||
|           { title: 'leaf 1', key: '0-0-2-0' },
 | ||
|           {
 | ||
|             title: 'leaf 2',
 | ||
|             key: '0-0-2-1',
 | ||
|           },
 | ||
|         ],
 | ||
|       },
 | ||
|     ],
 | ||
|   },
 | ||
|   {
 | ||
|     title: 'parent 2',
 | ||
|     key: '0-1',
 | ||
|     children: [
 | ||
|       {
 | ||
|         title: 'parent 2-0',
 | ||
|         key: '0-1-0',
 | ||
|         children: [
 | ||
|           { title: 'leaf', key: '0-1-0-0' },
 | ||
|           { title: 'leaf', key: '0-1-0-1' },
 | ||
|         ],
 | ||
|       },
 | ||
|     ],
 | ||
|   },
 | ||
| ]);
 | ||
| const onSelect: TreeProps['onSelect'] = (selectedKeys, info) => {
 | ||
|   console.log('selected', selectedKeys, info);
 | ||
| };
 | ||
| </script>
 |