1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 12:56:41 +07:00

added dropzones for comments and node editors

This commit is contained in:
Fedor Katurov 2021-10-05 11:31:21 +07:00
parent fb8ad315c0
commit f10a1fa2d8
23 changed files with 247 additions and 41 deletions

View file

@ -12,12 +12,13 @@ import { useNodeImages } from '~/utils/hooks/node/useNodeImages';
import { useNodeAudios } from '~/utils/hooks/node/useNodeAudios';
import { useNodeFormContext } from '~/utils/hooks/useNodeFormFormik';
import { useFileUploaderContext } from '~/utils/hooks/useFileUploader';
import { UploadDropzone } from '~/components/upload/UploadDropzone';
type IProps = NodeEditorProps;
const AudioEditor: FC<IProps> = () => {
const { values } = useNodeFormContext();
const { pending, setFiles } = useFileUploaderContext()!;
const { pending, setFiles, uploadFiles } = useFileUploaderContext()!;
const images = useNodeImages(values);
const audios = useNodeAudios(values);
@ -35,10 +36,12 @@ const AudioEditor: FC<IProps> = () => {
const setAudios = useCallback(values => setFiles([...values, ...images]), [setFiles, images]);
return (
<div className={styles.wrap}>
<ImageGrid files={images} setFiles={setImages} locked={pendingImages} />
<AudioGrid files={audios} setFiles={setAudios} locked={pendingAudios} />
</div>
<UploadDropzone onUpload={uploadFiles} helperClassName={styles.dropzone}>
<div className={styles.wrap}>
<ImageGrid files={images} setFiles={setImages} locked={pendingImages} />
<AudioGrid files={audios} setFiles={setAudios} locked={pendingAudios} />
</div>
</UploadDropzone>
);
};

View file

@ -11,9 +11,13 @@
z-index: 10;
display: flex;
flex-direction: row;
pointer-events: none;
touch-action: none;
& > * {
margin: 0 $gap / 2;
pointer-events: all;
touch-action: auto;
&:first-child {
margin-left: 0;

View file

@ -1,9 +1,10 @@
import React, { FC } from 'react';
import { Filler } from '~/components/containers/Filler';
import { IEditorComponentProps } from '~/redux/node/types';
import styles from './styles.module.scss';
type IProps = IEditorComponentProps & {};
const EditorFiller: FC<IProps> = () => <Filler />;
const EditorFiller: FC<IProps> = () => <Filler className={styles.filler} />;
export { EditorFiller };

View file

@ -0,0 +1,4 @@
.filler {
touch-action: none;
pointer-events: none;
}

View file

@ -1,22 +1,21 @@
import React, { FC, useMemo, useCallback } from 'react';
import { connect } from 'react-redux';
import { INode, IFile } from '~/redux/types';
import * as UPLOAD_ACTIONS from '~/redux/uploads/actions';
import { selectUploads } from '~/redux/uploads/selectors';
import React, { FC } from 'react';
import { ImageGrid } from '~/components/editors/ImageGrid';
import styles from './styles.module.scss';
import { NodeEditorProps } from '~/redux/node/types';
import { useFileUploaderContext } from '~/utils/hooks/useFileUploader';
import { UploadDropzone } from '~/components/upload/UploadDropzone';
type IProps = NodeEditorProps;
const ImageEditor: FC<IProps> = () => {
const { pending, files, setFiles } = useFileUploaderContext()!;
const { pending, files, setFiles, uploadFiles } = useFileUploaderContext()!;
return (
<div className={styles.wrap}>
<ImageGrid files={files} setFiles={setFiles} locked={pending} />
</div>
<UploadDropzone onUpload={uploadFiles} helperClassName={styles.dropzone}>
<div className={styles.wrap}>
<ImageGrid files={files} setFiles={setFiles} locked={pending} />
</div>
</UploadDropzone>
);
};

View file

@ -1,6 +1,9 @@
@import "src/styles/variables";
@import 'src/styles/variables';
.wrap {
min-height: 200px;
padding-bottom: $upload_button_height + $gap;
}
div.dropzone {
}