Skip to content

Commit

Permalink
fix(pro:search): rest count should hide when no item is overflowed (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
sallerli1 committed Nov 6, 2023
1 parent bb75c13 commit a436e92
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 14 deletions.
5 changes: 4 additions & 1 deletion packages/components/_private/overflow/src/Item.tsx
Expand Up @@ -5,7 +5,7 @@
* found in the LICENSE file at https://github.com/IDuxFE/idux/blob/main/LICENSE
*/

import { defineComponent, ref } from 'vue'
import { defineComponent, onUnmounted, ref } from 'vue'

import { useResizeObserver } from '@idux/cdk/resize'
import { callEmit } from '@idux/cdk/utils'
Expand All @@ -19,6 +19,9 @@ export default defineComponent({
const itemElRef = ref<HTMLElement | undefined>()
const handleResize = (entry: ResizeObserverEntry) => callEmit(props.onSizeChange, entry, props.itemKey ?? '')
useResizeObserver(itemElRef, handleResize)
onUnmounted(() => {
callEmit(props.onSizeChange, undefined, props.itemKey ?? '')
})

return () => {
return (
Expand Down
16 changes: 6 additions & 10 deletions packages/components/_private/overflow/src/Overflow.tsx
Expand Up @@ -142,7 +142,7 @@ export default defineComponent({
class={`${mergedPrefixCls.value}-rest`}
itemKey={restNodeKey}
display={displayRest.value}
onSizeChange={({ contentRect }) => (restWidth.value = contentRect.width ?? 0)}
onSizeChange={entry => (restWidth.value = entry?.contentRect.width ?? 0)}
>
{nodeContent}
</Item>
Expand All @@ -156,7 +156,7 @@ export default defineComponent({
{...itemSharedProps}
class={`${mergedPrefixCls.value}-suffix`}
itemKey={suffixNodeKey}
onSizeChange={({ contentRect }) => (suffixWidth.value = contentRect.width ?? 0)}
onSizeChange={entry => (suffixWidth.value = entry?.contentRect.width ?? 0)}
>
{nodeContent}
</Item>
Expand Down Expand Up @@ -199,15 +199,11 @@ const useContainerSize = (containerElRef: Ref<HTMLElement | undefined>) => {

const useItemSize = () => {
const itemsWidthMap = ref<Map<VKey, number>>(new Map())
const setItemWidth = (key: VKey, entry: ResizeObserverEntry) => {
const {
contentRect: { width },
target,
} = entry
if (!target && itemsWidthMap.value.get(key)) {
const setItemWidth = (key: VKey, entry?: ResizeObserverEntry) => {
if (!entry?.target && itemsWidthMap.value.get(key)) {
itemsWidthMap.value.delete(key)
} else if (width) {
itemsWidthMap.value.set(key, width)
} else if (entry?.contentRect.width) {
itemsWidthMap.value.set(key, entry.contentRect.width)
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/components/_private/overflow/src/types.ts
Expand Up @@ -29,7 +29,7 @@ export const overflowItemProps = {
required: true,
},
data: Object as PropType<ItemData>,
onSizeChange: Function as PropType<(entry: ResizeObserverEntry, key?: VKey) => void>,
onSizeChange: Function as PropType<(entry: ResizeObserverEntry | undefined, key?: VKey) => void>,
} as const

export const overflowProps = {
Expand Down
4 changes: 4 additions & 0 deletions packages/pro/search/src/ProSearch.tsx
Expand Up @@ -182,6 +182,10 @@ export default defineComponent({
rest: (rest: (SearchItem | typeof nameSelectOverflowItemKey)[]) => {
const restItems = rest.filter(item => item !== nameSelectOverflowItemKey)

if (!restItems.length) {
return
}

return (
<span class={`${prefixCls}-search-item ${prefixCls}-search-item-tag`}>
{slots.overflowedLabel?.(restItems) ?? `+ ${restItems.length}`}
Expand Down
3 changes: 1 addition & 2 deletions packages/pro/search/src/components/segment/SegmentInput.tsx
Expand Up @@ -96,7 +96,7 @@ export default defineComponent({
const { class: className, style, ...rest } = attrs

return (
<span ref={segmentWrapperRef} class={normalizeClass([classes.value, className])}>
<span ref={segmentWrapperRef} class={normalizeClass([classes.value, className])} style={style as CSSProperties}>
<span
v-show={props.ellipsis && leftSideEllipsis.value}
class={`${prefixCls}-ellipsis-left`}
Expand All @@ -107,7 +107,6 @@ export default defineComponent({
<input
ref={segmentInputRef}
class={`${prefixCls}-inner`}
style={style as CSSProperties}
value={input.value ?? ''}
disabled={props.disabled}
placeholder={props.placeholder}
Expand Down

0 comments on commit a436e92

Please sign in to comment.