From c95d59e303190a54c57d76453356e8fb3fcbf578 Mon Sep 17 00:00:00 2001 From: inottn Date: Mon, 31 Jul 2023 21:34:41 +0800 Subject: [PATCH] fix(TextEllipsis): fix the logic of calculating the position of ellipsis (#12137) --- packages/vant/src/text-ellipsis/TextEllipsis.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/vant/src/text-ellipsis/TextEllipsis.tsx b/packages/vant/src/text-ellipsis/TextEllipsis.tsx index c0c05ffe2..da253b3ba 100644 --- a/packages/vant/src/text-ellipsis/TextEllipsis.tsx +++ b/packages/vant/src/text-ellipsis/TextEllipsis.tsx @@ -40,7 +40,7 @@ export default defineComponent({ const root = ref(); const actionText = computed(() => - expanded.value ? props.expandText : props.collapseText, + expanded.value ? props.collapseText : props.expandText, ); const pxToNum = (value: string | null) => { @@ -89,7 +89,7 @@ export default defineComponent({ return dots + content.slice(right, end); } - const middle = Math.round((left + right) >> 1); + const middle = Math.round((left + right) / 2); // Set the interception location if (position === 'end') { @@ -127,21 +127,20 @@ export default defineComponent({ rightPart[1] - rightPart[0] <= 1 ) { return ( - content.slice(0, leftPart[1]) + + content.slice(0, leftPart[0]) + dots + content.slice(rightPart[1], end) ); } - const leftMiddle = Math.floor((leftPart[0] + leftPart[1]) >> 1); - const rightMiddle = Math.ceil((rightPart[0] + rightPart[1]) >> 1); + const leftMiddle = Math.floor((leftPart[0] + leftPart[1]) / 2); + const rightMiddle = Math.ceil((rightPart[0] + rightPart[1]) / 2); container.innerText = props.content.slice(0, leftMiddle) + props.dots + - actionText.value + - props.dots + - props.content.slice(rightMiddle, end); + props.content.slice(rightMiddle, end) + + props.expandText; if (container.offsetHeight >= maxHeight) { return middleTail(