Simple and easy selection library to enable visual DOM-Selection
Selection
Selection.js is an simple, lightweight, and modern library for making visual DOM Selections.
Quick demo: https://simonwep.github.io/selection
Features
- Supports touch devices
- Simple usage
- No jQuery
- Nodejs support
- Lightweight, 3KB gzipped
Install via npm
$ npm install @simonwep/selection-js --save
Or simply include it via script
tag:
<script src="selection.min.js"></script>
Usage
const options = // All elemets with the class 'selectable' selectable. selectables: '.selectable';const selection = Selection;
It's reccommended to also specify a bounding area for the selection (see 'Options').
Options
const selection = // Class for the selection-area-element // Default: 'selection-area' class: 'selection' // px, how many pixels the point should move before starting the selection // Default: 0 startThreshold: 10 // Disable the selection functionality for touch devices // Default: false disableTouch: false // Query selectors from elements from which the siblings can be selected // Default: Empty array containers: // Query selectors from elements which can be selected // Default: Empty array selectables: // Query selectors for elements from where a selection can be start // Default: ['html'] startareas: // Query selectors for elements which will be used as boundarys for the selection // Default: ['html'] boundarys: // Element selection stardet { evtselection; evteventName; evtareaElement; evtoriginalEvent; evtselectedElements; evtchangedElements; } // Element selection move { // Same properties as onStart } // Element selection stopped { // Same properties as onStart } // Element selection has stardet { evtselection; // This selection instance evteventName; // The event name evtelement; // The element from where the user stardet the selection // return false to cancel the selection process } // Element selection has stardet { evtselection; // This selection instance evteventName; // The event name evtelement; // The element which is in the current selection // return true to keep the element };
Methods
- selection.option(name
:String
) - Returns the option by name. - selection.option(name
:String
, value:Mixed
) - Set a new option value. - selection.disable() - Disable the functionality to make selections.
- selection.enable() - Enable the functionality to make selections.
Events
start / stop / move event
- selection
:Selection
- Current selection object. - eventName
:String
- The event name. - areaElement
:HTMLElement
- The selection element. - originalEvent
:Event
- The original mouse-event. - selectedElements
:Array[HTMLElements]
- Array with currently selected HTMLElements. - changedElements
:Object
- added
:Array[HTMLElements]
- Elements which are added toselectedElements
since the last interaction (mousemove). - removed
:Array[HTMLElements]
- Elements which are removed fromselectedElements
since last interaction (mousemove).
- added
Filter event
- selection
:Selection
- Current selection object. - eventName
:String
- The event name. - element
:HTMLElement
- HTMLElement from which the selection starts.
Static methods
Selection
- Selection.create(options
:Object
):Selection
- Creates a new instance.
Selection.utils
- on(el
:HTMLElement
, event:String
, fn:Function
) - Attach an event handler function. - off(el
:HTMLElement
, event:String
, fn:Function
) - Remove an event handler. - css(el
:HTMLElement
):Object
- Get all css properties from this element. - css(el
:HTMLElement
, attr:String
):Mixed
- Get the value from a style property. - css(el
:HTMLElement
, attr:String
, val:String
) - Set a specific style property. - css(el
:HTMLElement
, attr:Object
) - Set multiple style properties. - intersects(ela
:HTMLElement
, elb:HTMLElement
):Boolean
- Check if an HTMLElement intersects another. - selectAll(selector
:String|Array
):Array
- Returns all HTMLElements which were selected by the selector. - eventPath(evt
:DOMEvent
):NodeList
- Event.composedPath() ponyfill.