@@ -6,6 +6,7 @@ module React.Basic.DOM.Events
66 , DOMNode
77 , DOMEvent
88 , EventFn
9+ , handler
910 -- , smoosh
1011 , bubbles
1112 , cancelable
@@ -23,13 +24,16 @@ module React.Basic.DOM.Events
2324 , stopPropagation
2425 , isPropagationStopped
2526 , target
27+ , targetChecked
28+ , targetValue
2629 , timeStamp
2730 , type_
2831 ) where
2932
3033import Prelude
3134
32- import Control.Monad.Eff.Uncurried (EffFn1 )
35+ import Control.Monad.Eff (Eff )
36+ import Control.Monad.Eff.Uncurried (EffFn1 , mkEffFn1 )
3337import Data.Nullable (Nullable )
3438import React.Basic (ReactFX )
3539import Unsafe.Coerce (unsafeCoerce )
@@ -52,6 +56,9 @@ newtype EventFn a b = EventFn (a -> b)
5256derive newtype instance semigroupoidBuilder :: Semigroupoid EventFn
5357derive newtype instance categoryBuilder :: Category EventFn
5458
59+ handler :: forall a . EventFn SyntheticEvent a -> (a -> Eff (react :: ReactFX ) Unit ) -> EventHandler
60+ handler (EventFn fn) cb = mkEffFn1 $ fn >>> cb
61+
5562-- smoosh
5663-- :: { b :: EventFn a b } -> { c :: EventFn a c } -> EventFn a { b :: b, c :: c }
5764-- smoosh = ?smoosh
@@ -113,10 +120,10 @@ target :: EventFn SyntheticEvent DOMNode
113120target = EventFn \e -> (unsafeCoerce e).target
114121
115122targetChecked :: EventFn SyntheticEvent (Nullable Boolean )
116- targetChecked = EventFn \e -> (unsafeCoerce e).targetChecked
123+ targetChecked = EventFn \e -> (unsafeCoerce e).target.checked
117124
118125targetValue :: EventFn SyntheticEvent (Nullable String )
119- targetValue = EventFn \e -> (unsafeCoerce e).targetValue
126+ targetValue = EventFn \e -> (unsafeCoerce e).target.value
120127
121128timeStamp :: EventFn SyntheticEvent Number
122129timeStamp = EventFn \e -> (unsafeCoerce e).timeStamp
0 commit comments