62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import clsx from 'clsx';
|
|
import { withFilteredAttributes } from '@woocommerce/shared-hocs';
|
|
import { FormStep } from '@woocommerce/blocks-components';
|
|
import { useSelect } from '@wordpress/data';
|
|
import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
|
|
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,
|
|
}: {
|
|
title: string;
|
|
description: string;
|
|
showStepNumber: boolean;
|
|
children: JSX.Element;
|
|
className?: string;
|
|
} ) => {
|
|
const { checkoutIsProcessing, prefersCollection } = useSelect(
|
|
( select ) => {
|
|
const checkoutStore = select( CHECKOUT_STORE_KEY );
|
|
return {
|
|
checkoutIsProcessing: checkoutStore.isProcessing(),
|
|
prefersCollection: checkoutStore.prefersCollection(),
|
|
};
|
|
}
|
|
);
|
|
|
|
const { showFormStepNumbers } = useCheckoutBlockContext();
|
|
|
|
if ( ! prefersCollection || ! LOCAL_PICKUP_ENABLED ) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<FormStep
|
|
id="pickup-options"
|
|
disabled={ checkoutIsProcessing }
|
|
className={ clsx( 'wc-block-checkout__pickup-options', className ) }
|
|
title={ title }
|
|
description={ description }
|
|
showStepNumber={ showFormStepNumbers }
|
|
>
|
|
<Block />
|
|
{ children }
|
|
</FormStep>
|
|
);
|
|
};
|
|
|
|
export default withFilteredAttributes( attributes )( FrontendBlock );
|