techlify-inventory-common 18.33.0 → 18.34.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.
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.mjs +74 -0
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.mjs +38 -0
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.mjs +46 -12
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.mjs +20 -0
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.mjs +4 -4
- package/fesm2022/{techlify-inventory-common-category.module-DFUSDR9V.mjs → techlify-inventory-common-category.module-BfcXygNN.mjs} +6 -6
- package/fesm2022/{techlify-inventory-common-category.module-DFUSDR9V.mjs.map → techlify-inventory-common-category.module-BfcXygNN.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-measure.module-CWacLgK9.mjs → techlify-inventory-common-measure.module-DIygZTaE.mjs} +4 -4
- package/fesm2022/{techlify-inventory-common-measure.module-CWacLgK9.mjs.map → techlify-inventory-common-measure.module-DIygZTaE.mjs.map} +1 -1
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-CnfNn5jL.mjs +226 -0
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-CnfNn5jL.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-stock-issue-batch-form.component-B8sYXmKa.mjs → techlify-inventory-common-stock-issue-batch-form.component-CneSorqd.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-stock-issue-batch-form.component-B8sYXmKa.mjs.map → techlify-inventory-common-stock-issue-batch-form.component-CneSorqd.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-DBIeH2ib.mjs → techlify-inventory-common-stock-issue-view.component-m3tsNDT-.mjs} +4 -4
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-DBIeH2ib.mjs.map → techlify-inventory-common-stock-issue-view.component-m3tsNDT-.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-BzzG43ZO.mjs → techlify-inventory-common-techlify-inventory-common-BoJjioLF.mjs} +46 -46
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-BzzG43ZO.mjs.map → techlify-inventory-common-techlify-inventory-common-BoJjioLF.mjs.map} +1 -1
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.d.ts +16 -0
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.d.ts +12 -0
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.d.ts +11 -3
- package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.d.ts +8 -0
- package/package.json +1 -1
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-Cht4Guat.mjs +0 -86
- package/fesm2022/techlify-inventory-common-purchase-order-view.component-Cht4Guat.mjs.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
|
4
|
+
import { SearchableSelectorModule, TechlifyFormComponentInterface } from 'ngx-techlify-core';
|
|
5
|
+
import { MAT_DIALOG_DATA, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';
|
|
6
|
+
import { MaterialModule } from '../../../../material.module';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "ngx-techlify-core";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "../purchase-order-product.service";
|
|
11
|
+
import * as i4 from "@angular/material/dialog";
|
|
12
|
+
import * as i5 from "@angular/common";
|
|
13
|
+
import * as i6 from "@angular/material/button";
|
|
14
|
+
import * as i7 from "@angular/material/form-field";
|
|
15
|
+
import * as i8 from "@angular/material/input";
|
|
16
|
+
export class PurchaseOrderProductFormComponent extends TechlifyFormComponentInterface {
|
|
17
|
+
fb;
|
|
18
|
+
service;
|
|
19
|
+
data;
|
|
20
|
+
constructor(formValidatorService, fb, service, dialogRef, data) {
|
|
21
|
+
super(formValidatorService);
|
|
22
|
+
this.fb = fb;
|
|
23
|
+
this.service = service;
|
|
24
|
+
this.data = data;
|
|
25
|
+
this.dialogRef = dialogRef;
|
|
26
|
+
this.errorMessages = {
|
|
27
|
+
product_id: { required: 'Product is required.' },
|
|
28
|
+
quantity: { required: 'Quantity is required.', min: 'Quantity must be at least 1.' },
|
|
29
|
+
unit_id: { required: 'Unit is required.' },
|
|
30
|
+
};
|
|
31
|
+
this.form = this.fb.group({
|
|
32
|
+
id: [''],
|
|
33
|
+
purchase_order_id: ['', Validators.required],
|
|
34
|
+
product_id: ['', Validators.required],
|
|
35
|
+
quantity: [1, [Validators.required, Validators.min(1)]],
|
|
36
|
+
unit_id: ['', Validators.required],
|
|
37
|
+
details: [''],
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.form.patchValue({ purchase_order_id: this.data.purchaseOrderId });
|
|
42
|
+
const product = this.data.purchaseOrderProduct;
|
|
43
|
+
if (product) {
|
|
44
|
+
this.isUpdate = true;
|
|
45
|
+
this.form.patchValue({
|
|
46
|
+
id: product.id,
|
|
47
|
+
product_id: product.product_id,
|
|
48
|
+
quantity: product.quantity,
|
|
49
|
+
unit_id: product.unit_id,
|
|
50
|
+
details: product.details ?? '',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
cancel() {
|
|
55
|
+
this.dialogRef.close();
|
|
56
|
+
}
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: i3.PurchaseOrderProductService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PurchaseOrderProductFormComponent, isStandalone: true, selector: "app-purchase-order-product-form", usesInheritance: true, ngImport: i0, template: "<h3 mat-dialog-title class='text-center'> Product Form </h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.value)\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"1\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Unit</mat-label>\n <app-searchable-selector formControlName=\"unit_id\" apiUrl=\"api/product-measures\"\n titleField=\"title\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('unit_id')\">{{ getErrorMessage('unit_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Details</mat-label>\n <textarea matInput formControlName=\"details\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.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: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.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"] }], preserveWhitespaces: true });
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'app-purchase-order-product-form', standalone: true, imports: [
|
|
63
|
+
CommonModule,
|
|
64
|
+
ReactiveFormsModule,
|
|
65
|
+
MaterialModule,
|
|
66
|
+
SearchableSelectorModule,
|
|
67
|
+
MatDialogTitle,
|
|
68
|
+
MatDialogContent,
|
|
69
|
+
], template: "<h3 mat-dialog-title class='text-center'> Product Form </h3>\n\n<mat-dialog-content>\n <form [formGroup]=\"form\" (submit)=\"submit(form.value)\" class=\"d-flex flex-column gap-3 mt-2\">\n\n <mat-form-field class=\"w-100\">\n <mat-label>Product</mat-label>\n <app-searchable-selector formControlName=\"product_id\" apiUrl=\"api/products\" titleField=\"name\"\n [cache]=\"true\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('product_id')\">{{ getErrorMessage('product_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Quantity</mat-label>\n <input matInput type=\"number\" formControlName=\"quantity\" min=\"1\">\n <mat-error *ngIf=\"isFieldValid('quantity')\">{{ getErrorMessage('quantity') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Unit</mat-label>\n <app-searchable-selector formControlName=\"unit_id\" apiUrl=\"api/product-measures\"\n titleField=\"title\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('unit_id')\">{{ getErrorMessage('unit_id') }}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>Details</mat-label>\n <textarea matInput formControlName=\"details\" rows=\"3\"></textarea>\n </mat-form-field>\n\n <div class=\"d-flex justify-content-end gap-2\">\n <button mat-flat-button type=\"button\" [disabled]=\"isWorking\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isWorking\">Save</button>\n </div>\n\n </form>\n</mat-dialog-content>" }]
|
|
70
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: i3.PurchaseOrderProductService }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
|
|
71
|
+
type: Inject,
|
|
72
|
+
args: [MAT_DIALOG_DATA]
|
|
73
|
+
}] }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N1cHBsaWVyL3B1cmNoYXNlLW9yZGVyL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N1cHBsaWVyL3B1cmNoYXNlLW9yZGVyL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQWdCLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7OztBQWdCN0QsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLDhCQUE4QjtJQUlyRTtJQUNXO0lBRWE7SUFMcEMsWUFDSSxvQkFBMEMsRUFDbEMsRUFBZSxFQUNKLE9BQW9DLEVBQ3ZELFNBQTBELEVBQzFCLElBQVM7UUFFekMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFMcEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNKLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBRXZCLFNBQUksR0FBSixJQUFJLENBQUs7UUFHekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNqQixVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7WUFDaEQsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsRUFBRSw4QkFBOEIsRUFBRTtZQUNwRixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7U0FDN0MsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1IsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUV2RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQy9DLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDakIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTlDUSxpQ0FBaUMsd0pBTzlCLGVBQWU7NEZBUGxCLGlDQUFpQyxrSENyQjlDLG94REFvQ3FCLDJDRHZCYixZQUFZLGtJQUNaLG1CQUFtQix5eUNBQ25CLGNBQWMsNHBDQUNkLHdCQUF3Qjs7NEZBS25CLGlDQUFpQztrQkFiN0MsU0FBUzsrQkFDSSxpQ0FBaUMsY0FFL0IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdG9yU2VydmljZSwgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLCBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgUHVyY2hhc2VPcmRlclByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnLi4vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICAgICAgU2VhcmNoYWJsZVNlbGVjdG9yTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcbiAgICAgICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJjaGFzZU9yZGVyUHJvZHVjdEZvcm1Db21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSBzZXJ2aWNlOiBQdXJjaGFzZU9yZGVyUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFB1cmNoYXNlT3JkZXJQcm9kdWN0Rm9ybUNvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gZGlhbG9nUmVmO1xuXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IHtcbiAgICAgICAgICAgIHByb2R1Y3RfaWQ6IHsgcmVxdWlyZWQ6ICdQcm9kdWN0IGlzIHJlcXVpcmVkLicgfSxcbiAgICAgICAgICAgIHF1YW50aXR5OiB7IHJlcXVpcmVkOiAnUXVhbnRpdHkgaXMgcmVxdWlyZWQuJywgbWluOiAnUXVhbnRpdHkgbXVzdCBiZSBhdCBsZWFzdCAxLicgfSxcbiAgICAgICAgICAgIHVuaXRfaWQ6IHsgcmVxdWlyZWQ6ICdVbml0IGlzIHJlcXVpcmVkLicgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGlkOiBbJyddLFxuICAgICAgICAgICAgcHVyY2hhc2Vfb3JkZXJfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBwcm9kdWN0X2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgcXVhbnRpdHk6IFsxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMSldXSxcbiAgICAgICAgICAgIHVuaXRfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBkZXRhaWxzOiBbJyddLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwdXJjaGFzZV9vcmRlcl9pZDogdGhpcy5kYXRhLnB1cmNoYXNlT3JkZXJJZCB9KTtcblxuICAgICAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5kYXRhLnB1cmNoYXNlT3JkZXJQcm9kdWN0O1xuICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgdGhpcy5pc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgaWQ6IHByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogcHJvZHVjdC5wcm9kdWN0X2lkLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5LFxuICAgICAgICAgICAgICAgIHVuaXRfaWQ6IHByb2R1Y3QudW5pdF9pZCxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiBwcm9kdWN0LmRldGFpbHMgPz8gJycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8aDMgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz0ndGV4dC1jZW50ZXInPiBQcm9kdWN0IEZvcm0gPC9oMz5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdChmb3JtLnZhbHVlKVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zIG10LTJcIj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Qcm9kdWN0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgZm9ybUNvbnRyb2xOYW1lPVwicHJvZHVjdF9pZFwiIGFwaVVybD1cImFwaS9wcm9kdWN0c1wiIHRpdGxlRmllbGQ9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbY2FjaGVdPVwidHJ1ZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdwcm9kdWN0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3Byb2R1Y3RfaWQnKSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlF1YW50aXR5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInF1YW50aXR5XCIgbWluPVwiMVwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgncXVhbnRpdHknKVwiPnt7IGdldEVycm9yTWVzc2FnZSgncXVhbnRpdHknKSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlVuaXQ8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBmb3JtQ29udHJvbE5hbWU9XCJ1bml0X2lkXCIgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtbWVhc3VyZXNcIlxuICAgICAgICAgICAgICAgIHRpdGxlRmllbGQ9XCJ0aXRsZVwiPjwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCd1bml0X2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3VuaXRfaWQnKSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkRldGFpbHM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXRhaWxzXCIgcm93cz1cIjNcIj48L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMlwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIj5TYXZlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+Il19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Component, output } from '@angular/core';
|
|
2
|
+
import { input } from '@angular/core';
|
|
3
|
+
import { TechlifyIconModule } from 'ngx-techlify-core';
|
|
4
|
+
import { PurchaseOrderProductFormComponent } from '../purchase-order-product-form/purchase-order-product-form.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "ngx-techlify-core";
|
|
8
|
+
export class PurchaseOrderProductFormButtonComponent {
|
|
9
|
+
dialog;
|
|
10
|
+
purchaseOrderProduct = input();
|
|
11
|
+
purchaseOrderId = input.required();
|
|
12
|
+
saved = output();
|
|
13
|
+
constructor(dialog) {
|
|
14
|
+
this.dialog = dialog;
|
|
15
|
+
}
|
|
16
|
+
open() {
|
|
17
|
+
this.dialog.open(PurchaseOrderProductFormComponent, {
|
|
18
|
+
width: '500px',
|
|
19
|
+
data: {
|
|
20
|
+
purchaseOrderId: this.purchaseOrderId(),
|
|
21
|
+
purchaseOrderProduct: this.purchaseOrderProduct(),
|
|
22
|
+
},
|
|
23
|
+
}).afterClosed().subscribe((item) => {
|
|
24
|
+
if (item) {
|
|
25
|
+
this.saved.emit(item);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormButtonComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: PurchaseOrderProductFormButtonComponent, isStandalone: true, selector: "app-purchase-order-product-form-button", inputs: { purchaseOrderProduct: { classPropertyName: "purchaseOrderProduct", publicName: "purchaseOrderProduct", isSignal: true, isRequired: false, transformFunction: null }, purchaseOrderId: { classPropertyName: "purchaseOrderId", publicName: "purchaseOrderId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saved: "saved" }, ngImport: i0, template: "<app-techlify-icon\n role=\"button\"\n [name]=\"purchaseOrderProduct() ? 'edit' : 'add'\"\n (click)=\"open()\">\n</app-techlify-icon>\n", dependencies: [{ kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i2.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }], preserveWhitespaces: true });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormButtonComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: 'app-purchase-order-product-form-button', standalone: true, imports: [
|
|
35
|
+
TechlifyIconModule,
|
|
36
|
+
], template: "<app-techlify-icon\n role=\"button\"\n [name]=\"purchaseOrderProduct() ? 'edit' : 'add'\"\n (click)=\"open()\">\n</app-techlify-icon>\n" }]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdXBwbGllci9wdXJjaGFzZS1vcmRlci9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWxpc3QvcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLWJ1dHRvbi9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N1cHBsaWVyL3B1cmNoYXNlLW9yZGVyL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0tYnV0dG9uL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7OztBQVV6SCxNQUFNLE9BQU8sdUNBQXVDO0lBTzVCO0lBTHBCLG9CQUFvQixHQUFHLEtBQUssRUFBTyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFFM0MsS0FBSyxHQUFHLE1BQU0sRUFBTyxDQUFDO0lBRXRCLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7SUFBSSxDQUFDO0lBRTFDLElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUNoRCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRTtnQkFDRixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdkMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2FBQ3BEO1NBQ0osQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3JDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FyQlEsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMscWNDZHBELGtKQUtBLDJDRE1RLGtCQUFrQjs7NEZBR2IsdUNBQXVDO2tCQVJuRCxTQUFTOytCQUNJLHdDQUF3QyxjQUV0QyxJQUFJLFdBQ1A7d0JBQ0wsa0JBQWtCO3FCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFRlY2hsaWZ5SWNvbk1vZHVsZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXJQcm9kdWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtZm9ybS9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHVyY2hhc2VPcmRlclByb2R1Y3RGb3JtQnV0dG9uQ29tcG9uZW50IHtcblxuICAgIHB1cmNoYXNlT3JkZXJQcm9kdWN0ID0gaW5wdXQ8YW55PigpO1xuICAgIHB1cmNoYXNlT3JkZXJJZCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblxuICAgIHNhdmVkID0gb3V0cHV0PGFueT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxuXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2cub3BlbihQdXJjaGFzZU9yZGVyUHJvZHVjdEZvcm1Db21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHB1cmNoYXNlT3JkZXJJZDogdGhpcy5wdXJjaGFzZU9yZGVySWQoKSxcbiAgICAgICAgICAgICAgICBwdXJjaGFzZU9yZGVyUHJvZHVjdDogdGhpcy5wdXJjaGFzZU9yZGVyUHJvZHVjdCgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkLmVtaXQoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxhcHAtdGVjaGxpZnktaWNvblxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIFtuYW1lXT1cInB1cmNoYXNlT3JkZXJQcm9kdWN0KCkgPyAnZWRpdCcgOiAnYWRkJ1wiXG4gICAgKGNsaWNrKT1cIm9wZW4oKVwiPlxuPC9hcHAtdGVjaGxpZnktaWNvbj5cbiJdfQ==
|
|
@@ -1,27 +1,61 @@
|
|
|
1
|
-
import { Component, input } from '@angular/core';
|
|
1
|
+
import { Component, effect, input } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
4
|
import { MaterialModule } from '../../../material.module';
|
|
5
|
+
import { TechlifyDeleteButtonComponent, TechlifyIconModule, TechlifyListingControllerInterface } from 'ngx-techlify-core';
|
|
6
|
+
import { PurchaseOrderProductFormButtonComponent } from './purchase-order-product-form-button/purchase-order-product-form-button.component';
|
|
4
7
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "
|
|
6
|
-
import * as i2 from "@angular/
|
|
7
|
-
import * as i3 from "@angular/
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import * as i1 from "./purchase-order-product.service";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/material/card";
|
|
12
|
+
import * as i5 from "@angular/material/progress-bar";
|
|
13
|
+
import * as i6 from "@angular/material/sort";
|
|
14
|
+
import * as i7 from "@angular/material/table";
|
|
15
|
+
export class PurchaseOrderProductListComponent extends TechlifyListingControllerInterface {
|
|
16
|
+
service;
|
|
17
|
+
fb;
|
|
18
|
+
purchaseOrderId = input();
|
|
10
19
|
displayedColumns = [
|
|
11
20
|
'#',
|
|
12
21
|
'product',
|
|
13
22
|
'quantity',
|
|
14
23
|
'unit',
|
|
15
|
-
'details'
|
|
24
|
+
'details',
|
|
25
|
+
'actions',
|
|
16
26
|
];
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
constructor(service, fb) {
|
|
28
|
+
super(service);
|
|
29
|
+
this.service = service;
|
|
30
|
+
this.fb = fb;
|
|
31
|
+
this.isFilterPatchFromRoute = false;
|
|
32
|
+
this.filterForm = this.fb.group({
|
|
33
|
+
purchase_order_id: [''],
|
|
34
|
+
sort_by: ['product|ASC'],
|
|
35
|
+
});
|
|
36
|
+
effect(() => {
|
|
37
|
+
const id = this.purchaseOrderId();
|
|
38
|
+
if (id) {
|
|
39
|
+
this.filterForm.get('purchase_order_id')?.setValue(id, { emitEvent: false });
|
|
40
|
+
this.reload();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
this.listenFilterChanges();
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductListComponent, deps: [{ token: i1.PurchaseOrderProductService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: PurchaseOrderProductListComponent, isStandalone: true, selector: "app-purchase-order-product-list", inputs: { purchaseOrderId: { classPropertyName: "purchaseOrderId", publicName: "purchaseOrderId", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"w-100\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <div class=\"d-flex flex-row gap-2\">\n <h5>Products</h5>\n <app-purchase-order-product-form-button [purchaseOrderId]=\"purchaseOrderId()!\"\n (saved)=\"reload()\">\n </app-purchase-order-product-form-button>\n </div>\n </div>\n\n <table mat-table [dataSource]=\"models\" class=\"w-100\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- # Column -->\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 <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"product\" disableClear>Product</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.name }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"quantity\" disableClear>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.quantity }}</td>\n </ng-container>\n\n <!-- Unit Column -->\n <ng-container matColumnDef=\"unit\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"unit\" disableClear>Unit</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.unit?.title }}</td>\n </ng-container>\n\n <!-- Details Column -->\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 <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <span class=\"text-secondary d-flex align-items-center gap-2\">\n <app-purchase-order-product-form-button [purchaseOrderId]=\"purchaseOrderId()!\"\n [purchaseOrderProduct]=\"element\" (saved)=\"reload()\">\n </app-purchase-order-product-form-button>\n\n <app-techlify-delete-button (deleted)=\"reload()\" [service]=\"service\" [model]=\"element\"\n [data]=\"{title: element?.product?.name, type: 'Purchase Order Product'}\"></app-techlify-delete-button>\n </span>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: PurchaseOrderProductFormButtonComponent, selector: "app-purchase-order-product-form-button", inputs: ["purchaseOrderProduct", "purchaseOrderId"], outputs: ["saved"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }], preserveWhitespaces: true });
|
|
19
49
|
}
|
|
20
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductListComponent, decorators: [{
|
|
21
51
|
type: Component,
|
|
22
52
|
args: [{ selector: 'app-purchase-order-product-list', standalone: true, imports: [
|
|
23
53
|
CommonModule,
|
|
24
54
|
MaterialModule,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
55
|
+
ReactiveFormsModule,
|
|
56
|
+
TechlifyIconModule,
|
|
57
|
+
PurchaseOrderProductFormButtonComponent,
|
|
58
|
+
TechlifyDeleteButtonComponent
|
|
59
|
+
], template: "<mat-card class=\"w-100\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <div class=\"d-flex flex-row gap-2\">\n <h5>Products</h5>\n <app-purchase-order-product-form-button [purchaseOrderId]=\"purchaseOrderId()!\"\n (saved)=\"reload()\">\n </app-purchase-order-product-form-button>\n </div>\n </div>\n\n <table mat-table [dataSource]=\"models\" class=\"w-100\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- # Column -->\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 <!-- Product Column -->\n <ng-container matColumnDef=\"product\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"product\" disableClear>Product</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.product?.name }}</td>\n </ng-container>\n\n <!-- Quantity Column -->\n <ng-container matColumnDef=\"quantity\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"quantity\" disableClear>Quantity</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.quantity }}</td>\n </ng-container>\n\n <!-- Unit Column -->\n <ng-container matColumnDef=\"unit\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"unit\" disableClear>Unit</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.unit?.title }}</td>\n </ng-container>\n\n <!-- Details Column -->\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 <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">\n <span class=\"text-secondary d-flex align-items-center gap-2\">\n <app-purchase-order-product-form-button [purchaseOrderId]=\"purchaseOrderId()!\"\n [purchaseOrderProduct]=\"element\" (saved)=\"reload()\">\n </app-purchase-order-product-form-button>\n\n <app-techlify-delete-button (deleted)=\"reload()\" [service]=\"service\" [model]=\"element\"\n [data]=\"{title: element?.product?.name, type: 'Purchase Order Product'}\"></app-techlify-delete-button>\n </span>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>" }]
|
|
60
|
+
}], ctorParameters: () => [{ type: i1.PurchaseOrderProductService }, { type: i2.FormBuilder }] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItcHJvZHVjdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3N1cHBsaWVyL3B1cmNoYXNlLW9yZGVyL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3VwcGxpZXIvcHVyY2hhc2Utb3JkZXIvcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1saXN0L3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsa0JBQWtCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxSCxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxtRkFBbUYsQ0FBQzs7Ozs7Ozs7O0FBZTVJLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxrQ0FBa0M7SUFjOUQ7SUFDWDtJQWJaLGVBQWUsR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUVsQyxnQkFBZ0IsR0FBYTtRQUN6QixHQUFHO1FBQ0gsU0FBUztRQUNULFVBQVU7UUFDVixNQUFNO1FBQ04sU0FBUztRQUNULFNBQVM7S0FDWixDQUFDO0lBRUYsWUFDdUIsT0FBb0MsRUFDL0MsRUFBZTtRQUV2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFISSxZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUMvQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBR3ZCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO3dHQW5DUSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyxvUkNyQjlDLDJzR0ErRFcsMkNEbERILFlBQVksa0lBQ1osY0FBYywreURBQ2QsbUJBQW1CLDhCQUNuQixrQkFBa0IsK0JBQ2xCLHVDQUF1Qyw0SkFDdkMsNkJBQTZCOzs0RkFHeEIsaUNBQWlDO2tCQWI3QyxTQUFTOytCQUNJLGlDQUFpQyxjQUUvQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQix1Q0FBdUM7d0JBQ3ZDLDZCQUE2QjtxQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgT25Jbml0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgVGVjaGxpZnlEZWxldGVCdXR0b25Db21wb25lbnQsIFRlY2hsaWZ5SWNvbk1vZHVsZSwgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXJQcm9kdWN0U2VydmljZSB9IGZyb20gJy4vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXJQcm9kdWN0Rm9ybUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLWJ1dHRvbi9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0tYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXB1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRlY2hsaWZ5SWNvbk1vZHVsZSxcbiAgICAgICAgUHVyY2hhc2VPcmRlclByb2R1Y3RGb3JtQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBUZWNobGlmeURlbGV0ZUJ1dHRvbkNvbXBvbmVudFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlT3JkZXJQcm9kdWN0TGlzdENvbXBvbmVudCBleHRlbmRzIFRlY2hsaWZ5TGlzdGluZ0NvbnRyb2xsZXJJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVyY2hhc2VPcmRlcklkID0gaW5wdXQ8bnVtYmVyPigpO1xuXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXG4gICAgICAgICcjJyxcbiAgICAgICAgJ3Byb2R1Y3QnLFxuICAgICAgICAncXVhbnRpdHknLFxuICAgICAgICAndW5pdCcsXG4gICAgICAgICdkZXRhaWxzJyxcbiAgICAgICAgJ2FjdGlvbnMnLFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFB1cmNoYXNlT3JkZXJQcm9kdWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNlcnZpY2UpO1xuICAgICAgICB0aGlzLmlzRmlsdGVyUGF0Y2hGcm9tUm91dGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBwdXJjaGFzZV9vcmRlcl9pZDogWycnXSxcbiAgICAgICAgICAgIHNvcnRfYnk6IFsncHJvZHVjdHxBU0MnXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5wdXJjaGFzZU9yZGVySWQoKTtcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3B1cmNoYXNlX29yZGVyX2lkJyk/LnNldFZhbHVlKGlkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdGVuRmlsdGVyQ2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxtYXQtY2FyZCBjbGFzcz1cInctMTAwXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8aDU+UHJvZHVjdHM8L2g1PlxuICAgICAgICAgICAgICAgIDxhcHAtcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1mb3JtLWJ1dHRvbiBbcHVyY2hhc2VPcmRlcklkXT1cInB1cmNoYXNlT3JkZXJJZCgpIVwiXG4gICAgICAgICAgICAgICAgICAgIChzYXZlZCk9XCJyZWxvYWQoKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXB1cmNoYXNlLW9yZGVyLXByb2R1Y3QtZm9ybS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBjbGFzcz1cInctMTAwXCIgbWF0U29ydCAobWF0U29ydENoYW5nZSk9XCJzb3J0Q29sdW1uKCRldmVudClcIj5cbiAgICAgICAgICAgIDwhLS0gIyBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIiNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiM8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+e3sgaSArIDEgfX08L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gUHJvZHVjdCBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj1cInByb2R1Y3RcIiBkaXNhYmxlQ2xlYXI+UHJvZHVjdDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50Py5wcm9kdWN0Py5uYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIFF1YW50aXR5IENvbHVtbiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicXVhbnRpdHlcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj1cInF1YW50aXR5XCIgZGlzYWJsZUNsZWFyPlF1YW50aXR5PC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7IGVsZW1lbnQ/LnF1YW50aXR5IH19PC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIFVuaXQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1bml0XCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI9XCJ1bml0XCIgZGlzYWJsZUNsZWFyPlVuaXQ8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8udW5pdD8udGl0bGUgfX08L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gRGV0YWlscyBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPkRldGFpbHM8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+e3sgZWxlbWVudD8uZGV0YWlscyB9fTwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+QWN0aW9uczwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXB1cmNoYXNlLW9yZGVyLXByb2R1Y3QtZm9ybS1idXR0b24gW3B1cmNoYXNlT3JkZXJJZF09XCJwdXJjaGFzZU9yZGVySWQoKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwdXJjaGFzZU9yZGVyUHJvZHVjdF09XCJlbGVtZW50XCIgKHNhdmVkKT1cInJlbG9hZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWZvcm0tYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24gKGRlbGV0ZWQpPVwicmVsb2FkKClcIiBbc2VydmljZV09XCJzZXJ2aWNlXCIgW21vZGVsXT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInt0aXRsZTogZWxlbWVudD8ucHJvZHVjdD8ubmFtZSwgdHlwZTogJ1B1cmNoYXNlIE9yZGVyIFByb2R1Y3QnfVwiPjwvYXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XG4gICAgICAgIDwvdGFibGU+XG5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { TechlifyServiceBaseClass } from 'ngx-techlify-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-techlify-core";
|
|
5
|
+
export class PurchaseOrderProductService extends TechlifyServiceBaseClass {
|
|
6
|
+
http;
|
|
7
|
+
constructor(http) {
|
|
8
|
+
super(http, 'purchase-order-products');
|
|
9
|
+
this.http = http;
|
|
10
|
+
}
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductService, providedIn: 'root' });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductService, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'root'
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: () => [{ type: i1.HttpService }] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItcHJvZHVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3VwcGxpZXIvcHVyY2hhc2Utb3JkZXIvcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1saXN0L3B1cmNoYXNlLW9yZGVyLXByb2R1Y3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFLMUUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHdCQUF3QjtJQUN0QztJQUEvQixZQUErQixJQUFpQjtRQUM1QyxLQUFLLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFEWixTQUFJLEdBQUosSUFBSSxDQUFhO0lBRWhELENBQUM7d0dBSFEsMkJBQTJCOzRHQUEzQiwyQkFBMkIsY0FGeEIsTUFBTTs7NEZBRVQsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlLCBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3MgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVyY2hhc2VPcmRlclByb2R1Y3RTZXJ2aWNlIGV4dGVuZHMgVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzIHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3ZlcnJpZGUgaHR0cDogSHR0cFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoaHR0cCwgJ3B1cmNoYXNlLW9yZGVyLXByb2R1Y3RzJyk7XG4gICAgfVxufVxuIl19
|
|
@@ -33,7 +33,7 @@ export class PurchaseOrderViewComponent {
|
|
|
33
33
|
}
|
|
34
34
|
loadData() {
|
|
35
35
|
this.isLoading = true;
|
|
36
|
-
this.service.show(this.id, { with: 'supplier
|
|
36
|
+
this.service.show(this.id, { with: 'supplier' }).subscribe({
|
|
37
37
|
next: (response) => {
|
|
38
38
|
this.purchaseOrder = response?.item;
|
|
39
39
|
this.isLoading = false;
|
|
@@ -47,7 +47,7 @@ export class PurchaseOrderViewComponent {
|
|
|
47
47
|
this.location.back();
|
|
48
48
|
}
|
|
49
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderViewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.PurchaseOrderService }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PurchaseOrderViewComponent, isStandalone: true, selector: "app-purchase-order-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"purchaseOrder\" class=\"d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">ungroup</span>\n <strong class=\"mb-0 text-dark\">PO #{{ purchaseOrder?.po_number }}</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-wrap justify-content-between gap-2 mt-3\">\n <!-- Date -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.date\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Date</small>\n <p class=\"mb-0\">{{ purchaseOrder?.date | date:'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <!-- PO # -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.po_number\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">PO #</small>\n <p class=\"mb-0\">{{ purchaseOrder?.po_number }}</p>\n </div>\n </div>\n </div>\n\n <!-- Supplier -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.supplier\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/suppliers', purchaseOrder?.supplier?.id, 'view']\">\n {{ purchaseOrder?.supplier?.company_name }}\n </a>\n </div>\n </div>\n </div>\n\n <!-- Details -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.details\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Details</small>\n <p class=\"mb-0\">{{ purchaseOrder?.details }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"PurchaseOrder\"\n [relatedModelId]=\"purchaseOrder?.id\"></app-note-list>\n </div>\n\n <app-purchase-order-product-list class='w-100' [
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PurchaseOrderViewComponent, isStandalone: true, selector: "app-purchase-order-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"purchaseOrder\" class=\"d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">ungroup</span>\n <strong class=\"mb-0 text-dark\">PO #{{ purchaseOrder?.po_number }}</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-wrap justify-content-between gap-2 mt-3\">\n <!-- Date -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.date\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Date</small>\n <p class=\"mb-0\">{{ purchaseOrder?.date | date:'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <!-- PO # -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.po_number\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">PO #</small>\n <p class=\"mb-0\">{{ purchaseOrder?.po_number }}</p>\n </div>\n </div>\n </div>\n\n <!-- Supplier -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.supplier\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/suppliers', purchaseOrder?.supplier?.id, 'view']\">\n {{ purchaseOrder?.supplier?.company_name }}\n </a>\n </div>\n </div>\n </div>\n\n <!-- Details -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.details\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Details</small>\n <p class=\"mb-0\">{{ purchaseOrder?.details }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"PurchaseOrder\"\n [relatedModelId]=\"purchaseOrder?.id\"></app-note-list>\n </div>\n\n <app-purchase-order-product-list class='w-100' [purchaseOrderId]=\"purchaseOrder?.id\"></app-purchase-order-product-list>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NoteModule }, { kind: "component", type: i6.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i6.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: PurchaseOrderProductListComponent, selector: "app-purchase-order-product-list", inputs: ["purchaseOrderId"] }], preserveWhitespaces: true });
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderViewComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -58,6 +58,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
58
58
|
NoteModule,
|
|
59
59
|
TechlifyIconModule,
|
|
60
60
|
PurchaseOrderProductListComponent
|
|
61
|
-
], template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"purchaseOrder\" class=\"d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">ungroup</span>\n <strong class=\"mb-0 text-dark\">PO #{{ purchaseOrder?.po_number }}</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-wrap justify-content-between gap-2 mt-3\">\n <!-- Date -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.date\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Date</small>\n <p class=\"mb-0\">{{ purchaseOrder?.date | date:'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <!-- PO # -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.po_number\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">PO #</small>\n <p class=\"mb-0\">{{ purchaseOrder?.po_number }}</p>\n </div>\n </div>\n </div>\n\n <!-- Supplier -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.supplier\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/suppliers', purchaseOrder?.supplier?.id, 'view']\">\n {{ purchaseOrder?.supplier?.company_name }}\n </a>\n </div>\n </div>\n </div>\n\n <!-- Details -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.details\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Details</small>\n <p class=\"mb-0\">{{ purchaseOrder?.details }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"PurchaseOrder\"\n [relatedModelId]=\"purchaseOrder?.id\"></app-note-list>\n </div>\n\n <app-purchase-order-product-list class='w-100' [
|
|
61
|
+
], template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n\n<div *ngIf=\"purchaseOrder\" class=\"d-flex flex-column justify-content-start gap-2\">\n <div class=\"d-flex justify-content-start align-items-start gap-2\">\n <div class=\"d-flex flex-column gap-2\" style=\"width: 400px\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">ungroup</span>\n <strong class=\"mb-0 text-dark\">PO #{{ purchaseOrder?.po_number }}</strong>\n </div>\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n </div>\n </mat-card-content>\n <mat-card-content class=\"d-flex flex-wrap justify-content-between gap-2 mt-3\">\n <!-- Date -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.date\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Date</small>\n <p class=\"mb-0\">{{ purchaseOrder?.date | date:'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <!-- PO # -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.po_number\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">PO #</small>\n <p class=\"mb-0\">{{ purchaseOrder?.po_number }}</p>\n </div>\n </div>\n </div>\n\n <!-- Supplier -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.supplier\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Supplier</small>\n <a class=\"text-decoration-none text-dark\"\n [routerLink]=\"['/inventory/suppliers', purchaseOrder?.supplier?.id, 'view']\">\n {{ purchaseOrder?.supplier?.company_name }}\n </a>\n </div>\n </div>\n </div>\n\n <!-- Details -->\n <div class=\"row\" *ngIf=\"purchaseOrder?.details\">\n <div class=\"col-12\">\n <div class=\"d-flex flex-column gap-0\">\n <small class=\"text-secondary\">Details</small>\n <p class=\"mb-0\">{{ purchaseOrder?.details }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list labelText=\"Notes\" viewMode=\"timeline\" modelType=\"PurchaseOrder\"\n [relatedModelId]=\"purchaseOrder?.id\"></app-note-list>\n </div>\n\n <app-purchase-order-product-list class='w-100' [purchaseOrderId]=\"purchaseOrder?.id\"></app-purchase-order-product-list>\n </div>\n</div>" }]
|
|
62
62
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.PurchaseOrderService }, { type: i3.Location }] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdXBwbGllci9wdXJjaGFzZS1vcmRlci9wdXJjaGFzZS1vcmRlci12aWV3L3B1cmNoYXNlLW9yZGVyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3VwcGxpZXIvcHVyY2hhc2Utb3JkZXIvcHVyY2hhc2Utb3JkZXItdmlldy9wdXJjaGFzZS1vcmRlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7Ozs7QUFlekgsTUFBTSxPQUFPLDBCQUEwQjtJQU92QjtJQUNBO0lBQ0E7SUFQWixFQUFFLENBQVU7SUFDWixTQUFTLENBQVc7SUFDcEIsYUFBYSxDQUFPO0lBRXBCLFlBQ1ksY0FBOEIsRUFDOUIsT0FBNkIsRUFDN0IsUUFBa0I7UUFGbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUIsQ0FBQztJQUVMLFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtRUFBbUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hILElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0FwQ1EsMEJBQTBCOzRGQUExQiwwQkFBMEIsbUZDckJ2QyxteEhBb0VNLDJDRHZERSxZQUFZLHFMQUNaLGNBQWMscVpBQ2QsVUFBVSxtT0FDVixVQUFVLDBNQUNWLGtCQUFrQiwrSUFDbEIsaUNBQWlDOzs0RkFHNUIsMEJBQTBCO2tCQWJ0QyxTQUFTOytCQUNJLHlCQUF5QixjQUV2QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixrQkFBa0I7d0JBQ2xCLGlDQUFpQztxQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBQdXJjaGFzZU9yZGVyU2VydmljZSB9IGZyb20gJy4uL3B1cmNoYXNlLW9yZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90ZU1vZHVsZSwgVGVjaGxpZnlJY29uTW9kdWxlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgUHVyY2hhc2VPcmRlclByb2R1Y3RMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1saXN0L3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1wdXJjaGFzZS1vcmRlci12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyY2hhc2Utb3JkZXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgICAgIFJvdXRlckxpbmssXG4gICAgICAgIE5vdGVNb2R1bGUsXG4gICAgICAgIFRlY2hsaWZ5SWNvbk1vZHVsZSxcbiAgICAgICAgUHVyY2hhc2VPcmRlclByb2R1Y3RMaXN0Q29tcG9uZW50XG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHVyY2hhc2VPcmRlclZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgaWQhOiBudW1iZXI7XG4gICAgaXNMb2FkaW5nITogYm9vbGVhbjtcbiAgICBwdXJjaGFzZU9yZGVyITogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHNlcnZpY2U6IFB1cmNoYXNlT3JkZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkID0gcGFyc2VJbnQocGFyYW1zWydpZCddKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkRGF0YSgpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2hvdyh0aGlzLmlkLCB7IHdpdGg6ICdzdXBwbGllcixwdXJjaGFzZU9yZGVyUHJvZHVjdHMucHJvZHVjdCxwdXJjaGFzZU9yZGVyUHJvZHVjdHMudW5pdCcgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXJjaGFzZU9yZGVyID0gcmVzcG9uc2U/Lml0ZW07XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZGlyZWN0QmFjaygpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgfVxufVxuIiwiPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImlzTG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cblxuPGRpdiAqbmdJZj1cInB1cmNoYXNlT3JkZXJcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCIgc3R5bGU9XCJ3aWR0aDogNDAwcHhcIj5cbiAgICAgICAgICAgIDxtYXQtY2FyZD5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj51bmdyb3VwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1iLTAgdGV4dC1kYXJrXCI+UE8gI3t7IHB1cmNoYXNlT3JkZXI/LnBvX251bWJlciB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWljb24gcm9sZT0nYnV0dG9uJyBuYW1lPSdlZGl0JyBjbGFzcz0ndGV4dC1zZWNvbmRhcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N1cHBsaWVycy9wdXJjaGFzZS1vcmRlcnMvZm9ybScsIHB1cmNoYXNlT3JkZXI/LmlkXVwiPjwvYXBwLXRlY2hsaWZ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInB1cmNoYXNlT3JkZXI/LmRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+RGF0ZTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHB1cmNoYXNlT3JkZXI/LmRhdGUgfCBkYXRlOidtZWRpdW1EYXRlJyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFBPICMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInB1cmNoYXNlT3JkZXI/LnBvX251bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5QTyAjPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcHVyY2hhc2VPcmRlcj8ucG9fbnVtYmVyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3VwcGxpZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInB1cmNoYXNlT3JkZXI/LnN1cHBsaWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlN1cHBsaWVyPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3N1cHBsaWVycycsIHB1cmNoYXNlT3JkZXI/LnN1cHBsaWVyPy5pZCwgJ3ZpZXcnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHVyY2hhc2VPcmRlcj8uc3VwcGxpZXI/LmNvbXBhbnlfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXRhaWxzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwdXJjaGFzZU9yZGVyPy5kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPkRldGFpbHM8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBwdXJjaGFzZU9yZGVyPy5kZXRhaWxzIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxhcHAtbm90ZS1saXN0IGxhYmVsVGV4dD1cIk5vdGVzXCIgdmlld01vZGU9XCJ0aW1lbGluZVwiIG1vZGVsVHlwZT1cIlB1cmNoYXNlT3JkZXJcIlxuICAgICAgICAgICAgICAgIFtyZWxhdGVkTW9kZWxJZF09XCJwdXJjaGFzZU9yZGVyPy5pZFwiPjwvYXBwLW5vdGUtbGlzdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGFwcC1wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWxpc3QgY2xhc3M9J3ctMTAwJyBbcHJvZHVjdHNdPVwicHVyY2hhc2VPcmRlcj8ucHVyY2hhc2Vfb3JkZXJfcHJvZHVjdHMgfHwgW11cIj48L2FwcC1wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWxpc3Q+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyY2hhc2Utb3JkZXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9zdXBwbGllci9wdXJjaGFzZS1vcmRlci9wdXJjaGFzZS1vcmRlci12aWV3L3B1cmNoYXNlLW9yZGVyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vc3VwcGxpZXIvcHVyY2hhc2Utb3JkZXIvcHVyY2hhc2Utb3JkZXItdmlldy9wdXJjaGFzZS1vcmRlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQzs7Ozs7Ozs7QUFlekgsTUFBTSxPQUFPLDBCQUEwQjtJQU92QjtJQUNBO0lBQ0E7SUFQWixFQUFFLENBQVU7SUFDWixTQUFTLENBQVc7SUFDcEIsYUFBYSxDQUFPO0lBRXBCLFlBQ1ksY0FBOEIsRUFDOUIsT0FBNkIsRUFDN0IsUUFBa0I7UUFGbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUIsQ0FBQztJQUVMLFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2RCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBcENRLDBCQUEwQjs0RkFBMUIsMEJBQTBCLG1GQ3JCdkMsK3ZIQW9FTSwyQ0R2REUsWUFBWSxxTEFDWixjQUFjLHFaQUNkLFVBQVUsbU9BQ1YsVUFBVSwwTUFDVixrQkFBa0IsK0lBQ2xCLGlDQUFpQzs7NEZBRzVCLDBCQUEwQjtrQkFidEMsU0FBUzsrQkFDSSx5QkFBeUIsY0FFdkIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1Ysa0JBQWtCO3dCQUNsQixpQ0FBaUM7cUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgUHVyY2hhc2VPcmRlclNlcnZpY2UgfSBmcm9tICcuLi9wdXJjaGFzZS1vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGVNb2R1bGUsIFRlY2hsaWZ5SWNvbk1vZHVsZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFB1cmNoYXNlT3JkZXJQcm9kdWN0TGlzdENvbXBvbmVudCB9IGZyb20gJy4uL3B1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdC9wdXJjaGFzZS1vcmRlci1wcm9kdWN0LWxpc3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcHVyY2hhc2Utb3JkZXItdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cmNoYXNlLW9yZGVyLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgICAgICBOb3RlTW9kdWxlLFxuICAgICAgICBUZWNobGlmeUljb25Nb2R1bGUsXG4gICAgICAgIFB1cmNoYXNlT3JkZXJQcm9kdWN0TGlzdENvbXBvbmVudFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFB1cmNoYXNlT3JkZXJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGlkITogbnVtYmVyO1xuICAgIGlzTG9hZGluZyE6IGJvb2xlYW47XG4gICAgcHVyY2hhc2VPcmRlciE6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBQdXJjaGFzZU9yZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZCA9IHBhcnNlSW50KHBhcmFtc1snaWQnXSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZERhdGEoKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNob3codGhpcy5pZCwgeyB3aXRoOiAnc3VwcGxpZXInIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHVyY2hhc2VPcmRlciA9IHJlc3BvbnNlPy5pdGVtO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWRpcmVjdEJhY2soKSB7XG4gICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgIH1cbn1cbiIsIjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+XG5cbjxkaXYgKm5nSWY9XCJwdXJjaGFzZU9yZGVyXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LXN0YXJ0IGdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtc3RhcnQgZ2FwLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiIHN0eWxlPVwid2lkdGg6IDQwMHB4XCI+XG4gICAgICAgICAgICA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+dW5ncm91cDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtYi0wIHRleHQtZGFya1wiPlBPICN7eyBwdXJjaGFzZU9yZGVyPy5wb19udW1iZXIgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0nZWRpdCcgY2xhc3M9J3RleHQtc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9zdXBwbGllcnMvcHVyY2hhc2Utb3JkZXJzL2Zvcm0nLCBwdXJjaGFzZU9yZGVyPy5pZF1cIj48L2FwcC10ZWNobGlmeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yIG10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwdXJjaGFzZU9yZGVyPy5kYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPkRhdGU8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBwdXJjaGFzZU9yZGVyPy5kYXRlIHwgZGF0ZTonbWVkaXVtRGF0ZScgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQTyAjIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwdXJjaGFzZU9yZGVyPy5wb19udW1iZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+UE8gIzwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHB1cmNoYXNlT3JkZXI/LnBvX251bWJlciB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1cHBsaWVyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwdXJjaGFzZU9yZGVyPy5zdXBwbGllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5TdXBwbGllcjwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1kYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2ludmVudG9yeS9zdXBwbGllcnMnLCBwdXJjaGFzZU9yZGVyPy5zdXBwbGllcj8uaWQsICd2aWV3J11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHB1cmNoYXNlT3JkZXI/LnN1cHBsaWVyPy5jb21wYW55X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGV0YWlscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwicHVyY2hhc2VPcmRlcj8uZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5EZXRhaWxzPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcHVyY2hhc2VPcmRlcj8uZGV0YWlscyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgICAgICA8YXBwLW5vdGUtbGlzdCBsYWJlbFRleHQ9XCJOb3Rlc1wiIHZpZXdNb2RlPVwidGltZWxpbmVcIiBtb2RlbFR5cGU9XCJQdXJjaGFzZU9yZGVyXCJcbiAgICAgICAgICAgICAgICBbcmVsYXRlZE1vZGVsSWRdPVwicHVyY2hhc2VPcmRlcj8uaWRcIj48L2FwcC1ub3RlLWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxhcHAtcHVyY2hhc2Utb3JkZXItcHJvZHVjdC1saXN0IGNsYXNzPSd3LTEwMCcgW3B1cmNoYXNlT3JkZXJJZF09XCJwdXJjaGFzZU9yZGVyPy5pZFwiPjwvYXBwLXB1cmNoYXNlLW9yZGVyLXByb2R1Y3QtbGlzdD5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -14,9 +14,9 @@ import * as i8 from '@angular/material/icon';
|
|
|
14
14
|
import { MatIconModule } from '@angular/material/icon';
|
|
15
15
|
import * as i10 from '@angular/material/sort';
|
|
16
16
|
import * as i8$1 from '@angular/material/table';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i5 from '@angular/material/progress-bar';
|
|
18
18
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
19
|
-
import { T as TechlifyFilterComponent, a as TechlifyFilterModule } from './techlify-inventory-common-techlify-inventory-common-
|
|
19
|
+
import { T as TechlifyFilterComponent, a as TechlifyFilterModule } from './techlify-inventory-common-techlify-inventory-common-BoJjioLF.mjs';
|
|
20
20
|
import * as i14 from 'ngx-infinite-scroll';
|
|
21
21
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
22
22
|
import * as i1$1 from '@angular/material/dialog';
|
|
@@ -24,7 +24,7 @@ import { MatDialogModule } from '@angular/material/dialog';
|
|
|
24
24
|
import * as i7 from '@angular/material/button';
|
|
25
25
|
import * as i6 from '@angular/material/form-field';
|
|
26
26
|
import * as i9 from '@angular/material/input';
|
|
27
|
-
import * as i5 from '@angular/material/divider';
|
|
27
|
+
import * as i5$1 from '@angular/material/divider';
|
|
28
28
|
|
|
29
29
|
class CategoryService extends TechlifyServiceBaseClass {
|
|
30
30
|
constructor(httpService) {
|
|
@@ -172,7 +172,7 @@ class CategoryListPageComponent extends TechlifyListingControllerInterface {
|
|
|
172
172
|
this.filterForm.get('sort_by').setValue(active + '|' + direction);
|
|
173
173
|
}
|
|
174
174
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CategoryListPageComponent, deps: [{ token: i2.FormBuilder }, { token: CategoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CategoryListPageComponent, selector: "app-category-list-page", usesInheritance: true, ngImport: i0, template: "<mat-card>\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-2\">\n <h3 class=\"mb-0\">Product Categories</h3>\n <app-category-form-button (saved)=\"reload()\"></app-category-form-button>\n </div>\n <app-techlify-filter\n [filterForm]=\"filterForm\"\n (filterUpdated)=\"reload()\"\n [filterConfig]=\"filterConfig\"\n ></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n [dataSource]=\"models\"\n class=\"w-100\"\n aria-describedby=\"Product Categories\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\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 <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <!-- Products Column -->\n <ng-container matColumnDef=\"products\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"products_count\">Products</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.products_count }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-category-form-button [category]=\"element\" (saved)=\"reload()\"></app-category-form-button>\n <a class=\"text-decoration-none text-dark\" [routerLink]=\"[element?.id, 'view']\">\n <mat-icon class=\"text-dark\">visibility</mat-icon>\n </a>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type:
|
|
175
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CategoryListPageComponent, selector: "app-category-list-page", usesInheritance: true, ngImport: i0, template: "<mat-card>\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-2\">\n <h3 class=\"mb-0\">Product Categories</h3>\n <app-category-form-button (saved)=\"reload()\"></app-category-form-button>\n </div>\n <app-techlify-filter\n [filterForm]=\"filterForm\"\n (filterUpdated)=\"reload()\"\n [filterConfig]=\"filterConfig\"\n ></app-techlify-filter>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content class=\"p-0\">\n <table\n mat-table\n [dataSource]=\"models\"\n class=\"w-100\"\n aria-describedby=\"Product Categories\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n matSort\n (matSortChange)=\"onSortChange($event)\"\n >\n <!-- # Column -->\n <ng-container matColumnDef=\"no\">\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 <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Title</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef>Description</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.description }}</td>\n </ng-container>\n\n <!-- Products Column -->\n <ng-container matColumnDef=\"products\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"products_count\">Products</th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.products_count }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <app-category-form-button [category]=\"element\" (saved)=\"reload()\"></app-category-form-button>\n <a class=\"text-decoration-none text-dark\" [routerLink]=\"[element?.id, 'view']\">\n <mat-icon class=\"text-dark\">visibility</mat-icon>\n </a>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: TechlifyFilterComponent, selector: "app-techlify-filter", inputs: ["filterForm", "filterConfig"], outputs: ["filterUpdated"] }, { kind: "directive", type: i14.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: CategoryFormButtonComponent, selector: "app-category-form-button", inputs: ["category"], outputs: ["saved"] }], preserveWhitespaces: true });
|
|
176
176
|
}
|
|
177
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CategoryListPageComponent, decorators: [{
|
|
178
178
|
type: Component,
|
|
@@ -208,7 +208,7 @@ class CategoryViewComponent {
|
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CategoryViewComponent, deps: [{ token: i4.ActivatedRoute }, { token: CategoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CategoryViewComponent, selector: "app-category-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n\n<div style=\"max-width: 250px\" *ngIf=\"model\" class=\"d-flex flex-column gap-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <h3 class=\"fw-bold\">Information</h3>\n <div class=\"d-flex justify-content-end align-items-center\">\n <app-category-form-button [category]=\"model\" (saved)=\"loadData()\"></app-category-form-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mt-2\"></mat-divider>\n <mat-card-content class=\"mt-3\">\n <div class=\"d-flex flex-column justify-content-start gap-0\">\n <small class=\"text-secondary\">Title</small>\n <p>{{ model?.title }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column justify-content-start gap-0\">\n <small class=\"text-secondary\">Description</small>\n <p>{{ model?.description }}</p>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list\n labelText=\"Notes\"\n viewMode=\"timeline\"\n modelType=\"ProductCategory\"\n [relatedModelId]=\"model?.id\"\n ></app-note-list>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type:
|
|
211
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CategoryViewComponent, selector: "app-category-view", ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n\n<div style=\"max-width: 250px\" *ngIf=\"model\" class=\"d-flex flex-column gap-3\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <h3 class=\"fw-bold\">Information</h3>\n <div class=\"d-flex justify-content-end align-items-center\">\n <app-category-form-button [category]=\"model\" (saved)=\"loadData()\"></app-category-form-button>\n </div>\n </mat-card-content>\n <mat-divider class=\"mt-2\"></mat-divider>\n <mat-card-content class=\"mt-3\">\n <div class=\"d-flex flex-column justify-content-start gap-0\">\n <small class=\"text-secondary\">Title</small>\n <p>{{ model?.title }}</p>\n </div>\n <div *ngIf=\"model?.description\" class=\"d-flex flex-column justify-content-start gap-0\">\n <small class=\"text-secondary\">Description</small>\n <p>{{ model?.description }}</p>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-note-list\n labelText=\"Notes\"\n viewMode=\"timeline\"\n modelType=\"ProductCategory\"\n [relatedModelId]=\"model?.id\"\n ></app-note-list>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i1.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: CategoryFormButtonComponent, selector: "app-category-form-button", inputs: ["category"], outputs: ["saved"] }], preserveWhitespaces: true });
|
|
212
212
|
}
|
|
213
213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CategoryViewComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
285
285
|
}] });
|
|
286
286
|
|
|
287
287
|
export { CategoryModule };
|
|
288
|
-
//# sourceMappingURL=techlify-inventory-common-category.module-
|
|
288
|
+
//# sourceMappingURL=techlify-inventory-common-category.module-BfcXygNN.mjs.map
|