From 3fef7795681c405322aed6e1c876948ebc2cc932 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Thu, 29 Oct 2020 23:53:13 +0300 Subject: refactor: separate ImageCropAreaSelect component --- src/containers/AvatarCropModal/AvatarCropModal.tsx | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/containers/AvatarCropModal/AvatarCropModal.tsx (limited to 'src/containers/AvatarCropModal/AvatarCropModal.tsx') diff --git a/src/containers/AvatarCropModal/AvatarCropModal.tsx b/src/containers/AvatarCropModal/AvatarCropModal.tsx new file mode 100644 index 0000000..a24d2b4 --- /dev/null +++ b/src/containers/AvatarCropModal/AvatarCropModal.tsx @@ -0,0 +1,57 @@ +import React, { useState } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import SendIcon from "@material-ui/icons/Send"; +import { getCroppedImg } from './canvasUtils' + +import ImageCropAreaSelect from '../../components/ImageCropAreaSelect/ImageCropAreaSelect'; +import ModalScreen from '../../components/ModalScreen/ModalScreen'; + +interface Area { + x: number; + y: number; + width?: number; + height?: number; +} + +interface PropTypes { + avatar: string; + callback: (file: File) => void; +} + +const useStyles = makeStyles(theme => ({ + cropContainer: { + position: 'relative', + width: '100%', + height: '100vh', + background: '#333', + [theme.breakpoints.up('sm')]: { + height: 400, + }, + } +})); + +const AvatarCropModal: React.FC = ({ avatar, callback }) => { + const classes = useStyles(); + const [area, setArea] = useState({ x: 0, y: 0 }); + + const handleAction = async () => getCroppedImg(avatar, area) + .then(croppedImage => callback(croppedImage)); + + return ( + } + handleAction={handleAction} + isActionDisabled={false} + > +
+ +
+
+ ) +}; + +export default AvatarCropModal; -- cgit v1.2.3