{-# 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, @\