Skip to content
Snippets Groups Projects
ImageUpload.js 1.23 KiB
Newer Older
chris's avatar
chris committed
/* eslint react/prop-types: 0 */
Yannis Barlas's avatar
Yannis Barlas committed
import React, { useContext, useRef } from 'react';
chris's avatar
chris committed
import { WaxContext } from 'wax-prosemirror-core';
chris's avatar
chris committed
import styled from 'styled-components';
chris's avatar
chris committed

Yannis Barlas's avatar
Yannis Barlas committed
import MenuButton from '../ui/buttons/MenuButton';

chris's avatar
chris committed
const UploadImage = styled.div`
Yannis Barlas's avatar
Yannis Barlas committed
  /* opacity: ${props => (props.select ? 1 : 0.4)};
chris's avatar
chris committed
  pointer-events: ${props => (props.select ? 'default' : 'none')};
chris's avatar
chris committed
  display: inline-flex;
Yannis Barlas's avatar
Yannis Barlas committed
  padding: 0px 10px; */
chris's avatar
chris committed
  input {
    display: none;
  }
`;
Yannis Barlas's avatar
Yannis Barlas committed

// TO DO -- select should be done with MenuButton's disabled prop

chris's avatar
chris committed
const ImageUpload = ({ item, fileUpload, view }) => {
  const { activeViewId } = useContext(WaxContext);
Yannis Barlas's avatar
Yannis Barlas committed

  const inputRef = useRef(null);
  const handleMouseDown = () => inputRef.current.click();
chris's avatar
chris committed
  return (
Yannis Barlas's avatar
Yannis Barlas committed
    <UploadImage>
Yannis Barlas's avatar
Yannis Barlas committed
      <label htmlFor="file-upload">
        <MenuButton
          active={false}
Yannis Barlas's avatar
Yannis Barlas committed
          disabled={!(item.select && item.select(view.state, activeViewId))}
Yannis Barlas's avatar
Yannis Barlas committed
          iconName={item.icon}
          onMouseDown={handleMouseDown}
Yannis Barlas's avatar
Yannis Barlas committed
          title="Upload Image"
        />

chris's avatar
chris committed
        <input
          id="file-upload"
Yannis Barlas's avatar
Yannis Barlas committed
          ref={inputRef}
chris's avatar
chris committed
          onChange={e => fileUpload(e.target.files[0])}
          type="file"
        />
      </label>
    </UploadImage>
  );
};
chris's avatar
chris committed
export default ImageUpload;