Viselect - Vanilla
Installation
Via package manager
$ npm install @viselect/vanilla
# or
$ yarn add @viselect/vanilla
Via script tags
<script src="https://cdn.jsdelivr.net/npm/@viselect/vanilla/lib/viselect.min.js"></script>
Via ES6 import
import SelectionArea from "https://cdn.jsdelivr.net/npm/@viselect/vanilla/lib/viselect.min.mjs"
Getting started
Last but not least you'll need to add some basic styles to make your selection-area visible:
.selection-area {
background: rgba(46, 115, 252, 0.11);
border: 2px solid rgba(98, 155, 255, 0.81);
border-radius: 0.1em;
}
Additionally, to not interfere with text-selection, selection-js won't prevent any default events anymore (as of v2.0.3
). This however can cause problems with the actual
selection ("introduced" by #99, reported in #103). If you don't care about
text-selection, add the following to the container where all your selectables are located:
.container {
user-select: none;
}
Usage
const selection = new SelectionArea({
selectionAreaClass: 'selection-area',
selectionContainerClass: 'selection-area-container',
container: 'body',
document: window.document,
selectables: [],
startareas: ['html'],
boundaries: ['html'],
behaviour: {
overlap: 'invert',
intersect: 'touch',
startThreshold: 10,
scrolling: {
speedDivider: 10,
manualSpeed: 750
}
},
features: {
touch: true,
range: true,
singleTap: {
allow: true,
intersect: 'native'
}
}
});
Events
Use the on(event, cb)
and off(event, cb)
functions to bind / unbind event-listener.
Event | Description |
---|
beforestart | The user tapped one of the areas within the specified boundaries. Return false to cancel selection immediatly. |
start | Selection started, here you can decide if you want to keep your previously selected elements. |
move | Selection is active, user is moving the pointer around. |
stop | Selection has stopped. |
Example
selection.on('beforestart', evt => {
console.log('beforestart', evt);
}).on('start', evt => {
console.log('start', evt);
}).on('move', evt => {
console.log('move', evt);
}).on('stop', evt => {
console.log('stop', evt);
});
Common recipes can be found under recipes.