/**
 * imui.Button
 * @author lonnyhuang
 * @date 2016-07-27
 */

import React, { PureComponent } from 'react';
import classnames from 'classnames';
import PropTypes from 'prop-types';
// @require '../style/index.scss'
export default class Button extends PureComponent {

  static propTypes = {
    /**
     * 点击事件回调
     */
    onClick: PropTypes.func,
    /**
     * 是否允许点击
     */
    disabled: PropTypes.bool,
    /**
     * 可包含子组件
     */
    children: PropTypes.any,
    /**
     * 指定链接内容
     */
    href: PropTypes.string,
    /**
     * 按钮颜色
     */
    color: PropTypes.oneOf(['primary', 'default', 'outline', 'weak']),
    /**
     * 按钮尺寸
     */
    size: PropTypes.oneOf(['l', 'm', 's']),
    /**
     * 选择器自定义类名
     */
    className: PropTypes.string,
  };

  static defaultProps = {
    onClick() {
    },
    disabled: false,
    color: 'default',
    size: 'm',
  };

  render() {
    const {
      disabled,
      onClick,
      color,
      size,
      href,
      children,
      className,
      ...others
    } = this.props;
    const classes = classnames('im-btn', className, `btn-${color}`, `btn-${size}`, {
      disabled,
    });
    let clickHandler;

    if (disabled && onClick) {
      clickHandler = () => {
      };
    } else {
      clickHandler = onClick;
    }

    if (href && !disabled) {
      return (
        <a className={classes} onClick={clickHandler} href={href} {...others}>
          {children}
        </a>
      );
    }

    return (
      <button className={classes} onClick={clickHandler} {...others}>
        {children}
      </button>
    );
  }
}
