diff --git a/yesod-form/ChangeLog.md b/yesod-form/ChangeLog.md index af0f887b..a112a14c 100644 --- a/yesod-form/ChangeLog.md +++ b/yesod-form/ChangeLog.md @@ -1,3 +1,7 @@ +## 1.6.4 + +* Expose `selectFieldHelper` [#1530](https://github.com/yesodweb/yesod/pull/1530) + ## 1.6.3 * Changed `Textarea` to derive `IsString` [#1514](https://github.com/yesodweb/yesod/pull/1514) diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index d64776ff..37c53942 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -42,6 +42,7 @@ module Yesod.Form.Fields , fileAFormOpt -- * Options -- $optionsOverview + , selectFieldHelper , selectField , selectFieldList , radioField @@ -729,11 +730,15 @@ optionsPersistKey filts ords toDisplay = fmap mkOptionList $ do , optionExternalValue = toPathPiece key }) pairs +-- | +-- A helper function for constucting 'selectField's. You may want to use this when you define your custom 'selectField's or 'radioField's. +-- +-- Since 1.6.4 selectFieldHelper :: (Eq a, RenderMessage site FormMessage) - => (Text -> Text -> [(Text, Text)] -> WidgetFor site () -> WidgetFor site ()) - -> (Text -> Text -> Bool -> WidgetFor site ()) - -> (Text -> Text -> [(Text, Text)] -> Text -> Bool -> Text -> WidgetFor site ()) + => (Text -> Text -> [(Text, Text)] -> WidgetFor site () -> WidgetFor site ()) -- ^ Outermost part of the field + -> (Text -> Text -> Bool -> WidgetFor site ()) -- ^ An option for None if the field is optional + -> (Text -> Text -> [(Text, Text)] -> Text -> Bool -> Text -> WidgetFor site ()) -- ^ Other options -> HandlerFor site (OptionList a) -> Field (HandlerFor site) a selectFieldHelper outside onOpt inside opts' = Field diff --git a/yesod-form/yesod-form.cabal b/yesod-form/yesod-form.cabal index e2c1ae5d..817ef8db 100644 --- a/yesod-form/yesod-form.cabal +++ b/yesod-form/yesod-form.cabal @@ -1,5 +1,5 @@ name: yesod-form -version: 1.6.3 +version: 1.6.4 license: MIT license-file: LICENSE author: Michael Snoyman