Skip to content

Commit 31ffdba

Browse files
committed
Link: Special case for mailto:
1 parent 12cbd99 commit 31ffdba

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

src/link.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,35 @@ let Link: (
2020

2121
export function setLink(params: { Link: typeof Link }): void {
2222
Link = props => {
23-
external_link_react_router: {
24-
const { to, ...rest } = props as { to?: string };
2523

26-
if (to === undefined || (!to.startsWith("//") && !/^https?:\/\//.test(to))) {
27-
break external_link_react_router;
24+
{
25+
26+
const { to, href, ...rest } = props as { to?: string; href?: string; };
27+
28+
const target = to ?? href;
29+
30+
mailto: {
31+
32+
if (target === undefined || !target.startsWith("mailto:")) {
33+
break mailto;
34+
}
35+
36+
return <a href={target} {...rest} />;
37+
38+
}
39+
40+
external_links: {
41+
42+
if (target === undefined || (!target.startsWith("//") && !/^https?:\/\//.test(target))) {
43+
break external_links;
44+
}
45+
46+
return <a href={target} target="_blank" {...rest} />;
2847
}
2948

30-
return <a href={to} target="_blank" {...rest} />;
3149
}
3250

51+
3352
return <params.Link {...props} />;
3453
};
3554
}

0 commit comments

Comments
 (0)