mirror of https://github.com/portainer/portainer
21 lines
576 B
TypeScript
21 lines
576 B
TypeScript
import { useState } from 'react';
|
|
|
|
export function useListSelection<T>(
|
|
initialValue: Array<T> = [],
|
|
compareFn: (a: T, b: T) => boolean = (a, b) => a === b
|
|
) {
|
|
const [selectedItems, setSelectedItems] = useState<Array<T>>(initialValue);
|
|
|
|
function handleChangeSelect(currentItem: T, selected: boolean) {
|
|
if (selected) {
|
|
setSelectedItems((items) => [...items, currentItem]);
|
|
} else {
|
|
setSelectedItems((items) =>
|
|
items.filter((item) => !compareFn(item, currentItem))
|
|
);
|
|
}
|
|
}
|
|
|
|
return [selectedItems, handleChangeSelect] as const;
|
|
}
|