digestive-functors-heist 0.6.2.1 → 0.7.0.0
raw patch · 3 files changed
+32/−37 lines, 3 filesdep ~digestive-functorsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: digestive-functors
API changes (from Hackage documentation)
- Text.Digestive.Heist.Compiled: formSplice' :: Monad m => [(Text, Splice m)] -> [(Text, AttrSplice m)] -> m (View Text) -> Splice m
- Text.Digestive.Heist.Compiled: formSplice :: Monad m => m (View Text) -> Splice m
+ Text.Digestive.Heist.Compiled: formSplice :: Monad m => [(Text, Splice m)] -> [(Text, AttrSplice m)] -> RuntimeSplice m (View Text) -> Splice m
Files
- digestive-functors-heist.cabal +2/−2
- src/Text/Digestive/Heist.hs +23/−12
- src/Text/Digestive/Heist/Compiled.hs +7/−23
digestive-functors-heist.cabal view
@@ -1,5 +1,5 @@ Name: digestive-functors-heist-Version: 0.6.2.1+Version: 0.7.0.0 Synopsis: Heist frontend for the digestive-functors library Description: Heist frontend for the digestive-functors library Homepage: http://github.com/jaspervdj/digestive-functors@@ -21,7 +21,7 @@ Build-depends: base >= 4 && < 5, blaze-builder >= 0.3 && < 0.4,- digestive-functors >= 0.6 && < 0.7,+ digestive-functors >= 0.6.1 && < 0.7, heist >= 0.11.1 && < 0.13, mtl >= 2 && < 2.2, text >= 0.11 && < 0.12,
src/Text/Digestive/Heist.hs view
@@ -138,6 +138,12 @@ --------------------------------------------------------------------------------+-- | +setDisabled :: Text -> View v -> [(Text, Text)] -> [(Text, Text)]+setDisabled ref view = if viewDisabled ref view then (("disabled",""):) else id+++-------------------------------------------------------------------------------- -- | Generate an input field with a supplied type. Example: -- -- > <dfInput type="date" ref="date" />@@ -146,7 +152,7 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = fieldInputText ref view- return $ makeElement "input" [] $ addAttrs attrs+ return $ makeElement "input" [] $ addAttrs attrs $ setDisabled ref view [("id", ref'), ("name", ref'), ("value", value)] @@ -159,7 +165,7 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = fieldInputText ref view- return $ makeElement "input" [] $ addAttrs attrs+ return $ makeElement "input" [] $ addAttrs attrs $ setDisabled ref view [("type", "text"), ("id", ref'), ("name", ref'), ("value", value)] @@ -172,8 +178,8 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = fieldInputText ref view- return $ makeElement "textarea" [X.TextNode value] $ addAttrs attrs- [("id", ref'), ("name", ref')]+ return $ makeElement "textarea" [X.TextNode value] $ addAttrs attrs $+ setDisabled ref view [("id", ref'), ("name", ref')] --------------------------------------------------------------------------------@@ -185,7 +191,7 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = fieldInputText ref view- return $ makeElement "input" [] $ addAttrs attrs+ return $ makeElement "input" [] $ addAttrs attrs $ setDisabled ref view [("type", "password"), ("id", ref'), ("name", ref'), ("value", value)] @@ -198,7 +204,7 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = fieldInputText ref view- return $ makeElement "input" [] $ addAttrs attrs+ return $ makeElement "input" [] $ addAttrs attrs $ setDisabled ref view [("type", "hidden"), ("id", ref'), ("name", ref'), ("value", value)] @@ -218,7 +224,7 @@ (attr sel ("selected", "selected") [("value", value i)]) [X.TextNode c] - return $ makeElement "select" kids $ addAttrs attrs+ return $ makeElement "select" kids $ addAttrs attrs $ setDisabled ref view [("id", ref'), ("name", ref')] @@ -240,7 +246,7 @@ (attr sel ("selected", "selected") [("value", value i)]) [X.TextNode c] - return $ makeElement "select" kids $ addAttrs attrs+ return $ makeElement "select" kids $ addAttrs attrs $ setDisabled ref view [("id", ref'), ("name", ref')] @@ -280,7 +286,7 @@ let ref' = absoluteRef ref view value = fieldInputBool ref view return $ makeElement "input" [] $ addAttrs attrs $- attr value ("checked", "checked") $+ attr value ("checked", "checked") $ setDisabled ref view [("type", "checkbox"), ("id", ref'), ("name", ref')] @@ -293,7 +299,7 @@ (ref, attrs) <- getRefAttributes Nothing let ref' = absoluteRef ref view value = maybe "" T.pack $ fieldInputFile ref view- return $ makeElement "input" [] $ addAttrs attrs+ return $ makeElement "input" [] $ addAttrs attrs $ setDisabled ref view [("type", "file"), ("id", ref'), ("name", ref'), ("value", value)] @@ -411,6 +417,11 @@ return nodes +disableOnclick :: Text -> View v -> [(Text, Text)] -> [(Text, Text)]+disableOnclick ref view =+ if viewDisabled ref view then const [("disabled","")] else id++ -------------------------------------------------------------------------------- -- | This splice allows variable length lists. It binds several attribute -- splices providing functionality for dynamically manipulating the list. The@@ -440,11 +451,11 @@ [ ("id", listRef) , ("class", "inputList") ]- addControl _ = return+ addControl _ = return $ disableOnclick ref view [ ("onclick", T.concat [ "addInputListItem(this, '" , listRef , "'); return false;"] ) ]- removeControl _ = return+ removeControl _ = return $ disableOnclick ref view [ ("onclick", T.concat [ "removeInputListItem(this, '" , listRef , "'); return false;"] ) ]
src/Text/Digestive/Heist/Compiled.hs view
@@ -29,7 +29,6 @@ module Text.Digestive.Heist.Compiled ( -- * Core methods formSplice- , formSplice' -- * Main splices , dfInput@@ -57,7 +56,6 @@ -------------------------------------------------------------------------------- import Blaze.ByteString.Builder import Control.Monad (mplus)-import Control.Monad.Trans import Data.Function (on) import Data.List (unionBy) import Data.Maybe (fromMaybe)@@ -111,26 +109,12 @@ -- -- Then you can use the customerForm tag just like you would use the dfForm -- tag in interpreted templates anywhere you want to have a customer form.-formSplice :: Monad m => m (View Text) -> Splice m-formSplice = formSplice' [] []------------------------------------------------------------------------------------ | A compiled splice for a specific form. You pass in a runtime action that--- gets the form's view and this function returns a splice that creates a form--- tag. In your HeistConfig you might have a compiled splice like this:------ `("customerForm", formSplice (liftM fst $ runForm "customer" custForm))`------ Then you can use the customerForm tag just like you would use the dfForm--- tag in interpreted templates anywhere you want to have a customer form.---formSplice' :: Monad m => m (View Text) -> Splice m-formSplice' :: Monad m- => [(Text, Splice m)]- -> [(Text, AttrSplice m)]- -> m (View Text)- -> Splice m-formSplice' ss as getView = do+formSplice :: Monad m+ => [(Text, Splice m)]+ -> [(Text, AttrSplice m)]+ -> RuntimeSplice m (View Text)+ -> Splice m+formSplice ss as getView = do node <- getParamNode let (_, attrs) = getRefAttributes node Nothing tree = X.Element "form"@@ -141,7 +125,7 @@ (X.childNodes node) action = runNode tree defer (\vp -> withLocalSplices (digestiveSplices vp ++ ss) as action)- (lift getView)+ getView --------------------------------------------------------------------------------