|
|
- // Package imports //
- import React from 'react';
- import PropTypes from 'prop-types';
- import { defineMessages, injectIntl } from 'react-intl';
- import ImmutablePureComponent from 'react-immutable-pure-component';
-
- const messages = defineMessages({
- public: { id: 'privacy.public.short', defaultMessage: 'Public' },
- unlisted: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },
- private: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },
- direct: { id: 'privacy.direct.short', defaultMessage: 'Direct' },
- });
-
- @injectIntl
- export default class VisibilityIcon extends ImmutablePureComponent {
-
- static propTypes = {
- visibility: PropTypes.string,
- intl: PropTypes.object.isRequired,
- withLabel: PropTypes.bool,
- };
-
- render() {
- const { withLabel, visibility, intl } = this.props;
-
- const visibilityClass = {
- public: 'globe',
- unlisted: 'unlock-alt',
- private: 'lock',
- direct: 'envelope',
- }[visibility];
-
- const label = intl.formatMessage(messages[visibility]);
-
- const icon = (<i
- className={`status__visibility-icon fa fa-fw fa-${visibilityClass}`}
- title={label}
- aria-hidden='true'
- />);
-
- if (withLabel) {
- return (<span style={{ whiteSpace: 'nowrap' }}>{icon} {label}</span>);
- } else {
- return icon;
- }
- }
-
- }
|