/** * HVAC Community Events: Login Form JavaScript * * Enhanced login form functionality following WordPress best practices. * * @version 2.0.0 */ jQuery(document).ready(function($) { 'use strict'; /** * Password Show/Hide Toggle */ const HVACPasswordToggle = { init: function() { $('.hvac-password-toggle').on('click', this.togglePassword); // Handle keyboard accessibility $('.hvac-password-toggle').on('keydown', function(e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); $(this).click(); } }); }, togglePassword: function() { const $button = $(this); const $input = $button.siblings('.hvac-password-input'); const $icon = $button.find('.hvac-password-toggle-icon'); const isVisible = $input.attr('type') === 'text'; if (isVisible) { // Hide password $input.attr('type', 'password'); $icon.text('👁️'); $button.attr('aria-label', hvacLogin.showPassword); $button.attr('aria-pressed', 'false'); } else { // Show password $input.attr('type', 'text'); $icon.text('🙈'); $button.attr('aria-label', hvacLogin.hidePassword); $button.attr('aria-pressed', 'true'); } // Keep focus on the input field $input.focus(); } }; /** * Form Validation */ const HVACLoginValidation = { init: function() { $('#hvac_community_loginform').on('submit', this.validateForm); // Real-time validation feedback $('.hvac-login-form-input').on('blur', this.validateField); $('.hvac-login-form-input').on('input', this.clearFieldError); }, validateForm: function(e) { const $form = $(this); let isValid = true; // Clear previous errors $form.find('.hvac-field-error').remove(); $form.find('.hvac-login-form-input').removeClass('hvac-input-error'); // Validate username/email const $username = $form.find('#user_login'); if (!$username.val().trim()) { HVACLoginValidation.showFieldError($username, hvacLogin.usernameRequired); isValid = false; } // Validate password const $password = $form.find('#user_pass'); if (!$password.val()) { HVACLoginValidation.showFieldError($password, hvacLogin.passwordRequired); isValid = false; } if (!isValid) { e.preventDefault(); return false; } // Show loading state HVACLoginLoading.show(); }, validateField: function() { const $field = $(this); const value = $field.val().trim(); HVACLoginValidation.clearFieldError($field); if ($field.attr('id') === 'user_login' && !value) { HVACLoginValidation.showFieldError($field, hvacLogin.usernameRequired); } else if ($field.attr('id') === 'user_pass' && !value) { HVACLoginValidation.showFieldError($field, hvacLogin.passwordRequired); } }, clearFieldError: function() { const $field = $(this); HVACLoginValidation.clearFieldError($field); }, showFieldError: function($field, message) { $field.addClass('hvac-input-error'); const $error = $('