Files
openfoodnetwork/app/webpacker/controllers/stripe_cards_controller.js
Jean-Baptiste Bellet 3247c32191 Be consistant and use data-paymentmethod-id attribute
as already used on other element
2023-01-23 17:48:54 +01:00

45 lines
1.1 KiB
JavaScript

import { Controller } from "stimulus";
// Handles form elements for selecting previously saved Stripe cards from a list of cards
export default class extends Controller {
static targets = ["stripeelements", "select"];
connect() {
this.initSelectedCard();
document.addEventListener("stripecards:initSelectedCard", (e) => {
if (e.detail == this.element.dataset.paymentmethodId) {
this.initSelectedCard();
}
});
}
initSelectedCard() {
if (this.hasSelectTarget) {
this.selectCard(this.selectTarget.value);
}
}
onSelectCard(event) {
this.selectCard(event.target.value);
}
selectCard(cardValue) {
if (cardValue == "") {
this.stripeelementsTarget.style.display = "block";
this.getFormElementsArray(this.stripeelementsTarget).forEach((i) => {
i.disabled = false;
});
} else {
this.stripeelementsTarget.style.display = "none";
this.getFormElementsArray(this.stripeelementsTarget).forEach((i) => {
i.disabled = true;
});
}
}
getFormElementsArray(container) {
return Array.from(container.querySelectorAll("input, select, textarea"));
}
}