diff --git a/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs b/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs index 04779f9..64a4b5d 100644 --- a/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs +++ b/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs @@ -13,6 +13,7 @@ module Reflex.Dom.Colonnade , basic , static , capped + , cappedTraversing , dynamic , dynamicCapped -- * Cell Functions @@ -30,6 +31,7 @@ import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Builder as LT import qualified Data.Map.Strict as M import Data.Foldable (Foldable(..),for_) +import Data.Traversable (for) import Data.Semigroup (Semigroup(..)) import Control.Applicative (liftA2) import Reflex.Dom @@ -148,6 +150,34 @@ capped tableAttrs headAttrs bodyAttrs trAttrs fascia cornice collection = b <- body bodyAttrs trAttrs (E.discard cornice) collection return (h `mappend` b) +bodyTraversing :: (DomBuilder t m, PostBuild t m, Traversable f, Monoid e) + => M.Map T.Text T.Text + -> (a -> M.Map T.Text T.Text) + -> Colonnade p a (Cell t m e) + -> f a + -> m (f e) +bodyTraversing bodyAttrs trAttrs colonnade collection = + elAttr "tbody" bodyAttrs . for collection $ \a -> + elAttr "tr" (trAttrs a) . + unWrappedApplicative $ + E.rowMonoidal colonnade (WrappedApplicative . elFromCell "td") a + +cappedTraversing :: + (DomBuilder t m, PostBuild t m, MonadHold t m, Traversable f, Monoid e) + => M.Map T.Text T.Text -- ^ @\