diff --git a/packages/@headlessui-react/src/components/menu/menu.test.tsx b/packages/@headlessui-react/src/components/menu/menu.test.tsx
index 61dba9ff76..2a26ef11aa 100644
--- a/packages/@headlessui-react/src/components/menu/menu.test.tsx
+++ b/packages/@headlessui-react/src/components/menu/menu.test.tsx
@@ -448,6 +448,47 @@ describe('Rendering', () => {
assertMenu({ state: MenuState.InvisibleUnmounted })
})
)
+
+ it('should not override an explicit disabled prop on MenuItems child', async () => {
+ render(
+
+ )
+
+ assertMenuButton({
+ state: MenuState.InvisibleUnmounted,
+ })
+ assertMenu({ state: MenuState.InvisibleUnmounted })
+
+ getMenuButton()?.focus()
+
+ await press(Keys.Enter)
+
+ assertMenuButton({
+ state: MenuState.Visible,
+ })
+ assertMenu({ state: MenuState.Visible })
+ assertMenuItem(getMenuItems()[0], {
+ tag: 'button',
+ attributes: { 'data-focus': '' },
+ })
+ assertMenuItem(getMenuItems()[1], {
+ tag: 'button',
+ attributes: {},
+ })
+ assertMenuItem(getMenuItems()[2], {
+ tag: 'button',
+ attributes: { disabled: '' },
+ })
+ })
})
it('should guarantee the order of DOM nodes when performing actions', async () => {
diff --git a/packages/@headlessui-vue/CHANGELOG.md b/packages/@headlessui-vue/CHANGELOG.md
index 278a69d020..8c5d8fc19d 100644
--- a/packages/@headlessui-vue/CHANGELOG.md
+++ b/packages/@headlessui-vue/CHANGELOG.md
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Expose `disabled` state on `` component ([#2918](https://github.com/tailwindlabs/headlessui/pull/2918))
- Prevent default behaviour when clicking outside of a `DialogPanel` ([#2919](https://github.com/tailwindlabs/headlessui/pull/2919))
+- Don’t override explicit `disabled` prop for components inside `