styled components interpolated selectors dont generate newline
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 52.3k
- Forks
- 5k
- Avg merge
- 19h 2m
- Merged PRs (30d)
- 117
Description
If we have multiple styled components interpolated and separated by comma, the expected newline after the comma is missing.
Styled Components allow interpolation of nested styled components, see here for the syntax.
Prettier will put css selectors separated by , on new lines, introduced here: https://github.com/prettier/prettier/pull/2047. This works in styled components using regular css selectors, see second block in the playground link. It only fails when we try to use interpolated styled components.
Prettier 1.18.2
Playground link
--parser babel
Input:
const A = styled(_A)`
${B}, ${C} {
style: value;
}
`
const A = styled(_A)`
.classA, .classB {
style: value;
}
`
Output:
const A = styled(_A)`
${B}, ${C} {
style: value;
}
`;
const A = styled(_A)`
.classA,
.classB {
style: value;
}
`;
Expected behavior:
const A = styled(_A)`
${B},
${C} {
style: value;
}
`;
const A = styled(_A)`
.classA,
.classB {
style: value;
}
`;
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked Playground reproduction using the babel parser and compare the styled-component interpolation case with the regular CSS selector case. Trace the formatter path for comma-separated selectors; done means the interpolated selectors receive the same newline formatting as regular selectors while preserving the shown output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css, javascript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100