packages feed

nano-ui-form-0.1.0.0: lib/NanoUI/Form.hs

-- | Validated forms for nano-ui, built on ditto. A 'Form' is an applicative
-- value whose inputs are nano-ui widgets; run one in a view with
-- 'nanoFormLive', 'nanoFormSubmit', 'nanoFormEx' or 'runNanoForm'.
module NanoUI.Form
  ( -- * Core Form Types
    Form
  , FormView (..)
  , FormInput (..)
  , FormUI (..)
  , liftNanoUI
  , FormStatus (..)
  , FormMode (..)
  , FormConfig (..)
  , defaultFormConfig

    -- * Named Form Inputs
  , inputText
  , inputTextWithPlaceholder
  , inputPassword
  , inputTextArea
  , inputCheckbox
  , inputSlider
  , inputSelect
  , inputEnumSelect
  , inputRadio
  , inputEnumRadio
  , inputColor
  , label
  , separator
  , errors
  , childErrors
  , withErrors
  , withChildErrors
  , withFieldErrors

    -- * Validation & Proofs
  , module NanoUI.Form.Validation

    -- * Presentation & Layout
  , module NanoUI.Form.Widgets

    -- * Form Runners
  , runNanoForm
  , nanoFormLive
  , nanoFormSubmit
  , nanoFormEx
  , resetForm

    -- * Re-exports from Ditto
  , Ditto.FormRange (..)
  , Ditto.FormId (..)
  , Ditto.Result (..)
  , Ditto.Proved (..)
  , Ditto.hoistForm
  , Ditto.view
  , Ditto.mapView
  , (Ditto.@$)
  ) where

import qualified Ditto.Core as Ditto
import qualified Ditto.Types as Ditto
import NanoUI.Form.Named
  ( childErrors
  , errors
  , inputCheckbox
  , inputColor
  , inputEnumRadio
  , inputEnumSelect
  , inputPassword
  , inputRadio
  , inputSelect
  , inputSlider
  , inputText
  , inputTextWithPlaceholder
  , inputTextArea
  , label
  , separator
  , withChildErrors
  , withErrors
  , withFieldErrors
  )
import NanoUI.Form.Backend (FormInput (..), FormUI (..), liftNanoUI)
import NanoUI.Form.Runner
  ( nanoFormEx
  , nanoFormLive
  , nanoFormSubmit
  , resetForm
  , runNanoForm
  )
import NanoUI.Form.Types
  ( Form
  , FormConfig (..)
  , FormMode (..)
  , FormStatus (..)
  , FormView (..)
  , defaultFormConfig
  )
import NanoUI.Form.Validation
import NanoUI.Form.Widgets