From 75a00ff5284bc5486a5329901d74bcbc43fe5f93 Mon Sep 17 00:00:00 2001 From: Anupam Jain Date: Wed, 6 Oct 2021 16:58:42 +0530 Subject: [PATCH 1/3] Add DataTransfer.setDragImage --- src/Web/HTML/Event/DataTransfer.js | 12 ++++++++++++ src/Web/HTML/Event/DataTransfer.purs | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Web/HTML/Event/DataTransfer.js b/src/Web/HTML/Event/DataTransfer.js index 8cec0ca..fce2d7c 100644 --- a/src/Web/HTML/Event/DataTransfer.js +++ b/src/Web/HTML/Event/DataTransfer.js @@ -26,6 +26,18 @@ exports._setData = function (format) { }; }; +exports._setDragImage = function (dataTransfer) { + return function (image) { + return function (x) { + return function (y) { + return function () { + return dataTransfer.setDragImage(image, x, y); + }; + }; + }; + }; +}; + exports._dropEffect = function (dataTransfer) { return function () { return dataTransfer.dropEffect; diff --git a/src/Web/HTML/Event/DataTransfer.purs b/src/Web/HTML/Event/DataTransfer.purs index b63d127..4ea86ab 100644 --- a/src/Web/HTML/Event/DataTransfer.purs +++ b/src/Web/HTML/Event/DataTransfer.purs @@ -4,6 +4,7 @@ module Web.HTML.Event.DataTransfer , types , getData , setData + , setDragImage , DropEffect(..) , dropEffect , setDropEffect @@ -15,6 +16,7 @@ import Data.Maybe (Maybe) import Data.MediaType (MediaType(..)) import Data.Nullable (Nullable, toMaybe) import Effect (Effect) +import Web.DOM.Element (Element) import Web.File.FileList (FileList) foreign import data DataTransfer :: Type @@ -57,6 +59,14 @@ setData -> Effect Unit setData (MediaType format) dat dt = _setData format dat dt +-- | Sets the image to be used for dragging if a custom one is desired. +-- | The image will typically be an but could be any other *visible* element. +-- | The x and y coordinates define where the image appears relative to the mouse. +setDragImage :: DataTransfer -> Element -> Int -> Int -> Effect Unit +setDragImage = _setDragImage + +foreign import _setDragImage :: DataTransfer -> Element -> Int -> Int -> Effect Unit + foreign import _dropEffect :: DataTransfer -> Effect String data DropEffect = Copy | Link | Move | None From 362c4c8061438ca164991fc2a5486be81561f96b Mon Sep 17 00:00:00 2001 From: Anupam Jain Date: Wed, 6 Oct 2021 17:13:00 +0530 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79b9224..a4736a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ New features: - Added `languages` value for `Navigator` (#59 by @toastal) - Added `HTMLHtmlElement` module and `documentElement` function `HTMLDocument` (#60 by @toastal) - Added `onLine` value for `Navigator` (#61 by @toastal) +- Added `setDragImage` function for `DataTransfer` (#65 by @ajarista) Bugfixes: From d677ca49be39c58305fa2ccee1648f953107beed Mon Sep 17 00:00:00 2001 From: ajarista <83229478+ajarista@users.noreply.github.com> Date: Wed, 6 Oct 2021 23:53:59 +0530 Subject: [PATCH 3/3] Put the foreign import first Co-authored-by: Thomas Honeyman --- src/Web/HTML/Event/DataTransfer.purs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Web/HTML/Event/DataTransfer.purs b/src/Web/HTML/Event/DataTransfer.purs index 4ea86ab..fe66863 100644 --- a/src/Web/HTML/Event/DataTransfer.purs +++ b/src/Web/HTML/Event/DataTransfer.purs @@ -59,14 +59,13 @@ setData -> Effect Unit setData (MediaType format) dat dt = _setData format dat dt +foreign import _setDragImage :: DataTransfer -> Element -> Int -> Int -> Effect Unit + -- | Sets the image to be used for dragging if a custom one is desired. -- | The image will typically be an but could be any other *visible* element. -- | The x and y coordinates define where the image appears relative to the mouse. setDragImage :: DataTransfer -> Element -> Int -> Int -> Effect Unit setDragImage = _setDragImage - -foreign import _setDragImage :: DataTransfer -> Element -> Int -> Int -> Effect Unit - foreign import _dropEffect :: DataTransfer -> Effect String data DropEffect = Copy | Link | Move | None