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
This commit is contained in:
Tristan Timblin
2023-07-31 11:08:23 -04:00
committed by GitHub
parent 56dd4a0c8f
commit 5716832a81
10 changed files with 1460 additions and 85 deletions

View File

@@ -0,0 +1,29 @@
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>
);
}