import clsx from 'clsx';
import PropTypes from 'prop-types';
import React, { memo } from 'react';
import DropdownSelect from '../DropdownSelect';
import i18n from './i18n';
import styles from './styles.scss';
const PhoneNumber = ({
formatPhone,
usageType,
label,
currentLocale,
phoneNumber,
}: any) => {
const usageTypeDom =
label || usageType ? (
{label || i18n.getString(usageType, currentLocale)}
) : null;
return (
{usageTypeDom}
{formatPhone(phoneNumber)}
);
};
PhoneNumber.propTypes = {
formatPhone: PropTypes.func.isRequired,
phoneNumber: PropTypes.string,
usageType: PropTypes.string,
label: PropTypes.string,
currentLocale: PropTypes.string.isRequired,
};
PhoneNumber.defaultProps = {
phoneNumber: null,
usageType: null,
};
interface FromFieldIns {
fromNumber: string;
formatPhone: (...args: any[]) => any;
fromNumbers: any[];
onChange: (...args: any[]) => any;
currentLocale: string;
hidden: boolean;
showAnonymous: boolean;
className?: string;
disabled?: boolean;
showCustomPhoneLabel?: boolean;
}
// phone number formatting becomes expensive when there are lots of numbers
// memo makes this a pure component to reduce rendering cost
const FromField = memo(function FromField({
className,
fromNumber,
fromNumbers,
onChange,
formatPhone,
hidden,
disabled,
showAnonymous,
currentLocale,
showCustomPhoneLabel,
}: FromFieldIns) {
if (hidden) {
return null;
}
const options = [...fromNumbers];
if (showAnonymous) {
options.push({
phoneNumber: 'anonymous',
});
}
return (
{
if (value === 'anonymous') {
return {i18n.getString('Blocked', currentLocale)};
}
return (
);
}}
valueFunction={(option) => option.phoneNumber}
renderFunction={(option) => {
if (option.phoneNumber === 'anonymous') {
return {i18n.getString('Blocked', currentLocale)};
}
return (
);
}}
/>
);
});
// @ts-expect-error TS(2339): Property 'propTypes' does not exist on type 'Named... Remove this comment to see the full error message
FromField.propTypes = {
fromNumber: PropTypes.string,
formatPhone: PropTypes.func.isRequired,
fromNumbers: PropTypes.arrayOf(
PropTypes.shape({
phoneNumber: PropTypes.string,
usageType: PropTypes.string,
}),
).isRequired,
onChange: PropTypes.func.isRequired,
currentLocale: PropTypes.string.isRequired,
hidden: PropTypes.bool.isRequired,
showAnonymous: PropTypes.bool,
className: PropTypes.string,
disabled: PropTypes.bool,
};
// @ts-expect-error TS(2339): Property 'defaultProps' does not exist on type 'Na... Remove this comment to see the full error message
FromField.defaultProps = {
fromNumber: null,
className: undefined,
showAnonymous: true,
disabled: false,
};
export default FromField;