2019-06-19 14:40:52 +00:00
|
|
|
import { Node } from "../types";
|
2019-08-09 11:14:35 +00:00
|
|
|
import useListActions from "./useListActions";
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
function useBulkActions(initial: string[] = []) {
|
2019-08-09 11:14:35 +00:00
|
|
|
const {
|
|
|
|
add,
|
|
|
|
isSelected,
|
|
|
|
listElements,
|
|
|
|
remove,
|
|
|
|
reset,
|
|
|
|
set,
|
|
|
|
toggle
|
|
|
|
} = useListActions<string>(initial);
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
function toggleAll(items: Node[], selected: number) {
|
|
|
|
const allItems = items.map(item => item.id);
|
|
|
|
reset();
|
|
|
|
if (selected !== allItems.length) {
|
2019-08-09 11:14:35 +00:00
|
|
|
set(allItems);
|
2019-06-19 14:40:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
add,
|
|
|
|
isSelected,
|
|
|
|
listElements,
|
|
|
|
remove,
|
|
|
|
reset,
|
|
|
|
toggle,
|
|
|
|
toggleAll
|
|
|
|
};
|
|
|
|
}
|
|
|
|
export default useBulkActions;
|
2021-08-16 13:44:00 +00:00
|
|
|
|
|
|
|
export interface UseBulkActionsProps {
|
|
|
|
isSelected: (id: string) => boolean;
|
|
|
|
listElements: string[];
|
|
|
|
toggle: (id: string) => void;
|
|
|
|
toggleAll: (items: Node[], selected: number) => void;
|
|
|
|
reset: () => void;
|
|
|
|
}
|