freedive/lib/freedive_web/live/liliform_live.ex
2024-05-16 05:07:36 +05:30

28 lines
754 B
Elixir

defmodule FreediveWeb.LiliformLive do
defmacro __using__(opts) do
quote location: :keep, bind_quoted: [opts: opts] do
use FreediveWeb, :live_view
@behaviour FreediveWeb.LiliformLive
@all [
%{
title: "All",
icon: "all",
active: false
}
]
def(mount(_params, _session, socket)) do
socket = assign(socket, :opts, Keyword.get(unquote(opts), :opts, []))
socket = assign(socket, :items, items())
socket = assign(socket, :filters, @all ++ filters())
socket = assign(socket, :query, "")
{:ok, socket}
end
end
end
@callback items() :: [map]
@callback filters() :: [map]
@callback search(query :: String.t()) :: [map]
end