mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 18:16:38 +08:00
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
import Spinner from './Spinner';
|
|
import FormValidator from './FormValidator';
|
|
import ErrorHandler from '../ErrorHandler';
|
|
|
|
const validateCheckoutForm = function ( config ) {
|
|
return new Promise( async ( resolve, reject ) => {
|
|
try {
|
|
const spinner = new Spinner();
|
|
const errorHandler = new ErrorHandler(
|
|
config.labels.error.generic,
|
|
document.querySelector( '.woocommerce-notices-wrapper' )
|
|
);
|
|
|
|
const formSelector =
|
|
config.context === 'checkout'
|
|
? 'form.checkout'
|
|
: 'form#order_review';
|
|
const formValidator = config.early_checkout_validation_enabled
|
|
? new FormValidator(
|
|
config.ajax.validate_checkout.endpoint,
|
|
config.ajax.validate_checkout.nonce
|
|
)
|
|
: null;
|
|
|
|
if ( ! formValidator ) {
|
|
resolve();
|
|
return;
|
|
}
|
|
|
|
formValidator
|
|
.validate( document.querySelector( formSelector ) )
|
|
.then( ( errors ) => {
|
|
if ( errors.length > 0 ) {
|
|
spinner.unblock();
|
|
errorHandler.clear();
|
|
errorHandler.messages( errors );
|
|
|
|
// fire WC event for other plugins
|
|
jQuery( document.body ).trigger( 'checkout_error', [
|
|
errorHandler.currentHtml(),
|
|
] );
|
|
|
|
reject();
|
|
} else {
|
|
resolve();
|
|
}
|
|
} );
|
|
} catch ( error ) {
|
|
console.error( error );
|
|
reject();
|
|
}
|
|
} );
|
|
};
|
|
|
|
export default validateCheckoutForm;
|