/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { useState, useEffect, useRef } from '@wordpress/element'; import { PanelBody, PanelRow } from 'wordpress-components'; import { Button } from '@woocommerce/base-components/cart-checkout'; import { ValidatedTextInput } from '@woocommerce/base-components/text-input'; import Label from '@woocommerce/base-components/label'; import { ValidationInputError } from '@woocommerce/base-components/validation'; import PropTypes from 'prop-types'; import { withInstanceId } from 'wordpress-compose'; import { useValidationContext } from '@woocommerce/base-context'; /** * Internal dependencies */ import LoadingMask from '../../loading-mask'; import './style.scss'; const TotalsCouponCodeInput = ( { instanceId, isLoading = false, initialOpen, onSubmit = () => {}, } ) => { const [ couponValue, setCouponValue ] = useState( '' ); const currentIsLoading = useRef( false ); const { getValidationError, getValidationErrorId } = useValidationContext(); const validationError = getValidationError( 'coupon' ); useEffect( () => { if ( currentIsLoading.current !== isLoading ) { if ( ! isLoading && couponValue && ! validationError ) { setCouponValue( '' ); } currentIsLoading.current = isLoading; } }, [ isLoading, couponValue, validationError ] ); const textInputId = `wc-block-coupon-code__input-${ instanceId }`; return ( } initialOpen={ initialOpen } >
{ setCouponValue( newCouponValue ); } } validateOnMount={ false } showError={ false } />
); }; TotalsCouponCodeInput.propTypes = { onSubmit: PropTypes.func, isLoading: PropTypes.bool, }; export default withInstanceId( TotalsCouponCodeInput );