diff --git a/lib/live_select/component.ex b/lib/live_select/component.ex index c9db7e5..13384da 100644 --- a/lib/live_select/component.ex +++ b/lib/live_select/component.ex @@ -486,6 +486,7 @@ defmodule LiveSelect.Component do else [selected] end + |> Enum.reject(&is_nil/1) socket = socket diff --git a/test/live_select_test.exs b/test/live_select_test.exs index ace4833..473ba51 100644 --- a/test/live_select_test.exs +++ b/test/live_select_test.exs @@ -1106,4 +1106,23 @@ defmodule LiveSelectTest do assert_selected(live, "A") end end + + test "handles nil in options list when navigating and clearing input", %{conn: conn} do + stub_options([{"A", 1}, {"B", 2}, {"C", 3}]) + + {:ok, live, _html} = live(conn, "/") + + type(live, "ABC") + + assert_options(live, ["A", "B", "C"]) + + keydown(live, "ArrowDown") + keydown(live, "Backspace") + + type(live, "") + + keydown(live, "Enter") + + refute_selected(live) + end end