mirror of
https://github.com/adoyle0/thaw.git
synced 2025-01-22 22:09:22 -05:00
feat: AutoComplete adds blur_after_select prop (#140)
This commit is contained in:
parent
f996a3b4ea
commit
12273fc7c4
3 changed files with 10 additions and 1 deletions
|
@ -137,6 +137,7 @@ pub fn SiteHeader() -> impl IntoView {
|
|||
placeholder="Type '/' to search"
|
||||
options=search_options
|
||||
clear_after_select=true
|
||||
blur_after_select=true
|
||||
on_select=on_search_select
|
||||
comp_ref=auto_complete_ref
|
||||
>
|
||||
|
|
|
@ -68,6 +68,7 @@ view! {
|
|||
| allow_free_input | `bool` | `false` | Whether free text input is allowed. |
|
||||
| invalid | `MaybeSignal<bool>` | `false` | Whether the input is invalid. |
|
||||
| clear_after_select | `MaybeSignal<bool>` | `false` | Whether to clear after selection. |
|
||||
| blur_after_select | `MaybeSignal<bool>` | `false` | Whether to blur after selection. |
|
||||
| on_select | `Option<Callback<String>>` | `None` | On select callback function. |
|
||||
| attr: | `Vec<(&'static str, Attribute)>` | `Default::default()` | The dom attrs of the input element inside the component. |
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ pub fn AutoComplete(
|
|||
#[prop(optional, into)] placeholder: OptionalProp<MaybeSignal<String>>,
|
||||
#[prop(optional, into)] options: MaybeSignal<Vec<AutoCompleteOption>>,
|
||||
#[prop(optional, into)] clear_after_select: MaybeSignal<bool>,
|
||||
#[prop(optional, into)] blur_after_select: MaybeSignal<bool>,
|
||||
#[prop(optional, into)] on_select: Option<Callback<String>>,
|
||||
#[prop(optional, into)] disabled: MaybeSignal<bool>,
|
||||
#[prop(optional, into)] allow_free_input: bool,
|
||||
|
@ -58,6 +59,8 @@ pub fn AutoComplete(
|
|||
css_vars
|
||||
});
|
||||
|
||||
let input_ref = ComponentRef::<InputRef>::new();
|
||||
|
||||
let default_index = if allow_free_input { None } else { Some(0) };
|
||||
|
||||
let select_option_index = create_rw_signal::<Option<usize>>(default_index);
|
||||
|
@ -89,6 +92,11 @@ pub fn AutoComplete(
|
|||
select_option_index.set(None);
|
||||
}
|
||||
is_show_menu.set(false);
|
||||
if blur_after_select.get_untracked() {
|
||||
if let Some(input_ref) = input_ref.get_untracked() {
|
||||
input_ref.blur();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// we unset selection index whenever options get changed
|
||||
|
@ -147,7 +155,6 @@ pub fn AutoComplete(
|
|||
}
|
||||
}
|
||||
};
|
||||
let input_ref = ComponentRef::<InputRef>::new();
|
||||
input_ref.on_load(move |_| {
|
||||
comp_ref.load(AutoCompleteRef { input_ref });
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue