Skip to main content

Field

Struct Field 

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

A labelled control: the label, the control the application adds inside, and under it a faint hint or, when there is one, the error in the danger colour with a marker.

The field only lays things out. The application owns the value and its error, and marks the control itself as invalid (TextInput::invalid). The label brightens while the control has focus. Required fields show a faint word after the label; nothing is starred.

Labels sit above the control by default. With Field::label_width they take a column of that width beside the control whenever the field is wide enough, and move above it again on narrow screens. A control that asks for more than the room beside the label (an input with a long placeholder) puts its label above as well and takes the whole row instead of being cut. The column is at least as wide as the required word of the active language.

Style keys: field-label (fg, bold) with states focus and disabled; field-required, field-hint and field-error (fg). The required word is quvyta.form.required; the error marker is the error icon.

Implementations§

Source§

impl<Msg: 'static> Field<Msg>

Source

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

A field labelled label. Add its control with View::add_with or FormFields::field.

Source

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

Faint help under the control, shown while there is no error.

Source

pub fn error<S: Into<String>>(self, error: Option<S>) -> Self

The error under the control; None shows the hint instead. Pass FormErrors::get straight in.

Source

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

Shows the faint “required” word after the label.

Source

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

Greys the label out; disable the control as well.

Source

pub fn label_width(self, cells: u16) -> Self

Puts the label in a column cells wide beside the control when the field is at least that wide plus room for a control; otherwise the label stays above.

Trait Implementations§

Source§

impl<Msg: 'static> Container<Msg> for Field<Msg>

Source§

fn set_children(&mut self, children: Vec<Node<Msg>>)

Receives the children built for this widget.
Source§

impl<Msg: 'static> Widget<Msg> for Field<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 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 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 focusable(&self) -> bool

Whether the widget can take keyboard focus.

Auto Trait Implementations§

§

impl<Msg> !RefUnwindSafe for Field<Msg>

§

impl<Msg> !Send for Field<Msg>

§

impl<Msg> !Sync for Field<Msg>

§

impl<Msg> !UnwindSafe for Field<Msg>

§

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

§

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

§

impl<Msg> UnsafeUnpin for Field<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.