reactjsreact-dropzone

Is it possible to implement a fullscreen react-dropzone on top of everything whille being able to click elements under it?


Not sure if this is possible. Having a hard time understanding how bubbling works.


Solution

  • Yes, it's possible.

    Adjust the height and size of the field using CSS, for example, set the height and width to 100% of dropzone container:

    Dropzone

    import React, { Fragment } from "react";
    import DropZone from "react-dropzone";
    import { MdCloudUpload } from "react-icons/md";
    import RenderImagePreview from "./renderImagePreview";
    
    export default ({
      handleOnDrop,
      input,
      imagefile,
      meta: { error, touched }
    }) => (
      <div>
        <DropZone
          accept="image/jpeg, image/png, image/gif, image/bmp"
          className="upload-container"
          onDrop={handleOnDrop}
          onChange={file => input.onChange(file)}
        >
          <div className="dropzone-container">
            <div className="dropzone-area">
              {imagefile && imagefile.length > 0 ? (
                <RenderImagePreview imagefile={imagefile} />
              ) : (
                <Fragment>
                  <MdCloudUpload style={{ fontSize: 100, marginBottom: 0 }} />
                  <p>Click or drag image file to this area to upload.</p>
                </Fragment>
              )}
            </div>
          </div>
        </DropZone>
        {touched && error && <div style={{ color: "red" }}>{error}</div>}
      </div>
    );
    

    styles

    .dropzone-container {
      text-align: center;
      background-color: #efebeb;
      height: 100%;
      width: 100%;
    }
    
    .dropzone-area {
      margin: 0;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    
    .upload-container {
      height: 100vh;
      width: 100%;
      margin-bottom: 10px;
    }
    
    ul {
      list-style-type: none;
    }
    
    p {
      margin-top: 0;
    }