password-visibility.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. ;(function () {
  2. const visibilityOnQuery =
  3. '[data-ol-password-visibility-toggle="visibilityOn"]'
  4. const visibilityOffQuery =
  5. '[data-ol-password-visibility-toggle="visibilityOff"]'
  6. const visibilityOnButton =
  7. document.querySelector<HTMLElement>(visibilityOnQuery)
  8. const visibilityOffButton =
  9. document.querySelector<HTMLElement>(visibilityOffQuery)
  10. if (visibilityOffButton && visibilityOnButton) {
  11. visibilityOnButton.addEventListener('click', function () {
  12. const passwordInput = document.querySelector<HTMLInputElement>(
  13. '[data-ol-password-visibility-target]'
  14. )
  15. if (passwordInput) {
  16. passwordInput.type = 'text'
  17. visibilityOnButton.hidden = true
  18. visibilityOffButton.hidden = false
  19. visibilityOffButton.focus()
  20. }
  21. })
  22. visibilityOffButton.addEventListener('click', function () {
  23. const passwordInput = document.querySelector<HTMLInputElement>(
  24. '[data-ol-password-visibility-target]'
  25. )
  26. if (passwordInput) {
  27. passwordInput.type = 'password'
  28. visibilityOffButton.hidden = true
  29. visibilityOnButton.hidden = false
  30. visibilityOnButton.focus()
  31. }
  32. })
  33. }
  34. })()