woocommerce-paypal-payments/modules/ppcp-wc-gateway/resources/js/gateway-settings.js
Danae Millan 3d03097110 Uncheck the Pay Later checkboxes before disabling them when enabling vaulting
This way the children settings of Pay Later get hidden, keeping the interface consistent.
2021-11-22 12:29:52 -03:00

73 lines
2.2 KiB
JavaScript

;document.addEventListener(
'DOMContentLoaded',
() => {
const payLaterMessagingCheckboxes = document.querySelectorAll(
"#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled"
)
const vaultingCheckboxes = document.querySelectorAll(
"#ppcp-vault_enabled"
)
const payLaterEnabledLabels = document.querySelectorAll(
".ppcp-pay-later-enabled-label"
)
const payLaterDisabledLabels = document.querySelectorAll(
".ppcp-pay-later-disabled-label"
)
const disabledCheckboxes = document.querySelectorAll(
'.ppc-disabled-checkbox'
)
function atLeastOneChecked(checkboxesNodeList) {
return Array.prototype.slice.call(checkboxesNodeList).filter(node => !node.disabled && node.checked).length > 0
}
function disableAll(nodeList){
nodeList.forEach(node => node.setAttribute('disabled', 'true'))
}
function enableAll(nodeList){
nodeList.forEach(node => node.removeAttribute('disabled'))
}
function hideAll(nodeList) {
nodeList.forEach(node => node.style.display = 'none')
}
function displayAll(nodeList) {
nodeList.forEach(node => node.style.display = '')
}
function uncheckAll(nodeList){
nodeList.forEach(node => {
node.checked = false
node.dispatchEvent(new Event('change'))
})
}
function disablePayLater() {
uncheckAll(payLaterMessagingCheckboxes)
disableAll(payLaterMessagingCheckboxes)
hideAll(payLaterEnabledLabels)
displayAll(payLaterDisabledLabels)
}
function enablePayLater() {
enableAll(payLaterMessagingCheckboxes)
displayAll(payLaterEnabledLabels)
hideAll(payLaterDisabledLabels)
}
function togglePayLater() {
atLeastOneChecked(vaultingCheckboxes) ? disablePayLater() : enablePayLater()
}
togglePayLater()
disableAll( disabledCheckboxes )
vaultingCheckboxes.forEach(node => node.addEventListener('change', togglePayLater));
}
);