mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import { Controller } from "stimulus";
|
|
export default class extends Controller {
|
|
static targets = ["input"];
|
|
|
|
connect() {
|
|
this.inputTargets.forEach((input) => {
|
|
if (input.checked) {
|
|
this.setPaymentMethod(input.dataset.paymentmethodId);
|
|
}
|
|
});
|
|
}
|
|
|
|
selectPaymentMethod(event) {
|
|
this.setPaymentMethod(event.target.dataset.paymentmethodId);
|
|
|
|
const stripeCardSelector =
|
|
this.application.getControllerForElementAndIdentifier(
|
|
document
|
|
.querySelector(
|
|
`[data-paymentmethod-id="${event.target.dataset.paymentmethodId}"]`
|
|
)
|
|
.querySelector('[data-controller="stripe-cards"]'),
|
|
"stripe-cards"
|
|
);
|
|
stripeCardSelector?.initSelectedCard();
|
|
}
|
|
|
|
setPaymentMethod(paymentMethodContainerId) {
|
|
Array.from(
|
|
document.getElementsByClassName("paymentmethod-container")
|
|
).forEach((container) => {
|
|
const enabled =
|
|
container.dataset.paymentmethodId === paymentMethodContainerId;
|
|
|
|
if (enabled) {
|
|
container.style.display = "block";
|
|
this.toggleFieldsEnabled(container, enabled);
|
|
} else {
|
|
container.style.display = "none";
|
|
this.toggleFieldsEnabled(container, enabled);
|
|
}
|
|
});
|
|
}
|
|
|
|
toggleFieldsEnabled(container, enabled) {
|
|
this.subFormElements(container).forEach((field) => {
|
|
field.disabled = !enabled;
|
|
});
|
|
}
|
|
|
|
subFormElements(container) {
|
|
return Array.from(container.querySelectorAll("input, select, textarea"));
|
|
}
|
|
}
|