27 files added
24845 ■■■■■ changed files
07 - development setup/vue-cli-01-a-new-vue-project/.browserslistrc 3 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/.eslintrc.js 17 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/.gitignore 22 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/HOW-TO-USE.pdf patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/babel.config.js 5 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/package-lock.json 12152 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/package.json 23 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/public/favicon.ico patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/public/index.html 21 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue 120 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/src/components/FriendContact.vue 68 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/src/main.js 10 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/.browserslistrc 4 ●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/.eslintrc.js 17 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/.gitignore 23 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/README.md 24 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/babel.config.js 5 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/jsconfig.json 19 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/package-lock.json 12180 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/package.json 23 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/public/favicon.ico patch | view | raw | blame | history
07 - development setup/vue-first-app/public/index.html 17 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/src/App.vue 26 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/src/assets/logo.png patch | view | raw | blame | history
07 - development setup/vue-first-app/src/components/HelloWorld.vue 58 ●●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/src/main.js 4 ●●●● patch | view | raw | blame | history
07 - development setup/vue-first-app/vue.config.js 4 ●●●● patch | view | raw | blame | history
07 - development setup/vue-cli-01-a-new-vue-project/.browserslistrc
New file
@@ -0,0 +1,3 @@
> 1%
last 2 versions
not dead
07 - development setup/vue-cli-01-a-new-vue-project/.eslintrc.js
New file
@@ -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'
  }
}
07 - development setup/vue-cli-01-a-new-vue-project/.gitignore
New file
@@ -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?
07 - development setup/vue-cli-01-a-new-vue-project/HOW-TO-USE.pdf
Binary files differ
07 - development setup/vue-cli-01-a-new-vue-project/babel.config.js
New file
@@ -0,0 +1,5 @@
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}
07 - development setup/vue-cli-01-a-new-vue-project/package-lock.json
New file
Diff too large
07 - development setup/vue-cli-01-a-new-vue-project/package.json
New file
@@ -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": "^5.0.8",
    "@vue/cli-plugin-eslint": "^5.0.8",
    "@vue/cli-service": "^5.0.8",
    "@vue/compiler-sfc": "^3.0.0-0",
    "babel-eslint": "^10.1.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.7.1"
  }
}
07 - development setup/vue-cli-01-a-new-vue-project/public/favicon.ico
07 - development setup/vue-cli-01-a-new-vue-project/public/index.html
New file
@@ -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>
07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue
New file
@@ -0,0 +1,120 @@
<template>
  <section>
    <header>
      <h1>My friends</h1>
    </header>
    <ul>
      <friend-contact
      v-for="friend in friends"
      :key="friend.id"
      :id="friend.id"
      :name="friend.name"
      :phone-number="friend.phone"
      :email-address="friend.email"
      :is-favorite="friend.isFavorite"
      @toggle-favorite="toggleFavoriteStatus"
      ></friend-contact>
    </ul>
  </section>
</template>
<script>
export default {
  data() {
    return {
      friends: [
        {
          id: "manuel",
          name: "Manuel Lorenz",
          phone: "01234 5678 991",
          email: "manuel@localhost.com",
          isFavorite: true,
        },
        {
          id: "julie",
          name: "Julie Jones",
          phone: "09876 543 221",
          email: "julie@localhost.com",
          isFavorite: true,
        },
      ],
    }
  },
  methods:{
    toggleFavoriteStatus(friendId){
      const found = this.friends.find(
        (friend) => friend.id === friendId
      );
      found.isFavorite = !found.isFavorite;
    }
  }
};
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Jost&display=swap');
* {
  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>
07 - development setup/vue-cli-01-a-new-vue-project/src/components/FriendContact.vue
New file
@@ -0,0 +1,68 @@
<template>
    <li>
        <h2>{{ name }} {{ isFavorite ? '(Favorite)' : '' }}</h2>
        <button @click="toggleDetails">
            {{ detailsAreVisible ? 'Hide' : 'Show' }} Details
        </button>
        <button @click="toggleFavorite">
            Toggle favorite
        </button>
        <ul v-if="detailsAreVisible">
            <li><strong>Phone:</strong> {{ phoneNumber }}</li>
            <li><strong>Email:</strong> {{ emailAddress }}</li>
        </ul>
    </li>
</template>
<script>
export default {
    // props: [
    //     'name',
    //     'phoneNumber',
    //     'emailAddress',
    //     'isFavorite'
    // ],
    props: {
        id:{
            title: String,
            required: true
        },
        name: {
            title: String,
            required: true
        },
        phoneNumber: {
            title: String,
            required: true
        },
        emailAddress: {
            title: String,
            required: true
        },
        isFavorite: {
            title: Boolean,
            required: false,
            default: false,
            // validator: function (value) {
            //     return value === '1' || value === '0';
            // }
        },
    },
    data() {
        return {
            detailsAreVisible: false,
        }
    },
    methods: {
        toggleDetails() {
            this.detailsAreVisible = !this.detailsAreVisible;
        },
        toggleFavorite() {
            // this.friendIsFavorite = !this.friendIsFavorite;
            this.$emit('toggle-favorite', this.id);
        },
    },
};
</script>
07 - development setup/vue-cli-01-a-new-vue-project/src/main.js
New file
@@ -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");
07 - development setup/vue-first-app/.browserslistrc
New file
@@ -0,0 +1,4 @@
> 1%
last 2 versions
not dead
not ie 11
07 - development setup/vue-first-app/.eslintrc.js
New file
@@ -0,0 +1,17 @@
module.exports = {
  root: true,
  env: {
    node: true
  },
  'extends': [
    'plugin:vue/vue3-essential',
    'eslint:recommended'
  ],
  parserOptions: {
    parser: '@babel/eslint-parser'
  },
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
  }
}
07 - development setup/vue-first-app/.gitignore
New file
@@ -0,0 +1,23 @@
.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?
07 - development setup/vue-first-app/README.md
New file
@@ -0,0 +1,24 @@
# vue-first-app
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
07 - development setup/vue-first-app/babel.config.js
New file
@@ -0,0 +1,5 @@
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}
07 - development setup/vue-first-app/jsconfig.json
New file
@@ -0,0 +1,19 @@
{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "baseUrl": "./",
    "moduleResolution": "node",
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  }
}
07 - development setup/vue-first-app/package-lock.json
New file
Diff too large
07 - development setup/vue-first-app/package.json
New file
@@ -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.8.3",
    "vue": "^3.2.13"
  },
  "devDependencies": {
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3"
  }
}
07 - development setup/vue-first-app/public/favicon.ico
07 - development setup/vue-first-app/public/index.html
New file
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="">
  <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>
07 - development setup/vue-first-app/src/App.vue
New file
@@ -0,0 +1,26 @@
<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
07 - development setup/vue-first-app/src/assets/logo.png
07 - development setup/vue-first-app/src/components/HelloWorld.vue
New file
@@ -0,0 +1,58 @@
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <p>
      For a guide and recipes on how to configure / customize this project,<br>
      check out the
      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
    </p>
    <h3>Installed CLI Plugins</h3>
    <ul>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
    </ul>
    <h3>Essential Links</h3>
    <ul>
      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
    </ul>
    <h3>Ecosystem</h3>
    <ul>
      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
    </ul>
  </div>
</template>
<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>
07 - development setup/vue-first-app/src/main.js
New file
@@ -0,0 +1,4 @@
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
07 - development setup/vue-first-app/vue.config.js
New file
@@ -0,0 +1,4 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
})