parent
e4bc013d6f
commit
c71d848855
@ -0,0 +1,60 @@ |
|||||||
|
// 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