Use react-modal
import React from 'react'
import { default as ReactModal } from 'react-modal'
import Button from 'src/components/Button'
require('./index.scss')
interface Props {
isOpen: boolean
setIsOpen: (value: boolean) => void
}
const Modal: React.FC<Props> = ({ isOpen, setIsOpen, children }) => {
const closeModal = () => {
setIsOpen(false)
}
function onClickButton() {
console.log('OK')
}
return (
<ReactModal
isOpen={isOpen}
contentLabel='Example Modal'
portalClassName='modal--portal'
overlayClassName='modal--overlay'
className='modal--class-name'
>
<div className='modal--header'>
<div onClick={closeModal} className='modal--close'>
<Icon
type={`close-circle`}
/>
</div>
</div>
<div className='modal--content'>
{children}
</div>
<div className='modal--footer'>
<Button
onClick={onClickButton}
>
A Button
</Button>
</div>
</ReactModal>
)
}
export default Modal
import React from 'react'
import { default as ReactModal } from 'react-modal'
import Button from 'src/components/Button'
require('./index.scss')
interface Props {
isOpen: boolean
setIsOpen: (value: boolean) => void
}
const Modal: React.FC<Props> = ({ isOpen, setIsOpen, children }) => {
const closeModal = () => {
setIsOpen(false)
}
function onClickButton() {
console.log('OK')
}
return (
<ReactModal
isOpen={isOpen}
contentLabel='Example Modal'
portalClassName='modal--portal'
overlayClassName='modal--overlay'
className='modal--class-name'
>
<div className='modal--header'>
<div onClick={closeModal} className='modal--close'>
<Icon
type={`close-circle`}
/>
</div>
</div>
<div className='modal--content'>
{children}
</div>
<div className='modal--footer'>
<Button
onClick={onClickButton}
>
A Button
</Button>
</div>
</ReactModal>
)
}
export default Modal
import React from 'react' import { default as ReactModal } from 'react-modal' import Button from 'src/components/Button' require('./index.scss') interface Props { isOpen: boolean setIsOpen: (value: boolean) => void } const Modal: React.FC<Props> = ({ isOpen, setIsOpen, children }) => { const closeModal = () => { setIsOpen(false) } function onClickButton() { console.log('OK') } return ( <ReactModal isOpen={isOpen} contentLabel='Example Modal' portalClassName='modal--portal' overlayClassName='modal--overlay' className='modal--class-name' > <div className='modal--header'> <div onClick={closeModal} className='modal--close'> <Icon type={`close-circle`} /> </div> </div> <div className='modal--content'> {children} </div> <div className='modal--footer'> <Button onClick={onClickButton} > A Button </Button> </div> </ReactModal> ) } export default Modal
.modal--portal {
}
.modal--overlay {
@apply fixed inset-0 bg-black bg-opacity-80;
@apply flex items-center justify-center;
z-index: 100000;
}
.modal--class-name {
@apply relative;
width: 32%;
&:focus {
@apply outline-none;
}
}
.modal--close {
cursor: pointer;
position: absolute;
top: 10px;
right: 13px;
}
.modal--header {
display: flex;
align-items: center;
justify-content: center;
background-color: #F5F5F5;
height: 79px;
}
.modal--content {
background-color: #fff;
max-height: 400px;
overflow-y: scroll;
padding: 24px 15px 93px 15px;
}
.modal--footer {
display: flex;
align-items: center;
justify-content: center;
background-color: #F5F5F5;
height: 89px;
}
.modal--portal {
}
.modal--overlay {
@apply fixed inset-0 bg-black bg-opacity-80;
@apply flex items-center justify-center;
z-index: 100000;
}
.modal--class-name {
@apply relative;
width: 32%;
&:focus {
@apply outline-none;
}
}
.modal--close {
cursor: pointer;
position: absolute;
top: 10px;
right: 13px;
}
.modal--header {
display: flex;
align-items: center;
justify-content: center;
background-color: #F5F5F5;
height: 79px;
}
.modal--content {
background-color: #fff;
max-height: 400px;
overflow-y: scroll;
padding: 24px 15px 93px 15px;
}
.modal--footer {
display: flex;
align-items: center;
justify-content: center;
background-color: #F5F5F5;
height: 89px;
}
.modal--portal { } .modal--overlay { @apply fixed inset-0 bg-black bg-opacity-80; @apply flex items-center justify-center; z-index: 100000; } .modal--class-name { @apply relative; width: 32%; &:focus { @apply outline-none; } } .modal--close { cursor: pointer; position: absolute; top: 10px; right: 13px; } .modal--header { display: flex; align-items: center; justify-content: center; background-color: #F5F5F5; height: 79px; } .modal--content { background-color: #fff; max-height: 400px; overflow-y: scroll; padding: 24px 15px 93px 15px; } .modal--footer { display: flex; align-items: center; justify-content: center; background-color: #F5F5F5; height: 89px; }
Leave a Reply