Home Reference Source Repository

src/components/tabbar/TabbarIcon.js

/**
 * @author haw
 * 标签栏
 */

import React, {
  PropTypes
} from 'react';
import config from '../util/config';
import {classNames} from '../util';
import Badge from '../badge';
import {Icon} from '../icon';

const prefix = 'tabbar-icon';

/**
 * 标签项图标
 * @param {Object} props 组件所使用的属性
 * @param {string} [props.icon] 标签项图标
 * @param {string} [props.badge] 徽章的文案
 * @param {string} [props.badgeColor='red'] 徽章的背景颜色
 */
export default function TabBarIcon(props) {
  const {
    icon,
    badge,
    badgeColor,
    className,
    children,
    ...rest
  } = props;
  let clazz = classNames(prefix, {
    [className]: className
  });

  return (
    <div className={clazz} {...rest}>
      {icon ? (
        <Icon value={icon}>
          {badge ? (
            <Badge bgColor={badgeColor}>{badge}</Badge>
          ) : null}
        </Icon>
      ) : children}
    </div>
  );
}

TabBarIcon.propTypes = {
  icon: PropTypes.string,
  badge: PropTypes.oneOfType([
    PropTypes.number,
    PropTypes.string
  ]),
  badgeColor: PropTypes.oneOf(config.colors),
  className: PropTypes.string,
  children: PropTypes.node
};

TabBarIcon.defaultProps = {
  badgeColor: 'red'
};