From 2e8fc9500ed741cb297ea428bf0c0b346607767a Mon Sep 17 00:00:00 2001 From: saller Date: Fri, 3 Nov 2023 14:27:16 +0800 Subject: [PATCH] fix(pro:search): overflowd item count is incorrect (#1732) --- packages/pro/search/src/ProSearch.tsx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/pro/search/src/ProSearch.tsx b/packages/pro/search/src/ProSearch.tsx index ae939429f..0fecad1a5 100644 --- a/packages/pro/search/src/ProSearch.tsx +++ b/packages/pro/search/src/ProSearch.tsx @@ -31,6 +31,8 @@ import { proSearchContext } from './token' import { type SearchItem, proSearchProps } from './types' import { renderIcon } from './utils/RenderIcon' +const nameSelectOverflowItemKey = 'name-select' + export default defineComponent({ name: 'IxProSearch', inheritAttrs: false, @@ -113,7 +115,7 @@ export default defineComponent({ const searchIcon = computed(() => props.searchIcon ?? config.searchIcon) const size = computed(() => props.size ?? config.size) - const allItems = computed(() => [...searchItems.value, 'name-select' as const]) + const allItems = computed(() => [...searchItems.value, nameSelectOverflowItemKey]) const classes = computed(() => { const prefixCls = mergedPrefixCls.value @@ -170,18 +172,22 @@ export default defineComponent({ const prefixCls = mergedPrefixCls.value const overflowSlots = { - item: (item: SearchItem | 'name-select') => { - if (item === 'name-select') { + item: (item: SearchItem | typeof nameSelectOverflowItemKey) => { + if (item === nameSelectOverflowItemKey) { return } return }, - rest: (rest: SearchItem[]) => ( - - {slots.overflowedLabel?.(rest) ?? `+ ${rest.length}`} - - ), + rest: (rest: (SearchItem | typeof nameSelectOverflowItemKey)[]) => { + const restItems = rest.filter(item => item !== nameSelectOverflowItemKey) + + return ( + + {slots.overflowedLabel?.(restItems) ?? `+ ${restItems.length}`} + + ) + }, } const quickSelectOverlaySlots = { @@ -193,7 +199,7 @@ export default defineComponent({ v-slots={overflowSlots} prefixCls={prefixCls} dataSource={allItems.value} - getKey={item => item.key ?? 'name-select'} + getKey={item => item.key ?? nameSelectOverflowItemKey} maxLabel={focused.value ? Number.MAX_SAFE_INTEGER : props.maxLabel} /> {searchStateEmpty.value && !isActive.value && (