@equinor/eds-core-react
Version:
The React implementation of the Equinor Design System
58 lines (55 loc) • 1.22 kB
JavaScript
import { useContext, useState, createContext } from 'react';
import { jsx } from 'react/jsx-runtime';
const initalState = {
focusedIndex: -1,
initialFocus: null,
onClose: null
};
const MenuContext = /*#__PURE__*/createContext(initalState);
const MenuProvider = ({
children
}) => {
const [state, setState] = useState(initalState);
const {
focusedIndex,
initialFocus,
onClose
} = state;
const setFocusedIndex = i => {
setState(prevState => ({
...prevState,
focusedIndex: i
}));
};
const setInitialFocus = initialFocus => {
setState(prevState => ({
...prevState,
initialFocus: initialFocus
}));
};
const setOnClose = onClose => {
const onCloseHelper = () => {
setFocusedIndex(-1);
setInitialFocus(null);
onClose();
};
setState(prevState => ({
...prevState,
onClose: onCloseHelper
}));
};
const value = {
setFocusedIndex,
focusedIndex,
setInitialFocus,
initialFocus,
setOnClose,
onClose
};
return /*#__PURE__*/jsx(MenuContext.Provider, {
value: value,
children: children
});
};
const useMenu = () => useContext(MenuContext);
export { MenuProvider, useMenu };