@@ -1 +1,106 @@ | |||
<p>menu-items works!</p> | |||
<div class="container"> | |||
<section class="item-details"> | |||
<div class="widget-heading-holder"> | |||
<header> Menu Items </header> | |||
<div class="tabs-holder" [ngClass]="{'left' : selectedTab === 'items', 'right': selectedTab === 'offers'}"> | |||
<button (click)="selectedTab = 'items'"> Items </button> | |||
<button (click)="selectedTab = 'offers'"> Offers </button> | |||
</div> | |||
</div> | |||
<table> | |||
<tr> | |||
<th> Item No </th> | |||
<th> Item Name </th> | |||
<th> Preperation Time </th> | |||
<th> Price </th> | |||
<th> Availability Status </th> | |||
</tr> | |||
<tr> | |||
<td> 14344 </td> | |||
<td> 8 Pc Hot & Crispy </td> | |||
<td> 15 Min </td> | |||
<td> ₹ 750 </td> | |||
<td> | |||
<div class="toggle" [ngClass]="{'on' : productAvailable }" | |||
(click)="productAvailable = !productAvailable"> | |||
<div class="knob"></div> | |||
</div> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> 14344 </td> | |||
<td> 8 Pc Hot & Crispy </td> | |||
<td> 15 Min </td> | |||
<td> ₹ 750 </td> | |||
<td> | |||
<div class="toggle" [ngClass]="{'on' : productAvailable }" | |||
(click)="productAvailable = !productAvailable"> | |||
<div class="knob"></div> | |||
</div> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> 14344 </td> | |||
<td> 8 Pc Hot & Crispy </td> | |||
<td> 15 Min </td> | |||
<td> ₹ 750 </td> | |||
<td> | |||
<div class="toggle" [ngClass]="{'on' : productAvailable }" | |||
(click)="productAvailable = !productAvailable"> | |||
<div class="knob"></div> | |||
</div> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> 14344 </td> | |||
<td> 8 Pc Hot & Crispy </td> | |||
<td> 15 Min </td> | |||
<td> ₹ 750 </td> | |||
<td> | |||
<div class="toggle" [ngClass]="{'on' : productAvailable }" | |||
(click)="productAvailable = !productAvailable"> | |||
<div class="knob"></div> | |||
</div> | |||
</td> | |||
</tr> | |||
</table> | |||
</section> | |||
<ul class="subscribed-offers"> | |||
<div class="heading"> | |||
<header> Subscribed Offers: </header> | |||
<a> View All </a> | |||
</div> | |||
<li> | |||
<header> Buy 2 Solo Bucket @ ₹ 599 </header> | |||
<p> | |||
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum quia, quo dolor tenetur porro amet cumque aspernatur illum culpa veniam quae blanditiis, adipisci delectus dolorem aliquam soluta repellendus pariatur facere. | |||
</p> | |||
<header> Valid till : 2 Days, Hrs: 15:25:20 </header> | |||
</li> | |||
<li> | |||
<header> Buy 2 Solo Bucket @ ₹ 599 </header> | |||
<p> | |||
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum quia, quo dolor tenetur porro amet cumque aspernatur illum culpa veniam quae blanditiis, adipisci delectus dolorem aliquam soluta repellendus pariatur facere. | |||
</p> | |||
<header> Valid till : 2 Days, Hrs: 15:25:20 </header> | |||
</li> | |||
<li> | |||
<header> Buy 2 Solo Bucket @ ₹ 599 </header> | |||
<p> | |||
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum quia, quo dolor tenetur porro amet cumque aspernatur illum culpa veniam quae blanditiis, adipisci delectus dolorem aliquam soluta repellendus pariatur facere. | |||
</p> | |||
<header> Valid till : 2 Days, Hrs: 15:25:20 </header> | |||
</li> | |||
</ul> | |||
</div> |
@@ -0,0 +1,173 @@ | |||
.container { | |||
display: flex; | |||
width: 95%; | |||
margin-left: auto; | |||
align-items: stretch; | |||
height: 100%; | |||
.item-details { | |||
width: 65%; | |||
margin-right: auto; | |||
} | |||
} | |||
.widget-heading-holder { | |||
width: 100%; | |||
} | |||
.tabs-holder { | |||
display: flex; | |||
width: auto; | |||
border-radius: 20px; | |||
overflow: hidden; | |||
background-color: white; | |||
width: 150px; | |||
position: relative; | |||
&.left { | |||
button { | |||
&:first-child { | |||
color: white; | |||
} | |||
} | |||
} | |||
&.right { | |||
button { | |||
&:last-child { | |||
color: white; | |||
} | |||
} | |||
&::before { | |||
transform: translateX(100%); | |||
} | |||
} | |||
&::before { | |||
content: ''; | |||
position: absolute; | |||
background-color: var(--brand-blue); | |||
border-radius: 20px; | |||
width: 50%; | |||
height: 100%; | |||
transition: transform 0.5s; | |||
} | |||
button { | |||
position: relative; | |||
border-radius: 20px; | |||
border: 0; | |||
font-size: 14px; | |||
height: 35px; | |||
width: 50%; | |||
background-color: transparent; | |||
color: var(--brand-blue); | |||
font-weight: 500; | |||
transition: color 0.3s; | |||
} | |||
} | |||
table { | |||
width: 100%; | |||
margin: 30px 0; | |||
text-align: left; | |||
th { | |||
color: var(--grey); | |||
font-size: 14px; | |||
font-weight: 500; | |||
padding: 10px 0; | |||
letter-spacing: 0.5px; | |||
} | |||
td { | |||
border-top: 1px solid rgba(#cecece, 0.5); | |||
padding: 10px 0; | |||
color: var(--dark-grey); | |||
font-size: 14px; | |||
font-weight: 500; | |||
letter-spacing: 1px; | |||
line-height: 2; | |||
vertical-align: top; | |||
width: calc(100% / 5); | |||
&:nth-child(3) { | |||
padding-left: 20px; | |||
} | |||
} | |||
} | |||
.subscribed-offers { | |||
width: 30%; | |||
background-color: white; | |||
padding: 30px 30px; | |||
list-style: none; | |||
height: calc(100vh - 70px); | |||
overflow: auto; | |||
&:hover { | |||
&::-webkit-scrollbar { | |||
display: block; | |||
} | |||
} | |||
&::-webkit-scrollbar { | |||
width: 8px; | |||
display: none; | |||
} | |||
/* Track */ | |||
&::-webkit-scrollbar-track { | |||
background-color: white; | |||
} | |||
/* Handle */ | |||
&::-webkit-scrollbar-thumb { | |||
background-color: rgba(black, 0.2); | |||
} | |||
/* Handle on hover */ | |||
&::-webkit-scrollbar-thumb:hover { | |||
background-color: rgba(black, 0.5); | |||
} | |||
.heading { | |||
display: flex; | |||
width: 100%; | |||
justify-content: space-between; | |||
align-items: center; | |||
margin-bottom: 20px; | |||
header { | |||
font-size: 16px; | |||
letter-spacing: 1px; | |||
font-weight: 500; | |||
} | |||
a { | |||
color: var(--brand-blue); | |||
text-decoration: underline; | |||
font-size: 14px; | |||
} | |||
} | |||
li { | |||
padding: 10px 0; | |||
border-top: 1px solid #cecece; | |||
header { | |||
margin: 10px 0; | |||
font-size: 16px; | |||
font-weight: 500; | |||
color: var(--dark-grey); | |||
} | |||
p { | |||
font-size: 13px; | |||
color: var(--grey); | |||
line-height: 1.5; | |||
letter-spacing: 0.5px; | |||
} | |||
} | |||
} |
@@ -1,15 +1,17 @@ | |||
import { Component, OnInit } from '@angular/core'; | |||
@Component({ | |||
selector: 'app-menu-items', | |||
templateUrl: './menu-items.component.html', | |||
styleUrls: ['./menu-items.component.scss'] | |||
selector: 'app-menu-items', | |||
templateUrl: './menu-items.component.html', | |||
styleUrls: ['./menu-items.component.scss'] | |||
}) | |||
export class MenuItemsComponent implements OnInit { | |||
selectedTab: string = 'items'; | |||
productAvailable: boolean = false; | |||
constructor() { } | |||
constructor() { } | |||
ngOnInit() { | |||
} | |||
ngOnInit() { | |||
} | |||
} |
@@ -43,5 +43,6 @@ | |||
<section class="widgets"> | |||
<app-dashboard *ngIf="selected_nav === 'dashboard'"></app-dashboard> | |||
<app-orders *ngIf="selected_nav === 'orders'"></app-orders> | |||
<app-menu-items *ngIf="selected_nav === 'items'"></app-menu-items> | |||
</section> | |||
</div> |
@@ -6,7 +6,7 @@ import { Component, OnInit } from '@angular/core'; | |||
styleUrls: ['./widgets-holder.component.scss'] | |||
}) | |||
export class WidgetsHolderComponent implements OnInit { | |||
selected_nav: string = 'orders'; | |||
selected_nav: string = 'items'; | |||
constructor() { } | |||
@@ -127,3 +127,34 @@ button { | |||
} | |||
} | |||
} | |||
.toggle { | |||
position: relative; | |||
border-radius: 20px; | |||
background-color: #cecece; | |||
width: 50px; | |||
height: 20px; | |||
display: flex; | |||
align-items: center; | |||
margin: 0 auto; | |||
transition: background-color 0.4s; | |||
&.on { | |||
background-color: #8cc63f; | |||
.knob { | |||
transform: translateX(calc(50px - 18px)); | |||
} | |||
} | |||
.knob { | |||
width: 16px; | |||
height: 16px; | |||
border-radius: 50%; | |||
background-color: white; | |||
position: relative; | |||
transition: transform 0.4s; | |||
transform: translateX(2px); | |||
} | |||
} |