feat(overview): replace filter panel with add-filter builder and aging column
Swaps the unbounded vertical filter panel for a Polaris-style add-filter builder (searchable grouped field picker, type-aware value control, applied chips) and colour-codes the fees column with each member's period-scoped unpaid-cycle count.
This commit is contained in:
parent
7d1a71b1fd
commit
c547ca19af
35 changed files with 2817 additions and 3149 deletions
|
|
@ -65,21 +65,22 @@ defmodule MvWeb.MemberLive.IndexGroupsAccessibilityTest do
|
|||
end
|
||||
|
||||
@tag :ui
|
||||
test "filter dropdown has group presence section with legend", %{
|
||||
test "field picker exposes a combobox with a Group field option", %{
|
||||
conn: conn
|
||||
} do
|
||||
conn = conn_with_oidc_user(conn)
|
||||
{:ok, view, _html} = live(conn, "/members")
|
||||
|
||||
# Open filter dropdown
|
||||
view
|
||||
|> element("button[aria-label='Filter members']")
|
||||
|> render_click()
|
||||
# Open the add-filter picker (combobox + listbox of grouped fields)
|
||||
open_picker(view)
|
||||
|
||||
html = render(view)
|
||||
# Groups section: legend "Member has groups" and radios (Any / Yes / No)
|
||||
assert html =~ ~r/[Gg]roups/
|
||||
assert has_element?(view, "[data-testid='member-filter-form']")
|
||||
assert has_element?(view, "[data-testid='field-combobox'][role='combobox']")
|
||||
assert has_element?(view, "#member-filter-field-listbox[role='listbox']")
|
||||
assert has_element?(view, "#member-filter-field-opt-group[role='option']")
|
||||
|
||||
# Picking the Group field opens its value control with per-group legends.
|
||||
view |> element("#member-filter-field-opt-group") |> render_click()
|
||||
assert has_element?(view, "[data-testid='value-control-group']")
|
||||
end
|
||||
|
||||
@tag :ui
|
||||
|
|
@ -102,13 +103,7 @@ defmodule MvWeb.MemberLive.IndexGroupsAccessibilityTest do
|
|||
conn = conn_with_oidc_user(conn)
|
||||
{:ok, view, _html} = live(conn, "/members")
|
||||
|
||||
view
|
||||
|> element("button[aria-label='Filter members']")
|
||||
|> render_click()
|
||||
|
||||
view
|
||||
|> element("[data-testid='member-filter-form']")
|
||||
|> render_change(%{"group_#{group1.id}" => "in", "payment_filter" => "all"})
|
||||
apply_group_filter(view, group1.id, "in")
|
||||
|
||||
html = render(view)
|
||||
assert html =~ member1.first_name
|
||||
|
|
@ -140,13 +135,7 @@ defmodule MvWeb.MemberLive.IndexGroupsAccessibilityTest do
|
|||
conn = conn_with_oidc_user(conn)
|
||||
{:ok, view, _html} = live(conn, "/members")
|
||||
|
||||
view
|
||||
|> element("button[aria-label='Filter members']")
|
||||
|> render_click()
|
||||
|
||||
view
|
||||
|> element("[data-testid='member-filter-form']")
|
||||
|> render_change(%{"group_#{group1.id}" => "in", "payment_filter" => "all"})
|
||||
apply_group_filter(view, group1.id, "in")
|
||||
|
||||
html = render(view)
|
||||
assert html =~ member1.first_name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue