UNPKG

@shopify/polaris

Version:

Shopify’s admin product component library

36 lines (33 loc) 901 B
import React, { useState, useCallback, useMemo } from 'react'; import { FocusManagerContext } from '../../utilities/focus-manager/context.js'; function FocusManager({ children }) { const [trapFocusList, setTrapFocusList] = useState([]); const add = useCallback(id => { setTrapFocusList(list => [...list, id]); }, []); const remove = useCallback(id => { let removed = true; setTrapFocusList(list => { const clone = [...list]; const index = clone.indexOf(id); if (index === -1) { removed = false; } else { clone.splice(index, 1); } return clone; }); return removed; }, []); const value = useMemo(() => ({ trapFocusList, add, remove }), [add, trapFocusList, remove]); return /*#__PURE__*/React.createElement(FocusManagerContext.Provider, { value: value }, children); } export { FocusManager };