{"version":3,"file":"src_app_admin_menu-items_menu-items_module_ts.3d05166da4e6d6b3.js","mappings":"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","sources":["./src/app/admin/menu-items/add/add.component.ts","./src/app/admin/menu-items/add/add.component.html","./src/app/admin/menu-items/categories/categories.component.ts","./src/app/admin/menu-items/categories/categories.component.html","./src/app/admin/menu-items/categories/category-dialog/category-dialog.component.ts","./src/app/admin/menu-items/categories/category-dialog/category-dialog.component.html","./src/app/admin/menu-items/divisions/division-dialog/division-dialog.component.ts","./src/app/admin/menu-items/divisions/division-dialog/division-dialog.component.html","./src/app/admin/menu-items/divisions/divisions.component.ts","./src/app/admin/menu-items/divisions/divisions.component.html","./src/app/admin/menu-items/list/list.component.ts","./src/app/admin/menu-items/list/list.component.html","./src/app/admin/menu-items/menu-items.module.ts","./src/app/admin/menu-items/menu/menu.component.ts","./src/app/admin/menu-items/menu/menu.component.html","./node_modules/ngx-mat-select-search/fesm2020/ngx-mat-select-search.mjs"],"sourcesContent":["import { Component, Inject, OnInit, PLATFORM_ID } from \"@angular/core\";\r\nimport {\r\n  UntypedFormGroup,\r\n  UntypedFormBuilder,\r\n  Validators,\r\n} from \"@angular/forms\";\r\nimport { AppService } from \"src/app/app.service\";\r\nimport { MenuItem } from \"src/app/app.models\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { isPlatformBrowser } from \"@angular/common\";\r\nimport { EncryptDecrypt } from \"src/app/theme/directives/encrypt_decrypt\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport * as moment from \"moment\";\r\n\r\n@Component({\r\n  selector: \"app-add\",\r\n  templateUrl: \"./add.component.html\",\r\n  styleUrls: [\"./add.component.scss\"],\r\n})\r\nexport class AddComponent implements OnInit {\r\n  public form!: UntypedFormGroup;\r\n  private sub: any;\r\n  public id: any;\r\n  public showImage: boolean = false;\r\n\r\n  constructor(\r\n    public appService: AppService,\r\n    public formBuilder: UntypedFormBuilder,\r\n    private activatedRoute: ActivatedRoute,\r\n    private encrypt: EncryptDecrypt,\r\n    public snackBar: MatSnackBar,\r\n    public router: Router,\r\n    @Inject(PLATFORM_ID) private platformId: Object\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.form = this.formBuilder.group({\r\n      Id: 0,\r\n      Name: [\r\n        null,\r\n        Validators.compose([Validators.required, Validators.minLength(4)]),\r\n      ],\r\n      Description: null,\r\n      Price: [null, [Validators.required, Validators.pattern(/^[0-9]\\d*$/)]],\r\n      IsVegetarian: false,\r\n      CategoryId: [null, Validators.required],\r\n      image: null,\r\n    });\r\n    this.getCategoriesList();\r\n\r\n    this.sub = this.activatedRoute.params.subscribe((params) => {\r\n      if (params[\"id\"]) {\r\n        this.id = params[\"id\"];\r\n        this.getMenuItemById();\r\n      } else {\r\n        this.showImage = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.sub.unsubscribe();\r\n  }\r\n  getCategoriesList() {\r\n    this.appService.CategoriesList().subscribe({\r\n      next: (data) => {\r\n        const body = JSON.parse(JSON.stringify(data));\r\n        this.appService.Data.categories = body;\r\n      },\r\n      error: (e) => {},\r\n      complete: () => {},\r\n    });\r\n  }\r\n\r\n  public getMenuItemById() {\r\n    this.appService.getMenuById(this.id).subscribe({\r\n      next: (data) => {\r\n        const body = JSON.parse(JSON.stringify(data));\r\n        console.log(body);\r\n        const item = {\r\n          Id: body.Id,\r\n          Name: body.Name,\r\n          Description: body.Description,\r\n          Price: body.Price,\r\n          IsVegetarian: body.IsVegetarian,\r\n          CategoryId: body.CategoryId,\r\n          image: null,\r\n        };\r\n\r\n        this.form.patchValue(item);\r\n        this.showImage = true;\r\n        console.log(body.Images);\r\n        \r\n        if (body.Images.Medium !== null) {\r\n        if (isPlatformBrowser(this.platformId)) {\r\n          if (this.doesFileExist(body.Images.Medium)) {\r\n           /** this.appService.convertImgToBase64(\r\n              body.Images.Medium,\r\n              (dataUrl: string) => {\r\n                this.showImage = true;\r\n                this.form.controls.image.patchValue(dataUrl.toString());\r\n              }\r\n            );\r\n            */ \r\n            this.form.controls.image.patchValue( body.Images.Medium + \"?\" + moment().format('ddMMYYYYhhmmsstt'));\r\n\r\n          } else {\r\n            this.showImage = true;\r\n            this.form.controls.image.patchValue(null);\r\n\r\n          }\r\n        }\r\n      } else {\r\n        this.showImage = true;\r\n        this.form.controls.image.patchValue(null);\r\n\r\n      }\r\n      },\r\n      error: (e) => {},\r\n      complete: () => {},\r\n    });\r\n  }\r\n  doesFileExist(urlToFile: any) {\r\n    try {\r\n      var xhr = new XMLHttpRequest();\r\n      xhr.open(\"HEAD\", urlToFile, false);\r\n      xhr.send();\r\n      if (xhr.status == 404) {\r\n        return false;\r\n      } else {\r\n        return true;\r\n      }\r\n    } catch (ex) {\r\n      return false;\r\n    }\r\n  }\r\n  public fileChange(files: any) {\r\n    console.log(files);\r\n    if (files.length) {\r\n      this.form.controls.image.patchValue(files[0].content);\r\n    } else {\r\n      this.form.controls.image.patchValue(null);\r\n      console.log(this.id);\r\n      \r\n      if (this.id !== undefined) {\r\n        this.deleteImage(this.id);\r\n      }\r\n    }\r\n  }\r\n\r\n  public onSubmit() {\r\n    console.log(this.form.value);\r\n\r\n    if (this.form.valid) {\r\n      const formdata = this.form.value;\r\n\r\n      let username: string = \"\";\r\n      if (localStorage.getItem(\"TamuApp\")) {\r\n        const TamuApp = JSON.parse(\r\n          this.encrypt.Decrypt(localStorage.getItem(\"TamuApp\"))\r\n        );\r\n        username = TamuApp.Username;\r\n      }\r\n\r\n      const req = {\r\n        Id: this.id,\r\n        CategoryId: formdata.CategoryId,\r\n        Name: formdata.Name,\r\n        Description: formdata.Description,\r\n        Price: formdata.Price,\r\n        IsVegetarian: formdata.IsVegetarian,\r\n        DoneBy: username,\r\n        HasImage: formdata.image != null? true: false\r\n      };\r\n      this.appService.Menus(req).subscribe({\r\n        next: (data) => {\r\n          const response = JSON.parse(JSON.stringify(data));\r\n          if (response.ResponseCode == 1) {\r\n            console.log(response.MenuList);\r\n\r\n            if (formdata.image != null) {\r\n              this.uploadImage(formdata.image, response.MenuList.Id);\r\n            }\r\n\r\n            this.router.navigate([\"admin/menu-items/list\"]);\r\n\r\n            this.snackBar.open(\"Menu saved successfully.\", \"×\", {\r\n              panelClass: \"success\",\r\n              verticalPosition: \"top\",\r\n              duration: 6000,\r\n            });\r\n          } else {\r\n            this.snackBar.open(response.ResponseDesc, \"×\", {\r\n              panelClass: \"error\",\r\n              verticalPosition: \"top\",\r\n              duration: 6000,\r\n            });\r\n          }\r\n        },\r\n        error: (e) => {},\r\n        complete: () => {},\r\n      });\r\n    }\r\n  }\r\n\r\n  public uploadImage(image: null, Id: any) {\r\n    const req = {\r\n      Body: image,\r\n      MenuId: Id,\r\n    };\r\n\r\n    this.appService.UploadMenuImage(req).subscribe({\r\n      next: (data) => {\r\n        const response = JSON.parse(JSON.stringify(data));\r\n        if (response.ResponseCode == 1) {\r\n        }\r\n      },\r\n      error: (e) => {},\r\n      complete: () => {},\r\n    });\r\n  }\r\n  public deleteImage(Id: any) {\r\n    let username: string = \"\";\r\n    if (localStorage.getItem(\"TamuApp\")) {\r\n      const TamuApp = JSON.parse(\r\n        this.encrypt.Decrypt(localStorage.getItem(\"TamuApp\"))\r\n      );\r\n      username = TamuApp.Username;\r\n    }\r\n    const req = {\r\n      MenuId: Id,\r\n      DoneBy:username,\r\n    };\r\n\r\n    this.appService.DeleteMenuImage(req).subscribe({\r\n      next: (data) => {\r\n        const response = JSON.parse(JSON.stringify(data));\r\n        if (response.ResponseCode == 1) {\r\n        }\r\n      },\r\n      error: (e) => {},\r\n      complete: () => {},\r\n    });\r\n  }\r\n}\r\n","<div class=\"p-2\">\r\n    <mat-card>  \r\n        <mat-card-content>\r\n            <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\" fxLayout=\"row wrap\">\r\n                <div fxFlex=\"40\" class=\"px-2\" *ngIf=\"showImage\">  \r\n                    <app-image-upload [base64]=\"form.controls.image.value\"\r\n                                    [fileSize]=\"400\"    \r\n                                    [acceptTypes]=\"'image/png, image/jpeg, image/jpg'\"\r\n                                    (onFileChange)=\"fileChange($event)\">\r\n                    </app-image-upload>  \r\n                </div>\r\n                <div fxFlex=\"60\" class=\"px-2\">\r\n                    <div fxLayout=\"row wrap\">\r\n                        <div fxFlex=\"100\" fxFlex.gt-sm=\"50\" class=\"px-3\">\r\n                            <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n                                <mat-label>Name</mat-label>\r\n                                <input matInput formControlName=\"Name\" required>\r\n                                <mat-error *ngIf=\"form.controls.Name.errors?.required\">Name is required</mat-error>\r\n                                <mat-error *ngIf=\"form.controls.Name.hasError('minlength')\">Name isn't long enough, minimum of 4 characters</mat-error>\r\n                            </mat-form-field>\r\n                        </div> \r\n      \r\n                        <div fxFlex=\"100\" fxFlex.gt-sm=\"50\" class=\"px-3\">\r\n                            <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n                                <mat-label>Category</mat-label>\r\n                                <mat-select formControlName=\"CategoryId\" required>\r\n                                    <mat-option *ngFor=\"let cat of appService.Data.categories\" [value]=\"cat.id\">\r\n                                        <span>{{cat.name}}</span>\r\n                                    </mat-option>\r\n                                </mat-select>\r\n                                <mat-error *ngIf=\"form.controls.CategoryId.errors?.required\">Category is required</mat-error>\r\n                            </mat-form-field>\r\n                        </div> \r\n                        <div fxFlex=\"100\" fxFlex.gt-sm=\"50\" class=\"px-3\">\r\n                            <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n                                <mat-label>Price</mat-label>\r\n                                <input matInput formControlName=\"Price\" required>\r\n                                <mat-error *ngIf=\"form.controls.Price.errors?.required\">Price is required</mat-error>\r\n                                <mat-error *ngIf=\"form.controls.Price.hasError('pattern')\">Invalid price</mat-error>\r\n                            </mat-form-field>\r\n                        </div> \r\n                     \r\n                      \r\n                        <div fxFlex=\"100\" fxFlex.gt-sm=\"33.3\" class=\"p-3\">\r\n                            <mat-checkbox matCheckbox formControlName=\"IsVegetarian\" color=\"primary\">Is Vegetarian</mat-checkbox>\r\n                        </div>  \r\n                        <div fxFlex=\"100\" class=\"px-3\">\r\n                            <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n                                <mat-label>Description</mat-label> \r\n                                <textarea matInput formControlName=\"Description\" rows=\"7\"></textarea> \r\n                            </mat-form-field> \r\n                        </div>   \r\n                        <div fxFlex=\"100\" class=\"mt-2 text-center w-100\">\r\n                            <button mat-raised-button color=\"primary\" type=\"submit\" class=\"uppercase\">Submit</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </form>\r\n        </mat-card-content> \r\n    </mat-card>\r\n</div>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator'; \r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table'; \r\nimport { Category } from 'src/app/app.models';\r\nimport { AppService } from 'src/app/app.service';\r\nimport { EncryptDecrypt } from 'src/app/theme/directives/encrypt_decrypt';\r\nimport { CategoryDialogComponent } from './category-dialog/category-dialog.component';\r\n\r\n@Component({\r\n  selector: 'app-categories',\r\n  templateUrl: './categories.component.html',\r\n  styleUrls: ['./categories.component.scss']\r\n})\r\nexport class CategoriesComponent implements OnInit {\r\n \r\n  dataSource: any=[];\r\n\r\n\r\n  constructor(public appService:AppService, public snackBar: MatSnackBar,\r\n    private encrypt: EncryptDecrypt,) { }\r\n\r\n  ngOnInit(): void {\r\n    this.getCategoriesList();\r\n  }\r\n getCategoriesList() {\r\n  this.appService.CategoriesList()\r\n  .subscribe({\r\n    next: (data) => {\r\n      const body = JSON.parse(JSON.stringify(data));\r\n      this.dataSource = body;\r\n\r\n    },\r\n    error: (e) => {\r\n\r\n    },\r\n    complete: () => {\r\n\r\n    }\r\n  })\r\n }\r\n\r\n  public remove(data:any,e:any) {\r\n    \r\n    \r\n    let username: string=\"\";\r\n    if (localStorage.getItem('TamuApp')) {\r\n\r\n      const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\r\n      username=TamuApp.Username;\r\n    }\r\n\r\n    const req={\r\n      Id:data.data.id,\r\n      DoneBy: username\r\n    }\r\n    \r\n    const message = this.appService.getTranslateValue('MESSAGE.SURE_DELETE');\r\n    let dialogRef = this.appService.openConfirmDialog('', message!);\r\n    dialogRef.afterClosed().subscribe(dialogResult => {\r\n      if(dialogResult){ \r\n        \r\n          this.appService.DeleteCategory(req)\r\n          .subscribe({\r\n            next: (data) => {\r\n              if (data === \"\") {\r\n\r\n                this.snackBar.open('Menu category deleted successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\r\n                 this.getCategoriesList();\r\n              } else {\r\n  \r\n              if (data != null)\r\n                this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n              }\r\n        \r\n            },\r\n            error: (e) => {\r\n              this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n\r\n            },\r\n            complete: () => {\r\n        \r\n            }\r\n          })\r\n\r\n        }\r\n      });  \r\n\r\n          \r\n  }  \r\n  public edit(data:any,e:any) {\r\n\r\n  this.openCategoryDialog(data.data);\r\n  \r\n  }\r\n  public openCategoryDialog(category:Category | null){\r\n    const dialogRef = this.appService.openDialog(CategoryDialogComponent, category, 'theme-dialog');\r\n    dialogRef.afterClosed().subscribe(cat => {  \r\n       let username: string=\"\";\r\n      if (localStorage.getItem('TamuApp')) {\r\n\r\n        const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\r\n        username=TamuApp.Username;\r\n      }\r\n\r\n      const req={\r\n        Id:cat.id,\r\n        Category: cat.name,\r\n        Status: cat.status,\r\n        AllowDiscount: cat.AllowDiscount,\r\n        DoneBy: username\r\n      }\r\n      \r\n            this.appService.MenuCategories(req)\r\n            .subscribe({\r\n              next: (data) => {\r\n                if (data === \"\") {\r\n\r\n                  this.snackBar.open('Menu category saved successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\r\n                   this.getCategoriesList();\r\n                } else {\r\n    \r\n                if (data != null)\r\n                  this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n                }\r\n          \r\n              },\r\n              error: (e) => {\r\n                this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n\r\n              },\r\n              complete: () => {\r\n          \r\n              }\r\n            })\r\n            \r\n\r\n        \r\n      \r\n      });  \r\n  }\r\n\r\n}\r\n","<mat-card class=\"m-2 p-0\">\r\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" class=\"w-100 p-2\">\r\n        <div></div>\r\n        <button mat-raised-button color=\"primary\" (click)=\"openCategoryDialog(null)\">\r\n            <mat-icon>add</mat-icon>\r\n            Add New Category\r\n        </button>\r\n    </div>\r\n    <mat-divider></mat-divider>\r\n\r\n    <dx-data-grid\r\n    id=\"gridContainer\"\r\n    [dataSource]=\"dataSource\"\r\n    [rowAlternationEnabled]=\"true\"\r\n    [showBorders]=\"true\"\r\n    [showRowLines]=\"true\"\r\n    [columnHidingEnabled]=\"true\"\r\n  >\r\n  <dxo-paging [pageSize]=\"10\"></dxo-paging>\r\n  <dxo-scrolling columnRenderingMode=\"virtual\"></dxo-scrolling>\r\n  <dxi-column dataField=\"id\" caption=\"Id\" width=\"100\"></dxi-column>\r\n  <dxi-column dataField=\"name\" caption=\"Category\"></dxi-column>\r\n  <dxi-column dataField=\"status\" caption=\"Status\" width=\"100\"></dxi-column>\r\n  <dxi-column dataField=\"AllowDiscount\" caption=\"Allow Discount\" width=\"100\"></dxi-column>\r\n  <dxi-column dataField=\"createdBy\" caption=\"DoneBy\" width=\"200\"></dxi-column>\r\n  <dxi-column dataField=\"\" caption=\"\" [width]=\"70\" [allowFiltering]=\"false\" [allowSorting]=\"false\" cellTemplate=\"actions\" [fixed]=\"true\" fixedPosition=\"right\"></dxi-column>\r\n  <div *dxTemplate=\"let data of 'actions'\">\r\n    <button class=\"gridbutton\" (click)=\"edit(data,$event)\">\r\n        <mat-icon>edit</mat-icon>\r\n    </button>\r\n    <button class=\"gridbutton\" (click)=\"remove(data,$event)\">\r\n        <mat-icon color=\"warn\">delete</mat-icon>\r\n    </button>\r\n  </div>\r\n  </dx-data-grid>\r\n\r\n\r\n   \r\n</mat-card>","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Category } from 'src/app/app.models';\r\n\r\n@Component({\r\n  selector: 'app-category-dialog',\r\n  templateUrl: './category-dialog.component.html',\r\n  styleUrls: ['./category-dialog.component.scss']\r\n})\r\nexport class CategoryDialogComponent implements OnInit {\r\n  public form!: UntypedFormGroup;\r\n  constructor(public dialogRef: MatDialogRef<CategoryDialogComponent>,\r\n              @Inject(MAT_DIALOG_DATA) public category: Category,\r\n              public fb: UntypedFormBuilder) { }\r\n\r\n  ngOnInit(): void { \r\n    this.form = this.fb.group({\r\n      id: 0,\r\n      name: [null, Validators.required],\r\n      status: false ,\r\n      AllowDiscount: false \r\n    }); \r\n\r\n    if(this.category){\r\n      this.form.patchValue(this.category); \r\n    };\r\n  }\r\n\r\n  public onSubmit(){ \r\n    if(this.form.valid){\r\n      this.dialogRef.close(this.form.value);\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"header bg-primary\">\r\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n        <h2 class=\"fw-500 secondary-font\">{{(category) ? 'Edit' : 'Add'}} Category</h2>\r\n        <app-dialog-header-controls [dialogRef]=\"dialogRef\"></app-dialog-header-controls>\r\n    </div>\r\n</div>\r\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\" class=\"pt-3\">\r\n    <div mat-dialog-content>\r\n        <div fxLayout=\"row wrap\">\r\n            <div fxFlex=\"100\">\r\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n                    <mat-label>Name</mat-label>\r\n                    <input matInput formControlName=\"name\" required>\r\n                    <mat-error *ngIf=\"form.controls.name.errors?.required\">Name is required</mat-error>\r\n                </mat-form-field>\r\n            </div>\r\n\r\n            <div fxLayout=\"row wrap\" class=\"mt-2\">\r\n\r\n                <div fxFlex=\"100\" fxFlex.gt-md=\"50\" class=\"px-3\"> \r\n                    <mat-checkbox matCheckbox formControlName=\"status\" color=\"primary\">Status</mat-checkbox>\r\n\r\n                </div>\r\n                <div fxFlex=\"100\" fxFlex.gt-md=\"50\" class=\"px-3\">\r\n                    <mat-checkbox matCheckbox formControlName=\"AllowDiscount\" color=\"primary\">Allow Discount</mat-checkbox>\r\n                </div>\r\n            </div>\r\n\r\n\r\n\r\n        </div>\r\n    </div>\r\n    <div mat-dialog-actions>\r\n        <div fxLayout=\"row\" fxLayoutAlign=\"end end\" class=\"w-100\">\r\n            <button mat-raised-button color=\"warn\" type=\"button\" mat-dialog-close>Close</button>\r\n            <button mat-raised-button color=\"primary\" type=\"submit\"  >Save</button>\r\n        </div>\r\n    </div>\r\n</form>","import { Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Division } from 'src/app/app.models';\n\n@Component({\n  selector: 'app-division-dialog',\n  templateUrl: './division-dialog.component.html',\n  styleUrls: ['./division-dialog.component.scss']\n})\nexport class DivisionDialogComponent implements OnInit {\n  public form!: UntypedFormGroup;\n  constructor(public dialogRef: MatDialogRef<DivisionDialogComponent>,\n              @Inject(MAT_DIALOG_DATA) public division: Division,\n              public fb: UntypedFormBuilder) { }\n\n  ngOnInit(): void { \n    this.form = this.fb.group({\n      Id: 0,\n      Division: [null, Validators.required],\n      Status: false \n    }); \n\n    if(this.division){\n      this.form.patchValue(this.division); \n    };\n  }\n\n  public onSubmit(){ \n    if(this.form.valid){\n      this.dialogRef.close(this.form.value);\n    }\n  }\n\n}\n","<div class=\"header bg-primary\">\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n        <h2 class=\"fw-500 secondary-font\">{{(division) ? 'Edit' : 'Add'}} Division</h2>\n        <app-dialog-header-controls [dialogRef]=\"dialogRef\"></app-dialog-header-controls> \n    </div>   \n</div>  \n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" autocomplete=\"off\" class=\"pt-3\">\n    <div mat-dialog-content>\n        <div fxLayout=\"row wrap\">\n            <div fxFlex=\"100\">\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\n                    <mat-label>Division</mat-label>\n                    <input matInput formControlName=\"Division\" required>\n                    <mat-error *ngIf=\"form.controls.Division.errors?.required\">Division is required</mat-error> \n                </mat-form-field>\n            </div> \n            <div fxFlex=\"100\">\n               \n                    <mat-checkbox matCheckbox formControlName=\"Status\" color=\"primary\">Status</mat-checkbox>\n                 \n            </div>   \n        </div>\n    </div>\n    <div mat-dialog-actions>\n        <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"w-100\"> \n            <button mat-raised-button color=\"warn\" type=\"button\" mat-dialog-close>Close</button>\n            <button mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n        </div> \n    </div>\n</form> \n ","import { Component, OnInit } from '@angular/core';\nimport { MatPaginator } from '@angular/material/paginator'; \nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table'; \nimport {Division } from 'src/app/app.models';\nimport { AppService } from 'src/app/app.service';\nimport { EncryptDecrypt } from 'src/app/theme/directives/encrypt_decrypt';\nimport { DivisionDialogComponent } from './division-dialog/division-dialog.component';\n\n@Component({\n  selector: 'app-divisions',\n  templateUrl: './divisions.component.html',\n  styleUrls: ['./divisions.component.scss']\n})\nexport class DivisionsComponent implements OnInit {\n  dataSource: any=[];\n\n\n  constructor(public appService:AppService, public snackBar: MatSnackBar,\n    private encrypt: EncryptDecrypt,) { }\n\n  ngOnInit(): void {\n    this.getDivisionsList();\n  }\n  getDivisionsList() {\n  this.appService.DivisionsList()\n  .subscribe({\n    next: (data) => {\n      const body = JSON.parse(JSON.stringify(data));\n      this.dataSource = body;\n\n    },\n    error: (e) => {\n\n    },\n    complete: () => {\n\n    }\n  })\n }\n\n  public remove(data:any,e:any) {\n    \n    \n    let username: string=\"\";\n    if (localStorage.getItem('TamuApp')) {\n\n      const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\n      username=TamuApp.Username;\n    }\n\n    const req={\n      Id:data.data.Id,\n      DoneBy: username\n    }\n    \n    const message = this.appService.getTranslateValue('MESSAGE.SURE_DELETE');\n    let dialogRef = this.appService.openConfirmDialog('', message!);\n    dialogRef.afterClosed().subscribe(dialogResult => {\n      if(dialogResult){ \n        \n          this.appService.DeleteDivision(req)\n          .subscribe({\n            next: (data) => {\n              if (data === \"\") {\n\n                this.snackBar.open('Menu division deleted successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\n                 this.getDivisionsList();\n              } else {\n  \n              if (data != null)\n                this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n              }\n        \n            },\n            error: (e) => {\n              this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n\n            },\n            complete: () => {\n        \n            }\n          })\n\n        }\n      });  \n\n          \n  }  \n  public edit(data:any,e:any) {\n\n  this.openDivisionDialog(data.data);\n  \n  }\n  public openDivisionDialog(division:Division | null){\n    const dialogRef = this.appService.openDialog(DivisionDialogComponent, division, 'theme-dialog');\n    dialogRef.afterClosed().subscribe(data => {  \n       let username: string=\"\";\n      if (localStorage.getItem('TamuApp')) {\n\n        const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\n        username=TamuApp.Username;\n      }\n\n      const req={\n        Id:data.Id,\n        Division: data.Division,\n        Status: data.Status,\n        DoneBy: username\n      }\n      \n            this.appService.MenuDivisions(req)\n            .subscribe({\n              next: (data) => {\n                if (data === \"\") {\n\n                  this.snackBar.open('Menu division saved successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\n                   this.getDivisionsList();\n                } else {\n    \n                if (data != null)\n                  this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n                }\n          \n              },\n              error: (e) => {\n                this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n\n              },\n              complete: () => {\n          \n              }\n            })\n            \n\n        \n      \n      });  \n  }\n\n}\n","<mat-card class=\"m-2 p-0\">\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" class=\"w-100 p-2\">\n        <div></div>\n        <button mat-raised-button color=\"primary\" (click)=\"openDivisionDialog(null)\">\n            <mat-icon>add</mat-icon>\n            Add New Division\n        </button>\n    </div>\n    <mat-divider></mat-divider>\n\n    <dx-data-grid\n    id=\"gridContainer\"\n    [dataSource]=\"dataSource\"\n \n    [rowAlternationEnabled]=\"true\"\n    [showBorders]=\"true\"\n    [showRowLines]=\"true\"\n    [columnHidingEnabled]=\"true\"\n  >\n  <dxo-paging [pageSize]=\"10\"></dxo-paging>\n  <dxo-scrolling columnRenderingMode=\"virtual\"></dxo-scrolling>\n  <dxi-column dataField=\"Id\" caption=\"Id\" width=\"100\"></dxi-column>\n  <dxi-column dataField=\"Division\" caption=\"Division\"></dxi-column>\n  <dxi-column dataField=\"Status\" caption=\"Status\" width=\"100\"></dxi-column>\n  <dxi-column dataField=\"CreatedBy\" caption=\"DoneBy\" width=\"200\"></dxi-column>\n  <dxi-column dataField=\"\" caption=\"\" [width]=\"70\" [allowFiltering]=\"false\" [allowSorting]=\"false\" cellTemplate=\"actions\" [fixed]=\"true\" fixedPosition=\"right\"></dxi-column>\n  <div *dxTemplate=\"let data of 'actions'\">\n    <button class=\"gridbutton\" (click)=\"edit(data,$event)\">\n        <mat-icon>edit</mat-icon>\n    </button>\n    <button class=\"gridbutton\" (click)=\"remove(data,$event)\">\n        <mat-icon color=\"warn\">delete</mat-icon>\n    </button>\n  </div>\n  </dx-data-grid>\n\n\n   \n</mat-card>","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { exportDataGrid } from 'devextreme/excel_exporter';\r\nimport { Workbook } from 'exceljs';\r\nimport { MenuItem } from 'src/app/app.models';\r\nimport { AppService } from 'src/app/app.service';\r\nimport { EncryptDecrypt } from 'src/app/theme/directives/encrypt_decrypt';\r\nimport { saveAs } from 'file-saver';\r\n@Component({\r\n  selector: 'app-list',\r\n  templateUrl: './list.component.html',\r\n  styleUrls: ['./list.component.scss']\r\n})\r\nexport class ListComponent implements OnInit {\r\n\r\n  dataSource: any = [];\r\n\r\n  public loading = false;\r\n\r\n  constructor(public appService: AppService,\r\n    public router: Router,\r\n    public snackBar: MatSnackBar,\r\n    private encrypt: EncryptDecrypt,\r\n    private route: ActivatedRoute,) { }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.getMenuList();\r\n\r\n  }\r\n  getMenuList() {\r\n    this.loading = true;\r\n    this.appService.MenuList()\r\n      .subscribe({\r\n        next: (data) => {\r\n          const body = JSON.parse(JSON.stringify(data));\r\n          this.dataSource = body;\r\n          this.loading = false;\r\n\r\n        },\r\n        error: (e) => {\r\n          this.loading = false;\r\n        },\r\n        complete: () => {\r\n          this.loading = false;\r\n        }\r\n      })\r\n  }\r\n\r\n  onExporting(e) {\r\n    const workbook = new Workbook();\r\n    const worksheet = workbook.addWorksheet('Employees');\r\n\r\n    exportDataGrid({\r\n      component: e.component,\r\n      worksheet,\r\n      autoFilterEnabled: true,\r\n    }).then(() => {\r\n      workbook.xlsx.writeBuffer().then((buffer) => {\r\n        saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'Report.xlsx');\r\n      });\r\n    });\r\n    e.cancel = true;\r\n  }\r\n  public edit(data: any, e: any) {\r\n    console.log(data.data);\r\n    this.router.navigate(['admin/menu-items/add/', { id: data.data.Id }]);\r\n  }\r\n\r\n\r\n\r\n  public remove(data: any, e: any) {\r\n\r\n    let username: string = \"\";\r\n    if (localStorage.getItem('TamuApp')) {\r\n\r\n      const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\r\n      username = TamuApp.Username;\r\n    }\r\n\r\n    const req = {\r\n      Id: data.data.Id,\r\n      DoneBy: username\r\n    }\r\n\r\n\r\n    const message = this.appService.getTranslateValue('MESSAGE.SURE_DELETE');\r\n    let dialogRef = this.appService.openConfirmDialog('', message!);\r\n    dialogRef.afterClosed().subscribe(dialogResult => {\r\n      if (dialogResult) {\r\n\r\n        this.appService.DeleteMenu(req)\r\n          .subscribe({\r\n            next: (data) => {\r\n              if (data === \"\") {\r\n\r\n                this.snackBar.open('Menu item deleted successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\r\n                this.getMenuList();\r\n              } else {\r\n\r\n                if (data != null)\r\n                  this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n              }\r\n\r\n            },\r\n            error: (e) => {\r\n              this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\r\n\r\n            },\r\n            complete: () => {\r\n\r\n            }\r\n          })\r\n\r\n\r\n      }\r\n    });\r\n\r\n  }\r\n\r\n\r\n}\r\n","<mat-card class=\"m-2 p-0\">\r\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" class=\"w-100 p-2\">\r\n        <div></div>\r\n        <a mat-raised-button color=\"primary\" routerLink=\"/admin/menu-items/add\">\r\n            <mat-icon>add</mat-icon>\r\n            Add New Menu Item\r\n        </a>\r\n    </div>\r\n    <mat-divider></mat-divider>\r\n\r\n    <dx-data-grid id=\"gridContainer\" [dataSource]=\"dataSource\" [rowAlternationEnabled]=\"true\" [showBorders]=\"true\"\r\n        [showRowLines]=\"true\" [columnHidingEnabled]=\"true\" width=\"100%\" (onExporting)=\"onExporting($event)\">\r\n        <dxo-paging [pageSize]=\"5\"></dxo-paging>\r\n        <dxo-search-panel [visible]=\"true\" [width]=\"300\" placeholder=\"Search...\"></dxo-search-panel>\r\n        <dxo-pager [visible]=\"true\" [allowedPageSizes]=\"[5, 10,20,50, 'all']\" [displayMode]=\"'full'\"\r\n            [showPageSizeSelector]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\r\n        <dxo-scrolling columnRenderingMode=\"virtual\"></dxo-scrolling>\r\n        <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n        <dxo-export [enabled]=\"true\" [formats]=\"['Excel']\" [allowExportSelectedData]=\"true\"></dxo-export>\r\n        <dxi-column dataField=\"Id\" caption=\"Id\" width=\"70\"></dxi-column>\r\n        <dxi-column dataField=\"CategoryName\" caption=\"Category\" width=\"150\"></dxi-column>\r\n        <dxi-column dataField=\"Name\" caption=\"Name\" width=\"300\"></dxi-column>\r\n        <dxi-column dataField=\"Description\" caption=\"Description\"></dxi-column>\r\n        <dxi-column dataField=\"Price\" caption=\"Price\" width=\"100\"></dxi-column>\r\n        <dxi-column dataField=\"IsVegetarian\" caption=\"IsVegetarian\" width=\"100\"></dxi-column>\r\n        <dxi-column dataField=\"CreatedBy\" caption=\"DoneBy\" width=\"150\"></dxi-column>\r\n        <dxi-column caption=\"\" [width]=\"70\" [allowFiltering]=\"false\" [allowSorting]=\"false\" cellTemplate=\"actions\"\r\n            [fixed]=\"true\" fixedPosition=\"right\"></dxi-column>\r\n        <div *dxTemplate=\"let data of 'actions'\">\r\n            <button class=\"gridbutton\" (click)=\"edit(data,$event)\">\r\n                <mat-icon>edit</mat-icon>\r\n            </button>\r\n            <button class=\"gridbutton\" (click)=\"remove(data,$event)\">\r\n                <mat-icon color=\"warn\">delete</mat-icon>\r\n            </button>\r\n        </div>\r\n    </dx-data-grid>\r\n    <div class=\"overlay\" *ngIf=\"loading\">\r\n        <div class=\"center\">\r\n            <mat-spinner *ngIf=\"loading\"></mat-spinner>\r\n        </div>\r\n\r\n    </div>\r\n</mat-card>","import { DivisionsComponent } from './divisions/divisions.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule, Routes } from '@angular/router'; \r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { CategoriesComponent } from './categories/categories.component'; \r\nimport { ListComponent } from './list/list.component';\r\nimport { AddComponent } from './add/add.component';\r\nimport { CategoryDialogComponent } from './categories/category-dialog/category-dialog.component';\r\nimport { DxDataGridModule } from 'devextreme-angular';\r\nimport { DivisionDialogComponent } from './divisions/division-dialog/division-dialog.component';\r\nimport { MenuComponent } from './menu/menu.component';\r\nimport { MatNativeDateModule, MatRippleModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule  } from '@angular/material/dialog';\r\nimport { PerfectScrollbarConfigInterface, PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';\r\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\r\nimport { AuthGuard } from 'src/app/theme/utils/auth.guard';\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n  wheelPropagation: false,\r\n  suppressScrollX: true               \r\n};\r\nexport const routes: Routes = [ \r\n  { path: '', redirectTo: 'list', pathMatch: 'full'},\r\n  { path: 'categories', component: CategoriesComponent, data: { breadcrumb: 'Categories' },canActivate: [AuthGuard] },\r\n  { path: 'list', component: ListComponent, data: { breadcrumb: 'Menu Items' } ,canActivate: [AuthGuard]},\r\n  { path: 'divisions', component: DivisionsComponent, data: { breadcrumb: 'Divisions' },canActivate: [AuthGuard] },\r\n  { path: 'add', component: AddComponent, data: { breadcrumb: 'Add Menu Item' },canActivate: [AuthGuard] },\r\n  { path: 'add/:id', component: AddComponent, data: { breadcrumb: 'Edit Menu Item' },canActivate: [AuthGuard] }, \r\n  { path: 'menu', component: MenuComponent, data: { breadcrumb: 'Menu Schedules' } ,canActivate: [AuthGuard]}, \r\n];\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CategoriesComponent, \r\n    ListComponent, MenuComponent,\r\n   \r\n    AddComponent, CategoryDialogComponent,DivisionsComponent,DivisionDialogComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule.forChild(routes),\r\n    SharedModule,MatDialogModule,\r\n    DxDataGridModule, MatNativeDateModule,MatRippleModule,MatDatepickerModule,NgxMatSelectSearchModule\r\n  ],\r\n  providers:[\r\n    { provide:  PERFECT_SCROLLBAR_CONFIG, useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG, },\r\n    {provide: MAT_DATE_LOCALE, useValue: 'en-GB'},\r\n    \r\n  ]\r\n})\r\nexport class MenuItemsModule { }\r\n","import { Component, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { FormControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport * as moment from 'moment';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { MenuItem } from 'src/app/app.models';\nimport { AppService } from 'src/app/app.service';\nimport { EncryptDecrypt } from 'src/app/theme/directives/encrypt_decrypt';\n\n@Component({\n  selector: 'app-menu',\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.scss']\n})\nexport class MenuComponent implements OnInit {\n  public today = new Date();\n  public DateFrom = new Date();\n  public DateTo = new Date();\n  dataSource: any = [];\n  public form!: UntypedFormGroup;\n  public id: any;\n  frequency: string = \"Day\";\n  freqcount:number = 1;\n  onedit:boolean = false;\n\n  protected menus: any = this.appService.Data.menuslist;\n  public menuFilterCtrl: FormControl = new FormControl();\n  public filteredmenus: ReplaySubject<any[]> = new ReplaySubject<any[]>(1);\n  protected _onDestroy = new Subject<void>();\n  constructor(public appService: AppService,private renderer: Renderer2,\n    public router: Router,\n    public snackBar: MatSnackBar,\n    private encrypt: EncryptDecrypt,\n    private route: ActivatedRoute,\n    public fb: UntypedFormBuilder) {\n\n\n\n  }\n\n  ngOnInit(): void {\n    this.form = this.fb.group({\n      id: 0,\n      CategoryId: [null, Validators.required],\n      DivisionId: [null, Validators.required],\n      MenuId: [null, Validators.required],\n      date: [null, Validators.required],\n      repeat: [\"0\"],\n      frequencycount: [1, [Validators.min(1), Validators.pattern(/^[0-9]\\d*$/)]],\n      endDate: [null],\n      Sun: [true],\n      Mon: [false],\n      Tue: [false],\n      Wed: [false],\n      Thu: [false],\n      Fri: [false],\n      Sat: [true]\n    });\n\n\n    let wDate = new Date();\n    let dDay = wDate.getDay() > 0 ? wDate.getDay() : 7;\n    let first = wDate.getDate() - dDay + 1;\n    let firstDayWeek = new Date(wDate.setDate(first));\n    let lastDayWeek = new Date(wDate.setDate(firstDayWeek.getDate() + 6));\n\n    const today = moment().toDate().toLocaleString('en-US', { timeZone: this.appService.timeZone });\n    this.DateFrom = new Date(today);\n    this.DateTo = new Date(today);\n\n    this.ListMenuShedules();\n\n    this.getCategoriesList();\n    this.getDivisionList();\n\n\n  }\n  protected filterMenus() {\n    if (!this.appService.Data.menuslist) {\n      return;\n    }\n    // get the search keyword\n    let search = this.menuFilterCtrl.value;\n\n\n    if (!search) {\n      this.filteredmenus.next(this.appService.Data.menuslist.slice());\n      return;\n    } else {\n\n      search = search.toLowerCase();\n    }\n\n    this.filteredmenus.next(\n      this.appService.Data.menuslist.filter((menu: any) => menu.Name.toLowerCase().indexOf(search) > -1)\n    );\n  }\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n  CategorySelected(e: any) {\n    this.getFilteredMenu(e)\n\n\n  }\n  repeatSelected(e: any) {\n    if (e == 0) {\n      this.frequency = \"Day\"\n    }\n    else if (e == 1) {\n      this.frequency = \"Day\"\n    }\n    else if (e == 2) {\n      this.frequency = \"Week\"\n    }\n    else if (e == 3) {\n      this.frequency = \"Bi-Week\"\n    }\n    else if (e == 4) {\n      this.frequency = \"Month\"\n    }\n  }\n  freqValChange(e: any) {\n \n    this.freqcount=e.target.value;\n  }\n  public getFilteredMenu(catId: any) {\n    const req = {\n      CategoryId: catId\n    }\n\n    this.appService.getFilteredMenu(req)\n      .subscribe({\n        next: (data) => {\n\n          const menudata: any = JSON.parse(JSON.stringify(data));\n          this.appService.Data.menuslist = menudata;\n          this.filteredmenus.next(menudata.slice());\n          this.menuFilterCtrl.valueChanges\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(() => {\n              this.filterMenus();\n            });\n\n        },\n        error: (e) => {\n\n\n\n\n        },\n        complete: () => {\n\n        }\n      })\n\n\n  }\n\n  FilterByDate(event: any, value: any) {\n    this.ListMenuShedules();\n  }\n  public ListMenuShedules() {\n    const req = {\n      DateFrom: moment(this.DateFrom).format(\"DD-MMM-YYYY\"),\n      DateTo: moment(this.DateTo).format(\"DD-MMM-YYYY\")\n    }\n    this.appService.ListMenuShedules(req)\n      .subscribe({\n        next: (data) => {\n\n\n          const menudata: any = JSON.parse(JSON.stringify(data));\n          this.dataSource = menudata;\n\n\n        },\n        error: (e) => {\n\n\n\n\n        },\n        complete: () => {\n\n        }\n      })\n\n\n  }\n  getCategoriesList() {\n    this.appService.ShowCategories()\n      .subscribe({\n        next: (data) => {\n          const body = JSON.parse(JSON.stringify(data));\n          this.appService.Data.categories = body;\n\n        },\n        error: (e) => {\n\n        },\n        complete: () => {\n\n        }\n      })\n  }\n  getDivisionList() {\n    this.appService.DivisionsList()\n      .subscribe({\n        next: (data) => {\n          const body = JSON.parse(JSON.stringify(data));\n          this.appService.Data.divisions = body;\n\n        },\n        error: (e) => {\n\n        },\n        complete: () => {\n\n        }\n      })\n  }\n  CancelEdit() {\n    this.form.patchValue({ id:0, MenuId: null, DivisionId: null });\n    this.onedit = false;\n  }\n\n\n  public edit(data: any, e: any) {\n\n    this.getFilteredMenu(data.data.categoryId)\n\n    const mdata = {\n      id: data.data.id,\n      CategoryId: data.data.categoryId,\n      DivisionId: data.data.divisionId,\n      MenuId: data.data.menuId,\n      date: moment(data.data.dateServed, 'DD/MMM/YYYY').toDate()\n    };\n    console.log(mdata);\n    this.onedit = true;\n\n    this.form.patchValue(mdata)\n    this.renderer.selectRootElement('#frequency').focus();\n\n  }\n\n  public onSubmit() {\n\n  \n    if (this.form.valid) {\n\n\n      const formdata = this.form.value;\n      if (formdata.repeat != 0 && formdata.endDate == null)\n      {\n        this.snackBar.open('Kindly select the end date.', '×', { panelClass: 'error', verticalPosition: 'top', duration: 6000 });\n      }\n  \n\n      let username: string = \"\";\n      if (localStorage.getItem('TamuApp')) {\n\n        const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\n        username = TamuApp.Username;\n      }\n\nconsole.log(formdata);\n\n\n      const req = {\n        Id: formdata.id == null ? 0 : formdata.id,\n        MenuId: formdata.MenuId,\n        DivisionId: formdata.DivisionId,\n        DateServed: moment(formdata.date).format(\"DD-MMM-YYYY\"),\n        repeat:formdata.repeat,\n        frequencycount: formdata.frequencycount,\n        endDate: formdata.endDate  === null? moment(formdata.date).format(\"DD-MMM-YYYY\"):  moment(formdata.endDate).format(\"DD-MMM-YYYY\"),\n        Sun: formdata.Sun,\n        Mon: formdata.Mon,\n        Tue: formdata.Tue,\n        Wed: formdata.Wed,\n        Thu: formdata.Thu,\n        Fri: formdata.Fri,\n        Sat: formdata.Sat,\n        DoneBy: username\n      }\n      console.log(req);\n\n     \n      this.appService.MenuSchedules(req)\n        .subscribe({\n          next: (data) => {\n\n            if (data.toString() == \"\") {\n\n\n\n              this.ListMenuShedules();;\n\n              this.snackBar.open('Menu schedule saved successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\n\n              this.form.patchValue({ id:0, MenuId: null, DivisionId: null });\n              this.onedit = false;\n            }\n            else {\n              this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 6000 });\n            }\n\n          },\n          error: (e) => {\n\n          },\n          complete: () => {\n\n          }\n        })\n\n\n\n\n\n    }\n  }\n\n\n  public remove(data: any, e: any) {\n\n    let username: string = \"\";\n    if (localStorage.getItem('TamuApp')) {\n\n      const TamuApp = JSON.parse(this.encrypt.Decrypt(localStorage.getItem('TamuApp')));\n      username = TamuApp.Username;\n    }\n\n    const req = {\n      Id: data.data.id,\n      DoneBy: username\n    }\n\n\n    const message = this.appService.getTranslateValue('MESSAGE.SURE_DELETE');\n    let dialogRef = this.appService.openConfirmDialog('', message!);\n    dialogRef.afterClosed().subscribe(dialogResult => {\n      if (dialogResult) {\n\n        this.appService.DeleteMenuSchedule(req)\n          .subscribe({\n            next: (data) => {\n              if (data === \"\") {\n\n                this.snackBar.open('Menu schedule deleted successfully.', '×', { panelClass: 'success', verticalPosition: 'top', duration: 6000 });\n                this.ListMenuShedules();\n              } else {\n\n                if (data != null)\n                  this.snackBar.open(data.toString(), '×', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n              }\n\n            },\n            error: (e) => {\n              this.snackBar.open(e.error, 'X', { panelClass: 'error', verticalPosition: 'top', duration: 4000 });\n\n            },\n            complete: () => {\n\n            }\n          })\n\n\n      }\n    });\n\n  }\n\n\n}\n","<mat-card class=\"m-2 p-0\">\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\" class=\"w-100 p-1\">\n        <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" fxLayout=\"row wrap\" autocomplete=\"off\" class=\"pt-3\">\n\n        \n            <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\n                    <mat-label>Date</mat-label>\n                    <input matInput placeholder=\"Pick a date\" formControlName=\"date\" required \n                        [matDatepicker]=\"datePicker\" [min]=\"today\" [disabled]=\"onedit\">\n                    <mat-hint>DD/MM/YYYY</mat-hint>\n                    <mat-datepicker-toggle matSuffix [for]=\"datePicker\" id=\"trdate\"></mat-datepicker-toggle>\n                    <mat-datepicker #datePicker></mat-datepicker>\n                    <mat-error *ngIf=\"form.controls.date.errors?.required\">Date is required</mat-error>\n                </mat-form-field>\n            </div>\n            <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\n                    <mat-label>Category</mat-label>\n                    <mat-select formControlName=\"CategoryId\" required [disabled]=\"onedit\"\n                        (selectionChange)=\"CategorySelected($event.value)\">\n                        <mat-option *ngFor=\"let cat of appService.Data.categories\" [value]=\"cat.id\">\n                            <span>{{cat.name}}</span>\n                        </mat-option>\n                    </mat-select>\n                    <mat-error *ngIf=\"form.controls.CategoryId.errors?.required\">Category is required</mat-error>\n                </mat-form-field>\n\n            </div>\n            <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\n                    <mat-label>Division</mat-label>\n                    <mat-select formControlName=\"DivisionId\" required [disabled]=\"onedit\">\n                        <mat-option *ngFor=\"let division of appService.Data.divisions\" [value]=\"division.Id\">\n                            <span>{{division.Division}}</span>\n                        </mat-option>\n                    </mat-select>\n                    <mat-error *ngIf=\"form.controls.DivisionId.errors?.required\">Division is required</mat-error>\n                </mat-form-field>\n            </div>\n            <div fxFlex=\"100\" fxFlex.gt-sm=\"40\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n                <mat-form-field appearance=\"outline\" class=\"w-100\">\n                    <mat-label>Menu</mat-label>\n                    <mat-select formControlName=\"MenuId\" required id=\"MenuId\">\n                        <mat-option>\n                            <ngx-mat-select-search [formControl]=\"menuFilterCtrl\" placeholderLabel=\"SEARCH\"\n                                noEntriesFoundLabel=\"'NO RESULTS FOUND'\"></ngx-mat-select-search>\n                        </mat-option>\n                        <mat-option *ngFor=\"let menu of filteredmenus | async\" [value]=\"menu.MenuId\">\n                            <span>{{menu.Name}}</span>\n                        </mat-option>\n                    </mat-select>\n                    <mat-error *ngIf=\"form.controls.MenuId.errors?.required\">Menu is required</mat-error>\n                </mat-form-field>\n            </div>\n\n            <div fxFlex=\"100\">\n                <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n                    <mat-form-field appearance=\"outline\" class=\"w-100\">\n                        <mat-label>Repeat</mat-label>\n                        <mat-select formControlName=\"repeat\"\n                            (selectionChange)=\"repeatSelected($event.value)\">\n                            <mat-option value=\"0\">\n                                <span>None</span>\n                            </mat-option>\n                            <mat-option value=\"1\">\n                                <span>Daily</span>\n                            </mat-option>\n                            <mat-option value=\"2\">\n                                <span>Weekly</span>\n                            </mat-option>\n                            <mat-option value=\"3\">\n                                <span>Bi-Weekly</span>\n                            </mat-option>\n                            <mat-option value=\"4\">\n                                <span>Monthly</span>\n                            </mat-option>\n                        </mat-select>\n                       \n                    </mat-form-field>\n\n                </div>\n                <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\">\n                    <mat-form-field appearance=\"outline\" class=\"w-100\">\n                        <mat-label>Every {{freqcount}} {{frequency}}(s)</mat-label>\n                        <input matInput formControlName=\"frequencycount\" (change)=\"freqValChange($event)\" type=\"number\" (keyup)=\"freqValChange($event)\" id=\"frequency\">\n                        <mat-error *ngIf=\"form.controls.frequencycount.hasError('pattern')\">Invalid number</mat-error>\n                    </mat-form-field>\n                </div>\n                <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n\n                    <mat-form-field appearance=\"outline\" class=\"w-100\">\n                        <mat-label>End Date</mat-label>\n                        <input matInput placeholder=\"Pick a date\" formControlName=\"endDate\" \n                            [matDatepicker]=\"dateEndPicker\" [min]=\"today\">\n                        <mat-hint>DD/MM/YYYY</mat-hint>\n                        <mat-datepicker-toggle matSuffix [for]=\"dateEndPicker\"></mat-datepicker-toggle>\n                        <mat-datepicker #dateEndPicker></mat-datepicker>\n                    \n                    </mat-form-field>\n                </div>\n            </div>\n            <div fxFlex=\"100\" class=\"px-3 text-left\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n                <fieldset class=\"fieldset\">\n                    <legend>Skip Days of the Week</legend>\n\n                    <mat-checkbox matCheckbox formControlName=\"Sun\" color=\"primary\">Sun</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Mon\" color=\"primary\">Mon</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Tue\" color=\"primary\">Tue</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Wed\" color=\"primary\">Wed</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Thu\" color=\"primary\">Thu</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Fri\" color=\"primary\">Fri</mat-checkbox>\n                    &nbsp;\n                    <mat-checkbox matCheckbox formControlName=\"Sat\" color=\"primary\">Sat</mat-checkbox>\n                </fieldset>\n\n            </div>\n\n            <div class=\"w-100 py-2 text-right\">\n                <button mat-raised-button color=\"primary\" type=\"button\" class=\"uppercase\" (click)=\"CancelEdit()\"  >Cancel</button>\n                &nbsp;&nbsp;\n                <button mat-raised-button color=\"primary\" type=\"submit\" class=\"uppercase\">Save Schedule</button>\n            </div>\n        </form>\n\n    </div>\n    <mat-divider></mat-divider>\n    <p></p>\n    <div fxLayout=\"row wrap\" fxLayoutAlign=\"left\" class=\"w-100 p-1\">\n        <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n\n            <mat-form-field appearance=\"outline\" class=\"w-100\">\n                <mat-label>Date</mat-label>\n                <input matInput placeholder=\"Pick a date\" [matDatepicker]=\"datePickerFrom\" [(ngModel)]=\"DateFrom\"\n                    (dateChange)=\"FilterByDate('change', $event)\">\n                <mat-hint>DD/MM/YYYY</mat-hint>\n                <mat-datepicker-toggle matSuffix [for]=\"datePickerFrom\"></mat-datepicker-toggle>\n                <mat-datepicker #datePickerFrom></mat-datepicker>\n\n            </mat-form-field>\n        </div>\n        <div fxFlex=\"100\" fxFlex.gt-sm=\"20\" class=\"px-3\" ngClass.sm=\"mt-1\" ngClass.xs=\"mt-1\">\n            <!--  (dateInput)=\"FilterByDate('input', $event)\"  -->\n            <mat-form-field appearance=\"outline\" class=\"w-100\">\n                <mat-label>Date</mat-label>\n                <input matInput placeholder=\"Pick a date\" [matDatepicker]=\"datePickerTo\" [(ngModel)]=\"DateTo\"\n                    (dateChange)=\"FilterByDate('change', $event)\">\n                <mat-hint>DD/MM/YYYY</mat-hint>\n                <mat-datepicker-toggle matSuffix [for]=\"datePickerTo\"></mat-datepicker-toggle>\n                <mat-datepicker #datePickerTo></mat-datepicker>\n\n            </mat-form-field>\n        </div>\n    </div>\n\n\n\n    <mat-divider></mat-divider>\n    <p></p>\n    <dx-data-grid id=\"gridContainer\" [dataSource]=\"dataSource\" [rowAlternationEnabled]=\"true\" [showBorders]=\"true\"\n        [showRowLines]=\"true\" [columnHidingEnabled]=\"true\">\n        <dxo-paging [pageSize]=\"10\"></dxo-paging>\n        <dxo-pager [visible]=\"true\" [allowedPageSizes]=\"[5, 10,20,50, 'all']\" [displayMode]=\"'full'\"\n            [showPageSizeSelector]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n        <dxo-scrolling columnRenderingMode=\"virtual\"></dxo-scrolling>\n        <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n        <dxi-column dataField=\"id\" caption=\"Id\" width=\"70\"></dxi-column>\n        <dxi-column dataField=\"dateServed\" caption=\"DateServed\" width=\"150\"></dxi-column>\n        <dxi-column dataField=\"division\" caption=\"Division\" width=\"150\"></dxi-column>\n        <dxi-column dataField=\"category\" caption=\"Category\" width=\"150\"></dxi-column>\n        <dxi-column dataField=\"name\" caption=\"Name\" width=\"300\"></dxi-column>\n        <dxi-column dataField=\"description\" caption=\"Description\"></dxi-column>\n        <dxi-column dataField=\"price\" caption=\"Price\" width=\"100\"></dxi-column>\n        <dxi-column dataField=\"isVegetarian\" caption=\"IsVegetarian\" width=\"100\"></dxi-column>\n        <dxi-column dataField=\"doneBy\" caption=\"DoneBy\" width=\"150\"></dxi-column>\n        <dxi-column caption=\"\" [width]=\"70\" [allowFiltering]=\"false\" [allowSorting]=\"false\" cellTemplate=\"actions\"\n            [fixed]=\"true\" fixedPosition=\"right\"></dxi-column>\n        <div *dxTemplate=\"let data of 'actions'\">\n            <button class=\"gridbutton\" (click)=\"edit(data,$event)\">\n                <mat-icon>edit</mat-icon>\n            </button>\n            <button class=\"gridbutton\" (click)=\"remove(data,$event)\">\n                <mat-icon color=\"warn\">delete</mat-icon>\n            </button>\n        </div>\n    </dx-data-grid>\n\n\n\n</mat-card>","import { A, Z, ZERO, NINE, SPACE, HOME, END, ENTER, ESCAPE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, EventEmitter, forwardRef, ElementRef, Component, ChangeDetectionStrategy, Inject, Optional, Input, Output, ViewChild, ContentChild, HostBinding, NgModule } from '@angular/core';\nimport * as i9 from '@angular/forms';\nimport { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport * as i11 from '@angular/material/core';\nimport { _countGroupLabelsBeforeOption, MatOption } from '@angular/material/core';\nimport * as i12 from '@angular/material/form-field';\nimport { MatFormField } from '@angular/material/form-field';\nimport * as i10 from '@angular/material/select';\nimport { MatSelect } from '@angular/material/select';\nimport { BehaviorSubject, of, combineLatest, Subject } from 'rxjs';\nimport { switchMap, map, startWith, delay, takeUntil, take, filter, tap } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/scrolling';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/material/checkbox';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport * as i4 from '@angular/material/progress-spinner';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport * as i5 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i6 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i8 from '@angular/material/tooltip';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n/**\n * Directive for providing a custom clear-icon.\n * e.g.\n * <ngx-mat-select-search [formControl]=\"bankFilterCtrl\">\n *   <mat-icon ngxMatSelectSearchClear>delete</mat-icon>\n * </ngx-mat-select-search>\n */\nclass MatSelectSearchClearDirective {\n}\nMatSelectSearchClearDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectSearchClearDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatSelectSearchClearDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.10\", type: MatSelectSearchClearDirective, selector: \"[ngxMatSelectSearchClear]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectSearchClearDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[ngxMatSelectSearchClear]'\n                }]\n        }] });\n\n/** List of inputs of NgxMatSelectSearchComponent that can be configured with a global default. */\nconst configurableDefaultOptions = [\n    'ariaLabel',\n    'clearSearchInput',\n    'closeIcon',\n    'closeSvgIcon',\n    'disableInitialFocus',\n    'disableScrollToActiveOnOptionsChanged',\n    'enableClearOnEscapePressed',\n    'hideClearSearchButton',\n    'indexAndLengthScreenReaderText',\n    'noEntriesFoundLabel',\n    'placeholderLabel',\n    'preventHomeEndKeyPropagation',\n    'searching',\n];\n/**\n * InjectionToken that can be used to specify global options. e.g.\n *\n * ```typescript\n * providers: [\n *   {\n *     provide: MAT_SELECTSEARCH_DEFAULT_OPTIONS,\n *     useValue: <MatSelectSearchOptions>{\n *       closeIcon: 'delete',\n *       noEntriesFoundLabel: 'No options found'\n *     }\n *   }\n * ]\n * ```\n *\n * See the corresponding inputs of `MatSelectSearchComponent` for documentation.\n */\nconst MAT_SELECTSEARCH_DEFAULT_OPTIONS = new InjectionToken('mat-selectsearch-default-options');\n/** @deprecated */\nconst configurableGlobalOptions = configurableDefaultOptions;\n/** @deprecated */\nconst MATSELECTSEARCH_GLOBAL_OPTIONS = MAT_SELECTSEARCH_DEFAULT_OPTIONS;\n\n/**\n * Directive for providing a custom no entries found element.\n * e.g.\n * <ngx-mat-select-search [formControl]=\"bankFilterCtrl\">\n *   <span ngxMatSelectNoEntriesFound>\n *     No entries found <button>Add</button>\n *   </span>\n * </ngx-mat-select-search>\n */\nclass MatSelectNoEntriesFoundDirective {\n}\nMatSelectNoEntriesFoundDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectNoEntriesFoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatSelectNoEntriesFoundDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.10\", type: MatSelectNoEntriesFoundDirective, selector: \"[ngxMatSelectNoEntriesFound]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectNoEntriesFoundDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[ngxMatSelectNoEntriesFound]'\n                }]\n        }] });\n\n/** The max height of the select's overlay panel. */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/* tslint:disable:member-ordering component-selector */\n/**\n * Component providing an input field for searching MatSelect options.\n *\n * Example usage:\n *\n * interface Bank {\n *  id: string;\n *  name: string;\n * }\n *\n * @Component({\n *   selector: 'my-app-data-selection',\n *   template: `\n *     <mat-form-field>\n *       <mat-select [formControl]=\"bankCtrl\" placeholder=\"Bank\">\n *         <mat-option>\n *           <ngx-mat-select-search [formControl]=\"bankFilterCtrl\"></ngx-mat-select-search>\n *         </mat-option>\n *         <mat-option *ngFor=\"let bank of filteredBanks | async\" [value]=\"bank.id\">\n *           {{bank.name}}\n *         </mat-option>\n *       </mat-select>\n *     </mat-form-field>\n *   `\n * })\n * export class DataSelectionComponent implements OnInit, OnDestroy {\n *\n *   // control for the selected bank\n *   public bankCtrl: FormControl = new FormControl();\n *   // control for the MatSelect filter keyword\n *   public bankFilterCtrl: FormControl = new FormControl();\n *\n *   // list of banks\n *   private banks: Bank[] = [{name: 'Bank A', id: 'A'}, {name: 'Bank B', id: 'B'}, {name: 'Bank C', id: 'C'}];\n *   // list of banks filtered by search keyword\n *   public filteredBanks: ReplaySubject<Bank[]> = new ReplaySubject<Bank[]>(1);\n *\n *   // Subject that emits when the component has been destroyed.\n *   private _onDestroy = new Subject<void>();\n *\n *\n *   ngOnInit() {\n *     // load the initial bank list\n *     this.filteredBanks.next(this.banks.slice());\n *     // listen for search field value changes\n *     this.bankFilterCtrl.valueChanges\n *       .pipe(takeUntil(this._onDestroy))\n *       .subscribe(() => {\n *         this.filterBanks();\n *       });\n *   }\n *\n *   ngOnDestroy() {\n *     this._onDestroy.next();\n *     this._onDestroy.complete();\n *   }\n *\n *   private filterBanks() {\n *     if (!this.banks) {\n *       return;\n *     }\n *\n *     // get the search keyword\n *     let search = this.bankFilterCtrl.value;\n *     if (!search) {\n *       this.filteredBanks.next(this.banks.slice());\n *       return;\n *     } else {\n *       search = search.toLowerCase();\n *     }\n *\n *     // filter the banks\n *     this.filteredBanks.next(\n *       this.banks.filter(bank => bank.name.toLowerCase().indexOf(search) > -1)\n *     );\n *   }\n * }\n */\nclass MatSelectSearchComponent {\n    constructor(matSelect, changeDetectorRef, _viewportRuler, matOption = null, liveAnnouncer, matFormField = null, defaultOptions) {\n        this.matSelect = matSelect;\n        this.changeDetectorRef = changeDetectorRef;\n        this._viewportRuler = _viewportRuler;\n        this.matOption = matOption;\n        this.liveAnnouncer = liveAnnouncer;\n        this.matFormField = matFormField;\n        /** Label of the search placeholder */\n        this.placeholderLabel = 'Suche';\n        /** Type of the search input field */\n        this.type = 'text';\n        /** Font-based icon used for displaying Close-Icon */\n        this.closeIcon = 'close';\n        /** Label to be shown when no entries are found. Set to null if no message should be shown. */\n        this.noEntriesFoundLabel = 'Keine Optionen gefunden';\n        /**\n         *  Text that is appended to the currently active item label announced by screen readers,\n         *  informing the user of the current index, value and total options.\n         *  eg: Bank R (Germany) 1 of 6\n        */\n        this.indexAndLengthScreenReaderText = ' of ';\n        /**\n          * Whether or not the search field should be cleared after the dropdown menu is closed.\n          * Useful for server-side filtering. See [#3](https://github.com/bithost-gmbh/ngx-mat-select-search/issues/3)\n          */\n        this.clearSearchInput = true;\n        /** Whether to show the search-in-progress indicator */\n        this.searching = false;\n        /** Disables initial focusing of the input field */\n        this.disableInitialFocus = false;\n        /** Enable clear input on escape pressed */\n        this.enableClearOnEscapePressed = false;\n        /**\n         * Prevents home / end key being propagated to mat-select,\n         * allowing to move the cursor within the search input instead of navigating the options\n         */\n        this.preventHomeEndKeyPropagation = false;\n        /** Disables scrolling to active options when option list changes. Useful for server-side search */\n        this.disableScrollToActiveOnOptionsChanged = false;\n        /** Adds 508 screen reader support for search box */\n        this.ariaLabel = 'dropdown search';\n        /** Whether to show Select All Checkbox (for mat-select[multi=true]) */\n        this.showToggleAllCheckbox = false;\n        /** select all checkbox checked state */\n        this.toggleAllCheckboxChecked = false;\n        /** select all checkbox indeterminate state */\n        this.toggleAllCheckboxIndeterminate = false;\n        /** Display a message in a tooltip on the toggle-all checkbox */\n        this.toggleAllCheckboxTooltipMessage = '';\n        /** Define the position of the tooltip on the toggle-all checkbox. */\n        this.toogleAllCheckboxTooltipPosition = 'below';\n        /** Show/Hide the search clear button of the search input */\n        this.hideClearSearchButton = false;\n        /**\n         * Always restore selected options on selectionChange for mode multi (e.g. for lazy loading/infinity scrolling).\n         * Defaults to false, so selected options are only restored while filtering is active.\n         */\n        this.alwaysRestoreSelectedOptionsMulti = false;\n        /** Output emitter to send to parent component with the toggle all boolean */\n        this.toggleAll = new EventEmitter();\n        this.onTouched = (_) => { };\n        this._options$ = new BehaviorSubject(null);\n        this.optionsList$ = this._options$.pipe(switchMap(_options => _options ?\n            _options.changes.pipe(map(options => options.toArray()), startWith(_options.toArray())) : of(null)));\n        this.optionsLength$ = this.optionsList$.pipe(map(options => options ? options.length : 0));\n        this._formControl = new FormControl('');\n        /** whether to show the no entries found message */\n        this._showNoEntriesFound$ = combineLatest([\n            this._formControl.valueChanges,\n            this.optionsLength$\n        ]).pipe(map(([value, optionsLength]) => this.noEntriesFoundLabel && value\n            && optionsLength === this.getOptionsLengthOffset()));\n        /** Subject that emits when the component has been destroyed. */\n        this._onDestroy = new Subject();\n        this.applyDefaultOptions(defaultOptions);\n    }\n    get isInsideMatOption() {\n        return !!this.matOption;\n    }\n    /** Current search value */\n    get value() {\n        return this._formControl.value;\n    }\n    /** Reference to the MatSelect options */\n    set _options(_options) {\n        this._options$.next(_options);\n    }\n    get _options() {\n        return this._options$.getValue();\n    }\n    applyDefaultOptions(defaultOptions) {\n        if (!defaultOptions) {\n            return;\n        }\n        for (const key of configurableDefaultOptions) {\n            if (defaultOptions.hasOwnProperty(key)) {\n                this[key] = defaultOptions[key];\n            }\n        }\n    }\n    ngOnInit() {\n        // set custom panel class\n        const panelClass = 'mat-select-search-panel';\n        if (this.matSelect.panelClass) {\n            if (Array.isArray(this.matSelect.panelClass)) {\n                this.matSelect.panelClass.push(panelClass);\n            }\n            else if (typeof this.matSelect.panelClass === 'string') {\n                this.matSelect.panelClass = [this.matSelect.panelClass, panelClass];\n            }\n            else if (typeof this.matSelect.panelClass === 'object') {\n                this.matSelect.panelClass[panelClass] = true;\n            }\n        }\n        else {\n            this.matSelect.panelClass = panelClass;\n        }\n        // set custom mat-option class if the component was placed inside a mat-option\n        if (this.matOption) {\n            this.matOption.disabled = true;\n            this.matOption._getHostElement().classList.add('contains-mat-select-search');\n        }\n        else {\n            console.error('<ngx-mat-select-search> must be placed inside a <mat-option> element');\n        }\n        // when the select dropdown panel is opened or closed\n        this.matSelect.openedChange\n            .pipe(delay(1), takeUntil(this._onDestroy))\n            .subscribe((opened) => {\n            if (opened) {\n                this.updateInputWidth();\n                // focus the search field when opening\n                if (!this.disableInitialFocus) {\n                    this._focus();\n                }\n            }\n            else {\n                // clear it when closing\n                if (this.clearSearchInput) {\n                    this._reset();\n                }\n            }\n        });\n        // set the first item active after the options changed\n        this.matSelect.openedChange\n            .pipe(take(1))\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(() => {\n            if (this.matSelect._keyManager) {\n                this.matSelect._keyManager.change.pipe(takeUntil(this._onDestroy))\n                    .subscribe(() => this.adjustScrollTopToFitActiveOptionIntoView());\n            }\n            else {\n                console.log('_keyManager was not initialized.');\n            }\n            this._options = this.matSelect.options;\n            // Closure variable for tracking the most recent first option.\n            // In order to avoid avoid causing the list to\n            // scroll to the top when options are added to the bottom of\n            // the list (eg: infinite scroll), we compare only\n            // the changes to the first options to determine if we\n            // should set the first item as active.\n            // This prevents unnecessary scrolling to the top of the list\n            // when options are appended, but allows the first item\n            // in the list to be set as active by default when there\n            // is no active selection\n            let previousFirstOption = this._options.toArray()[this.getOptionsLengthOffset()];\n            this._options.changes\n                .pipe(takeUntil(this._onDestroy))\n                .subscribe(() => {\n                // avoid \"expression has been changed\" error\n                setTimeout(() => {\n                    // Convert the QueryList to an array\n                    const options = this._options.toArray();\n                    // The true first item is offset by 1\n                    const currentFirstOption = options[this.getOptionsLengthOffset()];\n                    const keyManager = this.matSelect._keyManager;\n                    if (keyManager && this.matSelect.panelOpen) {\n                        // set first item active and input width\n                        // Check to see if the first option in these changes is different from the previous.\n                        const firstOptionIsChanged = !this.matSelect.compareWith(previousFirstOption, currentFirstOption);\n                        // CASE: The first option is different now.\n                        // Indiciates we should set it as active and scroll to the top.\n                        if (firstOptionIsChanged\n                            || !keyManager.activeItem\n                            || !options.find(option => this.matSelect.compareWith(option, keyManager.activeItem))) {\n                            keyManager.setFirstItemActive();\n                        }\n                        // wait for panel width changes\n                        setTimeout(() => {\n                            this.updateInputWidth();\n                        });\n                        if (!this.disableScrollToActiveOnOptionsChanged) {\n                            this.adjustScrollTopToFitActiveOptionIntoView();\n                        }\n                    }\n                    // Update our reference\n                    previousFirstOption = currentFirstOption;\n                });\n            });\n        });\n        // add or remove css class depending on whether to show the no entries found message\n        // note: this is hacky\n        this._showNoEntriesFound$.pipe(takeUntil(this._onDestroy)).subscribe(showNoEntriesFound => {\n            // set no entries found class on mat option\n            if (this.matOption) {\n                if (showNoEntriesFound) {\n                    this.matOption._getHostElement().classList.add('mat-select-search-no-entries-found');\n                }\n                else {\n                    this.matOption._getHostElement().classList.remove('mat-select-search-no-entries-found');\n                }\n            }\n        });\n        // resize the input width when the viewport is resized, i.e. the trigger width could potentially be resized\n        this._viewportRuler.change()\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(() => {\n            if (this.matSelect.panelOpen) {\n                this.updateInputWidth();\n            }\n        });\n        this.initMultipleHandling();\n        this.optionsList$.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n            // update view when available options change\n            this.changeDetectorRef.markForCheck();\n        });\n    }\n    _emitSelectAllBooleanToParent(state) {\n        this.toggleAll.emit(state);\n    }\n    ngOnDestroy() {\n        this._onDestroy.next();\n        this._onDestroy.complete();\n    }\n    _isToggleAllCheckboxVisible() {\n        return this.matSelect.multiple && this.showToggleAllCheckbox;\n    }\n    /**\n     * Handles the key down event with MatSelect.\n     * Allows e.g. selecting with enter key, navigation with arrow keys, etc.\n     * @param event\n     */\n    _handleKeydown(event) {\n        // Prevent propagation for all alphanumeric characters in order to avoid selection issues\n        if ((event.key && event.key.length === 1) ||\n            (event.keyCode >= A && event.keyCode <= Z) ||\n            (event.keyCode >= ZERO && event.keyCode <= NINE) ||\n            (event.keyCode === SPACE)\n            || (this.preventHomeEndKeyPropagation && (event.keyCode === HOME || event.keyCode === END))) {\n            event.stopPropagation();\n        }\n        if (this.matSelect.multiple && event.key && event.keyCode === ENTER) {\n            // Regain focus after multiselect, so we can further type\n            setTimeout(() => this._focus());\n        }\n        // Special case if click Escape, if input is empty, close the dropdown, if not, empty out the search field\n        if (this.enableClearOnEscapePressed === true && event.keyCode === ESCAPE && this.value) {\n            this._reset(true);\n            event.stopPropagation();\n        }\n    }\n    /**\n     * Handles the key up event with MatSelect.\n     * Allows e.g. the announcing of the currently activeDescendant by screen readers.\n     */\n    _handleKeyup(event) {\n        if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n            const ariaActiveDescendantId = this.matSelect._getAriaActiveDescendant();\n            const index = this._options.toArray().findIndex(item => item.id === ariaActiveDescendantId);\n            if (index !== -1) {\n                const activeDescendant = this._options.toArray()[index];\n                this.liveAnnouncer.announce(activeDescendant.viewValue + ' '\n                    + this.getAriaIndex(index)\n                    + this.indexAndLengthScreenReaderText\n                    + this.getAriaLength());\n            }\n        }\n    }\n    /**\n     * Calculate the index of the current option, taking the offset to length into account.\n     * examples:\n     *    Case 1 [Search, 1, 2, 3] will have offset of 1, due to search and will read index of total.\n     *    Case 2 [1, 2, 3] will have offset of 0 and will read index +1 of total.\n     */\n    getAriaIndex(optionIndex) {\n        if (this.getOptionsLengthOffset() === 0) {\n            return optionIndex + 1;\n        }\n        return optionIndex;\n    }\n    /**\n     * Calculate the length of the options, taking the offset to length into account.\n     * examples:\n     *    Case 1 [Search, 1, 2, 3] will have length of options.length -1, due to search.\n     *    Case 2 [1, 2, 3] will have length of options.length.\n     */\n    getAriaLength() {\n        return this._options.toArray().length - this.getOptionsLengthOffset();\n    }\n    writeValue(value) {\n        this._lastExternalInputValue = value;\n        this._formControl.setValue(value);\n        this.changeDetectorRef.markForCheck();\n    }\n    onBlur() {\n        this.onTouched();\n    }\n    registerOnChange(fn) {\n        this._formControl.valueChanges.pipe(filter(value => value !== this._lastExternalInputValue), tap(() => this._lastExternalInputValue = undefined), takeUntil(this._onDestroy)).subscribe(fn);\n    }\n    registerOnTouched(fn) {\n        this.onTouched = fn;\n    }\n    /**\n     * Focuses the search input field\n     */\n    _focus() {\n        if (!this.searchSelectInput || !this.matSelect.panel) {\n            return;\n        }\n        // save and restore scrollTop of panel, since it will be reset by focus()\n        // note: this is hacky\n        const panel = this.matSelect.panel.nativeElement;\n        const scrollTop = panel.scrollTop;\n        // focus\n        this.searchSelectInput.nativeElement.focus();\n        panel.scrollTop = scrollTop;\n    }\n    /**\n     * Resets the current search value\n     * @param focus whether to focus after resetting\n     */\n    _reset(focus) {\n        this._formControl.setValue('');\n        if (focus) {\n            this._focus();\n        }\n    }\n    /**\n     * Initializes handling <mat-select [multiple]=\"true\">\n     * Note: to improve this code, mat-select should be extended to allow disabling resetting the selection while filtering.\n     */\n    initMultipleHandling() {\n        if (!this.matSelect.ngControl) {\n            if (this.matSelect.multiple) {\n                // note: the access to matSelect.ngControl (instead of matSelect.value / matSelect.valueChanges)\n                // is necessary to properly work in multi-selection mode.\n                console.error('the mat-select containing ngx-mat-select-search must have a ngModel or formControl directive when multiple=true');\n            }\n            return;\n        }\n        // if <mat-select [multiple]=\"true\">\n        // store previously selected values and restore them when they are deselected\n        // because the option is not available while we are currently filtering\n        this.previousSelectedValues = this.matSelect.ngControl.value;\n        this.matSelect.ngControl.valueChanges\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe((values) => {\n            let restoreSelectedValues = false;\n            if (this.matSelect.multiple) {\n                if ((this.alwaysRestoreSelectedOptionsMulti || (this._formControl.value && this._formControl.value.length))\n                    && this.previousSelectedValues && Array.isArray(this.previousSelectedValues)) {\n                    if (!values || !Array.isArray(values)) {\n                        values = [];\n                    }\n                    const optionValues = this.matSelect.options.map(option => option.value);\n                    this.previousSelectedValues.forEach(previousValue => {\n                        if (!values.some(v => this.matSelect.compareWith(v, previousValue))\n                            && !optionValues.some(v => this.matSelect.compareWith(v, previousValue))) {\n                            // if a value that was selected before is deselected and not found in the options, it was deselected\n                            // due to the filtering, so we restore it.\n                            values.push(previousValue);\n                            restoreSelectedValues = true;\n                        }\n                    });\n                }\n            }\n            this.previousSelectedValues = values;\n            if (restoreSelectedValues) {\n                this.matSelect._onChange(values);\n            }\n        });\n    }\n    /**\n     * Scrolls the currently active option into the view if it is not yet visible.\n     */\n    adjustScrollTopToFitActiveOptionIntoView() {\n        if (this.matSelect.panel && this.matSelect.options.length > 0) {\n            const matOptionHeight = this.getMatOptionHeight();\n            const activeOptionIndex = this.matSelect._keyManager.activeItemIndex || 0;\n            const labelCount = _countGroupLabelsBeforeOption(activeOptionIndex, this.matSelect.options, this.matSelect.optionGroups);\n            // If the component is in a MatOption, the activeItemIndex will be offset by one.\n            const indexOfOptionToFitIntoView = (this.matOption ? -1 : 0) + labelCount + activeOptionIndex;\n            const currentScrollTop = this.matSelect.panel.nativeElement.scrollTop;\n            const searchInputHeight = this.innerSelectSearch.nativeElement.offsetHeight;\n            const amountOfVisibleOptions = Math.floor((SELECT_PANEL_MAX_HEIGHT - searchInputHeight) / matOptionHeight);\n            const indexOfFirstVisibleOption = Math.round((currentScrollTop + searchInputHeight) / matOptionHeight) - 1;\n            if (indexOfFirstVisibleOption >= indexOfOptionToFitIntoView) {\n                this.matSelect.panel.nativeElement.scrollTop = indexOfOptionToFitIntoView * matOptionHeight;\n            }\n            else if (indexOfFirstVisibleOption + amountOfVisibleOptions <= indexOfOptionToFitIntoView) {\n                this.matSelect.panel.nativeElement.scrollTop = (indexOfOptionToFitIntoView + 1) * matOptionHeight\n                    - (SELECT_PANEL_MAX_HEIGHT - searchInputHeight);\n            }\n        }\n    }\n    /**\n     *  Set the width of the innerSelectSearch to fit even custom scrollbars\n     *  And support all Operation Systems\n     */\n    updateInputWidth() {\n        if (!this.innerSelectSearch || !this.innerSelectSearch.nativeElement) {\n            return;\n        }\n        let element = this.innerSelectSearch.nativeElement;\n        let panelElement;\n        while (element = element.parentElement) {\n            if (element.classList.contains('mat-select-panel')) {\n                panelElement = element;\n                break;\n            }\n        }\n        if (panelElement) {\n            this.innerSelectSearch.nativeElement.style.width = panelElement.clientWidth + 'px';\n        }\n    }\n    getMatOptionHeight() {\n        if (this.matSelect.options.length > 0) {\n            return this.matSelect.options.first._getHostElement().getBoundingClientRect().height;\n        }\n        return 0;\n    }\n    /**\n     * Determine the offset to length that can be caused by the optional matOption used as a search input.\n     */\n    getOptionsLengthOffset() {\n        if (this.matOption) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n    }\n}\nMatSelectSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectSearchComponent, deps: [{ token: MatSelect }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: MatOption, optional: true }, { token: i2.LiveAnnouncer }, { token: MatFormField, optional: true }, { token: MAT_SELECTSEARCH_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatSelectSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.10\", type: MatSelectSearchComponent, selector: \"ngx-mat-select-search\", inputs: { placeholderLabel: \"placeholderLabel\", type: \"type\", closeIcon: \"closeIcon\", closeSvgIcon: \"closeSvgIcon\", noEntriesFoundLabel: \"noEntriesFoundLabel\", indexAndLengthScreenReaderText: \"indexAndLengthScreenReaderText\", clearSearchInput: \"clearSearchInput\", searching: \"searching\", disableInitialFocus: \"disableInitialFocus\", enableClearOnEscapePressed: \"enableClearOnEscapePressed\", preventHomeEndKeyPropagation: \"preventHomeEndKeyPropagation\", disableScrollToActiveOnOptionsChanged: \"disableScrollToActiveOnOptionsChanged\", ariaLabel: \"ariaLabel\", showToggleAllCheckbox: \"showToggleAllCheckbox\", toggleAllCheckboxChecked: \"toggleAllCheckboxChecked\", toggleAllCheckboxIndeterminate: \"toggleAllCheckboxIndeterminate\", toggleAllCheckboxTooltipMessage: \"toggleAllCheckboxTooltipMessage\", toogleAllCheckboxTooltipPosition: \"toogleAllCheckboxTooltipPosition\", hideClearSearchButton: \"hideClearSearchButton\", alwaysRestoreSelectedOptionsMulti: \"alwaysRestoreSelectedOptionsMulti\" }, outputs: { toggleAll: \"toggleAll\" }, host: { properties: { \"class.mat-select-search-inside-mat-option\": \"this.isInsideMatOption\" } }, providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => MatSelectSearchComponent),\n            multi: true\n        }\n    ], queries: [{ propertyName: \"clearIcon\", first: true, predicate: MatSelectSearchClearDirective, descendants: true }, { propertyName: \"noEntriesFound\", first: true, predicate: MatSelectNoEntriesFoundDirective, descendants: true }], viewQueries: [{ propertyName: \"searchSelectInput\", first: true, predicate: [\"searchSelectInput\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"innerSelectSearch\", first: true, predicate: [\"innerSelectSearch\"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: \"<!-- Placeholder to adjust vertical offset of the mat-option elements -->\\n<input matInput class=\\\"mat-select-search-input mat-select-search-hidden\\\"/>\\n\\n<!-- Note: the  mat-datepicker-content mat-tab-header are needed to inherit the material theme colors, see PR #22 -->\\n<div\\n      #innerSelectSearch\\n      class=\\\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\\\"\\n      [ngClass]=\\\"{'mat-select-search-inner-multiple': matSelect.multiple, 'mat-select-search-inner-toggle-all': _isToggleAllCheckboxVisible() }\\\">\\n\\n  <mat-checkbox *ngIf=\\\"_isToggleAllCheckboxVisible()\\\"\\n                [color]=\\\"matFormField?.color\\\"\\n                class=\\\"mat-select-search-toggle-all-checkbox\\\"\\n                [checked]=\\\"toggleAllCheckboxChecked\\\"\\n                [indeterminate]=\\\"toggleAllCheckboxIndeterminate\\\"\\n                [matTooltip]=\\\"toggleAllCheckboxTooltipMessage\\\"\\n                matTooltipClass=\\\"ngx-mat-select-search-toggle-all-tooltip\\\"\\n                [matTooltipPosition]=\\\"toogleAllCheckboxTooltipPosition\\\"\\n                (change)=\\\"_emitSelectAllBooleanToParent($event.checked)\\\"\\n  ></mat-checkbox>\\n\\n  <input class=\\\"mat-select-search-input mat-input-element\\\"\\n         autocomplete=\\\"off\\\"\\n         [type]=\\\"type\\\"\\n         [formControl]=\\\"_formControl\\\"\\n         #searchSelectInput\\n         (keydown)=\\\"_handleKeydown($event)\\\"\\n         (keyup)=\\\"_handleKeyup($event)\\\"\\n         (blur)=\\\"onBlur()\\\"\\n         [placeholder]=\\\"placeholderLabel\\\"\\n         [attr.aria-label]=\\\"ariaLabel\\\"\\n  />\\n  <mat-spinner *ngIf=\\\"searching\\\"\\n          class=\\\"mat-select-search-spinner\\\"\\n          diameter=\\\"16\\\"></mat-spinner>\\n\\n  <button mat-button\\n          *ngIf=\\\"!hideClearSearchButton && value && !searching\\\"\\n          mat-icon-button\\n          aria-label=\\\"Clear\\\"\\n          (click)=\\\"_reset(true)\\\"\\n          class=\\\"mat-select-search-clear\\\">\\n    <ng-content *ngIf=\\\"clearIcon; else defaultIcon\\\" select=\\\"[ngxMatSelectSearchClear]\\\"></ng-content>\\n    <ng-template #defaultIcon>\\n      <mat-icon [svgIcon]=\\\"closeSvgIcon\\\">\\n        {{!closeSvgIcon ? closeIcon : null}}\\n      </mat-icon>\\n    </ng-template>\\n  </button>\\n\\n  <ng-content select=\\\".mat-select-search-custom-header-content\\\"></ng-content>\\n\\n</div>\\n\\n<div *ngIf=\\\"_showNoEntriesFound$ | async\\\"\\n     class=\\\"mat-select-search-no-entries-found\\\">\\n  <ng-content *ngIf=\\\"noEntriesFound; else defaultNoEntriesFound\\\"\\n              select=\\\"[ngxMatSelectNoEntriesFound]\\\"></ng-content>\\n  <ng-template #defaultNoEntriesFound>{{noEntriesFoundLabel}}</ng-template>\\n</div>\\n<!--\\nCopyright (c) 2018 Bithost GmbH All Rights Reserved.\\n\\nUse of this source code is governed by an MIT-style license that can be\\nfound in the LICENSE file at https://angular.io/license\\n-->\\n\", styles: [\".mat-select-search-hidden{visibility:hidden}.mat-select-search-inner{position:absolute;top:0;width:100%;border-bottom-width:1px;border-bottom-style:solid;z-index:100;font-size:inherit;box-shadow:none;border-radius:4px 4px 0 0;-webkit-transform:translate3d(0,0,0)}.mat-select-search-inner.mat-select-search-inner-multiple{width:100%}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all{display:flex;align-items:center}.mat-select-search-inner .mat-input-element{flex-basis:auto}.mat-select-search-inner .mat-input-element:-ms-input-placeholder{-ms-user-select:text}::ng-deep .mat-select-search-panel{transform:none!important;overflow-x:hidden}.mat-select-search-input{padding:16px 44px 16px 16px;box-sizing:border-box;width:100%}:host-context([dir=rtl]) .mat-select-search-input{padding-right:16px;padding-left:44px}.mat-select-search-no-entries-found{padding:16px}.mat-select-search-clear{position:absolute;right:4px;top:5px}:host-context([dir=rtl]) .mat-select-search-clear{right:auto;left:4px}.mat-select-search-spinner{position:absolute;right:16px;top:calc(50% - 8px)}:host-context([dir=rtl]) .mat-select-search-spinner{right:auto;left:16px}:host.mat-select-search-inside-mat-option .mat-select-search-input{padding-top:0;padding-bottom:0;height:3em;line-height:3em}:host.mat-select-search-inside-mat-option .mat-select-search-clear{top:3px}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search{position:static;padding:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-option-pseudo-checkbox{display:none}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search.mat-select-search-no-entries-found{height:6em}.mat-select-search-toggle-all-checkbox{padding-left:16px;padding-bottom:2px}:host-context([dir=rtl]) .mat-select-search-toggle-all-checkbox{padding-left:0;padding-right:16px}\\n\"], components: [{ type: i3.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"disableRipple\", \"color\", \"tabIndex\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { type: i4.MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"diameter\", \"strokeWidth\", \"mode\", \"value\"], exportAs: [\"matProgressSpinner\"] }, { type: i5.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button],             button[mat-fab], button[mat-mini-fab], button[mat-stroked-button],             button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], directives: [{ type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i8.MatTooltip, selector: \"[matTooltip]\", exportAs: [\"matTooltip\"] }, { type: i9.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i9.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i9.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }], pipes: { \"async\": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: MatSelectSearchComponent, decorators: [{\n            type: Component,\n            args: [{ selector: 'ngx-mat-select-search', providers: [\n                        {\n                            provide: NG_VALUE_ACCESSOR,\n                            useExisting: forwardRef(() => MatSelectSearchComponent),\n                            multi: true\n                        }\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<!-- Placeholder to adjust vertical offset of the mat-option elements -->\\n<input matInput class=\\\"mat-select-search-input mat-select-search-hidden\\\"/>\\n\\n<!-- Note: the  mat-datepicker-content mat-tab-header are needed to inherit the material theme colors, see PR #22 -->\\n<div\\n      #innerSelectSearch\\n      class=\\\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\\\"\\n      [ngClass]=\\\"{'mat-select-search-inner-multiple': matSelect.multiple, 'mat-select-search-inner-toggle-all': _isToggleAllCheckboxVisible() }\\\">\\n\\n  <mat-checkbox *ngIf=\\\"_isToggleAllCheckboxVisible()\\\"\\n                [color]=\\\"matFormField?.color\\\"\\n                class=\\\"mat-select-search-toggle-all-checkbox\\\"\\n                [checked]=\\\"toggleAllCheckboxChecked\\\"\\n                [indeterminate]=\\\"toggleAllCheckboxIndeterminate\\\"\\n                [matTooltip]=\\\"toggleAllCheckboxTooltipMessage\\\"\\n                matTooltipClass=\\\"ngx-mat-select-search-toggle-all-tooltip\\\"\\n                [matTooltipPosition]=\\\"toogleAllCheckboxTooltipPosition\\\"\\n                (change)=\\\"_emitSelectAllBooleanToParent($event.checked)\\\"\\n  ></mat-checkbox>\\n\\n  <input class=\\\"mat-select-search-input mat-input-element\\\"\\n         autocomplete=\\\"off\\\"\\n         [type]=\\\"type\\\"\\n         [formControl]=\\\"_formControl\\\"\\n         #searchSelectInput\\n         (keydown)=\\\"_handleKeydown($event)\\\"\\n         (keyup)=\\\"_handleKeyup($event)\\\"\\n         (blur)=\\\"onBlur()\\\"\\n         [placeholder]=\\\"placeholderLabel\\\"\\n         [attr.aria-label]=\\\"ariaLabel\\\"\\n  />\\n  <mat-spinner *ngIf=\\\"searching\\\"\\n          class=\\\"mat-select-search-spinner\\\"\\n          diameter=\\\"16\\\"></mat-spinner>\\n\\n  <button mat-button\\n          *ngIf=\\\"!hideClearSearchButton && value && !searching\\\"\\n          mat-icon-button\\n          aria-label=\\\"Clear\\\"\\n          (click)=\\\"_reset(true)\\\"\\n          class=\\\"mat-select-search-clear\\\">\\n    <ng-content *ngIf=\\\"clearIcon; else defaultIcon\\\" select=\\\"[ngxMatSelectSearchClear]\\\"></ng-content>\\n    <ng-template #defaultIcon>\\n      <mat-icon [svgIcon]=\\\"closeSvgIcon\\\">\\n        {{!closeSvgIcon ? closeIcon : null}}\\n      </mat-icon>\\n    </ng-template>\\n  </button>\\n\\n  <ng-content select=\\\".mat-select-search-custom-header-content\\\"></ng-content>\\n\\n</div>\\n\\n<div *ngIf=\\\"_showNoEntriesFound$ | async\\\"\\n     class=\\\"mat-select-search-no-entries-found\\\">\\n  <ng-content *ngIf=\\\"noEntriesFound; else defaultNoEntriesFound\\\"\\n              select=\\\"[ngxMatSelectNoEntriesFound]\\\"></ng-content>\\n  <ng-template #defaultNoEntriesFound>{{noEntriesFoundLabel}}</ng-template>\\n</div>\\n<!--\\nCopyright (c) 2018 Bithost GmbH All Rights Reserved.\\n\\nUse of this source code is governed by an MIT-style license that can be\\nfound in the LICENSE file at https://angular.io/license\\n-->\\n\", styles: [\".mat-select-search-hidden{visibility:hidden}.mat-select-search-inner{position:absolute;top:0;width:100%;border-bottom-width:1px;border-bottom-style:solid;z-index:100;font-size:inherit;box-shadow:none;border-radius:4px 4px 0 0;-webkit-transform:translate3d(0,0,0)}.mat-select-search-inner.mat-select-search-inner-multiple{width:100%}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all{display:flex;align-items:center}.mat-select-search-inner .mat-input-element{flex-basis:auto}.mat-select-search-inner .mat-input-element:-ms-input-placeholder{-ms-user-select:text}::ng-deep .mat-select-search-panel{transform:none!important;overflow-x:hidden}.mat-select-search-input{padding:16px 44px 16px 16px;box-sizing:border-box;width:100%}:host-context([dir=rtl]) .mat-select-search-input{padding-right:16px;padding-left:44px}.mat-select-search-no-entries-found{padding:16px}.mat-select-search-clear{position:absolute;right:4px;top:5px}:host-context([dir=rtl]) .mat-select-search-clear{right:auto;left:4px}.mat-select-search-spinner{position:absolute;right:16px;top:calc(50% - 8px)}:host-context([dir=rtl]) .mat-select-search-spinner{right:auto;left:16px}:host.mat-select-search-inside-mat-option .mat-select-search-input{padding-top:0;padding-bottom:0;height:3em;line-height:3em}:host.mat-select-search-inside-mat-option .mat-select-search-clear{top:3px}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search{position:static;padding:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search .mat-option-pseudo-checkbox{display:none}::ng-deep .mat-option[aria-disabled=true].contains-mat-select-search.mat-select-search-no-entries-found{height:6em}.mat-select-search-toggle-all-checkbox{padding-left:16px;padding-bottom:2px}:host-context([dir=rtl]) .mat-select-search-toggle-all-checkbox{padding-left:0;padding-right:16px}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i10.MatSelect, decorators: [{\n                    type: Inject,\n                    args: [MatSelect]\n                }] }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: i11.MatOption, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [MatOption]\n                }] }, { type: i2.LiveAnnouncer }, { type: i12.MatFormField, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [MatFormField]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [MAT_SELECTSEARCH_DEFAULT_OPTIONS]\n                }] }]; }, propDecorators: { placeholderLabel: [{\n                type: Input\n            }], type: [{\n                type: Input\n            }], closeIcon: [{\n                type: Input\n            }], closeSvgIcon: [{\n                type: Input\n            }], noEntriesFoundLabel: [{\n                type: Input\n            }], indexAndLengthScreenReaderText: [{\n                type: Input\n            }], clearSearchInput: [{\n                type: Input\n            }], searching: [{\n                type: Input\n            }], disableInitialFocus: [{\n                type: Input\n            }], enableClearOnEscapePressed: [{\n                type: Input\n            }], preventHomeEndKeyPropagation: [{\n                type: Input\n            }], disableScrollToActiveOnOptionsChanged: [{\n                type: Input\n            }], ariaLabel: [{\n                type: Input\n            }], showToggleAllCheckbox: [{\n                type: Input\n            }], toggleAllCheckboxChecked: [{\n                type: Input\n            }], toggleAllCheckboxIndeterminate: [{\n                type: Input\n            }], toggleAllCheckboxTooltipMessage: [{\n                type: Input\n            }], toogleAllCheckboxTooltipPosition: [{\n                type: Input\n            }], hideClearSearchButton: [{\n                type: Input\n            }], alwaysRestoreSelectedOptionsMulti: [{\n                type: Input\n            }], toggleAll: [{\n                type: Output\n            }], searchSelectInput: [{\n                type: ViewChild,\n                args: ['searchSelectInput', { read: ElementRef, static: true }]\n            }], innerSelectSearch: [{\n                type: ViewChild,\n                args: ['innerSelectSearch', { read: ElementRef, static: true }]\n            }], clearIcon: [{\n                type: ContentChild,\n                args: [MatSelectSearchClearDirective]\n            }], noEntriesFound: [{\n                type: ContentChild,\n                args: [MatSelectNoEntriesFoundDirective]\n            }], isInsideMatOption: [{\n                type: HostBinding,\n                args: ['class.mat-select-search-inside-mat-option']\n            }] } });\n\n/**\n * Copyright (c) 2018 Bithost GmbH All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MatSelectSearchVersion = '4.2.1';\nclass NgxMatSelectSearchModule {\n}\nNgxMatSelectSearchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: NgxMatSelectSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgxMatSelectSearchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: NgxMatSelectSearchModule, declarations: [MatSelectSearchComponent,\n        MatSelectSearchClearDirective,\n        MatSelectNoEntriesFoundDirective], imports: [CommonModule,\n        ReactiveFormsModule,\n        MatButtonModule,\n        MatCheckboxModule,\n        MatIconModule,\n        MatProgressSpinnerModule,\n        MatTooltipModule], exports: [MatSelectSearchComponent,\n        MatSelectSearchClearDirective,\n        MatSelectNoEntriesFoundDirective] });\nNgxMatSelectSearchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: NgxMatSelectSearchModule, imports: [[\n            CommonModule,\n            ReactiveFormsModule,\n            MatButtonModule,\n            MatCheckboxModule,\n            MatIconModule,\n            MatProgressSpinnerModule,\n            MatTooltipModule\n        ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.10\", ngImport: i0, type: NgxMatSelectSearchModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [\n                        CommonModule,\n                        ReactiveFormsModule,\n                        MatButtonModule,\n                        MatCheckboxModule,\n                        MatIconModule,\n                        MatProgressSpinnerModule,\n                        MatTooltipModule\n                    ],\n                    declarations: [\n                        MatSelectSearchComponent,\n                        MatSelectSearchClearDirective,\n                        MatSelectNoEntriesFoundDirective\n                    ],\n                    exports: [\n                        MatSelectSearchComponent,\n                        MatSelectSearchClearDirective,\n                        MatSelectNoEntriesFoundDirective\n                    ]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MATSELECTSEARCH_GLOBAL_OPTIONS, MAT_SELECTSEARCH_DEFAULT_OPTIONS, MatSelectNoEntriesFoundDirective, MatSelectSearchClearDirective, MatSelectSearchComponent, MatSelectSearchVersion, NgxMatSelectSearchModule, configurableDefaultOptions, configurableGlobalOptions };\n"],"names":["PLATFORM_ID","Validators","isPlatformBrowser","moment","i0","AddComponent","constructor","appService","formBuilder","activatedRoute","encrypt","snackBar","router","platformId","ngOnInit","form","group","Id","Name","compose","required","minLength","Description","Price","pattern","IsVegetarian","CategoryId","image","getCategoriesList","sub","params","subscribe","id","getMenuItemById","showImage","ngOnDestroy","unsubscribe","CategoriesList","next","data","body","JSON","parse","stringify","Data","categories","error","e","complete","getMenuById","console","log","item","patchValue","Images","Medium","doesFileExist","controls","format","urlToFile","xhr","XMLHttpRequest","open","send","status","ex","fileChange","files","length","content","undefined","deleteImage","onSubmit","value","valid","formdata","username","localStorage","getItem","TamuApp","Decrypt","Username","req","DoneBy","HasImage","Menus","response","ResponseCode","MenuList","uploadImage","navigate","panelClass","verticalPosition","duration","ResponseDesc","Body","MenuId","UploadMenuImage","DeleteMenuImage","selectors","decls","vars","consts","template","ctx","CategoryDialogComponent","CategoriesComponent","dataSource","remove","message","getTranslateValue","dialogRef","openConfirmDialog","afterClosed","dialogResult","DeleteCategory","toString","edit","openCategoryDialog","category","openDialog","cat","Category","name","Status","AllowDiscount","MenuCategories","MAT_DIALOG_DATA","fb","close","DivisionDialogComponent","division","Division","DivisionsComponent","getDivisionsList","DivisionsList","DeleteDivision","openDivisionDialog","MenuDivisions","exportDataGrid","Workbook","saveAs","ListComponent","route","getMenuList","loading","onExporting","workbook","worksheet","addWorksheet","component","autoFilterEnabled","then","xlsx","writeBuffer","buffer","Blob","type","cancel","DeleteMenu","CommonModule","RouterModule","SharedModule","DxDataGridModule","MenuComponent","MatNativeDateModule","MatRippleModule","MAT_DATE_LOCALE","MatDatepickerModule","MatDialogModule","PERFECT_SCROLLBAR_CONFIG","NgxMatSelectSearchModule","AuthGuard","DEFAULT_PERFECT_SCROLLBAR_CONFIG","wheelPropagation","suppressScrollX","routes","path","redirectTo","pathMatch","breadcrumb","canActivate","MenuItemsModule","provide","useValue","imports","forChild","declarations","i1","FormControl","ReplaySubject","Subject","takeUntil","renderer","Date","menuslist","DivisionId","date","repeat","frequencycount","min","endDate","Sun","Mon","Tue","Wed","Thu","Fri","Sat","wDate","dDay","getDay","first","getDate","firstDayWeek","setDate","lastDayWeek","today","toDate","toLocaleString","timeZone","DateFrom","DateTo","ListMenuShedules","getDivisionList","filterMenus","search","menuFilterCtrl","filteredmenus","slice","toLowerCase","filter","menu","indexOf","_onDestroy","CategorySelected","getFilteredMenu","repeatSelected","frequency","freqValChange","freqcount","target","catId","menudata","valueChanges","pipe","FilterByDate","event","ShowCategories","divisions","CancelEdit","onedit","categoryId","mdata","divisionId","menuId","dateServed","selectRootElement","focus","DateServed","MenuSchedules","DeleteMenuSchedule","$event","A","Z","ZERO","NINE","SPACE","HOME","END","ENTER","ESCAPE","UP_ARROW","DOWN_ARROW","Directive","InjectionToken","EventEmitter","forwardRef","ElementRef","Component","ChangeDetectionStrategy","Inject","Optional","Input","Output","ViewChild","ContentChild","HostBinding","NgModule","i9","NG_VALUE_ACCESSOR","ReactiveFormsModule","i11","_countGroupLabelsBeforeOption","MatOption","i12","MatFormField","i10","MatSelect","BehaviorSubject","of","combineLatest","switchMap","map","startWith","delay","take","tap","i2","i3","MatCheckboxModule","i4","MatProgressSpinnerModule","i5","MatButtonModule","i6","MatIconModule","i7","i8","MatTooltipModule","MatSelectSearchClearDirective","ɵfac","ɵdir","configurableDefaultOptions","MAT_SELECTSEARCH_DEFAULT_OPTIONS","configurableGlobalOptions","MATSELECTSEARCH_GLOBAL_OPTIONS","MatSelectNoEntriesFoundDirective","SELECT_PANEL_MAX_HEIGHT","MatSelectSearchComponent","matSelect","changeDetectorRef","_viewportRuler","matOption","liveAnnouncer","matFormField","defaultOptions","placeholderLabel","closeIcon","noEntriesFoundLabel","indexAndLengthScreenReaderText","clearSearchInput","searching","disableInitialFocus","enableClearOnEscapePressed","preventHomeEndKeyPropagation","disableScrollToActiveOnOptionsChanged","ariaLabel","showToggleAllCheckbox","toggleAllCheckboxChecked","toggleAllCheckboxIndeterminate","toggleAllCheckboxTooltipMessage","toogleAllCheckboxTooltipPosition","hideClearSearchButton","alwaysRestoreSelectedOptionsMulti","toggleAll","onTouched","_","_options$","optionsList$","_options","changes","options","toArray","optionsLength$","_formControl","_showNoEntriesFound$","optionsLength","getOptionsLengthOffset","applyDefaultOptions","isInsideMatOption","getValue","key","hasOwnProperty","Array","isArray","push","disabled","_getHostElement","classList","add","openedChange","opened","updateInputWidth","_focus","_reset","_keyManager","change","adjustScrollTopToFitActiveOptionIntoView","previousFirstOption","setTimeout","currentFirstOption","keyManager","panelOpen","firstOptionIsChanged","compareWith","activeItem","find","option","setFirstItemActive","showNoEntriesFound","initMultipleHandling","markForCheck","_emitSelectAllBooleanToParent","state","emit","_isToggleAllCheckboxVisible","multiple","_handleKeydown","keyCode","stopPropagation","_handleKeyup","ariaActiveDescendantId","_getAriaActiveDescendant","index","findIndex","activeDescendant","announce","viewValue","getAriaIndex","getAriaLength","optionIndex","writeValue","_lastExternalInputValue","setValue","onBlur","registerOnChange","fn","registerOnTouched","searchSelectInput","panel","nativeElement","scrollTop","ngControl","previousSelectedValues","values","restoreSelectedValues","optionValues","forEach","previousValue","some","v","_onChange","matOptionHeight","getMatOptionHeight","activeOptionIndex","activeItemIndex","labelCount","optionGroups","indexOfOptionToFitIntoView","currentScrollTop","searchInputHeight","innerSelectSearch","offsetHeight","amountOfVisibleOptions","Math","floor","indexOfFirstVisibleOption","round","element","panelElement","parentElement","contains","style","width","clientWidth","getBoundingClientRect","height","ChangeDetectorRef","ViewportRuler","LiveAnnouncer","ɵcmp","useExisting","multi","MatCheckbox","MatProgressSpinner","MatButton","MatIcon","NgClass","NgIf","MatTooltip","DefaultValueAccessor","NgControlStatus","FormControlDirective","AsyncPipe","MatSelectSearchVersion","ɵmod","ɵinj"],"sourceRoot":"webpack:///"}