Skip to main content

NumberInput

Struct NumberInput 

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

A text field for a number: typing edits it like a text input, Up and Down step it.

Only digits can be typed, a minus when the range allows negative numbers and a decimal point when the step has decimals. The field shows the invalid state while its text is not a number or lies outside the range, and the application only ever receives valid numbers inside the range; an empty or unfinished field keeps the last valid value. Up and Down move one step and Page Up and Page Down ten, always clamped to the range. Everything else edits like a TextInput: cursor, selection, undo and clipboard.

With NumberInput::steppers two segments on the right step the value when clicked. The wheel over the field moves one step per notch, and a right click opens the text input’s edit menu (Cut, Copy, Paste, Select all); pasted text keeps only the characters a number allows.

Style keys: those of the text input (text-input, text-input-prompt, …) and number-input-stepper (bg, fg) with states hover, focus, pressed, disabled.

Implementations§

Source§

impl<Msg: 'static> NumberInput<Msg>

Source

pub fn new(value: f64) -> Self

A field showing value, without limits, stepping by 1.

Source

pub fn range(self, min: f64, max: f64) -> Self

The smallest and largest allowed value.

Source

pub fn step(self, step: f64) -> Self

How far Up and Down move the value. The step’s decimals decide how the value is written and whether a decimal point can be typed.

Source

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

Shows clickable minus and plus segments on the right.

Source

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

Faint text shown while the field is empty.

Source

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

Marks the value as failing the application’s own validation.

Source

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

Makes the field read-only and unfocusable.

Source

pub fn on_change(self, message: impl Fn(f64) -> Msg + 'static) -> Self

Message carrying the new value after every change to a valid number.

Trait Implementations§

Source§

impl<Msg: 'static> Widget<Msg> for NumberInput<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 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.
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.

Auto Trait Implementations§

§

impl<Msg> !RefUnwindSafe for NumberInput<Msg>

§

impl<Msg> !Send for NumberInput<Msg>

§

impl<Msg> !Sync for NumberInput<Msg>

§

impl<Msg> !UnwindSafe for NumberInput<Msg>

§

impl<Msg> Freeze for NumberInput<Msg>
where Option<Box<dyn Fn(f64) -> Msg>>: Freeze,

§

impl<Msg> Unpin for NumberInput<Msg>
where Option<Box<dyn Fn(f64) -> Msg>>: Unpin,

§

impl<Msg> UnsafeUnpin for NumberInput<Msg>
where Option<Box<dyn Fn(f64) -> 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.