Skip to content

Commit 1e1c5c6

Browse files
author
Yannick Croissant
committed
Fix jsx-indent in multi-line function calls (fixes #895)
1 parent e2f72f1 commit 1e1c5c6

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

lib/rules/jsx-indent.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,15 @@ module.exports = {
191191

192192
return {
193193
JSXOpeningElement: function(node) {
194-
if (!node.parent || !node.parent.parent) {
194+
var prevToken = sourceCode.getTokenBefore(node);
195+
if (!prevToken) {
195196
return;
196197
}
197-
var parentElementIndent = getNodeIndent(node.parent.parent);
198-
var indent = node.parent.parent.loc.start.line === node.loc.start.line ? 0 : indentSize;
198+
if (prevToken.type === 'JSXText') {
199+
prevToken = sourceCode.getNodeByRangeIndex(prevToken.start).parent;
200+
}
201+
var parentElementIndent = getNodeIndent(prevToken);
202+
var indent = prevToken.loc.start.line === node.loc.start.line ? 0 : indentSize;
199203
checkNodesIndent(node, parentElementIndent + indent);
200204
},
201205
JSXClosingElement: function(node) {

tests/lib/rules/jsx-indent.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,40 @@ ruleTester.run('jsx-indent', rule, {
9999
].join('\n'),
100100
options: [2],
101101
parserOptions: parserOptions
102+
}, {
103+
code: [
104+
'it(',
105+
' (',
106+
' <div>',
107+
' <span />',
108+
' </div>',
109+
' )',
110+
')'
111+
].join('\n'),
112+
parserOptions: parserOptions,
113+
options: [2]
114+
}, {
115+
code: [
116+
'it(',
117+
' (<div>',
118+
' <span />',
119+
' <span />',
120+
' <span />',
121+
' </div>)',
122+
')'
123+
].join('\n'),
124+
parserOptions: parserOptions,
125+
options: [2]
126+
}, {
127+
code: [
128+
'(',
129+
' <div>',
130+
' <span />',
131+
' </div>',
132+
')'
133+
].join('\n'),
134+
parserOptions: parserOptions,
135+
options: [2]
102136
}],
103137

104138
invalid: [{
@@ -289,4 +323,3 @@ ruleTester.run('jsx-indent', rule, {
289323
]
290324
}*/]
291325
});
292-

0 commit comments

Comments
 (0)