defmodule CvGenView.Date do use Phoenix.Component attr(:start_date, :string, required: true) attr(:end_date, :string, default: nil) def time_span(assigns) when assigns.start_date == assigns.end_date, do: ~H"""
<.date date={@start_date} />
""" def time_span(assigns), do: ~H"""
<.date date={@start_date} /> - <.date date={@end_date} />
""" attr(:date, :any) attr(:rest, :global) def date(assigns) do ~H""" """ end defp localized(nil), do: "Aujourd'hui" defp localized(date) when is_binary(date) do case String.split(date, "-") do [year, month] -> {year, month} = {String.to_integer(year), String.to_integer(month)} Date.new!(year, month, 1) |> localized() [year] -> year end end defp localized(date) when is_struct(date, Date), do: Calendar.strftime( date, "%B %Y", month_names: fn month -> {"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"} |> elem(month - 1) end ) end