From a61ded74c832a0b692c0a853e72c27d9a25ed412 Mon Sep 17 00:00:00 2001 From: Cristiano Magro <cristiano.magro@vola.it> Date: Mon, 30 Dec 2024 20:15:32 +0100 Subject: [PATCH] fase inziale lezione 08 --- 08 - component communication/cmp-communication-01-starting-setup/.eslintrc.js | 17 ++++ 08 - component communication/cmp-communication-01-starting-setup/src/components/FriendContact.vue | 37 +++++++++ 08 - component communication/cmp-communication-01-starting-setup/public/index.html | 21 +++++ 08 - component communication/cmp-communication-01-starting-setup/src/main.js | 10 ++ 08 - component communication/cmp-communication-01-starting-setup/babel.config.js | 5 + 08 - component communication/cmp-communication-01-starting-setup/.gitignore | 22 +++++ 08 - component communication/cmp-communication-01-starting-setup/.browserslistrc | 3 08 - component communication/cmp-communication-01-starting-setup/package.json | 23 +++++ 08 - component communication/cmp-communication-01-starting-setup/src/App.vue | 92 +++++++++++++++++++++++ 08 - component communication/cmp-communication-01-starting-setup/HOW-TO-USE.pdf | 0 08 - component communication/cmp-communication-01-starting-setup/public/favicon.ico | 0 11 files changed, 230 insertions(+), 0 deletions(-) diff --git a/08 - component communication/cmp-communication-01-starting-setup/.browserslistrc b/08 - component communication/cmp-communication-01-starting-setup/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/08 - component communication/cmp-communication-01-starting-setup/.eslintrc.js b/08 - component communication/cmp-communication-01-starting-setup/.eslintrc.js new file mode 100644 index 0000000..3391da1 --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended' + ], + parserOptions: { + parser: 'babel-eslint' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' + } +} diff --git a/08 - component communication/cmp-communication-01-starting-setup/.gitignore b/08 - component communication/cmp-communication-01-starting-setup/.gitignore new file mode 100644 index 0000000..11f5d71 --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/08 - component communication/cmp-communication-01-starting-setup/HOW-TO-USE.pdf b/08 - component communication/cmp-communication-01-starting-setup/HOW-TO-USE.pdf new file mode 100644 index 0000000..00d28ea --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/HOW-TO-USE.pdf Binary files differ diff --git a/08 - component communication/cmp-communication-01-starting-setup/babel.config.js b/08 - component communication/cmp-communication-01-starting-setup/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/08 - component communication/cmp-communication-01-starting-setup/package.json b/08 - component communication/cmp-communication-01-starting-setup/package.json new file mode 100644 index 0000000..52d25ec --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/package.json @@ -0,0 +1,23 @@ +{ + "name": "vue-first-app", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "core-js": "^3.6.5", + "vue": "^3.0.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "@vue/compiler-sfc": "^3.0.0-0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^7.0.0-0" + } +} diff --git a/08 - component communication/cmp-communication-01-starting-setup/public/favicon.ico b/08 - component communication/cmp-communication-01-starting-setup/public/favicon.ico new file mode 100644 index 0000000..df36fcf --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/public/favicon.ico Binary files differ diff --git a/08 - component communication/cmp-communication-01-starting-setup/public/index.html b/08 - component communication/cmp-communication-01-starting-setup/public/index.html new file mode 100644 index 0000000..79c4efc --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/public/index.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width,initial-scale=1.0" /> + <link rel="icon" href="<%= BASE_URL %>favicon.ico" /> + <title><%= htmlWebpackPlugin.options.title %></title> + </head> + <body> + <noscript> + <strong + >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work + properly without JavaScript enabled. Please enable it to + continue.</strong + > + </noscript> + <div id="app"></div> + <!-- built files will be auto injected --> + </body> +</html> diff --git a/08 - component communication/cmp-communication-01-starting-setup/src/App.vue b/08 - component communication/cmp-communication-01-starting-setup/src/App.vue new file mode 100644 index 0000000..7640378 --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/src/App.vue @@ -0,0 +1,92 @@ +<template> + <section> + <header> + <h1>My Friends</h1> + </header> + <ul> + <friend-contact></friend-contact> + <friend-contact></friend-contact> + </ul> + </section> +</template> + +<script> +export default { + data() { + return { + friends: [ + { + id: "manuel", + name: "Manuel Lorenz", + phone: "0123 45678 90", + email: "manuel@localhost.com", + }, + { + id: "julie", + name: "Julie Jones", + phone: "0987 654421 21", + email: "julie@localhost.com", + }, + ], + }; + }, +}; +</script> + +<style> +* { + box-sizing: border-box; +} +html { + font-family: "Jost", sans-serif; +} +body { + margin: 0; +} +header { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); + margin: 3rem auto; + border-radius: 10px; + padding: 1rem; + background-color: #58004d; + color: white; + text-align: center; + width: 90%; + max-width: 40rem; +} +#app ul { + margin: 0; + padding: 0; + list-style: none; +} +#app li { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); + margin: 1rem auto; + border-radius: 10px; + padding: 1rem; + text-align: center; + width: 90%; + max-width: 40rem; +} +#app h2 { + font-size: 2rem; + border-bottom: 4px solid #ccc; + color: #58004d; + margin: 0 0 1rem 0; +} +#app button { + font: inherit; + cursor: pointer; + border: 1px solid #ff0077; + background-color: #ff0077; + color: white; + padding: 0.05rem 1rem; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26); +} +#app button:hover, +#app button:active { + background-color: #ec3169; + border-color: #ec3169; + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26); +} +</style> \ No newline at end of file diff --git a/08 - component communication/cmp-communication-01-starting-setup/src/components/FriendContact.vue b/08 - component communication/cmp-communication-01-starting-setup/src/components/FriendContact.vue new file mode 100644 index 0000000..0e2cff6 --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/src/components/FriendContact.vue @@ -0,0 +1,37 @@ +<template> + <li> + <h2>{{ friend.name }}</h2> + <button @click="toggleDetails">{{ detailsAreVisible ? 'Hide' : 'Show' }} Details</button> + <ul v-if="detailsAreVisible"> + <li> + <strong>Phone:</strong> + {{ friend.phone }} + </li> + <li> + <strong>Email:</strong> + {{ friend.email }} + </li> + </ul> + </li> +</template> + +<script> +export default { + data() { + return { + detailsAreVisible: false, + friend: { + id: "manuel", + name: "Manuel Lorenz", + phone: "0123 45678 90", + email: "manuel@localhost.com", + }, + }; + }, + methods: { + toggleDetails() { + this.detailsAreVisible = !this.detailsAreVisible; + } + } +}; +</script> \ No newline at end of file diff --git a/08 - component communication/cmp-communication-01-starting-setup/src/main.js b/08 - component communication/cmp-communication-01-starting-setup/src/main.js new file mode 100644 index 0000000..97963bf --- /dev/null +++ b/08 - component communication/cmp-communication-01-starting-setup/src/main.js @@ -0,0 +1,10 @@ +import { createApp } from 'vue'; + +import App from './App.vue'; +import FriendContact from './components/FriendContact.vue'; + +const app = createApp(App); + +app.component('friend-contact', FriendContact); + +app.mount('#app'); -- Gitblit v1.8.0