diff --git a/packages/@headlessui-vue/CHANGELOG.md b/packages/@headlessui-vue/CHANGELOG.md index a5bc701..41e97e1 100644 --- a/packages/@headlessui-vue/CHANGELOG.md +++ b/packages/@headlessui-vue/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add support for `role="alertdialog"` to `` component ([#2709](https://github.com/tailwindlabs/headlessui/pull/2709)) - Ensure blurring the `ComboboxInput` component closes the `Combobox` ([#2712](https://github.com/tailwindlabs/headlessui/pull/2712)) - Allow ` +
{{ hasRef ? "Yes" : "No" }}
+ + + + + + `, + setup() { + let show = ref(false) + + return { + show, + dialogRef, + } + }, + }) + + expect(dialogRef.value).toBeNull() + + await click(getByText('toggle')) + await nextFrame() + + expect(dialogRef.value).not.toBeNull() + + await click(getByText('toggle')) + await nextFrame() + + expect(dialogRef.value).toBeNull() + }) + ) }) describe('DialogOverlay', () => { diff --git a/packages/@headlessui-vue/src/utils/render.ts b/packages/@headlessui-vue/src/utils/render.ts index 9aa634a..10f3e12 100644 --- a/packages/@headlessui-vue/src/utils/render.ts +++ b/packages/@headlessui-vue/src/utils/render.ts @@ -140,7 +140,7 @@ function _render({ } let mergedProps = mergeProps(firstChild.props ?? {}, incomingProps) - let cloned = cloneVNode(firstChild, mergedProps) + let cloned = cloneVNode(firstChild, mergedProps, true) // Explicitly override props starting with `on`. This is for event handlers, but there are // scenario's where we set them to `undefined` explicitly (when `aria-disabled="true"` is // happening instead of `disabled`). But cloneVNode doesn't like overriding `onXXX` props so