Skip to main content
Renders a modal dialog into the mount’s own portal node, so it covers the surface without leaving the extension.

Parameters

__namedParameters

TapDialogProps

Returns

| ReactElement<unknown, string | JSXElementConstructor<any>> | null

Remarks

Rendered outside a Tappify mount it throws TAP_OUTSIDE_HOST, from the useTap above it. Inside a mount whose shadow root has no portal node yet, opening it throws TapError with code TAP_NO_PORTAL; renderWithTap provides that node in tests. While open it traps Tab inside itself, moves focus to the first focusable element and returns focus where it was on close, and answers Escape and a click on the scrim with onClose. The scrim follows --tap-scrim and the panel --bg-raised, --divider and --tap-radius; the panel is at most 520 pixels wide. The component keeps no open state of its own.

Example