parent
8fd599fb40
commit
f1a22e33e2
@ -1,107 +0,0 @@ |
||||
// Package imports.
|
||||
import React from 'react'; |
||||
import PropTypes from 'prop-types'; |
||||
import { defineMessages, FormattedMessage } from 'react-intl'; |
||||
|
||||
// Utils.
|
||||
import { |
||||
assignHandlers, |
||||
hiddenComponent, |
||||
} from 'flavours/glitch/util/react_helpers'; |
||||
|
||||
// Messages.
|
||||
const messages = defineMessages({ |
||||
placeholder: { |
||||
defaultMessage: 'Write your warning here', |
||||
id: 'compose_form.spoiler_placeholder', |
||||
}, |
||||
}); |
||||
|
||||
// Handlers.
|
||||
const handlers = { |
||||
|
||||
// Handles a keypress.
|
||||
handleKeyDown ({ |
||||
ctrlKey, |
||||
keyCode, |
||||
metaKey, |
||||
altKey, |
||||
}) { |
||||
const { onSubmit, onSecondarySubmit } = this.props; |
||||
|
||||
// We submit the status on control/meta + enter.
|
||||
if (onSubmit && keyCode === 13 && (ctrlKey || metaKey)) { |
||||
onSubmit(); |
||||
} |
||||
|
||||
// Submit the status with secondary visibility on alt + enter.
|
||||
if (onSecondarySubmit && keyCode === 13 && altKey) { |
||||
onSecondarySubmit(); |
||||
} |
||||
}, |
||||
|
||||
handleRefSpoilerText (spoilerText) { |
||||
this.spoilerText = spoilerText; |
||||
}, |
||||
|
||||
// When the escape key is released, we focus the UI.
|
||||
handleKeyUp ({ key }) { |
||||
if (key === 'Escape') { |
||||
document.querySelector('.ui').parentElement.focus(); |
||||
} |
||||
}, |
||||
}; |
||||
|
||||
// The component.
|
||||
export default class ComposerSpoiler extends React.PureComponent { |
||||
|
||||
// Constructor.
|
||||
constructor (props) { |
||||
super(props); |
||||
assignHandlers(this, handlers); |
||||
} |
||||
|
||||
// Rendering.
|
||||
render () { |
||||
const { handleKeyDown, handleKeyUp, handleRefSpoilerText } = this.handlers; |
||||
const { |
||||
hidden, |
||||
intl, |
||||
onChange, |
||||
text, |
||||
} = this.props; |
||||
|
||||
// The result.
|
||||
return ( |
||||
<div className={`composer--spoiler ${hidden ? '' : 'composer--spoiler--visible'}`}> |
||||
<label> |
||||
<span {...hiddenComponent}> |
||||
<FormattedMessage {...messages.placeholder} /> |
||||
</span> |
||||
<input |
||||
id='glitch.composer.spoiler.input' |
||||
onChange={onChange} |
||||
onKeyDown={handleKeyDown} |
||||
onKeyUp={handleKeyUp} |
||||
placeholder={intl.formatMessage(messages.placeholder)} |
||||
type='text' |
||||
value={text} |
||||
ref={handleRefSpoilerText} |
||||
disabled={hidden} |
||||
/> |
||||
</label> |
||||
</div> |
||||
); |
||||
} |
||||
|
||||
} |
||||
|
||||
// Props.
|
||||
ComposerSpoiler.propTypes = { |
||||
hidden: PropTypes.bool, |
||||
intl: PropTypes.object.isRequired, |
||||
onChange: PropTypes.func, |
||||
onSubmit: PropTypes.func, |
||||
onSecondarySubmit: PropTypes.func, |
||||
text: PropTypes.string, |
||||
}; |
Loading…
Reference in new issue