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