globocom/megadraft-table-plugin

View on GitHub
src/FormComponents.js

Summary

Maintainability
A
0 mins
Test Coverage
/*
 * Copyright (c) 2017, Globo.com <https://github.com/globocom/megadraft-table-plugin>
 *
 * License: MIT
 */

import React from "react";
import classNames from "classnames";

export function FormItem({children, isRequired = false, hasErrors = false, className = ""}) {
  const inputClassNames = classNames({
    "bs-ui-form-control": true,
    "bs-ui-form-control--required": isRequired,
    "bs-ui-form-control--error": hasErrors
  }, className);

  return (
    <div className={inputClassNames}>
      {children}
    </div>
  );
}

export function Checkbox({name, value, isChecked, className, onChange}) {
  return (
    <input type="checkbox"
      className={className}
      name={name}
      checked={isChecked}
      value={value}
      onChange={onChange} />
  );
}

export function Input({title, name, value, errors = [], onChange, onBlur, isRequired = true}) {
  return (
    <FormItem isRequired={isRequired} hasErrors={errors.length !== 0}>
      <label className="bs-ui-form-control__label" htmlFor={name}>{title}</label>
      <input className="bs-ui-form-control__field"
        type="text"
        name={name}
        value={value}
        onChange={onChange}
        onBlur={onBlur} required={isRequired}/>
      <p className="bs-ui-form-control__field-error">
        {errors.map( (error, index) => <span key={index}>{error}</span>)}
      </p>
    </FormItem>
  );
}