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: 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..fe66863 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,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 _dropEffect :: DataTransfer -> Effect String data DropEffect = Copy | Link | Move | None