David Kimura PRO said 7 months ago on Password Strength :
You may be right   Eric Chua where if there is only upper case letters in the password then it could return incorrect results. Something like this could work better where we're basically getting a column count and each condition will bump to the next column.

getEstimatedCrackTime() {
  const password = this.passwordTarget.value
  const length = password.length
  const hasLowercase = /[a-z]/.test(password)
  const hasUppercase = /[A-Z]/.test(password)
  const hasNumbers = /[0-9]/.test(password)
  const hasSymbols = /[\W_]/.test(password)

  let charsets = 0
  if (hasLowercase) charsets++
  if (hasUppercase) charsets++
  if (hasNumbers) charsets++
  if (hasSymbols) charsets++

  let column = charsets
  if (column < 1) column = 1
  if (column > 5) column = 5 

  const row = length > 18 ? 18 : length

  return { row, column }
}