diff --git a/app/javascript/controllers/password_visibility_controller.js b/app/javascript/controllers/password_visibility_controller.js new file mode 100644 index 0000000000..2df6a93f03 --- /dev/null +++ b/app/javascript/controllers/password_visibility_controller.js @@ -0,0 +1,13 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + static targets = ["password", "icon"]; + + toggle() { + const isPasswordVisible = this.passwordTarget.type === "text"; + + this.passwordTarget.type = isPasswordVisible ? "password" : "text"; + this.iconTarget.classList.toggle("fa-eye", !isPasswordVisible); + this.iconTarget.classList.toggle("fa-eye-slash", isPasswordVisible); + } +} diff --git a/app/views/users/sessions/new.html.erb b/app/views/users/sessions/new.html.erb index cf4e64dcab..8669aadcbc 100644 --- a/app/views/users/sessions/new.html.erb +++ b/app/views/users/sessions/new.html.erb @@ -1,3 +1,17 @@ + <%= render partial: "shared/flash" %> <%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>