Focus CW field when enabling it, focus compose textarea when disabling it

Port a99179d31f and 09147186b7
to glitch-soc
This commit is contained in:
Thibaut Girka
2018-08-18 20:53:46 +02:00
committed by ThibG
parent 484b9314e3
commit 432f6b88b0
2 changed files with 27 additions and 1 deletions

View File

@@ -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}