@rkmodules/use-selection v0.9.2
use-selection
usage
use useSelection to store selections
npm install @rkmodules/use-selection// pick what you need, more info below
import useSelection, {
useSelectionItem,
useSelect,
useSelectionState,
} from "@rkmodules/use-selection";useSelection
let { selected, select, items, clear } = useSelection(selectionKey: string, persist?: boolean);select(itemKeys: string[], multiple?: boolean):- when
multipleisfalsesets the selection to the given items - when
multipleistrueand all items are already selected, they are deselected - when
multipleistrueotherwise, all are added to the selection
- when
selected(itemKey: string): checks whether an item is selectedclear(): clears the selectionitems: the items in the selection
useSelectionItem
let { selected, select, clear } = useSelectionItem(selectionKey: string, itemKey: string, perist?: boolean);select(multiple?: boolean):- when
multipleisfalse, the selection is set to the item - when
multipleistruethe item is added or removed from the selection
- when
selected(): checks whether the item is selectedclear(): clears the selection
useSelect
let { select, clear } = useSelection(selectionKey: string, persist?: boolean);select(itemKeys: string[], multiple?: boolean):- when
multipleisfalsesets the selection to the given items - when
multipleistrueand all items are already selected, they are deselected - when
multipleistrueotherwise, all are added to the selection
- when
clear(): clears the selection
examples
use useSelection to handle an entire selection as a whole
const TableBody = () => {
// "rows" is the key for the selection, to be able to have multiple selections
let { selected, select, items, clear } = useSelection("rows");
let rows = ["a", "b", "c"];
return (
<table>
{rows.map((item) => {
return (
<tr
key={item}
className={selected(item) ? "selected" : ""}
onClick={(e) => select([item], e.ctrlKey)}
>
<td>{item}</td>
</tr>
);
})}
</table>
);
};use useSelectionItem in the context of a single item
const TableRow = ({ rowId }) => {
// "rows" is the key for the selection, to be able to have multiple selections
// rowId is the key for the item
let { selected, select, clear } = useSelectionItem("rows", rowId);
return (
<tr
className={selected ? "selected" : ""}
onClick={(e) => select(e.ctrlKey)}
>
<td>{rowId}</td>
</tr>
);
};use useSelect to only get select and clear methods, these do not update when the selection changes, preventing rerenders
use useSelectionState to get access to the underlying state, which gives you access to the same select, clear and items members that useSelection and useSelect expose. Also, you have access to the raw getSelection and setSelection methods that operate on the selection, which is a dictionary containing boolean values for all items
project setup
followed https://www.twilio.com/blog/2017/06/writing-a-node-module-in-typescript.html for project setup
development
tests: npm test
publish: npm publish
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago