From 34af714c51173075d3a0ac7148ce60334d248aba Mon Sep 17 00:00:00 2001 From: gabrielgio Date: Fri, 25 Mar 2022 20:31:58 +0100 Subject: feat: Add options for password generator Add new options to generate a passowrd: - upper letters - lower letters - numbers - special Special needs to be worked on still, as probably there are some char missing. --- www/index.html | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++------- www/index.js | 55 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 114 insertions(+), 13 deletions(-) (limited to 'www') diff --git a/www/index.html b/www/index.html index 76d8c1c..5a4ada3 100644 --- a/www/index.html +++ b/www/index.html @@ -9,14 +9,70 @@
-

- Password Generator -

-

- password -

-
- +
+
+
+
+

+ Password Generator +

+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
diff --git a/www/index.js b/www/index.js index e25ec3a..a4257c1 100644 --- a/www/index.js +++ b/www/index.js @@ -1,9 +1,54 @@ import * as wasm from "genpass"; -const LEN = 32; +const DEFAULT_LEN = 32; -document.getElementById("password").innerHTML = wasm.generate(LEN); +let passwordInput = document.getElementById("password"); +let generateButton = document.getElementById("generate"); +let copyButton = document.getElementById("copy"); +let sizeInput = document.getElementById("size"); +let upperCaseInput = document.getElementById("upperCase"); +let lowerCaseInput = document.getElementById("lowerCase"); +let numberInput = document.getElementById("number"); +let specialInput = document.getElementById("special"); -document.getElementById("generate").onclick = (function () { - document.getElementById("password").innerHTML = wasm.generate(LEN); -}); +function copyToClipboard() { + let text = passwordInput.innerText + navigator.clipboard.writeText(text).then(function () { + }, function (err) { + console.error('Async: Could not copy text: ', err); + }); + + copyButton.textContent = "copied" + + setTimeout(() => { + copyButton.innerText = "copy" + }, 3000); +} + +function generate() { + let size = sizeInput.value; + let lower = lowerCaseInput.checked; + let upper = upperCaseInput.checked; + let number = numberInput.checked; + let special = specialInput.checked; + passwordInput.innerHTML = wasm.generate(size, lower, upper, number, special); +} + +// Setting up defaults +sizeInput.value = DEFAULT_LEN; +upperCaseInput.checked = true; +lowerCaseInput.checked = true; +numberInput.checked = true; +specialInput.checked = true; +//this will trigger passwordInput to be filled +generate(); + +//Adding events hooks + +sizeInput.onchange = generate; +upperCaseInput.onchange = generate; +lowerCaseInput.onchange = generate; +numberInput.onchange = generate; +specialInput.onchange = generate; +generateButton.onclick = generate; +copyButton.onclick = copyToClipboard; \ No newline at end of file -- cgit v1.2.3