create-nova-vite-template
Version:
This is a dashboard template built with React and Vite. It provides a modern and responsive user interface for building web applications.
29 lines (23 loc) • 692 B
text/typescript
import { useState } from "react";
export default function useToggleState<T = number>(initialState: T[]) {
const [selectedValues, setselectedValues] = useState<T[]>(initialState);
const isSelected = (value: T) => {
return Boolean(selectedValues?.find((item) => item === value));
};
const addToSelected = (value: T) => {
if (!isSelected(value)) {
setselectedValues([...selectedValues, value]);
} else {
setselectedValues(selectedValues.filter((item) => item !== value));
}
};
const replaceState = (newValues: T[]) => {
setselectedValues(newValues);
};
return {
selectedValues,
isSelected,
addToSelected,
replaceState,
};
}