38 lines
874 B
TypeScript
38 lines
874 B
TypeScript
import React from 'react'
|
|
import {History, Location} from 'history'
|
|
import {IWithRouterProps} from './IWithRouterProps'
|
|
import {Link as RouterLink, LinkProps} from 'react-router-dom'
|
|
import {URLFormatter} from '@rondo.dev/common'
|
|
import {withRouter} from 'react-router'
|
|
|
|
export interface ILinkProps
|
|
extends IWithRouterProps<Record<string, string>> {
|
|
readonly className?: string
|
|
readonly to: string
|
|
}
|
|
|
|
class ContextLink extends React.PureComponent<ILinkProps> {
|
|
protected readonly urlFormatter = new URLFormatter()
|
|
|
|
render() {
|
|
const {
|
|
className,
|
|
history,
|
|
location,
|
|
match,
|
|
to,
|
|
children,
|
|
} = this.props
|
|
|
|
const href = this.urlFormatter.format(to, match.params)
|
|
|
|
return (
|
|
<RouterLink className={className} to={href}>
|
|
{children}
|
|
</RouterLink>
|
|
)
|
|
}
|
|
}
|
|
|
|
export const Link = withRouter(ContextLink)
|