@rolatech/angular-product 17.0.0 → 17.1.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/index.mjs +5 -12
- package/esm2022/lib/components/index.mjs +12 -0
- package/esm2022/lib/components/product-action/product-action.component.mjs +25 -0
- package/esm2022/lib/components/product-info/product-info.component.mjs +17 -0
- package/esm2022/lib/components/product-item/product-item.component.mjs +17 -0
- package/esm2022/lib/components/product-manage-option-add/product-manage-option-add.component.mjs +68 -0
- package/esm2022/lib/components/product-manage-option-item/product-manage-option-item.component.mjs +49 -0
- package/esm2022/lib/components/product-manage-variant/product-manage-variant.component.mjs +115 -0
- package/esm2022/lib/components/product-mange-option-action/product-manage-option-action.component.mjs +22 -0
- package/esm2022/lib/components/product-mange-section-item/product-mange-section-item.component.mjs +89 -0
- package/esm2022/lib/components/product-media/product-media.component.mjs +34 -0
- package/esm2022/lib/components/product-option/product-option.component.mjs +23 -0
- package/esm2022/lib/components/product-owner-renderer/product-owner-renderer.component.mjs +20 -0
- package/esm2022/lib/components/product-pricing/product-pricing.component.mjs +31 -0
- package/esm2022/lib/components/product-section/product-section.component.mjs +26 -0
- package/esm2022/lib/interfaces/category.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +2 -0
- package/esm2022/lib/interfaces/product.mjs +32 -0
- package/esm2022/lib/pages/product/product-category/product-category.component.mjs +70 -8
- package/esm2022/lib/pages/product/product-details/product-details.component.mjs +193 -0
- package/esm2022/lib/pages/product/product-details/selected.pipe.mjs +18 -0
- package/esm2022/lib/pages/product/product-index/product-index.component.mjs +39 -8
- package/esm2022/lib/pages/product/product-layout/product-layout.component.mjs +46 -8
- package/esm2022/lib/pages/product/product.routes.mjs +3 -3
- package/esm2022/lib/pages/product-manage/product-manage-content/product-manage-content.component.mjs +5 -5
- package/esm2022/lib/pages/product-manage/product-manage-create/product-manage-create.component.mjs +61 -0
- package/esm2022/lib/pages/product-manage/product-manage-index/product-manage-index.component.mjs +155 -0
- package/esm2022/lib/pages/product-manage/product-manage-info/product-manage-info.component.mjs +98 -8
- package/esm2022/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.mjs +14 -0
- package/esm2022/lib/pages/product-manage/product-manage-item/product-manage-item.component.mjs +27 -0
- package/esm2022/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.mjs +12 -0
- package/esm2022/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.mjs +51 -8
- package/esm2022/lib/pages/product-manage/product-manage-media/product-manage-media.component.mjs +133 -8
- package/esm2022/lib/pages/product-manage/product-manage-options/product-manage-options.component.mjs +102 -0
- package/esm2022/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.mjs +5 -5
- package/esm2022/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.mjs +14 -0
- package/esm2022/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.mjs +170 -0
- package/esm2022/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.mjs +133 -0
- package/esm2022/lib/pages/product-manage/product-manage.routes.mjs +34 -4
- package/esm2022/lib/services/index.mjs +4 -0
- package/esm2022/lib/services/product-category.service.mjs +38 -0
- package/esm2022/provider.mjs +13 -0
- package/fesm2022/rolatech-angular-product-product-index.component-C_cbg95R.mjs +70 -0
- package/fesm2022/rolatech-angular-product-product-index.component-C_cbg95R.mjs.map +1 -0
- package/fesm2022/rolatech-angular-product.mjs +1697 -76
- package/fesm2022/rolatech-angular-product.mjs.map +1 -1
- package/index.d.ts +4 -11
- package/lib/components/index.d.ts +11 -0
- package/lib/components/product-action/product-action.component.d.ts +11 -0
- package/lib/components/product-info/product-info.component.d.ts +7 -0
- package/lib/components/product-item/product-item.component.d.ts +7 -0
- package/lib/components/product-manage-option-add/product-manage-option-add.component.d.ts +20 -0
- package/lib/components/product-manage-option-item/product-manage-option-item.component.d.ts +14 -0
- package/lib/components/product-manage-variant/product-manage-variant.component.d.ts +18 -0
- package/lib/components/product-mange-option-action/product-manage-option-action.component.d.ts +10 -0
- package/lib/components/product-mange-section-item/product-mange-section-item.component.d.ts +33 -0
- package/lib/components/product-media/product-media.component.d.ts +12 -0
- package/lib/components/product-option/product-option.component.d.ts +14 -0
- package/lib/components/product-owner-renderer/product-owner-renderer.component.d.ts +8 -0
- package/lib/components/product-pricing/product-pricing.component.d.ts +12 -0
- package/lib/components/product-section/product-section.component.d.ts +16 -0
- package/lib/interfaces/category.d.ts +16 -0
- package/lib/interfaces/index.d.ts +2 -0
- package/lib/interfaces/product.d.ts +91 -0
- package/lib/pages/product/product-category/product-category.component.d.ts +19 -2
- package/lib/pages/product/product-details/product-details.component.d.ts +39 -0
- package/lib/pages/product/product-details/selected.pipe.d.ts +8 -0
- package/lib/pages/product/product-index/product-index.component.d.ts +12 -2
- package/lib/pages/product/product-layout/product-layout.component.d.ts +15 -2
- package/lib/pages/product-manage/product-manage-content/product-manage-content.component.d.ts +1 -1
- package/lib/pages/product-manage/product-manage-create/product-manage-create.component.d.ts +11 -0
- package/lib/pages/product-manage/product-manage-index/product-manage-index.component.d.ts +38 -0
- package/lib/pages/product-manage/product-manage-info/product-manage-info.component.d.ts +26 -2
- package/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.d.ts +5 -0
- package/lib/pages/product-manage/product-manage-item/product-manage-item.component.d.ts +12 -0
- package/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.d.ts +5 -0
- package/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.d.ts +22 -2
- package/lib/pages/product-manage/product-manage-media/product-manage-media.component.d.ts +26 -2
- package/lib/pages/product-manage/product-manage-options/product-manage-options.component.d.ts +17 -0
- package/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.d.ts +1 -1
- package/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.d.ts +5 -0
- package/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.d.ts +29 -0
- package/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.d.ts +27 -0
- package/lib/services/index.d.ts +3 -0
- package/lib/services/product-category.service.d.ts +12 -0
- package/package.json +1 -1
- package/provider.d.ts +2 -0
- package/themes/_default.scss +1 -1
- package/esm2022/lib/angular-product/angular-product.component.mjs +0 -12
- package/esm2022/lib/pages/product/product-detail/product-detail.component.mjs +0 -12
- package/esm2022/lib/pages/product-manage/product-manage-details/product-manage-details.component.mjs +0 -12
- package/lib/angular-product/angular-product.component.d.ts +0 -5
- package/lib/pages/product/product-detail/product-detail.component.d.ts +0 -5
- package/lib/pages/product-manage/product-manage-details/product-manage-details.component.d.ts +0 -5
package/esm2022/lib/pages/product-manage/product-manage-media/product-manage-media.component.mjs
CHANGED
|
@@ -1,12 +1,137 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
4
|
+
import { ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { ConfirmationDialogComponent, ImagePreviewDialogComponent, MediaListComponent, MediaListItemComponent, ToolbarComponent, } from '@rolatech/angular-components';
|
|
6
|
+
import { findLastIndex } from 'lodash';
|
|
7
|
+
import { ProductService } from '@rolatech/angular-services';
|
|
8
|
+
import { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';
|
|
9
|
+
import { ProductStatus } from '../../../interfaces';
|
|
3
10
|
import * as i0 from "@angular/core";
|
|
11
|
+
const SIZE = 10 * 1024 * 1024; // file slice size 10MB
|
|
4
12
|
export class ProductManageMediaComponent {
|
|
5
|
-
|
|
6
|
-
|
|
13
|
+
// productType: any = ProductType;
|
|
14
|
+
constructor() {
|
|
15
|
+
this.route = inject(ActivatedRoute);
|
|
16
|
+
this.productService = inject(ProductService);
|
|
17
|
+
this.dialog = inject(MatDialog);
|
|
18
|
+
this.snackBar = inject(MatSnackBar);
|
|
19
|
+
this.isUploading = false;
|
|
20
|
+
this.isLoading = false;
|
|
21
|
+
this.media = [];
|
|
22
|
+
this.status = ProductStatus;
|
|
23
|
+
this.id = this.route.parent?.snapshot.paramMap.get('id');
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.find();
|
|
27
|
+
}
|
|
28
|
+
find() {
|
|
29
|
+
this.productService.get(this.id).subscribe({
|
|
30
|
+
next: (res) => {
|
|
31
|
+
this.media = res.data.media || [];
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
onImageClick(i) {
|
|
36
|
+
const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {
|
|
37
|
+
maxWidth: '80vw',
|
|
38
|
+
maxHeight: '80vh',
|
|
39
|
+
height: '80%',
|
|
40
|
+
width: '80%',
|
|
41
|
+
panelClass: 'full-screen-modal',
|
|
42
|
+
data: {
|
|
43
|
+
media: this.media,
|
|
44
|
+
selected: i,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
dialogRef.afterClosed().subscribe((result) => { });
|
|
48
|
+
}
|
|
49
|
+
createFileChunk(file, size = SIZE) {
|
|
50
|
+
const fileChunkList = [];
|
|
51
|
+
let cur = 0;
|
|
52
|
+
while (cur < file.size) {
|
|
53
|
+
fileChunkList.push({ file: file.slice(cur, cur + size) });
|
|
54
|
+
cur += size;
|
|
55
|
+
}
|
|
56
|
+
return fileChunkList;
|
|
57
|
+
}
|
|
58
|
+
onUploadMedia2(event) {
|
|
59
|
+
const file = event.target.files[0];
|
|
60
|
+
const reader = new FileReader();
|
|
61
|
+
reader.onload = (e) => { };
|
|
62
|
+
const fileChunkList = this.createFileChunk(file);
|
|
63
|
+
fileChunkList.forEach((item) => { });
|
|
64
|
+
}
|
|
65
|
+
onUploadMedia(event) {
|
|
66
|
+
const file = event.target.files[0];
|
|
67
|
+
// 5MB * 1024 * 1024 = 5242880
|
|
68
|
+
// if (file?.size > 5242880) {
|
|
69
|
+
// this.snackBar.open('尺寸过大, 请修改后上传');
|
|
70
|
+
// this.isUploading = false;
|
|
71
|
+
// return;
|
|
72
|
+
// }
|
|
73
|
+
if (file) {
|
|
74
|
+
const reader = new FileReader();
|
|
75
|
+
const formData = new FormData();
|
|
76
|
+
formData.append('file', file);
|
|
77
|
+
reader.readAsDataURL(file);
|
|
78
|
+
reader.onload = () => {
|
|
79
|
+
const img = new Image();
|
|
80
|
+
img.onload = () => {
|
|
81
|
+
this.media.push({
|
|
82
|
+
url: img.src,
|
|
83
|
+
alt: 'upload image',
|
|
84
|
+
width: img.width,
|
|
85
|
+
height: img.height,
|
|
86
|
+
});
|
|
87
|
+
this.isUploading = true;
|
|
88
|
+
};
|
|
89
|
+
img.src = reader.result; // This is the data URL
|
|
90
|
+
};
|
|
91
|
+
this.productService.uploadMedia(this.id, formData).subscribe({
|
|
92
|
+
next: (res) => {
|
|
93
|
+
this.isUploading = false;
|
|
94
|
+
const index = findLastIndex(this.media);
|
|
95
|
+
// Replace item at index using native splice
|
|
96
|
+
this.media.splice(index, 1, res.data);
|
|
97
|
+
},
|
|
98
|
+
error: (e) => {
|
|
99
|
+
this.isUploading = false;
|
|
100
|
+
this.snackBar.open('上传失败: ' + e.message);
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
reader.onerror = (error) => {
|
|
104
|
+
this.isUploading = false;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
onMediaDelete(item) {
|
|
109
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
110
|
+
width: '400px',
|
|
111
|
+
data: {
|
|
112
|
+
title: '删除图片',
|
|
113
|
+
message: '确定删除这张商品图片吗?',
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
117
|
+
if (result) {
|
|
118
|
+
this.productService.deleteMedia(this.id, item.id).subscribe({
|
|
119
|
+
next: (res) => {
|
|
120
|
+
this.media = this.media.filter((m) => m.id !== item.id);
|
|
121
|
+
this.snackBar.open('删除成功');
|
|
122
|
+
},
|
|
123
|
+
error: (e) => {
|
|
124
|
+
this.snackBar.open(e.message);
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageMediaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: ProductManageMediaComponent, isStandalone: true, selector: "rolatech-product-manage-media", ngImport: i0, template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u56FE\u7247\u4FE1\u606F\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*\u56FE\u7247\u6587\u4EF6\u5927\u5C0F\u9650\u5236\u57285MB\u4EE5\u4E0B*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-product-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: MediaListComponent, selector: "rolatech-media-list", inputs: ["isUploading", "media", "showAdd"], outputs: ["mediaItemClick", "upload"] }, { kind: "component", type: MediaListItemComponent, selector: "rolatech-media-list-item", inputs: ["media", "uploadProgress"], outputs: ["mediaItemClick", "deleteMedia"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: ProductManageContentComponent, selector: "rolatech-product-manage-content" }] }); }
|
|
7
132
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageMediaComponent, decorators: [{
|
|
9
134
|
type: Component,
|
|
10
|
-
args: [{ selector: '
|
|
11
|
-
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2UtbWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS1tZWRpYS9wcm9kdWN0LW1hbmFnZS1tZWRpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLW1lZGlhL3Byb2R1Y3QtbWFuYWdlLW1lZGlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVMvQyxNQUFNLE9BQU8sMkJBQTJCOzhHQUEzQiwyQkFBMkI7a0dBQTNCLDJCQUEyQixvRkNWeEMsc0NBQ0EseURES1ksWUFBWTs7MkZBSVgsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm9kdWN0LW1hbmFnZS1tZWRpYScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1tYW5hZ2UtbWVkaWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1tYW5hZ2UtbWVkaWEuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TWFuYWdlTWVkaWFDb21wb25lbnQge31cbiIsIjxwPnByb2R1Y3QtbWFuYWdlLW1lZGlhIHdvcmtzITwvcD5cbiJdfQ==
|
|
135
|
+
args: [{ selector: 'rolatech-product-manage-media', standalone: true, imports: [MediaListComponent, MediaListItemComponent, ToolbarComponent, ProductManageContentComponent], template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u56FE\u7247\u4FE1\u606F\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*\u56FE\u7247\u6587\u4EF6\u5927\u5C0F\u9650\u5236\u57285MB\u4EE5\u4E0B*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-product-manage-content>\n" }]
|
|
136
|
+
}], ctorParameters: () => [] });
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2UtbWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS1tZWRpYS9wcm9kdWN0LW1hbmFnZS1tZWRpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLW1lZGlhL3Byb2R1Y3QtbWFuYWdlLW1lZGlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVwRCxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLHVCQUF1QjtBQVN0RCxNQUFNLE9BQU8s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QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3QixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTNIVSwyQkFBMkI7a0dBQTNCLDJCQUEyQix5RkMxQnhDLCtwQkFlQSwwRERPWSxrQkFBa0Isb0pBQUUsc0JBQXNCLHNKQUFFLGdCQUFnQixnSUFBRSw2QkFBNkI7OzJGQUkxRiwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsK0JBQStCLGNBQzdCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1lZGlhIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7XG4gIENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgSW1hZ2VQcmV2aWV3RGlhbG9nQ29tcG9uZW50LFxuICBNZWRpYUxpc3RDb21wb25lbnQsXG4gIE1lZGlhTGlzdEl0ZW1Db21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZmluZExhc3RJbmRleCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZHVjdC1tYW5hZ2UtY29udGVudC9wcm9kdWN0LW1hbmFnZS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0U3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IFNJWkUgPSAxMCAqIDEwMjQgKiAxMDI0OyAvLyBmaWxlIHNsaWNlIHNpemUgMTBNQlxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1tZWRpYScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNZWRpYUxpc3RDb21wb25lbnQsIE1lZGlhTGlzdEl0ZW1Db21wb25lbnQsIFRvb2xiYXJDb21wb25lbnQsIFByb2R1Y3RNYW5hZ2VDb250ZW50Q29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLW1lZGlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLW1lZGlhLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdE1hbmFnZU1lZGlhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcm9kdWN0U2VydmljZSA9IGluamVjdChQcm9kdWN0U2VydmljZSk7XG4gIGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIGlkOiBzdHJpbmc7XG4gIGlzVXBsb2FkaW5nID0gZmFsc2U7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBtZWRpYTogTWVkaWFbXSA9IFtdO1xuICBzdGF0dXMgPSBQcm9kdWN0U3RhdHVzO1xuICAvLyBwcm9kdWN0VHlwZTogYW55ID0gUHJvZHVjdFR5cGU7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaWQgPSB0aGlzLnJvdXRlLnBhcmVudD8uc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpIGFzIHN0cmluZztcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmQoKTtcbiAgfVxuICBmaW5kKCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0KHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tZWRpYSA9IHJlcy5kYXRhLm1lZGlhIHx8IFtdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBvbkltYWdlQ2xpY2soaTogYW55KSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJbWFnZVByZXZpZXdEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIG1heFdpZHRoOiAnODB2dycsXG4gICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgIGhlaWdodDogJzgwJScsXG4gICAgICB3aWR0aDogJzgwJScsXG4gICAgICBwYW5lbENsYXNzOiAnZnVsbC1zY3JlZW4tbW9kYWwnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtZWRpYTogdGhpcy5tZWRpYSxcbiAgICAgICAgc2VsZWN0ZWQ6IGksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7fSk7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVGaWxlQ2h1bmsoZmlsZTogYW55LCBzaXplID0gU0laRSkge1xuICAgIGNvbnN0IGZpbGVDaHVua0xpc3Q6IGFueSA9IFtdO1xuICAgIGxldCBjdXIgPSAwO1xuICAgIHdoaWxlIChjdXIgPCBmaWxlLnNpemUpIHtcbiAgICAgIGZpbGVDaHVua0xpc3QucHVzaCh7IGZpbGU6IGZpbGUuc2xpY2UoY3VyLCBjdXIgKyBzaXplKSB9KTtcbiAgICAgIGN1ciArPSBzaXplO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZUNodW5rTGlzdDtcbiAgfVxuXG4gIG9uVXBsb2FkTWVkaWEyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7fTtcblxuICAgIGNvbnN0IGZpbGVDaHVua0xpc3QgPSB0aGlzLmNyZWF0ZUZpbGVDaHVuayhmaWxlKTtcbiAgICBmaWxlQ2h1bmtMaXN0LmZvckVhY2goKGl0ZW0pID0+IHt9KTtcbiAgfVxuICBvblVwbG9hZE1lZGlhKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIC8vIDVNQiAqIDEwMjQgKiAxMDI0ID0gNTI0Mjg4MFxuICAgIC8vIGlmIChmaWxlPy5zaXplID4gNTI0Mjg4MCkge1xuICAgIC8vICAgdGhpcy5zbmFja0Jhci5vcGVuKCflsLrlr7jov4flpKcsIOivt+S/ruaUueWQjuS4iuS8oCcpO1xuICAgIC8vICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGltZzogYW55ID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZWRpYS5wdXNoKHtcbiAgICAgICAgICAgIHVybDogaW1nLnNyYyxcbiAgICAgICAgICAgIGFsdDogJ3VwbG9hZCBpbWFnZScsXG4gICAgICAgICAgICB3aWR0aDogaW1nLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBpbWcuaGVpZ2h0LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5zcmMgPSByZWFkZXIucmVzdWx0OyAvLyBUaGlzIGlzIHRoZSBkYXRhIFVSTFxuICAgICAgfTtcbiAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UudXBsb2FkTWVkaWEodGhpcy5pZCwgZm9ybURhdGEpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGZpbmRMYXN0SW5kZXgodGhpcy5tZWRpYSk7XG4gICAgICAgICAgLy8gUmVwbGFjZSBpdGVtIGF0IGluZGV4IHVzaW5nIG5hdGl2ZSBzcGxpY2VcbiAgICAgICAgICB0aGlzLm1lZGlhLnNwbGljZShpbmRleCwgMSwgcmVzLmRhdGEpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGU6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ+S4iuS8oOWksei0pTogJyArIGUubWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIG9uTWVkaWFEZWxldGUoaXRlbTogYW55KSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICB0aXRsZTogJ+WIoOmZpOWbvueJhycsXG4gICAgICAgIG1lc3NhZ2U6ICfnoa7lrprliKDpmaTov5nlvKDllYblk4Hlm77niYflkJc/JyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5kZWxldGVNZWRpYSh0aGlzLmlkLCBpdGVtLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWVkaWEgPSB0aGlzLm1lZGlhLmZpbHRlcigobSkgPT4gbS5pZCAhPT0gaXRlbS5pZCk7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ+WIoOmZpOaIkOWKnycpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZS5tZXNzYWdlKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPHJvbGF0ZWNoLXByb2R1Y3QtbWFuYWdlLWNvbnRlbnQ+XG4gIDxyb2xhdGVjaC10b29sYmFyIHRpdGxlPVwi5Zu+54mH5L+h5oGvXCIgY2xhc3M9XCJoaWRkZW4gbWQ6YmxvY2tcIiBkaXZpZGVyPjwvcm9sYXRlY2gtdG9vbGJhcj5cbiAgPGRpdj5cbiAgICA8cD4q5Zu+54mH5paH5Lu25aSn5bCP6ZmQ5Yi25ZyoNU1C5Lul5LiLKjwvcD5cbiAgICA8cm9sYXRlY2gtbWVkaWEtbGlzdCAodXBsb2FkKT1cIm9uVXBsb2FkTWVkaWEoJGV2ZW50KVwiIFtpc1VwbG9hZGluZ109XCJpc1VwbG9hZGluZ1wiPlxuICAgICAgQGZvciAoaXRlbSBvZiBtZWRpYTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPHJvbGF0ZWNoLW1lZGlhLWxpc3QtaXRlbVxuICAgICAgICAgIFttZWRpYV09XCJpdGVtXCJcbiAgICAgICAgICAobWVkaWFJdGVtQ2xpY2spPVwib25JbWFnZUNsaWNrKGkpXCJcbiAgICAgICAgICAoZGVsZXRlTWVkaWEpPVwib25NZWRpYURlbGV0ZShpdGVtKVwiXG4gICAgICAgID48L3JvbGF0ZWNoLW1lZGlhLWxpc3QtaXRlbT5cbiAgICAgIH1cbiAgICA8L3JvbGF0ZWNoLW1lZGlhLWxpc3Q+XG4gIDwvZGl2PlxuPC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuIl19
|
package/esm2022/lib/pages/product-manage/product-manage-options/product-manage-options.component.mjs
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';
|
|
3
|
+
import { AccordionComponent, AngularComponentsModule, BaseComponent, ConfirmationDialogComponent, PanelComponent, ToolbarComponent, } from '@rolatech/angular-components';
|
|
4
|
+
import { ProductService } from '@rolatech/angular-services';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
8
|
+
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
9
|
+
import { ProductManageOptionAddComponent, ProductManageOptionItemComponent } from '../../../components';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/material/button";
|
|
12
|
+
import * as i2 from "@angular/material/icon";
|
|
13
|
+
export class ProductManageOptionsComponent extends BaseComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.productService = inject(ProductService);
|
|
17
|
+
this.options = [];
|
|
18
|
+
this.add = false;
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.id = this.route.parent?.snapshot.paramMap.get('id');
|
|
22
|
+
this.find();
|
|
23
|
+
}
|
|
24
|
+
find() {
|
|
25
|
+
this.productService.findOptions(this.id).subscribe({
|
|
26
|
+
next: (res) => {
|
|
27
|
+
this.options = res.data || [];
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
saveOption(option) {
|
|
32
|
+
this.productService.addOption(this.id, option).subscribe({
|
|
33
|
+
next: (res) => {
|
|
34
|
+
this.options.push(res.data);
|
|
35
|
+
this.add = false;
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
onUpdateOption(option) {
|
|
40
|
+
const options = {
|
|
41
|
+
title: '编辑选项',
|
|
42
|
+
cancelText: '取消',
|
|
43
|
+
confirmText: '确认',
|
|
44
|
+
data: {
|
|
45
|
+
option: option,
|
|
46
|
+
action: false,
|
|
47
|
+
},
|
|
48
|
+
component: ProductManageOptionAddComponent,
|
|
49
|
+
};
|
|
50
|
+
this.dialogService.open(options);
|
|
51
|
+
this.dialogService.confirmed().subscribe({
|
|
52
|
+
next: (res) => {
|
|
53
|
+
if (res) {
|
|
54
|
+
this.productService.updateOption(option.id, res).subscribe({
|
|
55
|
+
next: (res) => {
|
|
56
|
+
option.values = res.data.values;
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
onDeleteOption(option) {
|
|
64
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
65
|
+
width: '400px',
|
|
66
|
+
data: {
|
|
67
|
+
title: '删除选项',
|
|
68
|
+
message: `确定删除 ${option.name} 吗?`,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
72
|
+
if (result) {
|
|
73
|
+
this.productService.deleteOption(option.id).subscribe({
|
|
74
|
+
next: (res) => {
|
|
75
|
+
const index = this.options.findIndex((item) => item.id === option.id);
|
|
76
|
+
this.options.splice(index, 1);
|
|
77
|
+
this.snackBarService.open('删除成功');
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageOptionsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: ProductManageOptionsComponent, isStandalone: true, selector: "rolatech-product-manage-options", usesInheritance: true, ngImport: i0, template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u9009\u9879\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n @for (item of options; track $index) {\n <rolatech-product-manage-option-item\n [option]=\"item\"\n (delete)=\"onDeleteOption($event)\"\n (edit)=\"onUpdateOption($event)\"\n ></rolatech-product-manage-option-item>\n }\n <div class=\"mt-3\">\n @if (add) {\n <rolatech-product-manage-option-add\n (save)=\"saveOption($event)\"\n (cancel)=\"add = false\"\n ></rolatech-product-manage-option-add>\n } @else {\n <button mat-stroked-button (click)=\"add = true\">\n <mat-icon>add</mat-icon>\n <span>\u589E\u52A0</span>\n </button>\n }\n </div>\n </div>\n</rolatech-product-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ProductManageContentComponent, selector: "rolatech-product-manage-content" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ProductManageOptionItemComponent, selector: "rolatech-product-manage-option-item", inputs: ["option"], outputs: ["delete", "save", "edit"] }, { kind: "component", type: ProductManageOptionAddComponent, selector: "rolatech-product-manage-option-add", outputs: ["cancel", "save", "output"] }] }); }
|
|
85
|
+
}
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageOptionsComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: 'rolatech-product-manage-options', standalone: true, imports: [
|
|
89
|
+
ProductManageContentComponent,
|
|
90
|
+
ToolbarComponent,
|
|
91
|
+
MatButtonModule,
|
|
92
|
+
MatFormFieldModule,
|
|
93
|
+
AngularCommonModule,
|
|
94
|
+
AngularComponentsModule,
|
|
95
|
+
MatIconModule,
|
|
96
|
+
AccordionComponent,
|
|
97
|
+
PanelComponent,
|
|
98
|
+
ProductManageOptionItemComponent,
|
|
99
|
+
ProductManageOptionAddComponent,
|
|
100
|
+
], template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u9009\u9879\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n @for (item of options; track $index) {\n <rolatech-product-manage-option-item\n [option]=\"item\"\n (delete)=\"onDeleteOption($event)\"\n (edit)=\"onUpdateOption($event)\"\n ></rolatech-product-manage-option-item>\n }\n <div class=\"mt-3\">\n @if (add) {\n <rolatech-product-manage-option-add\n (save)=\"saveOption($event)\"\n (cancel)=\"add = false\"\n ></rolatech-product-manage-option-add>\n } @else {\n <button mat-stroked-button (click)=\"add = true\">\n <mat-icon>add</mat-icon>\n <span>\u589E\u52A0</span>\n </button>\n }\n </div>\n </div>\n</rolatech-product-manage-content>\n" }]
|
|
101
|
+
}] });
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2Utb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLW9wdGlvbnMvcHJvZHVjdC1tYW5hZ2Utb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLW9wdGlvbnMvcHJvZHVjdC1tYW5hZ2Utb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLDJCQUEyQixFQUMzQixjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFxQnhHLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxhQUFhO0lBbkJo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QUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwQyxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcEVVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGtIQ3JDMUMscTFCQXlCQSwwRERISSw2QkFBNkIsNEVBQzdCLGdCQUFnQiwrSEFDaEIsZUFBZSwyTkFDZixrQkFBa0IsOEJBQ2xCLG1CQUFtQiw4QkFDbkIsdUJBQXVCLG1MQUN2QixhQUFhLCtCQUdiLGdDQUFnQyx5SUFDaEMsK0JBQStCOzsyRkFLdEIsNkJBQTZCO2tCQW5CekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQO3dCQUNQLDZCQUE2Qjt3QkFDN0IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGdDQUFnQzt3QkFDaEMsK0JBQStCO3FCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdE1hbmFnZUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9wcm9kdWN0LW1hbmFnZS1jb250ZW50L3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFjY29yZGlvbkNvbXBvbmVudCxcbiAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gIEJhc2VDb21wb25lbnQsXG4gIENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgUGFuZWxDb21wb25lbnQsXG4gIFRvb2xiYXJDb21wb25lbnQsXG59IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBQcm9kdWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VPcHRpb25BZGRDb21wb25lbnQsIFByb2R1Y3RNYW5hZ2VPcHRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXByb2R1Y3QtbWFuYWdlLW9wdGlvbnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUHJvZHVjdE1hbmFnZUNvbnRlbnRDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBBY2NvcmRpb25Db21wb25lbnQsXG4gICAgUGFuZWxDb21wb25lbnQsXG4gICAgUHJvZHVjdE1hbmFnZU9wdGlvbkl0ZW1Db21wb25lbnQsXG4gICAgUHJvZHVjdE1hbmFnZU9wdGlvbkFkZENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1tYW5hZ2Utb3B0aW9ucy5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RNYW5hZ2VPcHRpb25zQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb2R1Y3RTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RTZXJ2aWNlKTtcbiAgb3B0aW9uczogUHJvZHVjdE9wdGlvbltdID0gW107XG5cbiAgYWRkID0gZmFsc2U7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWQgPSB0aGlzLnJvdXRlLnBhcmVudD8uc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpIGFzIHN0cmluZztcbiAgICB0aGlzLmZpbmQoKTtcbiAgfVxuICBmaW5kKCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZmluZE9wdGlvbnModGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gcmVzLmRhdGEgfHwgW107XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHNhdmVPcHRpb24ob3B0aW9uOiBQcm9kdWN0T3B0aW9uKSB7XG4gICAgdGhpcy5wcm9kdWN0U2VydmljZS5hZGRPcHRpb24odGhpcy5pZCwgb3B0aW9uKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMucHVzaChyZXMuZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIG9uVXBkYXRlT3B0aW9uKG9wdGlvbjogUHJvZHVjdE9wdGlvbikge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICB0aXRsZTogJ+e8lui+kemAiemhuScsXG4gICAgICBjYW5jZWxUZXh0OiAn5Y+W5raIJyxcbiAgICAgIGNvbmZpcm1UZXh0OiAn56Gu6K6kJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgb3B0aW9uOiBvcHRpb24sXG4gICAgICAgIGFjdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlT3B0aW9uQWRkQ29tcG9uZW50LFxuICAgIH07XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4ob3B0aW9ucyk7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm1lZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnVwZGF0ZU9wdGlvbihvcHRpb24uaWQsIHJlcykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlcyA9IHJlcy5kYXRhLnZhbHVlcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25EZWxldGVPcHRpb24ob3B0aW9uOiBQcm9kdWN0T3B0aW9uKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICB0aXRsZTogJ+WIoOmZpOmAiemhuScsXG4gICAgICAgIG1lc3NhZ2U6IGDnoa7lrprliKDpmaQgJHtvcHRpb24ubmFtZX0g5ZCXP2AsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5kZWxldGVPcHRpb24ob3B0aW9uLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3B0aW9uLmlkKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5Yig6Zmk5oiQ5YqfJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuICA8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIumAiemhuVwiIGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrXCIgZGl2aWRlcj4gPC9yb2xhdGVjaC10b29sYmFyPlxuICA8ZGl2PlxuICAgIEBmb3IgKGl0ZW0gb2Ygb3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cm9sYXRlY2gtcHJvZHVjdC1tYW5hZ2Utb3B0aW9uLWl0ZW1cbiAgICAgICAgW29wdGlvbl09XCJpdGVtXCJcbiAgICAgICAgKGRlbGV0ZSk9XCJvbkRlbGV0ZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKGVkaXQpPVwib25VcGRhdGVPcHRpb24oJGV2ZW50KVwiXG4gICAgICA+PC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1vcHRpb24taXRlbT5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgIEBpZiAoYWRkKSB7XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1vcHRpb24tYWRkXG4gICAgICAgICAgKHNhdmUpPVwic2F2ZU9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2FuY2VsKT1cImFkZCA9IGZhbHNlXCJcbiAgICAgICAgPjwvcm9sYXRlY2gtcHJvZHVjdC1tYW5hZ2Utb3B0aW9uLWFkZD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkID0gdHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPuWinuWKoDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuIl19
|
package/esm2022/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.mjs
CHANGED
|
@@ -2,11 +2,11 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class ProductManagePricingComponent {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManagePricingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductManagePricingComponent, isStandalone: true, selector: "rolatech-product-manage-pricing", ngImport: i0, template: "<p>product-manage-pricing works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManagePricingComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
|
-
args: [{ selector: '
|
|
10
|
+
args: [{ selector: 'rolatech-product-manage-pricing', standalone: true, imports: [CommonModule], template: "<p>product-manage-pricing works!</p>\n" }]
|
|
11
11
|
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2UtcHJpY2luZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLXByaWNpbmcvcHJvZHVjdC1tYW5hZ2UtcHJpY2luZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLXByaWNpbmcvcHJvZHVjdC1tYW5hZ2UtcHJpY2luZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTL0MsTUFBTSxPQUFPLDZCQUE2Qjs4R0FBN0IsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMkZDVjFDLHdDQUNBLHlEREtZLFlBQVk7OzJGQUlYLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1wcmljaW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LW1hbmFnZS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLXByaWNpbmcuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TWFuYWdlUHJpY2luZ0NvbXBvbmVudCB7fVxuIiwiPHA+cHJvZHVjdC1tYW5hZ2UtcHJpY2luZyB3b3JrcyE8L3A+XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { AngularCommonModule } from '@rolatech/angular-common';
|
|
3
|
+
import { AngularComponentsModule, ToolbarComponent } from '@rolatech/angular-components';
|
|
4
|
+
import { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ProductManageScheduleComponent {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageScheduleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: ProductManageScheduleComponent, isStandalone: true, selector: "rolatech-product-manage-schedule", ngImport: i0, template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u53D1\u5E03\u8BBE\u7F6E\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div></div>\n</rolatech-product-manage-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: ProductManageContentComponent, selector: "rolatech-product-manage-content" }] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageScheduleComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'rolatech-product-manage-schedule', standalone: true, imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent, ProductManageContentComponent], template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u53D1\u5E03\u8BBE\u7F6E\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div></div>\n</rolatech-product-manage-content>\n" }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2Utc2NoZWR1bGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS1zY2hlZHVsZS9wcm9kdWN0LW1hbmFnZS1zY2hlZHVsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLXNjaGVkdWxlL3Byb2R1Y3QtbWFuYWdlLXNjaGVkdWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7O0FBUzNHLE1BQU0sT0FBTyw4QkFBOEI7OEdBQTlCLDhCQUE4QjtrR0FBOUIsOEJBQThCLDRGQ1ozQyx1TUFJQSx5RERJWSxtQkFBbUIsOEJBQUUsdUJBQXVCLCtCQUFFLGdCQUFnQixnSUFBRSw2QkFBNkI7OzJGQUk1Riw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0Usa0NBQWtDLGNBQ2hDLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQvcHJvZHVjdC1tYW5hZ2UtY29udGVudC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1zY2hlZHVsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgVG9vbGJhckNvbXBvbmVudCwgUHJvZHVjdE1hbmFnZUNvbnRlbnRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1tYW5hZ2Utc2NoZWR1bGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1tYW5hZ2Utc2NoZWR1bGUuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TWFuYWdlU2NoZWR1bGVDb21wb25lbnQge31cbiIsIjxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuICA8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIuWPkeW4g+iuvue9rlwiIGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrXCIgZGl2aWRlcj4gPC9yb2xhdGVjaC10b29sYmFyPlxuICA8ZGl2PjwvZGl2PlxuPC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuIl19
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
3
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
6
|
+
import { ActivatedRoute } from '@angular/router';
|
|
7
|
+
import { ToolbarComponent, ConfirmationDialogComponent } from '@rolatech/angular-components';
|
|
8
|
+
import { remove } from 'lodash';
|
|
9
|
+
import { ProductStatus, ProductType } from '../../../interfaces';
|
|
10
|
+
import { ProductService } from '@rolatech/angular-services';
|
|
11
|
+
import { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';
|
|
12
|
+
import { ProductManageSectionItemComponent } from '../../../components';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/material/button";
|
|
15
|
+
import * as i2 from "@angular/material/icon";
|
|
16
|
+
export class ProductManageSectionsComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.route = inject(ActivatedRoute);
|
|
19
|
+
this.productService = inject(ProductService);
|
|
20
|
+
this.dialog = inject(MatDialog);
|
|
21
|
+
this.snackBar = inject(MatSnackBar);
|
|
22
|
+
this.isLoading = false;
|
|
23
|
+
this.isUploading = false;
|
|
24
|
+
this.sections = [];
|
|
25
|
+
this.status = ProductStatus;
|
|
26
|
+
this.productType = ProductType;
|
|
27
|
+
this.id = this.route.parent?.snapshot.paramMap.get('id');
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.find();
|
|
31
|
+
}
|
|
32
|
+
find() {
|
|
33
|
+
this.productService.findSections(this.id).subscribe({
|
|
34
|
+
next: (res) => {
|
|
35
|
+
if (res.data) {
|
|
36
|
+
this.sections = res.data;
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
addSection() {
|
|
42
|
+
if (!this.sections) {
|
|
43
|
+
this.sections = [];
|
|
44
|
+
}
|
|
45
|
+
this.productService
|
|
46
|
+
.addSection(this.id, {
|
|
47
|
+
title: '',
|
|
48
|
+
description: '',
|
|
49
|
+
content: '',
|
|
50
|
+
media: [],
|
|
51
|
+
})
|
|
52
|
+
.subscribe({
|
|
53
|
+
next: (res) => {
|
|
54
|
+
const section = res.data;
|
|
55
|
+
this.sections.push({
|
|
56
|
+
id: section.id,
|
|
57
|
+
title: '',
|
|
58
|
+
description: '',
|
|
59
|
+
media: [],
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
error: (e) => {
|
|
63
|
+
this.snackBar.open(e.message);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
onUploadSectionMedia(event) {
|
|
68
|
+
const section = event.section;
|
|
69
|
+
const sectionId = section.id;
|
|
70
|
+
const file = event.data.target.files[0];
|
|
71
|
+
if (file) {
|
|
72
|
+
const reader = new FileReader();
|
|
73
|
+
reader.readAsDataURL(file);
|
|
74
|
+
reader.onload = () => {
|
|
75
|
+
if (!section.media) {
|
|
76
|
+
section.media = [];
|
|
77
|
+
}
|
|
78
|
+
section.media.push({
|
|
79
|
+
url: reader.result,
|
|
80
|
+
alt: 'upload image',
|
|
81
|
+
});
|
|
82
|
+
section.isUploading = true;
|
|
83
|
+
const formData = new FormData();
|
|
84
|
+
formData.append('file', file);
|
|
85
|
+
this.productService.uploadSectionMedia(sectionId, formData).subscribe({
|
|
86
|
+
next: (res) => {
|
|
87
|
+
this.isUploading = false;
|
|
88
|
+
section.isUploading = false;
|
|
89
|
+
delete res.data.productSection;
|
|
90
|
+
section.media[section.media.length - 1].id = res.data.id;
|
|
91
|
+
},
|
|
92
|
+
error: (e) => {
|
|
93
|
+
this.isUploading = false;
|
|
94
|
+
this.snackBar.open('上传失败: ' + e.message);
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
reader.onerror = (error) => {
|
|
99
|
+
this.isUploading = false;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onDeleteSectionMedia(event) {
|
|
104
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
105
|
+
width: '400px',
|
|
106
|
+
data: {
|
|
107
|
+
title: '删除图片',
|
|
108
|
+
message: `确定删除吗?`,
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
112
|
+
if (result) {
|
|
113
|
+
const section = event.section;
|
|
114
|
+
const mediaId = event.media.id;
|
|
115
|
+
remove(section.media, {
|
|
116
|
+
id: mediaId,
|
|
117
|
+
});
|
|
118
|
+
this.productService.deleteSectionMedia(section.id, mediaId).subscribe({
|
|
119
|
+
next: (res) => {
|
|
120
|
+
// remove(section.media, {
|
|
121
|
+
// id: mediaId,
|
|
122
|
+
// });
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
onSectionSave(section) {
|
|
129
|
+
delete section.isUploading;
|
|
130
|
+
this.productService.updateSection(section.id, section).subscribe({
|
|
131
|
+
next: (res) => {
|
|
132
|
+
this.snackBar.open('保存成功');
|
|
133
|
+
},
|
|
134
|
+
error: (e) => {
|
|
135
|
+
this.snackBar.open(e.message);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
onSectionDelete(section) {
|
|
140
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
141
|
+
width: '400px',
|
|
142
|
+
data: {
|
|
143
|
+
title: '删除详情',
|
|
144
|
+
message: '确定删除此详情吗?',
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
148
|
+
if (result) {
|
|
149
|
+
this.productService.deleteSection(section.id).subscribe({
|
|
150
|
+
next: (res) => {
|
|
151
|
+
this.snackBar.open(res.data);
|
|
152
|
+
remove(this.sections, {
|
|
153
|
+
id: section.id,
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
error: (e) => {
|
|
157
|
+
this.snackBar.open(e.message);
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageSectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: ProductManageSectionsComponent, isStandalone: true, selector: "rolatech-product-manage-sections", ngImport: i0, template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u8BE6\u60C5\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track section) {\n <rolatech-product-manage-section-item\n [section]=\"section\"\n (upload)=\"onUploadSectionMedia($event)\"\n (deleteMedia)=\"onDeleteSectionMedia($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [actions]=\"true\"\n ></rolatech-product-manage-section-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>\u6DFB\u52A0\u8BE6\u60C5</span>\n </button>\n </div>\n</rolatech-product-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ProductManageSectionItemComponent, selector: "rolatech-product-manage-section-item", inputs: ["isUploading", "section", "actions", "selectMedia"], outputs: ["upload", "delete", "save", "deleteMedia"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: ProductManageContentComponent, selector: "rolatech-product-manage-content" }] }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageSectionsComponent, decorators: [{
|
|
167
|
+
type: Component,
|
|
168
|
+
args: [{ selector: 'rolatech-product-manage-sections', standalone: true, imports: [ProductManageSectionItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, ProductManageContentComponent], template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u8BE6\u60C5\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track section) {\n <rolatech-product-manage-section-item\n [section]=\"section\"\n (upload)=\"onUploadSectionMedia($event)\"\n (deleteMedia)=\"onDeleteSectionMedia($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [actions]=\"true\"\n ></rolatech-product-manage-section-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>\u6DFB\u52A0\u8BE6\u60C5</span>\n </button>\n </div>\n</rolatech-product-manage-content>\n" }]
|
|
169
|
+
}], ctorParameters: () => [] });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2Utc2VjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS1zZWN0aW9ucy9wcm9kdWN0LW1hbmFnZS1zZWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0YsT0FBTyxFQUFhLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FB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ZSwyTkFBRSxhQUFhLG9MQUFFLGdCQUFnQixnSUFBRSw2QkFBNkI7OzJGQUlqSCw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0Usa0NBQWtDLGNBQ2hDLElBQUksV0FDUCxDQUFDLGlDQUFpQyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZmluZEluZGV4LCByZW1vdmUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUHJvZHVjdFNlY3Rpb24sIFByb2R1Y3RTdGF0dXMsIFByb2R1Y3RUeXBlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZHVjdC1tYW5hZ2UtY29udGVudC9wcm9kdWN0LW1hbmFnZS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlU2VjdGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvZHVjdC1tYW5hZ2Utc2VjdGlvbnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUHJvZHVjdE1hbmFnZVNlY3Rpb25JdGVtQ29tcG9uZW50LCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIFRvb2xiYXJDb21wb25lbnQsIFByb2R1Y3RNYW5hZ2VDb250ZW50Q29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdE1hbmFnZVNlY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcm9kdWN0U2VydmljZSA9IGluamVjdChQcm9kdWN0U2VydmljZSk7XG4gIGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG5cbiAgaWQ6IHN0cmluZztcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIGlzVXBsb2FkaW5nID0gZmFsc2U7XG4gIHNlY3Rpb25zOiBQcm9kdWN0U2VjdGlvbltdID0gW107XG4gIHN0YXR1cyA9IFByb2R1Y3RTdGF0dXM7XG4gIHByb2R1Y3RUeXBlOiBhbnkgPSBQcm9kdWN0VHlwZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMucm91dGUucGFyZW50Py5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZCgpO1xuICB9XG4gIGZpbmQoKSB7XG4gICAgdGhpcy5wcm9kdWN0U2VydmljZS5maW5kU2VjdGlvbnModGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IHJlcy5kYXRhO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGFkZFNlY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLnNlY3Rpb25zKSB7XG4gICAgICB0aGlzLnNlY3Rpb25zID0gW107XG4gICAgfVxuICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgIC5hZGRTZWN0aW9uKHRoaXMuaWQsIHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICBtZWRpYTogW10sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSByZXMuZGF0YTtcbiAgICAgICAgICB0aGlzLnNlY3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgICBtZWRpYTogW10sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlLm1lc3NhZ2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cbiAgb25VcGxvYWRTZWN0aW9uTWVkaWEoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlY3Rpb24gPSBldmVudC5zZWN0aW9uO1xuICAgIGNvbnN0IHNlY3Rpb25JZCA9IHNlY3Rpb24uaWQ7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LmRhdGEudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXNlY3Rpb24ubWVkaWEpIHtcbiAgICAgICAgICBzZWN0aW9uLm1lZGlhID0gW107XG4gICAgICAgIH1cbiAgICAgICAgKHNlY3Rpb24ubWVkaWEgYXMgYW55KS5wdXNoKHtcbiAgICAgICAgICB1cmw6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgICAgYWx0OiAndXBsb2FkIGltYWdlJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHNlY3Rpb24uaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS51cGxvYWRTZWN0aW9uTWVkaWEoc2VjdGlvbklkLCBmb3JtRGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlY3Rpb24uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGRlbGV0ZSByZXMuZGF0YS5wcm9kdWN0U2VjdGlvbjtcbiAgICAgICAgICAgIHNlY3Rpb24ubWVkaWFbc2VjdGlvbi5tZWRpYS5sZW5ndGggLSAxXS5pZCA9IHJlcy5kYXRhLmlkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ+S4iuS8oOWksei0pTogJyArIGUubWVzc2FnZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgb25EZWxldGVTZWN0aW9uTWVkaWEoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzQwMHB4JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGl0bGU6ICfliKDpmaTlm77niYcnLFxuICAgICAgICBtZXNzYWdlOiBg56Gu5a6a5Yig6Zmk5ZCXP2AsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGV2ZW50LnNlY3Rpb247XG4gICAgICAgIGNvbnN0IG1lZGlhSWQgPSBldmVudC5tZWRpYS5pZDtcbiAgICAgICAgcmVtb3ZlKHNlY3Rpb24ubWVkaWEsIHtcbiAgICAgICAgICBpZDogbWVkaWFJZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZGVsZXRlU2VjdGlvbk1lZGlhKHNlY3Rpb24uaWQsIG1lZGlhSWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyByZW1vdmUoc2VjdGlvbi5tZWRpYSwge1xuICAgICAgICAgICAgLy8gICBpZDogbWVkaWFJZCxcbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG9uU2VjdGlvblNhdmUoc2VjdGlvbjogUHJvZHVjdFNlY3Rpb24pIHtcbiAgICBkZWxldGUgc2VjdGlvbi5pc1VwbG9hZGluZztcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnVwZGF0ZVNlY3Rpb24oc2VjdGlvbi5pZCwgc2VjdGlvbikuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ+S/neWtmOaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZS5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25TZWN0aW9uRGVsZXRlKHNlY3Rpb246IFByb2R1Y3RTZWN0aW9uKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICB0aXRsZTogJ+WIoOmZpOivpuaDhScsXG4gICAgICAgIG1lc3NhZ2U6ICfnoa7lrprliKDpmaTmraTor6bmg4XlkJc/JyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5kZWxldGVTZWN0aW9uKHNlY3Rpb24uaWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4ocmVzLmRhdGEpO1xuICAgICAgICAgICAgcmVtb3ZlKHRoaXMuc2VjdGlvbnMsIHtcbiAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGUubWVzc2FnZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuICA8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIuivpuaDhVwiIGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrXCIgZGl2aWRlcj4gPC9yb2xhdGVjaC10b29sYmFyPlxuICA8ZGl2PlxuICAgIDxkaXY+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uKSB7XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1zZWN0aW9uLWl0ZW1cbiAgICAgICAgICBbc2VjdGlvbl09XCJzZWN0aW9uXCJcbiAgICAgICAgICAodXBsb2FkKT1cIm9uVXBsb2FkU2VjdGlvbk1lZGlhKCRldmVudClcIlxuICAgICAgICAgIChkZWxldGVNZWRpYSk9XCJvbkRlbGV0ZVNlY3Rpb25NZWRpYSgkZXZlbnQpXCJcbiAgICAgICAgICAoc2F2ZSk9XCJvblNlY3Rpb25TYXZlKCRldmVudClcIlxuICAgICAgICAgIChkZWxldGUpPVwib25TZWN0aW9uRGVsZXRlKCRldmVudClcIlxuICAgICAgICAgIFthY3Rpb25zXT1cInRydWVcIlxuICAgICAgICA+PC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1zZWN0aW9uLWl0ZW0+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImFkZFNlY3Rpb24oKVwiIGNsYXNzPVwibXQtM1wiPlxuICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICA8c3Bhbj7mt7vliqDor6bmg4U8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9yb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50PlxuIl19
|