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
Sheet Table of Contents Accessibility support The Sheet 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.roleDefines the semantic of the dialog element (dialog or alertdialog). 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 Set aria-haspopup on the trigger so users know a dialog will open. Ensure the sheet has a meaningful title via the header slot or 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 sheet. Do ensure a meaningful title/label 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 "Open" when the sheet purpose is not obvious. Integration examples
ARIA on trigger button host vs aria prop❌ Anti-pattern
<p-button aria-haspopup="dialog">
  Filter results
</p-button>
✅ Recommended
<p-button aria="{'aria-haspopup': 'dialog'}">
  Filter results
</p-button>
Dialog label on component host vs header slot❌ Anti-pattern
<p-sheet aria-label="Filters">
  ...
</p-sheet>
✅ Recommended
<p-sheet>
  <p-heading slot="header" tag="h2" size="lg">
    Filter results
  </p-heading>
  ...
</p-sheet>

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

<p-sheet aria="{'aria-label': 'Filter results'}">
  ...
</p-sheet>
Sheet trigger without popup semantics❌ Anti-pattern
<p-button>
  Open
</p-button>

<p-sheet>
  <p-heading slot="header" tag="h2" size="lg">
    Filters
  </p-heading>
  ...
</p-sheet>
✅ Recommended
<p-button aria="{'aria-haspopup': 'dialog'}">
  Filter results
</p-button>

<p-sheet>
  <p-heading slot="header" tag="h2" size="lg">
    Filter results
  </p-heading>
  ...
</p-sheet>
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%