Skip to content

Commit c2ae5d3

Browse files
tihonoveljharb
authored andcommitted
[Fix] jsx-sort-comp: Fix fixer in case of more than 10 props
Fixes #1993. Fixes #1922.
1 parent 8f2663e commit c2ae5d3

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

lib/rules/jsx-sort-props.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ const generateFixerFunction = (node, context, reservedList) => {
107107
});
108108
});
109109

110-
fixers.sort((a, b) => a.range[0] < b.range[0]);
110+
fixers.sort((a, b) => b.range[0] - a.range[0]);
111111

112112
const rangeStart = fixers[fixers.length - 1].range[0];
113113
const rangeEnd = fixers[0].range[1];

tests/lib/rules/jsx-sort-props.js

+95
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,101 @@ ruleTester.run('jsx-sort-props', rule, {
238238
`,
239239
errors: 3
240240
},
241+
{
242+
code: '<App b={2} c={3} d={4} e={5} f={6} g={7} h={8} i={9} j={10} k={11} a={1} />',
243+
output: '<App a={1} b={2} c={3} d={4} e={5} f={6} g={7} h={8} i={9} j={10} k={11} />',
244+
errors: 1
245+
},
246+
{
247+
code: `<List
248+
className={className}
249+
onStageAnswer={onStageAnswer}
250+
onCommitAnswer={onCommitAnswer}
251+
isFocused={isFocused}
252+
direction={direction}
253+
allowMultipleSelection={allowMultipleSelection}
254+
measureLongestChildNode={measureLongestChildNode}
255+
layoutItemsSize={layoutItemsSize}
256+
handleAppScroll={handleAppScroll}
257+
isActive={isActive}
258+
resetSelection={resetSelection}
259+
onKeyboardChoiceHovered={onKeyboardChoiceHovered}
260+
keyboardShortcutType
261+
/>`,
262+
output: `<List
263+
allowMultipleSelection={allowMultipleSelection}
264+
className={className}
265+
direction={direction}
266+
handleAppScroll={handleAppScroll}
267+
isActive={isActive}
268+
isFocused={isFocused}
269+
keyboardShortcutType
270+
layoutItemsSize={layoutItemsSize}
271+
measureLongestChildNode={measureLongestChildNode}
272+
onCommitAnswer={onCommitAnswer}
273+
onKeyboardChoiceHovered={onKeyboardChoiceHovered}
274+
onStageAnswer={onStageAnswer}
275+
resetSelection={resetSelection}
276+
/>`,
277+
errors: 10
278+
},
279+
{
280+
code: `<CreateNewJob
281+
closed={false}
282+
flagOptions={flagOptions}
283+
jobHeight={300}
284+
jobWidth={200}
285+
campaign='Some Campaign name'
286+
campaignStart={moment('2018-07-28 00:00:00')}
287+
campaignFinish={moment('2018-09-01 00:00:00')}
288+
jobNumber={'Job Number can be a String'}
289+
jobTemplateOptions={jobTemplateOptions}
290+
numberOfPages={30}
291+
onChange={onChange}
292+
onClose={onClose}
293+
spreadSheetTemplateOptions={spreadSheetTemplateOptions}
294+
stateMachineOptions={stateMachineOptions}
295+
workflowTemplateOptions={workflowTemplateOptions}
296+
workflowTemplateSteps={workflowTemplateSteps}
297+
description='Some description for this job'
298+
299+
jobTemplate='1'
300+
stateMachine='1'
301+
flag='1'
302+
spreadSheetTemplate='1'
303+
workflowTemplate='1'
304+
validation={validation}
305+
onSubmit={onSubmit}
306+
/>`,
307+
output: `<CreateNewJob
308+
campaign='Some Campaign name'
309+
campaignFinish={moment('2018-09-01 00:00:00')}
310+
campaignStart={moment('2018-07-28 00:00:00')}
311+
closed={false}
312+
description='Some description for this job'
313+
flag='1'
314+
flagOptions={flagOptions}
315+
jobHeight={300}
316+
jobNumber={'Job Number can be a String'}
317+
jobTemplate='1'
318+
jobTemplateOptions={jobTemplateOptions}
319+
jobWidth={200}
320+
numberOfPages={30}
321+
onChange={onChange}
322+
onClose={onClose}
323+
onSubmit={onSubmit}
324+
spreadSheetTemplate='1'
325+
326+
spreadSheetTemplateOptions={spreadSheetTemplateOptions}
327+
stateMachine='1'
328+
stateMachineOptions={stateMachineOptions}
329+
validation={validation}
330+
workflowTemplate='1'
331+
workflowTemplateOptions={workflowTemplateOptions}
332+
workflowTemplateSteps={workflowTemplateSteps}
333+
/>`,
334+
errors: 13
335+
},
241336
{
242337
code: '<App key="key" b c="c" />',
243338
errors: [expectedShorthandLastError],

0 commit comments

Comments
 (0)