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

View file

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