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:
29
src/components/Controls/TrieSelect/TrieSelectContext.js
Normal file
29
src/components/Controls/TrieSelect/TrieSelectContext.js
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user