on develop help sign in
Merge pull request #121 from reflex-frp/dombuilder-eventwritert

Add DomBuilder instance for EventWriterT

commite8b4a7c66d2263d1607b4143b725a325888ebe38 authorRyan Trinkle <ryan.trinkle@gmail.com> dateMon 26 Dec 2016, 11:01 (10 years ago) parentefaaa5275e06d9
1 file changed+19
src/Reflex/Dom/Builder/Class.hs+19
src/Reflex/Dom/Builder/Class.hs+19
@@ -448,6 +448,25 @@ instance (DomBuilder t m, MonadHold t m, MonadFix m) => DomBuilder t (RequesterT
448448 { _rawElementConfig_eventSpec = _rawElementConfig_eventSpec cfg
449449 }
450450
451+instance (DomBuilder t m, MonadHold t m, MonadFix m, Semigroup w, Monoid w) => DomBuilder t (EventWriterT t w m) where
452+ type DomBuilderSpace (EventWriterT t w m) = DomBuilderSpace m
453+ textNode = liftTextNode
454+ element elementTag cfg child = do
455+ let cfg' = liftElementConfig cfg
456+ (el, (a, e)) <- lift $ element elementTag cfg' $ runEventWriterT child
457+ tellEvent e
458+ return (el, a)
459+ inputElement cfg = lift $ inputElement $ cfg & inputElementConfig_elementConfig %~ liftElementConfig
460+ textAreaElement cfg = lift $ textAreaElement $ cfg & textAreaElementConfig_elementConfig %~ liftElementConfig
461+ selectElement cfg child = do
462+ let cfg' = cfg & selectElementConfig_elementConfig %~ liftElementConfig
463+ (el, (a, e)) <- lift $ selectElement cfg' $ runEventWriterT child
464+ tellEvent e
465+ return (el, a)
466+ placeRawElement = lift . placeRawElement
467+ wrapRawElement e cfg = lift $ wrapRawElement e $ cfg
468+ { _rawElementConfig_eventSpec = _rawElementConfig_eventSpec cfg
469+ }
451470
452471-- * Convenience functions
453472