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)