Home Reference Source

src/components/controls/TextArea/TextArea.jsx

import React from 'react';
import PropTypes from 'prop-types';
import TextareaAutosize from 'react-textarea-autosize';

/**
 * Компонент TextAreat
 * @param {string} className
 * @param {object} style
 * @param {boolean} disabled
 * @param {boolean} disabled
 * @param {string} placeholder
 * @param {number} rows
 * @param {number} maxRows
 * @param {string|number} value
 * @param {function} onChange
 * @returns {*}
 * @constructor
 */
function TextArea({
  className,
  style,
  disabled,
  placeholder,
  rows,
  maxRows,
  value,
  onChange,
}) {
  const inputClass = `form-control ${className}`;
  return (
    <TextareaAutosize
      className={inputClass}
      style={style}
      disabled={disabled}
      placeholder={placeholder}
      minRows={rows}
      maxRows={maxRows}
      value={value || ''}
      onChange={onChange}
    />
  );
}

TextArea.propTypes = {
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
  disabled: PropTypes.bool,
  className: PropTypes.string,
  style: PropTypes.object,
  placeholder: PropTypes.string,
  onChange: PropTypes.func,
  rows: PropTypes.number,
  maxRows: PropTypes.number,
};

TextArea.defaultProps = {
  onChange: () => {},
  className: '',
  disabled: false,
  rows: 3,
  maxRows: 3,
};

export default TextArea;