import classNames from 'classnames/bind'
import Text from './text'

const cx = classNames.bind(_s)

export default class Textarea extends PureComponent {
  static propTypes = {
    placeholder: PropTypes.string,
    prependIcon: PropTypes.string,
    value: PropTypes.string,
    onChange: PropTypes.func,
    onKeyUp: PropTypes.func,
    onFocus: PropTypes.func,
    onBlur: PropTypes.func,
    title: PropTypes.string,
  }

  handleOnChange = (e) => {
    this.props.onChange(e.target.value)
  }

  render() {
    const {
      placeholder,
      prependIcon,
      value,
      onKeyUp,
      onFocus,
      onBlur,
      title,
    } = this.props

    const inputClasses = cx({
      default: 1,
      text: 1,
      outlineNone: 1,
      lineHeight125: 1,
      displayBlock: 1,
      py10: 1,
      bgTransparent: 1,
      fs15PX: 1,
      flexGrow1: 1,
      heightMax100VH: 1,
      resizeVertical: 1,
      colorPrimary: 1,
      px5: !!prependIcon,
      pl15: !prependIcon,
    })

    return (
      <div>
        {
          !!title &&
          <div className={[_s.default, _s.mb10, _s.pl15].join(' ')}>
            <Text size='small' weight='medium' color='secondary'>
              {title}
            </Text>
          </div>
        }
        <div className={[_s.default, _s.bgPrimary, _s.border1PX, _s.borderColorSecondary, _s.flexRow, _s.radiusSmall, _s.alignItemsCenter].join(' ')}>
          <textarea
            className={inputClasses}
            type='text'
            placeholder={placeholder}
            value={value}
            onChange={this.handleOnChange}
            onKeyUp={onKeyUp}
            onFocus={onFocus}
            onBlur={onBlur}
          />

        </div>
      </div>
    )
  }
}