fix(v2): allow external links in doc sidebar (#2186)

* fix(v2): allow external links in doc sidebar

* Fix for ESLint
This commit is contained in:
Alexey Pyltsyn 2020-01-04 22:09:44 +03:00 committed by Yangshun Tay
parent 8065e5f9dd
commit 705b496397
3 changed files with 22 additions and 6 deletions

View file

@ -10,6 +10,7 @@ import classnames from 'classnames';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl'; import useBaseUrl from '@docusaurus/useBaseUrl';
import Link from '@docusaurus/Link'; import Link from '@docusaurus/Link';
import isInternalUrl from '@docusaurus/utils'; // eslint-disable-line import/no-extraneous-dependencies
import styles from './styles.module.css'; import styles from './styles.module.css';
@ -70,11 +71,18 @@ function DocSidebarItem({item, onItemClick, collapsible}) {
return ( return (
<li className="menu__list-item" key={label}> <li className="menu__list-item" key={label}>
<Link <Link
activeClassName="menu__link--active"
className="menu__link" className="menu__link"
exact
to={href} to={href}
onClick={onItemClick}> {...(isInternalUrl(href)
? {
activeClassName: 'menu__link--active',
exact: true,
onClick: onItemClick,
}
: {
target: '_blank',
rel: 'noreferrer noopener',
})}>
{label} {label}
</Link> </Link>
</li> </li>

View file

@ -7,13 +7,12 @@
import React, {useEffect, useRef} from 'react'; import React, {useEffect, useRef} from 'react';
import {NavLink} from 'react-router-dom'; import {NavLink} from 'react-router-dom';
import isInternalUrl from '@docusaurus/utils';
const internalRegex = /^\/(?!\/)/;
function Link(props) { function Link(props) {
const {to, href} = props; const {to, href} = props;
const targetLink = to || href; const targetLink = to || href;
const isInternal = internalRegex.test(targetLink); const isInternal = isInternalUrl;
const preloaded = useRef(false); const preloaded = useRef(false);
const IOSupported = const IOSupported =

View file

@ -0,0 +1,9 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
export default function isInternalUrl(url) {
return /^\/(?!\/)/.test(url);
}