From 708f1f76beaa6efac2f2cd8e094229b8172db07d Mon Sep 17 00:00:00 2001 From: saller Date: Tue, 11 Jun 2024 22:24:14 +0800 Subject: [PATCH] fix(pro:search): selecting option after remote search overides value (#1935) --- .../pro/search/src/segments/CreateSelectSegment.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/pro/search/src/segments/CreateSelectSegment.tsx b/packages/pro/search/src/segments/CreateSelectSegment.tsx index 1b3696451..a0f2fe5a5 100644 --- a/packages/pro/search/src/segments/CreateSelectSegment.tsx +++ b/packages/pro/search/src/segments/CreateSelectSegment.tsx @@ -70,7 +70,7 @@ export function createSelectSegment( name: 'select', inputClassName: [`${prefixCls}-select-segment-input`], containerClassName: [`${prefixCls}-select-segment-container`], - parse: input => parseInput(input, config, locale.allSelected), + parse: (input, _, getCacheData) => parseInput(input, config, locale.allSelected, getCacheData), format: (value, states, getCacheData, setCacheData) => formatValue(value, states, getCacheData, setCacheData, config, locale.allSelected), panelRenderer, @@ -81,14 +81,18 @@ function parseInput( input: string, config: SelectSearchField['fieldConfig'], allSelected: string, + getCacheData: (dataKey: string) => any, ): VKey | VKey[] | undefined { const { concludeAllSelected, separator, dataSource, multiple } = config const trimedInput = input.trim() + const cachedData = getCacheData(dataSourceCacheKey) + const mergedDataSource = cachedData ? mergeData(cachedData, dataSource) : dataSource + const keys = concludeAllSelected && trimedInput === allSelected - ? dataSource.map(data => data.key) - : getKeyByLabels(dataSource, trimedInput.split(separator ?? defaultSeparator)) + ? mergedDataSource.map(data => data.key) + : getKeyByLabels(mergedDataSource, trimedInput.split(separator ?? defaultSeparator)) return multiple ? (keys.length > 0 ? keys : undefined) : keys[0] }