Skip to content

Commit 1b467db

Browse files
authored
fix(Drawer): 修复drawer和popover同时使用时,点击popover,drawer意外关闭的问题 (DevCloudFE#1111)
* fix(Drawer): 修复drawer和popover同时使用时,点击popover,drawer意外关闭的问题
1 parent b76c9f8 commit 1b467db

File tree

5 files changed

+29
-18
lines changed

5 files changed

+29
-18
lines changed

packages/devui-vue/devui/drawer/__tests__/drawer.spec.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { mount } from '@vue/test-utils';
22
import { nextTick, ref } from 'vue';
3-
43
import { useNamespace } from '../../shared/hooks/use-namespace';
54
import Drawer from '../src/drawer';
65

@@ -77,7 +76,7 @@ describe('d-drawer', () => {
7776
expect(drawer).toBeTruthy();
7877

7978
// click outside
80-
document.dispatchEvent(new Event('click'));
79+
document.dispatchEvent(new Event('click', { bubbles: true }));
8180
await nextTick();
8281
drawer = getDrawer();
8382
expect(drawer).toBeFalsy();
@@ -164,7 +163,7 @@ describe('d-drawer', () => {
164163
await nextTick();
165164
expect(onOpen).toBeCalled();
166165

167-
document.dispatchEvent(new Event('click'));
166+
document.dispatchEvent(new Event('click', { bubbles: true }));
168167
await nextTick();
169168
expect(onBeforeClose).toBeCalled();
170169
expect(onClose).toBeCalled();

packages/devui-vue/devui/drawer/src/use-drawer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { computed, onUnmounted, ref, watch } from 'vue';
2-
import { onClickOutside } from '@vueuse/core';
2+
import { onClickOutside, OnClickOutsideOptions } from '@vueuse/core';
33
import { DrawerEmit, DrawerProps, UseDrawerFn } from './drawer-types';
44
import { lockScroll } from '../../shared/utils/lock-scroll';
55
import { useNamespace } from '../../shared/hooks/use-namespace';
@@ -26,7 +26,7 @@ export function useDrawer(props: DrawerProps, emit: DrawerEmit): UseDrawerFn {
2626
e.code === 'Escape' && execClose();
2727
};
2828

29-
onClickOutside(drawerRef, execClose);
29+
onClickOutside(drawerRef, execClose, { capture: false } as OnClickOutsideOptions);
3030

3131
const removeBodyAdditions = () => {
3232
lockScrollCb?.();

packages/devui-vue/devui/popover/src/popover.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defineComponent, toRefs, ref, Teleport, Transition, watch, provide } from 'vue';
1+
import { defineComponent, toRefs, ref, Teleport, Transition, watch, provide, withModifiers } from 'vue';
22
import { FlexibleOverlay } from '../../overlay';
33
import { PopperTrigger } from '../../shared/components/popper-trigger';
44
import { popoverProps, PopoverProps } from './popover-types';
@@ -48,6 +48,8 @@ export default defineComponent({
4848
style={overlayStyles.value}
4949
{...attrs}
5050
onPositionChange={handlePositionChange}
51+
onClick={withModifiers(() => ({}), ['stop'])}
52+
onPointerup={withModifiers(() => ({}), ['stop'])}
5153
onMouseenter={onMouseenter}
5254
onMouseleave={onMouseleave}>
5355
<PopoverIcon type={popType.value} />

packages/devui-vue/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"@floating-ui/dom": "^0.4.4",
4646
"@types/lodash-es": "^4.17.4",
4747
"@vue/shared": "^3.2.33",
48-
"@vueuse/core": "^7.7.1",
48+
"@vueuse/core": "8.9.4",
4949
"async-validator": "^4.0.2",
5050
"dayjs": "^1.11.3",
5151
"devui-theme": "workspace:^0.0.1",

pnpm-lock.yaml

Lines changed: 21 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)