Skip to content

Commit 661e7fe

Browse files
committed
Add DataTransferItem and related API
1 parent 9e0e3fd commit 661e7fe

File tree

4 files changed

+63
-0
lines changed

4 files changed

+63
-0
lines changed

src/Web/HTML/Event/DataTransfer.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ exports._files = function (dataTransfer) {
44
return dataTransfer.files;
55
};
66

7+
exports.items = function (dataTransfer) {
8+
return dataTransfer.items;
9+
};
10+
711
exports.types = function (dataTransfer) {
812
return dataTransfer.types;
913
};

src/Web/HTML/Event/DataTransfer.purs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import Data.MediaType (MediaType(..))
1616
import Data.Nullable (Nullable, toMaybe)
1717
import Effect (Effect)
1818
import Web.File.FileList (FileList)
19+
import Web.HTML.Event.DataTransfer.DataTransferItem (DataTransferItemList)
1920

2021
foreign import data DataTransfer :: Type
2122

@@ -29,6 +30,10 @@ files = toMaybe <$> _files
2930

3031
foreign import _files :: DataTransfer -> Nullable FileList
3132

33+
-- | Returns a `DataTransferItemList` object which is a list of all of the drag
34+
-- | data.
35+
foreign import items :: DataTransfer -> DataTransferItemList
36+
3237
-- | Returns an array of data formats used in the drag operation.
3338
-- | If the drag operation included no data, then the array is empty.
3439
foreign import types :: DataTransfer -> Array String
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
3+
exports.kind = function (dataTransferItem) {
4+
return dataTransferItem.kind;
5+
};
6+
7+
exports.type_ = function (dataTransferItem) {
8+
return dataTransferItem.type;
9+
};
10+
11+
exports._dataTransferItem = function (index) {
12+
return function (dataTransferItemList) {
13+
return dataTransferItemList[index];
14+
};
15+
};
16+
17+
exports._length = function (dataTransferItemList) {
18+
return dataTransferItemList.length;
19+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module Web.HTML.Event.DataTransfer.DataTransferItem
2+
( DataTransferItem
3+
, DataTransferItemList
4+
) where
5+
6+
import Prelude
7+
import Data.Maybe (Maybe)
8+
import Data.Nullable (Nullable)
9+
import Data.Nullable as Nullable
10+
11+
-- | Returns the drag data item kind, which is either "string" or "file".
12+
foreign import kind :: DataTransferItem -> String
13+
14+
-- | A Unicode string giving the type or format of the data, generally given by
15+
-- | a MIME type. Some values that are not MIME types are special-cased for
16+
-- | legacy reasons. The API does not enforce the use of MIME types; other
17+
-- | values can be used as well. In all cases, however, the values are all
18+
-- | converted to ASCII lowercase by the API.
19+
-- | There is a limit of one text item per item type string.
20+
foreign import type_ :: DataTransferItem -> String
21+
22+
-- | Access an item in the `DataTransferItemList` by index.
23+
dataTransferItem :: Int -> DataTransferItemList -> Maybe DataTransferItem
24+
dataTransferItem = map Nullable.toMaybe <$> _dataTransferItem
25+
26+
foreign import _dataTransferItem :: Int -> DataTransferItemList -> Nullable DataTransferItem
27+
28+
length :: DataTransferItemList -> Int
29+
length = _length
30+
31+
foreign import _length :: DataTransferItemList -> Int
32+
33+
foreign import data DataTransferItem :: Type
34+
35+
foreign import data DataTransferItemList :: Type

0 commit comments

Comments
 (0)