Skip to content

Commit

Permalink
fix password visibility toggle issues, closes #18
Browse files Browse the repository at this point in the history
  • Loading branch information
muremwa committed May 1, 2023
1 parent d7445b3 commit 5e46e75
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 15 deletions.
13 changes: 11 additions & 2 deletions account/templates/account/forms/widgets/c_password.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@

<div class="row">
<div class="col-sm-10">
<input name="{{ widget.name }}" class="{{ widget.attrs.class }} js-toogle-password" type="password" id="{{ widget.attrs.id }}"/>
<input name="{{ widget.name }}" class="{{ widget.attrs.class }} js-toggle-password" type="password" id="{{ widget.attrs.id }}"/>
</div>
<div class="col-sm-2">
<img class="toogle-eye" src="{% static 'svg/eye.svg' %}" title="click to see password">
<img
data-state="0"
data-input-id="{{ widget.attrs.id }}"
data-eye="{% static 'svg/eye.svg' %}"
data-closed-eye="{% static 'svg/eye_closed.svg' %}"
alt="eye"
class="toggle-eye"
src="{% static 'svg/eye.svg' %}"
title="click to see password"
/>
</div>
</div>
2 changes: 1 addition & 1 deletion note/static/account/css/forms/widgets/c_password.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
.toogle-eye {
.toggle-eye {
cursor: pointer;
}
29 changes: 17 additions & 12 deletions note/static/account/js/forms/widgets/cPassword.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
const passwords = [...document.getElementsByClassName('js-toogle-password')];
const eyes = [...document.getElementsByClassName('toogle-eye')];
let state = false;
const passwordEyes = [...document.getElementsByClassName('toggle-eye')];

passwordEyes.forEach((eye) => {
eye.addEventListener('click', () => {
if ('inputId' in eye.dataset && 'state' in eye.dataset) {
const input = document.getElementById(eye.dataset.inputId);
const state = eye.dataset.state;

function tooglePasswordView (ps = passwords) {
ps.forEach((p) => {
if (p.type) {
state? p.type = 'password': p.type = 'text';
};
});
state = !state;
};
if (input && input.hasAttribute('type') && state) {
input.type = state === '1'? 'password': 'text';
eye.dataset.state = state === '1'? '0': '1';

eyes.forEach((eye) => eye.addEventListener('click', () => tooglePasswordView(passwords)));
if ('eye' in eye.dataset && 'closedEye' in eye.dataset && eye.hasAttribute('src')) {
eye.src = state === '1'? eye.dataset.eye: eye.dataset.closedEye;
eye.title = state === '1'? 'click to see password': 'click to hide password'
}
}
}
})
})
1 change: 1 addition & 0 deletions note/static/svg/eye_closed.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5e46e75

Please # to comment.