slickgrid
Version:
A lightning fast JavaScript grid/spreadsheet
58 lines (42 loc) • 2.27 kB
text/typescript
// --
// slick.interactions.ts
import type { DragPosition } from './drag.interface.js';
export interface InteractionBase {
destroy: () => void;
}
export interface DraggableOption {
/** container DOM element, defaults to "document" */
containerElement?: HTMLElement | Document;
/** when defined, will allow dragging from a specific element by using the .matches() query selector. */
allowDragFrom?: string;
/** when defined, will allow dragging from a specific element or its closest parent by using the .closest() query selector. */
allowDragFromClosest?: string;
/** Defaults to `['ctrlKey', 'metaKey']`, list of keys that when pressed will prevent Draggable events from triggering (e.g. prevent onDrag when Ctrl key is pressed while dragging) */
preventDragFromKeys?: Array<'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'>;
/** drag initialized callback */
onDragInit?: (e: DragEvent, dd: DragPosition) => boolean | void;
/** drag started callback */
onDragStart?: (e: DragEvent, dd: DragPosition) => boolean | void;
/** drag callback */
onDrag?: (e: DragEvent, dd: DragPosition) => boolean | void;
/** drag ended callback */
onDragEnd?: (e: DragEvent, dd: DragPosition) => boolean | void;
}
export interface MouseWheelOption {
/** optional DOM element to attach mousewheel values, if undefined we'll attach it to the "window" object */
element: HTMLElement | Document;
/** mousewheel callback */
onMouseWheel?: (e: MouseEvent, delta: number, deltaX: number, deltaY: number) => boolean | void;
}
export interface ResizableOption {
/** resizable DOM element */
resizeableElement: HTMLElement;
/** resizable DOM element */
resizeableHandleElement: HTMLElement;
/** resize start callback */
onResizeStart?: (e: MouseEvent | Touch | TouchEvent, resizeElms: { resizeableElement: HTMLElement; }) => boolean | void;
/** resizing callback */
onResize?: (e: MouseEvent | Touch | TouchEvent, resizeElms: { resizeableElement: HTMLElement; resizeableHandleElement: HTMLElement; }) => boolean | void;
/** resize ended callback */
onResizeEnd?: (e: MouseEvent | Touch | TouchEvent, resizeElms: { resizeableElement: HTMLElement; }) => boolean | void;
}