diff --git a/lib/wish_web/live/home_live/index.ex b/lib/wish_web/live/home_live/index.ex index 04c5788..4097f2f 100644 --- a/lib/wish_web/live/home_live/index.ex +++ b/lib/wish_web/live/home_live/index.ex @@ -19,7 +19,7 @@ defmodule WishWeb.HomeLive.Index do Wishlist.list_available_items() end - {:ok, assign(socket, :items, items) |> assign(:grid, grid?)} + {:ok, assign(socket, :items, items) |> assign(:grid, grid?) |> assign(:hidden, false)} end @impl true @@ -27,6 +27,20 @@ defmodule WishWeb.HomeLive.Index do {:noreply, assign(socket, :grid, !socket.assigns.grid)} end + @impl true + def handle_event("toggle_hidden_items", _, socket) do + new_state = !socket.assigns.hidden + + items = + if new_state do + Wishlist.list_items() + else + Wishlist.list_available_items() + end + + {:noreply, assign(socket, :items, items) |> assign(:hidden, new_state)} + end + @impl true def handle_event("toggle_received", %{"id" => id}, socket) do item = Wishlist.get_item!(id) diff --git a/lib/wish_web/live/home_live/index.html.heex b/lib/wish_web/live/home_live/index.html.heex index 6286e4a..9b5a3ec 100644 --- a/lib/wish_web/live/home_live/index.html.heex +++ b/lib/wish_web/live/home_live/index.html.heex @@ -5,7 +5,21 @@ JS.push("toggle_view_state") |> JS.dispatch("toggle_view_state", detail: %{"grid" => !@grid}) }> - Toggle List/Grid + <%= if @grid do %> + List View + <% else %> + Grid View + <% end %> + + + <:actions :if={!@current_user}> + <.button phx-click={JS.push("toggle_hidden_items")}> + <%= if @hidden do %> + Hide + <% else %> + Show + <% end %> + Received