From 8d2f08108b89d8fe0318d8bccd6d7b5e1f6bd6f9 Mon Sep 17 00:00:00 2001 From: Xiao <120718501+xiaowhang@users.noreply.github.com> Date: Wed, 7 May 2025 18:02:28 +0800 Subject: [PATCH] fix(components): [popper] fix arrow overflow issue (#20049) * fix(components): [popper] fix arrow overflow issue Add popperArrowProp to popperContentProps to ensure usePopper correctly applies arrow options, preventing the arrow from overflowing the popper container edges. * fix(components): [popper] change arrowOffset to ref for reactivity * feat(components): [tooltip] add arrow-offset property - Allow users to control the padding of the tooltip arrow - Prevents the arrow from touching the popper's edge Reference: https://popper.js.org/docs/v2/modifiers/arrow/#padding * fix(components): [popper] add reactive watch for arrowOffset prop * feat(components): [popper] remove unused arrowOffset prop Removes unused arrowOffset prop and related logic - Removes arrowOffset from PopperContentInjectionContext - Removes arrowOffset prop watching and state management - Cleans up related test cases * docs(components): [tooltip] update version requirement update version requirement for arrow-offset prop * docs(components): [tooltip] update `arrow-offset` version * Update docs/en-US/component/tooltip.md Co-authored-by: kooriookami <38392315+kooriookami@users.noreply.github.com> --------- Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> Co-authored-by: kooriookami <38392315+kooriookami@users.noreply.github.com> --- docs/en-US/component/tooltip.md | 1 + packages/components/popper/__tests__/arrow.test.tsx | 13 ------------- packages/components/popper/src/arrow.vue | 13 ++----------- .../popper/src/composables/use-content.ts | 2 +- packages/components/popper/src/constants.ts | 1 - packages/components/popper/src/content.ts | 2 ++ packages/components/popper/src/content.vue | 12 +----------- packages/components/tooltip/src/content.vue | 1 + packages/components/tooltip/src/tooltip.vue | 3 ++- 9 files changed, 10 insertions(+), 38 deletions(-) diff --git a/docs/en-US/component/tooltip.md b/docs/en-US/component/tooltip.md index d07cd03228..b76aa4f5bb 100644 --- a/docs/en-US/component/tooltip.md +++ b/docs/en-US/component/tooltip.md @@ -173,6 +173,7 @@ tooltip/append-to | offset | offset of the Tooltip | ^[number] | 12 | | transition | animation name | ^[string] | — | | popper-options | [popper.js](https://popper.js.org/docs/v2/) parameters | ^[object]refer to [popper.js](https://popper.js.org/docs/v2/) doc | {} | +| arrow-offset ^(2.9.10) | Controls the offset (padding) of the tooltip’s arrow relative to the popper. | ^[number] | 5 | | show-after | delay of appearance, in millisecond | ^[number] | 0 | | show-arrow | whether the tooltip content has an arrow | ^[boolean] | true | | hide-after | delay of disappear, in millisecond | ^[number] | 200 | diff --git a/packages/components/popper/__tests__/arrow.test.tsx b/packages/components/popper/__tests__/arrow.test.tsx index 29d70064bb..7f8dcef99d 100644 --- a/packages/components/popper/__tests__/arrow.test.tsx +++ b/packages/components/popper/__tests__/arrow.test.tsx @@ -9,7 +9,6 @@ import type { PopperArrowInstance } from '../src/arrow' const popperContentInjection = { arrowRef: ref(null), - arrowOffset: ref(0), } const mountArrow = () => @@ -32,22 +31,10 @@ describe('', () => { afterEach(() => { wrapper?.unmount() popperContentInjection.arrowRef.value = null - popperContentInjection.arrowOffset.value = 0 }) it('should set the arrowRef after mounted', async () => { expect(popperContentInjection.arrowRef.value).toBe(wrapper.vm.arrowRef) - expect(popperContentInjection.arrowOffset.value).toBe(0) - }) - - it('should update the offset after props changed', async () => { - expect(popperContentInjection.arrowOffset.value).toBe(0) - - await wrapper.setProps({ - arrowOffset: 10, - }) - - expect(popperContentInjection.arrowOffset.value).toBe(10) }) it('should unset arrowRef before unmount', async () => { diff --git a/packages/components/popper/src/arrow.vue b/packages/components/popper/src/arrow.vue index f6929369e0..3dd69f5d55 100644 --- a/packages/components/popper/src/arrow.vue +++ b/packages/components/popper/src/arrow.vue @@ -8,30 +8,21 @@