Home Reference Source Repository

src/table/Cell.js

/**
 * @file melon/TableCell
 * @author leon([email protected])
 */

import React, {Component, PropTypes} from 'react';
import {create} from 'melon-core/classname/cxBuilder';

const cx = create('TableCell');

export default class TableCell extends Component {

    shouldComponentUpdate(nextProps) {
        return nextProps !== this.props;
    }

    render() {

        const {align, width, height, content} = this.props;

        const style = {
            textAlign: align,
            width: width,
            height: height
        };

        return (
            <div className={cx(this.props).build()}>
                <div className={cx.getPartClassName('wrap1')} style={style}>
                    <div className={cx.getPartClassName('wrap2')}>
                        <div className={cx.getPartClassName('wrap3')}>
                            {content}
                        </div>
                    </div>
                </div>
            </div>
        );

    }

}

TableCell.displayName = 'TableCell';

TableCell.propTypes = {

    part: PropTypes.oneOf(['header', 'body', 'footer']),

    columnData: PropTypes.any,
    rowData: PropTypes.any,
    columnIndex: PropTypes.number,
    rowIndex: PropTypes.number,
    cellData: PropTypes.any,
    cellKey: PropTypes.oneOfType([
        PropTypes.string.isRequired,
        PropTypes.number.isRequired
    ]),
    height: PropTypes.number.isRequired,
    width: PropTypes.number.isRequired,
    minWidth: PropTypes.number,
    maxWidth: PropTypes.number,

    cellRenderer: PropTypes.func

};

TableCell.defaultProps = {
    align: 'left'
};