{-# LANGUAGE ScopedTypeVariables , TypeFamilies #-} -- | This module provides helper functions for HTML input elements. These helper functions are not specific to any particular web framework or html library. -- -- For unnamed (enumerated) formlets, see @Ditto.Generalized.Unnamed@ module Ditto.Generalized.Named ( G.Choice(..) , input , inputMaybe , inputNoData , inputFile , inputMulti , inputChoice , inputList , label , errors , childErrors , withErrors , G.withChildErrors , ireq , iopt ) where import Ditto.Backend import Ditto.Core import Ditto.Types import Data.Text (Text) import Data.List.NonEmpty (NonEmpty(..)) import qualified Ditto.Generalized.Internal as G -- | used for constructing elements like @\@, which pure a single input value. input :: (Environment m input, FormError input err) => Text -> (input -> Either err a) -> (FormId -> a -> view) -> a -> Form m input err view a input name = G.input (getNamedFormId name) -- | used for elements like @\@ which are not always present in the form submission data. inputMaybe :: (Environment m input, FormError input err) => Text -> (input -> Either err a) -> (FormId -> Maybe a -> view) -> Maybe a -> Form m input err view (Maybe a) inputMaybe name = G.inputMaybe (getNamedFormId name) -- | used for elements like @\@ which take a value, but are never present in the form data set. inputNoData :: (Environment m input) => Text -> (FormId -> view) -> Form m input err view () inputNoData name = G.inputNoData (getNamedFormId name) -- | used for @\@ inputFile :: forall m input err view ft. (Environment m input, FormInput input, FormError input err, ft ~ FileType input, Monoid ft) => Text -> (FormId -> view) -> Form m input err view (FileType input) inputFile name = G.inputFile (getNamedFormId name) -- | used for groups of checkboxes, @\