@zohodesk/dot
Version:
In this Library, we Provide Some Basic Components to Build Your Application
180 lines (170 loc) • 5.87 kB
JavaScript
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
/**** Libraries ****/
import React, { PureComponent } from 'react';
import { defaultProps } from "./props/defaultProps";
import { propTypes } from "./props/propTypes";
/**** Components ****/
import Label from '@zohodesk/components/es/v1/Label/Label';
import Textarea from '@zohodesk/components/es/Textarea/Textarea';
import ValidationMessage from "../ValidationMessage/ValidationMessage";
import { getUniqueId } from '@zohodesk/components/es/Provider/IdProvider';
import FieldContainer from "../FieldContainer/FieldContainer";
/**** CSS ****/
import style from "../Fields.module.css";
export default class TextareaField extends PureComponent {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.handleBlur = this.handleBlur.bind(this);
this.handleGetRef = this.handleGetRef.bind(this); // this.handleLabelClick = this.handleLabelClick.bind(this);
this.getNextId = getUniqueId(this);
}
handleChange(value) {
let {
id,
onChange
} = this.props;
onChange && onChange(id, value);
}
handleBlur(value) {
let {
id,
onBlur
} = this.props;
onBlur && onBlur(id, value);
}
handleGetRef(el) {
let {
getRef,
id
} = this.props;
this.textarea = el;
getRef && getRef(el, id);
} // handleLabelClick() {
// let { isFocusOnLabelClick } = this.props;
// if (isFocusOnLabelClick && this.textarea && this.textarea.focus) {
// this.textarea.focus();
// }
// }
render() {
let {
labelName,
id,
isMandatory,
textBoxSize,
animated,
textBoxVariant,
isReadOnly,
validationMessage,
validationPalette,
maxLength,
value,
errorType,
isDisabled,
title,
placeHolder,
dataId,
dataSelectorId,
validationRuleMessage,
validationRulePalette,
// onKeyDown,
onFocus,
infoText,
borderColor,
fieldSize,
labelPalette,
labelCustomClass,
htmlId,
lockedInfoText,
isLocked,
customProps,
renderLabelProps,
renderRightPlaceholderNode,
rightPlaceholderCustomClass
} = this.props;
const {
LabelProps = {},
TextareaProps = {},
ValidationMessageProps1 = {},
ValidationMessageProps2 = {}
} = customProps;
let uniqueId = htmlId ? htmlId : this.getNextId();
let textAreaContent = /*#__PURE__*/React.createElement(Textarea, _extends({
onChange: this.handleChange,
animated: animated,
size: fieldSize === 'medium' ? textBoxSize : 'xmedium',
variant: textBoxVariant,
isReadOnly: isReadOnly,
isDisabled: isDisabled,
getRef: this.handleGetRef,
maxLength: maxLength,
text: value,
placeHolder: placeHolder,
dataId: `property(${dataId})`,
onFocus: onFocus,
onBlur: this.handleBlur,
borderColor: borderColor,
needEffect: isReadOnly || isDisabled ? false : true,
resize: "vertical" // onKeyDown={onKeyDown}
,
htmlId: uniqueId
}, TextareaProps, {
a11y: {
ariaLabelledby: labelName
}
}));
return /*#__PURE__*/React.createElement("div", {
className: `${style.container} ${isDisabled ? style.disabled : isReadOnly ? style.readonly : ''}`,
"data-title": isDisabled ? title : null,
"data-selector-id": dataSelectorId
}, labelName && /*#__PURE__*/React.createElement(FieldContainer, {
infoText: infoText,
isLocked: isLocked,
lockedInfoText: lockedInfoText,
renderProps: renderLabelProps
}, /*#__PURE__*/React.createElement(Label, _extends({
text: labelName,
isRequired: isMandatory,
isDisabled: isDisabled,
isReadOnly: isReadOnly,
palette: labelPalette,
customClass: {
label: labelCustomClass
},
size: fieldSize === 'small' ? 'small' : 'medium',
testId: isDisabled ? `${dataId}_label_disabled` : isMandatory ? `${dataId}_label_mandatory` : `${dataId}_label`,
htmlFor: uniqueId,
customId: isDisabled ? `${dataId}_label_disabled` : isMandatory ? `${dataId}_label_mandatory` : `${dataId}_label`,
tagAttributes: {
label: {
id
}
}
}, LabelProps))), /*#__PURE__*/React.createElement("div", {
className: `${style.fieldContainer} ${labelName ? style[`fieldMargin_${fieldSize}`] : ''}`
}, !renderRightPlaceholderNode ? textAreaContent : /*#__PURE__*/React.createElement("div", {
className: style.hasChildren
}, textAreaContent, /*#__PURE__*/React.createElement("div", {
className: `${style.rightPlaceholder} ${rightPlaceholderCustomClass}`
}, renderRightPlaceholderNode)), validationMessage && /*#__PURE__*/React.createElement(ValidationMessage, _extends({
text: validationMessage,
palette: validationPalette,
type: errorType,
htmlFor: uniqueId,
dataId: `${dataId}_ValidationMessage`
}, ValidationMessageProps1)), validationRuleMessage && /*#__PURE__*/React.createElement(ValidationMessage, _extends({
text: validationRuleMessage,
palette: validationRulePalette,
type: errorType,
htmlFor: uniqueId,
dataId: `${dataId}_ValidationRuleMessage`
}, ValidationMessageProps2))));
}
}
TextareaField.propTypes = propTypes;
TextareaField.defaultProps = defaultProps; // if (__DOCS__) {
// TextareaField.docs = {
// componentGroup: 'Form Fields',
// folderName: 'General'
// };
// }