packages feed

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 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+    }