Move ComposerTextareaIcons to TextareaIcons
This commit is contained in:
		
							parent
							
								
									08faf16d66
								
							
						
					
					
						commit
						a6bb49adf1
					
				
					 3 changed files with 61 additions and 65 deletions
				
			
		| 
						 | 
					@ -7,7 +7,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
 | 
				
			||||||
//  Components.
 | 
					//  Components.
 | 
				
			||||||
import ComposerOptions from '../../composer/options';
 | 
					import ComposerOptions from '../../composer/options';
 | 
				
			||||||
import ComposerPublisher from '../../composer/publisher';
 | 
					import ComposerPublisher from '../../composer/publisher';
 | 
				
			||||||
import ComposerTextareaIcons from '../../composer/textarea/icons';
 | 
					import TextareaIcons from './textarea_icons';
 | 
				
			||||||
import UploadFormContainer from '../containers/upload_form_container';
 | 
					import UploadFormContainer from '../containers/upload_form_container';
 | 
				
			||||||
import PollFormContainer from '../containers/poll_form_container';
 | 
					import PollFormContainer from '../containers/poll_form_container';
 | 
				
			||||||
import WarningContainer from '../containers/warning_container';
 | 
					import WarningContainer from '../containers/warning_container';
 | 
				
			||||||
| 
						 | 
					@ -347,10 +347,7 @@ class ComposeForm extends ImmutablePureComponent {
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div className='composer--textarea'>
 | 
					        <div className='composer--textarea'>
 | 
				
			||||||
          <ComposerTextareaIcons
 | 
					          <TextareaIcons advancedOptions={advancedOptions} />
 | 
				
			||||||
            advancedOptions={advancedOptions}
 | 
					 | 
				
			||||||
            intl={intl}
 | 
					 | 
				
			||||||
          />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <AutosuggestTextarea
 | 
					          <AutosuggestTextarea
 | 
				
			||||||
            ref={this.setAutosuggestTextarea}
 | 
					            ref={this.setAutosuggestTextarea}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					//  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>
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,60 +0,0 @@
 | 
				
			||||||
//  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,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in a new issue