/** * External dependencies */ import { useRef } from '@wordpress/element'; import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import EditableButton from '@woocommerce/editor-components/editable-button'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import PageSelector from '@woocommerce/editor-components/page-selector'; import { CART_PAGE_ID } from '@woocommerce/block-settings'; /** * Internal dependencies */ import { defaultButtonLabel } from './constants'; export const Edit = ( { attributes, setAttributes, }: { attributes: { checkoutPageId: number; className: string; buttonLabel: string; }; setAttributes: ( attributes: Record< string, unknown > ) => void; } ): JSX.Element => { const blockProps = useBlockProps(); const { checkoutPageId = 0, buttonLabel } = attributes; const { current: savedCheckoutPageId } = useRef( checkoutPageId ); const currentPostId = useSelect( ( select ) => { if ( ! savedCheckoutPageId ) { const store = select( 'core/editor' ); return store.getCurrentPostId(); } return savedCheckoutPageId; }, [ savedCheckoutPageId ] ); return (
{ ! ( currentPostId === CART_PAGE_ID && savedCheckoutPageId === 0 ) && ( setAttributes( { checkoutPageId: id } ) } labels={ { title: __( 'Proceed to Checkout button', 'woocommerce' ), default: __( 'WooCommerce Checkout Page', 'woocommerce' ), } } /> ) } { setAttributes( { buttonLabel: content, } ); } } />
); }; export const Save = (): JSX.Element => { return
; };