diff --git a/lib/mv_web/live/user_live/form.ex b/lib/mv_web/live/user_live/form.ex index 6934cf5..9619a15 100644 --- a/lib/mv_web/live/user_live/form.ex +++ b/lib/mv_web/live/user_live/form.ex @@ -404,19 +404,7 @@ defmodule MvWeb.UserLive.Form do def handle_event("member_dropdown_keydown", %{"key" => "Enter"}, socket) do return_if_dropdown_closed(socket, fn -> - case socket.assigns.focused_member_index do - nil -> - {:noreply, socket} - - index -> - member = Enum.at(socket.assigns.available_members, index) - - if member do - handle_event("select_member", %{"id" => member.id}, socket) - else - {:noreply, socket} - end - end + select_focused_member(socket) end) end @@ -493,6 +481,18 @@ defmodule MvWeb.UserLive.Form do end end + # Select the currently focused member from the dropdown + @spec select_focused_member(Phoenix.LiveView.Socket.t()) :: + {:noreply, Phoenix.LiveView.Socket.t()} + defp select_focused_member(socket) do + with index when not is_nil(index) <- socket.assigns.focused_member_index, + member when not is_nil(member) <- Enum.at(socket.assigns.available_members, index) do + handle_event("select_member", %{"id" => member.id}, socket) + else + _ -> {:noreply, socket} + end + end + @spec assign_form(Phoenix.LiveView.Socket.t()) :: Phoenix.LiveView.Socket.t() defp assign_form(%{assigns: %{user: user, show_password_fields: show_password_fields}} = socket) do form =