From d695f588de1c06e633018ba2cb90ff1037ea40a0 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Wed, 8 Mar 2023 12:42:59 -0500 Subject: [PATCH 001/113] ensayo --- src/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.html b/src/index.html index 788db3c9..34dfc12f 100644 --- a/src/index.html +++ b/src/index.html @@ -7,6 +7,7 @@ Document +

hola

\ No newline at end of file From 46e409d1d794dca4e89c5cfa72d73fe9d826c70d Mon Sep 17 00:00:00 2001 From: katalimbu Date: Wed, 8 Mar 2023 15:06:39 -0300 Subject: [PATCH 002/113] pruebita --- src/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.html b/src/index.html index 34dfc12f..40759afb 100644 --- a/src/index.html +++ b/src/index.html @@ -7,7 +7,7 @@ Document -

hola

+

hola!!

\ No newline at end of file From 2449b652bbd7679e948f27082ea8ed3974874582 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Wed, 8 Mar 2023 13:58:54 -0500 Subject: [PATCH 003/113] vistahome --- src/componets/home.js | 18 ++++++++++++++++++ src/componets/login.js | 0 src/componets/register.js | 0 src/index.html | 6 ++++-- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/componets/home.js create mode 100644 src/componets/login.js create mode 100644 src/componets/register.js diff --git a/src/componets/home.js b/src/componets/home.js new file mode 100644 index 00000000..77b698cd --- /dev/null +++ b/src/componets/home.js @@ -0,0 +1,18 @@ +export const home = () =>{ + + + const divHome = document.createElement("div"); + const buttonRegister = document.createElement("button"); + const buttonLogin = document.createElement("button"); + buttonLogin.textContent ="Regístrate"; + buttonRegister.textContent = "Iniciar Sesión"; + const img = document.createElement("img"); + img.setAttribute("logo"); + +divHome.appendChild("img"); + divHome.appendChild("buttonLogin"); + divHome.appendChild("buttonRegister"); + + return divHome; + +}; diff --git a/src/componets/login.js b/src/componets/login.js new file mode 100644 index 00000000..e69de29b diff --git a/src/componets/register.js b/src/componets/register.js new file mode 100644 index 00000000..e69de29b diff --git a/src/index.html b/src/index.html index 34dfc12f..554b3f3f 100644 --- a/src/index.html +++ b/src/index.html @@ -4,10 +4,12 @@ - Document + Reda -

hola

+
+ +
\ No newline at end of file From f7afcf28fb7670581a4ac2ce9c0a1d36ebabf10c Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Wed, 8 Mar 2023 19:54:36 -0500 Subject: [PATCH 004/113] componentehome --- src/componets/home.js | 28 ++++++++++++---------------- src/main.js | 1 + 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 77b698cd..c4abbac6 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,18 +1,14 @@ -export const home = () =>{ - - - const divHome = document.createElement("div"); - const buttonRegister = document.createElement("button"); - const buttonLogin = document.createElement("button"); - buttonLogin.textContent ="Regístrate"; - buttonRegister.textContent = "Iniciar Sesión"; - const img = document.createElement("img"); - img.setAttribute("logo"); - -divHome.appendChild("img"); - divHome.appendChild("buttonLogin"); - divHome.appendChild("buttonRegister"); - - return divHome; +export const home = () => { + const divHome = document.createElement('div'); + const buttonRegister = document.createElement('button'); + const buttonLogin = document.createElement('button'); + buttonLogin.textContent = 'Regístrate'; + buttonRegister.textContent = 'Iniciar Sesión'; + const img = document.createElement('img'); + img.setAttribute('logo'); + divHome.appendChild('img'); + divHome.appendChild('buttonLogin'); + divHome.appendChild('buttonRegister'); + return divHome; }; diff --git a/src/main.js b/src/main.js index ac27e91a..2f3870b5 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,5 @@ // Este es el punto de entrada de tu aplicacion +// Aquì se importa las funciones de los componentes import { myFunction } from './lib/index.js'; From 4ed2870292a031667f8bff8f4b57ffff43a87e53 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Thu, 9 Mar 2023 22:39:29 -0300 Subject: [PATCH 005/113] primera funcion en login --- src/componets/home.js | 24 ++++++++++-------------- src/componets/login.js | 14 ++++++++++++++ src/main.js | 8 ++++---- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 77b698cd..282bf6f8 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,18 +1,14 @@ export const home = () =>{ - - - const divHome = document.createElement("div"); - const buttonRegister = document.createElement("button"); - const buttonLogin = document.createElement("button"); - buttonLogin.textContent ="Regístrate"; - buttonRegister.textContent = "Iniciar Sesión"; - const img = document.createElement("img"); - img.setAttribute("logo"); - -divHome.appendChild("img"); - divHome.appendChild("buttonLogin"); - divHome.appendChild("buttonRegister"); + const divHome = document.createElement('div'); + const buttonRegister = document.createElement('button'); + const buttonLogin = document.createElement('button'); + buttonLogin.textContent ='Regístrate'; + buttonRegister.textContent = 'Iniciar Sesión'; + const img = document.createElement('img'); + img.setAttribute('logo'); + divHome.appendChild(img); + divHome.appendChild(buttonLogin); + divHome.appendChild(buttonRegister); return divHome; - }; diff --git a/src/componets/login.js b/src/componets/login.js index e69de29b..565192c7 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -0,0 +1,14 @@ +export const login =() =>{ + + const HomeDiv = document.createElement('div'); + HomeDiv.textContent = 'Bienvenida al login'; + const buttonHome = document.createElement('button'); + + buttonHome.textContent = 'Regresar al Home'; + + buttonHome.addEventListener('click', () => onNavigate('/')); + + HomeDiv.appendChild(buttonHome); + return HomeDiv; +}; + diff --git a/src/main.js b/src/main.js index ac27e91a..5c79b246 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,5 @@ -// Este es el punto de entrada de tu aplicacion +import { login } from './componets/login.js'; -import { myFunction } from './lib/index.js'; - -myFunction(); +const component = login(); +const rootDiv = document.getElementById('root'); +rootDiv.append(component) \ No newline at end of file From 6ac6d1c54bf1ed2c8112b92a18a36662a315339f Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Thu, 9 Mar 2023 19:48:29 -0600 Subject: [PATCH 006/113] primera estructura del component registro --- src/componets/home.js | 27 ++++++++++++--------------- src/componets/register.js | 16 ++++++++++++++++ src/main.js | 6 ++++-- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 77b698cd..2fe54319 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,18 +1,15 @@ -export const home = () =>{ - - - const divHome = document.createElement("div"); - const buttonRegister = document.createElement("button"); - const buttonLogin = document.createElement("button"); - buttonLogin.textContent ="Regístrate"; - buttonRegister.textContent = "Iniciar Sesión"; - const img = document.createElement("img"); - img.setAttribute("logo"); +export const home = () => { + const divHome = document.createElement('div'); + const buttonRegister = document.createElement('button'); + const buttonLogin = document.createElement('button'); + buttonLogin.textContent = 'Regístrate'; + buttonRegister.textContent = 'Iniciar Sesión'; + const img = document.createElement('img'); + img.setAttribute('class', 'logo'); -divHome.appendChild("img"); - divHome.appendChild("buttonLogin"); - divHome.appendChild("buttonRegister"); - - return divHome; + divHome.appendChild(img); + divHome.appendChild(buttonLogin); + divHome.appendChild(buttonRegister); + return divHome; }; diff --git a/src/componets/register.js b/src/componets/register.js index e69de29b..f00a2a47 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -0,0 +1,16 @@ +export const register = () => { + const navDiv = document.createElement('nav'); + const img = document.createElement('img'); + img.setAttribute('class', 'logo'); + navDiv.innerHTML = ('Bienvenida al Registro'); + const HomeDiv = document.createElement('div'); + + + const buttonHome = document.createElement('button'); + buttonHome.textContent = 'enviar'; + const input = document.createElement('input'); + input.setAttribute('type', 'text'); + HomeDiv.appendChild(input); + HomeDiv.appendChild(buttonHome); + return HomeDiv; +}; \ No newline at end of file diff --git a/src/main.js b/src/main.js index ac27e91a..21dc9647 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,7 @@ // Este es el punto de entrada de tu aplicacion -import { myFunction } from './lib/index.js'; +import { register } from './componets/register.js'; -myFunction(); +const component = register(); +const rootDiv = document.getElementById('root'); +rootDiv.append(component); \ No newline at end of file From f26a2d17dfb40a7c221039faff08602fd0eaf412 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Thu, 9 Mar 2023 20:13:33 -0600 Subject: [PATCH 007/113] los inputs en el component register tienen placeholder --- src/componets/register.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index f00a2a47..caad36cd 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -4,13 +4,19 @@ export const register = () => { img.setAttribute('class', 'logo'); navDiv.innerHTML = ('Bienvenida al Registro'); const HomeDiv = document.createElement('div'); - - const buttonHome = document.createElement('button'); buttonHome.textContent = 'enviar'; - const input = document.createElement('input'); - input.setAttribute('type', 'text'); - HomeDiv.appendChild(input); + const inputNombre = document.createElement('input'); + const labelNombre = document.createElement('label'); + labelNombre.innerHTML = ('nombre'); + inputNombre.appendChild(labelNombre); + inputNombre.setAttribute('type', 'text'); + inputNombre.setAttribute('placeholder', 'text'); + HomeDiv.appendChild(inputNombre); + const inputContraseña = document.createElement('input'); + inputContraseña.setAttribute('type', 'text'); + HomeDiv.appendChild(inputContraseña); + HomeDiv.appendChild(inputNombre); HomeDiv.appendChild(buttonHome); return HomeDiv; }; \ No newline at end of file From cc13c4c9ae1ad6a95f551818f3626a1ee87eb86a Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Thu, 9 Mar 2023 21:21:36 -0600 Subject: [PATCH 008/113] todos los inputs en component register, falta option de rol --- src/componets/register.js | 67 ++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index caad36cd..37a6e5ff 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -1,22 +1,53 @@ export const register = () => { - const navDiv = document.createElement('nav'); - const img = document.createElement('img'); - img.setAttribute('class', 'logo'); - navDiv.innerHTML = ('Bienvenida al Registro'); +// const divHome = document.createElement('nav'); +// const img = document.createElement('img'); +// img.setAttribute('class', 'logo'); const HomeDiv = document.createElement('div'); - const buttonHome = document.createElement('button'); - buttonHome.textContent = 'enviar'; - const inputNombre = document.createElement('input'); - const labelNombre = document.createElement('label'); - labelNombre.innerHTML = ('nombre'); - inputNombre.appendChild(labelNombre); - inputNombre.setAttribute('type', 'text'); - inputNombre.setAttribute('placeholder', 'text'); - HomeDiv.appendChild(inputNombre); - const inputContraseña = document.createElement('input'); - inputContraseña.setAttribute('type', 'text'); - HomeDiv.appendChild(inputContraseña); - HomeDiv.appendChild(inputNombre); - HomeDiv.appendChild(buttonHome); + HomeDiv.innerHTML = ('Registro de usuario'); + const divForm = document.createElement('div'); + HomeDiv.appendChild(divForm); + + const inputName = document.createElement('input'); + inputName.setAttribute('type', 'text'); + inputName.setAttribute('placeholder', 'nombre'); + + const inputPassword = document.createElement('input'); + inputPassword.setAttribute('type', 'text'); + inputPassword.setAttribute('placeholder', 'contraseña'); + + const inputMail = document.createElement('input'); + inputMail.setAttribute('type', 'text'); + inputMail.setAttribute('placeholder', 'Correo Electrónico'); + + const inputNationality = document.createElement('input'); + inputNationality.setAttribute('type', 'text'); + inputNationality.setAttribute('placeholder', 'Nacionalidad'); + + const inputDateOfBirth = document.createElement('input'); + inputDateOfBirth.setAttribute('type', 'text'); + inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); + + const inputOcupation = document.createElement('input'); + inputOcupation.setAttribute('type', 'text'); + inputOcupation.setAttribute('placeholder', 'Ocupación'); + +// const optionRolInReda = document.createElement('option'); +// optionRolInReda.setAttribute('value', 'especialista'); +// document.createTextNode('especialista'); +// optionRolInReda.setAttribute('value', 'cuidador'); + + const buttonSend = document.createElement('button'); + buttonSend.textContent = 'enviar'; + + divForm.appendChild(inputName); + divForm.appendChild(inputPassword); + divForm.appendChild(inputMail); + divForm.appendChild(inputNationality); + divForm.appendChild(inputDateOfBirth); + divForm.appendChild(inputOcupation); +// divForm.appendChild(optionRolInReda); + divForm.appendChild(buttonSend); + + return HomeDiv; }; \ No newline at end of file From 420265cb75b5ddc07440ec81144bdb6fd29a7c5e Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Fri, 10 Mar 2023 08:06:23 -0600 Subject: [PATCH 009/113] =?UTF-8?q?desplegable=20gen=C3=A9rico=20en=20regi?= =?UTF-8?q?ster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componets/register.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 37a6e5ff..9ed8aeea 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -31,10 +31,19 @@ export const register = () => { inputOcupation.setAttribute('type', 'text'); inputOcupation.setAttribute('placeholder', 'Ocupación'); -// const optionRolInReda = document.createElement('option'); -// optionRolInReda.setAttribute('value', 'especialista'); -// document.createTextNode('especialista'); -// optionRolInReda.setAttribute('value', 'cuidador'); +const sel = document.createElement("select"); +const opt1 = document.createElement("option"); +const opt2 = document.createElement("option"); + +opt1.value = "1"; +opt1.text = "Option: Value 1"; + +opt2.value = "2"; +opt2.text = "Option: Value 2"; + +sel.add(opt1, null); +sel.add(opt2, null); + const buttonSend = document.createElement('button'); buttonSend.textContent = 'enviar'; @@ -45,7 +54,7 @@ export const register = () => { divForm.appendChild(inputNationality); divForm.appendChild(inputDateOfBirth); divForm.appendChild(inputOcupation); -// divForm.appendChild(optionRolInReda); + divForm.appendChild(sel); divForm.appendChild(buttonSend); From dfdbd8c3d1560dc70be84ca0b3701ed18ae8993f Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Fri, 10 Mar 2023 10:14:14 -0500 Subject: [PATCH 010/113] vistahome --- src/componets/home.js | 24 +++++++++++++++++++----- src/componets/register.js | 13 +++++++++++++ src/lib/index.js | 2 +- src/main.js | 14 ++++++++++++-- src/style.css | 3 +++ 5 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 src/style.css diff --git a/src/componets/home.js b/src/componets/home.js index c4abbac6..26a54ea5 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,14 +1,28 @@ export const home = () => { const divHome = document.createElement('div'); + const header = document.createElement('header'); + const square = document.createElement('div'); + const welcome = document.createElement('p'); + const img = document.createElement('img'); + const buttonRegister = document.createElement('button'); const buttonLogin = document.createElement('button'); + const footer = document.createElement('footer'); buttonLogin.textContent = 'Regístrate'; buttonRegister.textContent = 'Iniciar Sesión'; - const img = document.createElement('img'); - img.setAttribute('logo'); + welcome.textContent = 'Bienvenidos a Reda'; + img.setAttribute('id', 'logo'); + img.setAttribute('src', 'https://i.pinimg.com/564x/ed/67/9a/ed679a1a5874f2cf95bb5fcad09d6cf7.jpg'); + welcome.setAttribute('id', 'welcome'); + header.setAttribute('class', 'header'); + footer.setAttribute('class', 'footer'); + divHome.appendChild(square); + square.appendChild(header); + square.appendChild(footer); + square.appendChild(img); + square.appendChild(welcome); + square.appendChild(buttonLogin); + square.appendChild(buttonRegister); - divHome.appendChild('img'); - divHome.appendChild('buttonLogin'); - divHome.appendChild('buttonRegister'); return divHome; }; diff --git a/src/componets/register.js b/src/componets/register.js index e69de29b..a850fc22 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -0,0 +1,13 @@ +export const register = () => { + const divHome = document.createElement('div'); + const inputName = document.createElement('input'); + + inputName.textContent = 'nombre'; + console.log(inputName.textContent); + const img = document.createElement('img'); + img.setAttribute('logo'); + divHome.appendChild('img'); + divHome.appendChild('buttonLogin'); + divHome.appendChild('buttonRegister'); + return divHome; +}; \ No newline at end of file diff --git a/src/lib/index.js b/src/lib/index.js index d1930899..77681097 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -2,5 +2,5 @@ export const myFunction = () => { // aqui tu codigo - console.log('Hola mundo!'); + }; diff --git a/src/main.js b/src/main.js index 2f3870b5..75258f90 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,16 @@ // Este es el punto de entrada de tu aplicacion // Aquì se importa las funciones de los componentes -import { myFunction } from './lib/index.js'; -myFunction(); +//import { myFunction } from './lib/index.js'; +import { home } from './componets/home.js'; + +//myFunction(); +// const routes = { + // '/':home, + // }; + // const components = routes[window.location.pathname]; + +const component = home(); +const rootDiv = document.getElementById('root'); +rootDiv.append(component); diff --git a/src/style.css b/src/style.css new file mode 100644 index 00000000..320f7e0c --- /dev/null +++ b/src/style.css @@ -0,0 +1,3 @@ +.Bienvenida{ + color:blue; +} \ No newline at end of file From 9e37377577b07fe5e3686c54a109b0c98c36707a Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Fri, 10 Mar 2023 10:11:19 -0600 Subject: [PATCH 011/113] primer select rol en reda, falta select anidado especialista --- src/componets/register.js | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 9ed8aeea..413f2e8b 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -31,19 +31,37 @@ export const register = () => { inputOcupation.setAttribute('type', 'text'); inputOcupation.setAttribute('placeholder', 'Ocupación'); -const sel = document.createElement("select"); -const opt1 = document.createElement("option"); -const opt2 = document.createElement("option"); +const selectRolReda = document.createElement("select"); +const optionRol = document.createElement("option"); +const optionEspecialist = document.createElement("option"); +const optionCarer = document.createElement("option"); -opt1.value = "1"; -opt1.text = "Option: Value 1"; +optionRol.value = " "; +optionRol.text = "--Elige tu Rol en Reda--"; -opt2.value = "2"; -opt2.text = "Option: Value 2"; +optionEspecialist.value = "Especialist"; +optionEspecialist.text = "Especialista"; -sel.add(opt1, null); -sel.add(opt2, null); +optionCarer.value = "Carer"; +optionCarer.text = "Cuidador"; +selectRolReda.add(optionRol, null); +selectRolReda.add(optionEspecialist, null); +selectRolReda.add(optionCarer, null); + +optionEspecialist.value = "Especialist"; +optionEspecialist.text = "Especialista"; + +optionEspecialist.value = "Especialist"; +optionEspecialist.text = "Especialista"; + +optionEspecialist.value = "Especialist"; +optionEspecialist.text = "Especialista"; + +const selectEspecialist = document.createElement("select"); +const optionPsichologyst = document.createElement("option"); +const optionTeacher = document.createElement("option"); +const optionDoctor = document.createElement("option"); const buttonSend = document.createElement('button'); buttonSend.textContent = 'enviar'; @@ -54,7 +72,7 @@ sel.add(opt2, null); divForm.appendChild(inputNationality); divForm.appendChild(inputDateOfBirth); divForm.appendChild(inputOcupation); - divForm.appendChild(sel); + divForm.appendChild(selectRolReda); divForm.appendChild(buttonSend); From 118a1285aacde6ea987100429de5be5742932baf Mon Sep 17 00:00:00 2001 From: katalimbu Date: Fri, 10 Mar 2023 15:26:42 -0300 Subject: [PATCH 012/113] union de las rutas sin resultado aun --- src/main.js | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main.js b/src/main.js index 2b206c82..dd79d3ab 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,36 @@ +import { home } from './componets/home.js'; import { login } from './componets/login.js'; - import { register } from './componets/register.js'; -const component = register(); -const rootDiv = document.getElementById('root'); -rootDiv.append(component); +import { + // navigate, + setRoutes, + handlePopState, + renderComponent, + } from './index.js' + const routes = [ + { + pathname: '/', + component: home, + }, + { + pathname: '/register', + component: register, + }, + { + pathname: '/login', + component: login, + }, + // { + // pathname: '*', // ruta por defecto + // component: NotFound, + // }, + ] + +// const component = login(); +// const rootDiv = document.getElementById('root'); +// rootDiv.append(component) +// rootDiv.innerHTML = routes[window.location.pathname]; \ No newline at end of file From 89304497e606fcb3804e0e7d5077ceed1f8f7a50 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Mon, 13 Mar 2023 12:58:30 -0600 Subject: [PATCH 013/113] se despliega la interfaz de usuario con vista anclada a ruta --- src/componets/home.js | 3 --- src/componets/login.js | 20 ++++++++---------- src/componets/register.js | 4 ---- src/main.js | 15 +++++++------- src/router.js | 43 +++++++++++++++++++++++++++++++++++++++ src/routes.js | 10 +++++++++ 6 files changed, 68 insertions(+), 27 deletions(-) create mode 100644 src/router.js create mode 100644 src/routes.js diff --git a/src/componets/home.js b/src/componets/home.js index b7c71bc1..7da92979 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,4 +1,3 @@ - export const home = () => { const divHome = document.createElement('div'); const header = document.createElement('header'); @@ -24,7 +23,5 @@ export const home = () => { square.appendChild(welcome); square.appendChild(buttonLogin); square.appendChild(buttonRegister); - - return divHome; }; diff --git a/src/componets/login.js b/src/componets/login.js index 565192c7..07b41a56 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -1,14 +1,10 @@ -export const login =() =>{ - - const HomeDiv = document.createElement('div'); - HomeDiv.textContent = 'Bienvenida al login'; - const buttonHome = document.createElement('button'); - - buttonHome.textContent = 'Regresar al Home'; - - buttonHome.addEventListener('click', () => onNavigate('/')); - - HomeDiv.appendChild(buttonHome); - return HomeDiv; +export const login =() => { + const HomeDiv = document.createElement('div'); + HomeDiv.textContent = 'Bienvenida al login'; + const buttonHome = document.createElement('button'); + buttonHome.textContent = 'Regresar al Home'; + buttonHome.addEventListener('click', () => onNavigate('/')); + HomeDiv.appendChild(buttonHome); + return HomeDiv; }; diff --git a/src/componets/register.js b/src/componets/register.js index 56b62e70..e4a69bfd 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -1,8 +1,4 @@ export const register = () => { - -// const divHome = document.createElement('nav'); -// const img = document.createElement('img'); -// img.setAttribute('class', 'logo'); const HomeDiv = document.createElement('div'); HomeDiv.innerHTML = ('Registro de usuario'); const divForm = document.createElement('div'); diff --git a/src/main.js b/src/main.js index 2b206c82..d08de57b 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,9 @@ +// import { initFirebase } from "./lib/firebase"; +import { initRouter } from './router'; +import { ROUTES } from './routes'; -import { login } from './componets/login.js'; - -import { register } from './componets/register.js'; - -const component = register(); -const rootDiv = document.getElementById('root'); -rootDiv.append(component); - +// Initialize Firebase +// initFirebase(); +// Initialize Router +initRouter(ROUTES); \ No newline at end of file diff --git a/src/router.js b/src/router.js new file mode 100644 index 00000000..4634f5e3 --- /dev/null +++ b/src/router.js @@ -0,0 +1,43 @@ +const LOCAL_ROUTES = {}; + +// Navigate to a specific path and update the history +export const navigateTo = (pathname, updateHistory = true) => { + // If the path is not found, redirect to the home page + // acá establece la ruta de default, en este caso es login. + const path = typeof LOCAL_ROUTES[pathname] !== 'function' ? pathname : '/'; + // Update the history + // va guardando en el objeto vacío ({}) las rutas que ha visitado el usuario. + // sintaxis del método pushState(título de la ventana,url+nombre de la ruta (login,home,register)) + if (updateHistory) { + window.history.pushState({}, path, window.location.origin + pathname); + } + + // Clear the root section and render the new component + // Limpiar el contenido de la pantalla y no sobreescribir el contenido. + const rootSection = document.getElementById('root'); + rootSection.innerHTML = ''; + rootSection.append(LOCAL_ROUTES[pathname]()); +}; + +// Initialize the router with the routes +export const initRouter = (routes) => { + // Add routes to LOCAL_ROUTES + // método .keys convierte un objeto a un array,entonces devuelve array [] + // método .reduce suma los valores de un array y devuelve un solo valor. + // no nos queda muy clara esta parte del codigo.*** + Object.keys(routes).reduce((currentRoutes, pathname) => { + currentRoutes[pathname] = routes[pathname]; + console.log (currentRoutes); + console.log (LOCAL_ROUTES); + return currentRoutes; + }, LOCAL_ROUTES); + + // Add event listener to handle back/forward button + window.addEventListener('popstate', (e) => { + navigateTo(window.location.pathname, false); + }); + // Add event listener to handle page load + window.addEventListener('load', () => { + navigateTo(window.location.pathname, false); + }); +}; diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 00000000..fe153bba --- /dev/null +++ b/src/routes.js @@ -0,0 +1,10 @@ +import { home } from './componets/home'; +import { login } from './componets/login'; +import { register } from './componets/register'; + +export const ROUTES = { + '/': home, + '/home': home, + '/login': login, + '/register': register, +} \ No newline at end of file From 9bd0245f52b6891d2423e368f0af97e54617b73a Mon Sep 17 00:00:00 2001 From: katalimbu Date: Mon, 13 Mar 2023 22:06:38 -0300 Subject: [PATCH 014/113] funciona las ruts ancladas al iu --- src/componets/login.js | 1 - src/componets/register.js | 2 +- src/main.js | 38 -------------------------------------- 3 files changed, 1 insertion(+), 40 deletions(-) diff --git a/src/componets/login.js b/src/componets/login.js index 07b41a56..9101ed06 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -7,4 +7,3 @@ export const login =() => { HomeDiv.appendChild(buttonHome); return HomeDiv; }; - diff --git a/src/componets/register.js b/src/componets/register.js index e4a69bfd..6136cf1b 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -75,4 +75,4 @@ const optionDoctor = document.createElement("option"); return HomeDiv; -}; \ No newline at end of file +}; diff --git a/src/main.js b/src/main.js index fbd416cd..84a98901 100644 --- a/src/main.js +++ b/src/main.js @@ -2,46 +2,8 @@ import { initRouter } from './router'; import { ROUTES } from './routes'; - // Initialize Firebase // initFirebase(); // Initialize Router initRouter(ROUTES); - -import { home } from './componets/home.js'; -import { login } from './componets/login.js'; -import { register } from './componets/register.js'; - -import { - // navigate, - setRoutes, - handlePopState, - renderComponent, - } from './index.js' - - const routes = [ - { - pathname: '/', - component: home, - }, - { - pathname: '/register', - component: register, - }, - { - pathname: '/login', - component: login, - }, - // { - // pathname: '*', // ruta por defecto - // component: NotFound, - // }, - ] - - -// const component = login(); -// const rootDiv = document.getElementById('root'); -// rootDiv.append(component) -// rootDiv.innerHTML = routes[window.location.pathname]; - From 04650fb00a255c8efb0bc6215b66169d15016c49 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Mon, 13 Mar 2023 20:59:53 -0500 Subject: [PATCH 015/113] salto de linea --- src/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.js b/src/main.js index 84a98901..92d76ad4 100644 --- a/src/main.js +++ b/src/main.js @@ -7,3 +7,4 @@ import { ROUTES } from './routes'; // Initialize Router initRouter(ROUTES); + From 6e0cca056c2ba68605e0b70521d173223414466d Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Mon, 13 Mar 2023 20:10:26 -0600 Subject: [PATCH 016/113] =?UTF-8?q?peque=C3=B1a=20prueba?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes.js b/src/routes.js index fe153bba..6f1e9552 100644 --- a/src/routes.js +++ b/src/routes.js @@ -7,4 +7,5 @@ export const ROUTES = { '/home': home, '/login': login, '/register': register, + } \ No newline at end of file From 0d6998783fa057c9bddb4225cc612737be2645c0 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 14 Mar 2023 20:44:16 -0600 Subject: [PATCH 017/113] proyecto conectado a firebase, no funciona aun --- package.json | 5 +- src/componets/login.js | 9 ++- src/componets/register.js | 163 +++++++++++++++++++++++++------------- src/index.html | 3 +- src/lib/authentication.js | 16 ++++ src/lib/firebase.js | 23 ++++++ src/main.js | 3 +- src/routes.js | 3 +- 8 files changed, 160 insertions(+), 65 deletions(-) create mode 100644 src/lib/authentication.js create mode 100644 src/lib/firebase.js diff --git a/package.json b/package.json index 8701ab74..c5939691 100644 --- a/package.json +++ b/package.json @@ -41,5 +41,8 @@ "createdAt": "2023-02-02T20:38:10.344Z", "version": "5.5.0", "commit": "36bf90dc273bab8ffe9546b09eece6a132f8a669" + }, + "dependencies": { + "firebase": "^9.17.2" } -} \ No newline at end of file +} diff --git a/src/componets/login.js b/src/componets/login.js index 9101ed06..69dbf8ba 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -1,9 +1,14 @@ -export const login =() => { +import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; +import { navigateTo } from "../router"; + +export const login = () => { const HomeDiv = document.createElement('div'); HomeDiv.textContent = 'Bienvenida al login'; const buttonHome = document.createElement('button'); buttonHome.textContent = 'Regresar al Home'; - buttonHome.addEventListener('click', () => onNavigate('/')); + buttonHome.addEventListener('click', () => { + navigateTo('/'); + }); HomeDiv.appendChild(buttonHome); return HomeDiv; }; diff --git a/src/componets/register.js b/src/componets/register.js index 6136cf1b..d4c3a8ff 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -1,78 +1,127 @@ +import { registerWithEmail } from '../lib/authentication.js'; +import { navigateTo } from '../router.js'; + export const register = () => { - const HomeDiv = document.createElement('div'); - HomeDiv.innerHTML = ('Registro de usuario'); - const divForm = document.createElement('div'); - HomeDiv.appendChild(divForm); + const div = document.createElement('div'); + div.innerHTML = `
+
+

Register

+

Please fill in this form to create an account.

+
+ + + + + + + + + +
+

By creating an account you agree to our Terms & Privacy.

+ + +
+ +
`; + + div.querySelector('#registerForm').addEventListener('submit', (e) => { + e.preventDefault(); + const email = e.target.email.value; + const password = e.target.psw.value; + registerWithEmail(email, password) + .then((useCredential) => { + navigateTo('/home'); + }) + .catch(error => { + console.error(error); + alert(error.message); + }); + }); + + return div; +}; + +// const HomeDiv = document.createElement('div'); +// HomeDiv.innerHTML = ('Registro de usuario'); +// const divForm = document.createElement('form'); +// HomeDiv.appendChild(divForm); - const inputName = document.createElement('input'); - inputName.setAttribute('type', 'text'); - inputName.setAttribute('placeholder', 'nombre'); +// const inputName = document.createElement('input'); +// inputName.setAttribute('type', 'text'); +// inputName.setAttribute('placeholder', 'nombre'); - const inputPassword = document.createElement('input'); - inputPassword.setAttribute('type', 'text'); - inputPassword.setAttribute('placeholder', 'contraseña'); +// const inputPassword = document.createElement('input'); +// inputPassword.setAttribute('type', 'text'); +// inputPassword.setAttribute('placeholder', 'contraseña'); - const inputMail = document.createElement('input'); - inputMail.setAttribute('type', 'text'); - inputMail.setAttribute('placeholder', 'Correo Electrónico'); +// const inputMail = document.createElement('input'); +// inputMail.setAttribute('type', 'text'); +// inputMail.setAttribute('placeholder', 'Correo Electrónico'); - const inputNationality = document.createElement('input'); - inputNationality.setAttribute('type', 'text'); - inputNationality.setAttribute('placeholder', 'Nacionalidad'); +// const inputNationality = document.createElement('input'); +// inputNationality.setAttribute('type', 'text'); +// inputNationality.setAttribute('placeholder', 'Nacionalidad'); - const inputDateOfBirth = document.createElement('input'); - inputDateOfBirth.setAttribute('type', 'text'); - inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); +// const inputDateOfBirth = document.createElement('input'); +// inputDateOfBirth.setAttribute('type', 'text'); +// inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); - const inputOcupation = document.createElement('input'); - inputOcupation.setAttribute('type', 'text'); - inputOcupation.setAttribute('placeholder', 'Ocupación'); +// const inputOcupation = document.createElement('input'); +// inputOcupation.setAttribute('type', 'text'); +// inputOcupation.setAttribute('placeholder', 'Ocupación'); -const selectRolReda = document.createElement("select"); -const optionRol = document.createElement("option"); -const optionEspecialist = document.createElement("option"); -const optionCarer = document.createElement("option"); +// const selectRolReda = document.createElement("select"); +// const optionRol = document.createElement("option"); +// const optionEspecialist = document.createElement("option"); +// const optionCarer = document.createElement("option"); -optionRol.value = " "; -optionRol.text = "--Elige tu Rol en Reda--"; +// optionRol.value = " "; +// optionRol.text = "--Elige tu Rol en Reda--"; -optionEspecialist.value = "Especialist"; -optionEspecialist.text = "Especialista"; +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; -optionCarer.value = "Carer"; -optionCarer.text = "Cuidador"; +// optionCarer.value = "Carer"; +// optionCarer.text = "Cuidador"; -selectRolReda.add(optionRol, null); -selectRolReda.add(optionEspecialist, null); -selectRolReda.add(optionCarer, null); +// selectRolReda.add(optionRol, null); +// selectRolReda.add(optionEspecialist, null); +// selectRolReda.add(optionCarer, null); -optionEspecialist.value = "Especialist"; -optionEspecialist.text = "Especialista"; +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; -optionEspecialist.value = "Especialist"; -optionEspecialist.text = "Especialista"; +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; -optionEspecialist.value = "Especialist"; -optionEspecialist.text = "Especialista"; +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; -const selectEspecialist = document.createElement("select"); -const optionPsichologyst = document.createElement("option"); -const optionTeacher = document.createElement("option"); -const optionDoctor = document.createElement("option"); +// const selectEspecialist = document.createElement("select"); +// const optionPsichologyst = document.createElement("option"); +// const optionTeacher = document.createElement("option"); +// const optionDoctor = document.createElement("option"); - const buttonSend = document.createElement('button'); - buttonSend.textContent = 'enviar'; +// const buttonSend = document.createElement('button'); +// buttonSend.textContent = 'enviar'; - divForm.appendChild(inputName); - divForm.appendChild(inputPassword); - divForm.appendChild(inputMail); - divForm.appendChild(inputNationality); - divForm.appendChild(inputDateOfBirth); - divForm.appendChild(inputOcupation); - divForm.appendChild(selectRolReda); - divForm.appendChild(buttonSend); +// divForm.appendChild(inputName); +// divForm.appendChild(inputPassword); +// divForm.appendChild(inputMail); +// divForm.appendChild(inputNationality); +// divForm.appendChild(inputDateOfBirth); +// divForm.appendChild(inputOcupation); +// divForm.appendChild(selectRolReda); +// divForm.appendChild(buttonSend); - return HomeDiv; +// return HomeDiv; -}; +// }; diff --git a/src/index.html b/src/index.html index 3f614ac3..77c10605 100644 --- a/src/index.html +++ b/src/index.html @@ -5,6 +5,7 @@ Reda + @@ -12,6 +13,6 @@ - + \ No newline at end of file diff --git a/src/lib/authentication.js b/src/lib/authentication.js new file mode 100644 index 00000000..3e25e93b --- /dev/null +++ b/src/lib/authentication.js @@ -0,0 +1,16 @@ +import { getAuth, createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword } from 'firebase/auth'; + +export const signInWithPassword = (email, password) => { + const auth = getAuth(); + return signInWithEmailAndPassword(auth, email, password); +}; +export const signInWithGoogle = () => { + const auth = getAuth(); + const provider = new GoogleAuthProvider(); + return signInWithPopup(auth, provider); +}; + +export const registerWithEmail = (email, password) => { + const auth = getAuth(); + return createUserWithEmailAndPassword(auth, email, password); +}; diff --git a/src/lib/firebase.js b/src/lib/firebase.js new file mode 100644 index 00000000..f17c9c5b --- /dev/null +++ b/src/lib/firebase.js @@ -0,0 +1,23 @@ +import { initializeApp } from 'firebase/app'; +import { getAuth } from 'firebase/auth'; +// import { getFirestore } from 'firebase/firestore'; +// TODO: Add SDKs for Firebase products that you want to use +// https://firebase.google.com/docs/web/setup#available-libraries + +// Your web app's Firebase configuration +const firebaseConfig = { + apiKey: 'AIzaSyDG0CfYFCo1QM8MFTFUJdhVPZSUkmDU958', + authDomain: 'reda-d08aa.firebaseapp.com', + projectId: 'reda-d08aa', + storageBucket: 'reda-d08aa.appspot.com', + messagingSenderId: '761765204956', + appId: '1:761765204956:web:50f457c05bf2988ec17519', +}; + +// Initialize Firebase +// tutorial utiliza export, taller lo une todo en una sola funcion y la exporta. +export const app = initializeApp(firebaseConfig); +export const auth = getAuth(app); + +// // Initialize Cloud Firestore and get a reference to the service +// const db = getFirestore(app); diff --git a/src/main.js b/src/main.js index 92d76ad4..ca40dce2 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,4 @@ -// import { initFirebase } from "./lib/firebase"; +import { initializeApp } from './lib/firebase'; import { initRouter } from './router'; import { ROUTES } from './routes'; @@ -7,4 +7,3 @@ import { ROUTES } from './routes'; // Initialize Router initRouter(ROUTES); - diff --git a/src/routes.js b/src/routes.js index 6f1e9552..40b1e60f 100644 --- a/src/routes.js +++ b/src/routes.js @@ -7,5 +7,4 @@ export const ROUTES = { '/home': home, '/login': login, '/register': register, - -} \ No newline at end of file +}; From 1580cf550eae4ac42240f3f207fed4189421758d Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 14 Mar 2023 21:01:02 -0600 Subject: [PATCH 018/113] rutas funcionando error en deploy firebase --- src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index ca40dce2..341ea778 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,4 @@ -import { initializeApp } from './lib/firebase'; +// import { initializeApp } from './lib/firebase'; import { initRouter } from './router'; import { ROUTES } from './routes'; From 94c138b3e0a98ecdc7219ef8690984798e64342a Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 14 Mar 2023 21:36:46 -0600 Subject: [PATCH 019/113] problemas con imports en main y en firebase, pero funcionan las rutas --- src/lib/firebase.js | 4 +++- src/main.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/firebase.js b/src/lib/firebase.js index f17c9c5b..e14ed9b8 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -1,4 +1,6 @@ -import { initializeApp } from 'firebase/app'; +// import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.17.2/firebase-app.js'; +// el taller considera una funcion donde estan todos los servicios de firebase y la importa, nosotras no. +// import { initializeApp } from "firebase/app"; import { getAuth } from 'firebase/auth'; // import { getFirestore } from 'firebase/firestore'; // TODO: Add SDKs for Firebase products that you want to use diff --git a/src/main.js b/src/main.js index 341ea778..ee4988af 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,5 @@ -// import { initializeApp } from './lib/firebase'; + +// import { initFirebase } from "./lib/firebase"; import { initRouter } from './router'; import { ROUTES } from './routes'; From 41fb58c722549d9b719c24ee737de03364bc9f50 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Wed, 15 Mar 2023 11:17:40 -0600 Subject: [PATCH 020/113] router y firebase registro con gmail funcionando --- src/lib/authentication.js | 11 ++++------- src/lib/firebase.js | 2 +- src/main.js | 2 -- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/lib/authentication.js b/src/lib/authentication.js index 3e25e93b..42fc6708 100644 --- a/src/lib/authentication.js +++ b/src/lib/authentication.js @@ -1,16 +1,13 @@ -import { getAuth, createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword } from 'firebase/auth'; +import { createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword } from 'firebase/auth'; +import { auth } from './firebase.js' export const signInWithPassword = (email, password) => { - const auth = getAuth(); return signInWithEmailAndPassword(auth, email, password); }; export const signInWithGoogle = () => { - const auth = getAuth(); const provider = new GoogleAuthProvider(); return signInWithPopup(auth, provider); }; - -export const registerWithEmail = (email, password) => { - const auth = getAuth(); - return createUserWithEmailAndPassword(auth, email, password); +export const registerWithEmail = (email, password) => { +return createUserWithEmailAndPassword(auth, email, password); }; diff --git a/src/lib/firebase.js b/src/lib/firebase.js index e14ed9b8..925e84f7 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -1,6 +1,6 @@ // import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.17.2/firebase-app.js'; // el taller considera una funcion donde estan todos los servicios de firebase y la importa, nosotras no. -// import { initializeApp } from "firebase/app"; +import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; // import { getFirestore } from 'firebase/firestore'; // TODO: Add SDKs for Firebase products that you want to use diff --git a/src/main.js b/src/main.js index ee4988af..2c70503a 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,3 @@ - -// import { initFirebase } from "./lib/firebase"; import { initRouter } from './router'; import { ROUTES } from './routes'; From d055ffe898a8d870f394bbdadaf1dc5b486061de Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Wed, 15 Mar 2023 18:54:13 -0600 Subject: [PATCH 021/113] registro con inputs correctos --- src/componets/register.js | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index d4c3a8ff..d205b880 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -5,28 +5,33 @@ export const register = () => { const div = document.createElement('div'); div.innerHTML = `
-

Register

-

Please fill in this form to create an account.

-
+

Registro de Usuario

+ + + + + + + + + - - + + - - + + - - -
-

By creating an account you agree to our Terms & Privacy.

+ + + +
`; @@ -48,6 +53,8 @@ export const register = () => { return div; }; + + // const HomeDiv = document.createElement('div'); // HomeDiv.innerHTML = ('Registro de usuario'); // const divForm = document.createElement('form'); From 6982e422aa5e41ca060c9dc357763e5e02f8ac01 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Wed, 15 Mar 2023 20:23:52 -0500 Subject: [PATCH 022/113] agrego botones al inciio --- src/componets/home.js | 12 ++++++++++-- src/lib/authentication.js | 1 + src/lib/firebase.js | 5 +++++ src/main.js | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 7da92979..3128b56c 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,3 +1,5 @@ +import { navigateTo } from '../router'; + export const home = () => { const divHome = document.createElement('div'); const header = document.createElement('header'); @@ -8,8 +10,8 @@ export const home = () => { const buttonRegister = document.createElement('button'); const buttonLogin = document.createElement('button'); const footer = document.createElement('footer'); - buttonLogin.textContent = 'Regístrate'; - buttonRegister.textContent = 'Iniciar Sesión'; + buttonLogin.textContent = 'Iniciar sesiòn'; + buttonRegister.textContent = 'Regìstrate'; welcome.textContent = 'Bienvenidos a Reda'; img.setAttribute('id', 'logo'); img.setAttribute('src', 'https://i.pinimg.com/564x/ed/67/9a/ed679a1a5874f2cf95bb5fcad09d6cf7.jpg'); @@ -23,5 +25,11 @@ export const home = () => { square.appendChild(welcome); square.appendChild(buttonLogin); square.appendChild(buttonRegister); + buttonRegister.addEventListener('click', () => { + navigateTo('/register'); + }); + buttonLogin.addEventListener('click', () => { + navigateTo('/login'); + }); return divHome; }; diff --git a/src/lib/authentication.js b/src/lib/authentication.js index 42fc6708..5d0318f4 100644 --- a/src/lib/authentication.js +++ b/src/lib/authentication.js @@ -1,3 +1,4 @@ +//para autentficar cuando el usuario se meta import { createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword } from 'firebase/auth'; import { auth } from './firebase.js' diff --git a/src/lib/firebase.js b/src/lib/firebase.js index 925e84f7..4bfd8f8a 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -18,8 +18,13 @@ const firebaseConfig = { // Initialize Firebase // tutorial utiliza export, taller lo une todo en una sola funcion y la exporta. +//se inicilza export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); +//functiòn crear post que reciba los paràmetros y exportarla e importarla a el fedd +//a qui pondrìa los parametros internos consultar +//export const createPost = (titulo, descripcion) => { ... addDoc + // // Initialize Cloud Firestore and get a reference to the service // const db = getFirestore(app); diff --git a/src/main.js b/src/main.js index 2c70503a..da993fce 100644 --- a/src/main.js +++ b/src/main.js @@ -3,6 +3,6 @@ import { ROUTES } from './routes'; // Initialize Firebase // initFirebase(); - +//en el main se debe inicilaizar lo que se muestra en el dom // Initialize Router initRouter(ROUTES); From c1f863f607d2b2a859ab5718c10e85e23d193530 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Thu, 16 Mar 2023 14:25:56 -0300 Subject: [PATCH 023/113] logo reda --- src/components/home.js | 38 +++++++++++ src/components/login.js | 14 ++++ src/components/register.js | 128 +++++++++++++++++++++++++++++++++++++ src/componets/REDA (5).png | Bin 0 -> 42863 bytes src/componets/login.js | 4 +- src/componets/register.js | 9 +-- src/main.js | 2 +- src/style.css | 40 +++++++++++- 8 files changed, 223 insertions(+), 12 deletions(-) create mode 100644 src/components/home.js create mode 100644 src/components/login.js create mode 100644 src/components/register.js create mode 100644 src/componets/REDA (5).png diff --git a/src/components/home.js b/src/components/home.js new file mode 100644 index 00000000..ddfccaad --- /dev/null +++ b/src/components/home.js @@ -0,0 +1,38 @@ +import { navigateTo } from '../router'; + +export const home = () => { + const divHome = document.createElement('div'); + const header = document.createElement('header'); + const square = document.createElement('div'); + const welcome = document.createElement('p'); + const img = document.createElement('img'); + + const buttonRegister = document.createElement('button'); + const buttonLogin = document.createElement('button'); + const footer = document.createElement('footer'); + + buttonRegister.textContent = 'Regístrate'; + buttonLogin.textContent = 'Iniciar Sesión'; + welcome.textContent = 'Bienvenidos a Reda'; + + img.setAttribute('id', 'logo'); + img.setAttribute('src', 'https://i.pinimg.com/564x/ed/67/9a/ed679a1a5874f2cf95bb5fcad09d6cf7.jpg'); + welcome.setAttribute('class', 'welcomehome'); + header.setAttribute('class', 'headerview'); + square.setAttribute('class', 'square'); + footer.setAttribute('class', 'footerview'); + + divHome.appendChild(square); + square.appendChild(header); + square.appendChild(footer); + square.appendChild(img); + square.appendChild(welcome); + square.appendChild(buttonLogin); + square.appendChild(buttonRegister); + + buttonLogin.addEventListener('click', () => { + console.log('click'); + navigateTo('/login'); + }); + return divHome; +}; diff --git a/src/components/login.js b/src/components/login.js new file mode 100644 index 00000000..ddcf8570 --- /dev/null +++ b/src/components/login.js @@ -0,0 +1,14 @@ +// import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; +import { navigateTo } from '../router'; + +export const login = () => { + const HomeDiv = document.createElement('div'); + HomeDiv.textContent = 'Bienvenida al login'; + const buttonHome = document.createElement('button'); + buttonHome.textContent = 'Regresar al Home'; + buttonHome.addEventListener('click', () => { + navigateTo('/'); + }); + HomeDiv.appendChild(buttonHome); + return HomeDiv; +}; diff --git a/src/components/register.js b/src/components/register.js new file mode 100644 index 00000000..a102ca22 --- /dev/null +++ b/src/components/register.js @@ -0,0 +1,128 @@ +import { registerWithEmail } from '../lib/authentication.js'; +import { navigateTo } from '../router.js'; + +export const register = () => { + const div = document.createElement('div'); + div.innerHTML = `
+
+

Register

+

Please fill in this form to create an account.

+
+ + + + + + + + + +
+

By creating an account you agree to our Terms & Privacy.

+ + +
+ +
`; + + div.querySelector('#registerForm').addEventListener('submit', (e) => { + e.preventDefault(); + const email = e.target.email.value; + const password = e.target.psw.value; + registerWithEmail(email, password) + .then((userCredential) => { + const user = userCredential.user; + console.log(user); + navigateTo('/home'); + }) + .catch((error) => { + console.error(error); + alert(error.message); + }); + }); + + return div; +}; + +// const HomeDiv = document.createElement('div'); +// HomeDiv.innerHTML = ('Registro de usuario'); +// const divForm = document.createElement('form'); +// HomeDiv.appendChild(divForm); + +// const inputName = document.createElement('input'); +// inputName.setAttribute('type', 'text'); +// inputName.setAttribute('placeholder', 'nombre'); + +// const inputPassword = document.createElement('input'); +// inputPassword.setAttribute('type', 'text'); +// inputPassword.setAttribute('placeholder', 'contraseña'); + +// const inputMail = document.createElement('input'); +// inputMail.setAttribute('type', 'text'); +// inputMail.setAttribute('placeholder', 'Correo Electrónico'); + +// const inputNationality = document.createElement('input'); +// inputNationality.setAttribute('type', 'text'); +// inputNationality.setAttribute('placeholder', 'Nacionalidad'); + +// const inputDateOfBirth = document.createElement('input'); +// inputDateOfBirth.setAttribute('type', 'text'); +// inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); + +// const inputOcupation = document.createElement('input'); +// inputOcupation.setAttribute('type', 'text'); +// inputOcupation.setAttribute('placeholder', 'Ocupación'); + +// const selectRolReda = document.createElement("select"); +// const optionRol = document.createElement("option"); +// const optionEspecialist = document.createElement("option"); +// const optionCarer = document.createElement("option"); + +// optionRol.value = " "; +// optionRol.text = "--Elige tu Rol en Reda--"; + +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; + +// optionCarer.value = "Carer"; +// optionCarer.text = "Cuidador"; + +// selectRolReda.add(optionRol, null); +// selectRolReda.add(optionEspecialist, null); +// selectRolReda.add(optionCarer, null); + +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; + +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; + +// optionEspecialist.value = "Especialist"; +// optionEspecialist.text = "Especialista"; + +// const selectEspecialist = document.createElement("select"); +// const optionPsichologyst = document.createElement("option"); +// const optionTeacher = document.createElement("option"); +// const optionDoctor = document.createElement("option"); + +// const buttonSend = document.createElement('button'); +// buttonSend.textContent = 'enviar'; + +// divForm.appendChild(inputName); +// divForm.appendChild(inputPassword); +// divForm.appendChild(inputMail); +// divForm.appendChild(inputNationality); +// divForm.appendChild(inputDateOfBirth); +// divForm.appendChild(inputOcupation); +// divForm.appendChild(selectRolReda); +// divForm.appendChild(buttonSend); + +// return HomeDiv; + +// }; diff --git a/src/componets/REDA (5).png b/src/componets/REDA (5).png new file mode 100644 index 0000000000000000000000000000000000000000..064e3394694c1ea5ca51abfcde6a7dbbec467ed0 GIT binary patch literal 42863 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 Mz1F*0C9ALh16(rrjQ{`u literal 0 HcmV?d00001 diff --git a/src/componets/login.js b/src/componets/login.js index 69dbf8ba..ddcf8570 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -1,5 +1,5 @@ -import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; -import { navigateTo } from "../router"; +// import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; +import { navigateTo } from '../router'; export const login = () => { const HomeDiv = document.createElement('div'); diff --git a/src/componets/register.js b/src/componets/register.js index d205b880..9e775873 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -53,13 +53,11 @@ export const register = () => { return div; }; - - // const HomeDiv = document.createElement('div'); // HomeDiv.innerHTML = ('Registro de usuario'); // const divForm = document.createElement('form'); // HomeDiv.appendChild(divForm); - + // const inputName = document.createElement('input'); // inputName.setAttribute('type', 'text'); // inputName.setAttribute('placeholder', 'nombre'); @@ -83,7 +81,7 @@ export const register = () => { // const inputOcupation = document.createElement('input'); // inputOcupation.setAttribute('type', 'text'); // inputOcupation.setAttribute('placeholder', 'Ocupación'); - + // const selectRolReda = document.createElement("select"); // const optionRol = document.createElement("option"); // const optionEspecialist = document.createElement("option"); @@ -127,8 +125,7 @@ export const register = () => { // divForm.appendChild(inputOcupation); // divForm.appendChild(selectRolReda); // divForm.appendChild(buttonSend); - - + // return HomeDiv; // }; diff --git a/src/main.js b/src/main.js index da993fce..e00babb1 100644 --- a/src/main.js +++ b/src/main.js @@ -3,6 +3,6 @@ import { ROUTES } from './routes'; // Initialize Firebase // initFirebase(); -//en el main se debe inicilaizar lo que se muestra en el dom +// en el main se debe inicilaizar lo que se muestra en el dom // Initialize Router initRouter(ROUTES); diff --git a/src/style.css b/src/style.css index 320f7e0c..6b324108 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,37 @@ -.Bienvenida{ - color:blue; -} \ No newline at end of file +*{ + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Playfair Display', serif; + font-size: 20px; + } + body{ + background-color: #fef6e4; + } + .header{ + display: flex; + flex-direction: column; + justify-content: center; + justify-items: center; + width: 100%; + height: 100%; + } + #root{ + display: flex; + + + } + /*Vista para movil*/ + + @media(max-width:390px){ + /*register*/ + .container{ + display:flex; + } + + + + + } + + @media(max-width:1024px){} \ No newline at end of file From f0c106d430b4588261be6471cc4dd9f14e5697f0 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Thu, 16 Mar 2023 14:47:14 -0300 Subject: [PATCH 024/113] carpeta con imagen --- src/components/home.js | 38 -------- src/components/login.js | 14 --- src/components/register.js | 128 --------------------------- src/componets/home.js | 2 +- src/componets/{ => img}/REDA (5).png | Bin src/index.html | 1 + src/style.css | 6 +- 7 files changed, 7 insertions(+), 182 deletions(-) delete mode 100644 src/components/home.js delete mode 100644 src/components/login.js delete mode 100644 src/components/register.js rename src/componets/{ => img}/REDA (5).png (100%) diff --git a/src/components/home.js b/src/components/home.js deleted file mode 100644 index ddfccaad..00000000 --- a/src/components/home.js +++ /dev/null @@ -1,38 +0,0 @@ -import { navigateTo } from '../router'; - -export const home = () => { - const divHome = document.createElement('div'); - const header = document.createElement('header'); - const square = document.createElement('div'); - const welcome = document.createElement('p'); - const img = document.createElement('img'); - - const buttonRegister = document.createElement('button'); - const buttonLogin = document.createElement('button'); - const footer = document.createElement('footer'); - - buttonRegister.textContent = 'Regístrate'; - buttonLogin.textContent = 'Iniciar Sesión'; - welcome.textContent = 'Bienvenidos a Reda'; - - img.setAttribute('id', 'logo'); - img.setAttribute('src', 'https://i.pinimg.com/564x/ed/67/9a/ed679a1a5874f2cf95bb5fcad09d6cf7.jpg'); - welcome.setAttribute('class', 'welcomehome'); - header.setAttribute('class', 'headerview'); - square.setAttribute('class', 'square'); - footer.setAttribute('class', 'footerview'); - - divHome.appendChild(square); - square.appendChild(header); - square.appendChild(footer); - square.appendChild(img); - square.appendChild(welcome); - square.appendChild(buttonLogin); - square.appendChild(buttonRegister); - - buttonLogin.addEventListener('click', () => { - console.log('click'); - navigateTo('/login'); - }); - return divHome; -}; diff --git a/src/components/login.js b/src/components/login.js deleted file mode 100644 index ddcf8570..00000000 --- a/src/components/login.js +++ /dev/null @@ -1,14 +0,0 @@ -// import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; -import { navigateTo } from '../router'; - -export const login = () => { - const HomeDiv = document.createElement('div'); - HomeDiv.textContent = 'Bienvenida al login'; - const buttonHome = document.createElement('button'); - buttonHome.textContent = 'Regresar al Home'; - buttonHome.addEventListener('click', () => { - navigateTo('/'); - }); - HomeDiv.appendChild(buttonHome); - return HomeDiv; -}; diff --git a/src/components/register.js b/src/components/register.js deleted file mode 100644 index a102ca22..00000000 --- a/src/components/register.js +++ /dev/null @@ -1,128 +0,0 @@ -import { registerWithEmail } from '../lib/authentication.js'; -import { navigateTo } from '../router.js'; - -export const register = () => { - const div = document.createElement('div'); - div.innerHTML = `
-
-

Register

-

Please fill in this form to create an account.

-
- - - - - - - - - -
-

By creating an account you agree to our Terms & Privacy.

- - -
- -
`; - - div.querySelector('#registerForm').addEventListener('submit', (e) => { - e.preventDefault(); - const email = e.target.email.value; - const password = e.target.psw.value; - registerWithEmail(email, password) - .then((userCredential) => { - const user = userCredential.user; - console.log(user); - navigateTo('/home'); - }) - .catch((error) => { - console.error(error); - alert(error.message); - }); - }); - - return div; -}; - -// const HomeDiv = document.createElement('div'); -// HomeDiv.innerHTML = ('Registro de usuario'); -// const divForm = document.createElement('form'); -// HomeDiv.appendChild(divForm); - -// const inputName = document.createElement('input'); -// inputName.setAttribute('type', 'text'); -// inputName.setAttribute('placeholder', 'nombre'); - -// const inputPassword = document.createElement('input'); -// inputPassword.setAttribute('type', 'text'); -// inputPassword.setAttribute('placeholder', 'contraseña'); - -// const inputMail = document.createElement('input'); -// inputMail.setAttribute('type', 'text'); -// inputMail.setAttribute('placeholder', 'Correo Electrónico'); - -// const inputNationality = document.createElement('input'); -// inputNationality.setAttribute('type', 'text'); -// inputNationality.setAttribute('placeholder', 'Nacionalidad'); - -// const inputDateOfBirth = document.createElement('input'); -// inputDateOfBirth.setAttribute('type', 'text'); -// inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); - -// const inputOcupation = document.createElement('input'); -// inputOcupation.setAttribute('type', 'text'); -// inputOcupation.setAttribute('placeholder', 'Ocupación'); - -// const selectRolReda = document.createElement("select"); -// const optionRol = document.createElement("option"); -// const optionEspecialist = document.createElement("option"); -// const optionCarer = document.createElement("option"); - -// optionRol.value = " "; -// optionRol.text = "--Elige tu Rol en Reda--"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionCarer.value = "Carer"; -// optionCarer.text = "Cuidador"; - -// selectRolReda.add(optionRol, null); -// selectRolReda.add(optionEspecialist, null); -// selectRolReda.add(optionCarer, null); - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// const selectEspecialist = document.createElement("select"); -// const optionPsichologyst = document.createElement("option"); -// const optionTeacher = document.createElement("option"); -// const optionDoctor = document.createElement("option"); - -// const buttonSend = document.createElement('button'); -// buttonSend.textContent = 'enviar'; - -// divForm.appendChild(inputName); -// divForm.appendChild(inputPassword); -// divForm.appendChild(inputMail); -// divForm.appendChild(inputNationality); -// divForm.appendChild(inputDateOfBirth); -// divForm.appendChild(inputOcupation); -// divForm.appendChild(selectRolReda); -// divForm.appendChild(buttonSend); - -// return HomeDiv; - -// }; diff --git a/src/componets/home.js b/src/componets/home.js index 3128b56c..39780f6e 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -14,7 +14,7 @@ export const home = () => { buttonRegister.textContent = 'Regìstrate'; welcome.textContent = 'Bienvenidos a Reda'; img.setAttribute('id', 'logo'); - img.setAttribute('src', 'https://i.pinimg.com/564x/ed/67/9a/ed679a1a5874f2cf95bb5fcad09d6cf7.jpg'); + img.setAttribute('src','') welcome.setAttribute('id', 'welcome'); header.setAttribute('class', 'header'); footer.setAttribute('class', 'footer'); diff --git a/src/componets/REDA (5).png b/src/componets/img/REDA (5).png similarity index 100% rename from src/componets/REDA (5).png rename to src/componets/img/REDA (5).png diff --git a/src/index.html b/src/index.html index 77c10605..8c3d089a 100644 --- a/src/index.html +++ b/src/index.html @@ -6,6 +6,7 @@ Reda + diff --git a/src/style.css b/src/style.css index 6b324108..4ca8d639 100644 --- a/src/style.css +++ b/src/style.css @@ -6,7 +6,7 @@ font-size: 20px; } body{ - background-color: #fef6e4; + background-color: red; } .header{ display: flex; @@ -20,6 +20,9 @@ display: flex; + } + .welcome{ + background-color:blueviolet; } /*Vista para movil*/ @@ -27,6 +30,7 @@ /*register*/ .container{ display:flex; + } From d0694c75e9d4a1e83e31ddc82528d3dcf56c56b7 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Thu, 16 Mar 2023 15:47:24 -0300 Subject: [PATCH 025/113] inicio css home --- src/componets/home.js | 12 +++++++----- src/style.css | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 39780f6e..40c5f2cb 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -12,12 +12,14 @@ export const home = () => { const footer = document.createElement('footer'); buttonLogin.textContent = 'Iniciar sesiòn'; buttonRegister.textContent = 'Regìstrate'; - welcome.textContent = 'Bienvenidos a Reda'; + welcome.textContent = 'Únete a la red de cuidadores más grande de Latinoamérica…'; img.setAttribute('id', 'logo'); - img.setAttribute('src','') - welcome.setAttribute('id', 'welcome'); - header.setAttribute('class', 'header'); - footer.setAttribute('class', 'footer'); + img.setAttribute('src', 'https://i.ibb.co/bWGQN64/REDA-1.png'); + welcome.setAttribute('class', 'welcome'); + header.setAttribute('class', 'headerHome'); + footer.setAttribute('class', 'footerHome'); + buttonLogin.setAttribute('class', 'btnLogin'); + buttonRegister.setAttribute('class', 'btnRegister'); divHome.appendChild(square); square.appendChild(header); square.appendChild(footer); diff --git a/src/style.css b/src/style.css index 4ca8d639..81ecc07d 100644 --- a/src/style.css +++ b/src/style.css @@ -2,11 +2,11 @@ box-sizing: border-box; margin: 0; padding: 0; - font-family: 'Playfair Display', serif; + font-family: 'Atkinson Hyperlegible', sans-serif; font-size: 20px; } body{ - background-color: red; + background-color: #F1FAEE; } .header{ display: flex; @@ -22,8 +22,37 @@ } .welcome{ - background-color:blueviolet; + color: #1d3557; } + + +/* CSS */ +.btnLogin , .btnRegister { + align-items: center; + background: #FFFFFF; + border: 0 solid #E2E8F0; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + box-sizing: border-box; + color: #1A202C; + display: inline-flex; + font-size: 1rem; + font-weight: 700; + height: 56px; + justify-content: center; + line-height: 24px; + overflow-wrap: break-word; + padding: 24px; + text-decoration: none; + width: auto; + border-radius: 8px; + cursor: pointer; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; +} +.footerHome{ + background-color: #B8D1E0; +} /*Vista para movil*/ @media(max-width:390px){ From 5ba1353e6f45414ffad1d3e097195a9bcc0b18d3 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Thu, 16 Mar 2023 16:29:17 -0500 Subject: [PATCH 026/113] inicio de test --- package.json | 5 +++-- src/componets/register.js | 3 ++- test/index.spec.js | 14 +++++++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index c5939691..97299bd2 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,9 @@ "htmlhint": "htmlhint dist/*.html ", "eslint": "eslint --ext .js src/ test/", "stylelint": "stylelint --aei src/**/*.css", - "pretest": "npm run htmlhint && npm run eslint && npm run stylelint", - "test": "jest --coverage", + "pretestjjazjsaaj": "npm run htmlhint && npm run eslint && npm run stylelint", + + "test": "jest --env=jsdom --coverage", "dev": "vite dev src", "start": "npm run dev", "build": "vite build", diff --git a/src/componets/register.js b/src/componets/register.js index 9e775873..72635461 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -29,7 +29,7 @@ export const register = () => { +
@@ -38,6 +38,7 @@ export const register = () => { div.querySelector('#registerForm').addEventListener('submit', (e) => { e.preventDefault(); + console.log('hola', e.target); const email = e.target.email.value; const password = e.target.psw.value; registerWithEmail(email, password) diff --git a/test/index.spec.js b/test/index.spec.js index 91f11a33..218703ad 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,8 +1,20 @@ // importamos la funcion que vamos a testear -import { myFunction } from '../src/lib/index'; +import { register } from '../src/componets/register'; describe('myFunction', () => { it('debería ser una función', () => { expect(typeof myFunction).toBe('function'); }); }); + + +// +describe('register', () => { + it('si el usuario se registrò correctamente debe direccionarse a home', () => { + document.body.appendChild(register()); + + const e = new Event('submit', {target: { email: { value: 'hola'} } }); + document.getElementById('registerForm').dispatchEvent(e); + expect(typeof myFunction).toBe('function'); + }); +}); From f8f0085f9f19cbacbb3f37327cf0fbc51699b590 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Mon, 20 Mar 2023 19:33:56 -0300 Subject: [PATCH 027/113] el login funciona junto con la autentificacion de google --- src/componets/login.js | 101 ++++++++++++++++++++++++++++++++++---- src/componets/register.js | 3 +- src/lib/authentication.js | 25 ++++++---- src/routes.js | 4 +- 4 files changed, 111 insertions(+), 22 deletions(-) diff --git a/src/componets/login.js b/src/componets/login.js index ddcf8570..f8bff530 100644 --- a/src/componets/login.js +++ b/src/componets/login.js @@ -1,14 +1,95 @@ -// import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; +import { signInWithGoogle, signInWithPassword } from '../lib/authentication'; import { navigateTo } from '../router'; -export const login = () => { - const HomeDiv = document.createElement('div'); - HomeDiv.textContent = 'Bienvenida al login'; - const buttonHome = document.createElement('button'); - buttonHome.textContent = 'Regresar al Home'; - buttonHome.addEventListener('click', () => { - navigateTo('/'); +export const Login = () => { + // Create a div element to hold the login component + const div = document.createElement('div'); + div.innerHTML = `
+
+
+

Ingresa a Reda

+ + + + + + + + + Login with Google+ + +
+
+
+
+
+ + +
+
+ + `; + // Function to open modal + const openModal = (message) => { + div.querySelector('.modal').style.display = 'block'; + div.querySelector('.modal-content > p:nth-child(2)').textContent = message; + }; + + // Add event listeners to the login component + + div.querySelector('.google').addEventListener('click', (e) => { + e.preventDefault(); + signInWithGoogle() + .then( + (useCredential) => { + navigateTo('/home'); + console.log(useCredential); + }, + (error) => { + openModal(error.message); + }, + ); + }); + // para accionar el boton enviar + div.querySelector('.enviar').addEventListener('click', (e) => { + e.preventDefault(); + e.preventDefault(); + const username = div.querySelector('#username').value; + const password = div.querySelector('#psw').value; + signInWithPassword(username, password) + .then( + (useCredential) => { + console.log(useCredential); + navigateTo('/home'); + }, + (error) => { + openModal(error.message); + }, + ); }); - HomeDiv.appendChild(buttonHome); - return HomeDiv; + + div.querySelector('.close').addEventListener('click', (e) => { + e.preventDefault(); + div.querySelector('.modal').style.display = 'none'; + }); + + // Return the div element + return div; }; + +// export const login = () => { +// const HomeDiv = document.createElement('div'); +// HomeDiv.textContent = 'Bienvenida al login'; +// const buttonHome = document.createElement('button'); +// buttonHome.textContent = 'Regresar al Home'; +// buttonHome.addEventListener('click', () => { +// navigateTo('/'); +// }); +// HomeDiv.appendChild(buttonHome); +// return HomeDiv; +// }; diff --git a/src/componets/register.js b/src/componets/register.js index 9e775873..456eff85 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -43,8 +43,9 @@ export const register = () => { registerWithEmail(email, password) .then((useCredential) => { navigateTo('/home'); + console.log(useCredential); }) - .catch(error => { + .catch((error) => { console.error(error); alert(error.message); }); diff --git a/src/lib/authentication.js b/src/lib/authentication.js index 5d0318f4..fb55edae 100644 --- a/src/lib/authentication.js +++ b/src/lib/authentication.js @@ -1,14 +1,21 @@ -//para autentficar cuando el usuario se meta -import { createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword } from 'firebase/auth'; -import { auth } from './firebase.js' +// eslint-disable-next-line import/no-extraneous-dependencies +import { + createUserWithEmailAndPassword, + signInWithPopup, + GoogleAuthProvider, + signInWithEmailAndPassword, +} from 'firebase/auth'; +import { auth } from './firebase.js'; +// para autentficar cuando el usuario se meta + +export const signInWithPassword = (email, password) => ( + signInWithEmailAndPassword(auth, email, password) +); -export const signInWithPassword = (email, password) => { - return signInWithEmailAndPassword(auth, email, password); -}; export const signInWithGoogle = () => { const provider = new GoogleAuthProvider(); return signInWithPopup(auth, provider); }; -export const registerWithEmail = (email, password) => { -return createUserWithEmailAndPassword(auth, email, password); -}; +export const registerWithEmail = (email, password) => ( + createUserWithEmailAndPassword(auth, email, password) +); diff --git a/src/routes.js b/src/routes.js index 40b1e60f..d3ed33d5 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,10 +1,10 @@ import { home } from './componets/home'; -import { login } from './componets/login'; +import { Login } from './componets/login'; import { register } from './componets/register'; export const ROUTES = { '/': home, '/home': home, - '/login': login, + '/login': Login, '/register': register, }; From b68a540b38cdf554b18800c3ecc357b9b0fb5cd5 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Mon, 20 Mar 2023 20:21:03 -0300 Subject: [PATCH 028/113] prueba de test que pasa segun explicacion de jorge y archivo de carlos --- src/componets/register.js | 6 ++++-- test/index.spec.js | 26 ++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 72635461..14204a2b 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -39,8 +39,10 @@ export const register = () => { div.querySelector('#registerForm').addEventListener('submit', (e) => { e.preventDefault(); console.log('hola', e.target); - const email = e.target.email.value; - const password = e.target.psw.value; + const email = e.target.elements.email.value; + const password = e.target.elements.psw.value; + console.log('email', email); + console.log('pass', password); registerWithEmail(email, password) .then((useCredential) => { navigateTo('/home'); diff --git a/test/index.spec.js b/test/index.spec.js index 218703ad..e18476ad 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,20 +1,26 @@ // importamos la funcion que vamos a testear import { register } from '../src/componets/register'; - -describe('myFunction', () => { - it('debería ser una función', () => { - expect(typeof myFunction).toBe('function'); - }); -}); - +import { navigateTo } from '../src/router'; +// describe('myFunction', () => { +// it('debería ser una función', () => { +// expect(typeof myFunction).toBe('function'); +// }); +// }); // +jest.mock('../src/lib/authentication', () => ({ registerWithEmail: () => Promise.resolve() })); +jest.mock('../src/router', () => ({ navigateTo: jest.fn() })); + describe('register', () => { it('si el usuario se registrò correctamente debe direccionarse a home', () => { document.body.appendChild(register()); + document.getElementById('btnregister').click(); + // const e = new Event('submit', {target: { email: { value: 'hola'} } }); + // document.getElementById('registerForm').dispatchEvent(e); - const e = new Event('submit', {target: { email: { value: 'hola'} } }); - document.getElementById('registerForm').dispatchEvent(e); - expect(typeof myFunction).toBe('function'); + setTimeout(() => { + expect(navigateTo).toHaveBeenCalledWith('/home'); + done(); + }, 0); }); }); From d3c86bd3e890cf05dd5453368bb6ab03c335c817 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Tue, 21 Mar 2023 12:14:24 -0300 Subject: [PATCH 029/113] cambios en el register por los test --- src/componets/register.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 14204a2b..d2856510 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -41,8 +41,7 @@ export const register = () => { console.log('hola', e.target); const email = e.target.elements.email.value; const password = e.target.elements.psw.value; - console.log('email', email); - console.log('pass', password); + registerWithEmail(email, password) .then((useCredential) => { navigateTo('/home'); From 59a0f326aaa44b97e68bf4289013d15d9b9220b8 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Tue, 21 Mar 2023 11:05:41 -0500 Subject: [PATCH 030/113] agrego los errores a register --- src/componets/register.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index a3ac27cf..974511b9 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -46,15 +46,27 @@ export const register = () => { navigateTo('/home'); console.log(useCredential); }) - .catch((error) => { - console.error(error); - alert(error.message); + .catch(error => { + console.log(error.message); + console.log(error.code); + // eslint-disable-next-line no-lone-blocks + if (error.code === 'auth/invalid-email') { + alert('Invalid Email'); + } else if (error.code === 'auth/weak-password') { + alert('password is too weak'); + + } else if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code) { + alert('Something went wrong'); + } }); }); return div; }; + // const HomeDiv = document.createElement('div'); // HomeDiv.innerHTML = ('Registro de usuario'); // const divForm = document.createElement('form'); From fe1d6bd962854cc3d717a430009c3c571dd79463 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Tue, 21 Mar 2023 13:17:59 -0300 Subject: [PATCH 031/113] correciones slint register post pull lady --- src/componets/register.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 974511b9..2d5f0968 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -46,7 +46,7 @@ export const register = () => { navigateTo('/home'); console.log(useCredential); }) - .catch(error => { + .catch((error) => { console.log(error.message); console.log(error.code); // eslint-disable-next-line no-lone-blocks @@ -54,7 +54,6 @@ export const register = () => { alert('Invalid Email'); } else if (error.code === 'auth/weak-password') { alert('password is too weak'); - } else if (error.code === 'auth/email-already-in-use') { alert('Email already in use'); } else if (error.code) { @@ -66,7 +65,6 @@ export const register = () => { return div; }; - // const HomeDiv = document.createElement('div'); // HomeDiv.innerHTML = ('Registro de usuario'); // const divForm = document.createElement('form'); From f817858987f7db7c3067b51e80c9fb2ec5ecffa5 Mon Sep 17 00:00:00 2001 From: katalimbu Date: Tue, 21 Mar 2023 16:00:04 -0300 Subject: [PATCH 032/113] estilos en home --- src/componets/home.js | 18 ++++++++---------- src/style.css | 16 +++++++++++----- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 40c5f2cb..80387cb3 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -1,37 +1,35 @@ import { navigateTo } from '../router'; export const home = () => { - const divHome = document.createElement('div'); - const header = document.createElement('header'); + const headerHome = document.createElement('div'); const square = document.createElement('div'); const welcome = document.createElement('p'); const img = document.createElement('img'); - + const footerHome = document.createElement('div'); const buttonRegister = document.createElement('button'); const buttonLogin = document.createElement('button'); - const footer = document.createElement('footer'); buttonLogin.textContent = 'Iniciar sesiòn'; buttonRegister.textContent = 'Regìstrate'; welcome.textContent = 'Únete a la red de cuidadores más grande de Latinoamérica…'; img.setAttribute('id', 'logo'); img.setAttribute('src', 'https://i.ibb.co/bWGQN64/REDA-1.png'); welcome.setAttribute('class', 'welcome'); - header.setAttribute('class', 'headerHome'); - footer.setAttribute('class', 'footerHome'); + square.setAttribute('class', 'square'); + headerHome.setAttribute('class', 'headerHome'); + footerHome.setAttribute('class', 'footerHome'); buttonLogin.setAttribute('class', 'btnLogin'); buttonRegister.setAttribute('class', 'btnRegister'); - divHome.appendChild(square); - square.appendChild(header); - square.appendChild(footer); + square.appendChild(headerHome); square.appendChild(img); square.appendChild(welcome); square.appendChild(buttonLogin); square.appendChild(buttonRegister); + square.appendChild(footerHome); buttonRegister.addEventListener('click', () => { navigateTo('/register'); }); buttonLogin.addEventListener('click', () => { navigateTo('/login'); }); - return divHome; + return square; }; diff --git a/src/style.css b/src/style.css index 81ecc07d..ed4d3109 100644 --- a/src/style.css +++ b/src/style.css @@ -8,13 +8,19 @@ body{ background-color: #F1FAEE; } - .header{ + .square{ display: flex; flex-direction: column; justify-content: center; - justify-items: center; - width: 100%; - height: 100%; + width: 50%; + height: 50%; + background-color: red; + } + square > headerHome { + background-color: pink; + width: 20% ; + height: 20%; + } #root{ display: flex; @@ -51,7 +57,7 @@ touch-action: manipulation; } .footerHome{ - background-color: #B8D1E0; + background-color:#1A202C; } /*Vista para movil*/ From dd3d11f8cc6f8c9f251a16c401932ca97f812129 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 21 Mar 2023 14:25:05 -0600 Subject: [PATCH 033/113] home es responsive, breakpoint de celular funcionando --- src/index.html | 2 +- src/style.css | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/index.html b/src/index.html index 8c3d089a..b901b684 100644 --- a/src/index.html +++ b/src/index.html @@ -10,7 +10,7 @@ -
+
diff --git a/src/style.css b/src/style.css index ed4d3109..78c78a7d 100644 --- a/src/style.css +++ b/src/style.css @@ -6,8 +6,14 @@ font-size: 20px; } body{ - background-color: #F1FAEE; + background-color: #e008c3; } + .container { + display: flex; + justify-content: center; + background-color: rgb(0, 255, 4); + } + .square{ display: flex; flex-direction: column; @@ -16,16 +22,11 @@ height: 50%; background-color: red; } - square > headerHome { + .headerHome { background-color: pink; width: 20% ; height: 20%; - } - #root{ - display: flex; - - } .welcome{ color: #1d3557; @@ -65,6 +66,7 @@ /*register*/ .container{ display:flex; + background-color: aqua; } From 19a5029a97e889180f57a16a2cdf9d508c224bc8 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 21 Mar 2023 19:01:27 -0600 Subject: [PATCH 034/113] estilos en home sin terminar --- src/componets/home.js | 2 +- src/style.css | 33 +++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 80387cb3..8425328b 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -11,7 +11,7 @@ export const home = () => { buttonLogin.textContent = 'Iniciar sesiòn'; buttonRegister.textContent = 'Regìstrate'; welcome.textContent = 'Únete a la red de cuidadores más grande de Latinoamérica…'; - img.setAttribute('id', 'logo'); + img.setAttribute('class', 'logo'); img.setAttribute('src', 'https://i.ibb.co/bWGQN64/REDA-1.png'); welcome.setAttribute('class', 'welcome'); square.setAttribute('class', 'square'); diff --git a/src/style.css b/src/style.css index 78c78a7d..2832d5e9 100644 --- a/src/style.css +++ b/src/style.css @@ -12,22 +12,30 @@ display: flex; justify-content: center; background-color: rgb(0, 255, 4); + justify-items: center; + margin-top: 70px; + margin-bottom: 70px; } .square{ display: flex; flex-direction: column; justify-content: center; + align-items: center; width: 50%; height: 50%; background-color: red; } .headerHome { background-color: pink; - width: 20% ; - height: 20%; + width: 100% ; + height: 50px; } + .logo { + width: 50%; + height: 50%; + } .welcome{ color: #1d3557; } @@ -35,30 +43,33 @@ /* CSS */ .btnLogin , .btnRegister { + height: 56px; + width: 50%; align-items: center; background: #FFFFFF; border: 0 solid #E2E8F0; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); box-sizing: border-box; color: #1A202C; - display: inline-flex; - font-size: 1rem; + display: flex; + font-size: 80%; font-weight: 700; - height: 56px; justify-content: center; line-height: 24px; overflow-wrap: break-word; padding: 24px; text-decoration: none; - width: auto; border-radius: 8px; cursor: pointer; user-select: none; -webkit-user-select: none; touch-action: manipulation; + } .footerHome{ background-color:#1A202C; + width: 100%; + height: 50px; } /*Vista para movil*/ @@ -69,10 +80,12 @@ background-color: aqua; } - - - } - @media(max-width:1024px){} \ No newline at end of file + /* @media(min-width:500px){ + .container{ + display: flex; + background-color:; + } + } */ \ No newline at end of file From 8cfb555ecd755bbe9f0db81e50876120ece8dc23 Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Tue, 21 Mar 2023 21:34:26 -0500 Subject: [PATCH 035/113] estilos en vista Home --- src/componets/home.js | 10 ++-- src/style.css | 122 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 119 insertions(+), 13 deletions(-) diff --git a/src/componets/home.js b/src/componets/home.js index 8425328b..b8bd32dc 100644 --- a/src/componets/home.js +++ b/src/componets/home.js @@ -4,26 +4,30 @@ export const home = () => { const headerHome = document.createElement('div'); const square = document.createElement('div'); const welcome = document.createElement('p'); + const reda = document.createElement('p'); const img = document.createElement('img'); const footerHome = document.createElement('div'); const buttonRegister = document.createElement('button'); const buttonLogin = document.createElement('button'); - buttonLogin.textContent = 'Iniciar sesiòn'; - buttonRegister.textContent = 'Regìstrate'; + buttonLogin.textContent = 'Iniciar Sesión'; + buttonRegister.textContent = 'Regístrate'; + reda.textContent = 'Reda©️'; welcome.textContent = 'Únete a la red de cuidadores más grande de Latinoamérica…'; img.setAttribute('class', 'logo'); img.setAttribute('src', 'https://i.ibb.co/bWGQN64/REDA-1.png'); welcome.setAttribute('class', 'welcome'); + reda.setAttribute('class', 'marca'); square.setAttribute('class', 'square'); headerHome.setAttribute('class', 'headerHome'); footerHome.setAttribute('class', 'footerHome'); buttonLogin.setAttribute('class', 'btnLogin'); buttonRegister.setAttribute('class', 'btnRegister'); square.appendChild(headerHome); - square.appendChild(img); + headerHome.appendChild(img); square.appendChild(welcome); square.appendChild(buttonLogin); square.appendChild(buttonRegister); + footerHome.appendChild(reda); square.appendChild(footerHome); buttonRegister.addEventListener('click', () => { navigateTo('/register'); diff --git a/src/style.css b/src/style.css index 2832d5e9..e60d57ed 100644 --- a/src/style.css +++ b/src/style.css @@ -6,12 +6,13 @@ font-size: 20px; } body{ - background-color: #e008c3; + background-color: #F1FAEE; + } .container { display: flex; justify-content: center; - background-color: rgb(0, 255, 4); + background-color: #F1FAEE; justify-items: center; margin-top: 70px; margin-bottom: 70px; @@ -22,19 +23,26 @@ flex-direction: column; justify-content: center; align-items: center; - width: 50%; - height: 50%; + width: 80%; + height: 80%; background-color: red; + } .headerHome { background-color: pink; width: 100% ; - height: 50px; + height: 200%; + display: flex; + justify-content: center; + } .logo { - width: 50%; - height: 50%; + display: flex; + width: 100%; + height: 80%; + margin-top: 10%; + } .welcome{ color: #1d3557; @@ -42,6 +50,7 @@ /* CSS */ + .btnLogin , .btnRegister { height: 56px; width: 50%; @@ -58,6 +67,7 @@ line-height: 24px; overflow-wrap: break-word; padding: 24px; + margin-top: 10%; text-decoration: none; border-radius: 8px; cursor: pointer; @@ -65,6 +75,7 @@ -webkit-user-select: none; touch-action: manipulation; + } .footerHome{ background-color:#1A202C; @@ -74,15 +85,106 @@ /*Vista para movil*/ @media(max-width:390px){ - /*register*/ + .container{ display:flex; - background-color: aqua; - + background-color: #F1FAEE; } + .square{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 80%; + height: 80%; + background-color: #E0EAF1; + + + } + .headerHome { + background-color: #B8D1E0; + width: 100% ; + height: 200px; + display: flex; + justify-content: center; + + + } + .logo { + display: flex; + width: 95%; + height: 125%; + margin-top: 0%; + + } + .welcome{ + color: #1d3557; + font-size: 80%; + font-weight: 700; + display: flex; + margin: 10%; + margin-top: 10%; + margin-bottom: 5%; + } + + + + + .btnLogin , .btnRegister { + height: 56px; + width: 50%; + align-items: center; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + box-sizing: border-box; + color: white; + display: flex; + font-size: 80%; + font-weight: 700; + justify-content: center; + line-height: 24px; + overflow-wrap: break-word; + padding: 24px; + margin-top: 10%; + margin-bottom: 5%; + margin: 3%; + text-decoration: none; + border-radius: 8px; + cursor: pointer; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; + + + + } + .btnLogin:hover, .btnRegister:hover{ + background-color: #B8D1E0; } + .btnRegister{ + background-color: #FFB703; + } + .btnLogin{ + background-color: #1d3557; + } + .footerHome{ + background-color:#B8D1E0; + width: 100%; + height: 50px; + display: flex; + justify-content: center; + } + .marca{ + color: #f6f7fa; + margin-top: 5%; + font-size: 70%; + } + + + + } + /* @media(min-width:500px){ .container{ display: flex; From bfce761feb9bce8add9b9a9f06915ef04b8bbb08 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 21 Mar 2023 23:21:35 -0600 Subject: [PATCH 036/113] estilos completos vista home primera version --- src/style.css | 109 ++++++++++++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 52 deletions(-) diff --git a/src/style.css b/src/style.css index e60d57ed..2b637fee 100644 --- a/src/style.css +++ b/src/style.css @@ -23,29 +23,35 @@ flex-direction: column; justify-content: center; align-items: center; - width: 80%; + width: 60%; height: 80%; - background-color: red; + background-color: #E0EAF1; } .headerHome { - background-color: pink; - width: 100% ; - height: 200%; - display: flex; - justify-content: center; - + background-color: #B8D1E0; + width: 100% ; + height: 50%; + display: flex; + justify-content: center; } .logo { display: flex; - width: 100%; - height: 80%; - margin-top: 10%; + width: 40%; + height: 50%; + margin-top: 0%; } .welcome{ - color: #1d3557; + color: #1d3557; + font-size: 120%; + font-weight: 700; + display: flex; + margin: 10%; + margin-top: 5%; + margin-bottom: 5%; + text-align: center; } @@ -53,34 +59,48 @@ .btnLogin , .btnRegister { height: 56px; - width: 50%; - align-items: center; - background: #FFFFFF; - border: 0 solid #E2E8F0; - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - box-sizing: border-box; - color: #1A202C; - display: flex; - font-size: 80%; - font-weight: 700; - justify-content: center; - line-height: 24px; - overflow-wrap: break-word; - padding: 24px; - margin-top: 10%; - text-decoration: none; - border-radius: 8px; - cursor: pointer; - user-select: none; - -webkit-user-select: none; - touch-action: manipulation; - - + width: 50%; + align-items: center; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + box-sizing: border-box; + color: white; + display: flex; + font-size: 80%; + font-weight: 700; + justify-content: center; + line-height: 24px; + overflow-wrap: break-word; + padding: 24px; + margin-top: 1%; + margin-bottom: 1%; + text-decoration: none; + border-radius: 8px; + cursor: pointer; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; +} +.btnLogin:hover, .btnRegister:hover{ + background-color: #B8D1E0; +} +.btnRegister{ + background-color: #FFB703; +} +.btnLogin{ + background-color: #1d3557; } .footerHome{ - background-color:#1A202C; + background-color:#B8D1E0; width: 100%; height: 50px; + display: flex; + justify-content: center; + align-items: center; +} +.marca{ + color: #f6f7fa; + margin-top: 0%; + font-size: 80%; } /*Vista para movil*/ @@ -126,10 +146,6 @@ margin-top: 10%; margin-bottom: 5%; } - - - - .btnLogin , .btnRegister { height: 56px; width: 50%; @@ -179,15 +195,4 @@ margin-top: 5%; font-size: 70%; } - - - - - } - - /* @media(min-width:500px){ - .container{ - display: flex; - background-color:; - } - } */ \ No newline at end of file +} \ No newline at end of file From f348953c813ceeba980c0424c5a9b5cbc29fd6aa Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Tue, 21 Mar 2023 23:43:22 -0600 Subject: [PATCH 037/113] =?UTF-8?q?estilos=20vista=20home=20correcci=C3=B3?= =?UTF-8?q?n=20en=20vista=20register?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componets/register.js | 95 ++++----------------------------------- 1 file changed, 9 insertions(+), 86 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index dd55595a..72deda47 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -4,7 +4,7 @@ import { navigateTo } from '../router.js'; export const register = () => { const div = document.createElement('div'); div.innerHTML = `
-
+

Registro de Usuario

@@ -35,17 +35,17 @@ export const register = () => {
`; - - div.querySelector('#registerForm').addEventListener('submit', (e) => { + // aca metí el form en una constante para que sea mas claro + const form = div.querySelector('#registerForm'); + form.addEventListener('submit', (e) => { e.preventDefault(); - console.log('hola', e.target); - const email = e.target.elements.email.value; - const password = e.target.elements.psw.value; + console.log('hola', e.target); + const email = e.target.email.value; + const password = e.target.psw.value; registerWithEmail(email, password) .then((useCredential) => { navigateTo('/home'); - console.log(useCredential); }) .catch((error) => { console.log(error.message); @@ -62,83 +62,6 @@ export const register = () => { } }); }); - - return div; + // pintar el formulario así en vez de "return div" es mas claro y funciona, + return form; }; - -// const HomeDiv = document.createElement('div'); -// HomeDiv.innerHTML = ('Registro de usuario'); -// const divForm = document.createElement('form'); -// HomeDiv.appendChild(divForm); - -// const inputName = document.createElement('input'); -// inputName.setAttribute('type', 'text'); -// inputName.setAttribute('placeholder', 'nombre'); - -// const inputPassword = document.createElement('input'); -// inputPassword.setAttribute('type', 'text'); -// inputPassword.setAttribute('placeholder', 'contraseña'); - -// const inputMail = document.createElement('input'); -// inputMail.setAttribute('type', 'text'); -// inputMail.setAttribute('placeholder', 'Correo Electrónico'); - -// const inputNationality = document.createElement('input'); -// inputNationality.setAttribute('type', 'text'); -// inputNationality.setAttribute('placeholder', 'Nacionalidad'); - -// const inputDateOfBirth = document.createElement('input'); -// inputDateOfBirth.setAttribute('type', 'text'); -// inputDateOfBirth.setAttribute('placeholder', 'Fecha de nacimiento'); - -// const inputOcupation = document.createElement('input'); -// inputOcupation.setAttribute('type', 'text'); -// inputOcupation.setAttribute('placeholder', 'Ocupación'); - -// const selectRolReda = document.createElement("select"); -// const optionRol = document.createElement("option"); -// const optionEspecialist = document.createElement("option"); -// const optionCarer = document.createElement("option"); - -// optionRol.value = " "; -// optionRol.text = "--Elige tu Rol en Reda--"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionCarer.value = "Carer"; -// optionCarer.text = "Cuidador"; - -// selectRolReda.add(optionRol, null); -// selectRolReda.add(optionEspecialist, null); -// selectRolReda.add(optionCarer, null); - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// optionEspecialist.value = "Especialist"; -// optionEspecialist.text = "Especialista"; - -// const selectEspecialist = document.createElement("select"); -// const optionPsichologyst = document.createElement("option"); -// const optionTeacher = document.createElement("option"); -// const optionDoctor = document.createElement("option"); - -// const buttonSend = document.createElement('button'); -// buttonSend.textContent = 'enviar'; - -// divForm.appendChild(inputName); -// divForm.appendChild(inputPassword); -// divForm.appendChild(inputMail); -// divForm.appendChild(inputNationality); -// divForm.appendChild(inputDateOfBirth); -// divForm.appendChild(inputOcupation); -// divForm.appendChild(selectRolReda); -// divForm.appendChild(buttonSend); - -// return HomeDiv; - -// }; From e68870f8dd32a4f564c22be2167ace6006dcb9cb Mon Sep 17 00:00:00 2001 From: katalimbu Date: Wed, 22 Mar 2023 14:05:25 -0300 Subject: [PATCH 038/113] logo google --- .../img/btn_google_signin_light_pressed_web.png | Bin 0 -> 4135 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/componets/img/btn_google_signin_light_pressed_web.png diff --git a/src/componets/img/btn_google_signin_light_pressed_web.png b/src/componets/img/btn_google_signin_light_pressed_web.png new file mode 100644 index 0000000000000000000000000000000000000000..e286c89accc00d2ab9f9a48a70b84cc1ce34fc6f GIT binary patch literal 4135 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 Date: Wed, 22 Mar 2023 15:10:03 -0300 Subject: [PATCH 039/113] google --- src/componets/img/btnGoogle.png | Bin 0 -> 4135 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/componets/img/btnGoogle.png diff --git a/src/componets/img/btnGoogle.png b/src/componets/img/btnGoogle.png new file mode 100644 index 0000000000000000000000000000000000000000..e286c89accc00d2ab9f9a48a70b84cc1ce34fc6f GIT binary patch literal 4135 zcmV+?5ZLdDP)Px^;Ymb6RCodHTnkWC*BSoUT|qzu7GYV??yRn|_`pEWfCNbhB_SzoI;ORnGLvRv z#&KdZ%{WfdG-I7Koy?ea#hQS5EWwFq0&MW6O%*)<{Sd! zfjtf+I*Us^2a5;h1=bPcA_8*_0Y-XujCl@z5y%2YA-!hGmeX+}W07!?ti z^9YQMjdk|+_U_Kk&VGjm<6;ByYIk;C*wfR~CK8{)B8K^h09yd0+%+_|5jw^toH3gi&r87^9KRObAje(L*osm?$DJpAitrKc8n;9NVM_h~%FX9x-!1BOsE0KF_W=wn-5X z$v-JPV&;5C;A_3TIsQc}IQ_dAzw#x}-3i=q0?8?e%3g=4q7q2f-#(wQ6vsBl5b)mi zVT&NmYPEhflm3tQTm$#YOBg@jG%wyG zJygHdFhRT)RZsl@nnW4;E}no+Z-D}t*j1#QP%g4d*FY3{nc8&USQ*;+jpZR zYe`_zEXFx7W?8!J{7d+=(a?;^FTH*i(M#Wf{rpmzV?sGu4(a{_ zzzw!|h_6P)_Ir_?F2PryoyM{HW*qse5l``lJ8Es%N+P+VaVsr3gQy821-ev(dzi$uH}B1JUcPkfu8@{0}v-{n3!bpN&pW zC6gQT7)tGWY|K)EO?zU=-6%ZYj0Q^&1}J+`ZzsNJ?SNFNhCG(ROj`8JDZH;Y!lKAQ z@tSxHcJ?E2{kKuJ3i#mdf1)>Dja5so!%$}c6l$!w>s}PEcFPy^$u*32+6&oIqp?gu zmd@IOw@)@AK4T>k9G9SPFj4hFlz*oLnk5tLf};zkYEQzUF2Mr@YDl<2oIQRVJ(+jY zwTiB-ICK0RTuI!BEoB;XUT(uhYXZ`iF2MN{@8Z0f^~8+hfB8G^`c5S@o{sf*nQ-R4 zdUxB}LR8#e1~pm0iJ`ZxnQGJUimOmr;I1vtEkjjbD~=dUxO~k4fRC9F`WGIo*KPW|FATBJZA3nhym(AFN%g*@%<6k6|LylwZCP za$7sD$g*i%tKpZzO1guiw+&}LIE_{d$&1TDA2vVtrzt`@+{l-dDI8ez zST~0AOM_~@{670CGJM#m=1{PFJbZx}=E!0ekvl^s(^QM&AIMOWr@@j0IquuFANP4= zb`cqj%_gL7Dx(w*=2M4p)W94B1+>W)80uLZP^<6a&z)43{Wa5-R;z%?WQOI~A*4RF z533U=YSkOKVr+&z(ul+rlr_S zjk`6eT*-y)@os=vFnbSV6NPWZTU(#y3XQYjn0>E)YrKst5t%2yAx@K$eJJi z-BI2ZQ>fLjn43{chkeIh6fKSS7Q3nQjL9!?cK8|^PtqVt8cg*6v<9d7Dp4ekmUqE& z_F3iE97sd|sHz+XkLb}{{}vr2pR{>pc?t3~OL)yAkp<`$R}UI_;^*MeJ>Q3loMrEx zfvhec+@-a6WY1QpDc^jm8Z}gB$UaJDML=JF`4}1hQM6ChvI-hX+T#XNrI+Ofrf@wSRG}!@#SSt4~%HHK7g3PPX4+$D}xv7MOZ3Zg0gKtM#|rw zM=dReosW}yLbL1iu7;qtuh1rz$RF4?DS?seG@gLq=xvAj+A!!t5YU%UNM5!I%Ge(K zn56ihaay5-OcIFH0t6YJL|8f(*c>9wm%aVh$nQ`o;8kp)ngypvH;o668;umh+ zjr&$F0Y}#H&_N=1NH>SWrH1!;;+IzKL5U`T%AdpjgKt4^XvKzYxgjk@z%W8aXH5Q( z(rz;G#w_sO+XcC%2>YL1i?;Khqp67&0cnZ4Bh9!}u>;!*XrB@gIET%>xzjF3Cfg-a zNKulCoES)hE%W3rjE$R^JLR=jmEqX~EJ8{$6(?eP$?LByfkLweXsAbLcNbzVG41LO zm)ox*$9x(lF-TU0f=uG>*+9z)9HScp-cY{dX(+gU z^s|J*JYG?-s3JQbS{PyKvtg7Lk&Ew|7Hd|x-4aPcCRUPnY%<$mr_HxFfBh==23oQ> z$!)Efu%O_At>4{;^PlK3)I=-RdDUHNbj&yAplVYj%$WRKbS9)DWX37n7`cM6aSqZb zq502961p^u>^(N`bG48PbBgXxFWX`5LieB(iRmh6a*Oz*obF&8p^cnL_Yu1Cm->{k zKq3L@ zKv9mgFqS@eF?mE!t8E$5R9bSeOc)q&P&?5`-S89a&7-G6jkT!Jo5%u?w?ATcD+@ud zB?9g1Hmv<{-k?GPmf7K?zWDNekoY13sX-T`PFnKpPl5b=1)QXW!j3tpvM@o=En(K= zSI)TG5KH85buGp-)-`yTe7J9CY!Xy@c^ezKKj_X$@Y-pAlbOlF#o;d*S!|&7Bx-bK zC`up2t`Ze5EFnGJqgluoCY%G8sU$WYydt&_;5y~WDRb0599btKsU4rjYe_S0B#D7o zk*P!)ipd%nc+zR}R0zX;U#koJF#FP`6NyX7pkgK%jy7Q3v-c7IV|nf_3}9GvN+xM} zDs}lPY{)_)#T`9nem{hS7%ZS`w`RA%I^=|k-B94JW57-sgmiqY1hgfgU_nox11e=K z|0;})C4~vz=JU!PL;=6yrn~HxE+ADYSae~khfJO!MD+Q4(iXhmc?Jir=g=yY;zXWxYpDTX~#e!1=+3bScXJ$YAqYf$& z#$?AsMJ^WYOsT(lNF#2YPzKfn>gb&_2fh7{u z8}XpFp7sq5sD7avr4`hV0W<394wXC5Xb7*oLc)s{<8NzRsMN;dV_iL;U2%to7E3f% zZ7Qb%dem0`5kr-E82VfXBQsjX8;}tljl>Pbly5-Yp~D!c$b+L%$B&I+CI~!+etEiA zU&KIpC6efttj<6)nzI%AwyYK?GeP}HE&>(cB*lWWWJ#OxUd+Qh@ma2QbP#(!Ie@c0 z!SDC94PC)=C;HGm%R9CD#?t3?!qwQ3p{>V3??q=1#!$)Ot9z^2a_Q65Z^=pKvhEvkbW>D?7~P> zt>mTUtW~?Ue0)0AGIfg_s8apFNd><3d@mjX(@%V?o#B~>M&zL+uWX6%HPFTk80Xpm!TpDUe6t@ryEstY?{dT&` zGmhW<@CH(6;5K{PnC_W#x!~eRbxTMeP4b|}Wi{hsPaLvVq(Ua+aP{n)_><0r{D*d< za^0iju1PkMn~%HS+}8O-?=LX^3YEV+uiGN$(ZUWW)y3 zY|!*?+Q1vBlo~nYayGjGM`=mc6n&q%Pu`}dI!C1Wy~3|K`f%X$!)WSn@g{{lFC)|a z%(@-WEdEx={BJbTIfx65pP6w9^PRJ;+&_>lVS8|~`+Xxs%$%V+qw@pD}5 zw<9ijId0!nh;=HqeV)A#sQJGZ@_W15I`}2t?f3v@TL<}@*U0p`kQ}oZ+Qj9!Gc6Z) zD)Jzia68mnS3HXd+zJF{jr_Nw^I{t!0+ApPNPf|#M}nkScTOW9l7CK5pV;|G5D>{9 z33_7PIgNlw{y9B;V&@}4KqP-8=!tdbGy)>|=k)Z6osR?ok^GUMC)SF~byLs2n^2+U~&7}@D_D*ELB{>y3p_pmtcyQVCY zeM7^3caWI{_9Cm-Do|7mA_8+70mf Date: Wed, 22 Mar 2023 14:09:22 -0600 Subject: [PATCH 040/113] =?UTF-8?q?se=20despleg=C3=B3=20el=20primer=20inne?= =?UTF-8?q?r,=20sin=20estilos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componets/register.js | 13 ++++++++----- src/index.html | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/componets/register.js b/src/componets/register.js index 72deda47..99ce5869 100644 --- a/src/componets/register.js +++ b/src/componets/register.js @@ -8,7 +8,7 @@ export const register = () => {

Registro de Usuario

- + @@ -17,13 +17,13 @@ export const register = () => { - + - + - + - - - +
+ +
+ + +
- - Login with Google+ - +
+
-
-
-
-
- - -
+
+
+ +
+
+
+ - + + \ No newline at end of file diff --git a/src/style.css b/src/style.css index 21214a04..5b05ab25 100644 --- a/src/style.css +++ b/src/style.css @@ -663,4 +663,8 @@ justify-content: left; } .noShow { display: none; +} +#corazon { + color: red; + } \ No newline at end of file From f1a05a3b5f3b2dc4e1a79af0d86fdb9a80f4b070 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Thu, 13 Apr 2023 10:35:08 -0500 Subject: [PATCH 110/113] avance like --- src/componets/feed.js | 15 ++++++++++++--- src/lib/firebase.js | 3 +++ src/style.css | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/componets/feed.js b/src/componets/feed.js index 3f72e3d4..6ecae9c1 100644 --- a/src/componets/feed.js +++ b/src/componets/feed.js @@ -2,7 +2,7 @@ import { updateCurrentUser } from 'firebase/auth'; import { navigateTo } from '../router'; // import { createpost, getpost, eliminatePost } from '../lib/firebase.js'; import { - createpost, getpost, exitApp, auth, deletePost, updatePost, saveUsers + createpost, getpost, exitApp, auth, deletePost, updatePost, saveUsers, addLike, } from '../lib/firebase.js'; @@ -34,7 +34,7 @@ export const feed = () => { const currentUserEmailDraw = document.createElement('p'); currentUserEmailDraw.innerHTML = parseUser.email; currentUserEmailDraw.setAttribute('class', 'currentUserMail'); - //console.log('esto es parseUser', parseUser); + // console.log('esto es parseUser', parseUser); userExpertChecked.setAttribute('class', 'userExpertChecked'); userInfoF.setAttribute('class', 'userInfoF'); const postContainer = document.createElement('form'); @@ -147,7 +147,7 @@ export const feed = () => { - + `; //form.setAttribute('id', 'form1'); // @@ -217,6 +217,15 @@ export const feed = () => { // const formularios = document.querySelectorAll(".formularioEditar"); // formularios.forEach((form) => { // }); + const likes = document.querySelectorAll('.like'); + console.log(likes); + likes.forEach((like) => { + like.addEventListener('click', (e) => { + e.preventDefault(); + console.log(auth.currentUser.email); + addLike(parseUser.email,) + }); + }); }); }; return squareF; diff --git a/src/lib/firebase.js b/src/lib/firebase.js index cc4c8793..73ba7b55 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -13,6 +13,7 @@ import { orderBy, query, updateDoc, + arrayUnion, } from 'firebase/firestore'; // import { userState } from './authentication'; @@ -115,3 +116,5 @@ export const exitApp = () => signOut(auth) }); export const updatePost = (id, newPost) => updateDoc(doc(db, 'post', id), newPost); + +export const addLike = (id, email) => updateDoc(doc(db, 'post', id), { likes: arrayUnion(email) }); diff --git a/src/style.css b/src/style.css index 5b05ab25..5886b03d 100644 --- a/src/style.css +++ b/src/style.css @@ -399,7 +399,8 @@ margin: 2%; } textarea, input { - background-color: #B8D1E0; + background-color:#1d3557; + color: #FFB703; } /*Vista para movil*/ From e23705ff7567913d4b2df01d3b4b12fd639ff264 Mon Sep 17 00:00:00 2001 From: LuzAlvaca Date: Thu, 13 Apr 2023 13:11:20 -0500 Subject: [PATCH 111/113] funciona el like, pero el feed esta dividido en dos vistas --- src/componets/feed.js | 38 +++++++++++++++++++++++++------------- src/lib/firebase.js | 2 +- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/componets/feed.js b/src/componets/feed.js index 6ecae9c1..95dc3d9d 100644 --- a/src/componets/feed.js +++ b/src/componets/feed.js @@ -10,6 +10,7 @@ import { export const feed = () => { const squareF = document.createElement('div'); squareF.setAttribute('class', 'squareF'); + squareF.setAttribute('id', 'squareFPerro'); const squareHeaderF = document.createElement('header'); squareHeaderF.setAttribute('class', 'squareHeaderF'); const logoF = document.createElement('img'); @@ -123,6 +124,8 @@ export const feed = () => { }); const dibujar = () => { const myPromise = getpost(); + // const formularioPost = document.getElementById('squareFPerro'); + squareF.innerHTML = ''; myPromise.then((showPost) => { // nos aseguramos que la data provenga de feed.js y no de // firebase. @@ -138,16 +141,16 @@ export const feed = () => { Autor: ${postD.usuario}
- +
- + ${postD.likes.length}.
`; //form.setAttribute('id', 'form1'); // @@ -178,7 +181,15 @@ export const feed = () => { console.log(newtitleEd); newdescripEd.setAttribute('disabled', ''); }); - + const like = form.querySelector(`#like-${postD.id}`); + console.log(like); + like.addEventListener('click', (e) => { + e.preventDefault(); + console.log(auth.currentUser.email); + addLike(postD.id, [...postD.likes, auth.currentUser.email]).then(() => { + dibujar(); + }); + }); squareF.appendChild(form); }); const btnsDeletePost = document.querySelectorAll('#btnDeletePost'); @@ -217,15 +228,16 @@ export const feed = () => { // const formularios = document.querySelectorAll(".formularioEditar"); // formularios.forEach((form) => { // }); - const likes = document.querySelectorAll('.like'); - console.log(likes); - likes.forEach((like) => { - like.addEventListener('click', (e) => { - e.preventDefault(); - console.log(auth.currentUser.email); - addLike(parseUser.email,) - }); - }); + // const likes = document.querySelectorAll('.like'); + // console.log(likes); + // likes.forEach((like) => { + // like.addEventListener('click', (e) => { + // e.preventDefault(); + // console.log(auth.currentUser.email); + // const postId = like.getAttribute('like-id'); + // addLike(postId, parseUser.email); + // }); + // }); }); }; return squareF; diff --git a/src/lib/firebase.js b/src/lib/firebase.js index 73ba7b55..690a32a2 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -117,4 +117,4 @@ export const exitApp = () => signOut(auth) export const updatePost = (id, newPost) => updateDoc(doc(db, 'post', id), newPost); -export const addLike = (id, email) => updateDoc(doc(db, 'post', id), { likes: arrayUnion(email) }); +export const addLike = (id, emails) => updateDoc(doc(db, 'post', id), { likes: emails }); From d21f8396af3b9ad44b2c21ff2062496bcdf44c5f Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Thu, 13 Apr 2023 19:32:34 -0500 Subject: [PATCH 112/113] se likea pero no se quita el like --- src/componets/feed.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/componets/feed.js b/src/componets/feed.js index 95dc3d9d..a5d2422e 100644 --- a/src/componets/feed.js +++ b/src/componets/feed.js @@ -150,10 +150,16 @@ ${postD.descripcion} - ${postD.likes.length}. + ${postD.likes.length}. `; + // //form.setAttribute('id', 'form1'); - // + //name="${(postD.likes ?? []).includes(auth.currentUser.email)? 'heart' :'heart-outline' }"> ${postD.likes.length}. + + // + // + //${postD.likes === auth.currentUser.email? 'heart': + // // // console.log(auth.currentUser.email, postD.usuario); // esta es la funcion para guardar el post editado From 502b0046d030b258ae9d04d25d18bdf990cd8b0f Mon Sep 17 00:00:00 2001 From: Leidy Suarez Miranda Date: Thu, 13 Apr 2023 21:53:09 -0500 Subject: [PATCH 113/113] el like funciona por fin :) --- src/componets/feed.js | 79 ++++++++++++++++++------------------------- src/lib/firebase.js | 2 +- 2 files changed, 34 insertions(+), 47 deletions(-) diff --git a/src/componets/feed.js b/src/componets/feed.js index a5d2422e..73e05deb 100644 --- a/src/componets/feed.js +++ b/src/componets/feed.js @@ -1,12 +1,11 @@ -import { updateCurrentUser } from 'firebase/auth'; import { navigateTo } from '../router'; // import { createpost, getpost, eliminatePost } from '../lib/firebase.js'; import { - createpost, getpost, exitApp, auth, deletePost, updatePost, saveUsers, addLike, + createpost, getpost, exitApp, auth, deletePost, updatePost, addLike, updatelike, } from '../lib/firebase.js'; -//console.log('estamos en feed', auth); +// console.log('estamos en feed', auth); export const feed = () => { const squareF = document.createElement('div'); squareF.setAttribute('class', 'squareF'); @@ -17,7 +16,7 @@ export const feed = () => { logoF.setAttribute('src', 'https://i.ibb.co/bWGQN64/REDA-1.png'); logoF.setAttribute('class', 'logoF'); const userInfoF = document.createElement('div'); - userInfoF.setAttribute('class', 'userInfoDivF') + userInfoF.setAttribute('class', 'userInfoDivF'); const userAvatar = document.createElement('img'); userAvatar.setAttribute( 'src', @@ -107,7 +106,7 @@ export const feed = () => { // console.log(postContainer); const feedTitle = e.target.elements.postTitle.value; const feedPost = e.target.elements.post.value; - //console.log(parseUser.email); + // console.log(parseUser.email); const feedUser = parseUser.email; // console.log(feedTitle); // console.log(feedPost); @@ -150,26 +149,17 @@ ${postD.descripcion} - ${postD.likes.length}. + ${postD.likes.length}. + `; - // - //form.setAttribute('id', 'form1'); - //name="${(postD.likes ?? []).includes(auth.currentUser.email)? 'heart' :'heart-outline' }"> ${postD.likes.length}. - - // + // Oh con coni:?? significa que si el primer arreglo no existe, retorna el array vacio.(nullish) // - //${postD.likes === auth.currentUser.email? 'heart': - - // // - // console.log(auth.currentUser.email, postD.usuario); - // esta es la funcion para guardar el post editado - console.log(auth.currentUser.email); - console.log(postD.usuario); + // ojo con los dos signos de interrogaciòn juntos, no son un operador ternario + // form.addEventListener('submit', (e) => { e.preventDefault(); - console.log(e.target.elements); // guardar en firebase - console.log(form); const postId = form.dataset.id; const newTitle = e.target.elements.titulo.value; const newDescription = e.target.elements.descripcion.value; @@ -179,22 +169,34 @@ ${postD.descripcion} titulo: newTitle, descripcion: newDescription, }; - console.log(postId); - console.log(newPost); - + // console.log(postId); + // console.log(newPost); updatePost(postId, newPost); newtitleEd.setAttribute('disabled', ''); console.log(newtitleEd); newdescripEd.setAttribute('disabled', ''); }); const like = form.querySelector(`#like-${postD.id}`); - console.log(like); + // console.log(like); like.addEventListener('click', (e) => { e.preventDefault(); - console.log(auth.currentUser.email); - addLike(postD.id, [...postD.likes, auth.currentUser.email]).then(() => { - dibujar(); - }); + // console.log(e); + // console.log(auth.currentUser.email); + // este like representa un booleano + const like = (postD.likes ?? []).includes(auth.currentUser.email); + if (like === true) { + const newLikes = postD.likes.filter((email) => email !== auth.currentUser.email); + updatelike(postD.id, newLikes).then(() => { + dibujar(); + }); + } + else { + addLike(postD.id, [...postD.likes, auth.currentUser.email]).then(() => { + console.log(postD.likes, 'esto es el array de likes'); + dibujar(); + console.log(postD.likes, 'esto es el array de likes'); + }); + } }); squareF.appendChild(form); }); @@ -204,15 +206,14 @@ ${postD.descripcion} btn.addEventListener('click', (e) => { e.preventDefault(); const btnId = btn.getAttribute('data-id'); - //console.log(btnId); + // console.log(btnId); const shouldDeletePost = window.confirm('¿Estás seguro de que deseas eliminar este post?'); if (shouldDeletePost) { const formToRemove = document.getElementById('form'); formToRemove.remove(); - //console.log(formToRemove); + // console.log(formToRemove); deletePost(btnId); } - }); }); @@ -222,7 +223,7 @@ ${postD.descripcion} e.preventDefault(); console.log(e); const postId = btn.getAttribute('data-id'); - const postTitulo = 'titulo-' + postId; + const postTitulo = `titulo-${postId}`; const textAreaPublication = document.getElementById(postId); const inputPublication = document.getElementById(postTitulo); console.log(inputPublication); @@ -230,20 +231,6 @@ ${postD.descripcion} inputPublication.removeAttribute('disabled'); }); }); - - // const formularios = document.querySelectorAll(".formularioEditar"); - // formularios.forEach((form) => { - // }); - // const likes = document.querySelectorAll('.like'); - // console.log(likes); - // likes.forEach((like) => { - // like.addEventListener('click', (e) => { - // e.preventDefault(); - // console.log(auth.currentUser.email); - // const postId = like.getAttribute('like-id'); - // addLike(postId, parseUser.email); - // }); - // }); }); }; return squareF; diff --git a/src/lib/firebase.js b/src/lib/firebase.js index 690a32a2..965eb2af 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -13,7 +13,6 @@ import { orderBy, query, updateDoc, - arrayUnion, } from 'firebase/firestore'; // import { userState } from './authentication'; @@ -118,3 +117,4 @@ export const exitApp = () => signOut(auth) export const updatePost = (id, newPost) => updateDoc(doc(db, 'post', id), newPost); export const addLike = (id, emails) => updateDoc(doc(db, 'post', id), { likes: emails }); +export const updatelike = (id, emails) => updateDoc(doc(db, 'post', id), { likes: emails }); \ No newline at end of file