feat(v2): allow activeBaseTest in NavLink (#2690)

* Update documentation, add support for activeBaseTest

* Implicit else

* Fix Regular Expression capitalization

Co-Authored-By: Alexey Pyltsyn <lex61rus@gmail.com>

* Refactor isActive to ternary function, rename activeBaseTest to activeBaseRegex

* Update website/docs/theme-classic.md

Co-Authored-By: Alexey Pyltsyn <lex61rus@gmail.com>

* Fix typo

* Update website/docs/theme-classic.md

Co-Authored-By: Alexey Pyltsyn <lex61rus@gmail.com>

* Update theme-classic.md

Co-authored-by: Alexey Pyltsyn <lex61rus@gmail.com>
This commit is contained in:
Ben Gubler 2020-05-17 05:23:32 -06:00 committed by GitHub
parent 063484a05a
commit daafd2f0cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View file

@ -22,6 +22,7 @@ import styles from './styles.module.css';
function NavLink({
activeBasePath,
activeBaseRegex,
to,
href,
label,
@ -45,10 +46,12 @@ function NavLink({
isNavLink: true,
activeClassName,
to: toUrl,
...(activeBasePath
...(activeBasePath || activeBaseRegex
? {
isActive: (_match, location) =>
location.pathname.startsWith(activeBaseUrl),
activeBaseRegex
? new RegExp(activeBaseRegex).test(location.pathname)
: location.pathname.startsWith(activeBaseUrl),
}
: null),
})}

View file

@ -146,7 +146,10 @@ module.exports = {
position: 'left', // or 'right'
// To apply the active class styling on all
// routes starting with this path.
// This usually isn't necessary
activeBasePath: 'docs',
// Alternative to activeBasePath if required.
activeBaseRegex: 'docs/(next|v8)',
// Custom CSS class (for styling any item).
className: '',
},
@ -158,6 +161,8 @@ module.exports = {
};
```
React Router should automatically apply active link styling to links, but you can use `activeBasePath` in edge cases. For cases in which a link should be active on several different paths (such as when you have multiple doc folders under the same sidebar), you can use `activeBaseRegex`. `activeBaseRegex` is a more flexible alternative to `activeBasePath` and takes precedence over it -- Docusaurus parses it into a regular expression that is tested against the current URL.
Outbound (external) links automatically get `target="_blank" rel="noopener noreferrer"` attributes.
### Navbar Dropdown