parent
e82021e0e6
commit
cb69e35b3b
@ -0,0 +1,48 @@ |
||||
// 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; |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue