devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
174 lines (156 loc) • 6.14 kB
TypeScript
/**
* DevExtreme (ui/draggable.d.ts)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import DOMComponent, {
DOMComponentOptions
} from '../core/dom_component';
import {
UserDefinedElement,
DxElement
} from '../core/element';
import {
template
} from '../core/templates/template';
import {
Cancelable,
EventInfo,
NativeEventInfo,
InitializedEventInfo,
ChangedOptionInfo
} from '../events/index';
import dxSortable from './sortable';
/**
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please describe your scenario in the following GitHub Issue, and we will suggest a public alternative: {@link https://github.com/DevExpress/DevExtreme/issues/17885|Internal Types}.
*/
export interface DraggableBaseOptions<T = DraggableBase & DOMComponent> extends DOMComponentOptions<T> {
/**
* Enables automatic scrolling while dragging an item beyond the viewport.
*/
autoScroll?: boolean;
/**
* Specifies a DOM element that limits the dragging area.
*/
boundary?: string | UserDefinedElement;
/**
* Specifies a custom container in which the draggable item should be rendered.
*/
container?: string | UserDefinedElement;
/**
* Specifies the cursor offset from the dragged item.
*/
cursorOffset?: string | {
/**
* Specifies the horizontal cursor offset from the dragged item in pixels.
*/
x?: number,
/**
* Specifies the vertical cursor offset from the dragged item in pixels.
*/
y?: number
};
/**
* A container for custom data.
*/
data?: any;
/**
* Specifies the directions in which an item can be dragged.
*/
dragDirection?: 'both' | 'horizontal' | 'vertical';
/**
* Allows you to group several UI components, so that users can drag and drop items between them.
*/
group?: string;
/**
* Specifies a CSS selector (ID or class) that should act as the drag handle(s) for the item(s).
*/
handle?: string;
/**
* Specifies the distance in pixels from the edge of viewport at which scrolling should start. Applies only if autoScroll is true.
*/
scrollSensitivity?: number;
/**
* Specifies the scrolling speed when dragging an item beyond the viewport. Applies only if autoScroll is true.
*/
scrollSpeed?: number;
}
/**
*
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please describe your scenario in the following GitHub Issue, and we will suggest a public alternative: {@link https://github.com/DevExpress/DevExtreme/issues/17885|Internal Types}.
*/
export interface DraggableBase { }
export type DisposingEvent = EventInfo<dxDraggable>;
export type DragEndEvent = Cancelable & NativeEventInfo<dxDraggable> & {
readonly itemData?: any;
readonly itemElement?: DxElement;
readonly fromComponent: dxSortable | dxDraggable;
readonly toComponent: dxSortable | dxDraggable;
readonly fromData?: any;
readonly toData?: any;
}
export type DragMoveEvent = Cancelable & NativeEventInfo<dxDraggable> & {
readonly itemData?: any;
readonly itemElement?: DxElement;
readonly fromComponent: dxSortable | dxDraggable;
readonly toComponent: dxSortable | dxDraggable;
readonly fromData?: any;
readonly toData?: any;
}
export type DragStartEvent = Cancelable & NativeEventInfo<dxDraggable> & {
itemData?: any;
readonly itemElement?: DxElement;
readonly fromData?: any;
}
export type InitializedEvent = InitializedEventInfo<dxDraggable>;
export type OptionChangedEvent = EventInfo<dxDraggable> & ChangedOptionInfo;
export type DragTemplateData = {
readonly itemData?: any;
readonly itemElement: DxElement;
}
/**
* @deprecated use Properties instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please describe your scenario in the following GitHub Issue, and we will suggest a public alternative: {@link https://github.com/DevExpress/DevExtreme/issues/17885|Internal Types}.
*/
export interface dxDraggableOptions extends DraggableBaseOptions<dxDraggable> {
/**
* Allows a user to drag clones of items instead of actual items.
*/
clone?: boolean;
/**
* Specifies custom markup to be shown instead of the item being dragged.
*/
dragTemplate?: template | ((dragInfo: DragTemplateData, containerElement: DxElement) => string | UserDefinedElement);
/**
* A function that is called when drag gesture is finished.
*/
onDragEnd?: ((e: DragEndEvent) => void);
/**
* A function that is called every time a draggable item is moved.
*/
onDragMove?: ((e: DragMoveEvent) => void);
/**
* A function that is called when the drag gesture is initialized.
*/
onDragStart?: ((e: DragStartEvent) => void);
}
/**
* Draggable is a user interface utility that allows UI component elements to be dragged and dropped.
*/
export default class dxDraggable extends DOMComponent implements DraggableBase {
constructor(element: UserDefinedElement, options?: dxDraggableOptions)
}
export type Properties = dxDraggableOptions;
/**
* @deprecated use Properties instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please describe your scenario in the following GitHub Issue, and we will suggest a public alternative: {@link https://github.com/DevExpress/DevExtreme/issues/17885|Internal Types}.
*/
export type Options = dxDraggableOptions;
/**
* @deprecated use Properties instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please describe your scenario in the following GitHub Issue, and we will suggest a public alternative: {@link https://github.com/DevExpress/DevExtreme/issues/17885|Internal Types}.
*/
export type IOptions = dxDraggableOptions;