A React component that allows you to select elements in the drag area using the mouse
A React component that allows you to select elements in the drag area using the mouse
![](https://private-user-images.githubusercontent.com/47104575/285330798-9d463acf-c56b-48d8-b7d5-2dc02b4257e0.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNjMzNzksIm5iZiI6MTczOTM2MzA3OSwicGF0aCI6Ii80NzEwNDU3NS8yODUzMzA3OTgtOWQ0NjNhY2YtYzU2Yi00OGQ4LWI3ZDUtMmRjMDJiNDI1N2UwLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDEyMjQzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlZGYwYmY5ODc5ZTE0ODJhOWI4Zjc1MTllMmZhZDQ4MjZjOGNlOWE3ZWU0MWNhMjE4ZmM5YjFjNzMzOTZiZWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.9EnmP2FKV-FLzh-BG9w4y6a2pxLcfRMaE34h0QVA4DY)
npm i react-selectable-box
// or
yarn add react-selectable-box
// or
pnpm add react-selectable-box
import Selectable, { useSelectable } from 'react-selectable-box';
const list: number[] = [];
for (let i = 0; i < 200; i++) {
list.push(i);
}
const App = () => {
return (
<Selectable>
<div
style={{
display: 'flex',
flexWrap: 'wrap',
gap: 20,
padding: 20,
border: '1px solid #ccc',
}}
>
{list.map((i) => (
<Item key={i} value={i} />
))}
</div>
</Selectable>
);
};
const Item = ({ value }: { value: number }) => {
const { setNodeRef, isSelected, isAdding } = useSelectable({
value,
});
return (
<div
ref={setNodeRef}
style={{
width: 50,
height: 50,
borderRadius: 4,
border: isAdding ? '1px solid #1677ff' : undefined,
background: isSelected ? '#1677ff' : '#ccc',
}}
/>
);
};