   end
 
   def form_date(form, field, opts \\ []) do
-    value = Map.get(form.source.changes, field) || opts[:value] || Ecto.Date.utc()
+    value = input_value(form, field) || opts[:value] || Ecto.Date.utc()
     class = opts[:class] || ""
     label = opts[:label] || humanize(field)
     {error, _} = Keyword.get form.errors, field, {nil, nil}

  end

  def form_datetime(form, field, opts \\ []) do
    value = Map.get(form.source.changes, field) ||
      case opts[:value] do
        nil     -> Ecto.DateTime.utc()
        default -> Map.merge(Ecto.DateTime.utc(), default)
      end

    class = opts[:class] || ""
    label = opts[:label] || humanize(field)

  end

  def form_time(form, field, opts \\ []) do
    value = input_value(form, field) || opts[:value] || %{hour: 0, min: 0}
    class = opts[:class] || ""
    label = opts[:label] || humanize(field)
    {error, _} = Keyword.get form.errors, field, {nil, nil}
