1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
Whymarrh Whitby 4f0a205369
Use eslint@6.8.0 (#8978)
* Use eslint@6.8.0
* yarn lint:fix
2020-07-14 12:50:41 -02:30

44 lines
1.2 KiB
JavaScript

import PropTypes from 'prop-types'
import React, { useRef, useState } from 'react'
import { createPortal } from 'react-dom'
import { usePopper } from 'react-popper'
import classnames from 'classnames'
const Menu = ({ anchorElement, children, className, onHide, popperOptions }) => {
const [popperElement, setPopperElement] = useState(null)
const popoverContainerElement = useRef(document.getElementById('popover-content'))
const { attributes, styles } = usePopper(anchorElement, popperElement, popperOptions)
return createPortal(
<>
<div className="menu__background" onClick={onHide} />
<div
className={classnames('menu__container', className)}
ref={setPopperElement}
style={styles.popper}
{...attributes.popper}
>
{ children }
</div>
</>,
popoverContainerElement.current,
)
}
Menu.propTypes = {
anchorElement: PropTypes.instanceOf(window.Element),
children: PropTypes.node.isRequired,
className: PropTypes.string,
onHide: PropTypes.func.isRequired,
popperOptions: PropTypes.object,
}
Menu.defaultProps = {
anchorElement: undefined,
className: undefined,
popperOptions: undefined,
}
export default Menu