chowa
Version:
UI component library based on React
59 lines (58 loc) • 2.1 kB
JavaScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
;
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const PropTypes = require("prop-types");
const classnames_1 = require("classnames");
const utils_1 = require("../utils");
const grid_col_1 = require("./grid-col");
const GridRow = (props) => {
const { children, className, style, align, justify, gutter } = props;
const componentClass = classnames_1.default({
[utils_1.preClass('grid-row')]: true,
[utils_1.preClass(`grid-row-${align}`)]: align !== 'top',
[utils_1.preClass(`grid-row-${justify}`)]: justify !== 'start',
[className]: utils_1.isExist(className)
});
const setGutter = gutter / 2;
return (React.createElement("section", { style: style, className: componentClass }, React.Children.map(children, (child, key) => {
if (utils_1.isReactElement(child) && child.type === grid_col_1.default) {
let paddingLeft = setGutter;
let paddingRight = setGutter;
if (key === 0) {
paddingLeft = 0;
}
else if (key + 1 === React.Children.count(children)) {
paddingRight = 0;
}
return React.cloneElement(child, {
key,
style: Object.assign({}, child.props.style, setGutter > 0 ? {
paddingLeft,
paddingRight
} : null)
});
}
return child;
})));
};
GridRow.propTypes = {
className: PropTypes.string,
style: PropTypes.object,
align: PropTypes.oneOf(['top', 'middle', 'bottom']),
justify: PropTypes.oneOf(['start', 'end', 'center', 'space-around', 'space-between']),
gutter: PropTypes.number
};
GridRow.defaultProps = {
align: 'top',
justify: 'start',
gutter: 0
};
exports.default = GridRow;