diff --git a/app/assets/javascripts/components/features/ui/components/upload_area.jsx b/app/assets/javascripts/components/features/ui/components/upload_area.jsx
index 38c2ad904..3a933398b 100644
--- a/app/assets/javascripts/components/features/ui/components/upload_area.jsx
+++ b/app/assets/javascripts/components/features/ui/components/upload_area.jsx
@@ -4,6 +4,34 @@ import { FormattedMessage } from 'react-intl';
class UploadArea extends React.PureComponent {
+ constructor (props, context) {
+ super(props, context);
+
+ this.handleKeyUp = this.handleKeyUp.bind(this);
+ }
+
+ handleKeyUp (e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ const keyCode = e.keyCode
+ if (this.props.active) {
+ switch(keyCode) {
+ case 27:
+ this.props.onClose();
+ break;
+ }
+ }
+ }
+
+ componentDidMount () {
+ window.addEventListener('keyup', this.handleKeyUp, false);
+ }
+
+ componentWillUnmount () {
+ window.removeEventListener('keyup', this.handleKeyUp);
+ }
+
render () {
const { active } = this.props;
@@ -24,7 +52,8 @@ class UploadArea extends React.PureComponent {
}
UploadArea.propTypes = {
- active: PropTypes.bool
+ active: PropTypes.bool,
+ onClose: PropTypes.func
};
export default UploadArea;
diff --git a/app/assets/javascripts/components/features/ui/index.jsx b/app/assets/javascripts/components/features/ui/index.jsx
index c92b9751b..b402639ce 100644
--- a/app/assets/javascripts/components/features/ui/index.jsx
+++ b/app/assets/javascripts/components/features/ui/index.jsx
@@ -28,6 +28,8 @@ class UI extends React.PureComponent {
this.handleDragOver = this.handleDragOver.bind(this);
this.handleDrop = this.handleDrop.bind(this);
this.handleDragLeave = this.handleDragLeave.bind(this);
+ this.handleDragEnd = this.handleDragLeave.bind(this)
+ this.closeUploadModal = this.closeUploadModal.bind(this)
this.setRef = this.setRef.bind(this);
}
@@ -47,7 +49,7 @@ class UI extends React.PureComponent {
this.dragTargets.push(e.target);
}
- if (e.dataTransfer && e.dataTransfer.items.length > 0) {
+ if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {
this.setState({ draggingOver: true });
}
}
@@ -88,12 +90,17 @@ class UI extends React.PureComponent {
this.setState({ draggingOver: false });
}
+ closeUploadModal() {
+ this.setState({ draggingOver: false });
+ }
+
componentWillMount () {
window.addEventListener('resize', this.handleResize, { passive: true });
document.addEventListener('dragenter', this.handleDragEnter, false);
document.addEventListener('dragover', this.handleDragOver, false);
document.addEventListener('drop', this.handleDrop, false);
document.addEventListener('dragleave', this.handleDragLeave, false);
+ document.addEventListener('dragend', this.handleDragEnd, false);
this.props.dispatch(refreshTimeline('home'));
this.props.dispatch(refreshNotifications());
@@ -105,6 +112,7 @@ class UI extends React.PureComponent {
document.removeEventListener('dragover', this.handleDragOver);
document.removeEventListener('drop', this.handleDrop);
document.removeEventListener('dragleave', this.handleDragLeave);
+ document.removeEventListener('dragend', this.handleDragEnd);
}
setRef (c) {
@@ -143,7 +151,7 @@ class UI extends React.PureComponent {
-
+
);
}