Skip to main content

rc-snackbar

rc-snackbar is a live-region host for brief status messages and optional actions.

Package
@rcarls/rc-snackbar
Element
<rc-snackbar>
Native dependency
Polite status live region
State model
Imperative message queue
Main events
rc-snackbar-actionrc-snackbar-close

Installation​

npm install @rcarls/rc-webcomponents@next
import '@rcarls/rc-webcomponents/rc-snackbar/define';

Usage​

<rc-snackbar id="snackbar"></rc-snackbar>
document.querySelector('#snackbar').show({
message: 'Document archived',
actionLabel: 'Undo',
duration: 5000,
});

rc-snackbar does not move focus. It announces through a polite status live region and queues messages by default. Positive duration values auto-dismiss the visible message; use 0 only when the application deliberately owns dismissal.

open reflects visibility and follows the library's controlled/uncontrolled convention: host writes are silent, and default-open seeds an initial visible state. show(), close(), and clear() remain the primary way to drive the queue and timer; write open directly only for advanced cases that don't need queueing, such as an initially visible component seeded from server-rendered message/default-open attributes.

The theme-free surface uses system canvas colors and a plain border, while its action retains native button styling. Packaged themes provide the component's color, shape, spacing, and action treatment.

Live demo​

Accessibility​

Messages appear in a role="status" live region with aria-live="polite" and aria-atomic="true", so screen readers announce them without moving focus. The action is a native button. A positive duration closes the message on a timer that pauses while the pointer is over the snackbar or focus is inside it, and resumes with the time that was left, so people can reach the action (WCAG 2.2.1).

API​

Properties​

PropertyMarkupTypeDefaultDescription
openopenbooleanNot specifiedWhether the snackbar is currently visible. Host writes are silent.
defaultOpendefault-openbooleanNot specifiedInitial visible state for uncontrolled usage, such as an already-queued message shown on first render.
messagemessagestring''Visible message text.
actionLabelaction-labelstring''Optional action button label.
durationdurationnumber4000Auto-close duration in milliseconds. Set to 0 to keep open. The timer pauses while the pointer is over the snackbar or focus is inside it.
queuePolicyqueue-policyRCSnackbarQueuePolicy'queue'Queue behavior for show calls while open.

Methods​

MethodDescription
show(message: string | RCSnackbarShowOptions)Shows a message or queues it according to `queuePolicy`.
close(reason: RCSnackbarCloseReason)Closes the current snackbar.
clear()Clears the current snackbar and all queued messages.

Events​

EventDetail typeDescription
rc-snackbar-closeCustomEventFired after a visible snackbar closes.
rc-snackbar-actionCustomEventFired when the action button is activated.

CSS Custom Properties​

PropertyDefaultDescription
--rc-snackbar-inset-inline1remInline-axis inset from the viewport edge.
--rc-snackbar-inset-block-end1remBlock-end inset from the viewport edge, before the safe-area inset.
--rc-snackbar-z-index1000Stacking order.
--rc-snackbar-gap0.5remGap between the message and action.
--rc-snackbar-min-block-size3remMinimum surface block size.
--rc-snackbar-max-inline-size30remMaximum surface inline size.
--rc-snackbar-padding-block0.5remSurface block-axis padding.
--rc-snackbar-padding-inline1remSurface inline-axis padding.
--rc-snackbar-border1px solid CanvasTextSurface border.
--rc-snackbar-radius0Surface border radius.
--rc-snackbar-bgCanvasSurface background.
--rc-snackbar-colorCanvasTextSurface text color.
--rc-snackbar-shadownoneSurface box shadow.
--rc-snackbar-action-borderNot specifiedAction button border; defers to native button border when unset.
--rc-snackbar-action-radiusNot specifiedAction button border radius; defers to native button radius when unset.
--rc-snackbar-action-padding-blockNot specifiedAction button block-axis padding; defers to native button padding when unset.
--rc-snackbar-action-padding-inlineNot specifiedAction button inline-axis padding; defers to native button padding when unset.
--rc-snackbar-action-bgNot specifiedAction button background; defers to native button background when unset.
--rc-snackbar-action-colorNot specifiedAction button text color; defers to native button color when unset.
--rc-snackbar-action-fontNot specifiedAction button font shorthand; defers to native button font when unset.
--rc-snackbar-focus-ringNot specifiedAction button focus outline; defers to native focus styling when unset.
--rc-snackbar-focus-ring-offsetNot specifiedAction button focus outline offset; defers to native focus styling when unset.

CSS Parts​

PartDescription
surfaceSnackbar surface.
messageMessage text.
actionOptional action button.