docbrown/app/javascript/shared/components/focusTrap.jsx
Katie Davis 76453b41fb
Updates ESLint rules to error on default imports (#12512)
* add rule

* add named imports

* more missed files

* so many files
2021-02-02 10:24:03 -05:00

27 lines
669 B
JavaScript

import PropTypes from 'prop-types';
import { useLayoutEffect, useRef } from 'preact/hooks';
import { createFocusTrap } from 'focus-trap';
import { defaultChildrenPropTypes } from '../../common-prop-types';
export const FocusTrap = ({ selector, children }) => {
const focusTrap = useRef(null);
useLayoutEffect(() => {
focusTrap.current = createFocusTrap(selector);
focusTrap.current.activate();
return () => {
focusTrap.current.deactivate();
};
});
return children;
};
FocusTrap.defaultProps = {
selector: '.crayons-modal',
};
FocusTrap.propTypes = {
selector: PropTypes.string,
children: defaultChildrenPropTypes.isRequired,
};