Merge branch 'collection-ops' into file-loading-single-update
This commit is contained in:
commit
42aca0ca00
|
@ -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}
|
||||||
|
|
|
@ -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>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
64
src/pages/gallery/components/DropzoneWrapper.tsx
Normal file
64
src/pages/gallery/components/DropzoneWrapper.tsx
Normal 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;
|
Loading…
Reference in a new issue