reflex-dom-ionic 0.1.0.1 → 0.2.0.0
raw patch · 3 files changed
+40/−3 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Reflex.Dom.Widget.Ionic: ionTextAreaElement :: (MonadWidget t m, DomRenderHook t m, TriggerEvent t m) => TextAreaElementConfig EventResult t (DomBuilderSpace m) -> m (TextAreaElement EventResult (DomBuilderSpace m) t)
Files
- CHANGELOG.md +5/−1
- reflex-dom-ionic.cabal +1/−1
- src/Reflex/Dom/Widget/Ionic.hs +34/−1
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for reflex-dom-ionic -## 0.1.0.0 -- YYYY-mm-dd+## 0.2.0.0 ++ionTextArea added++## 0.1.0.0 * First version. Released on an unsuspecting world.
reflex-dom-ionic.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: reflex-dom-ionic-version: 0.1.0.1+version: 0.2.0.0 synopsis: Compatible highlevel Wigdets for some Ionic Input Components
src/Reflex/Dom/Widget/Ionic.hs view
@@ -3,7 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} module Reflex.Dom.Widget.Ionic (ionInputElement,- ionSelectElement)+ ionSelectElement,+ ionTextAreaElement) where import Control.Lens (Identity(..), imapM_, iforM_, (^.), makeLenses)@@ -25,7 +26,9 @@ import qualified GHCJS.DOM.GlobalEventHandlers as Events import qualified GHCJS.DOM.HTMLInputElement as Input import qualified GHCJS.DOM.HTMLSelectElement as Select+import qualified GHCJS.DOM.HTMLTextAreaElement as TextArea + import qualified GHCJS.DOM.EventTargetClosures as DOM (EventName, unsafeEventName, unsafeEventNameAsync) --import qualified GHCJS.DOM.Types as DOM --import qualified GHCJS.DOM.EventM as DOM@@ -133,3 +136,33 @@ , _selectElement_raw = domSelectElement } return (wrapped, result)+++ionTextAreaElement+ :: (MonadWidget t m, DomRenderHook t m, TriggerEvent t m )+ => TextAreaElementConfig EventResult t (DomBuilderSpace m) ->+ m (TextAreaElement EventResult (DomBuilderSpace m) t)+ionTextAreaElement cfg = do+ (e@(Element eventSelector domElement), _) <- element "ion-textarea" (cfg ^. textAreaElementConfig_elementConfig) $ return ()+ let domTextAreaElement = uncheckedCastTo DOM.HTMLTextAreaElement domElement+ TextArea.setValue domTextAreaElement $ cfg ^. textAreaElementConfig_initialValue+ v0 <- TextArea.getValue domTextAreaElement+ let getMyValue = TextArea.getValue domTextAreaElement+ valueChangedByUI <- requestDomAction $ liftJSM getMyValue <$ Reflex.select eventSelector (WrapArg Input)+ valueChangedBySetValue <- case _textAreaElementConfig_setValue cfg of+ Nothing -> return never+ Just eSetValue -> requestDomAction $ ffor eSetValue $ \v' -> do+ TextArea.setValue domTextAreaElement v'+ getMyValue -- We get the value after setting it in case the browser has mucked with it somehow+ v <- holdDyn v0 $ leftmost+ [ valueChangedBySetValue+ , valueChangedByUI+ ]+ hasFocus <- mkHasFocus e+ return $ TextAreaElement+ { _textAreaElement_value = v+ , _textAreaElement_input = valueChangedByUI+ , _textAreaElement_hasFocus = hasFocus+ , _textAreaElement_element = e+ , _textAreaElement_raw = domTextAreaElement+ }