Focus CW field when enabling it, focus compose textarea when disabling it
Porta99179d31f
and09147186b7
to glitch-soc
This commit is contained in:
parent
484b9314e3
commit
432f6b88b0
@ -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}
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user