pub struct Modal<'a> { /* private fields */ }Expand description
A centered modal dialog.
The open flag drives visibility: when it’s false on entry to
Modal::show, nothing is rendered; when the user clicks the backdrop,
presses Esc, or clicks the “×” button, it’s flipped to false.
Modal::new("stats", &mut open)
.heading("Run Summary")
.show(&ctx, |ui| {
ui.label("…");
});Implementations§
Source§impl<'a> Modal<'a>
impl<'a> Modal<'a>
Sourcepub fn new(id: impl Into<Id>, open: &'a mut bool) -> Self
pub fn new(id: impl Into<Id>, open: &'a mut bool) -> Self
Create a modal keyed by id_salt whose visibility is bound to open.
Sourcepub fn heading(self, heading: impl Into<WidgetText>) -> Self
pub fn heading(self, heading: impl Into<WidgetText>) -> Self
Show a strong heading at the top of the modal, alongside the close button.
Sourcepub fn subtitle(self, subtitle: impl Into<WidgetText>) -> Self
pub fn subtitle(self, subtitle: impl Into<WidgetText>) -> Self
Show a muted subtitle line under the heading.
Sourcepub fn header_icon(self, icon: impl Into<WidgetText>) -> Self
pub fn header_icon(self, icon: impl Into<WidgetText>) -> Self
Paint a glyph in a tinted circular halo to the left of the heading.
Use any short text — "⚠", "✓", "!", or an emoji. The halo
uses ThemeColors::accent.
Sourcepub fn backdrop_order(self, order: Order) -> Self
pub fn backdrop_order(self, order: Order) -> Self
Override the Order used for the backdrop of the modal
Sourcepub fn content_order(self, order: Order) -> Self
pub fn content_order(self, order: Order) -> Self
Override the Order used for the content of the modal
Sourcepub fn max_width(self, max_width: f32) -> Self
pub fn max_width(self, max_width: f32) -> Self
Override the maximum width of the modal card in points. Default: 440.
Sourcepub fn closable(self, closable: bool) -> Self
pub fn closable(self, closable: bool) -> Self
Whether the user may dismiss the modal at all. When false, the
close “×” button is hidden and Esc / backdrop clicks are ignored —
regardless of Modal::close_on_backdrop / Modal::close_on_escape.
Use this to force the user to see an in-progress action through (or
cancel it via an explicit footer button) — for example, blocking
dismissal while a long-running task runs, instead of juggling the
open flag with an external “is it running?” guard.
This only removes the user-driven dismissal affordances; the caller
is still free to set the bound open flag to false programmatically
to close the modal from code. Default: true.
Sourcepub fn close_on_backdrop(self, close: bool) -> Self
pub fn close_on_backdrop(self, close: bool) -> Self
Whether clicking the dimmed backdrop dismisses the modal. Default: true.
Sourcepub fn close_on_escape(self, close: bool) -> Self
pub fn close_on_escape(self, close: bool) -> Self
Whether pressing Esc dismisses the modal. Default: true.
Sourcepub fn alert(self, alert: bool) -> Self
pub fn alert(self, alert: bool) -> Self
Mark this modal as an alert dialog — a dialog that demands the
user’s attention to proceed, such as a destructive confirmation or
an unsaved-changes prompt. Screen readers announce alert dialogs
more assertively than ordinary dialogs. Default: false.
Under the hood this exposes accesskit::Role::AlertDialog on the
modal’s root node instead of the default Role::Dialog.
Add a footer row at the bottom of the modal. The closure runs in a right-to-left layout, so widgets added in source order land rightmost-first — matching the typical “Cancel | Confirm” reading. The footer renders below a horizontal divider and over a slightly recessed fill, separating it visually from the body.
Add a left-aligned slot to the footer (only rendered when
Modal::footer is also set). Useful for an “export before delete”
checkbox or a keyboard-shortcut hint that should sit opposite the
action buttons.
Trait Implementations§
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for Modal<'a>
impl<'a> !Send for Modal<'a>
impl<'a> !Sync for Modal<'a>
impl<'a> !UnwindSafe for Modal<'a>
impl<'a> Freeze for Modal<'a>
impl<'a> Unpin for Modal<'a>
impl<'a> UnsafeUnpin for Modal<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more