/** * External dependencies */ import { Fragment, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import AddressForm from '@woocommerce/base-components/address-form'; import FormStep from '@woocommerce/base-components/checkout/form-step'; import CheckoutForm from '@woocommerce/base-components/checkout/form'; import NoShipping from '@woocommerce/base-components/checkout/no-shipping'; import TextInput from '@woocommerce/base-components/text-input'; import ShippingRatesControl, { Packages, } from '@woocommerce/base-components/shipping-rates-control'; import { CheckboxControl } from '@wordpress/components'; import { getCurrencyFromPriceResponse } from '@woocommerce/base-utils'; import FormattedMonetaryAmount from '@woocommerce/base-components/formatted-monetary-amount'; import CheckoutProvider from '@woocommerce/base-context/checkout-context'; import { ExpressCheckoutFormControl, PaymentMethods, } from '@woocommerce/base-components/payment-methods'; import { SHIPPING_ENABLED } from '@woocommerce/block-settings'; import { decodeEntities } from '@wordpress/html-entities'; /** * Internal dependencies */ import './style.scss'; import '../../../payment-methods-demo'; const Block = ( { attributes, isEditor = false, shippingRates = [] } ) => { const [ selectedShippingRate, setSelectedShippingRate ] = useState( {} ); const [ contactFields, setContactFields ] = useState( {} ); const [ shouldSavePayment, setShouldSavePayment ] = useState( true ); const [ shippingFields, setShippingFields ] = useState( {} ); const [ billingFields, setBillingFields ] = useState( {} ); const [ useShippingAsBilling, setUseShippingAsBilling ] = useState( attributes.useShippingAsBilling ); const renderShippingRatesControlOption = ( option ) => ( { label: decodeEntities( option.name ), value: option.rate_id, description: decodeEntities( option.description ), secondaryLabel: ( ), secondaryDescription: decodeEntities( option.delivery_time ), } ); const useShippingAddressAsBilling = isEditor ? attributes.useShippingAsBilling : useShippingAsBilling; const showBillingFields = ! SHIPPING_ENABLED || ! useShippingAddressAsBilling; return ( ( { __( 'Already have an account? ', 'woo-gutenberg-products-block' ) } { __( 'Log in.', 'woo-gutenberg-products-block' ) } ) } > setContactFields( { ...contactFields, email: newValue, } ) } required={ true } /> setContactFields( { ...contactFields, keepUpdated: ! contactFields.keepUpdated, } ) } /> { SHIPPING_ENABLED && ( setShippingFields( { ...shippingFields, phone: newValue, } ) } required={ true } /> setUseShippingAsBilling( isChecked ) } /> ) } { showBillingFields && ( setBillingFields( { ...billingFields, phone: newValue, } ) } required={ true } /> ) } { SHIPPING_ENABLED && ( shippingRates.length === 0 && isEditor ? ( ) : ( { shippingRates.length > 0 ? ( ) : ( setSelectedShippingRate( { ...selectedShippingRate, methods: newMethods, } ) } /> ) } setSelectedShippingRate( { ...selectedShippingRate, orderNote: ! selectedShippingRate.orderNote, } ) } /> ) ) } { /*@todo this should be something the payment method controls*/ } setShouldSavePayment( ! shouldSavePayment ) } /> ); }; export default Block;