95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
| <docs>
 | |
| ---
 | |
| order: 0
 | |
| title:
 | |
|   zh-CN: 高亮
 | |
|   en-US: Highlight
 | |
| ---
 | |
| 
 | |
| ## zh-CN
 | |
| 
 | |
| 搜索值高亮
 | |
| 
 | |
| ## en-US
 | |
| 
 | |
| Search Value Hightlight
 | |
| 
 | |
| </docs>
 | |
| 
 | |
| <template>
 | |
|   <a-tree-select
 | |
|     v-model:value="value"
 | |
|     v-model:searchValue="searchValue"
 | |
|     show-search
 | |
|     style="width: 100%"
 | |
|     :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
 | |
|     placeholder="Please select"
 | |
|     allow-clear
 | |
|     tree-default-expand-all
 | |
|     :tree-data="treeData"
 | |
|   >
 | |
|     <template #title="{ value: val, title }">
 | |
|       <b v-if="val === 'parent 1-1'" style="color: #08c">sss</b>
 | |
|       <template v-else>
 | |
|         <template
 | |
|           v-for="(fragment, i) in title
 | |
|             .toString()
 | |
|             .split(new RegExp(`(?<=${searchValue})|(?=${searchValue})`, 'i'))"
 | |
|         >
 | |
|           <span
 | |
|             v-if="fragment.toLowerCase() === searchValue.toLowerCase()"
 | |
|             :key="i"
 | |
|             style="color: #08c"
 | |
|           >
 | |
|             {{ fragment }}
 | |
|           </span>
 | |
|           <template v-else>{{ fragment }}</template>
 | |
|         </template>
 | |
|       </template>
 | |
|     </template>
 | |
|   </a-tree-select>
 | |
| </template>
 | |
| <script lang="ts">
 | |
| import type { TreeSelectProps } from 'ant-design-vue';
 | |
| import { defineComponent, ref, watch } from 'vue';
 | |
| export default defineComponent({
 | |
|   setup() {
 | |
|     const value = ref<string>();
 | |
|     const treeData = ref<TreeSelectProps['treeData']>([
 | |
|       {
 | |
|         title: 'parent 1',
 | |
|         value: 'parent 1',
 | |
|         children: [
 | |
|           {
 | |
|             title: 'parent 1-0',
 | |
|             value: 'parent 1-0',
 | |
|             children: [
 | |
|               {
 | |
|                 title: 'my leaf',
 | |
|                 value: 'leaf1',
 | |
|               },
 | |
|               {
 | |
|                 title: 'your leaf',
 | |
|                 value: 'leaf2',
 | |
|               },
 | |
|             ],
 | |
|           },
 | |
|           {
 | |
|             title: 'parent 1-1',
 | |
|             value: 'parent 1-1',
 | |
|           },
 | |
|         ],
 | |
|       },
 | |
|     ]);
 | |
|     watch(value, () => {
 | |
|       console.log(value.value);
 | |
|     });
 | |
|     return {
 | |
|       searchValue: ref(''),
 | |
|       value,
 | |
|       treeData,
 | |
|     };
 | |
|   },
 | |
| });
 | |
| </script>
 |