import useCart from '@framework/cart/use-cart' import useUpdateUpdateAddress from '@framework/customer/address/use-update-item' import SidebarLayout from '@components/common/SidebarLayout' import { useUI } from '@components/ui/context' import { Button } from '@components/ui' import { useCheckoutContext } from '../context' type FulfillmentGroup = { type: string _id: string availableFulfillmentOptions: FulfillmentOption[] | null } type FulfillmentOption = { fulfillmentMethod?: { _id: string displayName: string } price: { displayAmount: string } } const ShippingMethod = () => { const { setSidebarView } = useUI() const { data: cart } = useCart() const { addressFields } = useCheckoutContext() const updateShippingMethod = useUpdateUpdateAddress() const shippingGroup = cart?.checkout?.fulfillmentGroups.find( (group: FulfillmentGroup) => group?.type === 'shipping' ) const handleSubmit = async (event: React.ChangeEvent) => { event.preventDefault() await updateShippingMethod({ id: cart!.id, ...addressFields, shippingMethod: { fulfillmentGroupId: cart!.checkout?.fulfillmentGroups[0]?._id ?? 'groupId', id: event.target.shippingMethod.value, }, }) setSidebarView('CHECKOUT_VIEW') } return shippingGroup ? (
setSidebarView('CHECKOUT_VIEW')}>

Shipping Methods

{shippingGroup.availableFulfillmentOptions?.map( (option: FulfillmentOption) => (
{option?.fulfillmentMethod?.displayName || 'Shipping Method'}
{option?.price.displayAmount}
) )}
) : null } export default ShippingMethod