techlify-inventory-common 18.46.0 → 18.48.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/inventory-common-routing.module.mjs +5 -1
- package/esm2022/lib/inventory-common/location/location-selector/location-selector.component.mjs +5 -4
- package/esm2022/lib/inventory-common/recipient/recipient-form/recipient-form.component.mjs +59 -0
- package/esm2022/lib/inventory-common/recipient/recipient-list/recipient-list.component.mjs +49 -0
- package/esm2022/lib/inventory-common/recipient/recipient-routing.module.mjs +24 -0
- package/esm2022/lib/inventory-common/recipient/recipient.module.mjs +18 -0
- package/esm2022/lib/inventory-common/recipient/recipient.service.mjs +18 -0
- package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.mjs +31 -32
- package/esm2022/lib/inventory-common/shared.module.mjs +9 -2
- package/esm2022/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.mjs +81 -0
- package/esm2022/lib/inventory-common/stock-allocation/stock-allocation.service.mjs +16 -0
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.mjs +29 -19
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.mjs +6 -7
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.mjs +3 -3
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.mjs +6 -6
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.mjs +59 -0
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +7 -7
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-routing.module.mjs +6 -1
- package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.mjs +38 -17
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.mjs +2 -2
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +5 -5
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +7 -7
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.mjs +59 -0
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.mjs +2 -2
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +6 -1
- package/fesm2022/{techlify-inventory-common-category.module-9eluHVhx.mjs → techlify-inventory-common-category.module-VjAS4ehQ.mjs} +16 -16
- package/fesm2022/{techlify-inventory-common-category.module-9eluHVhx.mjs.map → techlify-inventory-common-category.module-VjAS4ehQ.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-B1Ur9tgz.mjs → techlify-inventory-common-purchase-order-view.component-D5GrUK-m.mjs} +13 -13
- package/fesm2022/{techlify-inventory-common-purchase-order-view.component-B1Ur9tgz.mjs.map → techlify-inventory-common-purchase-order-view.component-D5GrUK-m.mjs.map} +1 -1
- package/fesm2022/techlify-inventory-common-recipient.module-BnRAWk8N.mjs +147 -0
- package/fesm2022/techlify-inventory-common-recipient.module-BnRAWk8N.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-B-aNyhLA.mjs +194 -0
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-B-aNyhLA.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-BP2yFaQn.mjs +60 -0
- package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-BP2yFaQn.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-BNF8oAum.mjs → techlify-inventory-common-stock-issue-view.component-DHdnoIR8.mjs} +9 -9
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-BNF8oAum.mjs.map → techlify-inventory-common-stock-issue-view.component-DHdnoIR8.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-D78OQ65o.mjs → techlify-inventory-common-techlify-inventory-common-DuAN6iqX.mjs} +444 -279
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-DuAN6iqX.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/location/location-selector/location-selector.component.d.ts +2 -1
- package/lib/inventory-common/recipient/recipient-form/recipient-form.component.d.ts +21 -0
- package/lib/inventory-common/recipient/recipient-list/recipient-list.component.d.ts +16 -0
- package/lib/inventory-common/recipient/recipient-routing.module.d.ts +7 -0
- package/lib/inventory-common/recipient/recipient.module.d.ts +9 -0
- package/lib/inventory-common/recipient/recipient.service.d.ts +7 -0
- package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.d.ts +4 -10
- package/lib/inventory-common/shared.module.d.ts +4 -3
- package/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.d.ts +19 -0
- package/lib/inventory-common/stock-allocation/stock-allocation.service.d.ts +7 -0
- package/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.d.ts +5 -3
- package/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.d.ts +2 -2
- package/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.d.ts +19 -0
- package/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.d.ts +2 -2
- package/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.d.ts +5 -3
- package/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.d.ts +2 -2
- package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +2 -2
- package/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.d.ts +19 -0
- package/package.json +1 -1
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-CaLMvUGF.mjs +0 -183
- package/fesm2022/techlify-inventory-common-stock-issue-form.component-CaLMvUGF.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-D78OQ65o.mjs.map +0 -1
|
@@ -2,22 +2,22 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, Component, Inject, input, output, effect } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i1$2 from '@angular/router';
|
|
6
6
|
import { RouterLink } from '@angular/router';
|
|
7
|
-
import { M as MaterialModule, P as PurchaseOrderService } from './techlify-inventory-common-techlify-inventory-common-
|
|
7
|
+
import { M as MaterialModule, P as PurchaseOrderService } from './techlify-inventory-common-techlify-inventory-common-DuAN6iqX.mjs';
|
|
8
8
|
import * as i1 from 'ngx-techlify-core';
|
|
9
9
|
import { TechlifyService, TechlifyFormComponent, SearchableSelectorModule, TechlifyIconModule, TechlifyListComponent, TechlifyDeleteButtonComponent, NoteModule } from 'ngx-techlify-core';
|
|
10
10
|
import * as i2 from '@angular/forms';
|
|
11
11
|
import { Validators, ReactiveFormsModule } from '@angular/forms';
|
|
12
12
|
import * as i1$1 from '@angular/material/dialog';
|
|
13
13
|
import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent } from '@angular/material/dialog';
|
|
14
|
-
import * as
|
|
15
|
-
import * as
|
|
16
|
-
import * as i8 from '@angular/material/input';
|
|
14
|
+
import * as i6 from '@angular/material/button';
|
|
15
|
+
import * as i8 from '@angular/material/form-field';
|
|
16
|
+
import * as i8$1 from '@angular/material/input';
|
|
17
17
|
import * as i4 from '@angular/material/card';
|
|
18
|
-
import * as
|
|
18
|
+
import * as i5 from '@angular/material/progress-bar';
|
|
19
19
|
import * as i10 from '@angular/material/sort';
|
|
20
|
-
import * as i8$
|
|
20
|
+
import * as i8$2 from '@angular/material/table';
|
|
21
21
|
|
|
22
22
|
class PurchaseOrderProductService extends TechlifyService {
|
|
23
23
|
http;
|
|
@@ -77,7 +77,7 @@ class PurchaseOrderProductFormComponent extends TechlifyFormComponent {
|
|
|
77
77
|
this.dialogRef.close();
|
|
78
78
|
}
|
|
79
79
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: PurchaseOrderProductService }, { token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
-
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: i3.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:
|
|
80
|
+
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: i3.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: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "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", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }], preserveWhitespaces: true });
|
|
81
81
|
}
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductFormComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
@@ -158,7 +158,7 @@ class PurchaseOrderProductListComponent extends TechlifyListComponent {
|
|
|
158
158
|
this.listenFilterChanges();
|
|
159
159
|
}
|
|
160
160
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductListComponent, deps: [{ token: PurchaseOrderProductService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
161
|
-
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:
|
|
161
|
+
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: 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$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8$2.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 });
|
|
162
162
|
}
|
|
163
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderProductListComponent, decorators: [{
|
|
164
164
|
type: Component,
|
|
@@ -207,8 +207,8 @@ class PurchaseOrderViewComponent {
|
|
|
207
207
|
redirectBack() {
|
|
208
208
|
this.location.back();
|
|
209
209
|
}
|
|
210
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderViewComponent, deps: [{ token:
|
|
211
|
-
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 text-secondary\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n\n <app-techlify-delete-button [service]=\"service\" [model]=\"purchaseOrder\"\n [data]=\"{title: purchaseOrder?.po_number, type: 'Purchase Order'}\"\n (deleted)=\"redirectBack()\"></app-techlify-delete-button>\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'\n [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:
|
|
210
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderViewComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: PurchaseOrderService }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
+
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 text-secondary\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n\n <app-techlify-delete-button [service]=\"service\" [model]=\"purchaseOrder\"\n [data]=\"{title: purchaseOrder?.po_number, type: 'Purchase Order'}\"\n (deleted)=\"redirectBack()\"></app-techlify-delete-button>\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'\n [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: i1.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "ngmodule", type: TechlifyIconModule }, { kind: "component", type: i1.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: PurchaseOrderProductListComponent, selector: "app-purchase-order-product-list", inputs: ["purchaseOrderId"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }], preserveWhitespaces: true });
|
|
212
212
|
}
|
|
213
213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PurchaseOrderViewComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
@@ -221,7 +221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
221
221
|
PurchaseOrderProductListComponent,
|
|
222
222
|
TechlifyDeleteButtonComponent
|
|
223
223
|
], 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 text-secondary\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n\n <app-techlify-delete-button [service]=\"service\" [model]=\"purchaseOrder\"\n [data]=\"{title: purchaseOrder?.po_number, type: 'Purchase Order'}\"\n (deleted)=\"redirectBack()\"></app-techlify-delete-button>\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'\n [purchaseOrderId]=\"purchaseOrder?.id\"></app-purchase-order-product-list>\n </div>\n</div>" }]
|
|
224
|
-
}], ctorParameters: () => [{ type:
|
|
224
|
+
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: PurchaseOrderService }, { type: i3.Location }] });
|
|
225
225
|
|
|
226
226
|
export { PurchaseOrderViewComponent };
|
|
227
|
-
//# sourceMappingURL=techlify-inventory-common-purchase-order-view.component-
|
|
227
|
+
//# sourceMappingURL=techlify-inventory-common-purchase-order-view.component-D5GrUK-m.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"techlify-inventory-common-purchase-order-view.component-B1Ur9tgz.mjs","sources":["../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.html"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PurchaseOrderProductService extends TechlifyService {\n constructor(protected override http: HttpService) {\n super(http, 'purchase-order-products');\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormValidatorService, SearchableSelectorModule, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MaterialModule } from '../../../../material.module';\nimport { PurchaseOrderProductService } from '../purchase-order-product.service';\n\n@Component({\n selector: 'app-purchase-order-product-form',\n templateUrl: './purchase-order-product-form.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n MatDialogTitle,\n MatDialogContent,\n ],\n})\nexport class PurchaseOrderProductFormComponent extends TechlifyFormComponent implements OnInit {\n\n constructor(\n formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n protected override service: PurchaseOrderProductService,\n dialogRef: MatDialogRef<PurchaseOrderProductFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n super(formValidatorService);\n this.dialogRef = dialogRef;\n\n this.errorMessages = {\n product_id: { required: 'Product is required.' },\n quantity: { required: 'Quantity is required.', min: 'Quantity must be at least 1.' },\n unit_id: { required: 'Unit is required.' },\n };\n\n this.form = this.fb.group({\n id: [''],\n purchase_order_id: ['', Validators.required],\n product_id: ['', Validators.required],\n quantity: [1, [Validators.required, Validators.min(1)]],\n unit_id: ['', Validators.required],\n details: [''],\n });\n }\n\n ngOnInit(): void {\n this.form.patchValue({ purchase_order_id: this.data.purchaseOrderId });\n\n const product = this.data.purchaseOrderProduct;\n if (product) {\n this.isUpdate = true;\n this.form.patchValue({\n id: product.id,\n product_id: product.product_id,\n quantity: product.quantity,\n unit_id: product.unit_id,\n details: product.details ?? '',\n });\n }\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n","<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>","import { Component, output } from '@angular/core';\nimport { input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\nimport { PurchaseOrderProductFormComponent } from '../purchase-order-product-form/purchase-order-product-form.component';\n\n@Component({\n selector: 'app-purchase-order-product-form-button',\n templateUrl: './purchase-order-product-form-button.component.html',\n standalone: true,\n imports: [\n TechlifyIconModule,\n ],\n})\nexport class PurchaseOrderProductFormButtonComponent {\n\n purchaseOrderProduct = input<any>();\n purchaseOrderId = input.required<number>();\n\n saved = output<any>();\n\n constructor(private dialog: MatDialog) { }\n\n open(): void {\n this.dialog.open(PurchaseOrderProductFormComponent, {\n width: '500px',\n data: {\n purchaseOrderId: this.purchaseOrderId(),\n purchaseOrderProduct: this.purchaseOrderProduct(),\n },\n }).afterClosed().subscribe((item: any) => {\n if (item) {\n this.saved.emit(item);\n }\n });\n }\n}\n","<app-techlify-icon\n role=\"button\"\n [name]=\"purchaseOrderProduct() ? 'edit' : 'add'\"\n (click)=\"open()\">\n</app-techlify-icon>\n","import { Component, effect, OnInit, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../material.module';\nimport { TechlifyDeleteButtonComponent, TechlifyIconModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { PurchaseOrderProductService } from './purchase-order-product.service';\nimport { PurchaseOrderProductFormButtonComponent } from './purchase-order-product-form-button/purchase-order-product-form-button.component';\n\n@Component({\n selector: 'app-purchase-order-product-list',\n templateUrl: './purchase-order-product-list.component.html',\n standalone: true,\n imports: [\n CommonModule,\n MaterialModule,\n ReactiveFormsModule,\n TechlifyIconModule,\n PurchaseOrderProductFormButtonComponent,\n TechlifyDeleteButtonComponent\n ],\n})\nexport class PurchaseOrderProductListComponent extends TechlifyListComponent implements OnInit {\n\n purchaseOrderId = input<number>();\n\n displayedColumns: string[] = [\n '#',\n 'product',\n 'quantity',\n 'unit',\n 'details',\n 'actions',\n ];\n\n constructor(\n protected override service: PurchaseOrderProductService,\n private fb: FormBuilder,\n ) {\n super(service);\n this.isFilterPatchFromRoute = false;\n this.filterForm = this.fb.group({\n purchase_order_id: [''],\n sort_by: ['product|ASC'],\n });\n\n effect(() => {\n const id = this.purchaseOrderId();\n if (id) {\n this.filterForm.get('purchase_order_id')?.setValue(id, { emitEvent: false });\n this.reload();\n }\n });\n }\n\n ngOnInit(): void {\n this.listenFilterChanges();\n }\n}\n","<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>","import { Component, OnInit } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { MaterialModule } from '../../../material.module';\nimport { PurchaseOrderService } from '../purchase-order.service';\nimport { NoteModule, TechlifyDeleteButtonComponent, TechlifyIconModule } from 'ngx-techlify-core';\nimport { PurchaseOrderProductListComponent } from '../purchase-order-product-list/purchase-order-product-list.component';\n\n@Component({\n selector: 'app-purchase-order-view',\n templateUrl: './purchase-order-view.component.html',\n standalone: true,\n imports: [\n CommonModule,\n MaterialModule,\n RouterLink,\n NoteModule,\n TechlifyIconModule,\n PurchaseOrderProductListComponent,\n TechlifyDeleteButtonComponent\n ],\n})\nexport class PurchaseOrderViewComponent implements OnInit {\n\n id!: number;\n isLoading!: boolean;\n purchaseOrder!: any;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n protected service: PurchaseOrderService,\n private location: Location\n ) { }\n\n ngOnInit(): void {\n this.activatedRoute.params.subscribe(params => {\n this.id = parseInt(params['id']);\n if (this.id) {\n this.loadData();\n }\n });\n }\n\n loadData() {\n this.isLoading = true;\n this.service.show(this.id, { with: 'supplier' }).subscribe({\n next: (response: any) => {\n this.purchaseOrder = response?.item;\n this.isLoading = false;\n },\n error: () => {\n this.isLoading = false;\n }\n });\n }\n\n redirectBack() {\n this.location.back();\n }\n}\n","<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 text-secondary\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n\n <app-techlify-delete-button [service]=\"service\" [model]=\"purchaseOrder\"\n [data]=\"{title: purchaseOrder?.po_number, type: 'Purchase Order'}\"\n (deleted)=\"redirectBack()\"></app-techlify-delete-button>\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'\n [purchaseOrderId]=\"purchaseOrder?.id\"></app-purchase-order-product-list>\n </div>\n</div>"],"names":["i6","i4","i7","i1","i2","i1.PurchaseOrderProductService","i5","i2.PurchaseOrderService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"techlify-inventory-common-purchase-order-view.component-D5GrUK-m.mjs","sources":["../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.ts","../../../projects/inventory-common/src/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.html"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PurchaseOrderProductService extends TechlifyService {\n constructor(protected override http: HttpService) {\n super(http, 'purchase-order-products');\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { FormValidatorService, SearchableSelectorModule, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MaterialModule } from '../../../../material.module';\nimport { PurchaseOrderProductService } from '../purchase-order-product.service';\n\n@Component({\n selector: 'app-purchase-order-product-form',\n templateUrl: './purchase-order-product-form.component.html',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MaterialModule,\n SearchableSelectorModule,\n MatDialogTitle,\n MatDialogContent,\n ],\n})\nexport class PurchaseOrderProductFormComponent extends TechlifyFormComponent implements OnInit {\n\n constructor(\n formValidatorService: FormValidatorService,\n private fb: FormBuilder,\n protected override service: PurchaseOrderProductService,\n dialogRef: MatDialogRef<PurchaseOrderProductFormComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n super(formValidatorService);\n this.dialogRef = dialogRef;\n\n this.errorMessages = {\n product_id: { required: 'Product is required.' },\n quantity: { required: 'Quantity is required.', min: 'Quantity must be at least 1.' },\n unit_id: { required: 'Unit is required.' },\n };\n\n this.form = this.fb.group({\n id: [''],\n purchase_order_id: ['', Validators.required],\n product_id: ['', Validators.required],\n quantity: [1, [Validators.required, Validators.min(1)]],\n unit_id: ['', Validators.required],\n details: [''],\n });\n }\n\n ngOnInit(): void {\n this.form.patchValue({ purchase_order_id: this.data.purchaseOrderId });\n\n const product = this.data.purchaseOrderProduct;\n if (product) {\n this.isUpdate = true;\n this.form.patchValue({\n id: product.id,\n product_id: product.product_id,\n quantity: product.quantity,\n unit_id: product.unit_id,\n details: product.details ?? '',\n });\n }\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n}\n","<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>","import { Component, output } from '@angular/core';\nimport { input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TechlifyIconModule } from 'ngx-techlify-core';\nimport { PurchaseOrderProductFormComponent } from '../purchase-order-product-form/purchase-order-product-form.component';\n\n@Component({\n selector: 'app-purchase-order-product-form-button',\n templateUrl: './purchase-order-product-form-button.component.html',\n standalone: true,\n imports: [\n TechlifyIconModule,\n ],\n})\nexport class PurchaseOrderProductFormButtonComponent {\n\n purchaseOrderProduct = input<any>();\n purchaseOrderId = input.required<number>();\n\n saved = output<any>();\n\n constructor(private dialog: MatDialog) { }\n\n open(): void {\n this.dialog.open(PurchaseOrderProductFormComponent, {\n width: '500px',\n data: {\n purchaseOrderId: this.purchaseOrderId(),\n purchaseOrderProduct: this.purchaseOrderProduct(),\n },\n }).afterClosed().subscribe((item: any) => {\n if (item) {\n this.saved.emit(item);\n }\n });\n }\n}\n","<app-techlify-icon\n role=\"button\"\n [name]=\"purchaseOrderProduct() ? 'edit' : 'add'\"\n (click)=\"open()\">\n</app-techlify-icon>\n","import { Component, effect, OnInit, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../material.module';\nimport { TechlifyDeleteButtonComponent, TechlifyIconModule, TechlifyListComponent } from 'ngx-techlify-core';\nimport { PurchaseOrderProductService } from './purchase-order-product.service';\nimport { PurchaseOrderProductFormButtonComponent } from './purchase-order-product-form-button/purchase-order-product-form-button.component';\n\n@Component({\n selector: 'app-purchase-order-product-list',\n templateUrl: './purchase-order-product-list.component.html',\n standalone: true,\n imports: [\n CommonModule,\n MaterialModule,\n ReactiveFormsModule,\n TechlifyIconModule,\n PurchaseOrderProductFormButtonComponent,\n TechlifyDeleteButtonComponent\n ],\n})\nexport class PurchaseOrderProductListComponent extends TechlifyListComponent implements OnInit {\n\n purchaseOrderId = input<number>();\n\n displayedColumns: string[] = [\n '#',\n 'product',\n 'quantity',\n 'unit',\n 'details',\n 'actions',\n ];\n\n constructor(\n protected override service: PurchaseOrderProductService,\n private fb: FormBuilder,\n ) {\n super(service);\n this.isFilterPatchFromRoute = false;\n this.filterForm = this.fb.group({\n purchase_order_id: [''],\n sort_by: ['product|ASC'],\n });\n\n effect(() => {\n const id = this.purchaseOrderId();\n if (id) {\n this.filterForm.get('purchase_order_id')?.setValue(id, { emitEvent: false });\n this.reload();\n }\n });\n }\n\n ngOnInit(): void {\n this.listenFilterChanges();\n }\n}\n","<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>","import { Component, OnInit } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { MaterialModule } from '../../../material.module';\nimport { PurchaseOrderService } from '../purchase-order.service';\nimport { NoteModule, TechlifyDeleteButtonComponent, TechlifyIconModule } from 'ngx-techlify-core';\nimport { PurchaseOrderProductListComponent } from '../purchase-order-product-list/purchase-order-product-list.component';\n\n@Component({\n selector: 'app-purchase-order-view',\n templateUrl: './purchase-order-view.component.html',\n standalone: true,\n imports: [\n CommonModule,\n MaterialModule,\n RouterLink,\n NoteModule,\n TechlifyIconModule,\n PurchaseOrderProductListComponent,\n TechlifyDeleteButtonComponent\n ],\n})\nexport class PurchaseOrderViewComponent implements OnInit {\n\n id!: number;\n isLoading!: boolean;\n purchaseOrder!: any;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n protected service: PurchaseOrderService,\n private location: Location\n ) { }\n\n ngOnInit(): void {\n this.activatedRoute.params.subscribe(params => {\n this.id = parseInt(params['id']);\n if (this.id) {\n this.loadData();\n }\n });\n }\n\n loadData() {\n this.isLoading = true;\n this.service.show(this.id, { with: 'supplier' }).subscribe({\n next: (response: any) => {\n this.purchaseOrder = response?.item;\n this.isLoading = false;\n },\n error: () => {\n this.isLoading = false;\n }\n });\n }\n\n redirectBack() {\n this.location.back();\n }\n}\n","<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 text-secondary\">\n <app-techlify-icon role='button' name='edit' class='text-secondary'\n [routerLink]=\"['/inventory/suppliers/purchase-orders/form', purchaseOrder?.id]\"></app-techlify-icon>\n\n <app-techlify-delete-button [service]=\"service\" [model]=\"purchaseOrder\"\n [data]=\"{title: purchaseOrder?.po_number, type: 'Purchase Order'}\"\n (deleted)=\"redirectBack()\"></app-techlify-delete-button>\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'\n [purchaseOrderId]=\"purchaseOrder?.id\"></app-purchase-order-product-list>\n </div>\n</div>"],"names":["i4","i7","i8","i1","i2","i1.PurchaseOrderProductService","i6","i2.PurchaseOrderService"],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Component, Inject, Optional, signal, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1$2 from '@angular/router';
|
|
4
|
+
import { RouterModule } from '@angular/router';
|
|
5
|
+
import * as i1 from 'ngx-techlify-core';
|
|
6
|
+
import { TechlifyService, TechlifyFormComponent, TechlifyListComponent } from 'ngx-techlify-core';
|
|
7
|
+
import * as i2 from '@angular/forms';
|
|
8
|
+
import { Validators } from '@angular/forms';
|
|
9
|
+
import * as i1$1 from '@angular/material/dialog';
|
|
10
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
+
import { S as SharedModule } from './techlify-inventory-common-techlify-inventory-common-DuAN6iqX.mjs';
|
|
12
|
+
import * as i3 from '@angular/common';
|
|
13
|
+
import * as i6 from '@angular/material/button';
|
|
14
|
+
import * as i4 from '@angular/material/card';
|
|
15
|
+
import * as i8 from '@angular/material/form-field';
|
|
16
|
+
import * as i8$1 from '@angular/material/input';
|
|
17
|
+
import * as i11 from 'ngx-infinite-scroll';
|
|
18
|
+
import * as i5 from '@angular/material/progress-bar';
|
|
19
|
+
import * as i10 from '@angular/material/sort';
|
|
20
|
+
import * as i8$2 from '@angular/material/table';
|
|
21
|
+
import * as i13 from 'ngx-permissions';
|
|
22
|
+
|
|
23
|
+
class RecipientService extends TechlifyService {
|
|
24
|
+
constructor(httpService) {
|
|
25
|
+
super(httpService, 'recipients');
|
|
26
|
+
}
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientService, providedIn: 'root' });
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientService, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{
|
|
33
|
+
providedIn: 'root',
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: () => [{ type: i1.HttpService }] });
|
|
36
|
+
|
|
37
|
+
class RecipientFormComponent extends TechlifyFormComponent {
|
|
38
|
+
formValidatorService;
|
|
39
|
+
formBuilder;
|
|
40
|
+
service;
|
|
41
|
+
dialogRef;
|
|
42
|
+
data;
|
|
43
|
+
constructor(formValidatorService, formBuilder, service, dialogRef, data) {
|
|
44
|
+
super(formValidatorService, service);
|
|
45
|
+
this.formValidatorService = formValidatorService;
|
|
46
|
+
this.formBuilder = formBuilder;
|
|
47
|
+
this.service = service;
|
|
48
|
+
this.dialogRef = dialogRef;
|
|
49
|
+
this.data = data;
|
|
50
|
+
this.errorMessages = {
|
|
51
|
+
name: {
|
|
52
|
+
required: 'The name field is required.',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
this.form = this.formBuilder.group({
|
|
56
|
+
id: [''],
|
|
57
|
+
name: ['', Validators.required],
|
|
58
|
+
details: [''],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
const model = this.data?.model;
|
|
63
|
+
if (model) {
|
|
64
|
+
this.isUpdate = true;
|
|
65
|
+
this.form.patchValue(model);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.FormBuilder }, { token: RecipientService }, { token: i1$1.MatDialogRef }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RecipientFormComponent, isStandalone: true, selector: "app-recipient-form", usesInheritance: true, ngImport: i0, template: "<mat-card-title class=\"d-flex flex-row justify-content-center align-items-center\">\n Recipient Form\n</mat-card-title>\n<mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"w-100\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }}</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 type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </form>\n</mat-card-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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"] }], preserveWhitespaces: true });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientFormComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'app-recipient-form', standalone: true, imports: [SharedModule], template: "<mat-card-title class=\"d-flex flex-row justify-content-center align-items-center\">\n Recipient Form\n</mat-card-title>\n<mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"w-100\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }}</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 type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </form>\n</mat-card-content>\n" }]
|
|
74
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.FormBuilder }, { type: RecipientService }, { type: i1$1.MatDialogRef }, { type: undefined, decorators: [{
|
|
75
|
+
type: Inject,
|
|
76
|
+
args: [MAT_DIALOG_DATA]
|
|
77
|
+
}, {
|
|
78
|
+
type: Optional
|
|
79
|
+
}] }] });
|
|
80
|
+
|
|
81
|
+
class RecipientListComponent extends TechlifyListComponent {
|
|
82
|
+
fb;
|
|
83
|
+
service;
|
|
84
|
+
recipientForm = signal(RecipientFormComponent);
|
|
85
|
+
displayedColumns = [
|
|
86
|
+
'#',
|
|
87
|
+
'name',
|
|
88
|
+
'details',
|
|
89
|
+
'actions'
|
|
90
|
+
];
|
|
91
|
+
constructor(fb, service) {
|
|
92
|
+
super(service);
|
|
93
|
+
this.fb = fb;
|
|
94
|
+
this.service = service;
|
|
95
|
+
this.filterFormConfiguration = {};
|
|
96
|
+
this.filterForm = this.fb.group({
|
|
97
|
+
search: [''],
|
|
98
|
+
sort_by: ['created_at|desc'],
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
ngOnInit() {
|
|
102
|
+
this.patchFiltersFromRoute();
|
|
103
|
+
this.loadData();
|
|
104
|
+
this.listenFilterChanges();
|
|
105
|
+
}
|
|
106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientListComponent, deps: [{ token: i2.FormBuilder }, { token: RecipientService }], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RecipientListComponent, selector: "app-recipient-list", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <h5 class=\"mb-0\">Recipients</h5>\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.create']\" [component]=\"recipientForm()\"\n [width]=\"'500px'\" (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n <div class=\"d-flex flex-row gap-2\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Recipients\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.name }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-1 align-items-center text-secondary\">\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.update']\" [component]=\"recipientForm()\"\n [model]=\"element\" [width]=\"'500px'\" (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n <app-techlify-delete-button *ngxPermissionsOnly=\"['recipient.delete']\" [service]=\"service\"\n [model]=\"element\" [data]=\"{ type: 'Recipient', title: element?.name }\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\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 <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.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: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { 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$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i13.NgxPermissionsDirective, selector: "[ngxPermissionsOnly],[ngxPermissionsExcept]", inputs: ["ngxPermissionsOnly", "ngxPermissionsOnlyThen", "ngxPermissionsOnlyElse", "ngxPermissionsExcept", "ngxPermissionsExceptElse", "ngxPermissionsExceptThen", "ngxPermissionsThen", "ngxPermissionsElse", "ngxPermissionsOnlyAuthorisedStrategy", "ngxPermissionsOnlyUnauthorisedStrategy", "ngxPermissionsExceptUnauthorisedStrategy", "ngxPermissionsExceptAuthorisedStrategy", "ngxPermissionsUnauthorisedStrategy", "ngxPermissionsAuthorisedStrategy"], outputs: ["permissionsAuthorized", "permissionsUnauthorized"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { 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: "component", type: i1.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: i1.TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }], preserveWhitespaces: true });
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientListComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{ selector: 'app-recipient-list', template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <h5 class=\"mb-0\">Recipients</h5>\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.create']\" [component]=\"recipientForm()\"\n [width]=\"'500px'\" (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n <div class=\"d-flex flex-row gap-2\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Recipients\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.name }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-1 align-items-center text-secondary\">\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.update']\" [component]=\"recipientForm()\"\n [model]=\"element\" [width]=\"'500px'\" (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n <app-techlify-delete-button *ngxPermissionsOnly=\"['recipient.delete']\" [service]=\"service\"\n [model]=\"element\" [data]=\"{ type: 'Recipient', title: element?.name }\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\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 <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>\n" }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i2.FormBuilder }, { type: RecipientService }] });
|
|
113
|
+
|
|
114
|
+
const routes = [
|
|
115
|
+
{
|
|
116
|
+
path: '',
|
|
117
|
+
component: RecipientListComponent,
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
class RecipientRoutingModule {
|
|
121
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
122
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: RecipientRoutingModule, imports: [i1$2.RouterModule], exports: [RouterModule] });
|
|
123
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientRoutingModule, decorators: [{
|
|
126
|
+
type: NgModule,
|
|
127
|
+
args: [{
|
|
128
|
+
imports: [RouterModule.forChild(routes)],
|
|
129
|
+
exports: [RouterModule],
|
|
130
|
+
}]
|
|
131
|
+
}] });
|
|
132
|
+
|
|
133
|
+
class RecipientModule {
|
|
134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
135
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: RecipientModule, declarations: [RecipientListComponent], imports: [RecipientRoutingModule, SharedModule] });
|
|
136
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientModule, imports: [RecipientRoutingModule, SharedModule] });
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RecipientModule, decorators: [{
|
|
139
|
+
type: NgModule,
|
|
140
|
+
args: [{
|
|
141
|
+
declarations: [RecipientListComponent],
|
|
142
|
+
imports: [RecipientRoutingModule, SharedModule],
|
|
143
|
+
}]
|
|
144
|
+
}] });
|
|
145
|
+
|
|
146
|
+
export { RecipientModule };
|
|
147
|
+
//# sourceMappingURL=techlify-inventory-common-recipient.module-BnRAWk8N.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"techlify-inventory-common-recipient.module-BnRAWk8N.mjs","sources":["../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient.service.ts","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient-form/recipient-form.component.ts","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient-form/recipient-form.component.html","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient-list/recipient-list.component.ts","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient-list/recipient-list.component.html","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient-routing.module.ts","../../../projects/inventory-common/src/lib/inventory-common/recipient/recipient.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpService, TechlifyService } from 'ngx-techlify-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RecipientService extends TechlifyService {\n constructor(httpService: HttpService) {\n super(httpService, 'recipients');\n }\n}\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormValidatorService, TechlifyFormComponent } from 'ngx-techlify-core';\nimport { RecipientService } from '../recipient.service';\nimport { SharedModule } from '../../shared.module';\n\n@Component({\n selector: 'app-recipient-form',\n standalone: true,\n imports: [SharedModule],\n templateUrl: './recipient-form.component.html',\n styleUrls: ['./recipient-form.component.scss'],\n})\nexport class RecipientFormComponent extends TechlifyFormComponent implements OnInit {\n constructor(\n protected override formValidatorService: FormValidatorService,\n private formBuilder: FormBuilder,\n protected override service: RecipientService,\n public override dialogRef: MatDialogRef<RecipientFormComponent>,\n @Inject(MAT_DIALOG_DATA) @Optional() public data: { model?: any }\n ) {\n super(formValidatorService, service);\n\n this.errorMessages = {\n name: {\n required: 'The name field is required.',\n },\n };\n\n this.form = this.formBuilder.group({\n id: [''],\n name: ['', Validators.required],\n details: [''],\n });\n }\n\n ngOnInit(): void {\n const model = this.data?.model;\n if (model) {\n this.isUpdate = true;\n this.form.patchValue(model);\n }\n }\n}\n","<mat-card-title class=\"d-flex flex-row justify-content-center align-items-center\">\n Recipient Form\n</mat-card-title>\n<mat-card-content>\n <form class=\"d-flex flex-column gap-3\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field class=\"w-100\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }}</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 type=\"button\" mat-flat-button [disabled]=\"isWorking\" (click)=\"dialogRef.close()\">Cancel</button>\n <button type=\"submit\" mat-raised-button color=\"primary\" [disabled]=\"isWorking\">Save</button>\n </div>\n </form>\n</mat-card-content>\n","import { Component, OnInit, signal } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { TechlifyListComponent } from 'ngx-techlify-core';\nimport { RecipientService } from '../recipient.service';\nimport { RecipientFormComponent } from '../recipient-form/recipient-form.component';\n\n@Component({\n selector: 'app-recipient-list',\n templateUrl: './recipient-list.component.html',\n styleUrls: ['./recipient-list.component.scss'],\n})\nexport class RecipientListComponent extends TechlifyListComponent implements OnInit {\n recipientForm = signal(RecipientFormComponent);\n\n displayedColumns: string[] = [\n '#',\n 'name',\n 'details',\n 'actions'\n ];\n\n constructor(private fb: FormBuilder, protected override service: RecipientService) {\n super(service);\n this.filterFormConfiguration = {};\n this.filterForm = this.fb.group({\n search: [''],\n sort_by: ['created_at|desc'],\n });\n }\n\n ngOnInit(): void {\n this.patchFiltersFromRoute();\n this.loadData();\n this.listenFilterChanges();\n }\n}\n","<div class=\"d-flex flex-column gap-2\">\n <mat-card>\n <mat-card-content class=\"d-flex flex-row justify-content-between align-items-center\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <h5 class=\"mb-0\">Recipients</h5>\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.create']\" [component]=\"recipientForm()\"\n [width]=\"'500px'\" (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n <div class=\"d-flex flex-row gap-2\" [formGroup]=\"filterForm\">\n <mat-form-field class=\"fl-md\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n </mat-form-field>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Recipients\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" matSort\n (matSortChange)=\"sortColumn($event)\">\n <ng-container matColumnDef=\"#\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.name }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef>Details</th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.details }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef>Actions</th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-1 align-items-center text-secondary\">\n <app-techlify-form-button *ngxPermissionsOnly=\"['recipient.update']\" [component]=\"recipientForm()\"\n [model]=\"element\" [width]=\"'500px'\" (saved)=\"modelsUpdatedById($event)\"></app-techlify-form-button>\n <app-techlify-delete-button *ngxPermissionsOnly=\"['recipient.delete']\" [service]=\"service\"\n [model]=\"element\" [data]=\"{ type: 'Recipient', title: element?.name }\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\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 <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RecipientListComponent } from './recipient-list/recipient-list.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: RecipientListComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class RecipientRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { NgxPermissionsModule } from 'ngx-permissions';\nimport { RecipientRoutingModule } from './recipient-routing.module';\nimport { RecipientListComponent } from './recipient-list/recipient-list.component';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [RecipientListComponent],\n imports: [RecipientRoutingModule, SharedModule],\n})\nexport class RecipientModule {}\n"],"names":["i5","i7","i9","i1","i2.RecipientService","i4","i6","i8","i10","i11","i12"],"mappings":"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"}
|