/** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ const React = require('react'); const classNames = require('classnames'); const Marked = require('./Marked.js'); class GridBlock extends React.Component { renderBlock(block) { const blockClasses = classNames('blockElement', this.props.className, { 'alignCenter': this.props.align === 'center', 'alignRight': this.props.align === 'right', 'fourByGridBlock': this.props.layout === 'fourColumn', 'imageAlignBottom': (block.image && block.imageAlign === 'bottom'), 'imageAlignSide': (block.image && (block.imageAlign === 'left' || block.imageAlign === 'right')), 'imageAlignTop': (block.image && block.imageAlign === 'top'), 'threeByGridBlock': this.props.layout === 'threeColumn', 'twoByGridBlock': this.props.layout === 'twoColumn', }); const topLeftImage = (block.imageAlign === 'top' || block.imageAlign === 'left') && this.renderBlockImage(block.image); const bottomRightImage = (block.imageAlign === 'bottom' || block.imageAlign === 'right') && this.renderBlockImage(block.image); return (
{topLeftImage}
{this.renderBlockTitle(block.title)} {block.content}
{bottomRightImage}
); } renderBlockImage(image) { if (image) { return (
); } else { return null; } } renderBlockTitle(title) { if (title) { return

{title}

; } else { return null; } } render() { return (
{this.props.contents.map(this.renderBlock, this)}
); } } GridBlock.defaultProps = { align: 'left', contents: [], imagealign: 'top', layout: 'twoColumn', }; module.exports = GridBlock;