import React, { PureComponent, ReactNode, ReactElement } from 'react'; import { Label } from './Label'; import { uniqueId } from 'lodash'; interface Props { label?: ReactNode; labelClassName?: string; id?: string; children: ReactElement; } export class Element extends PureComponent { elementId: string = this.props.id || uniqueId('form-element-'); get elementLabel() { const { label, labelClassName } = this.props; if (label) { return ( ); } return null; } get children() { const { children } = this.props; return React.cloneElement(children, { id: this.elementId }); } render() { return (
{this.elementLabel} {this.children}
); } }