forked from remix-run/react-router
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaddIsActive.js
More file actions
32 lines (26 loc) · 771 Bytes
/
addIsActive.js
File metadata and controls
32 lines (26 loc) · 771 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { pathnameIsActive, queryIsActive } from './ActiveMixin';
/**
* History enhancer that adds an `isActive()` method. Specific to React Router.
* @param {CreateHistory} createHistory - History-creating function
* @returns {CreateHistory}
*/
export default function addIsActive(createHistory) {
return options => {
const router = createHistory(options);
function isActive(pathname, query) {
const { location, routes, params } = router.getState() || {};
if (location == null) {
return false;
}
const res = (
pathnameIsActive(pathname, location.pathname, routes, params) &&
queryIsActive(query, location.query)
);
return res;
}
return {
...router,
isActive
};
}
}