From 60577d6720fd3f8d4d1a88b20ab902d6161a0eec Mon Sep 17 00:00:00 2001 From: 无木 <netfan@foxmail.com> Date: 星期三, 11 八月 2021 17:59:07 +0800 Subject: [PATCH] feat(tree): add searchable function --- src/components/Tree/src/Tree.vue | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue index 1af3bf8..9b9efb6 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/Tree.vue @@ -42,7 +42,14 @@ name: 'BasicTree', inheritAttrs: false, props: basicProps, - emits: ['update:expandedKeys', 'update:selectedKeys', 'update:value', 'change', 'check'], + emits: [ + 'update:expandedKeys', + 'update:selectedKeys', + 'update:value', + 'change', + 'check', + 'update:searchValue', + ], setup(props, { attrs, slots, emit, expose }) { const state = reactive<State>({ checkStrictly: props.checkStrictly, @@ -192,7 +199,14 @@ state.checkStrictly = strictly; } + const searchText = ref(''); + watchEffect(() => { + if (props.searchValue !== searchText.value) searchText.value = props.searchValue; + }); + function handleSearch(searchValue: string) { + if (searchValue !== searchText.value) searchText.value = searchValue; + emit('update:searchValue', searchValue); if (!searchValue) { searchState.startSearch = false; return; @@ -293,6 +307,12 @@ filterByLevel: (level: number) => { state.expandedKeys = filterByLevel(level); }, + setSearchValue: (value: string) => { + handleSearch(value); + }, + getSearchValue: () => { + return searchText.value; + }, }; expose(instance); @@ -380,6 +400,7 @@ helpMessage={helpMessage} onStrictlyChange={onStrictlyChange} onSearch={handleSearch} + searchText={unref(searchText)} > {extendSlots(slots)} </TreeHeader> -- Gitblit v1.8.0