no-unnecessary-components
: Add support for Text
size
and weight
, and improve spread object typechecking
#210
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After primer/react#4834,
<Text size="..." />
and<Text weight="..." />
are valid uses of theText
component. But theno-unnecessary-components
rule is currently only checking forsx
and styled-system props, so these would get flagged.This PR fixes that by adding a set of "allowed" props to each component. If any of these props are used, the component is considered valid. Also adds tests for this.
In addition, this PR improves the spread props typechecking: instead of just checking for allowed props, we extract all the property names, then check if each one is allowed. Because we don't have access to an array of styled-system property names, this is the only way to check for styled-system props in the spread props object -- something we weren't doing at all before. So this should make the rule slightly more accurate for a rare edge case, and also makes the code cleaner.