import { Listbox, Transition } from "@headlessui/react" import { ChevronUpDown } from "@medusajs/icons" import { clx } from "@medusajs/ui" import { Fragment, useMemo } from "react" import Radio from "@modules/common/components/radio" import compareAddresses from "@lib/util/compare-addresses" import { HttpTypes } from "@medusajs/types" type AddressSelectProps = { addresses: HttpTypes.StoreCustomerAddress[] addressInput: HttpTypes.StoreCartAddress | null onSelect: ( address: HttpTypes.StoreCartAddress | undefined, email?: string ) => void } const AddressSelect = ({ addresses, addressInput, onSelect, }: AddressSelectProps) => { const handleSelect = (id: string) => { const savedAddress = addresses.find((a) => a.id === id) if (savedAddress) { onSelect(savedAddress as HttpTypes.StoreCartAddress) } } const selectedAddress = useMemo(() => { return addresses.find((a) => compareAddresses(a, addressInput)) }, [addresses, addressInput]) return (
{({ open }) => ( <> {selectedAddress ? selectedAddress.address_1 : "Choose an address"} )} {addresses.map((address) => { return (
{address.first_name} {address.last_name} {address.company && ( {address.company} )}
{address.address_1} {address.address_2 && ( , {address.address_2} )} {address.postal_code}, {address.city} {address.province && `${address.province}, `} {address.country_code?.toUpperCase()}
) })}
) } export default AddressSelect