woocommerce-paypal-payments/modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js

147 lines
6.5 KiB
JavaScript
Raw Normal View History

2020-04-30 15:28:48 +03:00
import ErrorHandler from '../ErrorHandler';
import CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';
class CheckoutBootstap {
constructor(gateway, renderer, messages, spinner) {
this.gateway = gateway;
2020-04-09 12:23:44 +03:00
this.renderer = renderer;
this.messages = messages;
this.spinner = spinner;
}
init() {
this.render();
jQuery(document.body).on('updated_checkout', () => {
this.render()
});
jQuery(document.body).
on('updated_checkout payment_method_selected', () => {
this.switchBetweenPayPalandOrderButton()
this.displayPlaceOrderButtonForSavedCreditCards()
})
setTimeout(() => {
jQuery('#saved-credit-card').on('change', () => {
this.displayPlaceOrderButtonForSavedCreditCards()
})
}, 3000)
this.switchBetweenPayPalandOrderButton()
this.displayPlaceOrderButtonForSavedCreditCards()
}
shouldRender() {
if (document.querySelector(this.gateway.button.cancel_wrapper)) {
return false;
}
return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;
}
render() {
if (!this.shouldRender()) {
return;
}
if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {
document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');
}
const actionHandler = new CheckoutActionHandler(
PayPalCommerceGateway,
2020-07-28 08:05:18 +03:00
new ErrorHandler(this.gateway.labels.error.generic),
this.spinner
);
this.renderer.render(
this.gateway.button.wrapper,
2020-04-30 15:28:48 +03:00
this.gateway.hosted_fields.wrapper,
actionHandler.configuration(),
);
}
switchBetweenPayPalandOrderButton() {
jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());
const currentPaymentMethod = jQuery(
'input[name="payment_method"]:checked').val();
2020-08-18 11:38:41 +03:00
if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {
this.renderer.hideButtons(this.gateway.button.wrapper);
2020-08-19 10:27:53 +03:00
this.renderer.hideButtons(this.gateway.messages.wrapper);
2020-04-30 15:28:48 +03:00
this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);
jQuery('#place_order').show();
}
else {
jQuery('#place_order').hide();
2020-08-18 11:38:41 +03:00
if (currentPaymentMethod === 'ppcp-gateway') {
this.renderer.showButtons(this.gateway.button.wrapper);
2020-08-19 10:27:53 +03:00
this.renderer.showButtons(this.gateway.messages.wrapper);
this.messages.render()
this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
2020-08-18 11:38:41 +03:00
}
if (currentPaymentMethod === 'ppcp-credit-card-gateway') {
this.renderer.hideButtons(this.gateway.button.wrapper)
this.renderer.hideButtons(this.gateway.messages.wrapper)
this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
2020-08-18 11:38:41 +03:00
}
}
}
displayPlaceOrderButtonForSavedCreditCards() {
const currentPaymentMethod = jQuery(
'input[name="payment_method"]:checked').val();
if (currentPaymentMethod !== 'ppcp-credit-card-gateway') {
return;
}
if (jQuery('#saved-credit-card').length && jQuery('#saved-credit-card').val() !== '') {
this.renderer.hideButtons(this.gateway.button.wrapper)
this.renderer.hideButtons(this.gateway.messages.wrapper)
this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
jQuery('#place_order').show()
this.disableCreditCardFields()
} else {
jQuery('#place_order').hide()
this.renderer.hideButtons(this.gateway.button.wrapper)
this.renderer.hideButtons(this.gateway.messages.wrapper)
this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
this.enableCreditCardFields()
}
}
disableCreditCardFields() {
2021-09-14 09:28:48 +02:00
jQuery('label[for="ppcp-credit-card-gateway-card-number"]').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-number').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-number').attr("disabled", true)
jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-expiry').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-expiry').attr("disabled", true)
2021-09-14 09:28:48 +02:00
jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-cvc').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-cvc').attr("disabled", true)
2021-09-14 09:28:48 +02:00
jQuery('label[for="vault"]').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-vault').addClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-vault').attr("disabled", true)
}
enableCreditCardFields() {
2021-09-14 09:28:48 +02:00
jQuery('label[for="ppcp-credit-card-gateway-card-number"]').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-number').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-number').attr("disabled", false)
2021-09-14 09:28:48 +02:00
jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-expiry').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-expiry').attr("disabled", false)
jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-cvc').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-gateway-card-cvc').attr("disabled", false)
2021-09-14 09:28:48 +02:00
jQuery('label[for="vault"]').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-vault').removeClass('ppcp-credit-card-gateway-form-field')
jQuery('#ppcp-credit-card-vault').attr("disabled", false)
}
}
export default CheckoutBootstap