reactjs / reactjs/react-docgen
How do I extend docgen to parse non-exported styled-components?
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 3.8k
- Fork
- 316
- Merge medio
- 5h 7m
- PR unite (30g)
- 4
Descrizione
I have the following component CheckBox. Notice I have styled-components that I create in this file and use in this file: Wrapper, Input, and Label. I haven't seen a way to use react-docgen to pickup each props.theme.VAR_NAME and be displayed with the CheckBox documentation.
I have seen examples of creating styled-components in their own files and then doing:
/** @component */
export default Wrapper;
CheckBox.js
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
const Wrapper = styled.div`
margin: ${props => props.theme.checkbox_margin};
position: relative;
text-align: left;
`;
const Input = styled.input`
outline: 0;
visibility: hidden;
width: ${props => props.theme.checkbox_size};
margin: 0;
display: block;
float: left;
font-size: inherit;
&:checked {
+ label:before {
background: ${props => props.theme.checkbox_checked_color};
border:none;
}
+ label:after {
transform: translate(${props => props.theme.checkbox_padding}, calc(calc(${props => props.theme.checkbox_size} / 2) - calc(calc(${props => props.theme.checkbox_size} - 2 * ${props => props.theme.checkbox_padding}) / 2.6))) rotate(-45deg);
width: calc(${props => props.theme.checkbox_size} - 2 * ${props => props.theme.checkbox_padding});
height: calc(calc(${props => props.theme.checkbox_size} - 2 * ${props => props.theme.checkbox_padding}) / 2);
border: ${props => props.theme.checkmark_width} solid ${props => props.theme.checkmark_color};
border-top-style: none;
border-right-style: none;
}
}
&:disabled {
+ label:before{
border-color: ${props => props.theme.checkbox_border_color_disabled};
}
&:checked {
+ label:before{
background: ${props => props.theme.checkbox_checked_color_disabled};
}
}
}
`;
const Label = styled.label`
cursor: pointer;
display: inline;
line-height: ${props => props.theme.checkbox_size};
vertical-align: top;
clear: both;
padding-left: 1px;
&:not(:empty) {
padding-left: ${props => props.theme.checkbox_label_padding};
}
&:before, &:after {
content: "";
position: absolute;
left: 0;
top: 0;
}
&:before {
// box
width: ${props => props.theme.checkbox_size};
height: ${props => props.theme.checkbox_size};
background: #fff;
border: ${props => props.theme.checkbox_border_width} solid ${props => props.theme.checkbox_border_color};
border-radius: ${props => props.theme.checkbox_border_radius};
cursor: pointer;
transition: background .3s;
}
&:after {
// checkmark
}
`;
/**
* A checkbox with a label on the right side.
*/
const CheckBox = ({id, label, ...props}) => (
<Wrapper>
<Input id={id} type={'checkbox'}/>
<Label htmlFor={id}>{label}</Label>
</Wrapper>
);
CheckBox.propTypes = {
/** The HTML id attribute value. This will need to be unique as the label uses it to define what the label is attached to. */
id: PropTypes.string.isRequired,
/** The string of text that's displayed as the checkbox label. */
label: PropTypes.string.isRequired,
};
CheckBox.defaultProps = {
id: "cb1",
label: "Label Name",
};
export default CheckBox;
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con l'esempio CheckBox.js e verifica come react-docgen gestisce il CheckBox esportato rispetto agli styled-components Wrapper, Input e Label non esportati. Determina se le theme props possono essere rappresentate nella documentazione generata; il risultato deve essere un approccio documentato e supportato oppure una limitazione chiara.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript, react
- Ambito
- documentation
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100