mitgliederverwaltung/lib/mv_web/live/user_live/index.html.heex
carla 4ac56958b4
All checks were successful
continuous-integration/drone/push Build is passing
feat: keep empty cells consistent empty
2026-02-26 13:37:35 +01:00

62 lines
1.8 KiB
Text

<Layouts.app flash={@flash} current_user={@current_user}>
<.header>
{gettext("Users")}
<:subtitle>{gettext("Manage users and their permissions.")}</:subtitle>
<:actions>
<%= if can?(@current_user, :create, Mv.Accounts.User) do %>
<.button variant="primary" navigate={~p"/users/new"} data-testid="user-new">
<.icon name="hero-plus" /> {gettext("New User")}
</.button>
<% end %>
</:actions>
</.header>
<.table
id="users"
rows={@users}
row_id={fn user -> "row-#{user.id}" end}
row_click={fn user -> JS.navigate(~p"/users/#{user}") end}
row_tooltip={gettext("Click for user details")}
sort_field={@sort_field}
sort_order={@sort_order}
>
<:col
:let={user}
sort_field={:email}
label={
sort_button(%{
field: :email,
label: gettext("Email"),
sort_field: @sort_field,
sort_order: @sort_order
})
}
>
{user.email}
</:col>
<:col :let={user} label={gettext("Role")}>
{user.role.name}
</:col>
<:col :let={user} label={gettext("Linked Member")}>
<.maybe_value value={user.member} empty_sr_text={gettext("No member linked")}>
{MvWeb.Helpers.MemberHelpers.display_name(user.member)}
</.maybe_value>
</:col>
<:col :let={user} label={gettext("Password")}>
<.maybe_value
value={MvWeb.Helpers.UserHelpers.has_password?(user)}
empty_sr_text={gettext("Not set")}
>
<span>{gettext("Enabled")}</span>
</.maybe_value>
</:col>
<:col :let={user} label={gettext("OIDC")}>
<.maybe_value
value={MvWeb.Helpers.UserHelpers.has_oidc?(user)}
empty_sr_text={gettext("Not set")}
>
<span>{gettext("Linked")}</span>
</.maybe_value>
</:col>
</.table>
</Layouts.app>