Files
ota-admin-portal/src/components/Controls/TrieSelect/TrieSelectContext.js
Tristan Timblin 5716832a81 CEC-4564: add trie select component (#404)
* add TrieSelect

* setup menu button

* CEC-4564: add trie select component

* CEC-4564: fix selectall bool check

* update tests
2023-07-31 11:08:23 -04:00

30 lines
817 B
JavaScript

import { createContext, useState, useContext, useEffect } from "react";
const TrieSelectContext = createContext();
export const useTrieSelect = () => {
const context = useContext(TrieSelectContext);
if (context === undefined) {
throw new Error("useTrieSelect must be used within a TrieSelectProvider");
}
return context;
}
export const TrieSelectProvider = ({ children, onChange }) => {
const [selected, setSelected] = useState([]);
const add = (id) => setSelected(prev => [...prev, id]);
const remove = (id) => setSelected(prev => prev.filter(select => select !== id));
useEffect(() => {
onChange(selected);
}, [onChange, selected]);
return (
<TrieSelectContext.Provider value={{ selected, setSelected, add, remove }}>
{children}
</TrieSelectContext.Provider>
);
}