Bläddra i källkod

Improved: Focus and show password buttons (#4205)

* CSS + JS

* fixed the quotes
maTh 4 år sedan
förälder
incheckning
133e0d61db
3 ändrade filer med 31 tillägg och 13 borttagningar
  1. 21 13
      p/scripts/extra.js
  2. 5 0
      p/themes/base-theme/template.css
  3. 5 0
      p/themes/base-theme/template.rtl.css

+ 21 - 13
p/scripts/extra.js

@@ -98,20 +98,28 @@ function init_crypto_form() {
 }
 // </crypto form (Web login)>
 
+function showPW(ev) {
+	if (ev.buttons || ev.key == ' ' || ev.key.toUpperCase() == 'ENTER') {
+		const passwordField = document.getElementById(this.getAttribute('data-toggle'));
+		passwordField.setAttribute('type', 'text');
+		this.classList.add('active');
+	}
+	return false;
+}
+
+function hidePW() {
+	const passwordField = document.getElementById(this.getAttribute('data-toggle'));
+	passwordField.setAttribute('type', 'password');
+	this.classList.remove('active');
+	return false;
+}
+
 function init_password_observers() {
-	document.querySelectorAll('.toggle-password').forEach(function (a) {
-		a.onmousedown = function (ev) {
-			const passwordField = document.getElementById(this.getAttribute('data-toggle'));
-			passwordField.setAttribute('type', 'text');
-			this.classList.add('active');
-			return false;
-		};
-		a.onmouseup = function (ev) {
-			const passwordField = document.getElementById(this.getAttribute('data-toggle'));
-			passwordField.setAttribute('type', 'password');
-			this.classList.remove('active');
-			return false;
-		};
+	document.querySelectorAll('.toggle-password').forEach(function (btn) {
+		btn.addEventListener('mousedown', showPW);
+		btn.addEventListener('keydown', showPW);
+		btn.addEventListener('mouseup', hidePW);
+		btn.addEventListener('keyup', hidePW);
 	});
 }
 

+ 5 - 0
p/themes/base-theme/template.css

@@ -281,6 +281,11 @@ a.btn {
 	font-weight: bold;
 }
 
+.btn:focus-visible,
+input[type="checkbox"]:focus-visible {
+	outline: 2px solid #ccc;
+}
+
 /*=== Navigation */
 .nav-list .nav-header,
 .nav-list .item {

+ 5 - 0
p/themes/base-theme/template.rtl.css

@@ -281,6 +281,11 @@ a.btn {
 	font-weight: bold;
 }
 
+.btn:focus-visible,
+input[type="checkbox"]:focus-visible {
+	outline: 2px solid #ccc;
+}
+
 /*=== Navigation */
 .nav-list .nav-header,
 .nav-list .item {