fix: exit date as default hidden column
This commit is contained in:
parent
cbe05c5ca8
commit
38d106a69e
5 changed files with 41 additions and 10 deletions
|
|
@ -5,7 +5,7 @@ defmodule MvWeb.MemberFieldLive.IndexComponent do
|
|||
## Features
|
||||
- List all member fields from Mv.Constants.member_fields()
|
||||
- Display show_in_overview status as badge (Yes/No)
|
||||
- Display required status for required fields (first_name, last_name, email)
|
||||
- Display required status based on actual attribute definitions (allow_nil? false)
|
||||
- Edit member field properties (expandable form like custom fields)
|
||||
- Updates Settings.member_field_visibility
|
||||
"""
|
||||
|
|
@ -15,8 +15,6 @@ defmodule MvWeb.MemberFieldLive.IndexComponent do
|
|||
alias MvWeb.Translations.MemberFields
|
||||
alias MvWeb.Translations.FieldTypes
|
||||
|
||||
@required_fields [:first_name, :last_name, :email]
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
assigns =
|
||||
|
|
@ -245,6 +243,13 @@ defmodule MvWeb.MemberFieldLive.IndexComponent do
|
|||
|
||||
defp normalize_visibility_config(_), do: %{}
|
||||
|
||||
defp required?(field) when field in @required_fields, do: true
|
||||
# Check if a field is required by checking the actual attribute definition
|
||||
defp required?(field) when is_atom(field) do
|
||||
case Ash.Resource.Info.attribute(Mv.Membership.Member, field) do
|
||||
nil -> false
|
||||
attribute -> not attribute.allow_nil?
|
||||
end
|
||||
end
|
||||
|
||||
defp required?(_), do: false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -257,6 +257,24 @@
|
|||
>
|
||||
{MvWeb.MemberLive.Index.format_date(member.join_date)}
|
||||
</:col>
|
||||
<:col
|
||||
:let={member}
|
||||
:if={:exit_date in @member_fields_visible}
|
||||
label={
|
||||
~H"""
|
||||
<.live_component
|
||||
module={MvWeb.Components.SortHeaderComponent}
|
||||
id={:sort_exit_date}
|
||||
field={:exit_date}
|
||||
label={gettext("Exit Date")}
|
||||
sort_field={@sort_field}
|
||||
sort_order={@sort_order}
|
||||
/>
|
||||
"""
|
||||
}
|
||||
>
|
||||
{MvWeb.MemberLive.Index.format_date(member.exit_date)}
|
||||
</:col>
|
||||
<:col
|
||||
:let={member}
|
||||
label={gettext("Membership Fee Status")}
|
||||
|
|
|
|||
|
|
@ -183,7 +183,9 @@ defmodule MvWeb.MemberLive.Index.FieldVisibility do
|
|||
|
||||
Enum.reduce(member_fields, %{}, fn field, acc ->
|
||||
field_string = Atom.to_string(field)
|
||||
show_in_overview = Map.get(visibility_config, field, true)
|
||||
# exit_date defaults to false (hidden), all other fields default to true
|
||||
default_visibility = if field == :exit_date, do: false, else: true
|
||||
show_in_overview = Map.get(visibility_config, field, default_visibility)
|
||||
Map.put(acc, field_string, show_in_overview)
|
||||
end)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue