@@ -22,6 +22,7 @@ module Reflex.Dom.Builder.Class
2222
2323import Reflex.Class as Reflex
2424import Reflex.Dom.Builder.Class.Events
25+import Reflex.Dom.Builder.Class.TH
2526import Reflex.DynamicWriter
2627import Reflex.EventWriter
2728import Reflex.PerformEvent.Class
@@ -240,7 +241,7 @@ data Placeholder above t
240241
241242data InputElementConfig er t m
242243 = InputElementConfig { _inputElementConfig_initialValue :: Text
243− , _inputElementConfig_setValue :: Event t Text
244+ , _inputElementConfig_setValue :: Maybe (Event t Text)
244245 , _inputElementConfig_initialChecked :: Bool
245246 , _inputElementConfig_setChecked :: Event t Bool
246247 , _inputElementConfig_elementConfig :: ElementConfig er t m
@@ -250,7 +251,7 @@ instance (Reflex t, er ~ EventResult, DomBuilder t m) => Default (InputElementCo
250251 {-# INLINABLE def #-}
251252 def = InputElementConfig
252253 { _inputElementConfig_initialValue = ""
253− , _inputElementConfig_setValue = never
254+ , _inputElementConfig_setValue = Nothing
254255 , _inputElementConfig_initialChecked = False
255256 , _inputElementConfig_setChecked = never
256257 , _inputElementConfig_elementConfig = def
@@ -327,9 +328,8 @@ data SelectElement er d t = SelectElement
327328 , _selectElement_raw :: RawSelectElement d
328329 }
329330
330−makeLensesFor
331− [("_textNodeConfig_initialContents", "textNodeConfig_initialContents")]
332− ''TextNodeConfig
331+makeLensesWithoutField "_textNodeConfig_setContents" ''TextNodeConfig
332+makeLensesWithoutField "_inputElementConfig_setValue" ''InputElementConfig
333333
334334-- | This lens is technically illegal. The implementation of 'TextNodeConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'TextNodeConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
335335textNodeConfig_setContents :: Reflex t => Lens (TextNodeConfig t) (TextNodeConfig t) (Event t Text) (Event t Text)
@@ -340,10 +340,18 @@ textNodeConfig_setContents =
340340 setter t e = t { _textNodeConfig_setContents = Just e }
341341 in lens getter setter
342342
343+-- | This lens is technically illegal. The implementation of 'InputElementConfig' uses a 'Maybe' under the hood for efficiency reasons. However, always interacting with 'InputElementConfig' via lenses will always behave correctly, and if you pattern match on it, you should always treat 'Nothing' as 'never'.
344+inputElementConfig_setValue :: Reflex t => Lens (InputElementConfig er t m) (InputElementConfig er t m) (Event t Text) (Event t Text)
345+inputElementConfig_setValue =
346+ let getter t = case _inputElementConfig_setValue t of
347+ Nothing -> never
348+ Just e -> e
349+ setter t e = t { _inputElementConfig_setValue = Just e }
350+ in lens getter setter
351+
343352concat <$> mapM makeLenses
344353 [ ''ElementConfig
345354 , ''PlaceholderConfig
346− , ''InputElementConfig
347355 , ''TextAreaElementConfig
348356 , ''SelectElementConfig
349357 , ''RawElementConfig