pub struct SearchView<State: 'static> { /* private fields */ }Expand description
A search view’s content, before a presentation is chosen. See the module docs.
Implementations§
Source§impl<State: 'static> SearchView<State>
impl<State: 'static> SearchView<State>
Sourcepub fn hint(self, hint: impl Into<String>) -> Self
pub fn hint(self, hint: impl Into<String>) -> Self
Set the field’s placeholder (M3ESearchAnchor.viewHintText), which also
labels the view’s accessibility node.
Sourcepub fn leading(self, view: impl View<State>) -> Self
pub fn leading(self, view: impl View<State>) -> Self
Replace the header’s default back affordance
(M3ESearchAnchor.viewLeading). The slot is never empty.
Sourcepub fn trailing(self, view: impl View<State>) -> Self
pub fn trailing(self, view: impl View<State>) -> Self
Append a trailing header action. Setting any replaces the built-in clear
button — M3ESearchAnchor.viewTrailing’s own
widget.viewTrailing ?? [clear] precedence.
Sourcepub fn suggestions<V: View<State>>(self, view: V) -> Self
pub fn suggestions<V: View<State>>(self, view: V) -> Self
Set the body slot: the suggestion list this view shows under its header
(M3ESearchAnchor.suggestionsBuilder’s output). A view with none shows
an empty body.
Sourcepub fn on_submit<F: Fn(&mut State, String) + 'static>(
self,
on_submit: F,
) -> Self
pub fn on_submit<F: Fn(&mut State, String) + 'static>( self, on_submit: F, ) -> Self
Set the Enter handler (M3ESearchAnchor.viewOnSubmitted).
Sourcepub fn on_back<F: Fn(&mut State) + 'static>(self, on_back: F) -> Self
pub fn on_back<F: Fn(&mut State) + 'static>(self, on_back: F) -> Self
Set the header back affordance’s handler. show_search_view wires
this to controller.pop(); a docked view falls back to its own
on_dismiss when this is unset, since a docked
back press is a dismissal. See the module docs’ header note
for why this dismissal is not staged.
Sourcepub fn dismissable(self, dismissable: bool) -> Self
pub fn dismissable(self, dismissable: bool) -> Self
Whether the user can dismiss a full-screen view at all — its scrim tap,
Escape and the Android back press (default true; see
crate::overlay::modal). No effect on a docked view, whose
lifetime is the app’s own open flag.
Sourcepub fn on_dismiss<F: Fn(&mut State) + 'static>(self, on_dismiss: F) -> Self
pub fn on_dismiss<F: Fn(&mut State) + 'static>(self, on_dismiss: F) -> Self
Set the dismiss callback.
- Docked: the host’s light dismiss (a press outside the panel, or
Escapewhile it holds focus) and, unlesson_backoverrides it, the header’s back affordance — wire it to the flagDockedSearchViewView::openreads. - Full-screen: the unstaged dismissal, delivered with
&mut Stateduring the event pass.show_search_viewwires the staged (navigator-pop) path instead, so set this only for aStack-mounted view with no navigator underneath it.
Sourcepub fn full_screen(self) -> SearchViewView<State>
pub fn full_screen(self) -> SearchViewView<State>
Finish as the full-screen presentation: crate::overlay::modal’s
host filling the whole area. show_search_view is the navigator push
most callers want.
Sourcepub fn docked(self, anchor: &OverlayAnchor) -> DockedSearchViewView<State>
pub fn docked(self, anchor: &OverlayAnchor) -> DockedSearchViewView<State>
Finish as the docked presentation: an
crate::overlay::anchored_overlay placed over anchor’s own rect
(the bar’s — wrap it in crate::overlay::overlay_anchor).
Keep the host mounted and toggle DockedSearchViewView::open so its
exit ramp can run (docs/LIMITATIONS.md’s
shadcn-anchored-exit-needs-kept-mounted).
on_dismiss serves both exits here — the light
dismiss and the header’s back affordance — so one closure closes the
view however the user asks.
search_view(state.query.clone(), |s: &mut App, q| s.query = q)
.suggestions(suggestion_list())
.on_dismiss(|s: &mut App| s.search_open = false)
.docked(&state.search_anchor)
.open(state.search_open)Auto Trait Implementations§
impl<State> !RefUnwindSafe for SearchView<State>
impl<State> !Send for SearchView<State>
impl<State> !Sync for SearchView<State>
impl<State> !UnwindSafe for SearchView<State>
impl<State> Freeze for SearchView<State>
impl<State> Unpin for SearchView<State>
impl<State> UnsafeUnpin for SearchView<State>where
Rc<dyn Fn(&mut State, String)>: UnsafeUnpin,
Option<AnyView<State>>: UnsafeUnpin,
Vec<AnyView<State>>: UnsafeUnpin,
Option<Rc<dyn Fn(&mut State, String)>>: UnsafeUnpin,
Option<Rc<dyn Fn(&mut State)>>: UnsafeUnpin,
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.