Skip to main content

TextInput

Struct TextInput 

Source
pub struct TextInput {
Show 18 fields pub id: Option<NodeId>, pub value: String, pub placeholder: Option<TextContent>, pub on_change: Option<ActionEnvelope>, pub width: Option<f32>, pub height: Option<f32>, pub multiline: bool, pub min_lines: Option<usize>, pub max_lines: Option<usize>, pub obscure_text: bool, pub obscuring_character: char, pub mask: Option<InputMask>, pub styled_runs: Option<Vec<TextRun>>, pub borderless: bool, pub capture_tab: bool, pub auto_indent: bool, pub on_cursor_change: Option<ActionEnvelope>, pub highlight_ranges: Vec<(usize, usize, Color)>,
}
Expand description

An editable text field with support for single-line and multiline input, syntax highlighting, password masking, and IME composition.

TextInput is the primary text-editing widget. It manages its own scroll container, caret, selection, and (when styled_runs is provided) multi-colour syntax-highlighted rendering.

§Example

let on_change = ctx.bind(TextChanged { .. }, handle_text as fn(&mut S, TextChanged));

TextInput {
    value: view.state.query.clone(),
    placeholder: Some("Search...".into()),
    on_change: Some(on_change),
    ..Default::default()
}

§Code editor mode

For embedding in a code editor, enable borderless, capture_tab, auto_indent, and provide styled_runs for syntax highlighting:

TextInput {
    value: source_code.clone(),
    multiline: true,
    borderless: true,
    capture_tab: true,
    auto_indent: true,
    styled_runs: Some(highlighted_runs),
    ..Default::default()
}

Fields§

§id: Option<NodeId>

Explicit node identity (used for focus tracking and scroll state).

§value: String

The current text value (controlled by the application).

§placeholder: Option<TextContent>

Placeholder text shown when value is empty.

§on_change: Option<ActionEnvelope>

Action dispatched when the text changes.

§width: Option<f32>

Fixed width in layout points.

§height: Option<f32>

Fixed height in layout points.

§multiline: bool

When true, the input accepts newlines and scrolls vertically.

§min_lines: Option<usize>

Minimum number of visible lines (multiline only).

§max_lines: Option<usize>

Maximum number of visible lines (multiline only).

§obscure_text: bool

When true, display each grapheme as obscuring_character (password mode).

§obscuring_character: char

The character used when obscure_text is true (default: '•').

§mask: Option<InputMask>

Structural input mask (e.g. phone number, date).

§styled_runs: Option<Vec<TextRun>>

Pre-styled text runs for syntax highlighting.

When provided and no selection is active, these runs are rendered instead of the default single-colour text. The concatenated text of all runs must match value exactly.

§borderless: bool

When true, the background rect and border are omitted (for embedding in editor chrome).

§capture_tab: bool

When true, the Tab key inserts whitespace instead of moving focus.

§auto_indent: bool

When true, pressing Enter copies the leading whitespace of the current line (auto-indentation).

§on_cursor_change: Option<ActionEnvelope>

Action dispatched when the caret or selection anchor changes.

§highlight_ranges: Vec<(usize, usize, Color)>

Ranges to highlight in the text (e.g. find-match results).

Each entry is (start_byte, end_byte, background_color).

Implementations§

Source§

impl TextInput

Source

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

Source

pub fn into_node(self) -> Node

Trait Implementations§

Source§

impl Clone for TextInput

Source§

fn clone(&self) -> TextInput

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TextInput

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TextInput

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for TextInput

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<TextInput> for Node

Source§

fn from(w: TextInput) -> Self

Converts to this type from the input type.
Source§

impl Lower for TextInput

Source§

fn lower(&self, cx: &mut LoweringContext<'_>) -> NodeId

Lower this widget into the IR, returning the root node id.
Source§

impl Serialize for TextInput

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<S: AppState> Widget<S> for TextInput

Source§

fn build(&self, _ctx: &mut BuildCtx<S>, _view: &View<'_, S>) -> Node

Build the widget’s node tree. Read more

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> 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> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> 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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,