diff --git a/modules/ppcp-paypal-subscriptions/resources/js/paypal-subscription.js b/modules/ppcp-paypal-subscriptions/resources/js/paypal-subscription.js index 3e511a569..58d9567c6 100644 --- a/modules/ppcp-paypal-subscriptions/resources/js/paypal-subscription.js +++ b/modules/ppcp-paypal-subscriptions/resources/js/paypal-subscription.js @@ -68,12 +68,75 @@ document.addEventListener( 'DOMContentLoaded', () => { soldIndividually.setAttribute( 'disabled', 'disabled' ); }; + const updateInterval = () => { + const subscriptionPeriodInterval = document.querySelector('#_subscription_period_interval'); + const subscriptionPeriod = document.querySelector('#_subscription_period'); + const subscriptionProduct = document.querySelector('#ppcp_enable_subscription_product'); + const optionsDisable = (start = 0) => { + const subscriptionPeriodIntervalChildren = subscriptionPeriodInterval.children; + for (let i = 0; i < subscriptionPeriodIntervalChildren.length; i++) { + if ( start === 0 || parseInt( subscriptionPeriodIntervalChildren[i].value ) <= start ) { + subscriptionPeriodIntervalChildren[i].disabled = false; + subscriptionPeriodIntervalChildren[i].removeAttribute('disabled'); + } else { + subscriptionPeriodIntervalChildren[i].disabled = true; + subscriptionPeriodIntervalChildren[i].setAttribute('disabled', 'disabled'); + } + } + jQuery( '#_subscription_period_interval' ).trigger('change.select2'); + }; + + const updateSubscriptionPeriodInterval = () => { + if (subscriptionProduct?.checked === false) { + optionsDisable(); + return; + } + if ( subscriptionPeriod.value === 'year' ) { + optionsDisable( 1 ); + if ( parseInt( subscriptionPeriodInterval.value ) > 1 ) { + subscriptionPeriodInterval.value = '1'; + } + } + if ( subscriptionPeriod.value === 'month' ) { + optionsDisable( 12 ); + if ( parseInt( subscriptionPeriodInterval.value ) > 12 ) { + subscriptionPeriodInterval.value = '12'; + } + } + if ( subscriptionPeriod.value === 'week' ) { + optionsDisable( 52 ); + if ( parseInt( subscriptionPeriodInterval.value ) > 52 ) { + subscriptionPeriodInterval.value = '52'; + } + } + if ( subscriptionPeriod.value === 'day' ) { + optionsDisable( 365 ); + if ( parseInt( subscriptionPeriodInterval.value ) > 365 ) { + subscriptionPeriodInterval.value = '365'; + } + } + jQuery( '#_subscription_period_interval' ).trigger( 'change.select2' ); + } + + subscriptionProduct?.addEventListener( 'change', (e) => { + updateSubscriptionPeriodInterval(); + }); + jQuery( '#_subscription_period' ).on( 'change', (e) => { + updateSubscriptionPeriodInterval(); + }); + jQuery( '#_subscription_period_interval' ).on( 'change', (e) => { + updateSubscriptionPeriodInterval(); + }); + }; + const setupProducts = () => { PayPalCommerceGatewayPayPalSubscriptionProducts?.forEach( ( product ) => { if ( product.product_connected === 'yes' ) { disableFields( product.product_id ); - } + } else { + updateInterval(); + } const unlinkBtn = document.getElementById( `ppcp-unlink-sub-plan-${ product.product_id }`