Skip to content

[autocomplete] Wrap the no results message in a status element#48690

Open
silviuaavram wants to merge 1 commit into
mui:masterfrom
silviuaavram:feat/no-options-slot-for-autocomplete
Open

[autocomplete] Wrap the no results message in a status element#48690
silviuaavram wants to merge 1 commit into
mui:masterfrom
silviuaavram:feat/no-options-slot-for-autocomplete

Conversation

@silviuaavram

@silviuaavram silviuaavram commented Jun 18, 2026

Copy link
Copy Markdown
Member

Fixes #48666

Add a new noOptions slot that wraps the "no options" content with a container element. The container renders with role="status", aria-live="polite", and aria-atomic="true" so assistive technologies announce the absence of options without requiring the popup to be open.

Changes:

  • Add AutocompleteNoOptionsContainer styled element as the default slot element
  • Wire up noOptions via useSlot with the existing noOptions CSS class
  • Add AutocompleteNoOptionsSlotPropsOverrides augmentation interface
  • Add noOptions to AutocompleteSlots and AutocompleteSlotsAndSlotProps
  • Update PropTypes for slots and slotProps
  • Regenerate API docs

Copilot AI review requested due to automatic review settings June 18, 2026 12:58
@silviuaavram silviuaavram added accessibility a11y scope: autocomplete Changes related to the autocomplete. This includes ComboBox. labels Jun 18, 2026
@code-infra-dashboard

Copy link
Copy Markdown

Deploy preview

https://deploy-preview-48690--material-ui.netlify.app/

Bundle size

Bundle Parsed size Gzip size
@mui/material 🔺+197B(+0.04%) 🔺+78B(+0.05%)
@mui/lab 0B(0.00%) 0B(0.00%)
@mui/private-theming 0B(0.00%) 0B(0.00%)
@mui/system 0B(0.00%) 0B(0.00%)
@mui/utils 0B(0.00%) 0B(0.00%)

Details of bundle changes


Check out the code infra dashboard for more information about this PR.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Autocomplete to improve assistive-technology announcements when there are no matching options by introducing a new noOptions slot that provides a live-region status container around the existing “no options” content.

Changes:

  • Add a noOptions slot (and slotProps.noOptions) and wrap the no-options content in a role="status" live region (aria-live="polite", aria-atomic="true").
  • Extend TypeScript typings (slot + overrides augmentation) and PropTypes to include the new slot.
  • Add/adjust tests and regenerate API docs reflecting the new slot.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/mui-material/src/Autocomplete/Autocomplete.js Adds noOptions slot via useSlot and wraps the no-options message in a status live region.
packages/mui-material/src/Autocomplete/Autocomplete.d.ts Adds noOptions to AutocompleteSlots and slot-props typing + overrides interface.
packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx Adds TS coverage for slots.noOptions / slotProps.noOptions usage (including ref).
packages/mui-material/src/Autocomplete/Autocomplete.test.js Adds tests around noOptionsText rendering and the status container behavior.
docs/translations/api-docs/autocomplete/autocomplete.json Updates slot descriptions to include noOptions.
docs/pages/material-ui/api/autocomplete.json Updates API docs output for the new noOptions slot and slotProps.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

})),
);

const AutocompleteNoOptionsContainer = styled('div', {})();
Comment on lines +609 to +620
const [NoOptionsSlot, noOptionsProps] = useSlot('noOptions', {
elementType: AutocompleteNoOptionsContainer,
externalForwardedProps,
ownerState,
className: classes.noOptions,
additionalProps: {
role: 'status',
'aria-live': 'polite',
'aria-atomic': 'true',
},
});

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good point ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accessibility a11y scope: autocomplete Changes related to the autocomplete. This includes ComboBox.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Autocomplete] hardcoded role="presentation" on noOptionsText container suppresses semantics for some screen readers

2 participants