diff --git a/lib/mv_web/live/member_live/index.ex b/lib/mv_web/live/member_live/index.ex index 8fb50b9..3283b5c 100644 --- a/lib/mv_web/live/member_live/index.ex +++ b/lib/mv_web/live/member_live/index.ex @@ -821,9 +821,10 @@ defmodule MvWeb.MemberLive.Index do only_url = FieldVisibility.selection_from_url_only(url_selection, socket.assigns.all_custom_fields) - visible = FieldVisibility.get_visible_member_fields(only_url) + visible_members = FieldVisibility.get_visible_member_fields(only_url) + visible_custom = FieldVisibility.get_visible_custom_fields(only_url) - if visible == [] do + if visible_members == [] and visible_custom == [] do # URL had only invalid field names; fall back to session + global. compute_final_field_selection(false, url_selection, socket) else diff --git a/test/mv_web/member_live/index_field_visibility_test.exs b/test/mv_web/member_live/index_field_visibility_test.exs index 8de9c7e..79d078b 100644 --- a/test/mv_web/member_live/index_field_visibility_test.exs +++ b/test/mv_web/member_live/index_field_visibility_test.exs @@ -361,6 +361,18 @@ defmodule MvWeb.MemberLive.IndexFieldVisibilityTest do assert html =~ "Alice" end + test "URL with only custom field keeps custom field visible (no invalid fallback)", %{ + conn: conn, + custom_field: custom_field + } do + conn = conn_with_oidc_user(conn) + id = custom_field.id + {:ok, _view, html} = live(conn, "/members?fields=custom_field_#{id}") + + # Selection must not be treated as invalid; custom field column stays visible + assert html =~ "M001" or html =~ custom_field.name + end + test "handles rapid toggling", %{conn: conn} do conn = conn_with_oidc_user(conn) {:ok, view, _html} = live(conn, "/members")