Merge branch 'collection-ops' into file-loading-single-update

This commit is contained in:
Abhinav-grd 2021-02-03 13:45:47 +05:30
commit 42aca0ca00
3 changed files with 79 additions and 85 deletions

View file

@ -1,9 +1,8 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Card } from "react-bootstrap"; import { Card } from "react-bootstrap";
import Dropzone from "react-dropzone";
import styled from "styled-components"; import styled from "styled-components";
import { DropDiv } from "./CollectionDropZone";
import CreateCollection from "./CreateCollection"; import CreateCollection from "./CreateCollection";
import DropzoneWrapper from "./DropzoneWrapper";
const ImageContainer = styled.div` const ImageContainer = styled.div`
min-height: 192px; min-height: 192px;
@ -24,46 +23,26 @@ export default function AddCollection(props) {
const [acceptedFiles, setAcceptedFiles] = useState<File[]>(); const [acceptedFiles, setAcceptedFiles] = useState<File[]>();
const [createCollectionView, setCreateCollectionView] = useState(false); const [createCollectionView, setCreateCollectionView] = useState(false);
const { children, closeUploadModal, showUploadModal, ...rest } = props; const { closeUploadModal, showUploadModal, ...rest } = props;
const createCollection = (acceptedFiles) => { const createCollection = (acceptedFiles) => {
setAcceptedFiles(acceptedFiles); setAcceptedFiles(acceptedFiles);
setCreateCollectionView(true); setCreateCollectionView(true);
}; };
const children = (
return (
<>
<Dropzone
onDropAccepted={createCollection}
onDropRejected={closeUploadModal}
onDragOver={showUploadModal}
noDragEventsBubbling
accept="image/*, video/*"
>
{({
getRootProps,
getInputProps,
isDragActive,
isDragAccept,
isDragReject,
}) => {
return (
<DropDiv
{...getRootProps({
isDragActive,
isDragAccept,
isDragReject,
})}
>
<input {...getInputProps()} />
<StyledCard> <StyledCard>
<ImageContainer>+</ImageContainer> <ImageContainer>+</ImageContainer>
<Card.Text style={{ textAlign: "center" }}>Create New Album</Card.Text> <Card.Text style={{ textAlign: "center" }}>Create New Album</Card.Text>
</StyledCard> </StyledCard>
</DropDiv>
); );
}} return (
</Dropzone> <>
<DropzoneWrapper
onDropAccepted={createCollection}
onDropRejected={closeUploadModal}
onDragOver={showUploadModal}
children={children}
/>
<CreateCollection <CreateCollection
{...rest} {...rest}
modalView={createCollectionView} modalView={createCollectionView}

View file

@ -1,35 +1,8 @@
import React from 'react'; import React from 'react';
import Dropzone from 'react-dropzone';
import styled from 'styled-components';
import UploadService from 'services/uploadService'; import UploadService from 'services/uploadService';
import { getToken } from 'utils/common/key'; import { getToken } from 'utils/common/key';
import DropzoneWrapper from './DropzoneWrapper';
export const getColor = (props) => {
if (props.isDragAccept) {
return '#00e676';
}
if (props.isDragReject) {
return '#ff1744';
}
if (props.isDragActive) {
return '#2196f3';
}
};
export const enableBorder = (props) => (props.isDragActive ? 'dashed' : 'none');
export const DropDiv = styled.div`
width:200px;
margin:5px;
height:230px;
color:black;
border-width: 2px;
border-radius: 2px;
border-color: ${(props) => getColor(props)};
border-style: ${(props) => enableBorder(props)};
outline: none;
transition: border 0.24s ease-in-out;
`;
function CollectionDropZone({ function CollectionDropZone({
children, children,
@ -53,34 +26,12 @@ function CollectionDropZone({
setProgressView(false); setProgressView(false);
} }
return ( return (
<Dropzone <DropzoneWrapper
children={children}
onDropAccepted={upload} onDropAccepted={upload}
onDragOver={showModal} onDragOver={showModal}
onDropRejected={closeModal} onDropRejected={closeModal}
noDragEventsBubbling />
accept="image/*, video/*, application/json, "
>
{({
getRootProps,
getInputProps,
isDragActive,
isDragAccept,
isDragReject,
}) => {
return (
<DropDiv
{...getRootProps({
isDragActive,
isDragAccept,
isDragReject,
})}
>
<input {...getInputProps()} />
{children}
</DropDiv>
);
}}
</Dropzone>
); );
}; };

View file

@ -0,0 +1,64 @@
import React from 'react';
import Dropzone from 'react-dropzone';
import styled from 'styled-components';
export const getColor = (props) => {
if (props.isDragAccept) {
return '#00e676';
}
if (props.isDragReject) {
return '#ff1744';
}
if (props.isDragActive) {
return '#2196f3';
}
};
export const enableBorder = (props) => (props.isDragActive ? 'dashed' : 'none');
export const DropDiv = styled.div`
width:200px;
margin:5px;
height:230px;
color:black;
border-width: 2px;
border-radius: 2px;
border-color: ${(props) => getColor(props)};
border-style: ${(props) => enableBorder(props)};
outline: none;
transition: border 0.24s ease-in-out;
`;
export function DropzoneWrapper(props) {
const { children, ...callbackProps } = props
return (
<Dropzone
noDragEventsBubbling
accept="image/*, video/*, application/json, "
{...callbackProps}
>
{({
getRootProps,
getInputProps,
isDragActive,
isDragAccept,
isDragReject,
}) => {
return (
<DropDiv
{...getRootProps({
isDragActive,
isDragAccept,
isDragReject,
})}
>
<input {...getInputProps()} />
{children}
</DropDiv>
);
}}
</Dropzone>
);
};
export default DropzoneWrapper;