defmodule SigmaKit.Components.DateSelectComponent do use Phoenix.LiveComponent use SigmaKit.Components def update(assigns, socket) do socket = assign(socket, id: assigns.id, date: assigns.date, view_date: assigns.date, target: assigns.target, open: false, day_count: Timex.diff( Timex.end_of_month(assigns.date), Timex.beginning_of_month(assigns.date), :days ), start_offset: Timex.weekday(Timex.beginning_of_month(assigns.date)) - 1 ) {:ok, socket} end def handle_event("view-date-change", %{"date" => date}, socket) do date = DateTime.from_iso8601(date) |> elem(1) socket = assign(socket, view_date: date) {:noreply, socket} end def handle_event("popover-hidden", _, socket) do {:noreply, assign(socket, open: false)} end def handle_event("popover-shown", _, socket) do {:noreply, assign(socket, open: true)} end def view_month(view_date) do Timex.beginning_of_month(view_date) end def render(assigns) do ~H"""
<.popover trigger_click placement="bottom" events open={@open}> <:trigger> <.button inline> <.icon name="hero-calendar" class="w-4 h-4 me-2 mb-1" /> {Timex.format!(@date, "{0M}/{0D}/{YY}")}
{Timex.format!(@view_date, "{Mshort}, {YYYY}")}
S
M
T
W
T
F
S
{d + 1}
""" end end