Packages
moon
2.80.0
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon/components/datepicker/helpers.ex
defmodule Moon.Components.Datepicker.Helpers do
@moduledoc false
def format_date(nil, _), do: nil
def format_date(date, true), do: Timex.format!(date, "%Y-%0m-%0dT%R", :strftime)
def format_date(date, false), do: Timex.format!(date, "%Y-%0m-%0d", :strftime)
def truncate_date(date) do
date
|> Timex.to_naive_datetime()
|> NaiveDateTime.truncate(:second)
end
def format_to_date(datetime, true), do: datetime
def format_to_date(datetime, false), do: Timex.to_naive_datetime(datetime)
def dates_from_range("lastMonth", _) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(months: -1)
{Timex.beginning_of_month(date), Timex.end_of_month(date)}
end
def dates_from_range("thisMonth", _) do
date = Timex.now() |> truncate_date()
{Timex.beginning_of_month(date), Timex.end_of_month(date)}
end
def dates_from_range("nextMonth", _) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(months: 1)
{Timex.beginning_of_month(date), Timex.end_of_month(date)}
end
def dates_from_range("lastWeek", weekstart) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(weeks: -1)
{Timex.beginning_of_week(date, weekstart), Timex.end_of_week(date, weekstart)}
end
def dates_from_range("thisWeek", weekstart) do
date = Timex.now() |> truncate_date()
{Timex.beginning_of_week(date, weekstart), Timex.end_of_week(date, weekstart)}
end
def dates_from_range("nextWeek", weekstart) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(weeks: 1)
{Timex.beginning_of_week(date, weekstart), Timex.end_of_week(date, weekstart)}
end
def dates_from_range("last24hours", _) do
date = Timex.now() |> truncate_date()
{Timex.shift(date, hours: -24), date}
end
def dates_from_range("yesterday", _) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(days: -1)
{Timex.beginning_of_day(date), Timex.end_of_day(date)}
end
def dates_from_range("today", _) do
date = Timex.now() |> truncate_date()
{Timex.beginning_of_day(date), Timex.end_of_day(date)}
end
def dates_from_range("tomorrow", _) do
date =
Timex.now()
|> truncate_date()
|> Timex.shift(days: 1)
{Timex.beginning_of_day(date), Timex.end_of_day(date)}
end
def parse_date(""), do: nil
def parse_date(date) when is_binary(date) do
is_date_time_string = String.contains?(date, ["T"])
if is_date_time_string do
{:ok, datetime_result} = Timex.parse(date, "%Y-%0m-%0dT%R", :strftime)
datetime_result
else
{:ok, date_result} = Timex.parse(date, "%Y-%0m-%0d", :strftime)
date_result
end
end
def parse_date(date), do: date
end