Skip to content

Commit 03bdefc

Browse files
timkrautljharb
authored andcommitted
[minor] jsx-no-target-blank: warn on target={'_blank'} expressions
1 parent 1436799 commit 03bdefc

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

lib/rules/jsx-no-target-blank.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,15 @@ function isTargetBlank(attr) {
1616
return attr.name &&
1717
attr.name.name === 'target' &&
1818
attr.value &&
19-
attr.value.type === 'Literal' &&
20-
attr.value.value.toLowerCase() === '_blank';
19+
((
20+
attr.value.type === 'Literal' &&
21+
attr.value.value.toLowerCase() === '_blank'
22+
) || (
23+
attr.value.type === 'JSXExpressionContainer' &&
24+
attr.value.expression &&
25+
attr.value.expression.value &&
26+
attr.value.expression.value.toLowerCase() === '_blank'
27+
));
2128
}
2229

2330
function hasExternalLink(element, linkAttribute) {

tests/lib/rules/jsx-no-target-blank.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,20 @@ ruleTester.run('jsx-no-target-blank', rule, {
4545
{code: '<a target={targetValue} rel="noopener noreferrer"></a>'},
4646
{code: '<a target={targetValue} href="relative/path"></a>'},
4747
{code: '<a target={targetValue} href="/absolute/path"></a>'},
48+
{code: '<a target={\'targetValue\'} href="/absolute/path"></a>'},
49+
{code: '<a target={"targetValue"} href="/absolute/path"></a>'},
4850
{
4951
code: '<a target="_blank" href={ dynamicLink }></a>',
5052
options: [{enforceDynamicLinks: 'never'}]
5153
},
54+
{
55+
code: '<a target={"_blank"} href={ dynamicLink }></a>',
56+
options: [{enforceDynamicLinks: 'never'}]
57+
},
58+
{
59+
code: '<a target={\'_blank\'} href={ dynamicLink }></a>',
60+
options: [{enforceDynamicLinks: 'never'}]
61+
},
5262
{
5363
code: '<Link target="_blank" href={ dynamicLink }></Link>',
5464
options: [{enforceDynamicLinks: 'never'}],
@@ -90,6 +100,12 @@ ruleTester.run('jsx-no-target-blank', rule, {
90100
}, {
91101
code: '<a target="_blank" href={ dynamicLink }></a>',
92102
errors: defaultErrors
103+
}, {
104+
code: '<a target={\'_blank\'} href="//example.com"></a>',
105+
errors: defaultErrors
106+
}, {
107+
code: '<a target={"_blank"} href="//example.com"></a>',
108+
errors: defaultErrors
93109
}, {
94110
code: '<a target="_blank" href={ dynamicLink }></a>',
95111
options: [{enforceDynamicLinks: 'always'}],

0 commit comments

Comments
 (0)