"use strict";
// Fallback JS for browsers which do not support :has selector used in
// admin/css/unusable_password_fields.css
// Remove file once all supported browsers support :has selector
// 降级方案：针对不支持:has选择器的浏览器（对应admin/css/unusable_password_fields.css中的样式逻辑）
// 一旦所有兼容浏览器都支持:has选择器，即可删除此文件
try {
    // 测试浏览器是否支持:has选择器（若不支持，此语句会抛出错误）
    // If browser does not support :has selector this will raise an error
    document.querySelector("form:has(input)");
} catch (error) {
    // 浏览器不支持:has选择器，执行JS降级逻辑
    console.log("Defaulting to javascript for usable password form management: " + error);
    // JS replacement for unsupported :has selector
    // JS逻辑替换不支持的:has选择器功能
    // 找到所有name为"usable_password"的选项（控制是否启用密码的单选框/复选框）
    document.querySelectorAll('input[name="usable_password"]').forEach(option => {
        // 给选项绑定“变化”事件（选中状态改变时触发）
        option.addEventListener('change', function() {
            // 判断是否“启用密码”：
            const usablePassword = (this.value === "true" ? this.checked : !this.checked);
            // 获取表单中的关键元素
            const submit1 = document.querySelector('input[type="submit"].set-password');
            const submit2 = document.querySelector('input[type="submit"].unset-password');
            const messages = document.querySelector('#id_unusable_warning');
            // 根据“是否启用密码”，显示/隐藏密码输入框（password1和password2）
            document.getElementById('id_password1').closest('.form-row').hidden = !usablePassword;
            document.getElementById('id_password2').closest('.form-row').hidden = !usablePassword;
            // 显示/隐藏密码不可用的提示信息（启用密码时隐藏，禁用时显示）
            if (messages) {
                messages.hidden = usablePassword;
            }
            // 显示/隐藏对应的操作按钮（启用密码显示“设置密码”，禁用显示“取消密码”）
            if (submit1 && submit2) {
                submit1.hidden = !usablePassword;
                submit2.hidden = usablePassword;
            }
        });
        // 初始化时手动触发一次“变化”事件，确保页面加载时字段状态正确
        option.dispatchEvent(new Event('change'));
    });
}
