Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

draggable-helper

Package Overview
Dependencies
Maintainers
1
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

draggable-helper - npm Package Compare versions

Comparing version 6.0.1 to 6.0.2

dist/draggable-helper.cjs.js

15

package.json
{
"name": "draggable-helper",
"version": "6.0.1",
"version": "6.0.2",
"description": "To simplify drag and drop.",
"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
"main": "dist/draggable-helper.cjs.js",
"module": "dist/draggable-helper.esm.js",
"types": "types/index.d.ts",
"files": [
"dist"
"dist",
"types"
],

@@ -25,5 +27,4 @@ "scripts": {

"devDependencies": {
"@babel/preset-typescript": "^7.10.1",
"rogo": "^2.0.2",
"rollup-plugin-typescript2": "^0.27.1",
"@rollup-use/core": "^0",
"@rollup-use/ts": "^0",
"typescript": "^3.9.5"

@@ -30,0 +31,0 @@ },

@@ -1,23 +0,28 @@

# Version 5 is written with Typescript, so you can try read code directly. Follow documentation is for version 4. The documentation for newest version 5 is being written...
# draggable-helper
# draggable-helper
A js library to simplify your drag and drop functions. Start with a element, it will expose hooks(drag, moving, drop). You can stop drag, moving and drop by conditions. You can set minTranslate. Its code is easy, you can check source code.
A js library to simplify your drag and drop functions. Start with a element, it will expose hooks(drag, moving, drop). You can stop drag, moving and drop by conditions. You can set minTranslate. It uses Typescript.
## features
* support touch simplify(single touch)
* to prevent page scrolling when touch
* expose hooks(drag, moving, drop)
* prevent drag and moving by return false in hook
* set min translate to trigger drag
* set the style of dragging element
* set the class of dragging element
* move the element or move a cloned one
* check if event is triggered by mouse left button
* to prevent text be selected when dragging
* Advance usage: bind to parent element, make children element as trigger element or moved element. Check example.
- support touch simplify(single touch)
- to prevent page scrolling when touch
- expose hooks(drag, moving, drop)
- prevent drag and moving by return false in hook
- set min translate to trigger drag
- set the style of dragging element
- set the class of dragging element
- move the element or move a cloned one
- check if event is triggered by mouse left button
- to prevent text be selected when dragging
- Advance usage: bind to parent element, make children element as trigger element or moved element. Check example.
- Edge scroll. Auto scroll when drag to edge of another scrollable element.
## install
```sh
npm install draggable-helper
```
## usage & api
```js

@@ -27,51 +32,99 @@ import draggableHelper from 'draggable-helper'

const {destroy, options} = draggableHelper(HTMLElement dragHandlerEl, Object opt = {})
// opt
// opt will pass to hook, so you can attach custom data into opt, such the data of the element
// startEvent is mousedown or touchstart
opt = {
// [Object] style, set the style of dragging element
// getStyle(store, opt), set the style of dragging element
// [String] draggingClass, default dragging, set the class of dragging element
// [Boolean] clone, move the element or move a cloned one
// minTranslate default 10, unit px
// getEl(dragHandlerEl, store, opt), optional, get the el that will be moved. default is dragHandlerEl
// afterGetEl(store, opt)
// [Boolean] triggerBySelf if trigger only by dragHandlerEl self, can not be triggered by children
// hook, before drag start
// [Boolean] opt.restoreDOMManuallyOndrop the changed DOM will be restored automatically on drop. This disable it and pass restoreDOM function into store.
beforeDrag(startEvent, moveEvent, store, opt){
// when trigger drag, the position must be moved, so there are two event. startEvent also can be accessed by store.startEvent
// The dragged element at this time has not yet been obtained, store.el is null. 此时要移动的元素还没有获得到, 即store.el是空.
// return false to prevent drag
},
// hook, when drag start
drag(startEvent, moveEvent, store, opt){
// when trigger drag, the position must be moved, so there are two event. startEvent also can be accessed by store.startEvent
// return false to prevent drag
},
// hook, when mouse moving
moving: (moveEvent, store, opt) => {
// return false to prevent moving
},
// hook, when drop
drop: (endEvent, store, opt) => {
},
```
## types
```ts
import { EventPosition, MouseOrTouchEvent } from "drag-event-service";
export default function (
listenerElement: HTMLElement,
opt?: Options
): {
destroy: () => void;
options: Options;
};
export declare const defaultOptions: {
ingoreTags: string[];
undraggableClassName: string;
minDisplacement: number;
draggingClassName: string;
clone: boolean;
updateMovedElementStyleManually: boolean;
preventTextSelection: boolean;
edgeScrollTriggerMargin: number;
edgeScrollSpeed: number;
edgeScrollTriggerMode: string;
};
export interface Options extends Partial<typeof defaultOptions> {
triggerClassName?: string | string[];
triggerBySelf?: boolean;
getTriggerElement?: (
directTriggerElement: HTMLElement,
store: Store
) => HTMLElement | undefined;
getMovedOrClonedElement?: (
directTriggerElement: HTMLElement,
store: Store,
opt: Options
) => HTMLElement;
beforeFirstMove?: (store: Store, opt: Options) => boolean | undefined;
afterFirstMove?: (store: Store, opt: Options) => void;
beforeMove?: (store: Store, opt: Options) => boolean | undefined;
afterMove?: (store: Store, opt: Options) => void;
beforeDrop?: (store: Store, opt: Options) => boolean | undefined;
afterDrop?: (store: Store, opt: Options) => void;
preventTextSelection?: boolean;
edgeScroll?: boolean;
edgeScrollTriggerMargin?: number;
edgeScrollSpeed?: number;
edgeScrollTriggerMode?: "top_left_corner" | "mouse";
edgeScrollSpecifiedContainerX?:
| HTMLElement
| ((store: Store, opt: Options) => HTMLElement);
edgeScrollSpecifiedContainerY?:
| HTMLElement
| ((store: Store, opt: Options) => HTMLElement);
onmousedown?: (e: MouseEvent) => void;
onmousemove?: (e: MouseEvent) => void;
onmouseup?: (e: MouseEvent) => void;
ontouchstart?: (e: TouchEvent) => void;
ontouchmove?: (e: TouchEvent) => void;
ontouchend?: (e: TouchEvent) => void;
onClone?: (store: Store, opt: Options) => boolean;
}
// store. life cycle: drag-end
store = {
el // the moving el
originalEl // the original moving el, used when clone
initialMouse
initialPosition // relative to offsetParent
mouse
move
movedCount // start from 0
startEvent // mousedown or touchstart event
endEvent,
restoreDOM() // function if opt.restoreDOMManuallyOndrop else null
export declare const initialStore: {
movedCount: number;
};
declare type InitialStore = typeof initialStore;
export interface Store extends InitialStore {
listenerElement: HTMLElement;
directTriggerElement: HTMLElement;
triggerElement: HTMLElement;
startEvent: MouseOrTouchEvent;
moveEvent: MouseOrTouchEvent;
endEvent: MouseOrTouchEvent;
mouse: EventPosition;
initialMouse: EventPosition;
move: EventPosition2;
movedOrClonedElement: HTMLElement;
movedElement: HTMLElement;
initialPosition: EventPosition2;
initialPositionRelativeToViewport: EventPosition2;
updateMovedElementStyle: () => void;
_isMovingElementCloned: boolean;
}
declare type EventPosition2 = {
x: number;
y: number;
};
export {};
```
## Example
### Advance usage: bind to parent element
Advance usage: bind to parent element, make children element as trigger element or moved element.
```js

@@ -90,12 +143,14 @@ import draggableHelper from 'draggable-helper'

```
## prevent drag
In follow case, drag event will be prevented.
* Event target element is follow
- Event target element is follow
```js
const IGNORE_TRIGGERS = ['INPUT','TEXTAREA', 'SELECT', 'OPTGROUP', 'OPTION']
const IGNORE_TRIGGERS = ["INPUT", "TEXTAREA", "SELECT", "OPTGROUP", "OPTION"];
```
* Event target has class `undraggable` or its ancestor till dragHandlerEl has.
* opt.beforeDrag or opt.drag return false
## demo
[jsfiddle](https://jsfiddle.net/phphe/t694kpua/19/)
- Event target has class `undraggable` or its ancestor till dragHandlerEl has.
- opt.beforeDrag or opt.drag return false
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc