module Text.Digestive.Common
( input
, label
, errors
, childErrors
) where
import Text.Digestive.Types
import Text.Digestive.Result
input :: (Monad m, Functor m)
=> (Bool -> Maybe i -> d -> s)
-> (Maybe i -> Result e a)
-> (FormId -> s -> v)
-> d
-> Form m i e v a
input toView toResult createView defaultInput = Form $ do
isInput <- isFormInput
inp <- getFormInput
id' <- getFormId
let view' = toView isInput inp defaultInput
result' = toResult inp
return (View (const $ createView id' view'), return result')
label :: Monad m
=> (FormId -> v)
-> Form m i e v ()
label f = Form $ do
id' <- getFormId
return (View (const $ f id'), return (Ok ()))
errors :: Monad m
=> ([e] -> v)
-> Form m i e v ()
errors f = Form $ do
range <- getFormRange
return (View (f . retainErrors range), return (Ok ()))
childErrors :: Monad m
=> ([e] -> v)
-> Form m i e v ()
childErrors f = Form $ do
range <- getFormRange
return (View (f . retainChildErrors range), return (Ok ()))