on develop help sign in
Add input/change events to Input widgets
commita2e5d0edbc27e8ee4b0c274c65ecb177cb3e45fd authorRyan Trinkle <ryan.trinkle@gmail.com> dateThu 14 May 2015, 01:24 (11 years ago) parent19b2c94
1 file changed+8−4
src/Reflex/Dom/Widget/Input.hs+8−4
src/Reflex/Dom/Widget/Input.hs+8−4
@@ -26,6 +26,7 @@ import Data.Dependent.Sum (DSum (..))
2626
2727data TextInput t
2828 = TextInput { _textInput_value :: Dynamic t String
29+ , _textInput_input :: Event t String
2930 , _textInput_keypress :: Event t Int
3031 , _textInput_keydown :: Event t Int
3132 , _textInput_keyup :: Event t Int
@@ -66,7 +67,7 @@ textInput (TextInputConfig inputType initial eSetValue dAttrs) = do
6667 eKeydown <- wrapDomEvent e elementOnkeydown getKeyEvent
6768 eKeyup <- wrapDomEvent e elementOnkeyup getKeyEvent
6869 dValue <- holdDyn initial $ leftmost [eSetValue, eChange]
69− return $ TextInput dValue eKeypress eKeydown eKeyup dFocus e
70+ return $ TextInput dValue eChange eKeypress eKeydown eKeyup dFocus e
7071
7172textInputGetEnter :: Reflex t => TextInput t -> Event t ()
7273textInputGetEnter i = fmapMaybe (\n -> if n == keycodeEnter then Just () else Nothing) $ _textInput_keypress i
@@ -85,6 +86,7 @@ instance Reflex t => Default (TextAreaConfig t) where
8586
8687data TextArea t
8788 = TextArea { _textArea_value :: Dynamic t String
89+ , _textArea_input :: Event t String
8890 , _textArea_element :: HTMLTextAreaElement
8991 , _textArea_hasFocus :: Dynamic t Bool
9092 , _textArea_keypress :: Event t Int
@@ -107,7 +109,7 @@ textArea (TextAreaConfig initial eSet attrs) = do
107109 ev <- wrapDomEvent e elementOninput $ liftIO $ htmlTextAreaElementGetValue e
108110 v <- holdDyn initial $ leftmost [eSet, ev]
109111 eKeypress <- wrapDomEvent e elementOnkeypress getKeyEvent
110− return $ TextArea v e f eKeypress
112+ return $ TextArea v ev e f eKeypress
111113
112114data CheckboxConfig t
113115 = CheckboxConfig { _checkboxConfig_setValue :: Event t Bool
@@ -121,6 +123,7 @@ instance Reflex t => Default (CheckboxConfig t) where
121123
122124data Checkbox t
123125 = Checkbox { _checkbox_value :: Dynamic t Bool
126+ , _checkbox_change :: Event t Bool
124127 }
125128
126129--TODO: Make attributes possibly dynamic
@@ -133,7 +136,7 @@ checkbox checked config = do
133136 eClick <- wrapDomEvent e elementOnclick $ liftIO $ htmlInputElementGetChecked e
134137 performEvent_ $ fmap (\v -> liftIO $ htmlInputElementSetChecked e $! v) $ _checkboxConfig_setValue config
135138 dValue <- holdDyn checked $ leftmost [_checkboxConfig_setValue config, eClick]
136− return $ Checkbox dValue
139+ return $ Checkbox dValue eClick
137140
138141checkboxView :: MonadWidget t m => Dynamic t (Map String String) -> Dynamic t Bool -> m (Event t Bool)
139142checkboxView dAttrs dValue = do
@@ -149,6 +152,7 @@ checkboxView dAttrs dValue = do
149152
150153data Dropdown t k
151154 = Dropdown { _dropdown_value :: Dynamic t k
155+ , _dropdown_change :: Event t k
152156 }
153157
154158data DropdownConfig t k
@@ -181,7 +185,7 @@ dropdown k0 options (DropdownConfig setK attrs) = do
181185 guard $ Map.member k opts
182186 return k
183187 dValue <- combineDyn readKey options =<< holdDyn (Just k0) (leftmost [eChange, fmap Just setK])
184− return $ Dropdown dValue
188+ return $ Dropdown dValue (attachDynWith readKey options eChange)
185189
186190liftM concat $ mapM makeLenses
187191 [ ''TextAreaConfig