diff options
author | Jeong Arm <kjwonmail@gmail.com> | 2019-06-05 22:29:45 +0900 |
---|---|---|
committer | multiple creatures <dev@multiple-creature.party> | 2019-11-19 16:39:22 -0600 |
commit | 924e5357795067bf6eb78f9ed3f4615ffaa1f5d4 (patch) | |
tree | 2927c77f0c9c2eb16b6525cfec9e85ec588640d2 | |
parent | b2f3fd782ba1b67f424168246a1d7338313c4caa (diff) |
[Glitch] Scroll to compose form when focus
Port 8f3c32e29cf13a84b2f0a58da0ab0c99a88caad5 to glitch-soc Signed-off-by: Thibaut Girka <thib@sitedethib.com>
-rw-r--r-- | app/javascript/flavours/glitch/components/autosuggest_textarea.js | 5 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/features/compose/components/compose_form.js | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/app/javascript/flavours/glitch/components/autosuggest_textarea.js b/app/javascript/flavours/glitch/components/autosuggest_textarea.js index e1ded2b3a..cf3907fbf 100644 --- a/app/javascript/flavours/glitch/components/autosuggest_textarea.js +++ b/app/javascript/flavours/glitch/components/autosuggest_textarea.js @@ -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) => { diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js index 8982899f9..133f483ab 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js @@ -33,6 +33,10 @@ const messages = defineMessages({ export default @injectIntl class ComposeForm extends ImmutablePureComponent { + setRef = c => { + this.composeForm = c; + }; + static contextTypes = { router: PropTypes.object, }; @@ -220,6 +224,10 @@ class ComposeForm extends ImmutablePureComponent { } } + handleFocus = () => { + this.composeForm.scrollIntoView(); + } + // This statement does several things: // - If we're beginning a reply, and, // - Replying to zero or one users, places the cursor at the end @@ -317,7 +325,7 @@ class ComposeForm extends ImmutablePureComponent { let nickname = (this.props.account !== undefined) ? this.props.account.get('identity') : ''; return ( - <div className='composer'> + <div className='composer' ref={this.setRef}> <WarningContainer /> <ReplyIndicatorContainer /> @@ -352,6 +360,7 @@ class ComposeForm extends ImmutablePureComponent { value={this.props.text} onChange={this.handleChange} suggestions={this.props.suggestions} + onFocus={this.handleFocus} onKeyDown={this.handleKeyDown} onSuggestionsFetchRequested={onFetchSuggestions} onSuggestionsClearRequested={onClearSuggestions} |