Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit a0729ea

Browse files
authored
Merge pull request #140 from fehrenbach/dropeffect
Add dropEffect getter and setter on DataTransfer
2 parents 57f70b3 + 9251a2b commit a0729ea

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

src/DOM/HTML/Event/DataTransfer.js

+14
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,17 @@ exports.setDataImpl = function (format) {
2525
};
2626
};
2727
};
28+
29+
exports.dropEffectImpl = function (dataTransfer) {
30+
return function () {
31+
return dataTransfer.dropEffect;
32+
};
33+
};
34+
35+
exports.setDropEffectImpl = function (e) {
36+
return function (dataTransfer) {
37+
return function () {
38+
dataTransfer.dropEffect = e;
39+
};
40+
};
41+
};

src/DOM/HTML/Event/DataTransfer.purs

+34
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ module DOM.HTML.Event.DataTransfer
44
, types
55
, getData
66
, setData
7+
, DropEffect(..)
8+
, dropEffect
9+
, setDropEffect
710
) where
811

912
import Prelude
13+
1014
import Control.Monad.Eff (Eff)
1115
import DOM (DOM)
1216
import DOM.File.Types (FileList)
1317
import Data.Maybe (Maybe)
1418
import Data.MediaType (MediaType(..))
1519
import Data.Nullable (Nullable, toMaybe)
20+
import Partial (crashWith)
21+
import Partial.Unsafe (unsafePartial)
1622

1723
foreign import data DataTransfer :: Type
1824

@@ -61,3 +67,31 @@ setData
6167
-> DataTransfer
6268
-> Eff (dom :: DOM | eff) Unit
6369
setData (MediaType format) dat dt = setDataImpl format dat dt
70+
71+
foreign import dropEffectImpl :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) String
72+
73+
data DropEffect = Copy | Link | Move | None
74+
75+
derive instance eqDropEffect :: Eq DropEffect
76+
derive instance ordDropEffect :: Ord DropEffect
77+
78+
--| Gets the data transfer object's drop effect.
79+
dropEffect :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) DropEffect
80+
dropEffect dt = do
81+
de <- dropEffectImpl dt
82+
pure $ unsafePartial $ case de of
83+
"copy" -> Copy
84+
"link" -> Link
85+
"move" -> Move
86+
"none" -> None
87+
_ -> crashWith "Impossible according to https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/dropEffect"
88+
89+
foreign import setDropEffectImpl :: forall eff. String -> DataTransfer -> Eff (dom :: DOM | eff) Unit
90+
91+
--| Sets the data transfer object's drop effect.
92+
setDropEffect :: forall eff. DropEffect -> DataTransfer -> Eff (dom :: DOM | eff) Unit
93+
setDropEffect de = setDropEffectImpl case de of
94+
Copy -> "copy"
95+
Link -> "link"
96+
Move -> "move"
97+
None -> "none"

0 commit comments

Comments
 (0)