/** * External dependencies */ import clsx from 'clsx'; import { withFilteredAttributes } from '@woocommerce/shared-hocs'; import { FormStep } from '@woocommerce/blocks-components'; import { useDispatch, useSelect } from '@wordpress/data'; import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data'; import { useShippingData } from '@woocommerce/base-context/hooks'; import { LOCAL_PICKUP_ENABLED } from '@woocommerce/block-settings'; import { useCheckoutBlockContext } from '@woocommerce/blocks/checkout/context'; /** * Internal dependencies */ import Block from './block'; import attributes from './attributes'; const FrontendBlock = ( { title, description, children, className, showPrice, showIcon, shippingText, localPickupText, }: { title: string; description: string; children: JSX.Element; className?: string; showPrice: boolean; showIcon: boolean; shippingText: string; localPickupText: string; } ) => { const { showFormStepNumbers } = useCheckoutBlockContext(); const { checkoutIsProcessing, prefersCollection } = useSelect( ( select ) => { const checkoutStore = select( CHECKOUT_STORE_KEY ); return { checkoutIsProcessing: checkoutStore.isProcessing(), prefersCollection: checkoutStore.prefersCollection(), }; } ); const { setPrefersCollection } = useDispatch( CHECKOUT_STORE_KEY ); const { shippingRates, needsShipping, hasCalculatedShipping, isCollectable, } = useShippingData(); if ( ! needsShipping || ! hasCalculatedShipping || ! shippingRates || ! isCollectable || ! LOCAL_PICKUP_ENABLED ) { return null; } const onChange = ( method: string ) => { if ( method === 'pickup' ) { setPrefersCollection( true ); } else { setPrefersCollection( false ); } }; return ( { children } ); }; export default withFilteredAttributes( attributes )( FrontendBlock );