diff --git a/lib/mv_web/live/components/field_visibility_dropdown_component.ex b/lib/mv_web/live/components/field_visibility_dropdown_component.ex
index 5fc0abf..426daed 100644
--- a/lib/mv_web/live/components/field_visibility_dropdown_component.ex
+++ b/lib/mv_web/live/components/field_visibility_dropdown_component.ex
@@ -18,6 +18,8 @@ defmodule MvWeb.Components.FieldVisibilityDropdownComponent do
use MvWeb, :live_component
+ alias MvWeb.Translations.MemberFields
+
# ---------------------------------------------------------------------------
# UPDATE
# ---------------------------------------------------------------------------
@@ -66,7 +68,7 @@ defmodule MvWeb.Components.FieldVisibilityDropdownComponent do
<.dropdown_menu
id="field-visibility-menu"
icon="hero-adjustments-horizontal"
- button_label={gettext("Columns")}
+ button_label={gettext("Show/Hide Columns")}
items={@all_items}
checkboxes={true}
selected={@selected_fields}
@@ -153,12 +155,12 @@ defmodule MvWeb.Components.FieldVisibilityDropdownComponent do
defp field_to_string(field) when is_binary(field), do: field
defp format_field_label(field) when is_atom(field) do
- MvWeb.Translations.MemberFields.label(field)
+ MemberFields.label(field)
end
defp format_field_label(field) when is_binary(field) do
case safe_to_existing_atom(field) do
- {:ok, atom} -> MvWeb.Translations.MemberFields.label(atom)
+ {:ok, atom} -> MemberFields.label(atom)
:error -> fallback_label(field)
end
end
diff --git a/lib/mv_web/live/member_field_live/form_component.ex b/lib/mv_web/live/member_field_live/form_component.ex
index 0f0b446..1bba048 100644
--- a/lib/mv_web/live/member_field_live/form_component.ex
+++ b/lib/mv_web/live/member_field_live/form_component.ex
@@ -3,22 +3,28 @@ defmodule MvWeb.MemberFieldLive.FormComponent do
LiveComponent form for editing member field properties (embedded in settings).
## Features
- - Edit member field properties (name, value type, description, immutable, required, show in overview)
- - Display member field information from Member Resource
+ - Edit member field visibility (show_in_overview)
+ - Display member field information from Member Resource (read-only)
- Restrict editing for email field (only show_in_overview can be changed)
- Real-time validation
- - Updates Settings.member_field_visibility
+ - Updates Settings.member_field_visibility atomically
## Props
- `member_field` - The member field atom to edit (e.g., :first_name, :email)
- `settings` - The current Settings resource
- `on_save` - Callback function to call when form is saved
- `on_cancel` - Callback function to call when form is cancelled
+
+ ## Note
+ Member fields are technical fields that cannot be changed (name, value_type, description, required).
+ Only the visibility (show_in_overview) can be modified.
"""
use MvWeb, :live_component
+ alias Mv.Helpers.TypeParsers
alias Mv.Membership
- alias MvWeb.Translations.FieldTypes
+ alias Mv.Membership.Helpers.VisibilityConfig
+ alias MvWeb.Helpers.FieldTypeFormatter
alias MvWeb.Translations.MemberFields
@required_fields [:first_name, :last_name, :email]
@@ -39,7 +45,7 @@ defmodule MvWeb.MemberFieldLive.FormComponent do
type="button"
phx-click="cancel"
phx-target={@myself}
- aria-label={gettext("Back to member field overview")}
+ aria-label={gettext("Back to Settings")}
>
<.icon name="hero-arrow-left" class="w-4 h-4" />
@@ -102,7 +108,7 @@ defmodule MvWeb.MemberFieldLive.FormComponent do
type="text"
name={@form[:value_type].name}
id={@form[:value_type].id}
- value={format_value_type(@field_attributes.value_type)}
+ value={FieldTypeFormatter.format(@field_attributes.value_type)}
disabled
readonly
class="w-full input"
@@ -148,47 +154,6 @@ defmodule MvWeb.MemberFieldLive.FormComponent do
readonly={@is_email_field?}
/>
-