-
Alexandru Munteanu authoreda584ac1f
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
import React from 'react'
import ReactDOM from 'react-dom'
import styled from 'styled-components'
const createModalRootElement = () => {
const modalDiv = document.createElement('div')
modalDiv.setAttribute('id', 'ps-modal-root')
document.body.insertAdjacentElement('beforeend', modalDiv)
return modalDiv
}
const modalRoot = createModalRootElement()
class Modal extends React.Component {
render() {
const { component: Component, overlayColor, ...rest } = this.props
return ReactDOM.createPortal(
<ModalRoot
onClick={rest.dismissable ? rest.hideModal : null}
overlayColor={overlayColor}
>
<Component {...rest} />
</ModalRoot>,
modalRoot,
)
}
}
export default Modal
const ModalRoot = styled.div`
align-items: center;
display: flex;
top: 0;
left: 0;
bottom: 0;
right: 0;
position: fixed;
justify-content: center;
background-color: ${({ overlayColor }) =>
overlayColor || 'rgba(0, 0, 0, 0.8)'};
z-index: ${({ theme }) => theme.modalIndex};
`