Implement dropdown to show/hide columns in member overview closes #209 #240

Merged
moritz merged 28 commits from feature/209_hide_field_dropdown into main 2025-12-03 19:01:15 +01:00
Showing only changes of commit fabfe64468 - Show all commits

View file

@ -45,13 +45,13 @@ defmodule MvWeb.Components.FieldVisibilityDropdownComponent do
custom_fields = assigns.custom_fields || [] custom_fields = assigns.custom_fields || []
all_items = all_items =
Enum.map(member_fields(all_fields), fn field -> Enum.map(extract_member_field_keys(all_fields), fn field ->
%{ %{
value: field_to_string(field), value: field_to_string(field),
label: format_field_label(field) label: format_field_label(field)
} }
end) ++ end) ++
Enum.map(custom_fields(all_fields), fn field -> Enum.map(extract_custom_field_keys(all_fields), fn field ->
%{ %{
value: field, value: field,
label: format_custom_field_label(field, custom_fields) label: format_custom_field_label(field, custom_fields)
@ -128,18 +128,18 @@ defmodule MvWeb.Components.FieldVisibilityDropdownComponent do
# HELPERS (with defensive nil guards) # HELPERS (with defensive nil guards)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
defp member_fields(nil), do: [] defp extract_member_field_keys(nil), do: []
defp member_fields(fields) do defp extract_member_field_keys(fields) do
Enum.filter(fields, fn field -> Enum.filter(fields, fn field ->
is_atom(field) || is_atom(field) ||
(is_binary(field) && not String.starts_with?(field, "custom_field_")) (is_binary(field) && not String.starts_with?(field, "custom_field_"))
end) end)
end end
defp custom_fields(nil), do: [] defp extract_custom_field_keys(nil), do: []
defp custom_fields(fields) do defp extract_custom_field_keys(fields) do
Enum.filter(fields, fn field -> Enum.filter(fields, fn field ->
is_binary(field) && String.starts_with?(field, "custom_field_") is_binary(field) && String.starts_with?(field, "custom_field_")
end) end)