wp/wp-admin/js/password-toggle.js
changeset 21 48c4eec2b7e6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-admin/js/password-toggle.js	Fri Sep 05 18:40:08 2025 +0200
@@ -0,0 +1,40 @@
+/**
+ * Adds functionality for password visibility buttons to toggle between text and password input types.
+ *
+ * @since 6.3.0
+ * @output wp-admin/js/password-toggle.js
+ */
+
+( function () {
+	var toggleElements, status, input, icon, label, __ = wp.i18n.__;
+
+	toggleElements = document.querySelectorAll( '.pwd-toggle' );
+
+	toggleElements.forEach( function (toggle) {
+		toggle.classList.remove( 'hide-if-no-js' );
+		toggle.addEventListener( 'click', togglePassword );
+	} );
+
+	function togglePassword() {
+		status = this.getAttribute( 'data-toggle' );
+		input = this.parentElement.children.namedItem( 'pwd' );
+		icon = this.getElementsByClassName( 'dashicons' )[ 0 ];
+		label = this.getElementsByClassName( 'text' )[ 0 ];
+
+		if ( 0 === parseInt( status, 10 ) ) {
+			this.setAttribute( 'data-toggle', 1 );
+			this.setAttribute( 'aria-label', __( 'Hide password' ) );
+			input.setAttribute( 'type', 'text' );
+			label.innerHTML = __( 'Hide' );
+			icon.classList.remove( 'dashicons-visibility' );
+			icon.classList.add( 'dashicons-hidden' );
+		} else {
+			this.setAttribute( 'data-toggle', 0 );
+			this.setAttribute( 'aria-label', __( 'Show password' ) );
+			input.setAttribute( 'type', 'password' );
+			label.innerHTML = __( 'Show' );
+			icon.classList.remove( 'dashicons-hidden' );
+			icon.classList.add( 'dashicons-visibility' );
+		}
+	}
+} )();