Sha256: 7836f221a69e1747ea88bae4e959c1c10de90f8f1f3b779c3e688fe5e9fd5561

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

window.addEventListener('DOMContentLoaded', () => {
  const form = document.querySelector('#checkout_form_payment');
  const existingCards = document.querySelector('#existing_cards');

  if (form) {
    if (existingCards) {
      const paymentMethodControls = document.querySelector('.payment-method-controls');
      const useExistingCardYes = document.querySelector('#use_existing_card_yes');
      const useExistingCardNo = document.querySelector('#use_existing_card_no');
      const existingCcRadios = document.querySelectorAll('.existing-cc-radio');

      paymentMethodControls.style.display = 'none';

      useExistingCardYes.addEventListener('click', () => {
        paymentMethodControls.style.display = 'none';
        existingCcRadios.forEach(radio => radio.removeAttribute('disabled'));
      });

      useExistingCardNo.addEventListener('click', () => {
        paymentMethodControls.style.display = 'block';
        existingCcRadios.forEach(radio => radio.setAttribute('disabled', true));
      });
    }

    const selectors = document
      .querySelectorAll('input[type="radio"][name="order[payments_attributes][][payment_method_id]"]');

    selectors.forEach(selector => {
      selector.addEventListener('click', () => {
        const controls = document.querySelectorAll('.payment-method-controls li');
        controls.forEach(control => control.style.display = 'none');

        if (selector.checked) {
          const selectedControl = document.querySelector(`#payment_method_${selector.value}`);
          selectedControl.style.display = 'block';
        }
      });
    });

    // Activate already checked payment method if form is re-rendered
    // i.e. if user enters invalid data
    document.querySelector('input[type="radio"]:checked').click();
  }
});

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_starter_frontend-0.1.0 app/assets/javascripts/spree/frontend/checkout/payment.js