| @@ -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; | ||||