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'}],