Skip to content

Commit f672f87

Browse files
committed
fix: table ellipsis title not work, close #5755
1 parent d94fe1c commit f672f87

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

components/vc-table/Cell/index.tsx

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import classNames from '../../_util/classNames';
2-
import { flattenChildren, isValidElement, parseStyleText } from '../../_util/props-util';
3-
import type { CSSProperties } from 'vue';
4-
import { computed, defineComponent, isVNode, renderSlot } from 'vue';
2+
import {
3+
filterEmpty,
4+
flattenChildren,
5+
isValidElement,
6+
parseStyleText,
7+
} from '../../_util/props-util';
8+
import type { CSSProperties, VNodeArrayChildren } from 'vue';
9+
import { Text, computed, defineComponent, isVNode, renderSlot } from 'vue';
510

611
import type {
712
DataIndex,
@@ -145,6 +150,18 @@ export default defineComponent<CellProps>({
145150

146151
additionalProps?.onMouseleave?.(event);
147152
};
153+
const getTitle = (vnodes: VNodeArrayChildren) => {
154+
const vnode = filterEmpty(vnodes)[0];
155+
if (isVNode(vnode)) {
156+
if (vnode.type === Text) {
157+
return vnode.children;
158+
} else {
159+
return Array.isArray(vnode.children) ? getTitle(vnode.children) : undefined;
160+
}
161+
} else {
162+
return vnode;
163+
}
164+
};
148165
return () => {
149166
const {
150167
prefixCls,
@@ -298,8 +315,8 @@ export default defineComponent<CellProps>({
298315
if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {
299316
if (typeof childNode === 'string' || typeof childNode === 'number') {
300317
title = childNode.toString();
301-
} else if (isVNode(childNode) && typeof childNode.children === 'string') {
302-
title = childNode.children;
318+
} else if (isVNode(childNode)) {
319+
title = getTitle([childNode]);
303320
}
304321
}
305322

0 commit comments

Comments
 (0)