Create

Feedback

Sheet

Copy page View as Markdown Open in ChatGPT Open in Claude

Extends the Dialog component to display content that complements the main content of the screen.

Usage#

app.component.ts
import { WdsSheetComponent } from '@wds/angular/sheet';

Examples#

Default#

show() and close() open and close the sheet; heading and description name and describe it. The sheet slides in from the right by default. Content scrolls between the header and the footer, and buttons in the footer slot are stacked.

OpenNameUsernameSave changesClose

Side#

side sets the edge of the screen the sheet slides in from: top, right (default), bottom or left.

toprightbottomleft

This sheet slides in from the right edge of the screen.

Save changesCancel

No close button#

hide-close removes the close button from the header. Escape and a click on the backdrop still close the sheet; keep a button in the footer as well.

Open sheetDone

Size#

--wds-sheet-size sets the maximum width of a left or right sheet (default 24rem; narrower screens get 75% of the width), or the height of a top or bottom one.

20rem40rem
CloseClose

Contained#

contained places the sheet inside the nearest positioned ancestor (position: relative) instead of the screen, e.g. as an inspector next to a list or a canvas. It is non-modal: no backdrop, no focus trap, and the content behind stays usable; Escape and the close button still close it. The modal property set to false alone gives a non-modal sheet at the edge of the screen.

Close

View customizer#

inset floats the sheet away from the screen edges with rounded corners, and divided separates the header and footer with borders. Inside: switches in horizontal wds-fields and a layout picker built from wds-radio cards. Wrap the footer buttons in an element to lay them out in a row.

Customize viewAuto saveSave view changes automatically.Smart filtersSuggest useful filters as you work.Group totalsShow counts inside grouped sections.Pinned columnsKeep priority columns visible while scrolling.Layout modeChoose how the workspace is framed. Command deck Insight rail
ResetSave

Settings form#

A settings panel with sections (wds-field-set and wds-field-legend) and horizontal fields. The content scrolls while the header and the footer stay in place. Reset calls reset() on the <form>: every wds control returns to its initial value.

Relay settings
DeliveryPanel label
Quiet window
17:0018:0018:3020:00to06:0007:0008:0009:00
Region clockEurope/LondonEurope/WarsawAmerica/New_YorkAsia/TokyoDelivery channelWorkspace inboxEmailTeam chatDigest cadenceHourlyTwice dailyDailyWorkdays only
RoutingDigest routeOps briefLeadership summaryOn-call channelPriority escalationEscalation delay5 minutes10 minutes30 minutesRetry failed sends
ResetSave settings

Inline editing#

A details panel where every value is edited in place: wds-date-picker, wds-select, wds-input-group and wds-switch next to read-only badges. wds-change and wds-input bubble up to the <form>, so one listener enables Save; the button shows loading while the change is saved and a toast confirms it.

Open ticket
Due dateStatusOpenIn progressResolvedPriorityLowMediumHighAssigneeMira StoneSana QureshiUnassignedChannel#Notify requesterTags
FeatureSecurity
SLA
Met · 3h left

Quick tips

  • Changes are kept until you save them.
  • Escape or the backdrop closes the sheet without saving.
Save changesClose

Metric details#

A read-only drill-down: the current value with a progress bar toward the target, then sections for the definition, owners, the alert rule and recent changes. Each section is named by its heading (aria-labelledby). Without a footer, the close button and Escape close the sheet.

Open metric
62.4%+3.1 ptsvs 59.3% prior 28 days
Target 70%89% of target

Definition

Activation event
template_applied
Source feature
Template gallery
Segment
Trial workspaces over 20 seats
Window
Last 28 days
Refreshed
Hourly · 2 h ago

Owners

MSSQIVMira Stone · lead

Alert rule

Activation drop
Fires below 55% · 2-day window · Sana Qureshi
Armed

Recent changes

Sep 28 · Mira StoneSep 21 · Sana QureshiSep 14 · Ivo Vidal

Service#

In Angular, WdsSheetService.open() creates the sheet from a component: data goes to the component through WDS_OVERLAY_DATA, side, inset, divided and size set the look, okText / cancelText add footer buttons, and the value returned by onOk comes out of closed. HTML and React have no service, so their tabs show the same sheet declared in the markup.

FiltersStatus: all

API References#

wds-sheet#

A panel attached to an edge of the screen that complements the main content (settings, details, filters). Closed with Escape, a click on the backdrop, the close button or close(). The content scrolls between a fixed header and footer. With modal=false the page behind stays usable (no backdrop, no focus trap); contained also places the panel inside the nearest positioned ancestor instead of the screen.

Attributes

AttributeTypeDefaultDescription
sideWdsSheetSide'right'Edge of the screen.
insetbooleanfalseFloats the panel with a margin from the screen edges and rounded corners.
dividedbooleanfalseSeparates the header and the footer from the content with borders; the footer gets a muted background.
modalbooleantruefalse: no backdrop and no focus trap, the content behind stays usable (e.g. an inspector next to a canvas).
containedbooleanfalsePlaces the panel in the nearest positioned ancestor (position: relative) instead of the screen. Always non-modal, because a modal dialog lives in the top layer above the whole page.
openbooleanfalseControls visibility. Also set by show() and close().
headingstring''Title (or the heading slot).
descriptionstring''Description under the title (or the description slot), linked as aria-describedby.
hide-close.hideClosebooleanfalseHides the close button in the header.
static-backdrop.staticBackdropbooleanfalseA click on the backdrop does not close it.
dismissiblebooleantruefalse blocks closing with Escape, the backdrop (and dragging in a drawer).
close-label.closeLabelstring'Zamknij'Label of the close button.

Events

EventDescription
wds-closeCustomEvent<void>Closing (button, Escape, backdrop, close()), before the exit animation.
wds-after-closeCustomEvent<void>After the exit animation.

Methods

MethodDescription
show()Opens it.
close()Closes it.

Slots

SlotDescription
(default)Content. An element with autofocus gets focus when it opens (otherwise the first focusable element).
headingCustom heading (instead of the heading attribute).
descriptionCustom description (instead of the description attribute).
footerActions (stacked in a column; wrap them in an element for a row).

CSS parts (::part)

PartDescription
dialogThe native <dialog> (the panel).
panelThe content container.
headerThe header.
titleThe title.
descriptionThe description.
closeThe close button.
bodyThe content.
footerThe footer.

CSS custom properties

PropertyDescription
--wds-sheet-sizeMaximum width (left/right, default 24rem; the panel takes 75% of narrower screens) or height (top/bottom, default auto).
--wds-sheet-backdropColor of the backdrop.

Accessibility#

Screen reader#

The sheet is a native <dialog> named by heading and described by description (aria-labelledby, aria-describedby). Always give it a heading.

The sheet is modal: the rest of the page is inert and focus stays inside; when it closes, focus returns to the element that opened it. With contained or modal set to false the page stays usable and focus is not trapped.

The close button is named by close-label (default Zamknij, in Polish). With hide-close, keep another way to close the sheet, such as a button in the footer.

Group related controls in the content with wds-field-set and wds-field-legend, so each section is announced with its name.

Keyboard support#

KeyFunction
TabShift + TabMoves focus between the controls of the sheet; focus stays inside.
EscapeCloses the sheet (unless dismissible is false).
Footer