Files
openfoodnetwork/app/webpacker/controllers/stripe_cards_controller.js
Matt-Yorkley a64f654697 Don't try to select a card if there is no selectTarget
This error was being thrown when the user had no cards saved:
```
Error: Missing target element "stripe-cards.select"
```
2021-12-20 15:41:22 +00:00

36 lines
935 B
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() {
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"));
}
}