Home Reference Source

src/components/layouts/LeftTopBottom/LeftTopBottom.jsx

import React from 'react';
import cn from 'classnames';
import { Col } from 'reactstrap';
import PropTypes from 'prop-types';
import Place from '../Place';
import layoutPlaceResolver from '../LayoutPlaceResolver';

/**
 * Layout виджета; Places: left, top, bottom
 * @param {object} props - пропсы
 * @param {string} props.className - css-класс
 *  @param {number} props.leftSize - размер левой колонки (указывается в колонках бутстрапа (1, 2, 3 ... 12))
 * @param {number} props.rightSize - размер правой колонки
 * @param {object} props.style - стили layout
 * @example
 * <LeftTopBottom>
 *      <Section place="left">
 *         <div>N2O is awesome</div>
 *     </Section>
 *     <Section place="bottom">
 *         <div>N2O is awesome</div>
 *     </Section>
 *     <Section place="top">
 *         <div>N2O is awesome</div>
 *     </Section>
 * <LeftTopBottom/>
 */
let LeftTopBottom = ({ className, leftSize, rightSize, style }) => {
  return (
    <div className={cn('layout row', className)} style={style}>
      <Col md={leftSize}>
        <Place name="left" />
      </Col>
      <Col md={rightSize}>
        <Place name="top" />
        <Place name="bottom" />
      </Col>
    </div>
  );
};

LeftTopBottom.propTypes = {
  className: PropTypes.string,
  leftSize: PropTypes.number,
  rightSize: PropTypes.number,
  style: PropTypes.object,
};

LeftTopBottom.defaultProps = {
  leftSize: 6,
  rightSize: 6,
  style: {},
};

LeftTopBottom = layoutPlaceResolver(LeftTopBottom);
export default LeftTopBottom;