Newer
Older
wordpress-ojs-pugin / assets / js / conditional-fields.js
(function() {
    'use strict';

    document.addEventListener('DOMContentLoaded', function() {
        initSubscriptionToggle();
        initMembershipTypeToggle();
        initDeactivationConfirm();
    });

    function initSubscriptionToggle() {
        var checkbox = document.getElementById('ojs_subscription_requested');
        var fields = document.getElementById('ojs-subscription-fields');
        if (!checkbox || !fields) return;

        function toggle() {
            fields.style.display = checkbox.checked ? '' : 'none';
            var required = fields.querySelectorAll('[data-conditional-required]');
            for (var i = 0; i < required.length; i++) {
                required[i].required = checkbox.checked;
            }
        }

        checkbox.addEventListener('change', toggle);
        toggle();
    }

    function initMembershipTypeToggle() {
        var radios = document.querySelectorAll('input[name="ojs_membership_type"]');
        if (!radios.length) return;

        var wrapper = document.getElementById('ojs-field-ojs_student_document');
        if (!wrapper) return;

        function toggle() {
            var checked = document.querySelector('input[name="ojs_membership_type"]:checked');
            var isStudent = checked && (checked.value === 'student' || checked.value === 'student_junior');
            wrapper.style.display = isStudent ? '' : 'none';
            var fileInput = wrapper.querySelector('input[type="file"]');
            if (fileInput) {
                fileInput.required = isStudent;
            }
        }

        for (var i = 0; i < radios.length; i++) {
            radios[i].addEventListener('change', toggle);
        }
        toggle();
    }

    function initDeactivationConfirm() {
        if (typeof wpOjsSsoBridge === 'undefined') return;

        var checkbox = document.querySelector('input[id$="subscription_active"][type="checkbox"]');
        if (!checkbox) return;

        var wasChecked = checkbox.checked;
        var form = checkbox.closest('form');
        if (!form) return;

        form.addEventListener('submit', function(e) {
            if (wasChecked && !checkbox.checked) {
                if (!confirm(wpOjsSsoBridge.confirmDeactivation)) {
                    checkbox.checked = true;
                    e.preventDefault();
                }
            }
        });
    }
})();