Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit e73bd16

Browse files
committed
feat: remove conflicting wait
1 parent 800f0be commit e73bd16

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

packages/c-popover/examples/with-controlled-usage.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,19 @@ import { CButton, CButtonGroup } from "../../c-button/src"
1313
import { useDisclosure } from "../../vue-composables/src/use-disclosure"
1414
import { CHStack } from "../../layout/src/stack"
1515
16-
const { isOpen, open } = useDisclosure({
16+
const { isOpen, open, toggle } = useDisclosure({
1717
defaultIsOpen: false,
1818
})
1919
</script>
2020

2121
<template>
2222
<c-h-stack>
23-
<c-button @click="open"> Trigger </c-button>
23+
<c-button @click="toggle"> Trigger </c-button>
2424
<c-popover
2525
:positioning="{
2626
placement: 'right-start',
2727
}"
2828
:is-open="isOpen"
29-
@close="isOpen = false"
3029
>
3130
<c-popover-trigger>
3231
<c-button color-scheme="pink"> Popover Target </c-button>

packages/c-popover/src/c-popover.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.2
99
*/
1010

11-
import { computed, defineComponent, mergeProps, PropType } from "vue"
11+
import { computed, defineComponent, mergeProps, PropType, watch } from "vue"
1212
import { PopoverProvider, PopoverStylesProvider } from "./popover.context"
1313
import { usePopover, UsePopoverProps } from "./use-popover"
1414
import { wait } from "./popover.utils"
@@ -105,12 +105,26 @@ export const CPopover = defineComponent({
105105
const motions = useMotions()
106106
const instance = motions[transitionId.value]
107107
requestAnimationFrame(async () => {
108+
instance.stopTransitions()
108109
instance.set("initial")
109110
await instance.apply("enter")
110111
done()
111112
})
112113
}
113114

115+
if (typeof props.isOpen !== "undefined") {
116+
watch(
117+
() => props.isOpen,
118+
(isOpen) => {
119+
if (isOpen) {
120+
enterTransition(() => {})
121+
} else {
122+
leaveTransition(() => {})
123+
}
124+
}
125+
)
126+
}
127+
114128
const api = usePopover(popoverProps.value)
115129

116130
const popoverApi = computed(() => ({

packages/c-popover/src/use-popover.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ export function usePopover(props: UsePopoverProps) {
6868
api.value.open()
6969
return
7070
} else if (!isOpen && !state.value.matches("closed")) {
71-
await wait(300)
7271
api.value.close()
7372
return
7473
}

0 commit comments

Comments
 (0)