forked from berserker/microblog
Change in-app links to keep you in-app (#20540)
* Change in-app links to keep you in-app * refactor Permalink into Link * rewrite link hrefs in status content * please linter * please linter againmain^2
parent
ad66bbed62
commit
07229089a6
21 changed files with 52 additions and 94 deletions
@ -1,40 +0,0 @@ |
||||
import React from 'react'; |
||||
import PropTypes from 'prop-types'; |
||||
|
||||
export default class Permalink extends React.PureComponent { |
||||
|
||||
static contextTypes = { |
||||
router: PropTypes.object, |
||||
}; |
||||
|
||||
static propTypes = { |
||||
className: PropTypes.string, |
||||
href: PropTypes.string.isRequired, |
||||
to: PropTypes.string.isRequired, |
||||
children: PropTypes.node, |
||||
onInterceptClick: PropTypes.func, |
||||
}; |
||||
|
||||
handleClick = e => { |
||||
if (this.props.onInterceptClick && this.props.onInterceptClick()) { |
||||
e.preventDefault(); |
||||
return; |
||||
} |
||||
|
||||
if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) { |
||||
e.preventDefault(); |
||||
this.context.router.history.push(this.props.to); |
||||
} |
||||
} |
||||
|
||||
render () { |
||||
const { href, children, className, onInterceptClick, ...other } = this.props; |
||||
|
||||
return ( |
||||
<a target='_blank' href={href} onClick={this.handleClick} {...other} className={`permalink${className ? ' ' + className : ''}`}> |
||||
{children} |
||||
</a> |
||||
); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue