-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Modal.js
67 lines (59 loc) · 1.29 KB
/
Modal.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import Button from '../Button';
const Wrapper = styled.div`
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(50, 50, 50, 0.8);
z-index: 1000;
`;
const Content = styled.div`
padding: 48px 64px;
text-align: center;
border-radius: 8px;
background-color: white;
@media only screen and (max-width: 768px) {
width: 90%;
padding: 32px;
}
`;
const ButtonsWrapper = styled.div`
display: flex;
justify-content: center;
margin-top: 40px;
button {
margin: 0 16px;
}
`;
const Modal = ({ children, handler, show, close }) =>
show ? (
<Wrapper>
<Content>
{children}
<ButtonsWrapper>
<Button color="gray" onClick={close}>
{handler ? 'No' : 'Close'}
</Button>
{handler && <Button onClick={handler}>Yes</Button>}
</ButtonsWrapper>
</Content>
</Wrapper>
) : null;
Modal.propTypes = {
children: PropTypes.node.isRequired,
close: PropTypes.func.isRequired,
handler: PropTypes.func,
show: PropTypes.bool,
};
Modal.defaultProps = {
show: false,
handler: null,
};
export default Modal;