Manage multi-`<select>` style array selection state.
MIT License
Manage multi-<select>
style selections in arrays.
import itemSelection from 'item-selection'
const sourceList = [ 'a', 'b', 'c', 'd' ]
let selection = itemSelection(sourceList)
// Methods behave similarly to selection operations in a <select multiple>, or
// eg. your average file manager:
selection = selection.select(0) // like clicking
selection.get() // ['a']
selection = selection.selectRange(2) // like shift+clicking
selection.get() // ['a', 'b', 'c']
selection = selection.selectToggle(1) // like ctrl+clicking
selection.get() // ['a', 'c']
An itemSelection
is immutable by default, i.e. it returns a new selection
object. Use import itemSelection from 'item-selection/mutable'
if you want to
mutate the current selection object instead.
Creates a new selection manager object.
All mutation methods return a new selection manager object by default. If you
want to mutate and reuse the same object, use
import itemSelection from 'item-selection/mutable'
.
Creates a selection with just the item at the given index
selected. Akin to
clicking an item in a <select multiple>
element.
If you want to add an item to the selection, use selection.add(index)
instead.
Also sets the initial range index to index
.
Deselects the item at index
.
Selects or deselects the item at index
. Akin to Ctrl+clicking.
Also sets the initial range index to index
if a new item was selected.
Otherwise, unsets the initial range index.
Selects the given range. Inclusive. (NB: That's different from what Array.slice does!)
Selects a range based on the initial range index and the index
. Akin to
Shift+clicking. Previously selected items that fall outside the range will be
deselected.
If the initial range index was not set using select(index)
or
selectToggle(index)
, selectRange
only selects the given index.
Adds all items to the selection.
Adds the item at index
to the selection.
Also sets the initial range index to index
.
Removes the item at index
from the selection.
Deselect all items.
Get an array of the selected items.
Get an array of the selected indices.
Set a custom array of selected indices.