packages feed

yesod-form 1.4.4.1 → 1.4.5

raw patch · 4 files changed

+24/−3 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Yesod.Form.Bootstrap3: bflInputOffset :: BootstrapFormLayout -> !BootstrapGridOptions
- Yesod.Form.Bootstrap3: bflInputSize :: BootstrapFormLayout -> !BootstrapGridOptions
- Yesod.Form.Bootstrap3: bflLabelOffset :: BootstrapFormLayout -> !BootstrapGridOptions
- Yesod.Form.Bootstrap3: bflLabelSize :: BootstrapFormLayout -> !BootstrapGridOptions
- Yesod.Form.Bootstrap3: bsAttrs :: BootstrapSubmit msg -> [(Text, Text)]
- Yesod.Form.Bootstrap3: bsClasses :: BootstrapSubmit msg -> Text
- Yesod.Form.Bootstrap3: bsValue :: BootstrapSubmit msg -> msg
- Yesod.Form.Bootstrap3: instance Eq BootstrapGridOptions
- Yesod.Form.Bootstrap3: instance IsString msg => IsString (BootstrapSubmit msg)
- Yesod.Form.Bootstrap3: instance Ord BootstrapGridOptions
- Yesod.Form.Bootstrap3: instance Show BootstrapFormLayout
- Yesod.Form.Bootstrap3: instance Show BootstrapGridOptions
- Yesod.Form.Bootstrap3: instance Show msg => Show (BootstrapSubmit msg)
- Yesod.Form.Fields: instance Eq Textarea
- Yesod.Form.Fields: instance FromJSON Textarea
- Yesod.Form.Fields: instance Ord Textarea
- Yesod.Form.Fields: instance PersistField Textarea
- Yesod.Form.Fields: instance PersistFieldSql Textarea
- Yesod.Form.Fields: instance Read Textarea
- Yesod.Form.Fields: instance Show Textarea
- Yesod.Form.Fields: instance ToJSON Textarea
- Yesod.Form.Fields: instance ToMarkup Textarea
- Yesod.Form.Fields: olOptions :: OptionList a -> [Option a]
- Yesod.Form.Fields: olReadExternal :: OptionList a -> Text -> Maybe a
- Yesod.Form.Fields: optionDisplay :: Option a -> Text
- Yesod.Form.Fields: optionExternalValue :: Option a -> Text
- Yesod.Form.Fields: optionInternalValue :: Option a -> a
- Yesod.Form.Fields: unTextarea :: Textarea -> Text
- Yesod.Form.Input: instance Monad m => Applicative (FormInput m)
- Yesod.Form.Input: instance Monad m => Functor (FormInput m)
- Yesod.Form.Input: unFormInput :: FormInput m a -> HandlerSite m -> [Text] -> Env -> FileEnv -> m (Either DText a)
- Yesod.Form.Jquery: instance Default JqueryDaySettings
- Yesod.Form.Jquery: jdsChangeMonth :: JqueryDaySettings -> Bool
- Yesod.Form.Jquery: jdsChangeYear :: JqueryDaySettings -> Bool
- Yesod.Form.Jquery: jdsNumberOfMonths :: JqueryDaySettings -> Either Int (Int, Int)
- Yesod.Form.Jquery: jdsYearRange :: JqueryDaySettings -> String
- Yesod.Form.Types: fieldEnctype :: Field m a -> Enctype
- Yesod.Form.Types: fieldParse :: Field m a -> [Text] -> [FileInfo] -> m (Either (SomeMessage (HandlerSite m)) (Maybe a))
- Yesod.Form.Types: fieldView :: Field m a -> FieldViewFunc m a
- Yesod.Form.Types: fsAttrs :: FieldSettings master -> [(Text, Text)]
- Yesod.Form.Types: fsId :: FieldSettings master -> Maybe Text
- Yesod.Form.Types: fsLabel :: FieldSettings master -> SomeMessage master
- Yesod.Form.Types: fsName :: FieldSettings master -> Maybe Text
- Yesod.Form.Types: fsTooltip :: FieldSettings master -> Maybe (SomeMessage master)
- Yesod.Form.Types: fvErrors :: FieldView site -> Maybe Markup
- Yesod.Form.Types: fvId :: FieldView site -> Text
- Yesod.Form.Types: fvInput :: FieldView site -> WidgetT site IO ()
- Yesod.Form.Types: fvLabel :: FieldView site -> Markup
- Yesod.Form.Types: fvRequired :: FieldView site -> Bool
- Yesod.Form.Types: fvTooltip :: FieldView site -> Maybe Markup
- Yesod.Form.Types: instance (Monad m, Monoid a) => Monoid (AForm m a)
- Yesod.Form.Types: instance (Monad m, Semigroup a) => Semigroup (AForm m a)
- Yesod.Form.Types: instance Applicative FormResult
- Yesod.Form.Types: instance Bounded Enctype
- Yesod.Form.Types: instance Enum Enctype
- Yesod.Form.Types: instance Eq Enctype
- Yesod.Form.Types: instance Eq FormMessage
- Yesod.Form.Types: instance Functor FormResult
- Yesod.Form.Types: instance IsString (FieldSettings a)
- Yesod.Form.Types: instance Monad m => Applicative (AForm m)
- Yesod.Form.Types: instance Monad m => Functor (AForm m)
- Yesod.Form.Types: instance MonadTrans AForm
- Yesod.Form.Types: instance Monoid Enctype
- Yesod.Form.Types: instance Monoid m => Monoid (FormResult m)
- Yesod.Form.Types: instance Read FormMessage
- Yesod.Form.Types: instance Semigroup Enctype
- Yesod.Form.Types: instance Semigroup m => Semigroup (FormResult m)
- Yesod.Form.Types: instance Show FormMessage
- Yesod.Form.Types: instance Show Ints
- Yesod.Form.Types: instance Show a => Show (FormResult a)
- Yesod.Form.Types: instance ToMarkup Enctype
- Yesod.Form.Types: unAForm :: AForm m a -> (HandlerSite m, [Text]) -> Maybe (Env, FileEnv) -> Ints -> m (FormResult a, [FieldView (HandlerSite m)] -> [FieldView (HandlerSite m)], Ints, Enctype)
+ Yesod.Form.Bootstrap3: [bflInputOffset] :: BootstrapFormLayout -> !BootstrapGridOptions
+ Yesod.Form.Bootstrap3: [bflInputSize] :: BootstrapFormLayout -> !BootstrapGridOptions
+ Yesod.Form.Bootstrap3: [bflLabelOffset] :: BootstrapFormLayout -> !BootstrapGridOptions
+ Yesod.Form.Bootstrap3: [bflLabelSize] :: BootstrapFormLayout -> !BootstrapGridOptions
+ Yesod.Form.Bootstrap3: [bsAttrs] :: BootstrapSubmit msg -> [(Text, Text)]
+ Yesod.Form.Bootstrap3: [bsClasses] :: BootstrapSubmit msg -> Text
+ Yesod.Form.Bootstrap3: [bsValue] :: BootstrapSubmit msg -> msg
+ Yesod.Form.Bootstrap3: instance Data.String.IsString msg => Data.String.IsString (Yesod.Form.Bootstrap3.BootstrapSubmit msg)
+ Yesod.Form.Bootstrap3: instance GHC.Classes.Eq Yesod.Form.Bootstrap3.BootstrapGridOptions
+ Yesod.Form.Bootstrap3: instance GHC.Classes.Ord Yesod.Form.Bootstrap3.BootstrapGridOptions
+ Yesod.Form.Bootstrap3: instance GHC.Show.Show Yesod.Form.Bootstrap3.BootstrapFormLayout
+ Yesod.Form.Bootstrap3: instance GHC.Show.Show Yesod.Form.Bootstrap3.BootstrapGridOptions
+ Yesod.Form.Bootstrap3: instance GHC.Show.Show msg => GHC.Show.Show (Yesod.Form.Bootstrap3.BootstrapSubmit msg)
+ Yesod.Form.Fields: [olOptions] :: OptionList a -> [Option a]
+ Yesod.Form.Fields: [olReadExternal] :: OptionList a -> Text -> Maybe a
+ Yesod.Form.Fields: [optionDisplay] :: Option a -> Text
+ Yesod.Form.Fields: [optionExternalValue] :: Option a -> Text
+ Yesod.Form.Fields: [optionInternalValue] :: Option a -> a
+ Yesod.Form.Fields: [unTextarea] :: Textarea -> Text
+ Yesod.Form.Fields: instance Data.Aeson.Types.Class.FromJSON Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance Data.Aeson.Types.Class.ToJSON Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance Database.Persist.Class.PersistField.PersistField Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance Database.Persist.Sql.Class.PersistFieldSql Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance GHC.Classes.Eq Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance GHC.Classes.Ord Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance GHC.Read.Read Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance GHC.Show.Show Yesod.Form.Fields.Textarea
+ Yesod.Form.Fields: instance Text.Blaze.ToMarkup Yesod.Form.Fields.Textarea
+ Yesod.Form.Input: [unFormInput] :: FormInput m a -> HandlerSite m -> [Text] -> Env -> FileEnv -> m (Either DText a)
+ Yesod.Form.Input: instance GHC.Base.Monad m => GHC.Base.Applicative (Yesod.Form.Input.FormInput m)
+ Yesod.Form.Input: instance GHC.Base.Monad m => GHC.Base.Functor (Yesod.Form.Input.FormInput m)
+ Yesod.Form.Jquery: [jdsChangeMonth] :: JqueryDaySettings -> Bool
+ Yesod.Form.Jquery: [jdsChangeYear] :: JqueryDaySettings -> Bool
+ Yesod.Form.Jquery: [jdsNumberOfMonths] :: JqueryDaySettings -> Either Int (Int, Int)
+ Yesod.Form.Jquery: [jdsYearRange] :: JqueryDaySettings -> String
+ Yesod.Form.Jquery: instance Data.Default.Class.Default Yesod.Form.Jquery.JqueryDaySettings
+ Yesod.Form.Types: [fieldEnctype] :: Field m a -> Enctype
+ Yesod.Form.Types: [fieldParse] :: Field m a -> [Text] -> [FileInfo] -> m (Either (SomeMessage (HandlerSite m)) (Maybe a))
+ Yesod.Form.Types: [fieldView] :: Field m a -> FieldViewFunc m a
+ Yesod.Form.Types: [fsAttrs] :: FieldSettings master -> [(Text, Text)]
+ Yesod.Form.Types: [fsId] :: FieldSettings master -> Maybe Text
+ Yesod.Form.Types: [fsLabel] :: FieldSettings master -> SomeMessage master
+ Yesod.Form.Types: [fsName] :: FieldSettings master -> Maybe Text
+ Yesod.Form.Types: [fsTooltip] :: FieldSettings master -> Maybe (SomeMessage master)
+ Yesod.Form.Types: [fvErrors] :: FieldView site -> Maybe Markup
+ Yesod.Form.Types: [fvId] :: FieldView site -> Text
+ Yesod.Form.Types: [fvInput] :: FieldView site -> WidgetT site IO ()
+ Yesod.Form.Types: [fvLabel] :: FieldView site -> Markup
+ Yesod.Form.Types: [fvRequired] :: FieldView site -> Bool
+ Yesod.Form.Types: [fvTooltip] :: FieldView site -> Maybe Markup
+ Yesod.Form.Types: [unAForm] :: AForm m a -> (HandlerSite m, [Text]) -> Maybe (Env, FileEnv) -> Ints -> m (FormResult a, [FieldView (HandlerSite m)] -> [FieldView (HandlerSite m)], Ints, Enctype)
+ Yesod.Form.Types: instance (GHC.Base.Monad m, Data.Semigroup.Semigroup a) => Data.Semigroup.Semigroup (Yesod.Form.Types.AForm m a)
+ Yesod.Form.Types: instance (GHC.Base.Monad m, GHC.Base.Monoid a) => GHC.Base.Monoid (Yesod.Form.Types.AForm m a)
+ Yesod.Form.Types: instance Control.Monad.Trans.Class.MonadTrans Yesod.Form.Types.AForm
+ Yesod.Form.Types: instance Data.Foldable.Foldable Yesod.Form.Types.FormResult
+ Yesod.Form.Types: instance Data.Semigroup.Semigroup Yesod.Form.Types.Enctype
+ Yesod.Form.Types: instance Data.Semigroup.Semigroup m => Data.Semigroup.Semigroup (Yesod.Form.Types.FormResult m)
+ Yesod.Form.Types: instance Data.String.IsString (Yesod.Form.Types.FieldSettings a)
+ Yesod.Form.Types: instance Data.Traversable.Traversable Yesod.Form.Types.FormResult
+ Yesod.Form.Types: instance GHC.Base.Applicative Yesod.Form.Types.FormResult
+ Yesod.Form.Types: instance GHC.Base.Functor Yesod.Form.Types.FormResult
+ Yesod.Form.Types: instance GHC.Base.Monad m => GHC.Base.Applicative (Yesod.Form.Types.AForm m)
+ Yesod.Form.Types: instance GHC.Base.Monad m => GHC.Base.Functor (Yesod.Form.Types.AForm m)
+ Yesod.Form.Types: instance GHC.Base.Monoid Yesod.Form.Types.Enctype
+ Yesod.Form.Types: instance GHC.Base.Monoid m => GHC.Base.Monoid (Yesod.Form.Types.FormResult m)
+ Yesod.Form.Types: instance GHC.Classes.Eq Yesod.Form.Types.Enctype
+ Yesod.Form.Types: instance GHC.Classes.Eq Yesod.Form.Types.FormMessage
+ Yesod.Form.Types: instance GHC.Enum.Bounded Yesod.Form.Types.Enctype
+ Yesod.Form.Types: instance GHC.Enum.Enum Yesod.Form.Types.Enctype
+ Yesod.Form.Types: instance GHC.Read.Read Yesod.Form.Types.FormMessage
+ Yesod.Form.Types: instance GHC.Show.Show Yesod.Form.Types.FormMessage
+ Yesod.Form.Types: instance GHC.Show.Show Yesod.Form.Types.Ints
+ Yesod.Form.Types: instance GHC.Show.Show a => GHC.Show.Show (Yesod.Form.Types.FormResult a)
+ Yesod.Form.Types: instance Text.Blaze.ToMarkup Yesod.Form.Types.Enctype
- Yesod.Form.Functions: convertField :: Functor m => (a -> b) -> (b -> a) -> Field m a -> Field m b
+ Yesod.Form.Functions: convertField :: (Functor m) => (a -> b) -> (b -> a) -> Field m a -> Field m b
- Yesod.Form.Types: type FieldViewFunc m a = Text -> Text -> [(Text, Text)] -> Either Text a -> Bool -> WidgetT (HandlerSite m) IO ()
+ Yesod.Form.Types: type FieldViewFunc m a = Text ID -> Text Name -> [(Text, Text)] Attributes -> Either Text a Either (invalid text) or (legitimate result) -> Bool Required? -> WidgetT (HandlerSite m) IO ()

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.4.5++* Foldable/Traversable instances for FormResult [#1089](https://github.com/yesodweb/yesod/pull/1089)+ ## 1.4.4.1  * runFormPost has wrong behavior for empty forms [#950](https://github.com/yesodweb/yesod/issues/950)
Yesod/Form/Functions.hs view
@@ -228,9 +228,10 @@                     | not (Map.lookup tokenKey params === reqToken req) ->                         FormFailure [renderMessage m langs MsgCsrfWarning]                 _ -> res+            -- It's important to use constant-time comparison (constEqBytes) in order to avoid timing attacks.             where (Just [t1]) === (Just t2) = TE.encodeUtf8 t1 `constEqBytes` TE.encodeUtf8 t2-                  Nothing     === Nothing   = True   -- It's important to use constTimeEq-                  _           === _         = False  -- in order to avoid timing attacks.+                  Nothing     === Nothing   = True+                  _           === _         = False     return ((res', xml), enctype)  -- | Similar to 'runFormPost', except it always ignores the currently available
Yesod/Form/Types.hs view
@@ -35,6 +35,8 @@ import Yesod.Core import qualified Data.Map as Map import Data.Semigroup (Semigroup, (<>))+import Data.Traversable+import Data.Foldable  -- | A form can produce three different results: there was no data available, -- the data was invalid, or there was a successful parse.@@ -61,6 +63,20 @@     mappend x y = mappend <$> x <*> y instance Semigroup m => Semigroup (FormResult m) where     x <> y = (<>) <$> x <*> y++-- | @since 1.4.5+instance Foldable FormResult where+    foldMap f r = case r of+      FormSuccess a -> f a+      FormFailure errs -> mempty+      FormMissing -> mempty++-- | @since 1.4.5+instance Traversable FormResult where+    traverse f r = case r of+      FormSuccess a -> fmap FormSuccess (f a)+      FormFailure errs -> pure (FormFailure errs)+      FormMissing -> pure FormMissing  -- | The encoding type required by a form. The 'ToHtml' instance produces values -- that can be inserted directly into HTML.
yesod-form.cabal view
@@ -1,5 +1,5 @@ name:            yesod-form-version:         1.4.4.1+version:         1.4.5 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>