ReferenceDialogs
media-dialog
A modal dialog for application content, including players opened from a thumbnail
Import
Anatomy
Behavior
<media-dialog> provides the modal interaction and accessibility behavior while your application supplies the content and styling. It is the general-purpose replacement for a ModalDialog use case such as opening a player from a thumbnail.
Place a button immediately before media-dialog, or connect them explicitly with commandfor and an id. You can also set the dialog’s open property directly. The root provides state without creating a layout box; media-dialog-backdrop and media-dialog-popup are sibling surfaces. The element dispatches open-change when its state changes and open-change-complete after the popup transition finishes.
The close part and Escape close the dialog. Other buttons inside the dialog, including player controls, do not close it.
Inside and outside a player
A dialog inside a player is confined to that player. The rest of the player becomes inert, but the page around it stays interactive and aria-modal is omitted. A dialog outside a player is modal for the whole page, with aria-modal="true" and everything outside the popup inert.
The backdrop and popup get data-scope: player inside a player and document outside one. The built-in skin styles use it to switch from position: absolute to position: fixed. In your own styles, give a dialog outside a player position: fixed so it covers the viewport, as with any headless dialog. Inside a skin, give the backdrop and popup a z-index above the controls; the built-in skins use 40 and 50.
Your application decides what opening and closing mean for the media. The example starts playback after opening and pauses it as soon as the dialog closes. Handle the promise returned by play(), since browsers can reject autoplay when it is not allowed.
Use <media-alert-dialog> for urgent messages that require acknowledgement. <media-error-dialog> is the player-error specialization. Both use the same dialog behavior.
Styling
Use the open and transition data attributes to style the modal and its animations:
Accessibility
The popup uses role="dialog", plus aria-modal="true" outside a player. Include <media-dialog-title> so the dialog always has an accessible name. <media-dialog-description> is optional. These parts receive generated IDs connected through aria-labelledby and aria-describedby. The trigger receives aria-haspopup, aria-controls, and aria-expanded.
When the dialog opens, focus moves to an element with autofocus, the first focusable element, or the popup itself. Tab and Shift + Tab keep focus within the dialog, and content outside the dialog, within its player or the page, becomes inert. Closing restores focus to the trigger, or to the element that was focused before the dialog opened.
Dialogs inside the same player container share modal coordination. Opening one closes the current dialog and dismisses any open menu, tooltip, or popover before focus moves into the new popup.
Examples
Player modal
Open the video from its thumbnail. Playback starts when the dialog opens and pauses when it closes.
API Reference
media-dialog
Manages dialog state and provides it to the compound parts.
Props
State
Data attributes
media-dialog-backdrop
Presentational backdrop that reflects its owning dialog's state.
Data attributes
media-dialog-close
Button that closes its owning dialog; the element itself takes role="button" and keyboard focus.
Data attributes
media-dialog-description
Text announced as its owning dialog's description. The element takes the id that the popup's aria-describedby
points to.