dnd 0.1.0+1 dnd: ^0.1.0+1 copied to clipboard
Drag and Drop for Dart web apps with mouse and touch support.
Dart Drag and Drop #
Drag and Drop for Dart web apps with mouse and touch support.
Demos #
See Dart Drag and Drop Examples.
Features #
- Use any HTML Element as
Draggable
orDropzone
. - Mouse and Touch dragging.
- Draggable events:
dragStart
,drag
, anddragEnd
- Dropzone events:
dragEnter
,dragOver
,dragLeave
, anddrop
- Drag avatars as visual indication of a drag operation:
- Original element as drag avatar.
- Clone as drag avatar.
- Custom drag avatar.
- Much more... see examples.
Usage #
Note: You can always take a look at the examples and their source code.
Basic Set Up #
Create a Draggable
and give it some HTML elements; this will make them
draggable. You can either pass a single Element
to the constructor or an
ElementList
that is returned by querySelectorAll
.
If you also want to drop somewhere, you'll need a Dropzone
.
// Install draggable (no avatar).
Draggable draggable = new Draggable(querySelectorAll('.draggable'));
// Install dropzone.
Dropzone dropzone = new Dropzone(querySelector('.dropzone'));
You'll most likely want some drag avatar to show the user that a drag is
going on. There are two predefined AvatarHandler
s that you can use as follows.
But you could also provide your own implementation of AvatarHandler
.
// Draggable with clone as avatar.
Draggable draggable = new Draggable(querySelectorAll('.draggable'),
avatarHandler: new AvatarHandler.clone());
// Draggable with original element as avatar.
Draggable draggable = new Draggable(querySelectorAll('.draggable'),
avatarHandler: new AvatarHandler.original());
Draggable Options #
The following options can be passed as named parameters to the constructor of
Draggable
:
-
avatarHandler
: Is responsible for creating, position, and removing a drag avatar. A drag avatar provides visual feedback during a drag operation. Here are possible options (see above for an example):null
(the default) - will not create a drag avatarnew AvatarHandler.original()
- handler that uses the original draggable as avatar. SeeOriginalAvatarHandler
.new AvatarHandler.clone()
- handler that uses a clone of the draggable element as avatar. SeeCloneAvatarHandler
.- A custom
AvatarHandler
- you can provide your own implementation ofAvatarHandler
.
-
horizontalOnly
: If set to true, only horizontal dragging is tracked. This enables vertical touch dragging to be used for scrolling. -
verticalOnly
: If set to true, only vertical dragging is tracked. This enables horizontal touch dragging to be used for scrolling. -
disableTouch
: If set to true, touch events will be ignored. -
disableMouse
: If set to true, mouse events will be ignored. -
handle
: If handle query String is specified, it restricts the dragging from starting unless it occurs on the specified element(s). Only elements that descend from the draggables elements are permitted. -
cancel
: If cancel query String is specified, drag starting is prevented on specified elements. -
draggingClass
: Is the css class set to the dragged element during a drag. If set to null, no such css class is added. -
draggingClassBody
: Is the css class set to the html body tag during a drag. If set to null, no such css class is added.
Draggable Events #
Available event Stream
s on Draggable
:
-
onDragStart
: Fired when the user starts dragging.
Note:onDragStart
is fired not on touchStart or mouseDown but as soon as there is a drag movement. When a drag is started anonDrag
event will also be fired. -
onDrag
: Fired periodically throughout the drag operation. -
onDragEnd
: Fired when the user ends the dragging.
Note: Is also fired when the user clicks the 'esc'-key or the window loses focus.
Dropzone Options #
The following options can be passed as named parameters to the constructor of
Dropzone
:
-
acceptor
: Is used to determine whichDraggable
s will be accepted by thisDropzone
. If none is specified, allDraggable
s will be accepted. -
overClass
: Is the css class set to the dragged element during a drag. If set to null, no such css class is added.
Dropzone Events #
Available event Stream
s on Dropzone
:
-
onDragEnter
: Fired when aDraggable
enters thisDropzone
. -
onDragOver
: Fired periodically while aDraggable
is moved over aDropzone
. -
onDragLeave
: Fired when aDraggable
leaves thisDropzone
. -
onDrop
: Fired when aDraggable
is dropped inside thisDropzone
.
Note: Dropzone
events are only fired when the Draggable
is accepted by
the Acceptor
.
License #
The MIT License (MIT)