react-selectable-fast
Install
npm i -S react-selectable-fast
Demo
Draw a box with your mouse/touch to select items. Click on + icon of an individual item to select it.
Selecting: 0
Selected: 0
Press ESC to clear selection
Michael Jordan
1Selected: false
Kobe Bryant
2Selected: false
Wilt Chamberlain
3Selected: false
Magic Johnson
4Selected: false
Kareem Abdul-Jabbar
5Selected: false
Kevin Durant
6Selected: false
Tim Duncan
7Selected: false
Larry Bird
8Selected: false
Shaquille ONeal
9Selected: false
Jerry West
10Selected: false
Moses Malone
11Selected: false
Karl Malone
12Selected: false
Julius Erving
13Selected: false
Kevin Garnett
14Selected: false
Charles Barkley
15Selected: false
Dirk Nowitzki
16Selected: false
Scottie Pippen
17Selected: false
Dwyane Wade
18Selected: false
David Robinson
19Selected: false
Stephen Curry
20Selected: false
Vince Carter
21Selected: false
Clyde Drexler
22Selected: false
Patrick Ewing
23Selected: false
Steve Nash
24Selected: false
Jason Kidd
25Selected: false
Allen Iverson
26Selected: false
Paul Pierce
27Selected: false
Gary Payton
28Selected: false
Ray Allen
29Selected: false
Dwight Howard
30Selected: false
Chris Paul
31Selected: false
Michael Jordan
32Selected: false
Kobe Bryant
33Selected: false
Wilt Chamberlain
34Selected: false
Magic Johnson
35Selected: false
Kareem Abdul-Jabbar
36Selected: false
Kevin Durant
37Selected: false
Tim Duncan
38Selected: false
Larry Bird
39Selected: false
Shaquille ONeal
40Selected: false
Jerry West
41Selected: false
Moses Malone
42Selected: false
Karl Malone
43Selected: false
Julius Erving
44Selected: false
Kevin Garnett
45Selected: false
Charles Barkley
46Selected: false
Dirk Nowitzki
47Selected: false
Scottie Pippen
48Selected: false
Dwyane Wade
49Selected: false
David Robinson
50Selected: false
Stephen Curry
51Selected: false
Vince Carter
52Selected: false
Clyde Drexler
53Selected: false
Patrick Ewing
54Selected: false
Steve Nash
55Selected: false
Jason Kidd
56Selected: false
Allen Iverson
57Selected: false
Paul Pierce
58Selected: false
Gary Payton
59Selected: false
Ray Allen
60Selected: false
Dwight Howard
61Selected: false
Chris Paul
62Selected: false
Michael Jordan
63Selected: false
Kobe Bryant
64Selected: false
Wilt Chamberlain
65Selected: false
Magic Johnson
66Selected: false
Kareem Abdul-Jabbar
67Selected: false
Kevin Durant
68Selected: false
Tim Duncan
69Selected: false
Larry Bird
70Selected: false
Shaquille ONeal
71Selected: false
Jerry West
72Selected: false
Moses Malone
73Selected: false
Karl Malone
74Selected: false
Julius Erving
75Selected: false
Kevin Garnett
76Selected: false
Charles Barkley
77Selected: false
Dirk Nowitzki
78Selected: false
Scottie Pippen
79Selected: false
Dwyane Wade
80Selected: false
David Robinson
81Selected: false
Stephen Curry
82Selected: false
Vince Carter
83Selected: false
Clyde Drexler
84Selected: false
Patrick Ewing
85Selected: false
Steve Nash
86Selected: false
Jason Kidd
87Selected: false
Allen Iverson
88Selected: false
Paul Pierce
89Selected: false
Gary Payton
90Selected: false
Ray Allen
91Selected: false
Dwight Howard
92Selected: false
Chris Paul
93Selected: false
Michael Jordan
94Selected: false
Kobe Bryant
95Selected: false
Wilt Chamberlain
96Selected: false
Magic Johnson
97Selected: false
Kareem Abdul-Jabbar
98Selected: false
Kevin Durant
99Selected: false
Tim Duncan
100Selected: false
Larry Bird
101Selected: false
Shaquille ONeal
102Selected: false
Jerry West
103Selected: false
Moses Malone
104Selected: false
Karl Malone
105Selected: false
Julius Erving
106Selected: false
Kevin Garnett
107Selected: false
Charles Barkley
108Selected: false
Dirk Nowitzki
109Selected: false
Scottie Pippen
110Selected: false
Dwyane Wade
111Selected: false
David Robinson
112Selected: false
Stephen Curry
113Selected: false
Vince Carter
114Selected: false
Clyde Drexler
115Selected: false
Patrick Ewing
116Selected: false
Steve Nash
117Selected: false
Jason Kidd
118Selected: false
Allen Iverson
119Selected: false
Paul Pierce
120Selected: false
Gary Payton
121Selected: false
Ray Allen
122Selected: false
Dwight Howard
123Selected: false
Chris Paul
124Selected: false
Michael Jordan
125Selected: false
Kobe Bryant
126Selected: false
Wilt Chamberlain
127Selected: false
Magic Johnson
128Selected: false
Kareem Abdul-Jabbar
129Selected: false
Kevin Durant
130Selected: false
Tim Duncan
131Selected: false
Larry Bird
132Selected: false
Shaquille ONeal
133Selected: false
Jerry West
134Selected: false
Moses Malone
135Selected: false
Karl Malone
136Selected: false
Julius Erving
137Selected: false
Kevin Garnett
138Selected: false
Charles Barkley
139Selected: false
Dirk Nowitzki
140Selected: false
Scottie Pippen
141Selected: false
Dwyane Wade
142Selected: false
David Robinson
143Selected: false
Stephen Curry
144Selected: false
Vince Carter
145Selected: false
Clyde Drexler
146Selected: false
Patrick Ewing
147Selected: false
Steve Nash
148Selected: false
Jason Kidd
149Selected: false
Allen Iverson
150Selected: false
Paul Pierce
151Selected: false
Gary Payton
152Selected: false
Ray Allen
153Selected: false
Dwight Howard
154Selected: false
Chris Paul
155Selected: false
Michael Jordan
156Selected: false
Kobe Bryant
157Selected: false
Wilt Chamberlain
158Selected: false
Magic Johnson
159Selected: false
Kareem Abdul-Jabbar
160Selected: false
Kevin Durant
161Selected: false
Tim Duncan
162Selected: false
Larry Bird
163Selected: false
Shaquille ONeal
164Selected: false
Jerry West
165Selected: false
Moses Malone
166Selected: false
Karl Malone
167Selected: false
Julius Erving
168Selected: false
Kevin Garnett
169Selected: false
Charles Barkley
170Selected: false
Dirk Nowitzki
171Selected: false
Scottie Pippen
172Selected: false
Dwyane Wade
173Selected: false
David Robinson
174Selected: false
Stephen Curry
175Selected: false
Vince Carter
176Selected: false
Clyde Drexler
177Selected: false
Patrick Ewing
178Selected: false
Steve Nash
179Selected: false
Jason Kidd
180Selected: false
Allen Iverson
181Selected: false
Paul Pierce
182Selected: false
Gary Payton
183Selected: false
Ray Allen
184Selected: false
Dwight Howard
185Selected: false
Chris Paul
186Selected: false
Michael Jordan
187Selected: false
Kobe Bryant
188Selected: false
Wilt Chamberlain
189Selected: false
Magic Johnson
190Selected: false
Kareem Abdul-Jabbar
191Selected: false
Kevin Durant
192Selected: false
Tim Duncan
193Selected: false
Larry Bird
194Selected: false
Shaquille ONeal
195Selected: false
Jerry West
196Selected: false
Moses Malone
197Selected: false
Karl Malone
198Selected: false
Julius Erving
199Selected: false
Kevin Garnett
200Selected: false
Charles Barkley
201Selected: false
Dirk Nowitzki
202Selected: false
Scottie Pippen
203Selected: false
Dwyane Wade
204Selected: false
David Robinson
205Selected: false
Stephen Curry
206Selected: false
Vince Carter
207Selected: false
Clyde Drexler
208Selected: false
Patrick Ewing
209Selected: false
Steve Nash
210Selected: false
Jason Kidd
211Selected: false
Allen Iverson
212Selected: false
Paul Pierce
213Selected: false
Gary Payton
214Selected: false
Ray Allen
215Selected: false
Dwight Howard
216Selected: false
Chris Paul
217Selected: false
Michael Jordan
218Selected: false
Kobe Bryant
219Selected: false
Wilt Chamberlain
220Selected: false
Magic Johnson
221Selected: false
Kareem Abdul-Jabbar
222Selected: false
Kevin Durant
223Selected: false
Tim Duncan
224Selected: false
Larry Bird
225Selected: false
Shaquille ONeal
226Selected: false
Jerry West
227Selected: false
Moses Malone
228Selected: false
Karl Malone
229Selected: false
Julius Erving
230Selected: false
Kevin Garnett
231Selected: false
Charles Barkley
232Selected: false
Dirk Nowitzki
233Selected: false
Scottie Pippen
234Selected: false
Dwyane Wade
235Selected: false
David Robinson
236Selected: false
Stephen Curry
237Selected: false
Vince Carter
238Selected: false
Clyde Drexler
239Selected: false
Patrick Ewing
240Selected: false
Steve Nash
241Selected: false
Jason Kidd
242Selected: false
Allen Iverson
243Selected: false
Paul Pierce
244Selected: false
Gary Payton
245Selected: false
Ray Allen
246Selected: false
Dwight Howard
247Selected: false
Chris Paul
248Selected: false
Michael Jordan
249Selected: false
Kobe Bryant
250Selected: false
Wilt Chamberlain
251Selected: false
Magic Johnson
252Selected: false
Kareem Abdul-Jabbar
253Selected: false
Kevin Durant
254Selected: false
Tim Duncan
255Selected: false
Larry Bird
256Selected: false
Shaquille ONeal
257Selected: false
Jerry West
258Selected: false
Moses Malone
259Selected: false
Karl Malone
260Selected: false
Julius Erving
261Selected: false
Kevin Garnett
262Selected: false
Charles Barkley
263Selected: false
Dirk Nowitzki
264Selected: false
Scottie Pippen
265Selected: false
Dwyane Wade
266Selected: false
David Robinson
267Selected: false
Stephen Curry
268Selected: false
Vince Carter
269Selected: false
Clyde Drexler
270Selected: false
Patrick Ewing
271Selected: false
Steve Nash
272Selected: false
Jason Kidd
273Selected: false
Allen Iverson
274Selected: false
Paul Pierce
275Selected: false
Gary Payton
276Selected: false
Ray Allen
277Selected: false
Dwight Howard
278Selected: false
Chris Paul
279Selected: false
Michael Jordan
280Selected: false
Kobe Bryant
281Selected: false
Wilt Chamberlain
282Selected: false
Magic Johnson
283Selected: false
Kareem Abdul-Jabbar
284Selected: false
Kevin Durant
285Selected: false
Tim Duncan
286Selected: false
Larry Bird
287Selected: false
Shaquille ONeal
288Selected: false
Jerry West
289Selected: false
Moses Malone
290Selected: false
Karl Malone
291Selected: false
Julius Erving
292Selected: false
Kevin Garnett
293Selected: false
Charles Barkley
294Selected: false
Dirk Nowitzki
295Selected: false
Scottie Pippen
296Selected: false
Dwyane Wade
297Selected: false
David Robinson
298Selected: false
Stephen Curry
299Selected: false
Vince Carter
300Selected: false
Clyde Drexler
301Selected: false
Patrick Ewing
302Selected: false
Steve Nash
303Selected: false
Jason Kidd
304Selected: false
Allen Iverson
305Selected: false
Paul Pierce
306Selected: false
Gary Payton
307Selected: false
Ray Allen
308Selected: false
Dwight Howard
309Selected: false
Chris Paul
310Selected: false
Michael Jordan
311Selected: false
Kobe Bryant
312Selected: false
Wilt Chamberlain
313Selected: false
Magic Johnson
314Selected: false
Kareem Abdul-Jabbar
315Selected: false
Kevin Durant
316Selected: false
Tim Duncan
317Selected: false
Larry Bird
318Selected: false
Shaquille ONeal
319Selected: false
Jerry West
320Selected: false
Moses Malone
321Selected: false
Karl Malone
322Selected: false
Julius Erving
323Selected: false
Kevin Garnett
324Selected: false
Charles Barkley
325Selected: false
Dirk Nowitzki
326Selected: false
Scottie Pippen
327Selected: false
Dwyane Wade
328Selected: false
David Robinson
329Selected: false
Stephen Curry
330Selected: false
Vince Carter
331Selected: false
Clyde Drexler
332Selected: false
Patrick Ewing
333Selected: false
Steve Nash
334Selected: false
Jason Kidd
335Selected: false
Allen Iverson
336Selected: false
Paul Pierce
337Selected: false
Gary Payton
338Selected: false
Ray Allen
339Selected: false
Dwight Howard
340Selected: false
Chris Paul
341Selected: false
Michael Jordan
342Selected: false
Kobe Bryant
343Selected: false
Wilt Chamberlain
344Selected: false
Magic Johnson
345Selected: false
Kareem Abdul-Jabbar
346Selected: false
Kevin Durant
347Selected: false
Tim Duncan
348Selected: false
Larry Bird
349Selected: false
Shaquille ONeal
350Selected: false
Jerry West
351Selected: false
Moses Malone
352Selected: false
Karl Malone
353Selected: false
Julius Erving
354Selected: false
Kevin Garnett
355Selected: false
Charles Barkley
356Selected: false
Dirk Nowitzki
357Selected: false
Scottie Pippen
358Selected: false
Dwyane Wade
359Selected: false
David Robinson
360Selected: false
Stephen Curry
361Selected: false
Vince Carter
362Selected: false
Clyde Drexler
363Selected: false
Patrick Ewing
364Selected: false
Steve Nash
365Selected: false
Jason Kidd
366Selected: false
Allen Iverson
367Selected: false
Paul Pierce
368Selected: false
Gary Payton
369Selected: false
Ray Allen
370Selected: false
Dwight Howard
371Selected: false
Chris Paul
372Selected: false
Michael Jordan
373Selected: false
Kobe Bryant
374Selected: false
Wilt Chamberlain
375Selected: false
Magic Johnson
376Selected: false
Kareem Abdul-Jabbar
377Selected: false
Kevin Durant
378Selected: false
Tim Duncan
379Selected: false
Larry Bird
380Selected: false
Shaquille ONeal
381Selected: false
Jerry West
382Selected: false
Moses Malone
383Selected: false
Karl Malone
384Selected: false
Julius Erving
385Selected: false
Kevin Garnett
386Selected: false
Charles Barkley
387Selected: false
Dirk Nowitzki
388Selected: false
Scottie Pippen
389Selected: false
Dwyane Wade
390Selected: false
David Robinson
391Selected: false
Stephen Curry
392Selected: false
Vince Carter
393Selected: false
Clyde Drexler
394Selected: false
Patrick Ewing
395Selected: false
Steve Nash
396Selected: false
Jason Kidd
397Selected: false
Allen Iverson
398Selected: false
Paul Pierce
399Selected: false
Gary Payton
400Selected: false
Ray Allen
401Selected: false
Dwight Howard
402Selected: false
Chris Paul
403Selected: false
Michael Jordan
404Selected: false
Kobe Bryant
405Selected: false
Wilt Chamberlain
406Selected: false
Magic Johnson
407Selected: false
Kareem Abdul-Jabbar
408Selected: false
Kevin Durant
409Selected: false
Tim Duncan
410Selected: false
Larry Bird
411Selected: false
Shaquille ONeal
412Selected: false
Jerry West
413Selected: false
Moses Malone
414Selected: false
Karl Malone
415Selected: false
Julius Erving
416Selected: false
Kevin Garnett
417Selected: false
Charles Barkley
418Selected: false
Dirk Nowitzki
419Selected: false
Scottie Pippen
420Selected: false
Dwyane Wade
421Selected: false
David Robinson
422Selected: false
Stephen Curry
423Selected: false
Vince Carter
424Selected: false
Clyde Drexler
425Selected: false
Patrick Ewing
426Selected: false
Steve Nash
427Selected: false
Jason Kidd
428Selected: false
Allen Iverson
429Selected: false
Paul Pierce
430Selected: false
Gary Payton
431Selected: false
Ray Allen
432Selected: false
Dwight Howard
433Selected: false
Chris Paul
434Selected: false
Michael Jordan
435Selected: false
Kobe Bryant
436Selected: false
Wilt Chamberlain
437Selected: false
Magic Johnson
438Selected: false
Kareem Abdul-Jabbar
439Selected: false
Kevin Durant
440Selected: false
Tim Duncan
441Selected: false
Larry Bird
442Selected: false
Shaquille ONeal
443Selected: false
Jerry West
444Selected: false
Moses Malone
445Selected: false
Karl Malone
446Selected: false
Julius Erving
447Selected: false
Kevin Garnett
448Selected: false
Charles Barkley
449Selected: false
Dirk Nowitzki
450Selected: false
Scottie Pippen
451Selected: false
Dwyane Wade
452Selected: false
David Robinson
453Selected: false
Stephen Curry
454Selected: false
Vince Carter
455Selected: false
Clyde Drexler
456Selected: false
Patrick Ewing
457Selected: false
Steve Nash
458Selected: false
Jason Kidd
459Selected: false
Allen Iverson
460Selected: false
Paul Pierce
461Selected: false
Gary Payton
462Selected: false
Ray Allen
463Selected: false
Dwight Howard
464Selected: false
Chris Paul
465Selected: false
Michael Jordan
466Selected: false
Kobe Bryant
467Selected: false
Wilt Chamberlain
468Selected: false
Magic Johnson
469Selected: false
Kareem Abdul-Jabbar
470Selected: false
Kevin Durant
471Selected: false
Tim Duncan
472Selected: false
Larry Bird
473Selected: false
Shaquille ONeal
474Selected: false
Jerry West
475Selected: false
Moses Malone
476Selected: false
Karl Malone
477Selected: false
Julius Erving
478Selected: false
Kevin Garnett
479Selected: false
Charles Barkley
480Selected: false
Dirk Nowitzki
481Selected: false
Scottie Pippen
482Selected: false
Dwyane Wade
483Selected: false
David Robinson
484Selected: false
Stephen Curry
485Selected: false
Vince Carter
486Selected: false
Clyde Drexler
487Selected: false
Patrick Ewing
488Selected: false
Steve Nash
489Selected: false
Jason Kidd
490Selected: false
Allen Iverson
491Selected: false
Paul Pierce
492Selected: false
Gary Payton
493Selected: false
Ray Allen
494Selected: false
Dwight Howard
495Selected: false
Chris Paul
496Selected: false
Michael Jordan
497Selected: false
Kobe Bryant
498Selected: false
Wilt Chamberlain
499Selected: false
Magic Johnson
500Selected: false
JavaScript environment requirements
The React-Selectable-Fast package distributed on NPM use the widely-supported ES5 version of JavaScript to support as many browser environments as possible.
However, this package expects modern JavaScript globals (Map
, Set
,
Array.from
, Array.isArray
Object.assign
) to be
defined. If you support older browsers and devices which may not yet provide these natively,
consider including a global polyfill in your bundled application, such as
core-js or
babel-polyfill.
A polyfilled environment for React-Selectable-Fast using core-js to support older browsers might look like this:
import 'core-js/fn/object/assign'
import 'core-js/fn/array/from'
import 'core-js/fn/array/is-array'
import 'core-js/fn/map'
import 'core-js/fn/set'
import App from './myApp';
Usage
Example
Package exports 4 entities
{ SelectableGroup, createSelectable, SelectAll, DeselectAll }
. To make other
components selectable wrap them using HoC createSelectable
, add passed
selectableRef
prop to the target node and put a list of seletable items under
SelectableGroup
.
import React, { Component } from 'react'
import { SelectableGroup } from 'react-selectable-fast'
class App extends Component {
...
render() {
return (
<SelectableGroup
className="main"
clickClassName="tick"
enableDeselect
tolerance={this.state.tolerance}
globalMouse={this.state.isGlobal}
allowClickWithoutSelected={false}
duringSelection={this.handleSelecting}
onSelectionClear={this.handleSelectionClear}
onSelectionFinish={this.handleSelectionFinish}
ignoreList={['.not-selectable', '.item:nth-child(10)', '.item:nth-child(27)']}
>
<List items={this.props.items} />
</SelectableGroup>
)
}
}
import React from 'react'
import { createSelectable } from 'react-selectable-fast'
const SomeComponent = ({ selectableRef, isSelected, isSelecting }) => (
<div ref={selectableRef}>...</div>
)
export default createSelectable(SomeComponent)
import React, { Component } from 'react'
import { createSelectable, SelectAll, DeselectAll } from 'react-selectable-fast'
import SomeComponent from './SomeComponent'
const SelectableComponent = createSelectable(SomeComponent)
class List extends Component {
...
render() {
return (
<div>
<SelectAll className="selectable-button">
<button>Select all</button>
</SelectAll>
<DeselectAll className="selectable-button">
<button>Clear selection</button>
</DeselectAll>
{this.props.items.map((item, i) => (
<SelectableComponent
key={i}
player={item.player}
year={item.year}
/>
))}
</div>
)
}
}
Configuration
-
duringSelection
(Function) Callback fired rapidly during selection (while the selector is being dragged). Passes an array containing selectable items currently under the selector to the callback function. onSelectionFinish
(Function) Callback.onSelectionClear
(Function) Callback.enableDeselect
(Boolean) Enables deselect with selectbox.-
mixedDeselect
(Boolean) When enabled items can be selected and deselected with selectbox at the same time,enableDeselect
should be set totrue
. -
scrollContainer
(String) Selector of scroll container which will be used to calculate selectbox position. If not specified SelectableGroup element will be used as scroll container. ignoreList
(Array) Array of ignored selectors.-
disableSelectStartList
(Array) Array of selectors where select lasso can not be started by dragging mouse. Useful if you want to enable drag of selectables. -
clickableClassName
(String) On element with specified selector click item cotaining this element will be selected. -
tolerance
(Number) The amount of buffer to add around your<SelectableGroup />
container, in pixels. className
(String) Class of selectable group element.-
selectionModeClass
(String) Class indicating that there are more than 1 selected item. Defaults to 'in-selection-mode'. -
component
(String) The component to render. Defaults todiv
. -
allowClickWithoutSelected
(Boolean) When disabled items can be selected by click only if there are more than 1 already selected item. -
fixedPosition
(Boolean) Whether the<SelectableGroup />
container is a fixed/absolute position element or the grandchild of one. -
resetOnStart
(Boolean) Unselect all items when you start a new drag. Default value isfalse
. -
disabled
(Boolean) Enable or disable the selectable draggable, useful if you want to enable drag of sub-items. Default value isfalse
. -
delta
(Number) Value of the CSS transform property scaled list, useful if your list of items in<SelectableGroup />
is wrapped by a scale css transform property. Default value is1
. -
selectOnClick
(Boolean) Allow selecting by clicking items. Default value istrue
-
allowAltClick
(Boolean) Perform select actions even though thealt
key is down when clicking or dragging. Default value isfalse
-
allowCtrlClick
(Boolean) Perform select actions even though thectrl
key is down when clicking or dragging. Default value isfalse
-
allowMetaClick
(Boolean) Perform select actions even though themeta
key is down when clicking or dragging. Default value isfalse
-
allowShiftClick
(Boolean) Perform select actions even though theshift
key is down when clicking or dragging. Default value isfalse
Development
Clean lib and dist
folders
npm run clean
Watch src
folder
npm run watch
Start example
dev-server
npm run watch:example
Lint src
folder
npm run lint
License
See MIT