From 8194cd6514151c051b3d4b37f5fe99b3d47448b1 Mon Sep 17 00:00:00 2001 From: Stefan Fehrenbach Date: Mon, 25 Dec 2017 17:46:55 +0000 Subject: [PATCH 1/2] Add dropEffect getter and setter on DataTransfer --- src/DOM/HTML/Event/DataTransfer.js | 14 ++++++++++++++ src/DOM/HTML/Event/DataTransfer.purs | 29 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/DOM/HTML/Event/DataTransfer.js b/src/DOM/HTML/Event/DataTransfer.js index fb55de5..691edf4 100644 --- a/src/DOM/HTML/Event/DataTransfer.js +++ b/src/DOM/HTML/Event/DataTransfer.js @@ -25,3 +25,17 @@ exports.setDataImpl = function (format) { }; }; }; + +exports.dropEffectImpl = function (dataTransfer) { + return function () { + return dataTransfer.dropEffect; + }; +}; + +exports.setDropEffectImpl = function (e) { + return function (dataTransfer) { + return function () { + dataTransfer.dropEffect = e; + }; + }; +}; diff --git a/src/DOM/HTML/Event/DataTransfer.purs b/src/DOM/HTML/Event/DataTransfer.purs index b695a68..5f6ab4b 100644 --- a/src/DOM/HTML/Event/DataTransfer.purs +++ b/src/DOM/HTML/Event/DataTransfer.purs @@ -4,15 +4,20 @@ module DOM.HTML.Event.DataTransfer , types , getData , setData + , DropEffect(..) + , dropEffect + , setDropEffect ) where import Prelude + import Control.Monad.Eff (Eff) import DOM (DOM) import DOM.File.Types (FileList) import Data.Maybe (Maybe) import Data.MediaType (MediaType(..)) import Data.Nullable (Nullable, toMaybe) +import Partial.Unsafe (unsafePartialBecause) foreign import data DataTransfer :: Type @@ -61,3 +66,27 @@ setData -> DataTransfer -> Eff (dom :: DOM | eff) Unit setData (MediaType format) dat dt = setDataImpl format dat dt + +foreign import dropEffectImpl :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) String + +data DropEffect = None | Copy | Move | Link + +--| Gets the data transfer object's drop effect. +dropEffect :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) DropEffect +dropEffect dt = do + de <- dropEffectImpl dt + pure $ unsafePartialBecause "No other values are possible https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/dropEffect" case de of + "copy" -> Copy + "move" -> Move + "link" -> Link + "none" -> None + +foreign import setDropEffectImpl :: forall eff. String -> DataTransfer -> Eff (dom :: DOM | eff) Unit + +--| Sets the data transfer object's drop effect. +setDropEffect :: forall eff. DropEffect -> DataTransfer -> Eff (dom :: DOM | eff) Unit +setDropEffect de = setDropEffectImpl case de of + Copy -> "copy" + None -> "none" + Move -> "move" + Link -> "link" From 9251a2b57f79d92ce0202e0b016bde0aea94c074 Mon Sep 17 00:00:00 2001 From: Stefan Fehrenbach Date: Sat, 20 Jan 2018 18:28:00 +0000 Subject: [PATCH 2/2] Derive Eq, Ord and avoid unsafePartialBecause --- src/DOM/HTML/Event/DataTransfer.purs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/DOM/HTML/Event/DataTransfer.purs b/src/DOM/HTML/Event/DataTransfer.purs index 5f6ab4b..b64233f 100644 --- a/src/DOM/HTML/Event/DataTransfer.purs +++ b/src/DOM/HTML/Event/DataTransfer.purs @@ -17,7 +17,8 @@ import DOM.File.Types (FileList) import Data.Maybe (Maybe) import Data.MediaType (MediaType(..)) import Data.Nullable (Nullable, toMaybe) -import Partial.Unsafe (unsafePartialBecause) +import Partial (crashWith) +import Partial.Unsafe (unsafePartial) foreign import data DataTransfer :: Type @@ -69,17 +70,21 @@ setData (MediaType format) dat dt = setDataImpl format dat dt foreign import dropEffectImpl :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) String -data DropEffect = None | Copy | Move | Link +data DropEffect = Copy | Link | Move | None + +derive instance eqDropEffect :: Eq DropEffect +derive instance ordDropEffect :: Ord DropEffect --| Gets the data transfer object's drop effect. dropEffect :: forall eff. DataTransfer -> Eff (dom :: DOM | eff) DropEffect dropEffect dt = do de <- dropEffectImpl dt - pure $ unsafePartialBecause "No other values are possible https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/dropEffect" case de of + pure $ unsafePartial $ case de of "copy" -> Copy - "move" -> Move "link" -> Link + "move" -> Move "none" -> None + _ -> crashWith "Impossible according to https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/dropEffect" foreign import setDropEffectImpl :: forall eff. String -> DataTransfer -> Eff (dom :: DOM | eff) Unit @@ -87,6 +92,6 @@ foreign import setDropEffectImpl :: forall eff. String -> DataTransfer -> Eff (d setDropEffect :: forall eff. DropEffect -> DataTransfer -> Eff (dom :: DOM | eff) Unit setDropEffect de = setDropEffectImpl case de of Copy -> "copy" - None -> "none" - Move -> "move" Link -> "link" + Move -> "move" + None -> "none"