@automattic/form-components
Version:
React-based form components, as used on WordPress.com
39 lines (32 loc) • 971 B
JSX
/**
* External dependencies
*/
import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { localize } from 'i18n-calypso';
import { isObject, omit } from 'lodash';
const renderRequiredBadge = translate =>
<small className="form-label__required">
{ translate( 'Required' ) }
</small>;
const addKeys = elements =>
elements.map( ( elem, idx ) => ( isObject( elem ) ? { ...elem, key: idx } : elem ) );
const FormLabel = ( { children, required, translate, className, ...extraProps } ) => {
children = React.Children.toArray( children ) || [];
if ( required ) {
children.push( renderRequiredBadge( translate ) );
}
return (
<label
{ ...omit( extraProps, 'moment', 'numberFormat' ) }
className={ classnames( className, 'form-label' ) }
>
{ children.length ? addKeys( children ) : null }
</label>
);
};
FormLabel.propTypes = {
required: PropTypes.bool,
};
export default localize( FormLabel );