Skip to main content

EmptyState

Struct EmptyState 

Source
pub struct EmptyState<Msg> { /* private fields */ }
Expand description

A centred block explaining why an area is empty and what to do about it.

Reads, from top to bottom: an optional muted icon, a title, an optional explanation that wraps to at most 52 cells, and the action buttons. When the area is short, the icon goes first, then the space above the buttons, then explanation lines; the title and the buttons stay.

action may be called more than once: every call adds a button, and the first one added is the primary choice in reading and focus order. They stand side by side, centred, ACTION_GAP cells apart as in a dialog; where they do not fit the width they stand one under another, centred, with a blank row between so their surfaces never merge. Tab and the arrow keys visit them in the order they were added.

tone marks the block as a status: the icon and the title take the success, warning, danger or info colour a Toast marks its kind with, and the icon is the sign that goes with the colour, so an error is never a bare colour.

Style keys: empty-state-icon (fg), empty-state-title (fg, bold), empty-state-message (fg).

Implementations§

Source§

impl<Msg: Clone + 'static> EmptyState<Msg>

Source

pub fn new(title: impl Into<String>) -> Self

An empty state reading title, e.g. “No containers yet”.

Source

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

Icon key drawn above the title in a muted colour when no status tone supplies its sign.

Source

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

One or two sentences under the title: why it is empty, or what will appear here.

Source

pub fn tone(self, tone: ToastKind) -> Self

The status the block reports: the icon and the title take the success, warning, danger or info colour, and the icon is the sign that goes with it. Without a tone both keep the colours the theme gives them. A tone supplies its own sign in place of a custom icon key.

Source

pub fn action(self, button: Button<Msg>) -> Self

The way out, e.g. Button::new("Create container").variant("primary").on_press(..).

Call it once for each of several equal choices, such as “Install here” beside “Show the command”: they keep the order they are added in, so the first one is the primary, the one to mark primary, and the one Tab and the arrow keys reach first.

Trait Implementations§

Source§

impl<Msg: Clone + 'static> Widget<Msg> for EmptyState<Msg>

Source§

fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size

The size the widget wants when it may use up to available.
Source§

fn paint(&self, cx: &mut PaintCx<'_>, area: Rect)

Draws the widget into area.
Source§

fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool

Handles input. Returns true when the event was used; unused key and scroll events bubble to the parent widget.
Source§

fn children(&self) -> &[Node<Msg>]

Child nodes, for widgets that contain other widgets.
Source§

fn children_mut(&mut self) -> &mut [Node<Msg>]

Mutable child nodes, used to assign ids.
Source§

fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)

Draws the widget’s overlay after the whole view was painted, when it asked for one with PaintCx::request_overlay. anchor is the area the widget was painted in.
Source§

fn focusable(&self) -> bool

Whether the widget can take keyboard focus.

Auto Trait Implementations§

§

impl<Msg> !RefUnwindSafe for EmptyState<Msg>

§

impl<Msg> !Send for EmptyState<Msg>

§

impl<Msg> !Sync for EmptyState<Msg>

§

impl<Msg> !UnwindSafe for EmptyState<Msg>

§

impl<Msg> Freeze for EmptyState<Msg>
where Vec<Node<Msg>>: Freeze,

§

impl<Msg> Unpin for EmptyState<Msg>
where Vec<Node<Msg>>: Unpin,

§

impl<Msg> UnsafeUnpin for EmptyState<Msg>
where Vec<Node<Msg>>: UnsafeUnpin,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
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.