-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMediaModal.tsx
36 lines (31 loc) · 1023 Bytes
/
MediaModal.tsx
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
import React from 'react';
import { CloseButton } from '@chakra-ui/close-button';
import { AspectRatio, Box } from '@chakra-ui/layout';
import { Modal, ModalContent, ModalOverlay } from '@chakra-ui/modal';
import Img from 'gatsby-image';
interface Props {
isOpen: boolean;
onClose: () => void;
media: GatsbyTypes.GatsbyContentfulFluidFragment | string;
}
function MediaModal({ isOpen, onClose, media }: Props): JSX.Element {
let mediaComponent = <Box />;
if (typeof media === 'string') {
mediaComponent = (
<AspectRatio>
<iframe title="Resource media" src={media} allowFullScreen />
</AspectRatio>
);
} else {
mediaComponent = <Img fluid={media} />;
}
return (
<Modal isOpen={isOpen} onClose={onClose} isCentered={true} size="xl">
<ModalOverlay>
<CloseButton pos="absolute" top="3" right="3" size="lg" color="white"></CloseButton>
</ModalOverlay>
<ModalContent>{mediaComponent}</ModalContent>
</Modal>
);
}
export default MediaModal;