diff --git a/aep-schedule-website/src/frontend/components/common/autocomplete.rs b/aep-schedule-website/src/frontend/components/common/autocomplete.rs index 1daa4704d83247ba542a5d78e325199d53c83bdf..4e1bf07571c67546625cce9f0729af7e2de346d6 100644 --- a/aep-schedule-website/src/frontend/components/common/autocomplete.rs +++ b/aep-schedule-website/src/frontend/components/common/autocomplete.rs @@ -54,6 +54,14 @@ pub fn AutoComplete<F: FnMut(String) + Copy + Clone + 'static>( get_suggestions(suggestion_list, is_hidden, value, set_suggestion_range); }; + let mut select_choice = move |choice: String| { + input.update(|s| s.clear()); + set_suggestion_range.set(0..0); + is_hidden.set(true); + + submit(choice); + }; + let button_theme = move || { let is_hidden = is_hidden.get(); match is_hidden { @@ -67,15 +75,13 @@ pub fn AutoComplete<F: FnMut(String) + Copy + Clone + 'static>( <input type="text" class="py-2 px-3 block w-full border-gray-200 rounded-lg text-sm focus:border-blue-500 focus:ring-blue-500 disabled:opacity-50 disabled:pointer-events-none text-black" on:input=on_input placeholder=placeholder prop:value=input id=id on:keyup=move |ev| { if ev.key() == "Enter" && !is_hidden.get() { let course = input.get().trim().to_uppercase(); - input.update(|s| s.clear()); - set_suggestion_range.set(0..0); - submit(course); + select_choice(course); } } /> <button class=button_theme on:pointerdown=move |_| { let input = input.get().trim().to_uppercase(); - submit(input); + select_choice(input); }> <PlusCircle size="2em"/> </button> @@ -83,7 +89,7 @@ pub fn AutoComplete<F: FnMut(String) + Copy + Clone + 'static>( {suggestions.into_iter().enumerate().map(|(i, autocomplete)| view!{ <div class=("hidden", move || {!suggestion_range.get().contains(&i)}) - on:pointerdown=move |_| submit(autocomplete.value.clone()) + on:pointerdown=move |_| select_choice(autocomplete.value.clone()) > {autocomplete.label} </div>