M app/javascript/mastodon/components/autosuggest_textarea.js => app/javascript/mastodon/components/autosuggest_textarea.js +4 -1
@@ 138,8 138,11 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
this.setState({ suggestionsHidden: true, focused: false });
}
- onFocus = () => {
+ onFocus = (e) => {
this.setState({ focused: true });
+ if (this.props.onFocus) {
+ this.props.onFocus(e);
+ }
}
onSuggestionClick = (e) => {
M app/javascript/mastodon/features/compose/components/compose_form.js => app/javascript/mastodon/features/compose/components/compose_form.js +10 -1
@@ 33,6 33,10 @@ const messages = defineMessages({
export default @injectIntl
class ComposeForm extends ImmutablePureComponent {
+ setRef = c => {
+ this.composeForm = c;
+ };
+
static contextTypes = {
router: PropTypes.object,
};
@@ 114,6 118,10 @@ class ComposeForm extends ImmutablePureComponent {
this.props.onChangeSpoilerText(e.target.value);
}
+ handleFocus = () => {
+ this.composeForm.scrollIntoView();
+ }
+
componentDidUpdate (prevProps) {
// This statement does several things:
// - If we're beginning a reply, and,
@@ 177,7 185,7 @@ class ComposeForm extends ImmutablePureComponent {
}
return (
- <div className='compose-form'>
+ <div className='compose-form' ref={this.setRef}>
<WarningContainer />
<ReplyIndicatorContainer />
@@ 211,6 219,7 @@ class ComposeForm extends ImmutablePureComponent {
value={this.props.text}
onChange={this.handleChange}
suggestions={this.props.suggestions}
+ onFocus={this.handleFocus}
onKeyDown={this.handleKeyDown}
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
onSuggestionsClearRequested={this.onSuggestionsClearRequested}