Skip to content

Commit

Permalink
fix: convert functional components to be forwardRef components vs red…
Browse files Browse the repository at this point in the history
…efining them as such

Tests were failing because the top level component was a wrapper vs the actual component that was exposed. This also makes it so defaultProps and PropTypes are attached to the actual component exported.
  • Loading branch information
davidacevedo committed Feb 4, 2023
1 parent 17a141a commit 86578ab
Show file tree
Hide file tree
Showing 17 changed files with 64 additions and 61 deletions.
8 changes: 4 additions & 4 deletions src/Accordion.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ const defaultProps = {
tag: 'div',
};

function Accordion(props) {
const Accordion = React.forwardRef((props, ref) => {
const {
flush,
open,
toggle,
className,
cssModule,
tag: Tag,
innerRef,
innerRef = ref,
...attributes
} = props;
const classes = mapToCssModules(
Expand All @@ -57,9 +57,9 @@ function Accordion(props) {
<Tag {...attributes} className={classes} ref={innerRef} />
</AccordionContext.Provider>
);
}
})

Accordion.propTypes = propTypes;
Accordion.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Accordion innerRef={ref} {...props} />);
export default Accordion;
6 changes: 3 additions & 3 deletions src/AccordionBody.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const defaultProps = {
tag: 'div',
};

function AccordionBody(props) {
const AccordionBody = React.forwardRef((props, ref) => {
const {
className,
cssModule,
Expand Down Expand Up @@ -57,9 +57,9 @@ function AccordionBody(props) {
<Tag className="accordion-body">{children}</Tag>
</Collapse>
);
}
})

AccordionBody.propTypes = propTypes;
AccordionBody.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <AccordionBody innerRef={ref} {...props} />);
export default AccordionBody;
8 changes: 4 additions & 4 deletions src/AccordionHeader.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ const defaultProps = {
tag: 'h2',
};

function AccordionHeader(props) {
const AccordionHeader = React.forwardRef((props, ref) => {
const {
className,
cssModule,
tag: Tag,
innerRef,
innerRef = ref,
children,
targetId,
...attributes
Expand Down Expand Up @@ -62,9 +62,9 @@ function AccordionHeader(props) {
</button>
</Tag>
);
}
})

AccordionHeader.propTypes = propTypes;
AccordionHeader.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <AccordionHeader innerRef={ref} {...props} />);
export default AccordionHeader;
8 changes: 4 additions & 4 deletions src/AccordionItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,17 @@ const defaultProps = {
tag: 'div',
};

function AccordionItem(props) {
const { className, cssModule, tag: Tag, innerRef, ...attributes } = props;
const AccordionItem = React.forwardRef((props, ref) => {
const { className, cssModule, tag: Tag, innerRef = ref, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'accordion-item'),
cssModule,
);

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
})

AccordionItem.propTypes = propTypes;
AccordionItem.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <AccordionItem innerRef={ref} {...props} />);
export default AccordionItem;
6 changes: 3 additions & 3 deletions src/Alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ const defaultProps = {
},
};

function Alert(props) {
const Alert = React.forwardRef((props, ref) => {
const {
className,
closeClassName,
Expand Down Expand Up @@ -103,9 +103,9 @@ function Alert(props) {
{children}
</Fade>
);
}
});

Alert.propTypes = propTypes;
Alert.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Alert innerRef={ref} {...props} />);
export default Alert;
8 changes: 4 additions & 4 deletions src/Badge.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ const defaultProps = {
tag: 'span',
};

function Badge(props) {
const Badge = React.forwardRef((props, ref) => {
let {
className,
cssModule,
color,
innerRef,
innerRef = ref,
pill,
tag: Tag,
...attributes
Expand All @@ -55,9 +55,9 @@ function Badge(props) {
}

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
});

Badge.propTypes = propTypes;
Badge.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Badge innerRef={ref} {...props} />);
export default Badge;
8 changes: 4 additions & 4 deletions src/Button.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const defaultProps = {
tag: 'button',
};

function Button(props) {
const Button = React.forwardRef((props, ref) => {
const onClick = useCallback(
(e) => {
if (props.disabled) {
Expand All @@ -68,7 +68,7 @@ function Button(props) {
outline,
size,
tag: Tag,
innerRef,
innerRef = ref,
...attributes
} = props;

Expand Down Expand Up @@ -104,9 +104,9 @@ function Button(props) {
aria-label={ariaLabel}
/>
);
}
});

Button.propTypes = propTypes;
Button.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Button innerRef={ref} {...props} />);
export default Button;
8 changes: 4 additions & 4 deletions src/CardBody.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ const defaultProps = {
tag: 'div',
};

function CardBody(props) {
const { className, cssModule, innerRef, tag: Tag, ...attributes } = props;
const CardBody = React.forwardRef((props, ref) => {
const { className, cssModule, innerRef = ref, tag: Tag, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'card-body'),
cssModule,
);

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
});

CardBody.propTypes = propTypes;
CardBody.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <CardBody innerRef={ref} {...props} />);
export default CardBody;
8 changes: 4 additions & 4 deletions src/CardLink.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ const defaultProps = {
tag: 'a',
};

function CardLink(props) {
const { className, cssModule, tag: Tag, innerRef, ...attributes } = props;
const CardLink = React.forwardRef((props, ref) => {
const { className, cssModule, tag: Tag, innerRef = ref, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'card-link'),
cssModule,
);

return <Tag {...attributes} ref={innerRef} className={classes} />;
}
})

CardLink.propTypes = propTypes;
CardLink.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <CardLink innerRef={ref} {...props} />);
export default CardLink;
8 changes: 4 additions & 4 deletions src/CloseButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ const defaultProps = {
'aria-label': 'close',
};

function CloseButton(props) {
const { className, cssModule, variant, innerRef, ...attributes } = props;
const CloseButton = React.forwardRef((props, ref) => {
const { className, cssModule, variant, innerRef = ref, ...attributes } = props;

const classes = mapToCssModules(
classNames(className, 'btn-close', variant && `btn-close-${variant}`),
Expand All @@ -35,9 +35,9 @@ function CloseButton(props) {
return (
<button ref={innerRef} type="button" className={classes} {...attributes} />
);
}
});

CloseButton.propTypes = propTypes;
CloseButton.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <CloseButton innerRef={ref} {...props} />);
export default CloseButton;
8 changes: 4 additions & 4 deletions src/Fade.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ const defaultProps = {
in: true,
};

function Fade(props) {
const Fade = React.forwardRef((props, ref) => {
const {
tag: Tag,
baseClass,
baseClassActive,
className,
cssModule,
children,
innerRef,
innerRef = ref,
...otherProps
} = props;

Expand All @@ -72,9 +72,9 @@ function Fade(props) {
}}
</Transition>
);
}
});

Fade.propTypes = propTypes;
Fade.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Fade innerRef={ref} {...props} />);
export default Fade;
2 changes: 2 additions & 0 deletions src/Form.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ const propTypes = {
const defaultProps = {
tag: 'form',
};

// TODO: Simple conversion of functional component "good-first-task"
class Form extends Component {
constructor(props) {
super(props);
Expand Down
8 changes: 4 additions & 4 deletions src/Placeholder.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ const defaultProps = {
tag: 'span',
};

function Placeholder(props) {
const Placeholder = React.forwardRef((props, ref) => {
let {
className,
cssModule,
color,
innerRef,
innerRef = ref,
tag: Tag,
animation,
size,
Expand All @@ -56,9 +56,9 @@ function Placeholder(props) {
);

return <Tag {...modifiedAttributes} className={classes} ref={innerRef} />;
}
})

Placeholder.propTypes = propTypes;
Placeholder.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Placeholder innerRef={ref} {...props} />);
export default Placeholder;
6 changes: 3 additions & 3 deletions src/Table.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const defaultProps = {
responsiveTag: 'div',
};

function Table(props) {
const Table = React.forwardRef((props, ref) => {
const {
className,
cssModule,
Expand Down Expand Up @@ -84,9 +84,9 @@ function Table(props) {
}

return table;
}
})

Table.propTypes = propTypes;
Table.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Table innerRef={ref} {...props} />);
export default Table;
8 changes: 4 additions & 4 deletions src/Toast.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const defaultProps = {
},
};

function Toast(props) {
const Toast = React.forwardRef((props, ref) => {
const {
className,
cssModule,
Expand All @@ -38,7 +38,7 @@ function Toast(props) {
children,
transition,
fade,
innerRef,
innerRef = ref,
...attributes
} = props;

Expand All @@ -64,9 +64,9 @@ function Toast(props) {
{children}
</Fade>
);
}
})

Toast.propTypes = propTypes;
Toast.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <Toast innerRef={ref} {...props} />);
export default Toast;
8 changes: 4 additions & 4 deletions src/ToastBody.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ const defaultProps = {
tag: 'div',
};

function ToastBody(props) {
const { className, cssModule, innerRef, tag: Tag, ...attributes } = props;
const ToastBody = React.forwardRef((props, ref) => {
const { className, cssModule, innerRef = ref, tag: Tag, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'toast-body'),
cssModule,
);

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
});

ToastBody.propTypes = propTypes;
ToastBody.defaultProps = defaultProps;

export default React.forwardRef((props, ref) => <ToastBody innerRef={ref} {...props} />);
export default ToastBody;

0 comments on commit 86578ab

Please sign in to comment.