sforkowany z mirror/soapbox
Merge branch 'drag_drop' of https://gitlab.com/soapbox-pub/soapbox-fe into drag_drop
commit
8682c870a4
|
@ -1,4 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { connect } from 'react-redux';
|
||||||
import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';
|
import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';
|
||||||
import AutosuggestEmoji from './autosuggest_emoji';
|
import AutosuggestEmoji from './autosuggest_emoji';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
@ -35,9 +36,11 @@ const textAtCursorMatchesToken = (str, caretPosition) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class AutosuggestTextarea extends ImmutablePureComponent {
|
export default @connect()
|
||||||
|
class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
dispatch: PropTypes.func.isRequired,
|
||||||
value: PropTypes.string,
|
value: PropTypes.string,
|
||||||
suggestions: ImmutablePropTypes.list,
|
suggestions: ImmutablePropTypes.list,
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
|
@ -52,7 +55,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
autoFocus: PropTypes.bool,
|
autoFocus: PropTypes.bool,
|
||||||
onFocus: PropTypes.func,
|
onFocus: PropTypes.func,
|
||||||
onBlur: PropTypes.func,
|
onBlur: PropTypes.func,
|
||||||
onAttachment: PropTypes.func,
|
// onAttachment: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
|
@ -69,19 +72,19 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
window.addEventListener('dragenter', this.handleDragEnter, false);
|
this.node.addEventListener('dragenter', this.handleDragEnter, false);
|
||||||
window.addEventListener('dragover', this.handleDragOver, false);
|
this.node.addEventListener('dragover', this.handleDragOver, false);
|
||||||
window.addEventListener('drop', this.handleDrop, false);
|
this.node.addEventListener('drop', this.handleDrop, false);
|
||||||
window.addEventListener('dragleave', this.handleDragLeave, false);
|
this.node.addEventListener('dragleave', this.handleDragLeave, false);
|
||||||
window.addEventListener('dragend', this.handleDragEnd, false);
|
this.node.addEventListener('dragend', this.handleDragEnd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
window.removeEventListener('dragenter', this.handleDragEnter);
|
this.node.removeEventListener('dragenter', this.handleDragEnter);
|
||||||
window.removeEventListener('dragover', this.handleDragOver);
|
this.node.removeEventListener('dragover', this.handleDragOver);
|
||||||
window.removeEventListener('drop', this.handleDrop);
|
this.node.removeEventListener('drop', this.handleDrop);
|
||||||
window.removeEventListener('dragleave', this.handleDragLeave);
|
this.node.removeEventListener('dragleave', this.handleDragLeave);
|
||||||
window.removeEventListener('dragend', this.handleDragEnd);
|
this.node.removeEventListener('dragend', this.handleDragEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
onChange = (e) => {
|
onChange = (e) => {
|
||||||
|
@ -194,10 +197,6 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
this.node = c;
|
this.node = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleAttachment = () => {
|
|
||||||
const { onAttachment } = this.props;
|
|
||||||
onAttachment(true);
|
|
||||||
}
|
|
||||||
dataTransferIsText = (dataTransfer) => {
|
dataTransferIsText = (dataTransfer) => {
|
||||||
return (dataTransfer && Array.from(dataTransfer.types).includes('text/plain') && dataTransfer.items.length === 1);
|
return (dataTransfer && Array.from(dataTransfer.types).includes('text/plain') && dataTransfer.items.length === 1);
|
||||||
}
|
}
|
||||||
|
@ -232,10 +231,10 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleAttachment = () => {
|
// handleAttachment = () => {
|
||||||
const { onAttachment } = this.props;
|
// const { onAttachment } = this.props;
|
||||||
onAttachment(true);
|
// onAttachment(true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
handleFiles = (files) => {
|
handleFiles = (files) => {
|
||||||
const { dispatch } = this.props;
|
const { dispatch } = this.props;
|
||||||
|
@ -245,7 +244,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
const data = new FormData();
|
const data = new FormData();
|
||||||
data.append('file', files[0]);
|
data.append('file', files[0]);
|
||||||
dispatch(uploadCompose(data));
|
dispatch(uploadCompose(data));
|
||||||
dispatch(this.handleAttachment());
|
// dispatch(this.handleAttachment());
|
||||||
// dispatch(uploadMedia(data, this.onUploadProgress)).then(response => {
|
// dispatch(uploadMedia(data, this.onUploadProgress)).then(response => {
|
||||||
// this.setState({ attachment: response.data, isUploading: false });
|
// this.setState({ attachment: response.data, isUploading: false });
|
||||||
// this.handleAttachment();
|
// this.handleAttachment();
|
||||||
|
@ -255,9 +254,6 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleDrop = (e) => {
|
handleDrop = (e) => {
|
||||||
const { me } = this.props;
|
|
||||||
if (!me) return;
|
|
||||||
|
|
||||||
if (this.dataTransferIsText(e.dataTransfer)) return;
|
if (this.dataTransferIsText(e.dataTransfer)) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
@ -320,6 +316,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
|
||||||
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;
|
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;
|
||||||
const { draggingOver, suggestionsHidden } = this.state;
|
const { draggingOver, suggestionsHidden } = this.state;
|
||||||
const style = { direction: 'ltr' };
|
const style = { direction: 'ltr' };
|
||||||
|
const { draggingOver } = this.state;
|
||||||
|
|
||||||
if (isRtl(value)) {
|
if (isRtl(value)) {
|
||||||
style.direction = 'rtl';
|
style.direction = 'rtl';
|
||||||
|
|
|
@ -57,19 +57,19 @@ class ChatBox extends ImmutablePureComponent {
|
||||||
state = this.initialState()
|
state = this.initialState()
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
window.addEventListener('dragenter', this.handleDragEnter, false);
|
this.node.addEventListener('dragenter', this.handleDragEnter, false);
|
||||||
window.addEventListener('dragover', this.handleDragOver, false);
|
this.node.addEventListener('dragover', this.handleDragOver, false);
|
||||||
window.addEventListener('drop', this.handleDrop, false);
|
this.node.addEventListener('drop', this.handleDrop, false);
|
||||||
window.addEventListener('dragleave', this.handleDragLeave, false);
|
this.node.addEventListener('dragleave', this.handleDragLeave, false);
|
||||||
window.addEventListener('dragend', this.handleDragEnd, false);
|
this.node.addEventListener('dragend', this.handleDragEnd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
window.removeEventListener('dragenter', this.handleDragEnter);
|
this.node.removeEventListener('dragenter', this.handleDragEnter);
|
||||||
window.removeEventListener('dragover', this.handleDragOver);
|
this.node.removeEventListener('dragover', this.handleDragOver);
|
||||||
window.removeEventListener('drop', this.handleDrop);
|
this.node.removeEventListener('drop', this.handleDrop);
|
||||||
window.removeEventListener('dragleave', this.handleDragLeave);
|
this.node.removeEventListener('dragleave', this.handleDragLeave);
|
||||||
window.removeEventListener('dragend', this.handleDragEnd);
|
this.node.removeEventListener('dragend', this.handleDragEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
clearState = () => {
|
clearState = () => {
|
||||||
|
@ -261,8 +261,8 @@ class ChatBox extends ImmutablePureComponent {
|
||||||
<div className='chat-box__filename'>
|
<div className='chat-box__filename'>
|
||||||
{truncateFilename(attachment.preview_url, 20)}
|
{truncateFilename(attachment.preview_url, 20)}
|
||||||
</div>
|
</div>
|
||||||
<div class='chat-box__remove-attachment'>
|
<div className='chat-box__remove-attachment'>
|
||||||
<IconButton icon='remove' onClick={this.handleRemoveFile} />
|
<IconButton icon='remove' title='remove' onClick={this.handleRemoveFile} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -273,7 +273,7 @@ class ChatBox extends ImmutablePureComponent {
|
||||||
|
|
||||||
return this.canSubmit() ? (
|
return this.canSubmit() ? (
|
||||||
<div className='chat-box__send'>
|
<div className='chat-box__send'>
|
||||||
<IconButton icon='send' size={16} onClick={this.sendMessage} />
|
<IconButton icon='send' size={16} title='send' onClick={this.sendMessage} />
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<UploadButton onSelectFile={this.handleFiles} resetFileKey={resetFileKey} />
|
<UploadButton onSelectFile={this.handleFiles} resetFileKey={resetFileKey} />
|
||||||
|
|
Ładowanie…
Reference in New Issue