mui / mui/base-ui

[popover] Why does popover.root does not provide disabled props?

Open
#3,025 2 comments 0 reactions 0 assignees View on GitHub
component: popover
Dominant language
TypeScript
Stars
10.9k
Forks
543
Avg merge
1d 20h
Merged PRs (30d)
101

Description

# Feature request

## Summary

A request for clarification and enhancement regarding API consistency, specifically concerning the lack of a disabled prop on Popover.Root while it exists on Menu.Root.

## Examples in other libraries

## Motivation

Both Popover and Menu share a very similar UX pattern: a user clicks a "trigger" element to open a "content" panel.

However, the difference in their APIs for handling a disabled state feels inconsistent and confusing.

With a Menu component, passing a single disabled prop to the Root or Trigger declaratively disables the entire system (preventing clicks, keyboard navigation, etc.).

With a Popover, the absence of a disabled prop on Popover.Root forces the developer to pass the disabled state to the Popover.Trigger.

[Questions & Proposal]

Question on Design Intent: Is there a specific, intentional design reason for this API difference between Popover and Menu?

(Hypothesis) Is it because a Popover is considered a generic "container" primitive, while a Menu is a more specific "list of actions" primitive, thereby warranting different APIs?

Feature Proposal: If there is no strong design contraindication, I propose adding a disabled prop to Popover.Root. This prop would automatically propagate to the Popover.Trigger, bringing its API in line with Menu and improving overall consistency.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.