/** * External dependencies */ import { __ } from '@wordpress/i18n'; import classnames from 'classnames'; import { InnerBlocks, useBlockProps, InspectorControls, } from '@wordpress/block-editor'; import { SidebarLayout } from '@woocommerce/base-components/sidebar-layout'; import { CheckoutProvider, EditorProvider } from '@woocommerce/base-context'; import { previewCart, previewSavedPaymentMethods, } from '@woocommerce/resource-previews'; import { PanelBody, ToggleControl, CheckboxControl, } from '@wordpress/components'; import type { TemplateArray } from '@wordpress/blocks'; import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; /** * Internal dependencies */ import './inner-blocks'; import './styles/editor.scss'; import { addClassToBody, BlockSettings, useBlockPropsWithLocking, } from '../cart-checkout-shared'; import { CheckoutBlockContext, CheckoutBlockControlsContext } from './context'; import type { Attributes } from './types'; // This is adds a class to body to signal if the selected block is locked addClassToBody(); // Array of allowed block names. const ALLOWED_BLOCKS: string[] = [ 'woocommerce/checkout-fields-block', 'woocommerce/checkout-totals-block', ]; export const Edit = ( { attributes, setAttributes, }: { attributes: Attributes; setAttributes: ( attributes: Record< string, unknown > ) => undefined; } ): JSX.Element => { const { allowCreateAccount, showCompanyField, requireCompanyField, showApartmentField, showPhoneField, requirePhoneField, showOrderNotes, showPolicyLinks, showReturnToCart, showRateAfterTaxName, cartPageId, } = attributes; const defaultTemplate = [ [ 'woocommerce/checkout-fields-block', {}, [] ], [ 'woocommerce/checkout-totals-block', {}, [] ], ] as TemplateArray; const toggleAttribute = ( key: keyof Attributes ): void => { const newAttributes = {} as Partial< Attributes >; newAttributes[ key ] = ! ( attributes[ key ] as boolean ); setAttributes( newAttributes ); }; const accountControls = (): JSX.Element => ( setAttributes( { allowCreateAccount: ! allowCreateAccount, } ) } /> ); const addressFieldControls = (): JSX.Element => (

{ __( 'Show or hide fields in the checkout address forms.', 'woo-gutenberg-products-block' ) }

toggleAttribute( 'showCompanyField' ) } /> { showCompanyField && ( toggleAttribute( 'requireCompanyField' ) } className="components-base-control--nested" /> ) } toggleAttribute( 'showApartmentField' ) } /> toggleAttribute( 'showPhoneField' ) } /> { showPhoneField && ( toggleAttribute( 'requirePhoneField' ) } className="components-base-control--nested" /> ) }
); const blockProps = useBlockPropsWithLocking(); return (
); }; export const Save = (): JSX.Element => { return (
); };