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

Commit 8194cd6

Browse files
committed
Add dropEffect getter and setter on DataTransfer
1 parent 57f70b3 commit 8194cd6

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

src/DOM/HTML/Event/DataTransfer.js

Lines changed: 14 additions & 0 deletions
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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,20 @@ 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.Unsafe (unsafePartialBecause)
1621

1722
foreign import data DataTransfer :: Type
1823

@@ -61,3 +66,27 @@ setData
6166
-> DataTransfer
6267
-> Eff (dom :: DOM | eff) Unit
6368
setData (MediaType format) dat dt = setDataImpl format dat dt
69+
70+
foreign import dropEffectImpl :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) String
71+
72+
data DropEffect = None | Copy | Move | Link
73+
74+
--| Gets the data transfer object's drop effect.
75+
dropEffect :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) DropEffect
76+
dropEffect dt = do
77+
de <- dropEffectImpl dt
78+
pure $ unsafePartialBecause "No other values are possible https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/dropEffect" case de of
79+
"copy" -> Copy
80+
"move" -> Move
81+
"link" -> Link
82+
"none" -> None
83+
84+
foreign import setDropEffectImpl :: forall eff. String -> DataTransfer -> Eff (dom :: DOM | eff) Unit
85+
86+
--| Sets the data transfer object's drop effect.
87+
setDropEffect :: forall eff. DropEffect -> DataTransfer -> Eff (dom :: DOM | eff) Unit
88+
setDropEffect de = setDropEffectImpl case de of
89+
Copy -> "copy"
90+
None -> "none"
91+
Move -> "move"
92+
Link -> "link"

0 commit comments

Comments
 (0)