UNPKG

framework-entersol-web

Version:

Framework based on bootstrap 5

51 lines (45 loc) 1.58 kB
import React from "react"; import Container from "./container"; export default class GridContainer extends Container { static jsClass = 'GridContainer'; static defaultProps = { ...Container.defaultProps, colClasses: [], colTag: 'div', fullWidth: true, row: 'height-auto', breakpoints: { xs: 0, sm: 576, md: 768, lg: 992, xl: 1200, xxl: 1400 } } classes = 'row'; grid(children = this.props.children) { const { colClasses, colTag } = this.props; return Array.isArray(children) && children.map((child, i) => { if (!child) return false; const childColClasses = (child.type === 'section' ? child.props.children.props : child.props).colClasses; let colcn = ['col-md', i % 2 ? 'even' : 'odd', 'col-num-' + i, childColClasses]; // unir clases generales, si es un string se une todas las columnas // si es un arreglo se une en su debido lugar y se repite la ultima clase // si no coincide el número de columnas y clases if (typeof colClasses === 'string') colcn.push(colClasses); else if (Array.isArray(colClasses) && colClasses[i]) colcn.push(colClasses[i]); else if (Array.isArray(colClasses) && colClasses.length > 0) colcn.push(colClasses[colClasses.length - 1]); const ColTag = colTag; return <ColTag className={colcn.join(' ')} key={i}> {child} </ColTag> }); } content(children = this.props.children) { return !!this.breakpoint ? this.grid(children) : this.waitBreakpoint; } }