import * as React from 'react' ; import { AnchorHTMLAttributes , memo , FC } from 'react' ; import get from 'lodash/get' ; import Typography from '@material-ui/core/Typography' ; import { Link } from '@material-ui/core' ; import { useRecordContext } from 'ra-core' ; import sanitizeFieldRestProps from './sanitizeFieldRestProps' ; import { PublicFieldProps , InjectedFieldProps , fieldPropTypes } from './types' ; const stopPropagation = e => e . stopPropagation ( ) ; const EmailField = memo ( props => { const { className , source , emptyText , ... rest } = props ; const record = useRecordContext ( props ) ; const value = get ( record , source ) ; if ( value == null ) { return emptyText ? ( < Typography component = "span" variant = "body2" className = { className } { ... sanitizeFieldRestProps ( rest ) } > { emptyText } < /Typography>) : null; } return ( < Link className = { className } href = { `mailto:${ value }` } onClick = { stopPropagation } variant = "body2" { ... sanitizeFieldRestProps ( rest ) } > { value } < /Link>); } ) ; EmailField . defaultProps = { addLabel : true , } ; EmailField . propTypes = fieldPropTypes ; EmailField . displayName = 'EmailField' ; export interface EmailFieldProps extends PublicFieldProps , InjectedFieldProps , AnchorHTMLAttributes < HTMLAnchorElement > { } export default EmailField ;