Home Reference Source Repository

src/components/cell/Cell.js

/**
 * @author haw
 */

import React, {
  PropTypes
} from 'react';
import {classNames} from '../util';

const prefix = 'cell';

/**
 * 表格视图列表项
 * @param {Object} props 组件所使用的属性
 * @param {boolean} [props.hasArrow] 是否有访问箭头
 * @param {string} [props.href] 访问跳转链接
 * @param {string} [props.component='div'] 列表项的 `html` 标签,可选的有 `['a', 'label', 'div']`
 */
export default function Cell(props) {
  const {
    hasArrow,
    href,
    component,
    className,
    children,
    ...rest
  } = props;
  let Component = href ? 'a' : component;
  let clazz = classNames(prefix, {
    [`${prefix}-arrow`]: Component === 'a' || hasArrow,
    [className]: className
  });

  return (
    <Component className={clazz} {...rest}>
      {children}
    </Component>
  );
}

Cell.propTypes = {
  hasArrow: PropTypes.bool,
  href: PropTypes.string,
  component: PropTypes.oneOf(['a', 'label', 'div']),
  className: PropTypes.string,
  children: PropTypes.node
};

Cell.defaultProps = {
  component: 'div'
};