React Selection
Like the normal OS selection, it builds in algorithm for detect two rectangles are overlap, so the performance is pretty fast.
Live Demo
https://rwu823.github.io/react-selection/demo
Usage
<link href="/dist/react-selection.css" rel="stylesheet" />
import Selection from 'react-selection' afterSelect = (selectedTargets)=>{ const hasSelected = selectedTargets.length } render() { <Selection target=".target" afterSelect={this.afterSelect}> <ul> <li><span className="target">React</span> <ul> <li><span className="target">redux</span></li> <li><span className="target">react-redux</span></li> <li><span className="target">react-router</span></li> <li><span className="target">redux-thunk</span></li> <li><span className="target">redux-logger</span></li> <li><span className="target">redux-saga</span></li> </ul> </li> </ul> </Selection> }
API
Props
static propTypes = { target: PropTypes.string.isRequired, selectedClass: PropTypes.string, afterSelect: PropTypes.func, isLimit: PropTypes.bool, } static defaultProps = { target: '.react-selection-target', selectedClass: 'react-selection-selected', isLimit: false, afterSelect() { } }
name | description |
---|---|
target | [String] required, it should be a css select |
selectedClass | [String] add selected class |
isLimit | [Boolean] limit select range inside box |
afterSelect | Function([selectedTargets]) be triggered after select, the select targets are native DOMList |
Customization
If you want to custom your rectangle selection, it just overwrites .react-selection-rectangle
class
.react-selection-rectangle { pointer-events: none; transition: opacity .4s; position: absolute; background-color: rgba(204,204,204 .2); border: 1px solid #ccc; }