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 — "⚠", "✓", "!", an emoji, or a symbol from
the bundled Elegance Symbols font. The halo’s tint comes from
[Modal::header_accent] and defaults to [Accent::Sky].
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<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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 moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more