masto-fe/app/javascript/flavours/glitch/components/spoilers.jsx

53 lines
1.1 KiB
React
Raw Normal View History

2019-07-14 19:43:49 +00:00
import React from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
export default
class Spoilers extends React.PureComponent {
2019-07-14 19:43:49 +00:00
static propTypes = {
spoilerText: PropTypes.string,
children: PropTypes.node,
};
state = {
hidden: true,
};
2019-07-14 19:43:49 +00:00
handleSpoilerClick = () => {
this.setState({ hidden: !this.state.hidden });
};
2019-07-14 19:43:49 +00:00
render () {
const { spoilerText, children } = this.props;
const { hidden } = this.state;
const toggleText = hidden ?
(<FormattedMessage
id='status.show_more'
defaultMessage='Show more'
key='0'
/>) :
(<FormattedMessage
id='status.show_less'
defaultMessage='Show less'
key='0'
/>);
2019-07-14 19:43:49 +00:00
return ([
<p className='spoiler__text'>
{spoilerText}
{' '}
<button tabIndex={0} className='status__content__spoiler-link' onClick={this.handleSpoilerClick}>
2019-07-14 19:43:49 +00:00
{toggleText}
</button>
</p>,
<div className={`status__content__spoiler ${!hidden ? 'status__content__spoiler--visible' : ''}`}>
{children}
</div>,
2019-07-14 19:43:49 +00:00
]);
}
2019-07-14 19:43:49 +00:00
}