From b61dc63375da8e9b2201a03aff9fe9bf5f28146e Mon Sep 17 00:00:00 2001 From: Delyan Haralanov Date: Mon, 21 Mar 2022 15:52:58 +0200 Subject: [PATCH] fix(components): [dropdown] ignore show/hide timeouts for click trigger (#6720) --- .../dropdown/__tests__/dropdown.spec.ts | 46 +++++++++++++++++++ packages/components/dropdown/src/dropdown.vue | 4 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/packages/components/dropdown/__tests__/dropdown.spec.ts b/packages/components/dropdown/__tests__/dropdown.spec.ts index eb32c8b552..c1e85158c8 100644 --- a/packages/components/dropdown/__tests__/dropdown.spec.ts +++ b/packages/components/dropdown/__tests__/dropdown.spec.ts @@ -568,4 +568,50 @@ describe('Dropdown', () => { .classes() ).toContain('is-disabled') }) + + test('set show-timeout/hide-timeout when trigger is hover', async () => { + const wrapper = _mount( + ` + + + Dropdown List + + + + `, + () => ({}) + ) + const tooltipElement = wrapper.getComponent({ + name: 'ElTooltip', + }) + expect(tooltipElement.vm.showAfter).toBe(200) + expect(tooltipElement.vm.hideAfter).toBe(300) + }) + + test('ignore show-timeout/hide-timeout when trigger is not hover', async () => { + const wrapper = _mount( + ` + + + Dropdown List + + + + `, + () => ({}) + ) + const tooltipElement = wrapper.getComponent({ + name: 'ElTooltip', + }) + expect(tooltipElement.vm.showAfter).toBe(0) + expect(tooltipElement.vm.hideAfter).toBe(0) + }) }) diff --git a/packages/components/dropdown/src/dropdown.vue b/packages/components/dropdown/src/dropdown.vue index d7ae586b89..e265fffdbd 100644 --- a/packages/components/dropdown/src/dropdown.vue +++ b/packages/components/dropdown/src/dropdown.vue @@ -6,13 +6,13 @@ :fallback-placements="['bottom', 'top']" :popper-options="popperOptions" :gpu-acceleration="false" - :hide-after="hideTimeout" + :hide-after="trigger === 'hover' ? hideTimeout : 0" :manual-mode="true" :placement="placement" :popper-class="[ns.e('popper'), popperClass]" :reference-element="referenceElementRef?.$el" :trigger="trigger" - :show-after="showTimeout" + :show-after="trigger === 'hover' ? showTimeout : 0" :stop-popper-mouse-event="false" :virtual-ref="triggeringElementRef" :virtual-triggering="splitButton"