techlify-inventory-common 18.1.0 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +11 -1
  2. package/esm2022/lib/inventory-common/inventory-common.module.mjs +8 -4
  3. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +10 -8
  4. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +21 -0
  5. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +23 -0
  6. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +9 -7
  7. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +3 -3
  8. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +92 -0
  9. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +18 -0
  10. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +170 -0
  11. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +165 -0
  12. package/esm2022/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.mjs +64 -0
  13. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.mjs +43 -0
  14. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +11 -3
  15. package/esm2022/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.mjs +6 -65
  16. package/fesm2022/{techlify-inventory-common-category.module-CNm2bEsx.mjs → techlify-inventory-common-category.module-BKEBFEeZ.mjs} +9 -9
  17. package/fesm2022/{techlify-inventory-common-category.module-CNm2bEsx.mjs.map → techlify-inventory-common-category.module-BKEBFEeZ.mjs.map} +1 -1
  18. package/fesm2022/{techlify-inventory-common-measure.module-BEaRHh5Z.mjs → techlify-inventory-common-measure.module-CZHhYoQd.mjs} +9 -9
  19. package/fesm2022/{techlify-inventory-common-measure.module-BEaRHh5Z.mjs.map → techlify-inventory-common-measure.module-CZHhYoQd.mjs.map} +1 -1
  20. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs → techlify-inventory-common-stock-issuances.module-BjPbzqUW.mjs} +2 -4
  21. package/fesm2022/{techlify-inventory-common-stock-issuances.module-BQRRP-hW.mjs.map → techlify-inventory-common-stock-issuances.module-BjPbzqUW.mjs.map} +1 -1
  22. package/fesm2022/{techlify-inventory-common-supplier.module-Bwa7gx14.mjs → techlify-inventory-common-supplier.module-CFDwJ-TS.mjs} +251 -218
  23. package/fesm2022/techlify-inventory-common-supplier.module-CFDwJ-TS.mjs.map +1 -0
  24. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CYiCJfk9.mjs +3143 -0
  25. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CYiCJfk9.mjs.map +1 -0
  26. package/fesm2022/techlify-inventory-common.mjs +1 -1
  27. package/lib/inventory-common/inventory-common.module.d.ts +2 -1
  28. package/lib/inventory-common/inventory-value-report.service.d.ts +9 -0
  29. package/lib/inventory-common/low-stock-report.service.d.ts +10 -0
  30. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +15 -0
  31. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +6 -0
  32. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +26 -0
  33. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +26 -0
  34. package/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.d.ts +18 -0
  35. package/lib/inventory-common/supplier/supplier-form/supplier-form-button/supplier-form-button.component.d.ts +13 -0
  36. package/lib/inventory-common/supplier/supplier.module.d.ts +3 -1
  37. package/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.d.ts +0 -8
  38. package/package.json +1 -1
  39. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs +0 -1168
  40. package/fesm2022/techlify-inventory-common-product.module-BV9Cy88x.mjs.map +0 -1
  41. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs +0 -436
  42. package/fesm2022/techlify-inventory-common-stock-issuances-list.module-Dt6gx-ji.mjs.map +0 -1
  43. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs +0 -302
  44. package/fesm2022/techlify-inventory-common-stock-receipt-form.module-DND0GNlf.mjs.map +0 -1
  45. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs +0 -253
  46. package/fesm2022/techlify-inventory-common-stock-receipts.module-BvYaKITT.mjs.map +0 -1
  47. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs +0 -177
  48. package/fesm2022/techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs.map +0 -1
  49. package/fesm2022/techlify-inventory-common-supplier.module-Bwa7gx14.mjs.map +0 -1
  50. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs +0 -14
  51. package/fesm2022/techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs.map +0 -1
  52. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs +0 -495
  53. package/fesm2022/techlify-inventory-common-techlify-inventory-common-GFYF7JCA.mjs.map +0 -1
@@ -1,46 +1,44 @@
1
1
  import * as i1$1 from 'ngx-techlify-core';
2
2
  import { ActionPopupComponent, TechlifyListingControllerInterface, SearchableSelectorModule, AuditLogForModelModule, NoteModule } from 'ngx-techlify-core';
3
3
  import * as i0 from '@angular/core';
4
- import { Input, Component, Injectable, NgModule } from '@angular/core';
5
- import * as i4 from '@angular/common';
4
+ import { Input, Component, Injectable, NgModule, EventEmitter, Output } from '@angular/core';
5
+ import * as i4$1 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import { lastValueFrom, debounceTime, distinctUntilChanged } from 'rxjs';
8
- import { S as SupplierFormComponent, a as SupplierService } from './techlify-inventory-common-supplier-form.component-DVBnhiyH.mjs';
8
+ import { S as SupplierFormComponent, a as SupplierService, T as TechlifyFormService } from './techlify-inventory-common-techlify-inventory-common-CYiCJfk9.mjs';
9
9
  import * as i2 from '@angular/router';
10
10
  import { RouterModule } from '@angular/router';
11
- import * as i3 from '@angular/material/card';
11
+ import * as i4 from '@angular/material/card';
12
12
  import { MatCardModule } from '@angular/material/card';
13
13
  import * as i7 from '@angular/material/progress-bar';
14
14
  import { MatProgressBarModule } from '@angular/material/progress-bar';
15
- import * as i6$1 from '@angular/material/tabs';
15
+ import * as i6 from '@angular/material/tabs';
16
16
  import { MatTabsModule } from '@angular/material/tabs';
17
17
  import * as i1 from '@angular/material/dialog';
18
18
  import { MatDialogModule } from '@angular/material/dialog';
19
- import * as i6 from '@angular/material/divider';
19
+ import * as i3 from '@angular/material/divider';
20
20
  import { MatDividerModule } from '@angular/material/divider';
21
21
  import * as i3$1 from '@angular/material/icon';
22
22
  import { MatIconModule } from '@angular/material/icon';
23
- import { T as TechlifyFormService } from './techlify-inventory-common-techlify-form-service-CiVfwYTS.mjs';
24
23
  import { __decorate } from 'tslib';
25
24
  import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
26
- import * as i3$2 from 'ngx-spinner';
25
+ import * as i4$2 from 'ngx-spinner';
27
26
  import * as i2$1 from '@angular/forms';
28
27
  import { ReactiveFormsModule } from '@angular/forms';
29
- import * as i6$2 from '@angular/material/form-field';
28
+ import * as i7$1 from '@angular/material/form-field';
30
29
  import { MatFormFieldModule } from '@angular/material/form-field';
31
- import * as i7$1 from '@angular/material/input';
30
+ import * as i9 from '@angular/material/input';
32
31
  import { MatInputModule } from '@angular/material/input';
33
- import * as i5 from '@angular/material/sort';
32
+ import * as i13 from '@angular/material/sort';
34
33
  import { MatSortModule } from '@angular/material/sort';
35
- import * as i6$3 from '@angular/material/table';
34
+ import * as i14 from '@angular/material/table';
36
35
  import { MatTableModule } from '@angular/material/table';
37
36
  import * as i2$2 from '@angular/material/tooltip';
38
37
  import { MatTooltipModule } from '@angular/material/tooltip';
39
38
  import * as i10 from 'ngx-infinite-scroll';
40
39
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
41
- import * as i18 from 'ngx-permissions';
40
+ import * as i5 from 'ngx-permissions';
42
41
  import { NgxPermissionsModule } from 'ngx-permissions';
43
- import { FlexModule } from '@angular/flex-layout';
44
42
  import { MatCommonModule, MatLineModule, MatNativeDateModule, MatOptionModule, MatPseudoCheckboxModule, MatRippleModule } from '@angular/material/core';
45
43
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
46
44
  import { MatBadgeModule } from '@angular/material/badge';
@@ -64,6 +62,7 @@ import { MatSnackBarModule } from '@angular/material/snack-bar';
64
62
  import { MatStepperModule } from '@angular/material/stepper';
65
63
  import { MatToolbarModule } from '@angular/material/toolbar';
66
64
  import { MatTreeModule } from '@angular/material/tree';
65
+ import { FlexModule } from '@angular/flex-layout';
67
66
 
68
67
  class SupplierInformationComponent {
69
68
  dialog;
@@ -117,7 +116,7 @@ class SupplierInformationComponent {
117
116
  });
118
117
  }
119
118
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierInformationComponent, deps: [{ token: i1.MatDialog }, { token: SupplierService }, { token: i1$1.AlertService }, { token: i2.Router }, { token: i1$1.ErrorHandlerService }], target: i0.ɵɵFactoryTarget.Component });
120
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierInformationComponent, selector: "app-supplier-information", inputs: { supplier: "supplier" }, ngImport: i0, template: "<mat-card>\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-0\">Personal Information</h3>\n <div class=\"d-flex justify-content-end align-items-center gap-1\">\n <app-audit-log-for-model\n [modelId]=\"supplier?.id\"\n modelType=\"Supplier\"\n logView=\"all\"\n ></app-audit-log-for-model>\n <mat-icon\n class=\"material-icons cursor-pointer\"\n (click)=\"modifySupplier(supplier)\"\n >\n edit\n </mat-icon>\n <mat-icon\n class=\"material-icons cursor-pointer\"\n (click)=\"deleteSupplier(supplier)\"\n >\n delete\n </mat-icon>\n </div>\n </div>\n\n <mat-divider></mat-divider>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-content-start gap-2\">\n <div>\n <h3 class=\"mb-0\">{{ supplier?.company_name }}</h3>\n <span class=\"status-pill-sm status-light-orange\">{{\n supplier?.type?.title\n }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Contact Name</p>\n <p class=\"text-wrap\">{{ supplier?.contact_name }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Email</p>\n <p class=\"text-wrap\">{{ supplier?.email }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Phone</p>\n <p class=\"text-wrap\">{{ supplier?.phone }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Details</p>\n <p class=\"text-wrap\">{{ supplier?.details }}</p>\n </div>\n </div>\n\n <div class=\"row mt-2 h-100\">\n <div class=\"d-flex\">\n <mat-icon class=\"material-icons text-primary my-auto\"\n >location_on</mat-icon\n >\n <p class=\"ms-2 my-auto\">{{ supplier?.address }}</p>\n </div>\n </div>\n </mat-card-content>\n</mat-card>\n", dependencies: [{ kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1$1.AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: ["modelType", "modelId", "logView"] }], preserveWhitespaces: true });
119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierInformationComponent, selector: "app-supplier-information", inputs: { supplier: "supplier" }, ngImport: i0, template: "<mat-card>\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center\">\n <h3 class=\"mb-0\">Personal Information</h3>\n <div class=\"d-flex justify-content-end align-items-center gap-1\">\n <app-audit-log-for-model\n [modelId]=\"supplier?.id\"\n modelType=\"Supplier\"\n logView=\"all\"\n ></app-audit-log-for-model>\n <mat-icon\n class=\"material-icons cursor-pointer\"\n (click)=\"modifySupplier(supplier)\"\n >\n edit\n </mat-icon>\n <mat-icon\n class=\"material-icons cursor-pointer\"\n (click)=\"deleteSupplier(supplier)\"\n >\n delete\n </mat-icon>\n </div>\n </div>\n\n <mat-divider></mat-divider>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-content-start gap-2\">\n <div>\n <h3 class=\"mb-0\">{{ supplier?.company_name }}</h3>\n <span class=\"status-pill-sm status-light-orange\">{{\n supplier?.type?.title\n }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Contact Name</p>\n <p class=\"text-wrap\">{{ supplier?.contact_name }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Email</p>\n <p class=\"text-wrap\">{{ supplier?.email }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Phone</p>\n <p class=\"text-wrap\">{{ supplier?.phone }}</p>\n </div>\n <div class=\"col-6\">\n <p class=\"text-muted mb-0\">Details</p>\n <p class=\"text-wrap\">{{ supplier?.details }}</p>\n </div>\n </div>\n\n <div class=\"row mt-2 h-100\">\n <div class=\"d-flex\">\n <mat-icon class=\"material-icons text-primary my-auto\"\n >location_on</mat-icon\n >\n <p class=\"ms-2 my-auto\">{{ supplier?.address }}</p>\n </div>\n </div>\n </mat-card-content>\n</mat-card>\n", dependencies: [{ kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1$1.AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: ["modelType", "modelId", "logView"] }], preserveWhitespaces: true });
121
120
  }
122
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierInformationComponent, decorators: [{
123
122
  type: Component,
@@ -174,7 +173,7 @@ class SupplierViewComponent {
174
173
  this.supplier = result.item;
175
174
  }
176
175
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierViewComponent, deps: [{ token: SupplierService }, { token: i2.ActivatedRoute }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierViewComponent, selector: "app-supplier-view", ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"supplier\" class=\"d-flex justify-content-start gap-3\">\n <div style=\"width: 300px\">\n <app-supplier-information [supplier]=\"supplier\"></app-supplier-information>\n <mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <app-note-list\n modelType=\"Supplier\"\n [relatedModelId]=\"supplier?.id\"\n ></app-note-list>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div style=\"width: calc(100% - 300px - 1rem)\">\n <mat-card style=\"width: fit-content\">\n <mat-card-content class=\"p-0\">\n <mat-tab-group\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [selectedIndex]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n >\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">unknown_document</span>\n <span class=\"pl-2\">Incidents</span>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">star</span>\n <span class=\"pl-2\">Ratings</span>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">price_change</span>\n <span class=\"pl-2\">Estimates</span>\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-card-content>\n </mat-card>\n <router-outlet></router-outlet>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i6$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i6$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i1$1.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: SupplierInformationComponent, selector: "app-supplier-information", inputs: ["supplier"] }], preserveWhitespaces: true });
176
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierViewComponent, selector: "app-supplier-view", ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n\n<div *ngIf=\"supplier\" class=\"d-flex justify-content-start gap-3\">\n <div style=\"width: 300px\">\n <app-supplier-information [supplier]=\"supplier\"></app-supplier-information>\n <mat-card class=\"mt-3\">\n <mat-card-content class=\"p-0\">\n <app-note-list\n modelType=\"Supplier\"\n [relatedModelId]=\"supplier?.id\"\n ></app-note-list>\n </mat-card-content>\n </mat-card>\n </div>\n\n <div style=\"width: calc(100% - 300px - 1rem)\">\n <mat-card style=\"width: fit-content\">\n <mat-card-content class=\"p-0\">\n <mat-tab-group\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [selectedIndex]=\"selectedTabIndex\"\n (selectedTabChange)=\"onTabChange($event)\"\n >\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">unknown_document</span>\n <span class=\"pl-2\">Incidents</span>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">star</span>\n <span class=\"pl-2\">Ratings</span>\n </div>\n </ng-template>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <div\n class=\"d-flex justify-content-start align-items-center gap-1\"\n >\n <span class=\"material-symbols-outlined\">price_change</span>\n <span class=\"pl-2\">Estimates</span>\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </mat-card-content>\n </mat-card>\n <router-outlet></router-outlet>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i6.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i1$1.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: SupplierInformationComponent, selector: "app-supplier-information", inputs: ["supplier"] }], preserveWhitespaces: true });
178
177
  }
179
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierViewComponent, decorators: [{
180
179
  type: Component,
@@ -210,6 +209,229 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
210
209
  args: [{ selector: "app-supplier", template: "<div>\n <router-outlet></router-outlet>\n</div>\n" }]
211
210
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: SupplierFormService }] });
212
211
 
212
+ /*
213
+ * This module imports and re-exports all Angular Material modules for convenience,
214
+ * so only 1 module import is needed in your feature modules.
215
+ * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.
216
+ *
217
+ * To optimize your production builds, you should only import the components used in your app.
218
+ */
219
+ class MaterialModule {
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
221
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, exports: [MatAutocompleteModule,
222
+ MatBadgeModule,
223
+ MatButtonModule,
224
+ MatButtonToggleModule,
225
+ MatCardModule,
226
+ MatCheckboxModule,
227
+ MatChipsModule,
228
+ MatCommonModule,
229
+ MatDatepickerModule,
230
+ MatDialogModule,
231
+ MatDividerModule,
232
+ MatExpansionModule,
233
+ MatFormFieldModule,
234
+ MatGridListModule,
235
+ MatIconModule,
236
+ MatInputModule,
237
+ MatLineModule,
238
+ MatListModule,
239
+ MatMenuModule,
240
+ MatNativeDateModule,
241
+ MatOptionModule,
242
+ MatPaginatorModule,
243
+ MatProgressBarModule,
244
+ MatProgressSpinnerModule,
245
+ MatPseudoCheckboxModule,
246
+ MatRadioModule,
247
+ MatRippleModule,
248
+ MatSelectModule,
249
+ MatSidenavModule,
250
+ MatSlideToggleModule,
251
+ MatSliderModule,
252
+ MatSnackBarModule,
253
+ MatSortModule,
254
+ MatStepperModule,
255
+ MatTableModule,
256
+ MatTabsModule,
257
+ MatToolbarModule,
258
+ MatTooltipModule,
259
+ MatTreeModule] });
260
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, imports: [MatAutocompleteModule,
261
+ MatBadgeModule,
262
+ MatButtonModule,
263
+ MatButtonToggleModule,
264
+ MatCardModule,
265
+ MatCheckboxModule,
266
+ MatChipsModule,
267
+ MatCommonModule,
268
+ MatDatepickerModule,
269
+ MatDialogModule,
270
+ MatDividerModule,
271
+ MatExpansionModule,
272
+ MatFormFieldModule,
273
+ MatGridListModule,
274
+ MatIconModule,
275
+ MatInputModule,
276
+ MatLineModule,
277
+ MatListModule,
278
+ MatMenuModule,
279
+ MatNativeDateModule,
280
+ MatOptionModule,
281
+ MatPaginatorModule,
282
+ MatProgressBarModule,
283
+ MatProgressSpinnerModule,
284
+ MatPseudoCheckboxModule,
285
+ MatRadioModule,
286
+ MatRippleModule,
287
+ MatSelectModule,
288
+ MatSidenavModule,
289
+ MatSlideToggleModule,
290
+ MatSliderModule,
291
+ MatSnackBarModule,
292
+ MatSortModule,
293
+ MatStepperModule,
294
+ MatTableModule,
295
+ MatTabsModule,
296
+ MatToolbarModule,
297
+ MatTooltipModule,
298
+ MatTreeModule] });
299
+ }
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, decorators: [{
301
+ type: NgModule,
302
+ args: [{
303
+ exports: [
304
+ MatAutocompleteModule,
305
+ MatBadgeModule,
306
+ MatButtonModule,
307
+ MatButtonToggleModule,
308
+ MatCardModule,
309
+ MatCheckboxModule,
310
+ MatChipsModule,
311
+ MatCommonModule,
312
+ MatDatepickerModule,
313
+ MatDialogModule,
314
+ MatDividerModule,
315
+ MatExpansionModule,
316
+ MatFormFieldModule,
317
+ MatGridListModule,
318
+ MatIconModule,
319
+ MatInputModule,
320
+ MatLineModule,
321
+ MatListModule,
322
+ MatMenuModule,
323
+ MatNativeDateModule,
324
+ MatOptionModule,
325
+ MatPaginatorModule,
326
+ MatProgressBarModule,
327
+ MatProgressSpinnerModule,
328
+ MatPseudoCheckboxModule,
329
+ MatRadioModule,
330
+ MatRippleModule,
331
+ MatSelectModule,
332
+ MatSidenavModule,
333
+ MatSlideToggleModule,
334
+ MatSliderModule,
335
+ MatSnackBarModule,
336
+ MatSortModule,
337
+ MatStepperModule,
338
+ MatTableModule,
339
+ MatTabsModule,
340
+ MatToolbarModule,
341
+ MatTooltipModule,
342
+ MatTreeModule,
343
+ ],
344
+ }]
345
+ }] });
346
+
347
+ class SupplierFormButtonComponent {
348
+ matDialog;
349
+ supplier;
350
+ onSaved = new EventEmitter();
351
+ constructor(matDialog) {
352
+ this.matDialog = matDialog;
353
+ }
354
+ ngOnInit() {
355
+ }
356
+ openDialog() {
357
+ this.matDialog.open(SupplierFormComponent, {
358
+ width: '600px',
359
+ data: {
360
+ details: this.supplier
361
+ },
362
+ }).afterClosed().subscribe((result) => {
363
+ if (result) {
364
+ this.onSaved.emit(result);
365
+ }
366
+ });
367
+ }
368
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierFormButtonComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
369
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierFormButtonComponent, isStandalone: true, selector: "app-supplier-form-button", inputs: { supplier: "supplier" }, outputs: { onSaved: "onSaved" }, ngImport: i0, template: "<mat-icon color=\"primary\" class=\"cursor-pointer\" [class.text-secondary]=\"supplier\" (click)=\"openDialog()\">\n {{ supplier ? \"edit\" : \"add\" }}\n</mat-icon>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], preserveWhitespaces: true });
370
+ }
371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierFormButtonComponent, decorators: [{
372
+ type: Component,
373
+ args: [{ selector: 'app-supplier-form-button', standalone: true, imports: [
374
+ CommonModule,
375
+ MaterialModule
376
+ ], template: "<mat-icon color=\"primary\" class=\"cursor-pointer\" [class.text-secondary]=\"supplier\" (click)=\"openDialog()\">\n {{ supplier ? \"edit\" : \"add\" }}\n</mat-icon>" }]
377
+ }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { supplier: [{
378
+ type: Input
379
+ }], onSaved: [{
380
+ type: Output
381
+ }] } });
382
+
383
+ class SupplierDeleteButtonComponent {
384
+ dialog;
385
+ alertService;
386
+ errorHandler;
387
+ supplierService;
388
+ supplier;
389
+ onDelete = new EventEmitter();
390
+ constructor(dialog, alertService, errorHandler, supplierService) {
391
+ this.dialog = dialog;
392
+ this.alertService = alertService;
393
+ this.errorHandler = errorHandler;
394
+ this.supplierService = supplierService;
395
+ }
396
+ ngOnInit() {
397
+ }
398
+ openDialog() {
399
+ this.dialog.open(ActionPopupComponent, {
400
+ width: '400px',
401
+ data: {
402
+ title: 'Delete Supplier',
403
+ message: 'Are you sure you want to delete the Supplier?',
404
+ },
405
+ autoFocus: false,
406
+ }).afterClosed().subscribe(async (result) => {
407
+ if (result) {
408
+ try {
409
+ await lastValueFrom(this.supplierService.destroy(this.supplier.id));
410
+ this.alertService.addAlert('Successfully deleted the Supplier', 'success');
411
+ this.onDelete.emit(this.supplier);
412
+ }
413
+ catch (error) {
414
+ this.errorHandler.handleError(error);
415
+ }
416
+ }
417
+ });
418
+ }
419
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierDeleteButtonComponent, deps: [{ token: i1.MatDialog }, { token: i1$1.AlertService }, { token: i1$1.ErrorHandlerService }, { token: SupplierService }], target: i0.ɵɵFactoryTarget.Component });
420
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupplierDeleteButtonComponent, isStandalone: true, selector: "app-supplier-delete-button", inputs: { supplier: "supplier" }, outputs: { onDelete: "onDelete" }, ngImport: i0, template: "<mat-icon class=\"cursor-pointer\" *ngxPermissionsOnly=\"['supplier.delete']\" (click)=\"openDialog()\">\n delete\n</mat-icon>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxPermissionsModule }, { kind: "directive", type: i5.NgxPermissionsDirective, selector: "[ngxPermissionsOnly],[ngxPermissionsExcept]", inputs: ["ngxPermissionsOnly", "ngxPermissionsOnlyThen", "ngxPermissionsOnlyElse", "ngxPermissionsExcept", "ngxPermissionsExceptElse", "ngxPermissionsExceptThen", "ngxPermissionsThen", "ngxPermissionsElse", "ngxPermissionsOnlyAuthorisedStrategy", "ngxPermissionsOnlyUnauthorisedStrategy", "ngxPermissionsExceptUnauthorisedStrategy", "ngxPermissionsExceptAuthorisedStrategy", "ngxPermissionsUnauthorisedStrategy", "ngxPermissionsAuthorisedStrategy"], outputs: ["permissionsAuthorized", "permissionsUnauthorized"] }], preserveWhitespaces: true });
421
+ }
422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierDeleteButtonComponent, decorators: [{
423
+ type: Component,
424
+ args: [{ selector: 'app-supplier-delete-button', standalone: true, imports: [
425
+ CommonModule,
426
+ MaterialModule,
427
+ NgxPermissionsModule
428
+ ], template: "<mat-icon class=\"cursor-pointer\" *ngxPermissionsOnly=\"['supplier.delete']\" (click)=\"openDialog()\">\n delete\n</mat-icon>" }]
429
+ }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i1$1.AlertService }, { type: i1$1.ErrorHandlerService }, { type: SupplierService }], propDecorators: { supplier: [{
430
+ type: Input
431
+ }], onDelete: [{
432
+ type: Output
433
+ }] } });
434
+
213
435
  let SuppliersListComponent = class SuppliersListComponent extends TechlifyListingControllerInterface {
214
436
  spinner;
215
437
  fb;
@@ -296,66 +518,6 @@ let SuppliersListComponent = class SuppliersListComponent extends TechlifyListin
296
518
  this.isWorking = false;
297
519
  }
298
520
  }
299
- editForm(model) {
300
- const dialogRef = this.dialog.open(SupplierFormComponent, {
301
- width: '400px',
302
- autoFocus: false,
303
- data: {
304
- details: model,
305
- },
306
- });
307
- dialogRef.afterClosed().subscribe((result) => {
308
- if (result) {
309
- this.reload();
310
- }
311
- });
312
- }
313
- deleteForm(supplier) {
314
- const dialogRef = this.dialog.open(ActionPopupComponent, {
315
- width: '400px',
316
- data: {
317
- title: 'Delete Supplier',
318
- message: 'Are you sure you want to delete the Supplier?',
319
- },
320
- autoFocus: false,
321
- });
322
- dialogRef.afterClosed().subscribe(async (result) => {
323
- if (result) {
324
- this.spinner.show();
325
- try {
326
- const result = await lastValueFrom(this.supplierService.destroy(supplier.id));
327
- this.alertService.addAlert('Successfully deleted the Supplier', 'success');
328
- this.reload();
329
- }
330
- catch (error) {
331
- this.errorHandler.handleError(error);
332
- }
333
- finally {
334
- this.spinner.hide();
335
- }
336
- }
337
- });
338
- }
339
- /**
340
- * Show the supplier create form.
341
- *
342
- * @param model
343
- */
344
- showAddSupplierDialog(model) {
345
- const dialogRef = this.dialog.open(SupplierFormComponent, {
346
- width: '400px',
347
- autoFocus: false,
348
- data: {
349
- model,
350
- },
351
- });
352
- dialogRef.afterClosed().subscribe((result) => {
353
- if (result) {
354
- // record added successfully, inform the list component.
355
- this.supplierFormService.listUpdated(true);
356
- }
357
- });
358
- }
359
521
  updateFormWithQueryParams() {
360
522
  this.requestHelperService.updateFormWithQueryParams(this.filterForm, {
361
523
  supplier_type_ids: { multiple: true },
@@ -373,16 +535,16 @@ let SuppliersListComponent = class SuppliersListComponent extends TechlifyListin
373
535
  this.reload();
374
536
  });
375
537
  }
376
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SuppliersListComponent, deps: [{ token: i3$2.NgxSpinnerService }, { token: i2$1.FormBuilder }, { token: SupplierService }, { token: i1$1.ErrorHandlerService }, { token: i1$1.FilterService }, { token: i2.ActivatedRoute }, { token: i1$1.AlertService }, { token: i1.MatDialog }, { token: SupplierFormService }, { token: i1$1.RequestHelperService }], target: i0.ɵɵFactoryTarget.Component });
377
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SuppliersListComponent, selector: "app-suppliers-list", usesInheritance: true, ngImport: i0, template: "<mat-card class=\"mb-3\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h3 class=\"mb-0\">Suppliers</h3>\n <mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n (click)=\"showAddSupplierDialog()\"\n >\n add\n </mat-icon>\n </div>\n <form\n [formGroup]=\"filterForm\"\n class=\"d-flex justify-content-end align-items-center gap-2\"\n >\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input\n matInput\n placeholder=\"Search Supplier by Name, Phone, Address, Email, Description\"\n formControlName=\"search\"\n />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Type</mat-label>\n <app-searchable-selector\n apiUrl=\"api/supplier-types\"\n formControlName=\"supplier_type_ids\"\n [multiple]=\"true\"\n >\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n #table\n [dataSource]=\"models\"\n class=\"w-100 table-hover\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"sortColumn($event)\"\n aria-describedby=\"Suppliers List\"\n >\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"company_name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.company_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell *matHeaderCellDef>Type</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"contact_name\">\n <th mat-header-cell *matHeaderCellDef>Contact</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.contact_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"phone\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.phone }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.email }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex justify-content-start align-items-center gap-2\">\n <a\n class=\"text-decoration-none text-dark mt-2\"\n [routerLink]=\"['/suppliers', element.id, 'view']\"\n routerLinkActive=\"route-link-active\"\n *ngxPermissionsOnly=\"['supplier.read']\"\n >\n <mat-icon matTooltip=\"View\">remove_red_eye</mat-icon>\n </a>\n <mat-icon\n *ngxPermissionsOnly=\"['supplier.update']\"\n class=\"cursor-pointer\"\n (click)=\"editForm(element)\"\n >\n edit\n </mat-icon>\n <mat-icon\n class=\"cursor-pointer\"\n *ngxPermissionsOnly=\"['supplier.delete']\"\n (click)=\"deleteForm(element)\"\n >\n delete\n </mat-icon>\n <app-audit-log-for-model\n [modelId]=\"element?.id\"\n modelType=\"Supplier\"\n logView=\"all\"\n ></app-audit-log-for-model>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i5.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i6$3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6$3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i1$1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i1$1.AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: ["modelType", "modelId", "logView"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i18.NgxPermissionsDirective, selector: "[ngxPermissionsOnly],[ngxPermissionsExcept]", inputs: ["ngxPermissionsOnly", "ngxPermissionsOnlyThen", "ngxPermissionsOnlyElse", "ngxPermissionsExcept", "ngxPermissionsExceptElse", "ngxPermissionsExceptThen", "ngxPermissionsThen", "ngxPermissionsElse", "ngxPermissionsOnlyAuthorisedStrategy", "ngxPermissionsOnlyUnauthorisedStrategy", "ngxPermissionsExceptUnauthorisedStrategy", "ngxPermissionsExceptAuthorisedStrategy", "ngxPermissionsUnauthorisedStrategy", "ngxPermissionsAuthorisedStrategy"], outputs: ["permissionsAuthorized", "permissionsUnauthorized"] }], preserveWhitespaces: true });
538
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SuppliersListComponent, deps: [{ token: i4$2.NgxSpinnerService }, { token: i2$1.FormBuilder }, { token: SupplierService }, { token: i1$1.ErrorHandlerService }, { token: i1$1.FilterService }, { token: i2.ActivatedRoute }, { token: i1$1.AlertService }, { token: i1.MatDialog }, { token: SupplierFormService }, { token: i1$1.RequestHelperService }], target: i0.ɵɵFactoryTarget.Component });
539
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SuppliersListComponent, selector: "app-suppliers-list", usesInheritance: true, ngImport: i0, template: "<mat-card class=\"mb-3\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h3 class=\"mb-0\">Suppliers</h3>\n <app-supplier-form-button (onSaved)=\"reload()\"></app-supplier-form-button>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search Supplier by Name, Phone, Address, Email, Description\"\n formControlName=\"search\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Type</mat-label>\n <app-searchable-selector apiUrl=\"api/supplier-types\" formControlName=\"supplier_type_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <mat-card-content class=\"p-0\">\n <table mat-table #table [dataSource]=\"models\" class=\"w-100 table-hover\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\" aria-describedby=\"Suppliers List\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"company_name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.company_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell *matHeaderCellDef>Type</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"contact_name\">\n <th mat-header-cell *matHeaderCellDef>Contact</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.contact_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"phone\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.phone }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.email }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex align-items-center gap-1\">\n\n <a class=\"text-decoration-none text-dark\" [routerLink]=\"['/suppliers', element.id, 'view']\"\n routerLinkActive=\"route-link-active\" *ngxPermissionsOnly=\"['supplier.read']\">\n <mat-icon matTooltip=\"View\">remove_red_eye</mat-icon>\n </a>\n <app-supplier-form-button *ngxPermissionsOnly=\"['supplier.update']\" [supplier]=\"element\"\n (onSaved)=\"reload()\"></app-supplier-form-button>\n <app-supplier-delete-button [supplier]=\"element\" (onDelete)=\"reload()\"></app-supplier-delete-button>\n <app-audit-log-for-model [modelId]=\"element?.id\" modelType=\"Supplier\"\n logView=\"all\"></app-audit-log-for-model>\n\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", dependencies: [{ kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i13.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i13.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i14.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i14.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i14.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i14.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i14.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i14.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i14.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i14.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i14.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i14.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i1$1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i1$1.AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: ["modelType", "modelId", "logView"] }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i10.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i5.NgxPermissionsDirective, selector: "[ngxPermissionsOnly],[ngxPermissionsExcept]", inputs: ["ngxPermissionsOnly", "ngxPermissionsOnlyThen", "ngxPermissionsOnlyElse", "ngxPermissionsExcept", "ngxPermissionsExceptElse", "ngxPermissionsExceptThen", "ngxPermissionsThen", "ngxPermissionsElse", "ngxPermissionsOnlyAuthorisedStrategy", "ngxPermissionsOnlyUnauthorisedStrategy", "ngxPermissionsExceptUnauthorisedStrategy", "ngxPermissionsExceptAuthorisedStrategy", "ngxPermissionsUnauthorisedStrategy", "ngxPermissionsAuthorisedStrategy"], outputs: ["permissionsAuthorized", "permissionsUnauthorized"] }, { kind: "component", type: SupplierFormButtonComponent, selector: "app-supplier-form-button", inputs: ["supplier"], outputs: ["onSaved"] }, { kind: "component", type: SupplierDeleteButtonComponent, selector: "app-supplier-delete-button", inputs: ["supplier"], outputs: ["onDelete"] }], preserveWhitespaces: true });
378
540
  };
379
541
  SuppliersListComponent = __decorate([
380
542
  UntilDestroy()
381
543
  ], SuppliersListComponent);
382
544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SuppliersListComponent, decorators: [{
383
545
  type: Component,
384
- args: [{ selector: 'app-suppliers-list', template: "<mat-card class=\"mb-3\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h3 class=\"mb-0\">Suppliers</h3>\n <mat-icon\n color=\"primary\"\n class=\"cursor-pointer\"\n (click)=\"showAddSupplierDialog()\"\n >\n add\n </mat-icon>\n </div>\n <form\n [formGroup]=\"filterForm\"\n class=\"d-flex justify-content-end align-items-center gap-2\"\n >\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input\n matInput\n placeholder=\"Search Supplier by Name, Phone, Address, Email, Description\"\n formControlName=\"search\"\n />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Type</mat-label>\n <app-searchable-selector\n apiUrl=\"api/supplier-types\"\n formControlName=\"supplier_type_ids\"\n [multiple]=\"true\"\n >\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n #table\n [dataSource]=\"models\"\n class=\"w-100 table-hover\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\"\n matSort\n (matSortChange)=\"sortColumn($event)\"\n aria-describedby=\"Suppliers List\"\n >\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"company_name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.company_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell *matHeaderCellDef>Type</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"contact_name\">\n <th mat-header-cell *matHeaderCellDef>Contact</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.contact_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"phone\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.phone }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.email }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex justify-content-start align-items-center gap-2\">\n <a\n class=\"text-decoration-none text-dark mt-2\"\n [routerLink]=\"['/suppliers', element.id, 'view']\"\n routerLinkActive=\"route-link-active\"\n *ngxPermissionsOnly=\"['supplier.read']\"\n >\n <mat-icon matTooltip=\"View\">remove_red_eye</mat-icon>\n </a>\n <mat-icon\n *ngxPermissionsOnly=\"['supplier.update']\"\n class=\"cursor-pointer\"\n (click)=\"editForm(element)\"\n >\n edit\n </mat-icon>\n <mat-icon\n class=\"cursor-pointer\"\n *ngxPermissionsOnly=\"['supplier.delete']\"\n (click)=\"deleteForm(element)\"\n >\n delete\n </mat-icon>\n <app-audit-log-for-model\n [modelId]=\"element?.id\"\n modelType=\"Supplier\"\n logView=\"all\"\n ></app-audit-log-for-model>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
385
- }], ctorParameters: () => [{ type: i3$2.NgxSpinnerService }, { type: i2$1.FormBuilder }, { type: SupplierService }, { type: i1$1.ErrorHandlerService }, { type: i1$1.FilterService }, { type: i2.ActivatedRoute }, { type: i1$1.AlertService }, { type: i1.MatDialog }, { type: SupplierFormService }, { type: i1$1.RequestHelperService }] });
546
+ args: [{ selector: 'app-suppliers-list', template: "<mat-card class=\"mb-3\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-3\">\n <h3 class=\"mb-0\">Suppliers</h3>\n <app-supplier-form-button (onSaved)=\"reload()\"></app-supplier-form-button>\n </div>\n <form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input matInput placeholder=\"Search Supplier by Name, Phone, Address, Email, Description\"\n formControlName=\"search\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Type</mat-label>\n <app-searchable-selector apiUrl=\"api/supplier-types\" formControlName=\"supplier_type_ids\" [multiple]=\"true\">\n </app-searchable-selector>\n </mat-form-field>\n </form>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <mat-card-content class=\"p-0\">\n <table mat-table #table [dataSource]=\"models\" class=\"w-100 table-hover\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [fromRoot]=\"true\" matSort\n (matSortChange)=\"sortColumn($event)\" aria-describedby=\"Suppliers List\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"company_name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.company_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell *matHeaderCellDef>Type</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.type?.title }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"contact_name\">\n <th mat-header-cell *matHeaderCellDef>Contact</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.contact_name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"phone\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Phone</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.phone }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"address\">\n <th mat-header-cell *matHeaderCellDef>Address</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.address }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Email</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.email }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-secondary d-flex align-items-center gap-1\">\n\n <a class=\"text-decoration-none text-dark\" [routerLink]=\"['/suppliers', element.id, 'view']\"\n routerLinkActive=\"route-link-active\" *ngxPermissionsOnly=\"['supplier.read']\">\n <mat-icon matTooltip=\"View\">remove_red_eye</mat-icon>\n </a>\n <app-supplier-form-button *ngxPermissionsOnly=\"['supplier.update']\" [supplier]=\"element\"\n (onSaved)=\"reload()\"></app-supplier-form-button>\n <app-supplier-delete-button [supplier]=\"element\" (onDelete)=\"reload()\"></app-supplier-delete-button>\n <app-audit-log-for-model [modelId]=\"element?.id\" modelType=\"Supplier\"\n logView=\"all\"></app-audit-log-for-model>\n\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>" }]
547
+ }], ctorParameters: () => [{ type: i4$2.NgxSpinnerService }, { type: i2$1.FormBuilder }, { type: SupplierService }, { type: i1$1.ErrorHandlerService }, { type: i1$1.FilterService }, { type: i2.ActivatedRoute }, { type: i1$1.AlertService }, { type: i1.MatDialog }, { type: SupplierFormService }, { type: i1$1.RequestHelperService }] });
386
548
 
387
549
  const routes = [
388
550
  {
@@ -417,141 +579,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
417
579
  }]
418
580
  }] });
419
581
 
420
- /*
421
- * This module imports and re-exports all Angular Material modules for convenience,
422
- * so only 1 module import is needed in your feature modules.
423
- * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.
424
- *
425
- * To optimize your production builds, you should only import the components used in your app.
426
- */
427
- class MaterialModule {
428
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
429
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, exports: [MatAutocompleteModule,
430
- MatBadgeModule,
431
- MatButtonModule,
432
- MatButtonToggleModule,
433
- MatCardModule,
434
- MatCheckboxModule,
435
- MatChipsModule,
436
- MatCommonModule,
437
- MatDatepickerModule,
438
- MatDialogModule,
439
- MatDividerModule,
440
- MatExpansionModule,
441
- MatFormFieldModule,
442
- MatGridListModule,
443
- MatIconModule,
444
- MatInputModule,
445
- MatLineModule,
446
- MatListModule,
447
- MatMenuModule,
448
- MatNativeDateModule,
449
- MatOptionModule,
450
- MatPaginatorModule,
451
- MatProgressBarModule,
452
- MatProgressSpinnerModule,
453
- MatPseudoCheckboxModule,
454
- MatRadioModule,
455
- MatRippleModule,
456
- MatSelectModule,
457
- MatSidenavModule,
458
- MatSlideToggleModule,
459
- MatSliderModule,
460
- MatSnackBarModule,
461
- MatSortModule,
462
- MatStepperModule,
463
- MatTableModule,
464
- MatTabsModule,
465
- MatToolbarModule,
466
- MatTooltipModule,
467
- MatTreeModule] });
468
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, imports: [MatAutocompleteModule,
469
- MatBadgeModule,
470
- MatButtonModule,
471
- MatButtonToggleModule,
472
- MatCardModule,
473
- MatCheckboxModule,
474
- MatChipsModule,
475
- MatCommonModule,
476
- MatDatepickerModule,
477
- MatDialogModule,
478
- MatDividerModule,
479
- MatExpansionModule,
480
- MatFormFieldModule,
481
- MatGridListModule,
482
- MatIconModule,
483
- MatInputModule,
484
- MatLineModule,
485
- MatListModule,
486
- MatMenuModule,
487
- MatNativeDateModule,
488
- MatOptionModule,
489
- MatPaginatorModule,
490
- MatProgressBarModule,
491
- MatProgressSpinnerModule,
492
- MatPseudoCheckboxModule,
493
- MatRadioModule,
494
- MatRippleModule,
495
- MatSelectModule,
496
- MatSidenavModule,
497
- MatSlideToggleModule,
498
- MatSliderModule,
499
- MatSnackBarModule,
500
- MatSortModule,
501
- MatStepperModule,
502
- MatTableModule,
503
- MatTabsModule,
504
- MatToolbarModule,
505
- MatTooltipModule,
506
- MatTreeModule] });
507
- }
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, decorators: [{
509
- type: NgModule,
510
- args: [{
511
- exports: [
512
- MatAutocompleteModule,
513
- MatBadgeModule,
514
- MatButtonModule,
515
- MatButtonToggleModule,
516
- MatCardModule,
517
- MatCheckboxModule,
518
- MatChipsModule,
519
- MatCommonModule,
520
- MatDatepickerModule,
521
- MatDialogModule,
522
- MatDividerModule,
523
- MatExpansionModule,
524
- MatFormFieldModule,
525
- MatGridListModule,
526
- MatIconModule,
527
- MatInputModule,
528
- MatLineModule,
529
- MatListModule,
530
- MatMenuModule,
531
- MatNativeDateModule,
532
- MatOptionModule,
533
- MatPaginatorModule,
534
- MatProgressBarModule,
535
- MatProgressSpinnerModule,
536
- MatPseudoCheckboxModule,
537
- MatRadioModule,
538
- MatRippleModule,
539
- MatSelectModule,
540
- MatSidenavModule,
541
- MatSlideToggleModule,
542
- MatSliderModule,
543
- MatSnackBarModule,
544
- MatSortModule,
545
- MatStepperModule,
546
- MatTableModule,
547
- MatTabsModule,
548
- MatToolbarModule,
549
- MatTooltipModule,
550
- MatTreeModule,
551
- ],
552
- }]
553
- }] });
554
-
555
582
  class SupplierModule {
556
583
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
557
584
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SupplierModule, declarations: [SupplierComponent,
@@ -567,7 +594,9 @@ class SupplierModule {
567
594
  FlexModule,
568
595
  ReactiveFormsModule,
569
596
  InfiniteScrollModule,
570
- NgxPermissionsModule] });
597
+ NgxPermissionsModule,
598
+ SupplierFormButtonComponent,
599
+ SupplierDeleteButtonComponent] });
571
600
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierModule, imports: [CommonModule,
572
601
  SupplierRoutingModule,
573
602
  MaterialModule,
@@ -577,7 +606,9 @@ class SupplierModule {
577
606
  FlexModule,
578
607
  ReactiveFormsModule,
579
608
  InfiniteScrollModule,
580
- NgxPermissionsModule] });
609
+ NgxPermissionsModule,
610
+ SupplierFormButtonComponent,
611
+ SupplierDeleteButtonComponent] });
581
612
  }
582
613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupplierModule, decorators: [{
583
614
  type: NgModule,
@@ -600,9 +631,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
600
631
  ReactiveFormsModule,
601
632
  InfiniteScrollModule,
602
633
  NgxPermissionsModule,
634
+ SupplierFormButtonComponent,
635
+ SupplierDeleteButtonComponent
603
636
  ],
604
637
  }]
605
638
  }] });
606
639
 
607
640
  export { SupplierModule };
608
- //# sourceMappingURL=techlify-inventory-common-supplier.module-Bwa7gx14.mjs.map
641
+ //# sourceMappingURL=techlify-inventory-common-supplier.module-CFDwJ-TS.mjs.map