Skip to content

xaunvih/dragscroll-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Vinh Mai XuanVinh Mai Xuan
Vinh Mai Xuan
and
Vinh Mai Xuan
Jul 10, 2023
b8ab584 Β· Jul 10, 2023
Mar 6, 2021
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jan 17, 2021
Jan 19, 2021
Oct 26, 2020
Jul 10, 2023
Oct 25, 2020
Jul 10, 2023
Jul 10, 2023
May 15, 2021
May 15, 2021
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jul 10, 2023
Jan 17, 2021

Repository files navigation

πŸŽ‰ DragScroll library

Drag Scroll library - smooth content scroll via mouse/touch dragging. Publish standard format Js such as commonJs, ES Modules, UMD, Typescript

Give this library the ⭐️ if it's useful πŸ˜‰

Alt text

Why DragScroll ?

  • More comfortable with physical UI, make consistency between different devices

Usage

First of all, you need to import this library:

// Javascript tag
<script type="type/javascript" src="https://unpkg.com/dragscroll-ts@1.0.4/build/dragscroll.min.js"></script>
# npm or yarn

npm i --save dragscroll-ts
yarn add dragscroll-ts
// Common Javascript
const DragScroll = require('dragscroll-ts')
// ES6 Module Javascript
import DragScroll from 'dragscroll-ts'
// Typescript
import DragScroll, { IDragScrollOptions } from 'dragscroll-ts'
const options: IDragScrollOptions = {}

interface IDragScrollOptions {
  $container: HTMLElement
  $content: HTMLElement
  axis: string
  allowInputFocus?: boolean
  allowSelectText?: boolean
}

Next step, init drag scroll instance

- NOTE: This library only wrap dragscroll logic on available HTML, It doesn't touch stylesheet πŸ˜‰
- Need to be specific the HTML structure of $container, $content elements. See picture below
const $container = document.getElementById('demo-wrapper')
const $content = document.getElementById('demo-content')

new DragScroll({
  $container: $container,
  $content: $content,
  axix: 'x',
  allowInputFocus: true,
  allowSelectText: false,
})

Alt text

Config options

Option Type Description
$container HTMLElement The element wrap the dragable element
$content HTMLElement The dragable child element of $container.
axis string Default is 'x'. There are 3 values: 'x', 'y','xy'
'x' is horizontal direction
'y' is vertical direction
'xy' is both direction
allowInputFocus boolean Allow input fields can be focused
allowSelectText boolean Allow text content can be selected

API

Name Description
scrollTo Pass coordinate object { x, y } to scroll to target position
setInputCanBeFocused Default is true. Input fields can be focused
setTextCanBeSelected Default is true. Text content can be selected
destroy Remove all listeners

Events

The evt parameter is either MouseEvent or TouchEvent

Name Description
dragstart To be fired when starting drag
dragging To be fired when dragging
dragend To be fired when dragging content meet end point
// Example:
const dragSroll = new DragScroll({})
function handler(evt) {}

dragSroll.on('dragstart', handler)
dragSroll.off('dragstart', handler)

Files size

File Format size
dragscroll.min.js UMD 7.6 KB
dragscroll.cjs.js Common Js 6.96 KB
dragscroll.es.js ES Module 6.95 KB

License

MIT License (c) 2020 XuanVinh