Skip to content
2 changes: 1 addition & 1 deletion assets/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ body {
margin: 25px 100px;
float: right;
border: 1px solid #d8d8d8;
padding: 10px 30px;
padding: 30px 30px;
background-color: white;
-webkit-box-shadow: 0px 2px 15px -12px rgba(0, 0, 0, 0.57);
-moz-box-shadow: 0px 2px 15px -12px rgba(0, 0, 0, 0.57);
Expand Down
37 changes: 34 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,45 @@
<!-- Import Styles -->
<link rel="stylesheet" href="./assets/styles.css" />
<!-- Import Vue.js -->
<script src="https://unpkg.com/[email protected].0-beta.12/dist/vue.global.js"></script>
<script src="https://unpkg.com/[email protected].11/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<h1>Product goes here</h1>
<div class="nav-bar"></div>

<div class="cart">Cart({{ cart }})</div>

<div class="product-display">
<div class="product-container">
<div class="product-image">
<img :src="image">
</div>
<div class="product-info">
<h1>{{ title }}</h1>
<p v-if="inStock">In Stock</p>
<p v-else>Out of Stock</p>
<ul>
<li v-for="detail in details">{{ detail }}</li>
</ul>

<div
class="color-circle"
v-for="(variant, index) in variants"
:key="variant.id"
@mouseover="updateVariant(index)"
:style="{ backgroundColor: variant.color }"></div>
<p>{{ onSale }}</p>
<button class="button" :class="{ disabledButton: !inStock }" :disabled="!inStock" v-on:click="addToCart">Add to Cart</button>
</div>
</div>
</div>
</div>

<!-- Import Js -->
<script src="./main.js"></script>

<!-- Mount App -->
<script>
const mountedApp = app.mount('#app')
</script>
</body>
</html>
41 changes: 40 additions & 1 deletion main.js
Original file line number Diff line number Diff line change
@@ -1 +1,40 @@
const product = 'Socks'
const app = Vue.createApp({
data() {
return {
cart:0,
brand: 'Vue Mastery',
product: 'Socks',
selectedVariant: 0,
details: ['50% cotton', '30% wool', '20% polyester'],
variants: [
{ id: 2234, color: 'green', image: './assets/images/socks_green.jpg', quantity: 50, onSale: true },
{ id: 2235, color: 'blue', image: './assets/images/socks_blue.jpg', quantity: 0, onSale: false },
]
}
},
methods: {
addToCart() {
this.cart += 1
},
updateVariant(index) {
this.selectedVariant = index
}
},
computed: {
title() {
return this.brand + ' ' + this.product
},

image() {
return this.variants[this.selectedVariant].image
},

inStock() {
return this.variants[this.selectedVariant].quantity
},

ifSale() {
return this.brand + ' ' + this.product + ' is on sale'
}
}
})