Skip to content

Commit bc7a19a

Browse files
committed
Add cambio de estados en botones y textarea para casos de exito y error
Cambia formato de textarea de texto a encriptar/desencriptar Cambia formato de botones encriptar/desencriptar Agrega configuracion de eslint Agrega gitignore
1 parent 3358aca commit bc7a19a

File tree

7 files changed

+2428
-16
lines changed

7 files changed

+2428
-16
lines changed

.eslintrc.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* eslint-disable no-undef */
2+
module.exports = {
3+
"env": {
4+
"browser": true,
5+
"es2021": true
6+
},
7+
"extends": "eslint:recommended",
8+
"overrides": [
9+
],
10+
"parserOptions": {
11+
"ecmaVersion": "latest"
12+
},
13+
"rules": {
14+
"indent": [
15+
"error",
16+
4
17+
],
18+
"linebreak-style": [
19+
"error",
20+
"unix"
21+
],
22+
"quotes": [
23+
"error",
24+
"double"
25+
],
26+
"semi": [
27+
"error",
28+
"always"
29+
]
30+
}
31+
};

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/node_modules/

css/global-desktop.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
textarea{
2+
resize: none;
3+
}
4+
5+
.text-error{
6+
border: 2px solid red !important;
7+
}

index.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<meta http-equiv="X-UA-Compatible" content="IE=edge">
77
<meta name="viewport" content="width=device-width, initial-scale=1.0">
88
<title>Encrypter/Decrypter</title>
9+
<link rel="stylesheet" href="./css/reset.css">
910
<link rel="stylesheet" href="./css/global-desktop.css">
1011
<link rel="stylesheet" href="./css/w3.css">
1112
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-black.css">
@@ -32,7 +33,9 @@ <h1 class="w3-xxxlarge w3-animate-bottom">Encrypter / Decrypter</h1>
3233
<h3>Enter text to encrypt or decrypt</h3><br>
3334
<i class="fa-solid fa-keyboard fa-bounce w3-margin-bottom w3-text-theme"
3435
style="color: #33d17a; font-size: 50px;"></i>
35-
<textarea class="w3-input w3-border" name="text-to-encrypt" id="text-to-encrypt" cols="30" rows="10"
36+
<div id="notification" class="w3-text-red" style="visibility: visible;"></div>
37+
<textarea class="w3-input w3-border w3-round-large w3-border-black w3-hover-border-dark-gray text-error"
38+
name="text-to-encrypt" id="text-to-encrypt" cols="30" rows="10"
3639
placeholder="Write here the text to encrypt... &#10;Or write a encrypted text to decrypt..."></textarea>
3740
<button id="encrypt-button"
3841
class="w3-btn w3-round-xlarge w3-large w3-left-align w3-dark-grey w3-hover-light-grey w3-margin-top"
@@ -52,8 +55,8 @@ <h3>Enter text to encrypt or decrypt</h3><br>
5255
<h3>Result</h3><br>
5356
<i class="fa-solid fa-message w3-margin-bottom w3-text-theme"
5457
style="color: #33d17a; font-size: 50px;"></i>
55-
<textarea class="w3-input w3-border" name="encrypted-text" id="encrypted-text" cols="30" rows="10"
56-
readonly></textarea>
58+
<textarea class="w3-input w3-border w3-round-large w3-border-black" name="encrypted-text"
59+
id="encrypted-text" cols="30" rows="10" readonly></textarea>
5760
<button id="copy-button"
5861
class="w3-btn w3-round-xlarge w3-large w3-left-align w3-dark-grey w3-hover-light-grey w3-margin-top"
5962
style="font-weight: bold;"><i class="fa-solid fa-copy"></i> Copy

js/main.js

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ const words_replace = ["enter", "imes", "ai", "ober", "ufat"];
66

77
const verifyCharacters = (text) => {
88
/* Regex que permite solo letras minusculas, sin acentos, sin caracteres especiales */
9-
const regex = /^[a-z\s]*$/
10-
return regex.test(text);
11-
}
9+
const regex = /^[a-z\s]*$/;
10+
return text && regex.test(text);
11+
};
1212

1313
const encrypText = (text) => {
1414
for (let i = 0; i < character_to_replace.length; i++) {
1515
text = text.replaceAll(character_to_replace[i], words_replace[i]);
1616
}
1717
console.debug(`Encrypted text: ${text}`);
1818
return text;
19-
}
19+
};
2020

2121
const decryptText = (text) => {
2222
for (let i = 0; i < words_replace.length; i++) {
@@ -25,26 +25,40 @@ const decryptText = (text) => {
2525
console.debug(`Decrypted text: ${text}`);
2626

2727
return text;
28-
}
28+
};
2929

3030
const encrypt = () => {
31-
const text = document.getElementById("text-to-encrypt").value.trim();
31+
resetStyleTexarea("text-to-encrypt");
32+
resetStyleButton("encrypt-button");
33+
resetStyleButton("decrypt-button");
34+
35+
const text = document.getElementById("text-to-encrypt").value.trim().toLowerCase();
3236
console.debug(`Text to encrypt: ${text}`);
37+
document.getElementById("text-to-encrypt").value = text;
3338

3439
if (!verifyCharacters(text)) {
35-
alert("Texto invalido");
40+
console.error("Text invalid");
41+
document.getElementById("notification").innerHTML = "Solo se admiten caracteres alfabeticos sin acentos.";
42+
document.getElementById("text-to-encrypt").classList.replace("w3-border-black", "w3-border-red");
43+
document.getElementById("text-to-encrypt").classList.add("w3-animate-opacity");
3644
return;
3745
}
3846

3947
const encryptedText = encrypText(text);
4048
document.getElementById("encrypted-text").value = encryptedText;
49+
setSuccessStyleButton("encrypt-button");
4150

4251
return;
43-
}
52+
};
4453

4554
const decrypt = () => {
46-
const text = document.getElementById("text-to-encrypt").value.trim();
55+
resetStyleTexarea("encrypted-text");
56+
resetStyleButton("decrypt-button");
57+
resetStyleButton("encrypt-button");
58+
59+
const text = document.getElementById("text-to-encrypt").value.trim().toLowerCase();
4760
console.debug(`Text to decrypt: ${text}`);
61+
document.getElementById("text-to-encrypt").value = text;
4862

4963
if (!verifyCharacters(text)) {
5064
alert("Texto invalido");
@@ -53,17 +67,38 @@ const decrypt = () => {
5367

5468
const decryptedText = decryptText(text);
5569
document.getElementById("encrypted-text").value = decryptedText;
56-
70+
setSuccessStyleButton("decrypt-button");
5771
return;
58-
}
72+
};
5973

6074

75+
const setSuccessStyleButton = (idElement) => {
76+
document.getElementById(idElement).classList.add("w3-border");
77+
document.getElementById(idElement).classList.add("w3-border-green");
78+
document.getElementById(idElement).classList.remove("w3-dark-grey");
79+
document.getElementById(idElement).classList.add("w3-green");
80+
document.getElementById(idElement).classList.add("w3-animate-opacity");
81+
82+
};
83+
84+
const resetStyleButton = (idElement) => {
85+
document.getElementById(idElement).classList.remove("w3-border");
86+
document.getElementById(idElement).classList.remove("w3-border-green");
87+
document.getElementById(idElement).classList.remove("w3-green");
88+
document.getElementById(idElement).classList.add("w3-dark-grey");
89+
};
90+
91+
const resetStyleTexarea = (idElement) => {
92+
document.getElementById(idElement).classList.replace("w3-border-red","w3-border-black");
93+
document.getElementById(idElement).classList.remove("w3-animate-opacity");
94+
};
95+
6196
const copyToClipboard = () => {
6297
if (navigator.clipboard) {
6398
const str = document.getElementById("encrypted-text").value.trim();
6499
navigator.clipboard.writeText(str)
65100
.then(() => console.log("Text copied to clipboard"))
66-
.catch(err => console.log('Something went wrong', err));
101+
.catch(err => console.log("Something went wrong", err));
67102
} else {
68103
alert("API clipboard not supported");
69104
console.log("API clipboard not supported");
@@ -85,4 +120,12 @@ window.onload = () => {
85120
const copyButton = document.getElementById("copy-button");
86121
copyButton.onclick = copyToClipboard;
87122

88-
}
123+
const textToEncrypt = document.getElementById("text-to-encrypt");
124+
textToEncrypt.onkeyup = () => {
125+
document.getElementById("notification").innerHTML = "";
126+
document.getElementById("encrypted-text").value = "";
127+
128+
resetStyleButton("encrypt-button");
129+
resetStyleButton("decrypt-button");
130+
};
131+
};

0 commit comments

Comments
 (0)