Side Panel

A SidePanel slides in from the edge of the page over its content, for details or a form that belongs beside the page rather than in place of it. The user can resize it with a drag handle on its inner edge, as they resize the navigation, and double-click the handle to reset it. It docks to the right, the end of the page, by default; set Position (position) to Start (start) to dock it on the left. The grid buttons open their record form in one when their location is a side panel.

React Blazor

Resizing

Resizing is on by default; set EnableResizing (enableResizing in React) to false for a fixed width. DefaultWidth, MinWidth and MaxWidth set the starting width and how far the user can take it, and the panel is never wider than the viewport. Give WidthStorageKey a key of the panel's own and it reopens at the width the user left it, across page loads. On a phone the panel takes the whole width and has no handle.

React Blazor

Title and FooterContent (title and footer in React) cover most panels. When the footer depends on state inside the content — a Save button enabled only once a form has changes — compose the panel instead: TitleTemplate and FooterContent in Blazor, and in React SidePanelHeader, SidePanelBody and SidePanelFooter, which can sit inside a context provider of your own.

React Blazor

Side panel

Open the panel on either side and drag its inner edge to resize it, or focus the edge and use the arrow keys; double-click it, or press Enter on it, to reset it. It remembers its width, so close it, reload the page and open it again.

React example Blazor example React TypeScript Razor
Open on the right Open on the left
Details

Drag the panel's inner edge to resize it, or focus it and use the arrow keys. Double-click the edge, or press Enter on it, to go back to the default width.

Close
React Blazor

SidePanel Class

Parameters

Name
Type
Default
Description
ChildContentRenderFragment?
The panel's content.
DefaultWidthint
400
Width in px before the user resizes, and on double-click reset. Defaults to 400.
EnableResizingbool
True
When true (the default), a drag handle on the panel's edge facing the page lets the user resize it. Double-click the handle to reset it to SidePanel.DefaultWidth. There is no handle on a phone, where the panel takes the whole width.
FooterContentRenderFragment?
The panel's footer, typically its action buttons.
MaxWidthint
1200
Widest the user can make the panel, in px. Defaults to 1200; never wider than the viewport.
MinWidthint
320
Narrowest the user can make the panel, in px. Defaults to 320.
Modalbool
True
Whether the panel is modal. Defaults to true.
Openbool
False
Whether the panel is open. Two-way bindable.
PositionSidePanelPosition
End
Which edge of the page the panel docks to. Defaults to SidePanelPosition.End.
PreventDismissOnEscapebool
False
Whether pressing Escape is ignored instead of closing the panel.
ShowDismissbool
True
Whether to show a dismiss (X) button in the title bar. Defaults to true.
Titlestring?
Plain-text title. Ignored when SidePanel.TitleTemplate is set.
TitleTemplateRenderFragment?
Title content.
WidthStorageKeystring?
localStorage key the panel remembers its width under, so it reopens at the size the user left it. Leave unset to start at SidePanel.DefaultWidth every time. Give each kind of panel its own key so each remembers its own width.
Name: ChildContent
Type: RenderFragment?
Description: The panel's content.
Name: DefaultWidth
Type: int
Default: 400
Description: Width in px before the user resizes, and on double-click reset. Defaults to 400.
Name: EnableResizing
Type: bool
Default: True
Description: When true (the default), a drag handle on the panel's edge facing the page lets the user resize it. Double-click the handle to reset it to SidePanel.DefaultWidth. There is no handle on a phone, where the panel takes the whole width.
Name: FooterContent
Type: RenderFragment?
Description: The panel's footer, typically its action buttons.
Name: MaxWidth
Type: int
Default: 1200
Description: Widest the user can make the panel, in px. Defaults to 1200; never wider than the viewport.
Name: MinWidth
Type: int
Default: 320
Description: Narrowest the user can make the panel, in px. Defaults to 320.
Name: Modal
Type: bool
Default: True
Description: Whether the panel is modal. Defaults to true.
Name: Open
Type: bool
Default: False
Description: Whether the panel is open. Two-way bindable.
Name: Position
Type: SidePanelPosition
Default: End
Description: Which edge of the page the panel docks to. Defaults to SidePanelPosition.End.
Name: PreventDismissOnEscape
Type: bool
Default: False
Description: Whether pressing Escape is ignored instead of closing the panel.
Name: ShowDismiss
Type: bool
Default: True
Description: Whether to show a dismiss (X) button in the title bar. Defaults to true.
Name: Title
Type: string?
Description: Plain-text title. Ignored when SidePanel.TitleTemplate is set.
Name: TitleTemplate
Type: RenderFragment?
Description: Title content.
Name: WidthStorageKey
Type: string?
Description: localStorage key the panel remembers its width under, so it reopens at the size the user left it. Leave unset to start at SidePanel.DefaultWidth every time. Give each kind of panel its own key so each remembers its own width.

Events

Name
Type
Description
OnDismissEventCallback
Raised when the user closes the panel (Escape or the dismiss button), not when SidePanel.Open is set by the parent.
OpenChangedEventCallback<bool>
Raised with false when the user closes the panel.
Name: OnDismiss
Type: EventCallback
Description: Raised when the user closes the panel (Escape or the dismiss button), not when SidePanel.Open is set by the parent.
Name: OpenChanged
Type: EventCallback<bool>
Description: Raised with false when the user closes the panel.