diff --git a/src/components/Widgets/ImageControl.js b/src/components/Widgets/ImageControl.js index 40e1ffe9..19f1b051 100644 --- a/src/components/Widgets/ImageControl.js +++ b/src/components/Widgets/ImageControl.js @@ -4,13 +4,70 @@ export default class ImageControl extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); + this.handleFileInputRef = this.handleFileInputRef.bind(this); + this.handleClick = this.handleClick.bind(this); + this.handleDragEnter = this.handleDragEnter.bind(this); + this.handleDragOver = this.handleDragOver.bind(this); + } + + handleFileInputRef(el) { + this._fileInput = el; + } + + handleClick(e) { + this._fileInput.click(); + } + + handleDragEnter(e) { + e.stopPropagation(); + e.preventDefault(); + } + + handleDragOver(e) { + e.stopPropagation(); + e.preventDefault(); } handleChange(e) { - this.props.onChange(e.target.value); + e.stopPropagation(); + e.preventDefault(); + const fileList = e.dataTransfer ? e.dataTransfer.files : e.target.files; + const files = [...fileList]; + const imageType = /^image\//; + + // Iterate to list of files and return the first image on the list + const file = files.find((currentFile) => { + if (imageType.test(currentFile.type)) { + return currentFile; + } + }); + + this.props.onChange(file); } render() { - return ; + return ( +