oktopus/frontend/src/hooks/use-selection.js
Leandro Antônio Farias Machado d297fecc62 chore: create proj structure
2023-03-07 13:33:32 +00:00

36 lines
779 B
JavaScript

import { useCallback, useEffect, useState } from 'react';
export const useSelection = (items = []) => {
const [selected, setSelected] = useState([]);
useEffect(() => {
setSelected([]);
}, [items]);
const handleSelectAll = useCallback(() => {
setSelected([...items]);
}, [items]);
const handleSelectOne = useCallback((item) => {
setSelected((prevState) => [...prevState, item]);
}, []);
const handleDeselectAll = useCallback(() => {
setSelected([]);
}, []);
const handleDeselectOne = useCallback((item) => {
setSelected((prevState) => {
return prevState.filter((_item) => _item !== item);
});
}, []);
return {
handleDeselectAll,
handleDeselectOne,
handleSelectAll,
handleSelectOne,
selected
};
};