Skip to content

A pure vanila javascript without dependency which is use to drag and drop elements in easy and understandable way.

License

Notifications You must be signed in to change notification settings

mytabworks/draggerjs

Repository files navigation

draggerjs

is a pure vanila javascript without dependency which is use to drag and drop elements in easy and understabdable way.

installation

npm i draggerjs

or

yarn add draggerjs

import to your project

import Draggerjs from 'draggerjs'

Options Props

axis?: 'x' | 'y'; - if dragging is specifically only for x or y

draggable?: string; - selector of draggable elements

droppable?: string; - selector of droppable elements

allowBoundContainer?: boolean; - when true the draggable elements will be bound to container

allowExactTargetDraggable?: boolean; - when true the target you hold will be the draggable element

autoscroll?: boolean; - when true it will auto scroll any scrollable container when you drag the element on the edge

autoscrollSensitivity?: number; - the sensitivity of the edge scrolling; default 20

eventListenerOption?: any - the option of the addEventListener and removeEventListener

Methods

destroy() - to destroy the event listner use in draggerjs

Usage

JAVASCRIPT

const dragger = new Draggerjs('#drag-autoscroll', {
    draggable: '.draggable-box',
    autoscroll: true
})

dragger.on('dragstart', (e) => { 
    const target = e.target
    if(e.isDraggableElement) {
        // prevent mobile from scrolling
        // when dragging draggable element
        e.preventDefault()
        target.classList.add('grabbed')
        if(target.classList.contains('center')) {
            target.classList.remove('center')
        }
    }
})

dragger.on('dragend', (e) => {
    if(e.isDraggableElement) {  
        e.target.classList.remove('grabbed') 
    }
})

if('removeDraggerListener' === true) {
    dragger.destroy()
}

CSS

.drag-container {  
    display: flex;
    flex-wrap: wrap;
    height: 250px;  
    position: relative;
}
.drag-long-ground {
    display: block;
    overflow: scroll;
    -webkit-overflow-scrolling: touch;
}
.drag-long-ground > .drag-around {
    width: 1250px;
    height: 1250px;
}
.drag-container > .drag-around {
    flex: 1 1;
    width: 100%; 
    border: 2px dashed #fff;
    border-radius: 15px;
    padding: 15px;
    transition: box-shadow 300ms ease-in;
}
.drag-container .draggable-box {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-width: 50px;
    min-height: 50px;
    padding: 0 10px; 
    border-radius: 10px;
    transition: box-shadow 300ms ease-in;
    cursor: grab;
}
.drag-container .draggable-box > h1 { 
    margin-bottom: 5px;
}
.drag-container .grabbed {
    cursor: grabbing;
    margin: 0;
}
.draggable-box.center {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

HTML

<div class="drag-container drag-long-ground" id="drag-autoscroll">  
    <div class="drag-around n-border-color">
        <div class="draggable-box center n-flat">
            <h1>Drag Me</h1>
        </div> 
    </div>
</div>

About

A pure vanila javascript without dependency which is use to drag and drop elements in easy and understandable way.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published