@zenkit/layout
Version:
ZenKit components for impliments layout
77 lines (70 loc) • 2.13 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
import * as React from 'react';
import { withStyles } from '@zenkit/styles';
import cn from 'classnames';
import Box from './box';
export const styles = {
column: props => {
const columnStart = props.columnStart ? props.columnStart : Array.isArray(props.column) ? props.column[1] : props.column;
const columnEnd = props.columnEnd ? props.columnEnd : Array.isArray(props.column) ? props.column[1] : props.column;
if (columnStart && columnEnd) {
return {
gridColumn: `${columnStart} ${columnEnd}`
};
}
return {
gridColumnStart: columnStart,
gridColumnEnd: columnEnd
};
},
row: props => {
const rowStart = props.rowStart ? props.rowStart : Array.isArray(props.row) ? props.row[1] : props.row;
const rowEnd = props.rowEnd ? props.rowEnd : Array.isArray(props.row) ? props.row[1] : props.row;
if (rowStart && rowEnd) {
return {
gridRow: `${rowStart} ${rowEnd}`
};
}
return {
gridRowStart: rowStart,
gridRowEnd: rowEnd
};
},
area: {
gridArea: props => props.area
},
justify: {
justifySelf: props => props.justify
},
align: {
alignSelf: props => props.align
}
};
function GridItem(props) {
const {
columnStart,
columnEnd,
column,
rowStart,
rowEnd,
row,
area,
justify,
align,
classes,
className: classNameProps,
children
} = props,
otherProps = _objectWithoutPropertiesLoose(props, ["columnStart", "columnEnd", "column", "rowStart", "rowEnd", "row", "area", "justify", "align", "classes", "className", "children"]);
return React.createElement(Box, _extends({
className: cn({
[classes.column]: columnStart || columnEnd || column,
[classes.row]: rowStart || rowEnd || row,
[classes.area]: area,
[classes.justify]: justify,
[classes.align]: align
}, classNameProps)
}, otherProps), children);
}
export default withStyles(styles)(GridItem);