mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 17:28:55 +00:00
43 lines
1.6 KiB
JavaScript
43 lines
1.6 KiB
JavaScript
/**
|
|
* Alpine.data('passwordToggle') - Toggle password field visibility
|
|
*/
|
|
import Alpine from '@alpinejs/csp';
|
|
|
|
Alpine.data('passwordToggle', () => ({
|
|
visible: false,
|
|
|
|
toggle() {
|
|
this.visible = !this.visible;
|
|
const field = this.$refs.field;
|
|
if (field) {
|
|
field.type = this.visible ? 'text' : 'password';
|
|
}
|
|
},
|
|
|
|
iconClass() {
|
|
return this.visible ? 'fa-eye-slash' : 'fa-eye';
|
|
}
|
|
}));
|
|
|
|
// Document-level delegation for .password-toggle-btn without x-data
|
|
document.querySelectorAll('.password-toggle-btn').forEach(function(btn) {
|
|
if (btn.closest('[x-data]')) return;
|
|
btn.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
var fieldId = this.getAttribute('data-field-id');
|
|
if (!fieldId) return;
|
|
var field = document.getElementById(fieldId);
|
|
var icon = document.getElementById(fieldId + '-eye');
|
|
if (!field) return;
|
|
if (field.type === 'password') { field.type = 'text'; if (icon) { icon.classList.remove('fa-eye'); icon.classList.add('fa-eye-slash'); } }
|
|
else { field.type = 'password'; if (icon) { icon.classList.remove('fa-eye-slash'); icon.classList.add('fa-eye'); } }
|
|
});
|
|
});
|
|
window.togglePasswordVisibility = function(fieldId) {
|
|
var field = document.getElementById(fieldId);
|
|
var icon = document.getElementById(fieldId + '-eye');
|
|
if (!field) return;
|
|
if (field.type === 'password') { field.type = 'text'; if (icon) { icon.classList.remove('fa-eye'); icon.classList.add('fa-eye-slash'); } }
|
|
else { field.type = 'password'; if (icon) { icon.classList.remove('fa-eye-slash'); icon.classList.add('fa-eye'); } }
|
|
};
|