Skip to content

BlockUI ​

Overlay that blocks its content

For an area that is mid-operation and must stay visible but untouchable — a report re-running, a form saving, a table refreshing. The content is made inert (unreachable by mouse, keyboard and screen reader) under a 60% scrim with a spinner; if focus was inside, it parks on the overlay and returns when blocked goes false; focus elsewhere on the page is left alone. A hidden status region says label ("Busy") while blocked, so screen readers hear it either way. Content that isn't there yet is Skeleton's job; a page-level, non-blocking signal is LoadingBar.

#indicator replaces the spinner (a message, a progress bar). fullscreen fixes the overlay over the whole viewport — the page, not an open <dialog>, which lives in the top layer above it; to block a dialog, put the BlessBlockUI inside it. Only the slot goes inert, so for fullscreen wrap the app root — otherwise the page under the overlay is still reachable with Tab.

Basic

Weekly report

Viewers 12,480 · Completion 71% · Shares 3,112

Usage ​

ts
import { BlessBlockUI } from "blessing-ui";

API ​

Props

NameTypeDefaultDescription
blockedboolean—
fullscreenboolean—
labelstring"Busy"

Slots

NameScopeDescription
default—
indicator—

Released under the MIT License. Character names and artwork belong to their owners.