import React from 'react';
import {Icon} from 'component/common.js';

const Link = (props) => {
  const {
    href,
    title,
    onClick,
    style,
    label,
    icon,
    badge,
    button,
    hidden,
    disabled,
  } = props
  
  const className = (props.className || '') +
    (!props.className && !props.button ? 'button-text' : '') + // Non-button links get the same look as text buttons
    (props.button ? ' button-block button-' + props.button + ' button-set-item' : '') +
    (props.disabled ? ' disabled' : '');


  let content;
  if (props.children) {
    content = this.props.children
  } else {
    content = (
      <span {... 'button' in props ? {className: 'button__content'} : {}}>
        {'icon' in props ? <Icon icon={icon} fixed={true} /> : null}
        {label ? <span className="link-label">{label}</span> : null}
        {'badge' in props ? <span className="badge">{badge}</span> : null}
      </span>
    )
  }

  return (
    <a className={className} href={href || 'javascript:;'} title={title}
      onClick={onClick}
      {... 'style' in props ? {style: style} : {}}>
      {content}
    </a>
  );
}

export default Link

// export let Link = React.createClass({
//   propTypes: {
//     label: React.PropTypes.string,
//     icon: React.PropTypes.string,
//     button: React.PropTypes.string,
//     badge: React.PropTypes.string,
//     hidden: React.PropTypes.bool,
//   },
//   getDefaultProps: function() {
//     return {
//       hidden: false,
//       disabled: false,
//     };
//   },
//   handleClick: function(e) {
//     if (this.props.onClick) {
//       this.props.onClick(e);
//     }
//   },
//   render: function() {
//     if (this.props.hidden) {
//       return null;
//     }

//     /* The way the class name is generated here is a mess -- refactor */

//     const className = (this.props.className || '') +
//       (!this.props.className && !this.props.button ? 'button-text' : '') + // Non-button links get the same look as text buttons
//       (this.props.button ? ' button-block button-' + this.props.button + ' button-set-item' : '') +
//       (this.props.disabled ? ' disabled' : '');

//     let content;
//     if (this.props.children) { // Custom content
//       content = this.props.children;
//     } else {
//       content = (
//         <span {... 'button' in this.props ? {className: 'button__content'} : {}}>
//           {'icon' in this.props ? <Icon icon={this.props.icon} fixed={true} /> : null}
//           {<span className="link-label">{this.props.label}</span>}
//           {'badge' in this.props ? <span className="badge">{this.props.badge}</span> : null}
//         </span>
//       );
//     }

//     return (
//       <a className={className} href={this.props.href || 'javascript:;'} title={this.props.title}
//          onClick={this.handleClick} {... 'style' in this.props ? {style: this.props.style} : {}}>
//         {content}
//       </a>
//     );
//   }
// });