// Components.
import ComposerOptions from '../../composer/options';
import ComposerPublisher from '../../composer/publisher';
-import ComposerTextareaIcons from '../../composer/textarea/icons';
+import TextareaIcons from './textarea_icons';
import UploadFormContainer from '../containers/upload_form_container';
import PollFormContainer from '../containers/poll_form_container';
import WarningContainer from '../containers/warning_container';
</div>
<div className='composer--textarea'>
- <ComposerTextareaIcons
- advancedOptions={advancedOptions}
- intl={intl}
- />
+ <TextareaIcons advancedOptions={advancedOptions} />
<AutosuggestTextarea
ref={this.setAutosuggestTextarea}
--- /dev/null
+// Package imports.
+import PropTypes from 'prop-types';
+import React from 'react';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import { defineMessages, injectIntl } from 'react-intl';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+
+// Components.
+import Icon from 'flavours/glitch/components/icon';
+
+// Messages.
+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 = [
+ ['do_not_federate', 'home', messages.localOnly],
+ ['threaded_mode', 'comments', messages.threadedMode],
+];
+
+export default @injectIntl
+class TextareaIcons extends ImmutablePureComponent {
+
+ static propTypes = {
+ advancedOptions: ImmutablePropTypes.map,
+ intl: PropTypes.object.isRequired,
+ };
+
+ render () {
+ const { advancedOptions, intl } = this.props;
+ return (
+ <div className='composer--textarea--icons'>
+ {advancedOptions ? iconMap.map(
+ ([key, icon, message]) => advancedOptions.get(key) ? (
+ <span
+ className='textarea_icon'
+ key={key}
+ title={intl.formatMessage(message)}
+ >
+ <Icon
+ fullwidth
+ icon={icon}
+ />
+ </span>
+ ) : null
+ ) : null}
+ </div>
+ );
+ }
+}
+++ /dev/null
-// Package imports.
-import PropTypes from 'prop-types';
-import React from 'react';
-import ImmutablePropTypes from 'react-immutable-proptypes';
-import { defineMessages } from 'react-intl';
-
-// Components.
-import Icon from 'flavours/glitch/components/icon';
-
-// Messages.
-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 = [
- ['do_not_federate', 'home', messages.localOnly],
- ['threaded_mode', 'comments', messages.threadedMode],
-];
-
-// The component.
-export default function ComposerTextareaIcons ({
- advancedOptions,
- intl,
-}) {
-
- // The result. We just map every active option to its icon.
- return (
- <div className='composer--textarea--icons'>
- {advancedOptions ? iconMap.map(
- ([key, icon, message]) => advancedOptions.get(key) ? (
- <span
- className='textarea_icon'
- key={key}
- title={intl.formatMessage(message)}
- >
- <Icon
- fullwidth
- icon={icon}
- />
- </span>
- ) : null
- ) : null}
- </div>
- );
-}
-
-// Props.
-ComposerTextareaIcons.propTypes = {
- advancedOptions: ImmutablePropTypes.map,
- intl: PropTypes.object.isRequired,
-};