1
0
puyopuyotetr.is/app/javascript/flavours/glitch/features/compose/components/textarea_icons.jsx

60 lines
1.7 KiB
React
Raw Normal View History

import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
2024-01-14 07:48:59 +09:00
import { ReactComponent as ForumIcon } from '@material-symbols/svg-600/outlined/forum.svg';
import { ReactComponent as HomeIcon } from '@material-symbols/svg-600/outlined/home-fill.svg';
import { Icon } from 'flavours/glitch/components/icon';
2024-01-14 07:48:59 +09:00
const messages = defineMessages({
localOnly: {
defaultMessage: 'This post is local-only',
id: 'advanced_options.local-only.tooltip',
},
threadedMode: {
defaultMessage: 'Threaded mode enabled',
id: 'advanced_options.threaded_mode.tooltip',
},
});
// We use an array of tuples here instead of an object because it
// preserves order.
const iconMap = [
2024-01-14 07:48:59 +09:00
['do_not_federate', 'home', HomeIcon, messages.localOnly],
['threaded_mode', 'comments', ForumIcon, messages.threadedMode],
];
class TextareaIcons extends ImmutablePureComponent {
static propTypes = {
advancedOptions: ImmutablePropTypes.map,
intl: PropTypes.object.isRequired,
};
render () {
const { advancedOptions, intl } = this.props;
return (
<div className='compose-form__textarea-icons'>
2024-01-14 07:48:59 +09:00
{advancedOptions && iconMap.map(
([key, icon, iconComponent, message]) => advancedOptions.get(key) && (
<span
className='textarea_icon'
key={key}
title={intl.formatMessage(message)}
>
2024-01-14 07:48:59 +09:00
<Icon id={icon} icon={iconComponent} />
</span>
2024-01-14 07:48:59 +09:00
),
)}
</div>
);
}
}
export default injectIntl(TextareaIcons);