gab-social/app/javascript/gabsocial/components/back_button.js

66 lines
1.3 KiB
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import { CX } from '../constants'
import Button from './button'
class BackButton extends React.PureComponent {
static contextTypes = {
router: PropTypes.object,
}
historyBack = () => {
if (window.history && window.history.length === 1 || this.props.toHome) {
this.context.router.history.push('/home')
} else {
this.context.router.history.goBack()
}
}
handleBackClick = () => {
this.historyBack()
}
render() {
const {
className,
icon,
iconClassName,
iconSize,
} = this.props
const classes = CX(className, {
aiCenter: 1,
bgTransparent: 1,
mr5: 1,
cursorPointer: 1,
outlineNone: 1,
d: 1,
jcCenter: 1,
})
return (
<Button
noClasses
color='primary'
backgroundColor='none'
className={classes}
icon={icon || 'angle-left'}
iconSize={iconSize || '24px'}
iconClassName={iconClassName || [_s.mr5, _s.cPrimary].join(' ')}
onClick={this.handleBackClick}
/>
)
}
}
BackButton.propTypes = {
className: PropTypes.string,
icon: PropTypes.string,
iconClassName: PropTypes.string,
iconSize: PropTypes.string,
toHome: PropTypes.bool,
}
export default BackButton