mirror of
https://github.com/funamitech/mastodon
synced 2024-12-12 13:48:35 +09:00
cb6f445b90
Fixes #2220 This drops the ability to shift+click on “Back” to get back to a pinned column, but that was inconsistent, broken, and undocumented. This also brings us slightly closer to upstream.
50 lines
1.0 KiB
JavaScript
50 lines
1.0 KiB
JavaScript
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 (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
|
if (this.props.onInterceptClick && this.props.onInterceptClick()) {
|
|
e.preventDefault();
|
|
return;
|
|
}
|
|
|
|
if (this.context.router) {
|
|
e.preventDefault();
|
|
this.context.router.history.push(this.props.to);
|
|
}
|
|
}
|
|
};
|
|
|
|
render () {
|
|
const {
|
|
children,
|
|
className,
|
|
href,
|
|
to,
|
|
onInterceptClick,
|
|
...other
|
|
} = this.props;
|
|
|
|
return (
|
|
<a target='_blank' href={href} onClick={this.handleClick} {...other} className={`permalink${className ? ' ' + className : ''}`}>
|
|
{children}
|
|
</a>
|
|
);
|
|
}
|
|
|
|
}
|