Compare commits

..

1 commit

Author SHA1 Message Date
3da0ebcb3f
feat: Add keyboard navigation to member linking dropdown
All checks were successful
continuous-integration/drone/push Build is passing
2025-11-27 16:05:56 +01:00

View file

@ -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 =