1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-30 13:41:57 +02:00
onion/js/components/ascribe_uploader/file_drag_and_drop_preview.js

55 lines
1.7 KiB
JavaScript
Raw Normal View History

2015-06-25 13:28:49 +02:00
'use strict';
2015-06-23 10:16:53 +02:00
import React from 'react';
import FileDragAndDropPreviewImage from './file_drag_and_drop_preview_image';
import FileDragAndDropPreviewOther from './file_drag_and_drop_preview_other';
let FileDragAndDropPreview = React.createClass({
2015-06-25 13:28:49 +02:00
propTypes: {
2015-06-23 10:16:53 +02:00
file: React.PropTypes.shape({
url: React.PropTypes.string,
type: React.PropTypes.string
}).isRequired,
handleDeleteFile: React.PropTypes.func
},
handleDeleteFile(event) {
event.preventDefault();
event.stopPropagation();
// handleDeleteFile is optional, so if its not submitted,
// don't run it
if(this.props.handleDeleteFile) {
this.props.handleDeleteFile(this.props.file.id);
}
},
render() {
let previewElement;
2015-06-25 13:28:49 +02:00
// Decide whether an image or a placeholder picture should be displayed
2015-06-23 10:16:53 +02:00
if(this.props.file.type.split('/')[0] === 'image') {
2015-06-25 13:28:49 +02:00
previewElement = (<FileDragAndDropPreviewImage
2015-06-25 13:46:10 +02:00
onClick={this.handleDeleteFile}
progress={this.props.file.progress}
url={this.props.file.url}/>);
2015-06-23 10:16:53 +02:00
} else {
2015-06-25 13:28:49 +02:00
previewElement = (<FileDragAndDropPreviewOther
2015-06-25 13:46:10 +02:00
onClick={this.handleDeleteFile}
progress={this.props.file.progress}
type={this.props.file.type.split('/')[1]}/>);
2015-06-23 10:16:53 +02:00
}
return (
2015-06-25 13:28:49 +02:00
<div
2015-06-25 13:46:10 +02:00
className="file-drag-and-drop-position">
2015-06-23 10:16:53 +02:00
{previewElement}
</div>
);
}
});
export default FileDragAndDropPreview;