// 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 (
); } } // Props. ComposerSpoiler.propTypes = { hidden: PropTypes.bool, intl: PropTypes.object.isRequired, onChange: PropTypes.func, onSubmit: PropTypes.func, onSecondarySubmit: PropTypes.func, text: PropTypes.string, };