pub struct TextInput { /* private fields */ }Expand description
A single-line text field. Create with cx.new(|cx| TextInput::new(cx)).
Implementations§
Source§impl TextInput
impl TextInput
pub fn new(cx: &mut Context<'_, Self>) -> Self
pub fn value(self, value: &str) -> Self
pub fn placeholder(self, placeholder: impl Into<SharedString>) -> Self
pub fn label(self, label: impl Into<SharedString>) -> Self
pub fn description(self, description: impl Into<SharedString>) -> Self
pub fn error(self, error: impl Into<SharedString>) -> Self
pub fn size(self, size: Size) -> Self
pub fn radius(self, radius: Size) -> Self
pub fn disabled(self, disabled: bool) -> Self
Sourcepub fn read_only(self, read_only: bool) -> Self
pub fn read_only(self, read_only: bool) -> Self
Selectable and copyable, but not editable — an <input readonly>.
Unlike disabled the field still takes focus.
pub fn password(self, password: bool) -> Self
Sourcepub fn max_length(self, max: usize) -> Self
pub fn max_length(self, max: usize) -> Self
Cap the value’s length in characters, like <input maxlength>.
Sourcepub fn set_text(&mut self, value: &str, cx: &mut Context<'_, Self>)
pub fn set_text(&mut self, value: &str, cx: &mut Context<'_, Self>)
Replace the text programmatically.
Sourcepub fn select_all(&mut self, cx: &mut Context<'_, Self>)
pub fn select_all(&mut self, cx: &mut Context<'_, Self>)
Select the whole value, as focusing a field with <input autofocus>
and a preset value tends to.
Sourcepub fn bind(entity: &Entity<TextInput>, signal: &Signal<String>, cx: &mut App)
pub fn bind(entity: &Entity<TextInput>, signal: &Signal<String>, cx: &mut App)
Two-way bind the text to a Signal<String>. The signal is the source
of truth: the field adopts its value now, edits write back through
Signal::set_if_changed, and signal writes replace the text without
emitting. Equality guards on both directions prevent update loops.
Source§impl TextInput
impl TextInput
Sourcepub fn tab_index(self, index: isize) -> Self
pub fn tab_index(self, index: isize) -> Self
Where this field sits in the window’s Tab order. Fields default to 0, which walks them in render order; set this only to override that.
Sourcepub fn tab_stop(self, tab_stop: bool) -> Self
pub fn tab_stop(self, tab_stop: bool) -> Self
Leave the field out of the Tab order without disabling it.
Sourcepub fn focus_handle(&self) -> FocusHandle
pub fn focus_handle(&self) -> FocusHandle
The field’s focus handle, so a host can focus it on open.
Trait Implementations§
Source§impl EntityInputHandler for TextInput
impl EntityInputHandler for TextInput
Source§fn text_for_range(
&mut self,
range_utf16: Range<usize>,
actual: &mut Option<Range<usize>>,
_window: &mut Window,
_cx: &mut Context<'_, Self>,
) -> Option<String>
fn text_for_range( &mut self, range_utf16: Range<usize>, actual: &mut Option<Range<usize>>, _window: &mut Window, _cx: &mut Context<'_, Self>, ) -> Option<String>
InputHandler::text_for_range for detailsSource§fn selected_text_range(
&mut self,
_ignore_disabled: bool,
_window: &mut Window,
_cx: &mut Context<'_, Self>,
) -> Option<UTF16Selection>
fn selected_text_range( &mut self, _ignore_disabled: bool, _window: &mut Window, _cx: &mut Context<'_, Self>, ) -> Option<UTF16Selection>
InputHandler::selected_text_range for detailsSource§fn marked_text_range(
&self,
_window: &mut Window,
_cx: &mut Context<'_, Self>,
) -> Option<Range<usize>>
fn marked_text_range( &self, _window: &mut Window, _cx: &mut Context<'_, Self>, ) -> Option<Range<usize>>
InputHandler::marked_text_range for detailsSource§fn unmark_text(&mut self, _window: &mut Window, _cx: &mut Context<'_, Self>)
fn unmark_text(&mut self, _window: &mut Window, _cx: &mut Context<'_, Self>)
InputHandler::unmark_text for detailsSource§fn replace_text_in_range(
&mut self,
range_utf16: Option<Range<usize>>,
text: &str,
_window: &mut Window,
cx: &mut Context<'_, Self>,
)
fn replace_text_in_range( &mut self, range_utf16: Option<Range<usize>>, text: &str, _window: &mut Window, cx: &mut Context<'_, Self>, )
InputHandler::replace_text_in_range for detailsSource§fn replace_and_mark_text_in_range(
&mut self,
range_utf16: Option<Range<usize>>,
text: &str,
selected_utf16: Option<Range<usize>>,
_window: &mut Window,
cx: &mut Context<'_, Self>,
)
fn replace_and_mark_text_in_range( &mut self, range_utf16: Option<Range<usize>>, text: &str, selected_utf16: Option<Range<usize>>, _window: &mut Window, cx: &mut Context<'_, Self>, )
InputHandler::replace_and_mark_text_in_range for detailsSource§fn bounds_for_range(
&mut self,
range_utf16: Range<usize>,
bounds: Bounds<Pixels>,
_window: &mut Window,
_cx: &mut Context<'_, Self>,
) -> Option<Bounds<Pixels>>
fn bounds_for_range( &mut self, range_utf16: Range<usize>, bounds: Bounds<Pixels>, _window: &mut Window, _cx: &mut Context<'_, Self>, ) -> Option<Bounds<Pixels>>
InputHandler::bounds_for_range for detailsSource§fn character_index_for_point(
&mut self,
point: Point<Pixels>,
_window: &mut Window,
_cx: &mut Context<'_, Self>,
) -> Option<usize>
fn character_index_for_point( &mut self, point: Point<Pixels>, _window: &mut Window, _cx: &mut Context<'_, Self>, ) -> Option<usize>
InputHandler::character_index_for_point for detailsimpl EventEmitter<TextInputEvent> for TextInput
Source§impl LineEditor for TextInput
impl LineEditor for TextInput
fn edit(&self) -> &TextEdit
fn edit_mut(&mut self) -> &mut TextEdit
fn line(&self) -> &LineState
fn line_mut(&mut self) -> &mut LineState
fn line_focus(&self) -> &FocusHandle
Source§fn line_masked(&self) -> bool
fn line_masked(&self) -> bool
Source§fn line_read_only(&self) -> bool
fn line_read_only(&self) -> bool
Source§fn line_max_length(&self) -> Option<usize>
fn line_max_length(&self) -> Option<usize>
<input maxlength> is.Source§fn line_changed(&mut self, cx: &mut Context<'_, Self>)
fn line_changed(&mut self, cx: &mut Context<'_, Self>)
cx.notify on the host’s behalf; do it here.Source§fn line_filter(&self, text: String) -> String
fn line_filter(&self, text: String) -> String
<input type="number"> does.
Returns the text to actually insert; dropping every char rejects the
input. Applied to typing, IME, drops, and paste alike, so a field can’t
be filled with something it rejects by any route.Auto Trait Implementations§
impl !RefUnwindSafe for TextInput
impl !UnwindSafe for TextInput
impl Freeze for TextInput
impl Send for TextInput
impl Sync for TextInput
impl Unpin for TextInput
impl UnsafeUnpin for TextInput
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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