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