add colSpan support

This commit is contained in:
Rodrigo Antinarelli 2020-03-25 20:03:29 -03:00 committed by James A. Petts
parent 1a07807dba
commit c05aab4e17
2 changed files with 13 additions and 14 deletions

View File

@ -5,8 +5,11 @@ import classnames from 'classnames';
const TableCell = ({ const TableCell = ({
children, children,
className, className,
colSpan,
// ignored because we don't wan't to expose this prop
// eslint-disable-next-line react/prop-types
cellsNum,
isTableHead, isTableHead,
size,
align, align,
style, style,
}) => { }) => {
@ -17,10 +20,6 @@ const TableCell = ({
right: 'text-right', right: 'text-right',
justify: 'text-justify', justify: 'text-justify',
}, },
size: {
small: 'flex-0.3',
normal: 'flex-1',
},
isTableHead: { isTableHead: {
true: '', true: '',
false: 'border-r border-custom-violetPale', false: 'border-r border-custom-violetPale',
@ -31,7 +30,7 @@ const TableCell = ({
<div <div
className={classnames( className={classnames(
'px-2 last:border-r-0 break-all', 'px-2 last:border-r-0 break-all',
classes.size[size], `w-${colSpan}/${cellsNum}`,
classes.align[align], classes.align[align],
classes.isTableHead[isTableHead], classes.isTableHead[isTableHead],
className className
@ -44,20 +43,20 @@ const TableCell = ({
}; };
TableCell.defaultProps = { TableCell.defaultProps = {
className: '',
isTableHead: false,
size: 'normal',
style: {},
align: 'left', align: 'left',
className: '',
colSpan: 1,
isTableHead: false,
style: {},
}; };
TableCell.propTypes = { TableCell.propTypes = {
isTableHead: PropTypes.bool, align: PropTypes.oneOf(['left', 'center', 'right', 'justify']),
children: PropTypes.node.isRequired, children: PropTypes.node.isRequired,
className: PropTypes.string, className: PropTypes.string,
size: PropTypes.oneOf(['small', 'normal']), colSpan: PropTypes.number,
isTableHead: PropTypes.bool,
style: PropTypes.object, style: PropTypes.object,
align: PropTypes.oneOf(['left', 'center', 'right', 'justify']),
}; };
export default TableCell; export default TableCell;

View File

@ -7,7 +7,7 @@ const TableRow = ({ children, className, isTableHead, style }) => {
const isValidReactElement = React.isValidElement(child); const isValidReactElement = React.isValidElement(child);
return isValidReactElement return isValidReactElement
? React.cloneElement(child, { isTableHead }) ? React.cloneElement(child, { isTableHead, cellsNum: children.length })
: children; : children;
}); });