techlify-inventory-common 18.27.0 → 18.29.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/location/location-form/location-form.component.mjs +19 -40
- package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +13 -4
- package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +34 -77
- package/esm2022/lib/inventory-common/location/location-selector/location-selector.component.mjs +159 -0
- package/esm2022/lib/inventory-common/location/location-status-changer/location-status-changer.component.mjs +3 -3
- package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +4 -4
- package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +16 -17
- package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +5 -4
- package/esm2022/lib/inventory-common/product/product.module.mjs +11 -5
- package/esm2022/lib/inventory-common/stock-issuances/stock-issue-list/stock-issue-list.component.mjs +2 -1
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form/stock-receipt-form.component.mjs +4 -3
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.mjs +8 -4
- package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-list-page/stock-receipts-list-page.component.mjs +2 -1
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.mjs +63 -0
- package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order.service.mjs +20 -0
- package/esm2022/lib/inventory-common/supplier/supplier-delete-button/supplier-delete-button.component.mjs +2 -2
- package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +2 -2
- package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +6 -1
- package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +4 -45
- package/esm2022/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.mjs +33 -107
- package/fesm2022/{techlify-inventory-common-category.module-S6Val92n.mjs → techlify-inventory-common-category.module-BT3uLLqI.mjs} +9 -9
- package/fesm2022/techlify-inventory-common-category.module-BT3uLLqI.mjs.map +1 -0
- package/fesm2022/{techlify-inventory-common-measure.module-BhHMV-wL.mjs → techlify-inventory-common-measure.module-s9xhNWZM.mjs} +7 -7
- package/fesm2022/{techlify-inventory-common-measure.module-BhHMV-wL.mjs.map → techlify-inventory-common-measure.module-s9xhNWZM.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-CltIudzA.mjs → techlify-inventory-common-stock-issue-view.component-CNrY99hf.mjs} +2 -2
- package/fesm2022/{techlify-inventory-common-stock-issue-view.component-CltIudzA.mjs.map → techlify-inventory-common-stock-issue-view.component-CNrY99hf.mjs.map} +1 -1
- package/fesm2022/{techlify-inventory-common-techlify-inventory-common-f9URc8HX.mjs → techlify-inventory-common-techlify-inventory-common-DRw7na0D.mjs} +531 -476
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-DRw7na0D.mjs.map +1 -0
- package/fesm2022/techlify-inventory-common.mjs +1 -1
- package/lib/inventory-common/location/location-form/location-form.component.d.ts +3 -3
- package/lib/inventory-common/location/location-list/location-list.component.d.ts +6 -7
- package/lib/inventory-common/location/location-selector/location-selector.component.d.ts +43 -0
- package/lib/inventory-common/product/product.module.d.ts +1 -1
- package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.module.d.ts +2 -1
- package/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.d.ts +16 -0
- package/lib/inventory-common/supplier/purchase-order/purchase-order.service.d.ts +8 -0
- package/lib/inventory-common/supplier/supplier.service.d.ts +2 -33
- package/lib/inventory-common/supplier/suppliers-list/suppliers-list.component.d.ts +4 -18
- package/package.json +1 -1
- package/fesm2022/techlify-inventory-common-category.module-S6Val92n.mjs.map +0 -1
- package/fesm2022/techlify-inventory-common-techlify-inventory-common-f9URc8HX.mjs.map +0 -1
package/esm2022/lib/inventory-common/location/location-selector/location-selector.component.mjs
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { Component, forwardRef, input, signal } from '@angular/core';
|
|
2
|
+
import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
import { MaterialModule } from '../../material.module';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../location.service";
|
|
8
|
+
import * as i2 from "ngx-techlify-core";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
import * as i4 from "@angular/material/core";
|
|
11
|
+
import * as i5 from "@angular/material/form-field";
|
|
12
|
+
import * as i6 from "@angular/material/select";
|
|
13
|
+
import * as i7 from "@angular/forms";
|
|
14
|
+
export class LocationSelectorComponent {
|
|
15
|
+
locationService;
|
|
16
|
+
featureService;
|
|
17
|
+
label = input('Location');
|
|
18
|
+
placeholder = input('Select a location');
|
|
19
|
+
includeNone = input(true);
|
|
20
|
+
isSubLocationEnabled = signal(false);
|
|
21
|
+
locations = [];
|
|
22
|
+
selectedValue = null;
|
|
23
|
+
isDisabled = false;
|
|
24
|
+
searchControl = new FormControl('');
|
|
25
|
+
onChange = () => { };
|
|
26
|
+
onTouched = () => { };
|
|
27
|
+
constructor(locationService, featureService) {
|
|
28
|
+
this.locationService = locationService;
|
|
29
|
+
this.featureService = featureService;
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.isSubLocationEnabled.set(this.featureService.isFeatureExists('sub-locations'));
|
|
33
|
+
this.loadData();
|
|
34
|
+
this.setupSearch();
|
|
35
|
+
}
|
|
36
|
+
setupSearch() {
|
|
37
|
+
this.searchControl.valueChanges.pipe(debounceTime(400), distinctUntilChanged()).subscribe((value) => {
|
|
38
|
+
this.loadData(value);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
loadData(search = null) {
|
|
42
|
+
const params = {};
|
|
43
|
+
if (search) {
|
|
44
|
+
params.search = search;
|
|
45
|
+
}
|
|
46
|
+
this.locationService.index(params).subscribe({
|
|
47
|
+
next: (response) => {
|
|
48
|
+
const flatLocations = response.data;
|
|
49
|
+
this.locations = this.isSubLocationEnabled()
|
|
50
|
+
? this.buildHierarchy(flatLocations)
|
|
51
|
+
: flatLocations;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* To prevent recursive calls in the api while trying to get
|
|
57
|
+
* parent and children of a location, i've opted to have the ui
|
|
58
|
+
* build the hierarchy of locations
|
|
59
|
+
*/
|
|
60
|
+
buildHierarchy(locations) {
|
|
61
|
+
const locationMap = new Map();
|
|
62
|
+
locations.forEach(location => locationMap.set(location.id, location));
|
|
63
|
+
// Calculate depth for each location with cycle detection
|
|
64
|
+
const getDepth = (location, visited = new Set()) => {
|
|
65
|
+
if (!location.parent_id)
|
|
66
|
+
return 0;
|
|
67
|
+
if (visited.has(location.id))
|
|
68
|
+
return 0; // Prevent infinite loop if parent is same as child
|
|
69
|
+
visited.add(location.id); // Take note of visited locations
|
|
70
|
+
const parent = locationMap.get(location.parent_id);
|
|
71
|
+
if (!parent)
|
|
72
|
+
return 0;
|
|
73
|
+
return 1 + getDepth(parent, visited);
|
|
74
|
+
};
|
|
75
|
+
// Build hierarchical list with depths
|
|
76
|
+
const withDepths = locations.map(location => ({
|
|
77
|
+
id: location.id,
|
|
78
|
+
title: location.title,
|
|
79
|
+
parent_id: location.parent_id,
|
|
80
|
+
depth: getDepth(location)
|
|
81
|
+
}));
|
|
82
|
+
// Sort: root items first, then recursively add children
|
|
83
|
+
const result = [];
|
|
84
|
+
const added = new Set(); // Prevent infinite loop on cycles
|
|
85
|
+
// Find all "roots" - items with no parent, OR items whose parent is missing from the list
|
|
86
|
+
const rootIds = withDepths
|
|
87
|
+
.filter(location => !location.parent_id || !locationMap.has(location.parent_id))
|
|
88
|
+
.map(location => location.id);
|
|
89
|
+
const addWithChildren = (parentId, depth) => {
|
|
90
|
+
// If parentId is null, we look for our identified roots.
|
|
91
|
+
// Otherwise we look for children of the parentId.
|
|
92
|
+
const itemsToAdd = parentId === null
|
|
93
|
+
? withDepths.filter(location => rootIds.includes(location.id))
|
|
94
|
+
: withDepths.filter(location => location.parent_id === parentId);
|
|
95
|
+
itemsToAdd
|
|
96
|
+
.filter(location => !added.has(location.id))
|
|
97
|
+
.sort((a, b) => a.title.localeCompare(b.title))
|
|
98
|
+
.forEach(location => {
|
|
99
|
+
added.add(location.id);
|
|
100
|
+
result.push(location);
|
|
101
|
+
addWithChildren(location.id, depth + 1);
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
addWithChildren(null, 0);
|
|
105
|
+
// If there are still items not added (due to circular references A->B->A), add them as roots
|
|
106
|
+
if (added.size < withDepths.length) {
|
|
107
|
+
withDepths
|
|
108
|
+
.filter(location => !added.has(location.id))
|
|
109
|
+
.sort((a, b) => a.title.localeCompare(b.title))
|
|
110
|
+
.forEach(location => {
|
|
111
|
+
added.add(location.id);
|
|
112
|
+
result.push(location);
|
|
113
|
+
// Try to add children for this "forced root" in case it has valid children
|
|
114
|
+
addWithChildren(location.id, location.depth + 1);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
onSelectionChange(value) {
|
|
120
|
+
this.selectedValue = value;
|
|
121
|
+
this.onChange(value);
|
|
122
|
+
this.onTouched();
|
|
123
|
+
}
|
|
124
|
+
writeValue(value) {
|
|
125
|
+
this.selectedValue = value;
|
|
126
|
+
}
|
|
127
|
+
registerOnChange(fn) {
|
|
128
|
+
this.onChange = fn;
|
|
129
|
+
}
|
|
130
|
+
registerOnTouched(fn) {
|
|
131
|
+
this.onTouched = fn;
|
|
132
|
+
}
|
|
133
|
+
setDisabledState(isDisabled) {
|
|
134
|
+
this.isDisabled = isDisabled;
|
|
135
|
+
}
|
|
136
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationSelectorComponent, deps: [{ token: i1.LocationService }, { token: i2.TechlifyFeatureService }], target: i0.ɵɵFactoryTarget.Component });
|
|
137
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: LocationSelectorComponent, isStandalone: true, selector: "app-location-selector", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, includeNone: { classPropertyName: "includeNone", publicName: "includeNone", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
138
|
+
{
|
|
139
|
+
provide: NG_VALUE_ACCESSOR,
|
|
140
|
+
useExisting: forwardRef(() => LocationSelectorComponent),
|
|
141
|
+
multi: true
|
|
142
|
+
}
|
|
143
|
+
], ngImport: i0, template: "<mat-form-field class=\"w-100\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.04);margin-top:-8px;padding:8px 16px}.search-input{width:100%;padding:8px;border:none;outline:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], preserveWhitespaces: true });
|
|
144
|
+
}
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationSelectorComponent, decorators: [{
|
|
146
|
+
type: Component,
|
|
147
|
+
args: [{ selector: 'app-location-selector', standalone: true, imports: [
|
|
148
|
+
CommonModule,
|
|
149
|
+
MaterialModule,
|
|
150
|
+
ReactiveFormsModule
|
|
151
|
+
], providers: [
|
|
152
|
+
{
|
|
153
|
+
provide: NG_VALUE_ACCESSOR,
|
|
154
|
+
useExisting: forwardRef(() => LocationSelectorComponent),
|
|
155
|
+
multi: true
|
|
156
|
+
}
|
|
157
|
+
], template: "<mat-form-field class=\"w-100\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select [value]=\"selectedValue\" [disabled]=\"isDisabled\" [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event.value)\">\n\n <div class=\"sticky-search-container\">\n <input [formControl]=\"searchControl\" placeholder=\"Search...\" class=\"search-input\" (keydown)=\"$event.stopPropagation()\">\n </div>\n\n <mat-option *ngIf=\"includeNone()\" [value]=\"null\">None</mat-option>\n\n <mat-option *ngFor=\"let location of locations\" [value]=\"location.id\">\n <span [ngStyle]=\"{'padding-left.px': location.depth * 16}\">\n <span *ngIf=\"location.depth > 0\">\u21B3 </span>{{ location.title }}\n </span>\n </mat-option>\n\n </mat-select>\n</mat-form-field>", styles: [".sticky-search-container{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid rgba(0,0,0,.04);margin-top:-8px;padding:8px 16px}.search-input{width:100%;padding:8px;border:none;outline:none}\n"] }]
|
|
158
|
+
}], ctorParameters: () => [{ type: i1.LocationService }, { type: i2.TechlifyFeatureService }] });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc2VsZWN0b3IvbG9jYXRpb24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUE2QnZELE1BQU0sT0FBTyx5QkFBeUI7SUFlaEI7SUFDVjtJQWZWLEtBQUssR0FBRyxLQUFLLENBQVMsVUFBVSxDQUFDLENBQUM7SUFDbEMsV0FBVyxHQUFHLEtBQUssQ0FBUyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELFdBQVcsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFFbkMsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTlDLFNBQVMsR0FBMkIsRUFBRSxDQUFDO0lBQ3ZDLGFBQWEsR0FB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SSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBa0M7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7d0dBaEpVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDRkQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkMvQkgsdXlCQWtCaUIsOFFEQ2IsWUFBWSxvVkFDWixjQUFjLCs3QkFDZCxtQkFBbUI7OzRGQVlWLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUNwQixhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9sb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbmludGVyZmFjZSBIaWVyYXJjaGljYWxMb2NhdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhcmVudF9pZDogbnVtYmVyIHwgbnVsbDtcbiAgZGVwdGg6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvY2F0aW9uLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTG9jYXRpb25TZWxlY3RvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvblNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignTG9jYXRpb24nKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdTZWxlY3QgYSBsb2NhdGlvbicpO1xuICBpbmNsdWRlTm9uZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIGlzU3ViTG9jYXRpb25FbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBsb2NhdGlvbnM6IEhpZXJhcmNoaWNhbExvY2F0aW9uW10gPSBbXTtcbiAgc2VsZWN0ZWRWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmVhdHVyZVNlcnZpY2U6IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU3ViTG9jYXRpb25FbmFibGVkLnNldCh0aGlzLmZlYXR1cmVTZXJ2aWNlLmlzRmVhdHVyZUV4aXN0cygnc3ViLWxvY2F0aW9ucycpKTtcblxuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB0aGlzLnNldHVwU2VhcmNoKCk7XG4gIH1cblxuICBzZXR1cFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNDAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMubG9hZERhdGEodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZERhdGEoc2VhcmNoOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgcGFyYW1zLnNlYXJjaCA9IHNlYXJjaDtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5pbmRleChwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmbGF0TG9jYXRpb25zID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSB0aGlzLmlzU3ViTG9jYXRpb25FbmFibGVkKClcbiAgICAgICAgICA/IHRoaXMuYnVpbGRIaWVyYXJjaHkoZmxhdExvY2F0aW9ucylcbiAgICAgICAgICA6IGZsYXRMb2NhdGlvbnM7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gcHJldmVudCByZWN1cnNpdmUgY2FsbHMgaW4gdGhlIGFwaSB3aGlsZSB0cnlpbmcgdG8gZ2V0XG4gICAqIHBhcmVudCBhbmQgY2hpbGRyZW4gb2YgYSBsb2NhdGlvbiwgaSd2ZSBvcHRlZCB0byBoYXZlIHRoZSB1aSBcbiAgICogYnVpbGQgdGhlIGhpZXJhcmNoeSBvZiBsb2NhdGlvbnMgXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkSGllcmFyY2h5KGxvY2F0aW9uczogYW55W10pOiBIaWVyYXJjaGljYWxMb2NhdGlvbltdIHtcbiAgICBjb25zdCBsb2NhdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG4gICAgbG9jYXRpb25zLmZvckVhY2gobG9jYXRpb24gPT4gbG9jYXRpb25NYXAuc2V0KGxvY2F0aW9uLmlkLCBsb2NhdGlvbikpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGRlcHRoIGZvciBlYWNoIGxvY2F0aW9uIHdpdGggY3ljbGUgZGV0ZWN0aW9uXG4gICAgY29uc3QgZ2V0RGVwdGggPSAobG9jYXRpb246IGFueSwgdmlzaXRlZDogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCkpOiBudW1iZXIgPT4ge1xuICAgICAgaWYgKCFsb2NhdGlvbi5wYXJlbnRfaWQpIHJldHVybiAwO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGxvY2F0aW9uLmlkKSkgcmV0dXJuIDA7IC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCBpZiBwYXJlbnQgaXMgc2FtZSBhcyBjaGlsZFxuICAgICAgdmlzaXRlZC5hZGQobG9jYXRpb24uaWQpOyAvLyBUYWtlIG5vdGUgb2YgdmlzaXRlZCBsb2NhdGlvbnNcblxuICAgICAgY29uc3QgcGFyZW50ID0gbG9jYXRpb25NYXAuZ2V0KGxvY2F0aW9uLnBhcmVudF9pZCk7XG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuIDA7XG5cbiAgICAgIHJldHVybiAxICsgZ2V0RGVwdGgocGFyZW50LCB2aXNpdGVkKTtcbiAgICB9O1xuXG4gICAgLy8gQnVpbGQgaGllcmFyY2hpY2FsIGxpc3Qgd2l0aCBkZXB0aHNcbiAgICBjb25zdCB3aXRoRGVwdGhzOiBIaWVyYXJjaGljYWxMb2NhdGlvbltdID0gbG9jYXRpb25zLm1hcChsb2NhdGlvbiA9PiAoe1xuICAgICAgaWQ6IGxvY2F0aW9uLmlkLFxuICAgICAgdGl0bGU6IGxvY2F0aW9uLnRpdGxlLFxuICAgICAgcGFyZW50X2lkOiBsb2NhdGlvbi5wYXJlbnRfaWQsXG4gICAgICBkZXB0aDogZ2V0RGVwdGgobG9jYXRpb24pXG4gICAgfSkpO1xuXG4gICAgLy8gU29ydDogcm9vdCBpdGVtcyBmaXJzdCwgdGhlbiByZWN1cnNpdmVseSBhZGQgY2hpbGRyZW5cbiAgICBjb25zdCByZXN1bHQ6IEhpZXJhcmNoaWNhbExvY2F0aW9uW10gPSBbXTtcbiAgICBjb25zdCBhZGRlZCA9IG5ldyBTZXQ8bnVtYmVyPigpOyAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3Agb24gY3ljbGVzXG5cbiAgICAvLyBGaW5kIGFsbCBcInJvb3RzXCIgLSBpdGVtcyB3aXRoIG5vIHBhcmVudCwgT1IgaXRlbXMgd2hvc2UgcGFyZW50IGlzIG1pc3NpbmcgZnJvbSB0aGUgbGlzdFxuICAgIGNvbnN0IHJvb3RJZHMgPSB3aXRoRGVwdGhzXG4gICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFsb2NhdGlvbi5wYXJlbnRfaWQgfHwgIWxvY2F0aW9uTWFwLmhhcyhsb2NhdGlvbi5wYXJlbnRfaWQpKVxuICAgICAgLm1hcChsb2NhdGlvbiA9PiBsb2NhdGlvbi5pZCk7XG5cbiAgICBjb25zdCBhZGRXaXRoQ2hpbGRyZW4gPSAocGFyZW50SWQ6IG51bWJlciB8IG51bGwsIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICAgIC8vIElmIHBhcmVudElkIGlzIG51bGwsIHdlIGxvb2sgZm9yIG91ciBpZGVudGlmaWVkIHJvb3RzLiBcbiAgICAgIC8vIE90aGVyd2lzZSB3ZSBsb29rIGZvciBjaGlsZHJlbiBvZiB0aGUgcGFyZW50SWQuXG4gICAgICBjb25zdCBpdGVtc1RvQWRkID0gcGFyZW50SWQgPT09IG51bGxcbiAgICAgICAgPyB3aXRoRGVwdGhzLmZpbHRlcihsb2NhdGlvbiA9PiByb290SWRzLmluY2x1ZGVzKGxvY2F0aW9uLmlkKSlcbiAgICAgICAgOiB3aXRoRGVwdGhzLmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5wYXJlbnRfaWQgPT09IHBhcmVudElkKTtcblxuICAgICAgaXRlbXNUb0FkZFxuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFhZGRlZC5oYXMobG9jYXRpb24uaWQpKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS50aXRsZS5sb2NhbGVDb21wYXJlKGIudGl0bGUpKVxuICAgICAgICAuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgYWRkZWQuYWRkKGxvY2F0aW9uLmlkKTtcbiAgICAgICAgICByZXN1bHQucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgYWRkV2l0aENoaWxkcmVuKGxvY2F0aW9uLmlkLCBkZXB0aCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYWRkV2l0aENoaWxkcmVuKG51bGwsIDApO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHN0aWxsIGl0ZW1zIG5vdCBhZGRlZCAoZHVlIHRvIGNpcmN1bGFyIHJlZmVyZW5jZXMgQS0+Qi0+QSksIGFkZCB0aGVtIGFzIHJvb3RzXG4gICAgaWYgKGFkZGVkLnNpemUgPCB3aXRoRGVwdGhzLmxlbmd0aCkge1xuICAgICAgd2l0aERlcHRoc1xuICAgICAgICAuZmlsdGVyKGxvY2F0aW9uID0+ICFhZGRlZC5oYXMobG9jYXRpb24uaWQpKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS50aXRsZS5sb2NhbGVDb21wYXJlKGIudGl0bGUpKVxuICAgICAgICAuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgIGFkZGVkLmFkZChsb2NhdGlvbi5pZCk7XG4gICAgICAgICAgIHJlc3VsdC5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICAgLy8gVHJ5IHRvIGFkZCBjaGlsZHJlbiBmb3IgdGhpcyBcImZvcmNlZCByb290XCIgaW4gY2FzZSBpdCBoYXMgdmFsaWQgY2hpbGRyZW5cbiAgICAgICAgICAgYWRkV2l0aENoaWxkcmVuKGxvY2F0aW9uLmlkLCBsb2NhdGlvbi5kZXB0aCArIDEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbCgpIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJzZWxlY3RlZFZhbHVlXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImluY2x1ZGVOb25lKClcIiBbdmFsdWVdPVwibnVsbFwiPk5vbmU8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgbG9jYXRpb25zXCIgW3ZhbHVlXT1cImxvY2F0aW9uLmlkXCI+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7J3BhZGRpbmctbGVmdC5weCc6IGxvY2F0aW9uLmRlcHRoICogMTZ9XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibG9jYXRpb24uZGVwdGggPiAwXCI+4oazIDwvc3Bhbj57eyBsb2NhdGlvbi50aXRsZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
|
|
@@ -48,7 +48,7 @@ export class LocationStatusChangerComponent extends TechlifyFormComponentInterfa
|
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationStatusChangerComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.LocationService }, { token: i3.FormBuilder }, { token: i1.ErrorHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationStatusChangerComponent, isStandalone: true, selector: "app-location-status-changer", inputs: { location: "location" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>Status</mat-label>\n <app-searchable-selector apiUrl=\"api/
|
|
51
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LocationStatusChangerComponent, isStandalone: true, selector: "app-location-status-changer", inputs: { location: "location" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>Status</mat-label>\n <app-searchable-selector apiUrl=\"api/techlify-statuses\"\n formControlName=\"status_id\" [cache]=\"true\"></app-searchable-selector>\n </mat-form-field>\n</form>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MaterialModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SearchableSelectorModule }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }], preserveWhitespaces: true });
|
|
52
52
|
}
|
|
53
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocationStatusChangerComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
@@ -57,8 +57,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
57
57
|
MaterialModule,
|
|
58
58
|
ReactiveFormsModule,
|
|
59
59
|
SearchableSelectorModule
|
|
60
|
-
], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>Status</mat-label>\n <app-searchable-selector apiUrl=\"api/
|
|
60
|
+
], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>Status</mat-label>\n <app-searchable-selector apiUrl=\"api/techlify-statuses\"\n formControlName=\"status_id\" [cache]=\"true\"></app-searchable-selector>\n </mat-form-field>\n</form>" }]
|
|
61
61
|
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.LocationService }, { type: i3.FormBuilder }, { type: i1.ErrorHandlerService }], propDecorators: { location: [{
|
|
62
62
|
type: Input
|
|
63
63
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24tc3RhdHVzLWNoYW5nZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc3RhdHVzLWNoYW5nZXIvbG9jYXRpb24tc3RhdHVzLWNoYW5nZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52ZW50b3J5LWNvbW1vbi9zcmMvbGliL2ludmVudG9yeS1jb21tb24vbG9jYXRpb24vbG9jYXRpb24tc3RhdHVzLWNoYW5nZXIvbG9jYXRpb24tc3RhdHVzLWNoYW5nZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQTJELHdCQUF3QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEosT0FBTyxFQUFlLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWVsRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsOEJBQThCO0lBSWpEO0lBQ1Y7SUFDWDtJQUNBO0lBTEQsUUFBUSxDQUFPO0lBRXhCLFlBQStCLG9CQUEwQyxFQUNwRCxPQUF3QixFQUNuQyxFQUFlLEVBQ2YsWUFBaUM7UUFFekMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFMQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ3BELFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ25DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFJekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQy9CLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXpDVSw4QkFBOEI7NEZBQTlCLDhCQUE4QixnSkNuQjNDLGtRQU1PLHlERE9ILFlBQVksOEJBQ1osY0FBYywwU0FDZCxtQkFBbUIsNHJCQUNuQix3QkFBd0I7OzRGQUdmLDhCQUE4QjtrQkFaMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHdCQUF3QjtxQkFDekI7bUxBSVEsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vLi4vbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgRXJyb3JIYW5kbGVyU2VydmljZSwgRm9ybVZhbGlkYXRvclNlcnZpY2UsIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZSwgVGVjaGxpZnlGb3JtQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9sb2NhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2F0aW9uLXN0YXR1cy1jaGFuZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYXRpb24tc3RhdHVzLWNoYW5nZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNlYXJjaGFibGVTZWxlY3Rvck1vZHVsZVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhdGlvblN0YXR1c0NoYW5nZXJDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUZvcm1Db21wb25lbnRJbnRlcmZhY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGxvY2F0aW9uITogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvdmVycmlkZSBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihmb3JtVmFsaWRhdG9yU2VydmljZSk7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgc3RhdHVzX2lkOiBbJyddXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBpZDogdGhpcy5sb2NhdGlvbi5pZCxcbiAgICAgIHN0YXR1c19pZDogdGhpcy5sb2NhdGlvbi5zdGF0dXNfaWRcbiAgICB9KVxuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnNlcnZpY2UudXBkYXRlU3RhdHVzKHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ0xvY2F0aW9uIHN0YXR1cyB1cGRhdGVkIHN1Y2Nlc3NmdWxseSEnLCAnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxtYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWxhYmVsPlN0YXR1czwvbWF0LWxhYmVsPlxuICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvdGVjaGxpZnktc3RhdHVzZXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzX2lkXCIgW2NhY2hlXT1cInRydWVcIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPiJdfQ==
|
package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/material/dialog";
|
|
4
4
|
import * as i2 from "../product-form.service";
|
|
5
|
-
import * as i3 from "
|
|
5
|
+
import * as i3 from "ngx-techlify-core";
|
|
6
6
|
import * as i4 from "../product-form/product-form.component";
|
|
7
7
|
export class ProductFormButtonComponent {
|
|
8
8
|
matDialog;
|
|
@@ -27,14 +27,14 @@ export class ProductFormButtonComponent {
|
|
|
27
27
|
this.productFormService.listUpdated(true);
|
|
28
28
|
}
|
|
29
29
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormButtonComponent, deps: [{ token: i1.MatDialog }, { token: i2.ProductFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProductFormButtonComponent, selector: "app-product-form-button", inputs: { product: "product" }, outputs: { saved: "saved" }, ngImport: i0, template: "<
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProductFormButtonComponent, selector: "app-product-form-button", inputs: { product: "product" }, outputs: { saved: "saved" }, ngImport: i0, template: "<app-techlify-icon name='edit' [class.text-secondary]=\"product\" (click)=\"showForm(addProductForm)\"></app-techlify-icon>\n\n<ng-template #addProductForm>\n <app-product-form\n [product]=\"product\"\n mat-dialog-content\n (saved)=\"onProductSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"\n ></app-product-form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: i4.ProductFormComponent, selector: "app-product-form", inputs: ["product", "displayedFormFields", "displayedFormSections"], outputs: ["saved", "cancelled"] }], preserveWhitespaces: true });
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormButtonComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
|
-
args: [{ selector: 'app-product-form-button', template: "<
|
|
34
|
+
args: [{ selector: 'app-product-form-button', template: "<app-techlify-icon name='edit' [class.text-secondary]=\"product\" (click)=\"showForm(addProductForm)\"></app-techlify-icon>\n\n<ng-template #addProductForm>\n <app-product-form\n [product]=\"product\"\n mat-dialog-content\n (saved)=\"onProductSaved($event)\"\n (cancelled)=\"matDialog.closeAll()\"\n ></app-product-form>\n</ng-template>\n" }]
|
|
35
35
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.ProductFormService }], propDecorators: { product: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}], saved: [{
|
|
38
38
|
type: Output
|
|
39
39
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS1idXR0b24vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS1idXR0b24vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFTcEYsTUFBTSxPQUFPLDBCQUEwQjtJQUlsQjtJQUE4QjtJQUh4QyxPQUFPLENBQU07SUFDWixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVyQyxZQUFtQixTQUFvQixFQUFVLGtCQUFzQztRQUFwRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFM0YsUUFBUSxDQUFDLFdBQTZCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLE9BQVk7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7d0dBbkJVLDBCQUEwQjs0RkFBMUIsMEJBQTBCLDRIQ1R2QyxrV0FVQTs7NEZERGEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjsrR0FLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFByb2R1Y3RGb3JtU2VydmljZSB9IGZyb20gJy4uL3Byb2R1Y3QtZm9ybS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1Y3QtZm9ybS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtZm9ybS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZvcm1CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBwcm9kdWN0OiBhbnk7XG4gIEBPdXRwdXQoKSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWF0RGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgcHJvZHVjdEZvcm1TZXJ2aWNlOiBQcm9kdWN0Rm9ybVNlcnZpY2UpIHt9XG5cbiAgc2hvd0Zvcm0odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKHRlbXBsYXRlUmVmLCB7IHdpZHRoOiAnNjAwcHgnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBvbiBwcm9kdWN0IHNhdmVkIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcHJvZHVjdFxuICAgKi9cbiAgb25Qcm9kdWN0U2F2ZWQocHJvZHVjdDogYW55KSB7XG4gICAgdGhpcy5zYXZlZC5lbWl0KHByb2R1Y3QpO1xuICAgIHRoaXMubWF0RGlhbG9nPy5jbG9zZUFsbCgpO1xuICAgIHRoaXMucHJvZHVjdEZvcm1TZXJ2aWNlLmxpc3RVcGRhdGVkKHRydWUpO1xuICB9XG59XG4iLCI8YXBwLXRlY2hsaWZ5LWljb24gbmFtZT0nZWRpdCcgW2NsYXNzLnRleHQtc2Vjb25kYXJ5XT1cInByb2R1Y3RcIiAoY2xpY2spPVwic2hvd0Zvcm0oYWRkUHJvZHVjdEZvcm0pXCI+PC9hcHAtdGVjaGxpZnktaWNvbj5cblxuPG5nLXRlbXBsYXRlICNhZGRQcm9kdWN0Rm9ybT5cbiAgPGFwcC1wcm9kdWN0LWZvcm1cbiAgICBbcHJvZHVjdF09XCJwcm9kdWN0XCJcbiAgICBtYXQtZGlhbG9nLWNvbnRlbnRcbiAgICAoc2F2ZWQpPVwib25Qcm9kdWN0U2F2ZWQoJGV2ZW50KVwiXG4gICAgKGNhbmNlbGxlZCk9XCJtYXREaWFsb2cuY2xvc2VBbGwoKVwiXG4gID48L2FwcC1wcm9kdWN0LWZvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
|