From 39ed1f6453e7f0d870119d3cae7925573dadf972 Mon Sep 17 00:00:00 2001 From: Burtannia Date: Fri, 13 Nov 2020 20:18:50 +0000 Subject: [PATCH] Added support for customising button contents --- yesod-form-multi/Yesod/Form/MultiInput.hs | 46 +++++++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/yesod-form-multi/Yesod/Form/MultiInput.hs b/yesod-form-multi/Yesod/Form/MultiInput.hs index e6c3e4af..90767857 100644 --- a/yesod-form-multi/Yesod/Form/MultiInput.hs +++ b/yesod-form-multi/Yesod/Form/MultiInput.hs @@ -17,7 +17,9 @@ module Yesod.Form.MultiInput , mmulti , amulti , bs3Settings + , bs3FASettings , bs4Settings + , bs4FASettings ) where import Control.Arrow (second) @@ -45,6 +47,8 @@ instance ToJavascript Text where toJavascript = toJavascript . toJSON data MultiSettings site = MultiSettings { msAddClass :: Text -- ^ Class to be applied to the "add another" button. , msDelClass :: Text -- ^ Class to be applied to the "delete" button. + , msAddInner :: Maybe Html -- ^ Inner Html of add button, defaults to "Add Another". Useful for adding icons inside buttons. + , msDelInner :: Maybe Html -- ^ Inner Html of delete button, defaults to "Delete". Useful for adding icons inside buttons. , msErrWidget :: Maybe (Html -> WidgetFor site ()) -- ^ Only used in applicative forms. Create a widget for displaying errors. } @@ -60,7 +64,7 @@ data MultiView site = MultiView -- -- @since 1.6.0 bs3Settings :: MultiSettings site -bs3Settings = MultiSettings "btn btn-default" "btn btn-danger" (Just errW) +bs3Settings = MultiSettings "btn btn-default" "btn btn-danger" Nothing Nothing (Just errW) where errW err = [whamlet| @@ -71,13 +75,39 @@ bs3Settings = MultiSettings "btn btn-default" "btn btn-danger" (Just errW) -- -- @since 1.6.0 bs4Settings :: MultiSettings site -bs4Settings = MultiSettings "btn btn-basic" "btn btn-danger" (Just errW) +bs4Settings = MultiSettings "btn btn-basic" "btn btn-danger" Nothing Nothing (Just errW) where errW err = [whamlet|
#{err} |] +-- | 'MultiSettings' for Bootstrap 3 with Font Awesome 5 Icons. +-- +-- @since 1.6.0 +bs3FASettings :: MultiSettings site +bs3FASettings = MultiSettings "btn btn-default" "btn btn-danger" addIcon delIcon (Just errW) + where + addIcon = Just [shamlet||] + delIcon = Just [shamlet||] + errW err = + [whamlet| + #{err} + |] + +-- | 'MultiSettings' for Bootstrap 4 with Font Awesome 5 Icons. +-- +-- @since 1.6.0 +bs4FASettings :: MultiSettings site +bs4FASettings = MultiSettings "btn btn-basic" "btn btn-danger" addIcon delIcon (Just errW) + where + addIcon = Just [shamlet||] + delIcon = Just [shamlet||] + errW err = + [whamlet| +
#{err} + |] + -- | Applicative equivalent of 'mmulti'. -- -- @since 1.6.0 @@ -209,7 +239,11 @@ mhelperMulti field@Field {..} fs@FieldSettings {..} wrapperClass defs minVals Mu mkDelBtn fieldId = do let delBtnId = delBtnPrefix <> fieldId [whamlet| -