/** * External dependencies */ import classnames from 'classnames'; import { withFilteredAttributes } from '@woocommerce/shared-hocs'; import { FormStep } from '@woocommerce/blocks-components'; import { useCheckoutAddress } from '@woocommerce/base-context/hooks'; import { useSelect } from '@wordpress/data'; import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data'; /** * Internal dependencies */ import Block from './block'; import attributes from './attributes'; import { useCheckoutBlockContext } from '../../context'; import { getBillingAddresssBlockTitle, getBillingAddresssBlockDescription, } from './utils'; const FrontendBlock = ( { title, description, children, className, }: { title: string; description: string; children: JSX.Element; className?: string; } ): JSX.Element | null => { const { showFormStepNumbers } = useCheckoutBlockContext(); const checkoutIsProcessing = useSelect( ( select ) => select( CHECKOUT_STORE_KEY ).isProcessing() ); const { showCompanyField, requireCompanyField, showApartmentField, requireApartmentField, showPhoneField, requirePhoneField, } = useCheckoutBlockContext(); const { showBillingFields, forcedBillingAddress, useBillingAsShipping } = useCheckoutAddress(); if ( ! showBillingFields && ! useBillingAsShipping ) { return null; } title = getBillingAddresssBlockTitle( title, forcedBillingAddress ); description = getBillingAddresssBlockDescription( description, forcedBillingAddress ); return ( { children } ); }; export default withFilteredAttributes( attributes )( FrontendBlock );