on develop help sign in
Merge branch 'develop' into dependency-bounds
commitbe42edcd36b8dc4b9ece0bf125dcdb3349361300 authorElliot Cameron <3noch@users.noreply.github.com> dateThu 7 May 2020, 23:50 (6 years ago) parente6390fdc9b917e
3 files changed+16−3
reflex-dom-core/ChangeLog.md+1 reflex-dom-core/src/Reflex/Dom/Builder/Class/Events.hs+2−1 reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+13−2
reflex-dom-core/ChangeLog.md+1
@@ -2,6 +2,7 @@
22
33## Unreleased
44
5+* ([#374](https://github.com/reflex-frp/reflex-dom/pull/374)) Provide text clipboard data as value of Paste event.
56* ([#353](https://github.com/reflex-frp/reflex-dom/pull/353)) Support GHC 8.8.
67* ([#358](https://github.com/reflex-frp/reflex-dom/pull/358)) Fix attribute support for explicitly namespaced elements.
78* ([#363](https://github.com/reflex-frp/reflex-dom/pull/363)) Remove deprecation warnings for the following widgets in
reflex-dom-core/src/Reflex/Dom/Builder/Class/Events.hs+2−1
@@ -14,6 +14,7 @@ import Data.GADT.Compare.TH
1414import Data.GADT.Compare
1515 (GOrdering(..), (:~:)(..), GEq(..), GCompare(..))
1616#endif
17+import Data.Text (Text)
1718
1819data EventTag
1920 = AbortTag
@@ -151,7 +152,7 @@ type family EventResultType (en :: EventTag) :: * where
151152 EventResultType 'BeforecopyTag = ()
152153 EventResultType 'CopyTag = ()
153154 EventResultType 'BeforepasteTag = ()
154− EventResultType 'PasteTag = ()
155+ EventResultType 'PasteTag = Maybe Text
155156 EventResultType 'ResetTag = ()
156157 EventResultType 'SearchTag = ()
157158 EventResultType 'SelectstartTag = ()
reflex-dom-core/src/Reflex/Dom/Builder/Immediate.hs+13−2
@@ -144,6 +144,7 @@ import Data.String (IsString)
144144import Data.Text (Text)
145145import Foreign.JavaScript.Internal.Utils
146146import Foreign.JavaScript.TH
147+import GHCJS.DOM.ClipboardEvent as ClipboardEvent
147148import GHCJS.DOM.Document (Document, createDocumentFragment, createElement, createElementNS, createTextNode, createComment)
148149import GHCJS.DOM.Element (getScrollTop, removeAttribute, removeAttributeNS, setAttribute, setAttributeNS, hasAttribute)
149150import GHCJS.DOM.EventM (EventM, event, on)
@@ -179,6 +180,7 @@ import qualified Data.IntMap.Strict as IntMap
179180import qualified Data.Map as Map
180181import qualified Data.Text as T
181182import qualified GHCJS.DOM as DOM
183+import qualified GHCJS.DOM.DataTransfer as DataTransfer
182184import qualified GHCJS.DOM.DocumentAndElementEventHandlers as Events
183185import qualified GHCJS.DOM.DocumentOrShadowRoot as Document
184186import qualified GHCJS.DOM.Element as Element
@@ -2255,7 +2257,7 @@ defaultDomEventHandler e evt = fmap (Just . EventResult) $ case evt of
22552257 Beforecopy -> return ()
22562258 Copy -> return ()
22572259 Beforepaste -> return ()
2258− Paste -> return ()
2260+ Paste -> getPasteData
22592261 Reset -> return ()
22602262 Search -> return ()
22612263 Selectstart -> return ()
@@ -2305,7 +2307,7 @@ defaultDomWindowEventHandler w evt = fmap (Just . EventResult) $ case evt of
23052307 Beforecopy -> return ()
23062308 Copy -> return ()
23072309 Beforepaste -> return ()
2308− Paste -> return ()
2310+ Paste -> getPasteData
23092311 Reset -> return ()
23102312 Search -> return ()
23112313 Selectstart -> return ()
@@ -2582,6 +2584,15 @@ getMouseEventCoords = do
25822584 e <- event
25832585 bisequence (getClientX e, getClientY e)
25842586
2587+{-# INLINABLE getPasteData #-}
2588+getPasteData :: EventM e ClipboardEvent (Maybe Text)
2589+getPasteData = do
2590+ e <- event
2591+ mdt <- ClipboardEvent.getClipboardData e
2592+ case mdt of
2593+ Nothing -> return Nothing
2594+ Just dt -> Just <$> DataTransfer.getData dt ("text" :: Text)
2595+
25852596{-# INLINABLE getTouchEvent #-}
25862597getTouchEvent :: EventM e TouchEvent TouchEventResult
25872598getTouchEvent = do