fix: select all checkbox handling

This commit is contained in:
Simon 2026-01-29 15:14:36 +01:00
parent bb7e3cbe77
commit 124ab295a6
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
3 changed files with 41 additions and 26 deletions

View file

@ -90,11 +90,14 @@ defmodule MvWeb.UserLive.Index do
# Selects one user in the list of users
@impl true
def handle_event("select_user", %{"id" => id}, socket) do
# Normalize ID to string for consistent comparison
id_str = to_string(id)
selected =
if id in socket.assigns.selected_users do
List.delete(socket.assigns.selected_users, id)
if id_str in socket.assigns.selected_users do
List.delete(socket.assigns.selected_users, id_str)
else
[id | socket.assigns.selected_users]
[id_str | socket.assigns.selected_users]
end
{:noreply, assign(socket, :selected_users, selected)}
@ -129,7 +132,8 @@ defmodule MvWeb.UserLive.Index do
def handle_event("select_all", _params, socket) do
users = socket.assigns.users
all_ids = Enum.map(users, & &1.id)
# Normalize IDs to strings for consistent comparison
all_ids = Enum.map(users, &to_string(&1.id))
selected =
if Enum.sort(socket.assigns.selected_users) == Enum.sort(all_ids) do