Skip to main content

ModalProps

Struct ModalProps 

Source
pub struct ModalProps {
Show 22 fields pub show: Signal<bool>, pub title: String, pub header: Option<Element>, pub body: Option<Element>, pub footer: Option<Element>, pub size: ModalSize, pub backdrop_close: bool, pub keyboard_close: bool, pub show_close: bool, pub centered: bool, pub scrollable: bool, pub fullscreen: ModalFullscreen, pub class: String, pub content_class: String, pub header_class: String, pub body_class: String, pub footer_class: String, pub style: String, pub backdrop_class: String, pub backdrop_style: String, pub on_dismiss: Option<EventHandler<()>>, pub children: Element, /* private fields */
}
Expand description

Bootstrap Modal component — signal-driven, no JavaScript.

Replaces Bootstrap’s <div class="modal"> + JavaScript with a signal-controlled component.

§Bootstrap HTML → Dioxus

<!-- Bootstrap HTML (requires JavaScript) -->
<div class="modal fade" tabindex="-1">
  <div class="modal-dialog modal-lg modal-dialog-centered">
    <div class="modal-content">
      <div class="modal-header"><h5 class="modal-title">Title</h5></div>
      <div class="modal-body"><p>Body</p></div>
      <div class="modal-footer"><button class="btn btn-primary">OK</button></div>
    </div>
  </div>
</div>
// Dioxus equivalent — no JavaScript needed
let mut show = use_signal(|| false);
rsx! {
    Button { onclick: move |_| show.set(true), "Open Modal" }
    Modal {
        show: show,
        title: "Confirm Action",
        size: ModalSize::Lg,
        centered: true,
        body: rsx! { p { "Are you sure?" } },
        footer: rsx! {
            Button { color: Color::Secondary, onclick: move |_| show.set(false), "Cancel" }
            Button { color: Color::Primary, "Confirm" }
        },
    }
}

§Props

  • showSignal<bool> controlling visibility
  • title — modal title text
  • body — modal body content (Element)
  • footer — modal footer content (Element)
  • sizeModalSize::Sm, Default, Lg, Xl
  • fullscreenModalFullscreen::Off, Always, SmDown..XxlDown
  • centered — vertically center the modal
  • scrollable — scrollable modal body
  • backdrop_close — close when clicking backdrop (default: true)
  • keyboard_close — close on the Escape key (default: true)

Fields§

§show: Signal<bool>

Signal controlling modal visibility.

§title: String

Modal title.

§header: Option<Element>

Rich header content, rendered inside .modal-header in place of the plain title. Bootstrap’s header holds whatever markup the caller wants — an icon and a title, a title and a badge — and a String title cannot express that. Card already has this slot, for the same reason.

§body: Option<Element>

Modal body content.

§footer: Option<Element>

Modal footer content.

§size: ModalSize

Modal size.

§backdrop_close: bool

Close when clicking the backdrop.

§keyboard_close: bool

Close when the Escape key is pressed (Bootstrap’s keyboard option).

§show_close: bool

Show the close button in the header.

§centered: bool

Center the modal vertically.

§scrollable: bool

Allow the modal body to scroll.

§fullscreen: ModalFullscreen

Fullscreen mode.

§class: String

Additional CSS classes for the modal-dialog.

§content_class: String

Additional CSS classes for the modal-content div.

This and the three below exist because .modal-content, .modal-header, .modal-body and .modal-footer are the elements a caller most often needs to reach — a border, a padding override, a scroll height. Without them the only route is hand-written Bootstrap markup, which is what the typed component replaces. Card already carries the equivalent set.

§header_class: String

Additional CSS classes for the modal-header div.

§body_class: String

Additional CSS classes for the modal-body div.

§footer_class: String

Additional CSS classes for the modal-footer div.

§style: String

Inline style, appended to the modal element’s own. Declared explicitly rather than left to the attribute spread because this element always sets style itself (display: block, which replaces Bootstrap’s JS-driven show): a caller style arriving through ..attributes would be a second style attribute on one element, and losing the fight would render the modal invisible.

§backdrop_class: String

Additional CSS classes for the backdrop element.

§backdrop_style: String

Inline style for the backdrop element. Bootstrap fixes the backdrop and the modal at adjacent z-indexes; a page that stacks its own overlays around them needs to be able to say where these two sit.

§on_dismiss: Option<EventHandler<()>>

Called whenever the modal closes itself — the close button, a backdrop click, or Escape. show is set to false first, so this is for the work that must accompany closing rather than for the closing itself.

Without it, state a caller clears in its own close handler is skipped by every dismissal path the component owns, and the only way to be sure was to switch all three off. Bootstrap fires hide.bs.modal/hidden.bs.modal for the same reason.

§children: Element

Child elements (alternative to body prop for custom layout).

Implementations§

Source§

impl ModalProps

Source

pub fn builder() -> ModalPropsBuilder<((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ())>

Create a builder for building ModalProps. On the builder, call .show(...), .title(...)(optional), .header(...)(optional), .body(...)(optional), .footer(...)(optional), .size(...)(optional), .backdrop_close(...)(optional), .keyboard_close(...)(optional), .show_close(...)(optional), .centered(...)(optional), .scrollable(...)(optional), .fullscreen(...)(optional), .class(...)(optional), .content_class(...)(optional), .header_class(...)(optional), .body_class(...)(optional), .footer_class(...)(optional), .style(...)(optional), .backdrop_class(...)(optional), .backdrop_style(...)(optional), .on_dismiss(...)(optional), .attributes(...)(optional), .children(...)(optional) to set the values of the fields. Finally, call .build() to create the instance of ModalProps.

Trait Implementations§

Source§

impl Clone for ModalProps

Source§

fn clone(&self) -> ModalProps

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl PartialEq for ModalProps

Source§

fn eq(&self, other: &ModalProps) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Properties for ModalProps
where Self: Clone,

Source§

type Builder = ModalPropsBuilder<((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ())>

The type of the builder for this component. Used to create “in-progress” versions of the props.
Source§

fn builder() -> Self::Builder

Create a builder for this component.
Source§

fn memoize(&mut self, new: &Self) -> bool

Make the old props equal to the new props. Return if the props were equal and should be memoized.
Source§

fn into_vcomponent<M>( self, render_fn: impl ComponentFunction<Self, M>, ) -> VComponent
where M: 'static,

Create a component from the props.
Source§

impl StructuralPartialEq for ModalProps

Auto Trait Implementations§

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DependencyElement for T
where T: 'static + PartialEq + Clone,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
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<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
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