/** * Post list quick-edit dependency toggling. * * The pay quick-edit box hides fields whose dependency rules no longer match * the selected 付费模式 / 支付类型, mirroring the reference theme's field * visibility. Runs on the WP inline-edit row when it is opened or changed. */ (function () { 'use strict'; function readControl(row, fieldId) { var input = row.querySelector( '[name="aksrt_bulk_edit[pay][' + fieldId + ']"],' + ' [name="aksrt_bulk_edit[pay][' + fieldId + '][operation]"]' ); if (!input) return null; if (input.tagName === 'SELECT') return input.value; var checked = row.querySelector( '[name="aksrt_bulk_edit[pay][' + fieldId + ']"]:checked' ); if (input.type === 'radio' && checked) return checked.value; return input.value; } function compare(actual, operator, expected) { if (actual === null) return true; if (operator === '==') return actual === expected; if (operator === '!=') return actual !== expected; return true; } function updateRow(row) { var boxes = row.querySelectorAll('.aksrt-bulk-edit-box[data-dependency]'); Array.prototype.forEach.call(boxes, function (box) { var rules; try { rules = JSON.parse(box.getAttribute('data-dependency')); } catch (e) { return; } if (!Array.isArray(rules)) return; var visible = rules.every(function (rule) { return compare(readControl(row, rule[0]), rule[1], String(rule[2])); }); box.style.display = visible ? '' : 'none'; }); } function syncRows() { var rows = document.querySelectorAll('.inline-edit-row, #bulk-edit-row'); Array.prototype.forEach.call(rows, function (row) { if (row.querySelector('[data-dependency]')) updateRow(row); }); } document.addEventListener('change', function (event) { var target = event.target; if (!target || !target.name || target.name.indexOf('aksrt_bulk_edit[pay]') !== 0) return; var row = target.closest('.inline-edit-row, #bulk-edit-row'); if (row) updateRow(row); }); // WP swaps the inline-edit row without a change event. document.addEventListener('click', function (event) { var target = event.target; if (!target || !target.closest) return; if (target.closest('.editinline, .bulk-action')) window.setTimeout(syncRows, 50); }); syncRows(); })();