mirror of
https://github.com/ellite/Wallos.git
synced 2026-07-30 17:55:53 -04:00
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
32 lines
1.1 KiB
JavaScript
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);
|
|
});
|
|
});
|