Skip to main content

OverlayModalView

Struct OverlayModalView 

Source
pub struct OverlayModalView<State: 'static> { /* private fields */ }
Expand description

A declarative modal host. See overlay_modal.

The fields are crate-visible so the catalog’s modal components can wrap one and adjust its config in their own builders (a dialog is a pre-configured modal host); an app outside the crate configures it through overlay_modal’s config argument and the builders below.

Implementations§

Source§

impl<State: 'static> OverlayModalView<State>

Source

pub fn label(self, label: impl Into<String>) -> Self

Label the modal’s accessibility node (its title text).

Source

pub fn dismissable(self, dismissable: bool) -> Self

Whether the user can dismiss this modal at all — the scrim tap, the close affordance, the handle, a drag commit, Escape, and an Android back press (default true; see the module docs). false disables all six; only an explicit control the app wires through its own content still dismisses it.

Source

pub fn on_dismiss<F: Fn(&mut State) + 'static>(self, on_dismiss: F) -> Self

Set the unstaged dismiss callback — delivered with &mut State during the event pass.

Used only when no on_close hook is wired: with one, the dismissal is staged behind the exit ramp and fired from paint, where no app state exists (see the module docs).

Source

pub fn on_close<F: Fn() + 'static>(self, on_close: F) -> Self

Set the state-free close hook fired when the exit ramp settles — the staged-dismissal path. show_overlay_modal wires this to controller.pop(); a Stack-mounted modal wires its own (a signal write, a navigator pop).

Pinned at build: a directly constructed (non-staged) view’s later rebuilds neither update nor clear this hook once installed — see OverlayModalWidget’s on_close field doc for why.

An app hook is wrapped unguarded: only the navigator pop show_overlay_modal wires has a stack identity to check.

Source

pub fn dismiss_handle(self, dismiss: ModalDismiss) -> Self

Install the app-triggered staged-dismiss handle: the panel’s own content can then close it through the very ramp the host chrome uses, instead of the raw, unstaged controller.pop() that was its only route before (see the module docs’ app-initiated dismiss section, and ModalDismiss for the worked example).

Mint the handle outside a show_* page builder and clone it in — the builder re-runs on every navigator rebuild.

Source

pub fn snap_points(self, points: &[f64]) -> Self

Set the drag’s snap points: 0..=1 a fraction of the panel’s own extent, above 1 logical px (see the module docs). The panel opens to the first point — except a first point of 0.0 itself, which OverlayModalWidget::open_progress treats as absent (fully open) rather than authoring a panel that opens already closed.

A non-finite point (NaN or infinite — never a meaningful fraction or px extent) is dropped here, at the boundary, rather than stored: this is the one place caller input enters the widget, and every downstream consumer (normalize_snap, snap_targets, open_progress) trusts OverlayModalWidget::snap_points to already be all-finite rather than re-checking (see the module docs’s Clamp Discipline section). A caller-authored NaN/∞ behaves as if that point were never passed at all.

Trait Implementations§

Source§

impl<State: 'static> OverlayModalContent<State> for OverlayModalView<State>

Source§

fn on_modal_dismiss(self, on_dismiss: Rc<dyn Fn(&mut State)>) -> Self

Install the dismiss callback, replacing any the builder already set.
Source§

fn modal_dismissable(&self) -> bool

Whether this modal may be dismissed by the user at all — read once, at push time, to pick the page’s BackPolicy.
Source§

impl<State: 'static> View<State> for OverlayModalView<State>

Source§

type Element = OverlayModalWidget

The retained widget this view produces.
Source§

fn build(&self, ctx: &mut BuildCtx<'_>) -> OverlayModalWidget

Materialise a fresh widget for this view.
Source§

fn rebuild( &self, prev: &Self, element: &mut OverlayModalWidget, ctx: &mut BuildCtx<'_>, ) -> ChangeFlags

Reconcile prev (the previous view of the same type) against the live element, mutating it in place and reporting what changed.
Source§

fn teardown(&self, element: &mut OverlayModalWidget, ctx: &mut BuildCtx<'_>)

Tear down element when this view is being removed. Read more
Source§

fn message(&self, _element: &mut Self::Element, _state: &mut State)

Deliver an event message to this view, mutating application state. Read more

Auto Trait Implementations§

§

impl<State> !RefUnwindSafe for OverlayModalView<State>

§

impl<State> !Send for OverlayModalView<State>

§

impl<State> !Sync for OverlayModalView<State>

§

impl<State> !UnwindSafe for OverlayModalView<State>

§

impl<State> Freeze for OverlayModalView<State>
where AnyView<State>: Freeze, Option<Rc<dyn Fn(&mut State)>>: Freeze,

§

impl<State> Unpin for OverlayModalView<State>
where AnyView<State>: Unpin, Option<Rc<dyn Fn(&mut State)>>: Unpin,

§

impl<State> UnsafeUnpin for OverlayModalView<State>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> StorageAccess<T> for T

Source§

fn as_borrowed(&self) -> &T

Borrows the value.
Source§

fn into_taken(self) -> T

Takes the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<State, V> ViewSeq<State, One> for V
where State: 'static, V: View<State>,

Source§

fn extend_views(self, out: &mut Vec<AnyView<State>>)

Push every element of this sequence, in order, onto out — erasing each with AnyView::new (a no-op for an element already an AnyView).
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more