From 32b5995968182d420a1ef9ffda6528208e457665 Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Mon, 30 Dec 2024 20:17:10 +0100
Subject: [PATCH] start analisi problema

---
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/package.json                        |   26 +++++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeBase.vue    |   13 ++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.gitignore                          |   22 ++++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/index.html                   |   21 ++++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/App.vue                         |  100 ++++++++++++++++++++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/babel.config.js                     |    5 +
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/ActiveElement.vue    |   12 ++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/main.js                         |   16 +++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.eslintrc.js                        |   17 +++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/HOW-TO-USE.pdf                      |    0 
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/favicon.ico                  |    0 
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeElement.vue |   14 ++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeGrid.vue    |   19 +++
 08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.browserslistrc                     |    3 
 14 files changed, 268 insertions(+), 0 deletions(-)

diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.browserslistrc b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.browserslistrc
new file mode 100644
index 0000000..214388f
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.browserslistrc
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not dead
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.eslintrc.js b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.eslintrc.js
new file mode 100644
index 0000000..3391da1
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-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-08-a-potential-problem-starting-setup/.gitignore b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/.gitignore
new file mode 100644
index 0000000..11f5d71
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-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-08-a-potential-problem-starting-setup/HOW-TO-USE.pdf b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/HOW-TO-USE.pdf
new file mode 100644
index 0000000..00d28ea
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/HOW-TO-USE.pdf
Binary files differ
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/babel.config.js b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/babel.config.js
new file mode 100644
index 0000000..e955840
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-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-08-a-potential-problem-starting-setup/package.json b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/package.json
new file mode 100644
index 0000000..c518480
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/package.json
@@ -0,0 +1,26 @@
+{
+  "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"
+  },
+  "prettier": {
+    "singleQuote": true
+  }
+}
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/favicon.ico b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/favicon.ico
new file mode 100644
index 0000000..df36fcf
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/favicon.ico
Binary files differ
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/index.html b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/public/index.html
new file mode 100644
index 0000000..79c4efc
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-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-08-a-potential-problem-starting-setup/src/App.vue b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/App.vue
new file mode 100644
index 0000000..3ed01f7
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/App.vue
@@ -0,0 +1,100 @@
+<template>
+  <div>
+    <active-element
+      :topic-title="activeTopic && activeTopic.title"
+      :text="activeTopic && activeTopic.fullText"
+    ></active-element>
+    <knowledge-base :topics="topics" @select-topic="activateTopic"></knowledge-base>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      topics: [
+        {
+          id: 'basics',
+          title: 'The Basics',
+          description: 'Core Vue basics you have to know',
+          fullText:
+            'Vue is a great framework and it has a couple of key concepts: Data binding, events, components and reactivity - that should tell you something!',
+        },
+        {
+          id: 'components',
+          title: 'Components',
+          description:
+            'Components are a core concept for building Vue UIs and apps',
+          fullText:
+            'With components, you can split logic (and markup) into separate building blocks and then combine those building blocks (and re-use them) to build powerful user interfaces.',
+        },
+      ],
+      activeTopic: null,
+    };
+  },
+  methods: {
+    activateTopic(topicId) {
+      this.activeTopic = this.topics.find((topic) => topic.id === topicId);
+    },
+  },
+};
+</script>
+
+<style>
+* {
+  box-sizing: border-box;
+}
+html {
+  font-family: sans-serif;
+}
+body {
+  margin: 0;
+}
+section {
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
+  margin: 2rem auto;
+  max-width: 40rem;
+  padding: 1rem;
+  border-radius: 12px;
+}
+
+ul {
+  list-style: none;
+  margin: 0;
+  padding: 0;
+  display: flex;
+  justify-content: center;
+}
+
+li {
+  border-radius: 12px;
+  border: 1px solid #ccc;
+  padding: 1rem;
+  width: 15rem;
+  margin: 0 1rem;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+h2 {
+  margin: 0.75rem 0;
+  text-align: center;
+}
+
+button {
+  font: inherit;
+  border: 1px solid #c70053;
+  background-color: #c70053;
+  color: white;
+  padding: 0.75rem 2rem;
+  border-radius: 30px;
+  cursor: pointer;
+}
+
+button:hover,
+button:active {
+  background-color: #e24d8b;
+  border-color: #e24d8b;
+}
+</style>
\ No newline at end of file
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/ActiveElement.vue b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/ActiveElement.vue
new file mode 100644
index 0000000..d3c3ccb
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/ActiveElement.vue
@@ -0,0 +1,12 @@
+<template>
+  <section>
+    <h2>{{ topicTitle }}</h2>
+    <p>{{ text }}</p>
+  </section>
+</template>
+
+<script>
+export default {
+  props: ['topicTitle', 'text'],
+};
+</script>
\ No newline at end of file
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeBase.vue b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeBase.vue
new file mode 100644
index 0000000..30d2c0f
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeBase.vue
@@ -0,0 +1,13 @@
+<template>
+  <section>
+    <h2>Select a Topic</h2>
+    <knowledge-grid :topics="topics" @select-topic="$emit('select-topic', $event)"></knowledge-grid>
+  </section>
+</template>
+
+<script>
+export default {
+  props: ['topics'],
+  emits: ['select-topic'],
+};
+</script>
\ No newline at end of file
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeElement.vue b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeElement.vue
new file mode 100644
index 0000000..143b1b0
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeElement.vue
@@ -0,0 +1,14 @@
+<template>
+  <li>
+    <h3>{{ topicName }}</h3>
+    <p>{{ description }}</p>
+    <button @click="$emit('select-topic', id)">Learn More</button>
+  </li>
+</template>
+
+<script>
+export default {
+  props: ['id', 'topicName', 'description'],
+  emits: ['select-topic'],
+};
+</script>
\ No newline at end of file
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeGrid.vue b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeGrid.vue
new file mode 100644
index 0000000..7b622c4
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/components/KnowledgeGrid.vue
@@ -0,0 +1,19 @@
+<template>
+  <ul>
+    <knowledge-element
+      v-for="topic in topics"
+      :key="topic.id"
+      :id="topic.id"
+      :topic-name="topic.title"
+      :description="topic.description"
+      @select-topic="$emit('select-topic', $event)"
+    ></knowledge-element>
+  </ul>
+</template>
+
+<script>
+export default {
+  props: ['topics'],
+  emits: ['select-topic']
+};
+</script>
\ No newline at end of file
diff --git a/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/main.js b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/main.js
new file mode 100644
index 0000000..55eef5d
--- /dev/null
+++ b/08 - component communication/cmp-communication-08-a-potential-problem-starting-setup/src/main.js
@@ -0,0 +1,16 @@
+import { createApp } from 'vue';
+
+import App from './App.vue';
+import ActiveElement from './components/ActiveElement.vue';
+import KnowledgeBase from './components/KnowledgeBase.vue';
+import KnowledgeElement from './components/KnowledgeElement.vue';
+import KnowledgeGrid from './components/KnowledgeGrid.vue';
+
+const app = createApp(App);
+
+app.component('active-element', ActiveElement);
+app.component('knowledge-base', KnowledgeBase);
+app.component('knowledge-element', KnowledgeElement);
+app.component('knowledge-grid', KnowledgeGrid);
+
+app.mount('#app');

--
Gitblit v1.8.0