UNPKG

@equinor/eds-core-react

Version:

The React implementation of the Equinor Design System

58 lines (55 loc) 1.22 kB
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 };