UNPKG

chowa

Version:

UI component library based on React

59 lines (58 loc) 2.1 kB
/** * @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. */ "use strict"; 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;