import React from "react"; import classnames from "classnames"; import { isEmpty } from "lodash"; import TooltipWrapper from "components/TooltipWrapper"; import { PlacesType } from "react-tooltip-5"; // all form-field styles are defined in _global.scss, which apply here and elsewhere const baseClass = "form-field"; export interface IFormFieldProps { children: JSX.Element; label: Array | JSX.Element | string; name: string; helpText?: Array | JSX.Element | string; type?: string; error?: string; className?: string; tooltip?: React.ReactNode; labelTooltipPosition?: PlacesType; } const FormField = ({ children, className, error, helpText, label, name, type, tooltip, labelTooltipPosition, }: IFormFieldProps): JSX.Element => { const renderLabel = () => { const labelWrapperClasses = classnames(`${baseClass}__label`, { [`${baseClass}__label--error`]: !isEmpty(error), }); if (!label) { return false; } return ( ); }; const renderHelpText = () => { if (helpText) { return {helpText}; } return false; }; const formFieldClass = classnames( baseClass, { [`${baseClass}--${type}`]: !isEmpty(type), }, className ); return (
{renderLabel()} {children} {renderHelpText()}
); }; export default FormField;