Skip to contentPorsche Design System
You are currently viewing an earlier release of the Porsche Design System.Switch to the latest Porsche Design System documentation.
SearchGitHub repository of Porsche Design SystemOpen settings sidebar
Flyout Table of Contents Accessibility support The Flyout component uses the native dialog element to provide a modal dialog which comes with browser-specific behavior. As a result, accessibility features may vary across different browsers. Keyboard Key / stateFunctionTab, Shift-TabMoves focus to the next (or previous) focusable element inside the dialog. Focus is trapped (browser behavior).ESCCloses the dialog.focus on trigger elementThe focus is returned to the trigger element after closing the dialog (browser behavior). ARIA enhancements External ARIA provided by the aria property: ARIAUsagearia-labelDefines a string value that labels the dialog element. Internal ARIA that is managed by the component: ARIAUsagearia-label="STRING"Defines the accessible name if no aria property is provided, uses the contents of the header slot and falls back to a fixed name. Development considerations To inform users that the trigger button opens a dialog, set aria-haspopup on the trigger using the aria property. Provide the dialog title through the header slot or the flyout aria property. Common do's and don'ts Do use a semantic trigger (usually a button) with a meaningful accessible name. Do set aria-haspopup through the trigger component aria prop when opening the flyout. Do ensure a meaningful title is available via the header slot or aria property. Don't add raw host-level ARIA attributes as a workaround. Don't use unclear trigger copy like "Menu" when the flyout purpose is not obvious. Integration examples
ARIA on trigger button host vs aria prop❌ Anti-pattern
<p-button aria-haspopup="dialog">
  Open dialog
</p-button>
✅ Recommended
<p-button aria="{'aria-haspopup': 'dialog'}">
  Open dialog
</p-button>
Dialog label on component host vs header slot❌ Anti-pattern
<p-flyout aria-label="Navigation">
  ...
</p-flyout>
✅ Recommended
<p-flyout>
  <p-heading slot="header" tag="h2" size="lg">
    Main navigation
  </p-heading>
  ...
</p-flyout>

<!-- or with aria prop when no visible header is shown -->

<p-flyout aria="{'aria-label': 'Main navigation'}">
  ...
</p-flyout>
Flyout trigger without popup semantics❌ Anti-pattern
<p-button>
  Open dialog
</p-button>

<p-flyout>
  <p-heading slot="header" tag="h2" size="lg">
    Dialog heading
  </p-heading>
  ...
</p-flyout>
✅ Recommended
<p-button aria="{'aria-haspopup': 'dialog'}">
  Open dialog
</p-button>

<p-flyout>
  <p-heading slot="header" tag="h2" size="lg">
    Dialog heading
  </p-heading>
  ...
</p-flyout>
Tests Automated TechnologySupportAXE-Core (WCAG 2.2 AA, Best-Practice)High-Contrast Mode (light/dark)Text-Zoom (200%) Manual TechnologySupportKeyboardScreen reader (VoiceOver, NVDA)
Global settingsColor SchemeAll color tokens use the light-dark() CSS function. Set the theme via the CSS color-scheme property: light for light mode, dark for dark mode, or light dark to follow the user's system preference.LightDarkLight DarkDirectionThe dir global attribute in HTML changes the direction of text and other content within an element. It's most often used on the <html> tag to set the entire page's direction, which is crucial for supporting languages that are written from right to left (RTL), such as Arabic and Hebrew. For example, using <html dir="rtl"> makes the entire page display from right to left, adjusting the layout and text flow accordingly.LTR (left-to-right)RTL (right-to-left)Text ZoomTo ensure accessibility and comply with WCAG 2.2 AA standards, it is mandatory for web content to support text resizing up to at least 200% without loss of content or functionality. Using relative units like rem is a best practice for achieving this, as they allow the text to scale uniformly based on the user's browser settings.100%130%150%200%