parent
47faf47ed5
commit
4c6221929f
@ -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 new issue