github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/assets/scripts/password-strength.js (about) 1 ;(function (w, d) { 2 const form = d.getElementsByTagName('form')[0] 3 const passInput = d.getElementById('password') 4 const passTip = d.getElementById('password-tooltip') 5 const indicator = d.getElementById('password-strength') 6 7 passInput.addEventListener( 8 'input', 9 function () { 10 const strength = w.password.getStrength(passInput.value) 11 const pct = Math.round(parseInt(strength.percentage, 10) / 4) * 4 12 indicator.setAttribute('aria-valuenow', pct) 13 indicator.setAttribute( 14 'class', 15 `progress-bar w-${pct} pass-${strength.label}`, 16 ) 17 passInput.classList.remove('is-invalid') 18 passTip && passTip.classList.remove('text-error') 19 }, 20 false, 21 ) 22 23 form.addEventListener('submit', function (event) { 24 const strength = w.password.getStrength(passInput.value) 25 if (strength.label === 'weak') { 26 passInput.classList.add('is-invalid') 27 passTip && passTip.classList.add('text-error') 28 event.preventDefault() 29 event.stopPropagation() 30 } 31 }) 32 })(window, document)