Files
Wallos/scripts/password-toggle.js
Miguel Ribeiro 11eaf402e8 feat!: complete ui overhaul (#1108)
feat: option for the week to start on sunday
feat: redesign login / registration pages
feat: more statistics
feat: declarative oidc settings
feat: grid view for subscriptions
feat: subscription details popup
feat: translate categories with ai
feat: google image search with serpapi
feat: selfh.st image search
feat: dashboard icons image search
fix: improve background removal feature for logos
feat: v2.0 api - write endpoints
fix: include todays subscriptions on amount due this month
fix: calendar occurrences to respect subscription start date
fix: honor configured outbound proxy for logo search without reopening httpoxy SSRF bypass
fix: remove hardcode string from the admin page
fix: ssrf via http proxy env var in payments logo search
fix: require cron auth guard on storetotalyearlycost.php
fix: validate per-user smtp host against ssrf
fix: escape iCal property values to prevent crlf injection
2026-07-11 23:54:52 +02:00

32 lines
1.1 KiB
JavaScript

// Adds a show/hide toggle button to every password field.
// Fields that ship their own toggle can opt out with data-custom-toggle.
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('input[type="password"]').forEach(function (input) {
if (input.dataset.customToggle !== undefined) {
return;
}
const wrapper = document.createElement('div');
wrapper.className = 'password-field';
input.parentNode.insertBefore(wrapper, input);
wrapper.appendChild(input);
const button = document.createElement('button');
button.type = 'button';
button.className = 'password-toggle';
button.setAttribute('aria-label', 'Show password');
button.innerHTML = '<i class="fa-solid fa-eye"></i>';
button.addEventListener('click', function () {
const icon = button.querySelector('i');
const show = input.type === 'password';
input.type = show ? 'text' : 'password';
icon.classList.toggle('fa-eye', !show);
icon.classList.toggle('fa-eye-slash', show);
});
wrapper.appendChild(button);
});
});