{"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 \n <mat-checkbox matCheckbox formControlName=\"Mon\" color=\"primary\">Mon</mat-checkbox>\n \n <mat-checkbox matCheckbox formControlName=\"Tue\" color=\"primary\">Tue</mat-checkbox>\n \n <mat-checkbox matCheckbox formControlName=\"Wed\" color=\"primary\">Wed</mat-checkbox>\n \n <mat-checkbox matCheckbox formControlName=\"Thu\" color=\"primary\">Thu</mat-checkbox>\n \n <mat-checkbox matCheckbox formControlName=\"Fri\" color=\"primary\">Fri</mat-checkbox>\n \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 \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:///"}