Skip to content

Commit e66a31e

Browse files
authored
fix: combobox and some components closed the modal prematurely (#475)
* fix: combobox and other element closed the modal prematurely * fix: dismissable not setting correct pointer events
1 parent 43c8fd8 commit e66a31e

File tree

2 files changed

+3
-6
lines changed

2 files changed

+3
-6
lines changed

packages/radix-vue/src/DismissableLayer/DismissableLayer.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ onKeyStroke('Escape', (event) => {
132132
emits('dismiss')
133133
})
134134
135+
let originalBodyPointerEvents: string
135136
watchEffect((cleanupFn) => {
136137
if (!layerElement.value)
137138
return
138-
let originalBodyPointerEvents: string
139139
if (props.disableOutsidePointerEvents) {
140140
if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
141141
originalBodyPointerEvents = ownerDocument.value.body.style.pointerEvents

packages/radix-vue/src/DismissableLayer/utils.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@ function isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {
2121
'[data-dismissable-layer]',
2222
) as HTMLElement
2323

24-
if (!mainLayer)
25-
return false
26-
2724
const nodeList = Array.from(
2825
layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),
2926
)
3027
if (
31-
mainLayer === targetLayer
28+
(targetLayer
29+
&& mainLayer === targetLayer)
3230
|| nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer)
3331
)
3432
return true
@@ -57,7 +55,6 @@ export function usePointerDownOutside(
5755
if (!element?.value)
5856
return
5957

60-
await nextTick()
6158
if (isLayerExist(element.value, event.target as HTMLElement)) {
6259
isPointerInsideDOMTree.value = false
6360
return

0 commit comments

Comments
 (0)