@@ -47,6 +47,55 @@ | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
</section> | |||||
</section> | |||||
<section class="popup" [ngClass]="{'active' : showAddItemModal }"> | |||||
<div class="popup-box"> | |||||
<header> Add Item </header> | |||||
<ul class="input-list"> | |||||
<li *ngIf="newItem.image_url"> | |||||
<img [src]="newItem.image_url"> | |||||
</li> | |||||
<li> | |||||
<label> Image URL </label> | |||||
<input type="text" [(ngModel)]="newItem.image_url"> | |||||
</li> | |||||
<li> | |||||
<label> Item Name </label> | |||||
<input type="text" [(ngModel)]="newItem.menu_item_name"> | |||||
</li> | |||||
<li> | |||||
<label> Is Vegetarian? </label> | |||||
<div class="toggle" [ngClass]="{'on' : newItem.is_vegetarian }" | |||||
(click)="newItem.is_vegetarian = !newItem.is_vegetarian"> | |||||
<div class="knob"></div> | |||||
</div> | |||||
</li> | |||||
<li> | |||||
<label> Price in INR </label> | |||||
<input type="number" [(ngModel)]="newItem.item_price"> | |||||
</li> | |||||
<li> | |||||
<label> Discount in INR </label> | |||||
<input type="number" [(ngModel)]="newItem.item_discount"> | |||||
</li> | |||||
<li> | |||||
<label> Waiting Time (In Minutes) </label> | |||||
<input type="number" [(ngModel)]="newItem.wait_duration"> | |||||
</li> | |||||
</ul> | |||||
<div class="action-buttons"> | |||||
<button class="rect-button" (click)="addNewItem()"> Submit </button> | |||||
<button class="rect-button" (click)="showAddItemModal = false"> Cancel </button> | |||||
</div> | |||||
</div> | |||||
</section> | |||||
<button class="add-item-button active" (click)="showAddItemModal = true"> | |||||
<i class="icon ion-md-add"></i> | |||||
</button> | |||||
</div> | </div> |
@@ -173,6 +173,10 @@ | |||||
&:nth-child(1) { | &:nth-child(1) { | ||||
padding-left: 10px; | padding-left: 10px; | ||||
} | } | ||||
&:nth-child(7) { | |||||
padding-left: 10px; | |||||
} | |||||
} | } | ||||
} | } | ||||
.subscribed-offers { | .subscribed-offers { | ||||
@@ -413,3 +417,94 @@ | |||||
} | } | ||||
} | } | ||||
} | } | ||||
.add-item-button { | |||||
position: fixed; | |||||
right: 50px; | |||||
bottom: 80px; | |||||
width: 50px; | |||||
height: 50px; | |||||
border-radius: 50%; | |||||
background-color: var(--brand-blue); | |||||
color: white; | |||||
border: 0px; | |||||
font-size: 20px; | |||||
transform: scale(0); | |||||
transition: transform 0.3s; | |||||
&.active { | |||||
transform: scale(1); | |||||
animation: ripple-effect 1s linear; | |||||
animation-iteration-count: 3; | |||||
} | |||||
} | |||||
@keyframes ripple-effect { | |||||
0% { | |||||
box-shadow: 0 0 0 10px rgba(black, 0.3); | |||||
} | |||||
30% { | |||||
box-shadow: 0 0 0 20px rgba(black, 0.2); | |||||
} | |||||
60% { | |||||
box-shadow: 0 0 0 30px rgba(black, 0.1); | |||||
} | |||||
100% { | |||||
box-shadow: 0 0 0 50px rgba(black, 0); | |||||
} | |||||
} | |||||
.popup-box { | |||||
width: 400px; | |||||
padding: 15px; | |||||
.input-list { | |||||
list-style: none; | |||||
padding: 0; | |||||
margin: 10px 0; | |||||
} | |||||
li { | |||||
text-align: left; | |||||
margin: 20px 0; | |||||
position: relative; | |||||
label { | |||||
display: block; | |||||
font-size: 14px; | |||||
color: dimgrey; | |||||
font-weight: 500; | |||||
} | |||||
img { | |||||
width: 100px; | |||||
height: 100px; | |||||
border-radius: 10px; | |||||
box-shadow: 0px 0px 5px var(--grey); | |||||
margin: 0 auto; | |||||
display: block; | |||||
} | |||||
input { | |||||
width: 100%; | |||||
display: block; | |||||
height: 40px; | |||||
border-radius: 5px; | |||||
border: 2px solid var(--grey); | |||||
margin-top: 10px; | |||||
padding: 0 10px; | |||||
font-size: 16px; | |||||
&:focus { | |||||
border-color: var(--brand-blue); | |||||
} | |||||
} | |||||
.toggle { | |||||
margin: 0; | |||||
margin-top: 10px; | |||||
cursor: pointer; | |||||
} | |||||
} | |||||
} |
@@ -13,6 +13,32 @@ export class MenuItemsComponent implements OnInit { | |||||
searchTerm: string = ''; | searchTerm: string = ''; | ||||
menuItems: any = []; | menuItems: any = []; | ||||
showAddItemModal: boolean = true; | |||||
newItem: { | |||||
image_url: string, | |||||
is_available: boolean, | |||||
is_vegetarian: boolean, | |||||
item_categories: Array<any>, | |||||
item_discount: number, | |||||
item_price: number, | |||||
menu_item_name: string, | |||||
rating: number, | |||||
soft_delete: boolean, | |||||
wait_duration: number, | |||||
} = { | |||||
image_url: '', | |||||
is_available: false, | |||||
is_vegetarian: true, | |||||
item_categories: [], | |||||
item_discount: null, | |||||
item_price: null, | |||||
menu_item_name: '', | |||||
rating: 3, | |||||
soft_delete: false, | |||||
wait_duration: 0 | |||||
}; | |||||
constructor( | constructor( | ||||
private itemService: ItemService | private itemService: ItemService | ||||
) { } | ) { } | ||||
@@ -53,4 +79,8 @@ export class MenuItemsComponent implements OnInit { | |||||
}); | }); | ||||
} | } | ||||
addNewItem() { | |||||
console.log(this.newItem); | |||||
} | |||||
} | } |
@@ -108,7 +108,7 @@ button { | |||||
.popup-box { | .popup-box { | ||||
background-color: white; | background-color: white; | ||||
border-radius: 10px; | border-radius: 10px; | ||||
padding: 50px; | |||||
padding: 10px; | |||||
text-align: center; | text-align: center; | ||||
transform: scale(0); | transform: scale(0); | ||||
transition: transform 0.3s; | transition: transform 0.3s; | ||||