import { __ } from '@wordpress/i18n';
import { useMemo } from '@wordpress/element';
import {
Card,
CardBody,
CardHeader,
Flex,
FlexItem,
Icon,
Tooltip,
} from '@wordpress/components';
import { edit } from '@wordpress/icons';
import type { StoreSettingsResponse } from '../../types/settings';
import type { Order } from '../../types';
export interface AddressBlockProps {
title: string;
addressData: StoreSettingsResponse | Order;
tooltip?: string;
editUrl?: string;
type: 'storeAddress' | 'orderAddress';
}
function toTitleCase(text: string): string {
return text
.toLowerCase()
.replace(/(^|\s|-)\w/g, (char) => char.toUpperCase());
}
export default function AddressBlock({
title,
addressData,
editUrl,
tooltip,
type,
}: AddressBlockProps) {
const addressObject = useMemo(() => {
if (type === 'storeAddress') {
const storeAddress = addressData as StoreSettingsResponse;
return (
<>
{toTitleCase(storeAddress.contactName || storeAddress.organisation)}
{storeAddress.property}, {storeAddress.street}
{storeAddress.town}, {storeAddress.county} {storeAddress.postcode}
{storeAddress.countryName}
{storeAddress.email}
{storeAddress.phone}
>
)
} else {
const orderAddress = addressData as Order;
return (
<>
{toTitleCase(orderAddress.customer?.name)}
{orderAddress.shipping?.company}
{orderAddress.shipping?.address_1} {orderAddress.shipping?.address_2}
{orderAddress.shipping?.city}, {orderAddress.shipping?.state}, {orderAddress.shipping?.postcode}
{orderAddress.shipping?.country_name}
{orderAddress.customer?.email}
{orderAddress.shipping?.phone}
>
)
}
}, [addressData, type]);
return (
{title}
{editUrl && (
)}
{addressObject}
);
}