Skip to content

Commit 04fc9ed

Browse files
Raphael UgwuRaphael Ugwu
Raphael Ugwu
authored and
Raphael Ugwu
committed
Updates
1 parent 82b7461 commit 04fc9ed

File tree

9 files changed

+107
-69
lines changed

9 files changed

+107
-69
lines changed

package-lock.json

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
},
1010
"dependencies": {
1111
"core-js": "^2.6.5",
12-
"vue": "^2.6.10"
12+
"vue": "^2.6.10",
13+
"vue-material": "^1.0.0-beta-11"
1314
},
1415
"devDependencies": {
1516
"@vue/cli-plugin-babel": "^3.10.0",

src/App.vue

+15-10
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,33 @@
11
<template>
2-
<div id="app">
3-
<img alt="Vue logo" src="./assets/logo.png">
4-
<HelloWorld msg="Welcome to Your Vue.js App"/>
2+
<div>
3+
<book></book>
54
</div>
65
</template>
76

87
<script>
9-
import HelloWorld from './components/HelloWorld.vue'
10-
8+
import LoadingState from "./components/LoadingState"
9+
import ErrorState from "./components/ErrorState"
10+
const Book = import("./components/Book")
1111
export default {
12-
name: 'app',
1312
components: {
14-
HelloWorld
13+
Book: () => ({
14+
component: Book,
15+
loading: LoadingState,
16+
error: ErrorState,
17+
delay: 100,
18+
timeout: 2000
19+
})
1520
}
16-
}
21+
};
1722
</script>
1823

1924
<style>
2025
#app {
21-
font-family: 'Avenir', Helvetica, Arial, sans-serif;
26+
font-family: "Avenir", Helvetica, Arial, sans-serif;
2227
-webkit-font-smoothing: antialiased;
2328
-moz-osx-font-smoothing: grayscale;
2429
text-align: center;
2530
color: #2c3e50;
2631
margin-top: 60px;
2732
}
28-
</style>
33+
</style>

src/components/Book.vue

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<template>
2+
<div id="app">
3+
<md-card md-with-hover v-for="(book, key) in books" v-bind:key="key">
4+
<md-ripple>
5+
<md-card-header>
6+
<div class="md-title">{{book.name}}</div>
7+
<div class="md-subhead">{{book.genre}}</div>
8+
</md-card-header>
9+
10+
<md-card-actions>
11+
<md-button type="primary" @click="addBook(key)">Donate to improve {{book.genre}}</md-button>
12+
</md-card-actions>
13+
</md-ripple>
14+
</md-card>
15+
16+
<div v-if="show">
17+
<md-card-content>
18+
<donate v-bind:selectList="selectList"></donate>
19+
</md-card-content>
20+
</div>
21+
22+
<md-button @click="show = true" id="donate">Donate {{selectList.length}} book(s)</md-button>
23+
</div>
24+
25+
26+
</template>
27+
28+
29+
30+
<script>
31+
export default {
32+
name: 'RegularButtons',
33+
methods: {
34+
addBook (key) {
35+
if(!this.selectList.includes(key)) {
36+
this.selectList.push(key);
37+
}
38+
}
39+
},
40+
components: {
41+
donate: () => import('./Donate')
42+
},
43+
data: () => ({
44+
books: [
45+
{ name: 'Using Creatine', genre: 'Workouts' },
46+
{ name: 'Learn Parkour', genre: 'Sports' },
47+
{ name: 'Snorkelling', genre: 'Diving' },
48+
],
49+
selectList: [],
50+
show: false
51+
})
52+
}
53+
</script>

src/components/Donate.vue

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<template>
2+
<div title="Donate Books" key="donate">
3+
<p v-for="(x, y) in this.selectList" :key="y">
4+
Tip: {{books[Number(x)].name}} is about {{books[Number(x)].genre}}
5+
</p>
6+
</div>
7+
</template>
8+
9+
<script>
10+
export default {
11+
props: ['selectList'],
12+
data: () => ({
13+
books: [
14+
{ name: 'Using Creatine', genre: 'Workouts' },
15+
{ name: 'Learn Parkour', genre: 'Sports' },
16+
{ name: 'Snorkelling', genre: 'Underwater' },
17+
]
18+
})
19+
}
20+
</script>

src/components/ErrorState.vue

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<template>
2+
<p>Could not display books. Kindly check your internet conection.</p>
3+
</template>

src/components/HelloWorld.vue

-58
This file was deleted.

src/components/LoadingState.vue

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<template>
2+
<p><em>Loading...</em></p>
3+
</template>

src/main.js

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ import App from './App.vue'
33

44
Vue.config.productionTip = false
55

6+
import VueMaterial from 'vue-material'
7+
import 'vue-material/dist/vue-material.min.css'
8+
import 'vue-material/dist/theme/default.css'
9+
10+
Vue.use(VueMaterial)
11+
612
new Vue({
713
render: h => h(App),
814
}).$mount('#app')

0 commit comments

Comments
 (0)