gab-social/app/javascript/gabsocial/components/timeline_queue_button_heade...

69 lines
1.6 KiB
JavaScript

import { FormattedMessage } from 'react-intl'
import classNames from 'classnames/bind'
import { shortNumberFormat } from '../utils/numbers'
import { scrollTo } from '../utils/scroll_to'
import Button from './button'
import Text from './text'
const cx = classNames.bind(_s)
export default class TimelineQueueButtonHeader extends PureComponent {
static propTypes = {
onClick: PropTypes.func.isRequired,
count: PropTypes.number,
itemType: PropTypes.string,
floating: PropTypes.bool,
}
static defaultProps = {
count: 0,
itemType: 'item',
}
handleOnClick = () => {
scrollTo(document.documentElement, 0, 500)
this.props.onClick()
}
render() {
const { count, itemType } = this.props
const hasItems = count > 0
const classes = cx({
default: 1,
displayNone: !hasItems,
mtNeg26PX: 1,
})
return (
<div className={[_s.default, _s.pb5, _s.posSticky, _s.top120PX, _s.alignItemsCenter, _s.z3].join(' ')}>
<div className={classes}>
<Button
isNarrow
color='white'
backgroundColor='brand'
onClick={this.handleOnClick}
>
{
hasItems &&
<Text color='inherit' size='small'>
<FormattedMessage
id='timeline_queue.label'
defaultMessage='{count} new {type}'
values={{
count: shortNumberFormat(count),
type: count === 1 ? itemType : `${itemType}s`,
}}
/>
</Text>
}
</Button>
</div>
</div>
)
}
}