{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
-- This module provides helper functions for HTML input elements. These helper functions are not specific to any particular web framework or html library.
module Ditto.Generalized where
import Ditto.Backend
import Ditto.Core
import Ditto.Result
import qualified Ditto.Generalized.Internal as G
-- | used for constructing elements like @\@, which pure a single input value.
input :: (Monad m, FormError err input) => (input -> Either err a) -> (FormId -> a -> view) -> a -> Form m input err view a
input = G.input getFormId
-- | used for elements like @\@ which are not always present in the form submission data.
inputMaybe
:: (Monad m, FormError err input)
=> (input -> Either err a)
-> (FormId -> Maybe a -> view)
-> Maybe a
-> Form m input err view (Maybe a)
inputMaybe = G.inputMaybe getFormId
-- | used to construct elements with optional initial values, which are still required
inputMaybeReq
:: (Monad m, FormError err input)
=> (input -> Either err a)
-> (FormId -> Maybe a -> view)
-> Maybe a
-> Form m input err view a
inputMaybeReq = G.inputMaybeReq getFormId
-- | used for elements like @\@ which take a value, but are never present in the form data set.
inputNoData
:: (Monad m)
=> (FormId -> view)
-> Form m input err view ()
inputNoData = G.inputNoData getFormId
-- | used for @\@
inputFile
:: forall m input err view. (Monad m, FormInput input, FormError err input)
=> (FormId -> view)
-> Form m input err view (FileType input)
inputFile = G.inputFile getFormId
-- | used for groups of checkboxes, @\