├── .gitignore ├── .vscode └── settings.json ├── docs ├── 01-html │ └── index.html ├── 02-html-intermedio │ └── index.html ├── 03-css │ └── index.html ├── 04-css-intermedio │ └── index.html ├── 05-flexbox │ └── index.html ├── 06-flexbox-practica │ └── index.html ├── 07-00-terminal │ └── index.html ├── 07-01-git │ └── index.html ├── 07-02-github │ └── index.html ├── 07-b-fundamentos │ └── index.html ├── 08-b-componentes │ └── index.html ├── 09-b-accordion │ └── index.html ├── 10-b-scroll │ └── index.html ├── 11-01-psint │ └── index.html ├── 11-02-js-basico │ └── index.html ├── 11-03-js │ └── index.html ├── 11-04-js │ └── index.html ├── 11-05-js-dom │ └── index.html ├── 11-06-js-paradigma │ └── index.html ├── 11-07-js-delegacion │ └── index.html ├── 11-08-js-form │ └── index.html ├── 11-09-js-promesas │ └── index.html ├── 11-10-js-fetch │ └── index.html ├── 11-11-js-poo │ └── index.html ├── 11-12-js-modulos │ └── index.html ├── 11-13-js-closure │ └── index.html ├── 11-b-form │ └── index.html ├── 12-b-sass │ └── index.html ├── 13-b-chat │ └── index.html ├── 14-b-range │ └── index.html ├── 15-b-php │ └── index.html ├── 16-b-parsel │ └── index.html ├── 17-b-offcanvas │ └── index.html ├── 18-01-react │ └── index.html ├── 18-02-react-formularios │ └── index.html ├── 18-03-react-todo │ └── index.html ├── 18-04-react-api │ └── index.html ├── 18-05-react-router │ └── index.html ├── 18-06-react-context │ └── index.html ├── 19-01-sql │ └── index.html ├── 19-02-sql │ └── index.html ├── 19-03-sql │ └── index.html ├── 19-04-sql │ └── index.html ├── 20-01-node │ └── index.html ├── 20-02-express │ └── index.html ├── 21-03-api-rest │ └── index.html ├── 21-04-mevn │ └── index.html ├── 404.html ├── assets │ ├── css │ │ └── 0.styles.fe573751.css │ ├── img │ │ └── search.83621669.svg │ └── js │ │ ├── 10.866947a4.js │ │ ├── 11.c17c37e2.js │ │ ├── 12.da3769ab.js │ │ ├── 13.5663183b.js │ │ ├── 14.23d5af8e.js │ │ ├── 15.e46b76b0.js │ │ ├── 16.8d6dc3f7.js │ │ ├── 17.9a606157.js │ │ ├── 18.7dd07034.js │ │ ├── 19.a14ff68f.js │ │ ├── 2.0ac7fe89.js │ │ ├── 20.7ee26afc.js │ │ ├── 21.8cc89470.js │ │ ├── 22.69539fd9.js │ │ ├── 23.3d7de5a4.js │ │ ├── 24.4614da3f.js │ │ ├── 25.784bde9c.js │ │ ├── 26.80322b59.js │ │ ├── 27.ecde74b7.js │ │ ├── 28.6f4713fa.js │ │ ├── 29.e9054ffa.js │ │ ├── 3.c6daeaf2.js │ │ ├── 30.9a4b2420.js │ │ ├── 31.1c12a120.js │ │ ├── 32.7658c927.js │ │ ├── 33.0c2cebce.js │ │ ├── 34.e08a7fdf.js │ │ ├── 35.cf93cc6e.js │ │ ├── 36.d496f058.js │ │ ├── 37.5531251f.js │ │ ├── 38.9785f2e4.js │ │ ├── 39.f10e604c.js │ │ ├── 4.8e3cbe65.js │ │ ├── 40.5ea4994d.js │ │ ├── 41.2561b5df.js │ │ ├── 42.2be087a2.js │ │ ├── 43.1c80e311.js │ │ ├── 44.df299850.js │ │ ├── 45.8d77d76d.js │ │ ├── 46.e375bd67.js │ │ ├── 47.b06e7d1c.js │ │ ├── 48.b5bcc0c2.js │ │ ├── 49.371a6ee5.js │ │ ├── 5.07d5bc9a.js │ │ ├── 50.6828b12b.js │ │ ├── 51.27638769.js │ │ ├── 52.cf7f7628.js │ │ ├── 53.62362e51.js │ │ ├── 54.b34fcbd0.js │ │ ├── 55.50e41ea4.js │ │ ├── 56.964ab5bd.js │ │ ├── 57.7a73fb23.js │ │ ├── 6.9625d00a.js │ │ ├── 7.f837ab7f.js │ │ ├── 8.3a1d618b.js │ │ ├── 9.ea5777ec.js │ │ └── app.4fdaa86a.js ├── img │ ├── MDN-Graphics-inherited-3.png │ ├── MDN-Graphics-instantiation-2-fixed.png │ ├── MDN-Graphics-instantiation-teacher-3.png │ ├── MDN-Graphics-person-person-object-2.png │ ├── Periodic-Table-of-HTML-Elements.png │ ├── array.png │ ├── bean.gif │ ├── beautify.PNG │ ├── busqueda.webp │ ├── cafe-1.JPG │ ├── cafe-2.JPG │ ├── caja-git.png │ ├── checkout-1.JPG │ ├── conflicto-2.JPG │ ├── context-props.png │ ├── display2.png │ ├── entidad-relacion-2.JPG │ ├── error-1.JPG │ ├── estructura-html5.jpg │ ├── execution.png │ ├── feature.png │ ├── fn-0.JPG │ ├── fn-10.JPG │ ├── fn-11.JPG │ ├── fn-12.JPG │ ├── fn-20.jpg │ ├── fn-21.jpg │ ├── fn-30.jpg │ ├── fn-31.JPG │ ├── git-flujo.png │ ├── git-merge.gif │ ├── git-vscode.JPG │ ├── git.png │ ├── github-page.JPG │ ├── hell.jpg │ ├── html-1.png │ ├── html-2.png │ ├── html-2021-2.jpg │ ├── html-2021.jpg │ ├── indentar.gif │ ├── javascript.gif │ ├── joins.png │ ├── js-gif-1.gif │ ├── js-gif.gif │ ├── null.PNG │ ├── objetos-1.PNG │ ├── objetos-2.png │ ├── person-diagram.png │ ├── power-config.JPG │ ├── programar.gif │ ├── promesa.gif │ ├── proto1.png │ ├── proto2.png │ ├── pseint-1.JPG │ ├── pseint-10.JPG │ ├── pseint-2.JPG │ ├── pseint-3.JPG │ ├── pseint-4.JPG │ ├── pseint-5.JPG │ ├── pseint-6.JPG │ ├── pseint-7.JPG │ ├── pseint-8.JPG │ ├── pseint-9.JPG │ ├── repo-github.JPG │ ├── reset.png │ ├── revert.svg │ ├── scaner.gif │ ├── selector.gif │ ├── sitio-css-1.PNG │ ├── todo-relaciones.JPG │ ├── valor-2.png │ ├── valor.png │ ├── velocidad-n1.PNG │ ├── vsc-1.png │ ├── vscode-2.png │ ├── vscode-3.png │ ├── vscode-4.png │ ├── vscode-5.png │ └── vscode-6.png └── index.html ├── package-lock.json ├── package.json ├── src ├── .vuepress │ ├── components │ │ ├── Foo │ │ │ └── Bar.vue │ │ ├── OtherComponent.vue │ │ └── demo-component.vue │ ├── config.js │ ├── enhanceApp.js │ ├── public │ │ └── img │ │ │ ├── MDN-Graphics-inherited-3.png │ │ │ ├── MDN-Graphics-instantiation-2-fixed.png │ │ │ ├── MDN-Graphics-instantiation-teacher-3.png │ │ │ ├── MDN-Graphics-person-person-object-2.png │ │ │ ├── Periodic-Table-of-HTML-Elements.png │ │ │ ├── array.png │ │ │ ├── bean.gif │ │ │ ├── beautify.PNG │ │ │ ├── busqueda.webp │ │ │ ├── cafe-1.JPG │ │ │ ├── cafe-2.JPG │ │ │ ├── caja-git.png │ │ │ ├── checkout-1.JPG │ │ │ ├── conflicto-2.JPG │ │ │ ├── context-props.png │ │ │ ├── display2.png │ │ │ ├── entidad-relacion-2.JPG │ │ │ ├── error-1.JPG │ │ │ ├── estructura-html5.jpg │ │ │ ├── execution.png │ │ │ ├── feature.png │ │ │ ├── fn-0.JPG │ │ │ ├── fn-10.JPG │ │ │ ├── fn-11.JPG │ │ │ ├── fn-12.JPG │ │ │ ├── fn-20.jpg │ │ │ ├── fn-21.jpg │ │ │ ├── fn-30.jpg │ │ │ ├── fn-31.JPG │ │ │ ├── git-flujo.png │ │ │ ├── git-merge.gif │ │ │ ├── git-vscode.JPG │ │ │ ├── git.png │ │ │ ├── github-page.JPG │ │ │ ├── hell.jpg │ │ │ ├── html-1.png │ │ │ ├── html-2.png │ │ │ ├── html-2021-2.jpg │ │ │ ├── html-2021.jpg │ │ │ ├── indentar.gif │ │ │ ├── javascript.gif │ │ │ ├── joins.png │ │ │ ├── js-gif-1.gif │ │ │ ├── js-gif.gif │ │ │ ├── null.PNG │ │ │ ├── objetos-1.PNG │ │ │ ├── objetos-2.png │ │ │ ├── person-diagram.png │ │ │ ├── power-config.JPG │ │ │ ├── programar.gif │ │ │ ├── promesa.gif │ │ │ ├── proto1.png │ │ │ ├── proto2.png │ │ │ ├── pseint-1.JPG │ │ │ ├── pseint-10.JPG │ │ │ ├── pseint-2.JPG │ │ │ ├── pseint-3.JPG │ │ │ ├── pseint-4.JPG │ │ │ ├── pseint-5.JPG │ │ │ ├── pseint-6.JPG │ │ │ ├── pseint-7.JPG │ │ │ ├── pseint-8.JPG │ │ │ ├── pseint-9.JPG │ │ │ ├── repo-github.JPG │ │ │ ├── reset.png │ │ │ ├── revert.svg │ │ │ ├── scaner.gif │ │ │ ├── selector.gif │ │ │ ├── sitio-css-1.PNG │ │ │ ├── todo-relaciones.JPG │ │ │ ├── valor-2.png │ │ │ ├── valor.png │ │ │ ├── velocidad-n1.PNG │ │ │ ├── vsc-1.png │ │ │ ├── vscode-2.png │ │ │ ├── vscode-3.png │ │ │ ├── vscode-4.png │ │ │ ├── vscode-5.png │ │ │ └── vscode-6.png │ └── styles │ │ ├── index.styl │ │ └── palette.styl ├── 01-html │ └── README.md ├── 02-html-intermedio │ └── README.md ├── 03-css │ └── README.md ├── 04-css-intermedio │ └── README.md ├── 05-flexbox │ └── README.md ├── 06-flexbox-practica │ └── README.md ├── 07-00-terminal │ └── README.md ├── 07-01-git │ └── README.md ├── 07-02-github │ ├── README.md │ └── api-paises.json ├── 07-b-fundamentos │ └── README.md ├── 08-b-componentes │ └── README.md ├── 09-b-accordion │ └── README.md ├── 10-b-scroll │ └── README.md ├── 11-01-psint │ └── README.md ├── 11-02-js-basico │ └── README.md ├── 11-03-js │ ├── README.md │ └── index.html ├── 11-04-js │ └── README.md ├── 11-05-js-dom │ ├── README.md │ ├── app.js │ └── index.html ├── 11-06-js-paradigma │ ├── README.md │ ├── app.js │ └── index.html ├── 11-07-js-delegacion │ ├── README.md │ ├── app.js │ └── index.html ├── 11-08-js-form │ ├── README.md │ ├── app.js │ └── index.html ├── 11-09-js-promesas │ ├── README.md │ ├── app.js │ └── index.html ├── 11-10-js-fetch │ ├── README.md │ ├── app.js │ └── index.html ├── 11-11-js-poo │ ├── README.md │ ├── index.html │ └── js │ │ ├── app.js │ │ └── persona.js ├── 11-12-js-modulos │ ├── README.md │ ├── index.html │ └── js │ │ ├── app.js │ │ └── persona.js ├── 11-13-js-closure │ ├── README.md │ ├── index.html │ └── js │ │ └── app.js ├── 11-b-form │ └── README.md ├── 12-b-sass │ └── README.md ├── 13-b-chat │ └── README.md ├── 14-b-range │ └── README.md ├── 15-b-php │ └── README.md ├── 16-b-parsel │ └── README.md ├── 17-b-offcanvas │ └── README.md ├── 18-01-react │ └── README.md ├── 18-02-react-formularios │ └── README.md ├── 18-03-react-todo │ └── README.md ├── 18-04-react-api │ └── README.md ├── 18-05-react-router │ └── README.md ├── 18-06-react-context │ └── README.md ├── 19-01-sql │ └── README.md ├── 19-02-sql │ ├── RDBMS.png │ └── README.md ├── 19-03-sql │ └── README.md ├── 19-04-sql │ └── README.md ├── 20-01-node │ └── README.md ├── 20-02-express │ ├── README.md │ └── login1.js ├── 21-03-api-rest │ └── README.md ├── 21-04-mevn │ └── README.md └── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | pids 2 | logs 3 | node_modules 4 | npm-debug.log 5 | coverage/ 6 | run 7 | dist 8 | .DS_Store 9 | .nyc_output 10 | .basement 11 | config.local.js 12 | basement_dist 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |3 | {{ msg }} 4 |
5 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /src/.vuepress/components/OtherComponent.vue: -------------------------------------------------------------------------------- 1 | 2 |This is another component
3 | 4 | -------------------------------------------------------------------------------- /src/.vuepress/components/demo-component.vue: -------------------------------------------------------------------------------- 1 | 2 |3 | {{ msg }} 4 |
5 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /src/.vuepress/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | title: "HTML, CSS y Bootstrap 5 (bluuweb)", 3 | dest: "docs", 4 | base: "/desarrollo-web-bluuweb/", 5 | description: 6 | "Curso de HTML, CSS y Bootstrap 5, Docente: Ignacio Gutiérrez (bluuweb), plataforma: Udemy", 7 | head: [ 8 | ["meta", { name: "theme-color", content: "#3eaf7c" }], 9 | ["meta", { name: "apple-mobile-web-app-capable", content: "yes" }], 10 | [ 11 | "meta", 12 | { name: "apple-mobile-web-app-status-bar-style", content: "black" }, 13 | ], 14 | ], 15 | themeConfig: { 16 | editLinks: false, 17 | editLinkText: "", 18 | lastUpdated: "Last Updated", 19 | smoothScroll: true, 20 | nav: [ 21 | // { 22 | // text: "Guía", 23 | // link: "/", 24 | // }, 25 | // { text: 'Guia', link: '/docs/' }, 26 | { 27 | text: "Youtube", 28 | link: "https://youtube.com/bluuweb", 29 | }, 30 | { 31 | text: "Twitch", 32 | link: "https://www.twitch.tv/bluuweb", 33 | }, 34 | { 35 | text: "Ver curso en Udemy", 36 | link: "https://curso-bootstrap-5-udemy.bluuweb.cl", 37 | }, 38 | { 39 | text: "Curso Vue.js", 40 | link: "https://curso-vue-js-udemy.bluuweb.cl", 41 | }, 42 | { 43 | text: "Curso React.js", 44 | link: "https://curso-react-js-udemy.bluuweb.cl", 45 | }, 46 | ], 47 | sidebar: [ 48 | "/", 49 | "/01-html/", 50 | "/02-html-intermedio/", 51 | "/03-css/", 52 | "/04-css-intermedio/", 53 | "/05-flexbox/", 54 | "/06-flexbox-practica/", 55 | "/07-00-terminal/", 56 | "/07-01-git/", 57 | "/07-02-github/", 58 | "/07-b-fundamentos/", 59 | "/08-b-componentes/", 60 | // "/09-b-accordion/", 61 | "/10-b-scroll/", 62 | "/11-b-form/", 63 | "/12-b-sass/", 64 | "/14-b-range/", 65 | "/13-b-chat/", 66 | "/15-b-php/", 67 | // "/16-b-parsel/", 68 | "/17-b-offcanvas/", 69 | "/11-01-psint/", 70 | "/11-02-js-basico/", 71 | "/11-03-js/", 72 | "/11-04-js/", 73 | "/11-05-js-dom/", 74 | "/11-06-js-paradigma/", 75 | "/11-07-js-delegacion/", 76 | "/11-08-js-form/", 77 | "/11-09-js-promesas/", 78 | "/11-10-js-fetch/", 79 | "/11-11-js-poo/", 80 | "/11-12-js-modulos/", 81 | // "/11-13-js-closures/", 82 | "/18-01-react/", 83 | "/18-02-react-formularios/", 84 | "/18-03-react-todo/", 85 | "/18-04-react-api/", 86 | "/18-05-react-router/", 87 | "/18-06-react-context/", 88 | "/19-01-sql/", 89 | "/19-02-sql/", 90 | "/19-03-sql/", 91 | "/19-04-sql/", 92 | "/20-01-node/", 93 | "/20-02-express/", 94 | "/21-03-api-rest/", 95 | "/21-04-mevn/", 96 | ], 97 | }, 98 | 99 | /** 100 | * Apply plugins,ref:https://v1.vuepress.vuejs.org/zh/plugin/ 101 | */ 102 | plugins: ["@vuepress/plugin-back-to-top", "@vuepress/plugin-medium-zoom"], 103 | }; 104 | 105 | { 106 | /*Gato | 9 |3 años | 10 |Negro | 11 |
Perro | 14 |1 mes | 15 |Azul | 16 |
Mascota | 28 |Edad | 29 |Color | 30 |
---|---|---|
Gato | 33 |3 años | 34 |Negro | 35 |
Perro | 38 |1 mes | 39 |Azul | 40 |
Mascota | 52 |Edad | 53 |Color | 54 |
---|
Mascota | 66 |Edad | 67 |Color | 68 |
---|---|---|
Mascota | 74 |Edad | 75 |Color | 76 |
Gato | 82 |3 años | 83 |Negro | 84 |
Perro | 87 |1 mes | 88 |Azul | 89 |
Mascota | 100 |Edad | 101 |Color | 102 |
---|---|---|
Gato | 107 |3 años | 108 |Negro | 109 |
Perro | 112 |1 mes | 113 |Azul | 114 |
Rana | 117 |Desconocido | 118 |
Mascota | 128 |Edad | 129 |Color | 130 |
---|---|---|
Gato | 135 |3 años | 136 |Negro | 137 |
Perro | 140 |1 mes | 141 |Azul | 142 |
Rana | 145 |2 semanas | 146 |
25 | Say goodbye to inefficient juggling of multiple apps, teams, and 26 | projects. Officelite is the new collaboration platform built with an 27 | intuitive interface to improve productivity. 28 |
29 | 30 |$300
22 | 23 |$100
31 | 32 |$200
40 | 41 |Total: $200
70 |Human
42 |Edad
58 | 59 | 60 |Edad
69 |lorem
44 |Debes iniciar sesión
118 | ` 119 | } 120 | }) 121 | 122 | const accionCerrarSesion = () => { 123 | formulario.classList.remove('d-none') 124 | btnCerrarSesion.addEventListener('click', () => firebase.auth().signOut()) 125 | } 126 | 127 | const accionAcceder = () => { 128 | formulario.classList.add('d-none') 129 | btnIngreso.addEventListener('click', async() => { 130 | console.log('entro') 131 | const provider = new firebase.auth.GoogleAuthProvider(); 132 | try { 133 | await firebase.auth().signInWithPopup(provider) 134 | } catch (error) { 135 | console.log(error) 136 | } 137 | }) 138 | } 139 | 140 | const contenidoChat = user => { 141 | 142 | formulario.addEventListener('submit', event => { 143 | event.preventDefault() 144 | console.log(texto.value) 145 | if(!texto.value.trim()){ 146 | console.log('texto vacio') 147 | return 148 | } 149 | firebase.firestore().collection('chat').add({ 150 | texto: texto.value, 151 | uid: user.uid, 152 | fecha: Date.now() 153 | }).then(res => { 154 | console.log('texto agregado') 155 | }) 156 | texto.value = '' 157 | }) 158 | 159 | firebase.firestore().collection('chat').orderBy('fecha') 160 | .onSnapshot(snapshot => { 161 | snapshot.docChanges().forEach((change) => { 162 | if (change.type === "added") { 163 | console.log(change.doc.data()); 164 | console.log(user.uid) 165 | console.log(change.doc.data().uid) 166 | if (user.uid === change.doc.data().uid) { 167 | console.log('entró', change.doc.data().texto) 168 | contenidoWeb.innerHTML += /*html*/` 169 |32 | Sign-up for our 30-day trial. No credit card required. 33 |
34 |42 | $ 16.00 43 | / month 44 |
45 |50 | 100K pageviews 51 |
52 |