reform-hsp-0.2.7: Add support for using HSP with Reform

Safe HaskellNone
LanguageHaskell98

Text.Reform.HSP.String

Contents

Description

This module provides functions creating Reform using HSP markup.

This module assumes that you wish for text based controls such as inputText and textarea to using String values. If you prefer Text see Text.Reform.HSP.Text.

Synopsis

<input> element

inputEmail Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

initial value

-> Form m input error [XMLGenT x (XMLType x)] () String 

Create an <input type="email"> element

inputText Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

initial value

-> Form m input error [XMLGenT x (XMLType x)] () String 

Create an <input type="text"> element

inputPassword :: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) => Form m input error [XMLGenT x (XMLType x)] () String Source #

Create an <input type="password"> element

inputSubmit Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

value attribute. Used for button label, and value if button is submitted.

-> Form m input error [XMLGenT x (XMLType x)] () (Maybe String) 

Create an <input type="submit"> element

returns:

Just value
if this button was used to submit the form.
Nothing
if this button was not used to submit the form.

inputReset Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

value attribute. Used only to label the button.

-> Form m input error [XMLGenT x (XMLType x)] () () 

Create an <input type="reset"> element

This element does not add any data to the form data set.

inputHidden Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

value to store in the hidden element

-> Form m input error [XMLGenT x (XMLType x)] () String 

Create an <input type="hidden"> element

inputButton Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

value attribute. Used to label the button.

-> Form m input error [XMLGenT x (XMLType x)] () () 

Create an <input type="button"> element

The element is a push button with a text label. The button does nothing by default, but actions can be added using javascript. This element does not add any data to the form data set.

see also: button

inputCheckbox Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId)) 
=> Bool

initially checked

-> Form m input error [XMLGenT x (XMLType x)] () Bool 

Create a single <input type="checkbox"> element

returns a Bool indicating if it was checked or not.

see also inputCheckboxes

inputCheckboxes Source #

Arguments

:: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) 
=> [(a, lbl)]

(value, label)

-> (a -> Bool)

function which marks if a value should be checked (aka, selected) initially or not. Can match zero or more elements.

-> Form m input error [XMLGenT x (XMLType x)] () [a] 

Create a group of <input type="checkbox"> elements

inputRadio Source #

Arguments

:: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) 
=> [(a, lbl)]

(value, label)

-> (a -> Bool)

predicate which returns True if a should be initially checked. Must match exactly one value in the previous argument.

-> Form m input error [XMLGenT x (XMLType x)] () a 

Create a group of <input type="radio"> elements

inputRadioForms Source #

Arguments

:: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) 
=> [(Form m input error [XMLGenT x (XMLType x)] proof a, lbl)]

value, label, initially checked

-> a

default

-> Form m input error [XMLGenT x (XMLType x)] proof a 

Create a group of radio buttons that select between sub-forms

inputFile :: (Monad m, FormError error, FormInput input, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId)) => Form m input error [XMLGenT x (XMLType x)] () (FileType input) Source #

Create an <input type="file"> element

This control may succeed even if the user does not actually select a file to upload. In that case the uploaded name will likely be "" and the file contents will be empty as well.

<textarea> element

textarea Source #

Arguments

:: (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId)) 
=> Int

cols

-> Int

rows

-> String

initial contents

-> Form m input error [XMLGenT x (XMLType x)] () String 

Create a <textarea></textarea> element

<button> element

buttonSubmit Source #

Arguments

:: (Monad m, FormError error, FormInput input, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text String)) 
=> String

value attribute. Returned if this button submits the form.

-> children

children to embed in the <button>

-> Form m input error [XMLGenT x (XMLType x)] () (Maybe String) 

create a <button type="submit"></button> element

buttonReset Source #

Arguments

:: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children, EmbedAsAttr x (Attr Text FormId)) 
=> children

children of the /button element

-> Form m input error [XMLGenT x (XMLType x)] () () 

create a <button type="reset"></button> element

This element does not add any data to the form data set.

button Source #

Arguments

:: (Monad m, FormError error, FormInput input, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children, EmbedAsAttr x (Attr Text FormId)) 
=> children

children to embed in the <button>

-> Form m input error [XMLGenT x (XMLType x)] () () 

create a <button type="button"></button> element

This element does not add any data to the form data set.

<select> element

select Source #

Arguments

:: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) 
=> [(a, lbl)]

(value, label)

-> (a -> Bool)

specifies which value is initially selected. Must match *exactly one* element in the list of choices

-> Form m input error [XMLGenT x (XMLType x)] () a 

create <select></select> element plus its <option></option> children.

see also: selectMultiple

selectMultiple Source #

Arguments

:: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) 
=> [(a, lbl)]

(value, label)

-> (a -> Bool)

specifies which values are initially selected. Can match 0 or more elements.

-> Form m input error [XMLGenT x (XMLType x)] () [a] 

create <select multiple="multiple"></select> element plus its <option></option> children.

This creates a <select> element which allows more than one item to be selected.

<label> element

label :: (Monad m, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsChild x c) => c -> Form m input error [XMLGenT x (XMLType x)] () () Source #

create a <label> element.

Use this with or ++ to ensure that the for attribute references the correct id.

label "some input field: " ++> inputText ""

errors

errorList :: (Monad m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x error) => Form m input error [XMLGenT x (XMLType x)] () () Source #

create a <ul> which contains all the errors related to the Form.

The ul will have the attribute class="reform-error-list".

childErrorList :: (Monad m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x error) => Form m input error [XMLGenT x (XMLType x)] () () Source #

create a <ul> which contains all the errors related to the Form.

Includes errors from children of the current form.

The ul will have the attribute class="reform-error-list".

layout functions

br :: (Monad m, XMLGenerator x, StringType x ~ Text) => Form m input error [XMLGenT x (XMLType x)] () () Source #

create a <br> tag.

fieldset :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) => Form m input error c proof a -> Form m input error [XMLGenT x (XMLType x)] proof a Source #

wrap a <fieldset class="reform"> around a Form

ol :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) => Form m input error c proof a -> Form m input error [XMLGenT x (XMLType x)] proof a Source #

wrap an <ol class="reform"> around a Form

ul :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) => Form m input error c proof a -> Form m input error [XMLGenT x (XMLType x)] proof a Source #

wrap a <ul class="reform"> around a Form

li :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) => Form m input error c proof a -> Form m input error [XMLGenT x (XMLType x)] proof a Source #

wrap a <li class="reform"> around a Form

form Source #

Arguments

:: (XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text action)) 
=> action

action url

-> [(Text, Text)]

extra hidden fields to add to form

-> [XMLGenT x (XMLType x)]

children

-> [XMLGenT x (XMLType x)] 

create <form action=action method="POST" enctype="multipart/form-data">

setAttrs :: (EmbedAsAttr x attr, XMLGenerator x, StringType x ~ Text, Monad m, Functor m) => Form m input error [XMLGenT x (XMLType x)] proof a -> attr -> Form m input error [GenXML x] proof a Source #

set the attributes on the top-level elements of Form