module Yesod.Form.Class
( ToField (..)
) where
import Text.Hamlet
import Yesod.Form.Fields
import Yesod.Form.Types
import Yesod.Form.Functions (areq, aopt)
import Data.Int (Int64)
import Data.Time (Day, TimeOfDay)
import Data.Text (Text)
import Yesod.Message (RenderMessage)
class ToField a master where
toField :: RenderMessage master FormMessage
=> FieldSettings master -> Maybe a -> AForm sub master a
instance ToField Text master where
toField = areq textField
instance ToField (Maybe Text) master where
toField = aopt textField
instance ToField Int master where
toField = areq intField
instance ToField (Maybe Int) master where
toField = aopt intField
instance ToField Int64 master where
toField = areq intField
instance ToField (Maybe Int64) master where
toField = aopt intField
instance ToField Double master where
toField = areq doubleField
instance ToField (Maybe Double) master where
toField = aopt doubleField
instance ToField Day master where
toField = areq dayField
instance ToField (Maybe Day) master where
toField = aopt dayField
instance ToField TimeOfDay master where
toField = areq timeField
instance ToField (Maybe TimeOfDay) master where
toField = aopt timeField
instance ToField Html master where
toField = areq htmlField
instance ToField (Maybe Html) master where
toField = aopt htmlField
instance ToField Textarea master where
toField = areq textareaField
instance ToField (Maybe Textarea) master where
toField = aopt textareaField