diff --git a/lib/rules/jsx-no-target-blank.js b/lib/rules/jsx-no-target-blank.js
index be20eb788e..af825f56d2 100644
--- a/lib/rules/jsx-no-target-blank.js
+++ b/lib/rules/jsx-no-target-blank.js
@@ -16,8 +16,15 @@ function isTargetBlank(attr) {
return attr.name &&
attr.name.name === 'target' &&
attr.value &&
- attr.value.type === 'Literal' &&
- attr.value.value.toLowerCase() === '_blank';
+ ((
+ attr.value.type === 'Literal' &&
+ attr.value.value.toLowerCase() === '_blank'
+ ) || (
+ attr.value.type === 'JSXExpressionContainer' &&
+ attr.value.expression &&
+ attr.value.expression.value &&
+ attr.value.expression.value.toLowerCase() === '_blank'
+ ));
}
function hasExternalLink(element, linkAttribute) {
diff --git a/tests/lib/rules/jsx-no-target-blank.js b/tests/lib/rules/jsx-no-target-blank.js
index b3ecef88ec..b0d97df283 100644
--- a/tests/lib/rules/jsx-no-target-blank.js
+++ b/tests/lib/rules/jsx-no-target-blank.js
@@ -45,10 +45,20 @@ ruleTester.run('jsx-no-target-blank', rule, {
{code: ''},
{code: ''},
{code: ''},
+ {code: ''},
+ {code: ''},
{
code: '',
options: [{enforceDynamicLinks: 'never'}]
},
+ {
+ code: '',
+ options: [{enforceDynamicLinks: 'never'}]
+ },
+ {
+ code: '',
+ options: [{enforceDynamicLinks: 'never'}]
+ },
{
code: '',
options: [{enforceDynamicLinks: 'never'}],
@@ -90,6 +100,12 @@ ruleTester.run('jsx-no-target-blank', rule, {
}, {
code: '',
errors: defaultErrors
+ }, {
+ code: '',
+ errors: defaultErrors
+ }, {
+ code: '',
+ errors: defaultErrors
}, {
code: '',
options: [{enforceDynamicLinks: 'always'}],