60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
/**
|
|
* External dependencies
|
|
*/
|
|
import classnames from 'classnames';
|
|
import { useStoreCart, useEmitResponse } from '@woocommerce/base-context/hooks';
|
|
import { withFilteredAttributes } from '@woocommerce/shared-hocs';
|
|
import { FormStep } from '@woocommerce/base-components/cart-checkout';
|
|
import { useSelect } from '@wordpress/data';
|
|
import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import Block from './block';
|
|
import attributes from './attributes';
|
|
import { StoreNoticesContainer } from '../../../../base/context/providers';
|
|
|
|
const FrontendBlock = ( {
|
|
title,
|
|
description,
|
|
showStepNumber,
|
|
children,
|
|
className,
|
|
}: {
|
|
title: string;
|
|
description: string;
|
|
showStepNumber: boolean;
|
|
children: JSX.Element;
|
|
className?: string;
|
|
} ) => {
|
|
const checkoutIsProcessing = useSelect( ( select ) =>
|
|
select( CHECKOUT_STORE_KEY ).isProcessing()
|
|
);
|
|
const { cartNeedsPayment } = useStoreCart();
|
|
const { noticeContexts } = useEmitResponse();
|
|
|
|
if ( ! cartNeedsPayment ) {
|
|
return null;
|
|
}
|
|
return (
|
|
<FormStep
|
|
id="payment-method"
|
|
disabled={ checkoutIsProcessing }
|
|
className={ classnames(
|
|
'wc-block-checkout__payment-method',
|
|
className
|
|
) }
|
|
title={ title }
|
|
description={ description }
|
|
showStepNumber={ showStepNumber }
|
|
>
|
|
<StoreNoticesContainer context={ noticeContexts.PAYMENTS } />
|
|
<Block />
|
|
{ children }
|
|
</FormStep>
|
|
);
|
|
};
|
|
|
|
export default withFilteredAttributes( attributes )( FrontendBlock );
|