@phosphor/dragdrop
- Version 1.4.1
- Published
- 48.2 kB
- 2 dependencies
- BSD-3-Clause license
Install
npm i @phosphor/dragdrop
yarn add @phosphor/dragdrop
pnpm add @phosphor/dragdrop
Overview
PhosphorJS - Drag and Drop
Index
Classes
class Drag
class Drag implements IDisposable {}
An object which manages a drag-drop operation.
A drag object dispatches four different events to drop targets:
-
'p-dragenter'
- Dispatched when the mouse enters the target element. This event must be canceled in order to receive any of the other events.-
'p-dragover'
- Dispatched when the mouse moves over the drop target. It must cancel the event and set thedropAction
to one of the supported actions in order to receive drop events.-
'p-dragleave'
- Dispatched when the mouse leaves the target element. This includes moving the mouse into child elements.-
'p-drop'
- Dispatched when the mouse is released over the target element when the target indicates an appropriate drop action. If the event is canceled, the indicated drop action is returned to the initiator through the resolved promise.A drag operation can be terminated at any time by pressing
Escape
or by disposing the drag object.A drag object has the ability to automatically scroll a scrollable element when the mouse is hovered near one of its edges. To enable this, add the
data-p-dragscroll
attribute to any element which the drag object should consider for scrolling.#### Notes This class is designed to be used when dragging and dropping custom data *within* a single application. It is *not* a replacement for the native drag-drop API. Instead, it provides an API which allows drag operations to be initiated programmatically and enables the transfer of arbitrary non-string objects; features which are not possible with the native drag-drop API.
constructor
constructor(options: Drag.IOptions);
Construct a new drag object.
Parameter options
The options for initializing the drag.
property dragImage
readonly dragImage: HTMLElement;
The drag image element for the drag object.
property isDisposed
readonly isDisposed: boolean;
Test whether the drag object is disposed.
property mimeData
readonly mimeData: MimeData;
The mime data for the drag object.
property proposedAction
readonly proposedAction: DropAction;
The proposed drop action for the drag object.
property source
readonly source: any;
Get the drag source for the drag object.
property supportedActions
readonly supportedActions: SupportedActions;
The supported drop actions for the drag object.
method dispose
dispose: () => void;
Dispose of the resources held by the drag object.
#### Notes This will cancel the drag operation if it is active.
method handleEvent
handleEvent: (event: Event) => void;
Handle the DOM events for the drag operation.
Parameter event
The DOM event sent to the drag object.
#### Notes This method implements the DOM
EventListener
interface and is called in response to events on the document. It should not be called directly by user code.
method start
start: (clientX: number, clientY: number) => Promise<DropAction>;
Start the drag operation at the specified client position.
Parameter clientX
The client X position for the drag start.
Parameter clientY
The client Y position for the drag start.
Returns
A promise which resolves to the result of the drag.
#### Notes If the drag has already been started, the promise created by the first call to
start
is returned.If the drag operation has ended, or if the drag object has been disposed, the returned promise will resolve to
'none'
.The drag object will be automatically disposed when drag operation completes. This means
Drag
objects are for single-use only.This method assumes the left mouse button is already held down.
Interfaces
interface IDragEvent
interface IDragEvent extends MouseEvent {}
A custom event type used for drag-drop operations.
#### Notes In order to receive
'p-dragover'
,'p-dragleave'
, or'p-drop'
events, a drop target must cancel the'p-dragenter'
event by calling the event'spreventDefault()
method.
property dropAction
dropAction: DropAction;
The drop action supported or taken by the drop target.
#### Notes At the start of each event, this value will be
'none'
. During a'p-dragover'
event, the drop target must set this value to one of the supported actions, or the drop event will not occur.When handling the drop event, the drop target should set this to the action which was *actually* taken. This value will be reported back to the drag initiator.
property mimeData
readonly mimeData: MimeData;
The mime data associated with the event.
#### Notes This is mime data provided by the drag initiator. Drop targets should use this data to determine if they can handle the drop.
property proposedAction
readonly proposedAction: DropAction;
The drop action proposed by the drag initiator.
#### Notes This is the action which is *preferred* by the drag initiator. The drop target is not required to perform this action, but should if it all possible.
property source
readonly source: any;
The source object of the drag, as provided by the drag initiator.
#### Notes For advanced applications, the drag initiator may wish to expose a source object to the drop targets. That will be provided here if given by the drag initiator, otherwise it will be
null
.
property supportedActions
readonly supportedActions: SupportedActions;
The drop actions supported by the drag initiator.
#### Notes If the
dropAction
is not set to one of the supported actions during the'p-dragover'
event, the drop event will not occur.
Type Aliases
type DropAction
type DropAction = 'none' | 'copy' | 'link' | 'move';
A type alias which defines the possible independent drop actions.
type SupportedActions
type SupportedActions = DropAction | 'copy-link' | 'copy-move' | 'link-move' | 'all';
A type alias which defines the possible supported drop actions.
Namespaces
namespace Drag
namespace Drag {}
The namespace for the
Drag
class statics.
function overrideCursor
overrideCursor: (cursor: string) => IDisposable;
Override the cursor icon for the entire document.
Parameter cursor
The string representing the cursor style.
Returns
A disposable which will clear the override when disposed.
#### Notes The most recent call to
overrideCursor
takes precedence. Disposing an old override has no effect on the current override.This utility function is used by the
Drag
class to override the mouse cursor during a drag-drop operation, but it can also be used by other classes to fix the cursor icon during normal mouse drags.#### Example
import { Drag } from '@phosphor/dragdrop';// Force the cursor to be 'wait' for the entire document.let override = Drag.overrideCursor('wait');// Clear the override by disposing the return value.override.dispose();
interface IOptions
interface IOptions {}
An options object for initializing a
Drag
object.
property dragImage
dragImage?: HTMLElement;
An optional drag image which follows the mouse cursor.
#### Notes The drag image can be any DOM element. It is not limited to image or canvas elements as with the native drag-drop APIs.
If provided, this will be positioned at the mouse cursor on each mouse move event. A CSS transform can be used to offset the node from its specified position.
The drag image will automatically have the
p-mod-drag-image
class name added.The default value is
null
.
property mimeData
mimeData: MimeData;
The populated mime data for the drag operation.
property proposedAction
proposedAction?: DropAction;
The optional proposed drop action for the drag operation.
#### Notes This can be provided as a hint to the drop targets as to which drop action is preferred.
The default value is
'copy'
.
property source
source?: any;
An optional object which indicates the source of the drag.
#### Notes For advanced applications, the drag initiator may wish to expose a source object to the drop targets. That object can be specified here and will be carried along with the drag events.
The default value is
null
.
property supportedActions
supportedActions?: SupportedActions;
The drop actions supported by the drag initiator.
#### Notes A drop target must indicate that it intends to perform one of the supported actions in order to receive a drop event. However, it is not required to *actually* perform that action when handling the drop event. Therefore, the initiator must be prepared to handle any drop action performed by a drop target.
The default value is
'all'
.
Package Files (1)
Dependencies (2)
Dev Dependencies (18)
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/@phosphor/dragdrop
.
- Markdown[](https://www.jsdocs.io/package/@phosphor/dragdrop)
- HTML<a href="https://www.jsdocs.io/package/@phosphor/dragdrop"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 4289 ms. - Missing or incorrect documentation? Open an issue for this package.