feat: add accessible empty value also to member fields
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
carla 2025-12-23 17:10:52 +01:00
parent 398a63a98f
commit 33652265b8

View file

@ -237,7 +237,7 @@ defmodule MvWeb.MemberLive.Show do
""" """
end end
# Renders a mailto link if email is present, otherwise renders nothing # Renders a mailto link if email is present, otherwise renders empty value placeholder
attr :email, :string, required: true attr :email, :string, required: true
attr :display, :string, default: nil attr :display, :string, default: nil
@ -255,9 +255,7 @@ defmodule MvWeb.MemberLive.Show do
</a> </a>
""" """
else else
~H""" render_empty_value()
<span class="text-base-content/50 italic"></span>
"""
end end
end end
@ -265,8 +263,8 @@ defmodule MvWeb.MemberLive.Show do
# Helper Functions # Helper Functions
# ----------------------------------------------------------------- # -----------------------------------------------------------------
defp display_value(nil), do: "" defp display_value(nil), do: render_empty_value()
defp display_value(""), do: "" defp display_value(""), do: render_empty_value()
defp display_value(value), do: value defp display_value(value), do: value
defp format_address(member) do defp format_address(member) do
@ -348,11 +346,16 @@ defmodule MvWeb.MemberLive.Show do
defp format_custom_field_value(value, _type), do: to_string(value) defp format_custom_field_value(value, _type), do: to_string(value)
# Renders placeholder for empty custom field values # Renders accessible placeholder for empty values
# Uses translated text for screen readers while maintaining visual consistency
# The visual "—" is hidden from screen readers, while the translated text is only visible to screen readers
defp render_empty_value do defp render_empty_value do
assigns = %{} assigns = %{text: gettext("Not set")}
~H""" ~H"""
<span class="text-base-content/50 italic"></span> <span class="text-base-content/50 italic">
<span aria-hidden="true"></span>
<span class="sr-only">{@text}</span>
</span>
""" """
end end
end end