@equinor/eds-core-react
Version:
The React implementation of the Equinor Design System
48 lines (45 loc) • 1 kB
JavaScript
import { useContext, createContext, useState, useCallback } from 'react';
import { jsx } from 'react/jsx-runtime';
const initalState = {
isOpen: false,
onToggle: null
};
const SideBarContext = /*#__PURE__*/createContext(initalState);
const SideBarProvider = ({
children,
isOpen: isOpenProp = false
}) => {
const [state, setState] = useState({
onToggle: null,
isOpen: isOpenProp
});
const {
isOpen,
onToggle
} = state;
const setIsOpen = useCallback(open => {
setState(prevState => ({
...prevState,
isOpen: open
}));
onToggle?.(open);
}, [onToggle]);
const setOnToggle = onToggle => {
setState(prevState => ({
...prevState,
onToggle
}));
};
const value = {
setIsOpen,
setOnToggle,
onToggle,
isOpen
};
return /*#__PURE__*/jsx(SideBarContext.Provider, {
value: value,
children: children
});
};
const useSideBar = () => useContext(SideBarContext);
export { SideBarProvider, useSideBar };