diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-08-18 20:53:46 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2018-08-19 16:56:31 +0200 |
commit | 432f6b88b040d909a8109532cd3052fda19c5c44 (patch) | |
tree | 3ac4d4de5054bcc5485daddf821069555a768be1 /app/javascript/flavours | |
parent | 484b9314e351fcab9e25b04c0024598433d2d688 (diff) |
Focus CW field when enabling it, focus compose textarea when disabling it
Port a99179d31ff0013987f362ffe15cb3450b29ed08 and 09147186b79f80cf3ef3aa8ba7e6e5e032faa255 to glitch-soc
Diffstat (limited to 'app/javascript/flavours')
-rw-r--r-- | app/javascript/flavours/glitch/features/composer/index.js | 21 | ||||
-rw-r--r-- | app/javascript/flavours/glitch/features/composer/spoiler/index.js | 7 |
2 files changed, 27 insertions, 1 deletions
diff --git a/app/javascript/flavours/glitch/features/composer/index.js b/app/javascript/flavours/glitch/features/composer/index.js index e77d429be..f312e9d59 100644 --- a/app/javascript/flavours/glitch/features/composer/index.js +++ b/app/javascript/flavours/glitch/features/composer/index.js @@ -237,6 +237,13 @@ const handlers = { this.textarea = textareaComponent.textarea; } }, + + // Sets a reference to the CW field. + handleRefSpoilerText (spoilerComponent) { + if (spoilerComponent) { + this.spoilerText = spoilerComponent.spoilerText; + } + } }; // The component. @@ -249,6 +256,7 @@ class Composer extends React.Component { // Instance variables. this.textarea = null; + this.spoilerText = null; } // Tells our state the composer has been mounted. @@ -277,6 +285,7 @@ class Composer extends React.Component { componentDidUpdate (prevProps) { const { textarea, + spoilerText, } = this; const { focusDate, @@ -308,6 +317,16 @@ class Composer extends React.Component { // Refocuses the textarea after submitting. } else if (textarea && prevProps.isSubmitting && !isSubmitting) { textarea.focus(); + } else if (this.props.spoiler !== prevProps.spoiler) { + if (this.props.spoiler) { + if (spoilerText) { + spoilerText.focus(); + } + } else { + if (textarea) { + textarea.focus(); + } + } } } @@ -319,6 +338,7 @@ class Composer extends React.Component { handleSelect, handleSubmit, handleRefTextarea, + handleRefSpoilerText, } = this.handlers; const { acceptContentTypes, @@ -378,6 +398,7 @@ class Composer extends React.Component { onChange={handleChangeSpoiler} onSubmit={handleSubmit} text={spoilerText} + ref={handleRefSpoilerText} /> <ComposerTextarea advancedOptions={advancedOptions} diff --git a/app/javascript/flavours/glitch/features/composer/spoiler/index.js b/app/javascript/flavours/glitch/features/composer/spoiler/index.js index d0e74b957..a7fecbcf5 100644 --- a/app/javascript/flavours/glitch/features/composer/spoiler/index.js +++ b/app/javascript/flavours/glitch/features/composer/spoiler/index.js @@ -33,6 +33,10 @@ const handlers = { onSubmit(); } }, + + handleRefSpoilerText (spoilerText) { + this.spoilerText = spoilerText; + }, }; // The component. @@ -46,7 +50,7 @@ export default class ComposerSpoiler extends React.PureComponent { // Rendering. render () { - const { handleKeyDown } = this.handlers; + const { handleKeyDown, handleRefSpoilerText } = this.handlers; const { hidden, intl, @@ -68,6 +72,7 @@ export default class ComposerSpoiler extends React.PureComponent { placeholder={intl.formatMessage(messages.placeholder)} type='text' value={text} + ref={handleRefSpoilerText} /> </label> </div> |