/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { useBlockProps, RichText, InspectorControls, } from '@wordpress/block-editor'; import { CheckboxControl } from '@woocommerce/blocks-checkout'; import { PanelBody, ToggleControl, Notice } from '@wordpress/components'; import { PRIVACY_URL, TERMS_URL } from '@woocommerce/block-settings'; import { ADMIN_URL } from '@woocommerce/settings'; import { Icon, external } from '@wordpress/icons'; /** * Internal dependencies */ import './editor.scss'; import { termsConsentDefaultText, termsCheckboxDefaultText } from './constants'; export const Edit = ( { attributes: { checkbox, text }, setAttributes, }: { attributes: { text: string; checkbox: boolean }; setAttributes: ( attributes: Record< string, unknown > ) => void; } ): JSX.Element => { const blockProps = useBlockProps(); const defaultText = checkbox ? termsCheckboxDefaultText : termsConsentDefaultText; const currentText = text || defaultText; return (
setAttributes( { checkbox: ! checkbox, } ) } />
{ checkbox ? ( <> setAttributes( { text: value } ) } /> ) : ( setAttributes( { text: value } ) } /> ) }
{ /* Show this notice if a terms page or a privacy page is not setup. */ } { ( ! TERMS_URL || ! PRIVACY_URL ) && ( { __( 'Setup a Terms and Conditions page', 'woo-gutenberg-products-block' ) } ), onClick: () => window.open( `${ ADMIN_URL }admin.php?page=wc-settings&tab=advanced`, '_blank' ), }, ! PRIVACY_URL && { className: 'wc-block-checkout__terms_notice-button', label: ( <> { __( 'Setup a Privacy Policy page', 'woo-gutenberg-products-block' ) } ), onClick: () => window.open( `${ ADMIN_URL }options-privacy.php`, '_blank' ), }, ].filter( Boolean ) } >

{ __( "You don't seem to have a Terms and Conditions and/or a Privacy Policy pages setup.", 'woo-gutenberg-products-block' ) }

) } { /* Show this notice if we have both a terms and privacy pages, but they're not present in the text. */ } { TERMS_URL && PRIVACY_URL && ! ( currentText.includes( TERMS_URL ) && currentText.includes( PRIVACY_URL ) ) && ( setAttributes( { text: '' } ), }, ] : [] } >

{ __( 'Ensure you add links to your policy pages in this section.', 'woo-gutenberg-products-block' ) }

) }
); }; export const Save = (): JSX.Element => { return
; };