feat(overview): rework filter builder with editable chips and native date ranges
Editable filter chips, uniformly-sized value controls, working field-picker search, and native date-range inputs with relative presets in place of the vendored calendar — native inputs give year-jump, manual entry and keyboard accessibility for free.
This commit is contained in:
parent
c0d1550401
commit
8303a39041
23 changed files with 1905 additions and 565 deletions
|
|
@ -472,6 +472,8 @@ defmodule MvWeb.MemberLive.Index do
|
|||
%{
|
||||
payment_filter: nil,
|
||||
payment_period: PaymentAging.default_period(),
|
||||
suspended: false,
|
||||
stichtag: nil,
|
||||
group_filters: %{},
|
||||
fee_type_filters: %{},
|
||||
boolean_filters: %{},
|
||||
|
|
@ -481,6 +483,46 @@ defmodule MvWeb.MemberLive.Index do
|
|||
)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:suspended_changed, suspended}, socket) do
|
||||
socket =
|
||||
socket
|
||||
|> assign(:suspended, suspended)
|
||||
|> load_members()
|
||||
|> scroll_list_to_top()
|
||||
|> update_selection_assigns()
|
||||
|
||||
query_params =
|
||||
build_query_params(opts_for_query_params(socket, %{suspended: suspended}))
|
||||
|> maybe_add_field_selection(
|
||||
socket.assigns[:user_field_selection],
|
||||
socket.assigns[:fields_in_url?] || false
|
||||
)
|
||||
|
||||
new_path = ~p"/members?#{query_params}"
|
||||
{:noreply, push_reload(socket, new_path)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:stichtag_changed, stichtag}, socket) do
|
||||
socket =
|
||||
socket
|
||||
|> assign(:stichtag, stichtag)
|
||||
|> load_members()
|
||||
|> scroll_list_to_top()
|
||||
|> update_selection_assigns()
|
||||
|
||||
query_params =
|
||||
build_query_params(opts_for_query_params(socket, %{stichtag: stichtag}))
|
||||
|> maybe_add_field_selection(
|
||||
socket.assigns[:user_field_selection],
|
||||
socket.assigns[:fields_in_url?] || false
|
||||
)
|
||||
|
||||
new_path = ~p"/members?#{query_params}"
|
||||
{:noreply, push_reload(socket, new_path)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:boolean_filter_changed, custom_field_id_str, filter_value}, socket) do
|
||||
updated_filters =
|
||||
|
|
@ -595,6 +637,8 @@ defmodule MvWeb.MemberLive.Index do
|
|||
|> assign(:fee_type_filters, Map.get(opts, :fee_type_filters, %{}))
|
||||
|> assign(:boolean_custom_field_filters, Map.get(opts, :boolean_filters, %{}))
|
||||
|> assign(:date_filters, Map.get(opts, :date_filters, DateFilter.default()))
|
||||
|> assign(:suspended, Map.get(opts, :suspended, false))
|
||||
|> assign(:stichtag, Map.get(opts, :stichtag))
|
||||
|> load_members()
|
||||
|> scroll_list_to_top()
|
||||
|> update_selection_assigns()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue