From a564dd30a3a73961c0b7f6d8d17949c156bc41b6 Mon Sep 17 00:00:00 2001 From: saller Date: Mon, 28 Aug 2023 10:42:01 +0800 Subject: [PATCH] fix(pro:search): search states should update when field changes (#1662) --- .../pro/search/src/composables/useSegmentStates.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/pro/search/src/composables/useSegmentStates.ts b/packages/pro/search/src/composables/useSegmentStates.ts index e058ed0fa..d1059bcda 100644 --- a/packages/pro/search/src/composables/useSegmentStates.ts +++ b/packages/pro/search/src/composables/useSegmentStates.ts @@ -174,18 +174,26 @@ export function useSegmentStates( } watch( - [activeSegment, () => props.searchItem?.resolvedSearchField], - ([activeSegment, searchField], [preActiveSegment]) => { + () => props.searchItem?.resolvedSearchField, + () => { + initSearchState(props.searchItem!.key) + }, + ) + watch( + activeSegment, + (activeSegment, preActiveSegment) => { if (activeSegment?.itemKey === props.searchItem?.key || preActiveSegment?.itemKey !== props.searchItem?.key) { return } + const searchField = props.searchItem?.resolvedSearchField + if (!searchField) { initSearchState(props.searchItem!.key) return } - const preSegment = props.searchItem?.resolvedSearchField.segments.find(seg => seg.name === preActiveSegment?.name) + const preSegment = searchField.segments.find(seg => seg.name === preActiveSegment?.name) // if current segment has no panel and the whole search item is valid after input // then update search values