From 04f2bd1ec36923f2a38b8011175ef1faf24121e8 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 12 May 2023 18:47:48 +0200 Subject: [PATCH] Add password-reveal feature to oidc login --- dashboard/src/3rdparty/password-reveal.js | 32 +++++++++++++++++++++++ src/oidc_templates/login.ejs | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 dashboard/src/3rdparty/password-reveal.js diff --git a/dashboard/src/3rdparty/password-reveal.js b/dashboard/src/3rdparty/password-reveal.js new file mode 100644 index 000000000..df3f05dba --- /dev/null +++ b/dashboard/src/3rdparty/password-reveal.js @@ -0,0 +1,32 @@ +// Custom library to add password show/hide icons to input element with `password-reveal` attribute +// util.js has the angular version, this is for plain js + +window.addEventListener('load', function () { + var svgEye = ''; + var svgEyeSlash = ''; + + document.querySelectorAll('[password-reveal]').forEach(function (element) { + var eye = document.createElement('i'); + eye.innerHTML = svgEyeSlash; + eye.style.width = '18px'; + eye.style.height = '18px'; + eye.style.position = 'relative'; + eye.style.float = 'right'; + eye.style.marginTop = '-24px'; + eye.style.marginRight = '10px'; + eye.style.cursor = 'pointer'; + + eye.addEventListener('click', function () { + if (element.type === 'password') { + element.type = 'text'; + eye.innerHTML = svgEye; + } else { + element.type = 'password'; + eye.innerHTML = svgEyeSlash; + } + }); + + element.parentNode.style.position = 'relative'; + element.parentNode.insertBefore(eye, element.nextSibling); + }); +}); diff --git a/src/oidc_templates/login.ejs b/src/oidc_templates/login.ejs index d1bf908b7..13af4fec8 100644 --- a/src/oidc_templates/login.ejs +++ b/src/oidc_templates/login.ejs @@ -20,6 +20,8 @@ + +