Components › Navigation › App shell › Drawer slot

Drawer slot

canon

Non-modal panel slot beside the page; the side is chosen away from the click and the content survives closing.

Slot rendered by AppShell; screens fill it through <ShellDrawer>. .as-drawer.full was removed on 11 September 2026 (NAV-1, acrm !3403) — it had had no consumer since P276.

Used in 11 files · 11 areas · 11× — pages/AiZamestnanciPage, pages/DochazkaPage, pages/FirmyPage, pages/LidePage, pages/MajetekPage, pages/PipelinePage …

Keyboard

  • The slot adds no keyboard behaviour of its own: the panel inside is part of the page, so Tab walks into it in DOM order after the page content.
  • Escape is handled by the app shell's chain (drawer full → drawer → assistant panel), not by the slot; a modeless dialog above it deliberately does not swallow the key.
  • There is no focus trap and none is wanted — the listing beside the drawer must stay reachable.

ARIA

  • The slot is a plain <div> with no role: it is a position, not a region. The panel inside brings its own semantics (<aside aria-label> for a record preview, role="dialog" for a create form).
  • Opening and closing is silent — nothing announces that a panel appeared, and the panel does not take focus by itself.
  • Because the slot is hidden rather than unmounted when empty, assistive technology does not see stale content: display: none removes it from the tree.

Focus

  • Foundation ring from ds.css applies to whatever controls the panel renders; the slot declares no focus style.
  • Opening does not move focus, so a keyboard user must Tab into the panel; closing leaves focus where it was.
  • The panel is not a tab trap, so Tab eventually leaves it and continues in the page.

Contrast

  • The slot paints nothing: it has no background, border or text of its own. All contrast belongs to the panel inside (see Record drawer or Drawer form).
  • The panel floats over the page with the overlay shadow rather than a border, and there is no scrim behind it.

Known limits

  • No announcement on open or close, and no focus move — the drawer is discoverable by sight and by tabbing, not by being told.
  • The side changes per opening; a screen-reader user gets no notice that the panel is now on the other side.
  • The slot's width is fixed by the shell, so a panel with wide content scrolls inside itself rather than widening.

Source: docs/app-shell/drawer-slot.a11y.md · GitLab