From 41bdb5826f8af69af0a6b5c89693056efab3f3e6 Mon Sep 17 00:00:00 2001 From: Yannick Croissant Date: Sun, 19 Mar 2017 23:05:33 +0100 Subject: [PATCH] Fix jsx-indent indentation calculation with nested JSX (fixes #1117) --- lib/rules/jsx-indent.js | 2 +- tests/lib/rules/jsx-indent.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/rules/jsx-indent.js b/lib/rules/jsx-indent.js index f6ed3ac5a1..791d8cb9d0 100644 --- a/lib/rules/jsx-indent.js +++ b/lib/rules/jsx-indent.js @@ -284,7 +284,7 @@ module.exports = { prevToken = prevToken.type === 'JSXExpressionContainer' ? prevToken.expression : prevToken; var parentElementIndent = getNodeIndent(prevToken); - if (prevToken.type === 'JSXElement') { + if (prevToken.type === 'JSXElement' && (!prevToken.parent || prevToken.parent.type !== 'LogicalExpression')) { parentElementIndent = getOpeningElementIndent(prevToken.openingElement); } diff --git a/tests/lib/rules/jsx-indent.js b/tests/lib/rules/jsx-indent.js index 960a1009c0..a06b58f8e6 100644 --- a/tests/lib/rules/jsx-indent.js +++ b/tests/lib/rules/jsx-indent.js @@ -459,6 +459,22 @@ ruleTester.run('jsx-indent', rule, { ].join('\n'), options: [2], parserOptions: parserOptions + }, { + code: [ + 'function foo() {', + ' return (', + '
', + ' {bar &&', + '
', + ' ', + '
', + ' }', + '
', + ' );', + '}' + ].join('\n'), + options: [2], + parserOptions: parserOptions }], invalid: [{