import React from 'react'; import PropTypes from 'prop-types'; import './textarea.scss'; export class Textarea extends React.Component { constructor(props){ super(props); } render() { let className = "component_textarea"; if(/Firefox/.test(navigator.userAgent)){ className += " firefox"; } if((this.refs.el !== undefined && this.refs.el.value.length > 0) || (this.props.value !== undefined && this.props.value.length > 0)){ className += " hasText"; } const disabledEnter = (e) => { if(e.key === "Enter" && e.shiftKey === false){ e.preventDefault(); const $form = getForm(this.refs.el); if($form){ $form.dispatchEvent(new Event('submit', { cancelable: true })); } } function getForm($el){ if(!$el.parentElement) return $el; if($el.parentElement.nodeName == "FORM"){ return $el.parentElement; } return getForm($el.parentElement); } }; const inputProps = (p) => { return Object.keys(p).reduce((acc, key) => { if(key === "disabledEnter") return acc; acc[key] = p[key]; return acc; }, {}); }; return ( ); } } Textarea.propTypes = { type: PropTypes.string, placeholder: PropTypes.string, disabledEnter: PropTypes.bool };