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

67 lines
1.4 KiB
JavaScript
Raw Normal View History

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