feat: adds SearchBar Live Component
This commit is contained in:
parent
dd03000428
commit
78588cbad9
3 changed files with 97 additions and 0 deletions
|
|
@ -1,5 +1,7 @@
|
|||
defmodule MvWeb.MemberLive.Index do
|
||||
use MvWeb, :live_view
|
||||
import Ash.Expr
|
||||
import Ash.Query
|
||||
import MvWeb.TableComponents
|
||||
|
||||
@impl true
|
||||
|
|
@ -10,12 +12,38 @@ defmodule MvWeb.MemberLive.Index do
|
|||
{:ok,
|
||||
socket
|
||||
|> assign(:page_title, gettext("Members"))
|
||||
|> assign(:query, "")
|
||||
|> assign(:sort_field, :first_name)
|
||||
|> assign(:sort_order, :asc)
|
||||
|> assign(:members, sorted)
|
||||
|> assign(:selected_members, [])}
|
||||
end
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Receive messages from any toolbar component
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
# Function to handle search
|
||||
@impl true
|
||||
def handle_info({:search_changed, q}, socket) do
|
||||
members =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Query.filter(
|
||||
expr(fragment("search_vector @@ plainto_tsquery('simple', ?)", ^q))
|
||||
)
|
||||
|> Ash.read!()
|
||||
|
||||
IO.inspect(members)
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:query, q)
|
||||
|> assign(:members, members)}
|
||||
end
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Handle Events
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
@impl true
|
||||
def handle_event("delete", %{"id" => id}, socket) do
|
||||
member = Ash.get!(Mv.Membership.Member, id)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,13 @@
|
|||
</:actions>
|
||||
</.header>
|
||||
|
||||
<.live_component
|
||||
module={MvWeb.Components.SearchBarComponent}
|
||||
id="search-bar"
|
||||
query={@query}
|
||||
placeholder={gettext("Search...")}
|
||||
/>
|
||||
|
||||
<.table
|
||||
id="members"
|
||||
rows={@members}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue