From b3957f6f76cbf4edc62ba9decbe72ab456143326 Mon Sep 17 00:00:00 2001 From: Tim Kraut Date: Mon, 7 Oct 2019 12:10:47 +0200 Subject: [PATCH] Find target={'_blank'} expressions --- lib/rules/jsx-no-target-blank.js | 11 +++++++++-- tests/lib/rules/jsx-no-target-blank.js | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) 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'}],