PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / router / link.js
presto-player / src / router Last commit date
context.js 5 years ago index.js 3 years ago link.js 3 years ago route.js 5 years ago utils.js 5 years ago
link.js
44 lines
1 const { useContext } = wp.element;
2 import { RouterContext, history } from "./context";
3 import classNames from "classnames";
4 import { match } from "path-to-regexp";
5
6 export function Link(props) {
7 const { to, onClick, children, activeClassName } = props;
8 const { route } = useContext(RouterContext);
9
10 let state = { ...props };
11 delete state.activeClassName;
12
13 const isActive = () => {
14 const checkMatch = match(`${to}`);
15 return checkMatch(`${route.hash.substr(1)}`);
16 };
17
18 const handleClick = (e) => {
19 e.preventDefault();
20 // Dont' navigate if current path
21 if (route.path === to) {
22 return;
23 }
24 // Trigger onClick prop manually
25 if (onClick) {
26 onClick(e);
27 }
28 const { search } = history.location;
29
30 // Use history API to navigate page
31 history.push(`${search}#${to}`);
32 };
33
34 return (
35 <a
36 {...state}
37 className={classNames({ [activeClassName]: isActive() }, props.className)}
38 onClick={handleClick}
39 >
40 {children}
41 </a>
42 );
43 }
44