import React, { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { makeStyles } from 'tss-react/mui'; import { IconRecordAccount, IconRecordContact, IconRecordLead, IconRecordOpportunity } from '../../../base/icons/svg'; import { BUTTON_TYPES } from '../../../base/ui/constants.web'; import { ISalesforceData, SalesforceObjectType } from '../../types'; import { RecordListItem } from './RecordListItem'; interface IProps { onUnlink: (type: SalesforceObjectType, id: string) => void; salesforceData: ISalesforceData | null; unlinkingId: string | null; } const useStyles = makeStyles()(theme => { return { section: { marginTop: '24px', paddingTop: '16px', borderTop: `1px solid ${theme.palette.ui05}` }, title: { fontSize: '0.875rem', fontWeight: 600, margin: '0 0 12px 0' }, list: { listStyle: 'none', margin: 0, padding: 0 } }; }); /** * Component for displaying currently linked Salesforce objects with unlink buttons. * * @param {IProps} props - Component props. * @returns {React.ReactElement} */ export const CurrentLinksSection = ({ salesforceData, unlinkingId, onUnlink }: IProps) => { const { t } = useTranslation(); const { classes } = useStyles(); const hasAccount = Boolean(salesforceData?.account); const hasLeads = salesforceData?.leads?.length; const hasContacts = salesforceData?.contacts?.length; const hasDeal = Boolean(salesforceData?.deal); const hasAnyLinks = hasAccount || hasLeads || hasContacts || hasDeal; const handleUnlinkAccount = useCallback((id: string) => { onUnlink('Account', id); }, [ onUnlink ]); const handleUnlinkLead = useCallback((id: string) => { onUnlink('Lead', id); }, [ onUnlink ]); const handleUnlinkContact = useCallback((id: string) => { onUnlink('Contact', id); }, [ onUnlink ]); const handleUnlinkOpportunity = useCallback((id: string) => { onUnlink('Opportunity', id); }, [ onUnlink ]); if (!hasAnyLinks) { return null; } return (

{t('dialog.currentLinks')}

); }; export default CurrentLinksSection;