@rolatech/angular-product 17.0.0 → 17.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/esm2022/index.mjs +5 -12
  2. package/esm2022/lib/components/index.mjs +12 -0
  3. package/esm2022/lib/components/product-action/product-action.component.mjs +25 -0
  4. package/esm2022/lib/components/product-info/product-info.component.mjs +17 -0
  5. package/esm2022/lib/components/product-item/product-item.component.mjs +17 -0
  6. package/esm2022/lib/components/product-manage-option-add/product-manage-option-add.component.mjs +68 -0
  7. package/esm2022/lib/components/product-manage-option-item/product-manage-option-item.component.mjs +49 -0
  8. package/esm2022/lib/components/product-manage-variant/product-manage-variant.component.mjs +115 -0
  9. package/esm2022/lib/components/product-mange-option-action/product-manage-option-action.component.mjs +22 -0
  10. package/esm2022/lib/components/product-mange-section-item/product-mange-section-item.component.mjs +89 -0
  11. package/esm2022/lib/components/product-media/product-media.component.mjs +34 -0
  12. package/esm2022/lib/components/product-option/product-option.component.mjs +23 -0
  13. package/esm2022/lib/components/product-owner-renderer/product-owner-renderer.component.mjs +20 -0
  14. package/esm2022/lib/components/product-pricing/product-pricing.component.mjs +31 -0
  15. package/esm2022/lib/components/product-section/product-section.component.mjs +26 -0
  16. package/esm2022/lib/interfaces/category.mjs +2 -0
  17. package/esm2022/lib/interfaces/index.mjs +2 -0
  18. package/esm2022/lib/interfaces/product.mjs +32 -0
  19. package/esm2022/lib/pages/product/product-category/product-category.component.mjs +70 -8
  20. package/esm2022/lib/pages/product/product-details/product-details.component.mjs +193 -0
  21. package/esm2022/lib/pages/product/product-details/selected.pipe.mjs +18 -0
  22. package/esm2022/lib/pages/product/product-index/product-index.component.mjs +39 -8
  23. package/esm2022/lib/pages/product/product-layout/product-layout.component.mjs +46 -8
  24. package/esm2022/lib/pages/product/product.routes.mjs +3 -3
  25. package/esm2022/lib/pages/product-manage/product-manage-content/product-manage-content.component.mjs +5 -5
  26. package/esm2022/lib/pages/product-manage/product-manage-create/product-manage-create.component.mjs +61 -0
  27. package/esm2022/lib/pages/product-manage/product-manage-index/product-manage-index.component.mjs +155 -0
  28. package/esm2022/lib/pages/product-manage/product-manage-info/product-manage-info.component.mjs +98 -8
  29. package/esm2022/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.mjs +14 -0
  30. package/esm2022/lib/pages/product-manage/product-manage-item/product-manage-item.component.mjs +27 -0
  31. package/esm2022/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.mjs +12 -0
  32. package/esm2022/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.mjs +51 -8
  33. package/esm2022/lib/pages/product-manage/product-manage-media/product-manage-media.component.mjs +133 -8
  34. package/esm2022/lib/pages/product-manage/product-manage-options/product-manage-options.component.mjs +102 -0
  35. package/esm2022/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.mjs +5 -5
  36. package/esm2022/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.mjs +14 -0
  37. package/esm2022/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.mjs +170 -0
  38. package/esm2022/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.mjs +133 -0
  39. package/esm2022/lib/pages/product-manage/product-manage.routes.mjs +34 -4
  40. package/esm2022/lib/services/index.mjs +4 -0
  41. package/esm2022/lib/services/product-category.service.mjs +38 -0
  42. package/esm2022/provider.mjs +13 -0
  43. package/fesm2022/rolatech-angular-product-product-index.component-C_cbg95R.mjs +70 -0
  44. package/fesm2022/rolatech-angular-product-product-index.component-C_cbg95R.mjs.map +1 -0
  45. package/fesm2022/rolatech-angular-product.mjs +1697 -76
  46. package/fesm2022/rolatech-angular-product.mjs.map +1 -1
  47. package/index.d.ts +4 -11
  48. package/lib/components/index.d.ts +11 -0
  49. package/lib/components/product-action/product-action.component.d.ts +11 -0
  50. package/lib/components/product-info/product-info.component.d.ts +7 -0
  51. package/lib/components/product-item/product-item.component.d.ts +7 -0
  52. package/lib/components/product-manage-option-add/product-manage-option-add.component.d.ts +20 -0
  53. package/lib/components/product-manage-option-item/product-manage-option-item.component.d.ts +14 -0
  54. package/lib/components/product-manage-variant/product-manage-variant.component.d.ts +18 -0
  55. package/lib/components/product-mange-option-action/product-manage-option-action.component.d.ts +10 -0
  56. package/lib/components/product-mange-section-item/product-mange-section-item.component.d.ts +33 -0
  57. package/lib/components/product-media/product-media.component.d.ts +12 -0
  58. package/lib/components/product-option/product-option.component.d.ts +14 -0
  59. package/lib/components/product-owner-renderer/product-owner-renderer.component.d.ts +8 -0
  60. package/lib/components/product-pricing/product-pricing.component.d.ts +12 -0
  61. package/lib/components/product-section/product-section.component.d.ts +16 -0
  62. package/lib/interfaces/category.d.ts +16 -0
  63. package/lib/interfaces/index.d.ts +2 -0
  64. package/lib/interfaces/product.d.ts +91 -0
  65. package/lib/pages/product/product-category/product-category.component.d.ts +19 -2
  66. package/lib/pages/product/product-details/product-details.component.d.ts +39 -0
  67. package/lib/pages/product/product-details/selected.pipe.d.ts +8 -0
  68. package/lib/pages/product/product-index/product-index.component.d.ts +12 -2
  69. package/lib/pages/product/product-layout/product-layout.component.d.ts +15 -2
  70. package/lib/pages/product-manage/product-manage-content/product-manage-content.component.d.ts +1 -1
  71. package/lib/pages/product-manage/product-manage-create/product-manage-create.component.d.ts +11 -0
  72. package/lib/pages/product-manage/product-manage-index/product-manage-index.component.d.ts +38 -0
  73. package/lib/pages/product-manage/product-manage-info/product-manage-info.component.d.ts +26 -2
  74. package/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.d.ts +5 -0
  75. package/lib/pages/product-manage/product-manage-item/product-manage-item.component.d.ts +12 -0
  76. package/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.d.ts +5 -0
  77. package/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.d.ts +22 -2
  78. package/lib/pages/product-manage/product-manage-media/product-manage-media.component.d.ts +26 -2
  79. package/lib/pages/product-manage/product-manage-options/product-manage-options.component.d.ts +17 -0
  80. package/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.d.ts +1 -1
  81. package/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.d.ts +5 -0
  82. package/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.d.ts +29 -0
  83. package/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.d.ts +27 -0
  84. package/lib/services/index.d.ts +3 -0
  85. package/lib/services/product-category.service.d.ts +12 -0
  86. package/package.json +1 -1
  87. package/provider.d.ts +2 -0
  88. package/themes/_default.scss +1 -1
  89. package/esm2022/lib/angular-product/angular-product.component.mjs +0 -12
  90. package/esm2022/lib/pages/product/product-detail/product-detail.component.mjs +0 -12
  91. package/esm2022/lib/pages/product-manage/product-manage-details/product-manage-details.component.mjs +0 -12
  92. package/lib/angular-product/angular-product.component.d.ts +0 -5
  93. package/lib/pages/product/product-detail/product-detail.component.d.ts +0 -5
  94. package/lib/pages/product-manage/product-manage-details/product-manage-details.component.d.ts +0 -5
@@ -0,0 +1,133 @@
1
+ import { ChangeDetectorRef, Component, inject, model, signal } from '@angular/core';
2
+ import { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';
3
+ import { AngularComponentsModule, BaseComponent, ImageComponent, SpinnerComponent, ThumbnailComponent, ToolbarComponent, } from '@rolatech/angular-components';
4
+ import { ProductService } from '@rolatech/angular-services';
5
+ import { MatIcon } from '@angular/material/icon';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { AngularCommonModule } from '@rolatech/angular-common';
8
+ import { MatSnackBar } from '@angular/material/snack-bar';
9
+ import { ProductManageVariantComponent } from '../../../components/product-manage-variant/product-manage-variant.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/material/button";
12
+ import * as i2 from "@angular/material/slide-toggle";
13
+ export class ProductManageVariantsComponent extends BaseComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.productService = inject(ProductService);
17
+ this.changeDetectorRefs = inject(ChangeDetectorRef);
18
+ this.options = signal([]);
19
+ this.snackBar = inject(MatSnackBar);
20
+ this.productPrice = model();
21
+ this.variantPriceChecked = false;
22
+ this.loading = false;
23
+ }
24
+ ngOnInit() {
25
+ this.id = this.route.parent?.snapshot.paramMap.get('id');
26
+ this.getProduct();
27
+ }
28
+ onVariantSlideToggle(event) {
29
+ const newState = event.checked;
30
+ if (newState) {
31
+ this.productService.updateVariantPrice(this.id, true).subscribe({
32
+ next: (res) => {
33
+ this.variants = res.data;
34
+ this.variantPriceChecked = newState;
35
+ },
36
+ });
37
+ }
38
+ else {
39
+ const options = {
40
+ title: '确认删除吗',
41
+ message: '删除这个章节吗?',
42
+ cancelText: '取消',
43
+ confirmText: '确认',
44
+ };
45
+ this.dialogService.open(options);
46
+ this.dialogService.confirmed().subscribe({
47
+ next: (res) => {
48
+ if (res) {
49
+ this.productService.updateVariantPrice(this.id, false).subscribe({
50
+ next: (res) => {
51
+ this.variantPriceChecked = false;
52
+ this.variants = res.data;
53
+ },
54
+ });
55
+ }
56
+ else {
57
+ event.source.checked = !newState;
58
+ }
59
+ },
60
+ });
61
+ }
62
+ }
63
+ onInventorySlideToggle(e) {
64
+ if (e.checked) {
65
+ }
66
+ }
67
+ saveVariants() {
68
+ this.productService.updateVariants(this.id, this.variants).subscribe({
69
+ next: (res) => {
70
+ this.snackBarService.open('保存成功');
71
+ },
72
+ error: (error) => {
73
+ this.snackBarService.open(error.message);
74
+ },
75
+ });
76
+ }
77
+ onUpload(variant, data) {
78
+ this.productService.uploadVariantMedia(variant.id, data).subscribe({
79
+ next: (res) => {
80
+ variant.media[variant.media.length - 1] = {
81
+ id: res.data.id,
82
+ url: res.data.url + '!w200',
83
+ uploading: false,
84
+ };
85
+ },
86
+ error: (e) => {
87
+ this.snackBar.open('上传失败: ' + e.message);
88
+ },
89
+ });
90
+ }
91
+ findVariants() {
92
+ this.productService.findVariants(this.id).subscribe({
93
+ next: (res) => {
94
+ if (res.data) {
95
+ this.variantPriceChecked = true;
96
+ }
97
+ this.variants = res.data;
98
+ },
99
+ });
100
+ }
101
+ getProduct() {
102
+ this.loading = true;
103
+ this.productService.get(this.id).subscribe({
104
+ next: (res) => {
105
+ this.product = res.data;
106
+ this.variants = this.product.variants;
107
+ this.variantPriceChecked = this.variants ? this.variants.length > 0 : false;
108
+ this.options.set(res.data.options || []);
109
+ let price = (res.data.price / 100).toFixed(2);
110
+ this.productPrice.set(price);
111
+ this.loading = false;
112
+ },
113
+ });
114
+ }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageVariantsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: ProductManageVariantsComponent, isStandalone: true, selector: "rolatech-product-manage-variants", inputs: { productPrice: { classPropertyName: "productPrice", publicName: "productPrice", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { productPrice: "productPriceChange" }, usesInheritance: true, ngImport: i0, template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u4EF7\u683C\u7B56\u7565\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n @if (loading) {\n <rolatech-spinner></rolatech-spinner>\n } @else {\n <div class=\"flex items-center\">\n <mat-slide-toggle\n #slide\n [checked]=\"variantPriceChecked\"\n (change)=\"onVariantSlideToggle($event)\"\n [disabled]=\"options().length <= 0\"\n ></mat-slide-toggle>\n <div>\u6839\u636E\u5546\u54C1\u9009\u9879\u8BBE\u7F6E\u4E0D\u540C\u7684\u4EF7\u683C\u548C\u5E93\u5B58</div>\n </div>\n <div class=\"flex items-center\">\n <mat-slide-toggle #inventorySlide (change)=\"onInventorySlideToggle($event)\"></mat-slide-toggle>\n <div>\u8DDF\u8E2A\u5E93\u5B58</div>\n </div>\n\n @if (slide.checked) {\n <div>\n <div class=\"header flex gap-3 h-14 items-center\">\n <div class=\"px-3\">\u540D\u79F0</div>\n <div class=\"flex-1\"></div>\n <div class=\"w-[160px]\">\u4EF7\u683C</div>\n <div class=\"w-[160px]\">\u72B6\u6001</div>\n @if (inventorySlide.checked) {\n <div class=\"w-[160px]\">\u5E93\u5B58</div>\n }\n\n <div class=\"block w-20 text-right\">\u5C55\u5F00/\u6298\u53E0</div>\n </div>\n @for (item of variants; track $index) {\n <rolatech-product-manage-variant [variant]=\"item\" (upload)=\"onUpload(item, $event)\"></rolatech-product-manage-variant>\n }\n </div>\n <div class=\"mt-3\">\n <button mat-button (click)=\"saveVariants()\">\u4FDD\u5B58</button>\n </div>\n }\n }\n</rolatech-product-manage-content>\n", styles: ["mat-slide-toggle{scale:.8}mat-form-field{width:72px}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { 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: MatFormFieldModule }, { kind: "component", type: ProductManageVariantComponent, selector: "rolatech-product-manage-variant", inputs: ["variant"], outputs: ["variantChange", "upload"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }] }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductManageVariantsComponent, decorators: [{
119
+ type: Component,
120
+ args: [{ selector: 'rolatech-product-manage-variants', standalone: true, imports: [
121
+ AngularCommonModule,
122
+ AngularComponentsModule,
123
+ ProductManageContentComponent,
124
+ ToolbarComponent,
125
+ MatIcon,
126
+ MatFormFieldModule,
127
+ ThumbnailComponent,
128
+ ImageComponent,
129
+ ProductManageVariantComponent,
130
+ SpinnerComponent,
131
+ ], template: "<rolatech-product-manage-content>\n <rolatech-toolbar title=\"\u4EF7\u683C\u7B56\u7565\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n @if (loading) {\n <rolatech-spinner></rolatech-spinner>\n } @else {\n <div class=\"flex items-center\">\n <mat-slide-toggle\n #slide\n [checked]=\"variantPriceChecked\"\n (change)=\"onVariantSlideToggle($event)\"\n [disabled]=\"options().length <= 0\"\n ></mat-slide-toggle>\n <div>\u6839\u636E\u5546\u54C1\u9009\u9879\u8BBE\u7F6E\u4E0D\u540C\u7684\u4EF7\u683C\u548C\u5E93\u5B58</div>\n </div>\n <div class=\"flex items-center\">\n <mat-slide-toggle #inventorySlide (change)=\"onInventorySlideToggle($event)\"></mat-slide-toggle>\n <div>\u8DDF\u8E2A\u5E93\u5B58</div>\n </div>\n\n @if (slide.checked) {\n <div>\n <div class=\"header flex gap-3 h-14 items-center\">\n <div class=\"px-3\">\u540D\u79F0</div>\n <div class=\"flex-1\"></div>\n <div class=\"w-[160px]\">\u4EF7\u683C</div>\n <div class=\"w-[160px]\">\u72B6\u6001</div>\n @if (inventorySlide.checked) {\n <div class=\"w-[160px]\">\u5E93\u5B58</div>\n }\n\n <div class=\"block w-20 text-right\">\u5C55\u5F00/\u6298\u53E0</div>\n </div>\n @for (item of variants; track $index) {\n <rolatech-product-manage-variant [variant]=\"item\" (upload)=\"onUpload(item, $event)\"></rolatech-product-manage-variant>\n }\n </div>\n <div class=\"mt-3\">\n <button mat-button (click)=\"saveVariants()\">\u4FDD\u5B58</button>\n </div>\n }\n }\n</rolatech-product-manage-content>\n", styles: ["mat-slide-toggle{scale:.8}mat-form-field{width:72px}\n"] }]
132
+ }] });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2UtdmFyaWFudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS12YXJpYW50cy9wcm9kdWN0LW1hbmFnZS12YXJpYW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUNMLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEdBQ2pCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkVBQTZFLENBQUM7Ozs7QUFvQjVILE1BQU0sT0FB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bEIsY0FBYzt3QkFDZCw2QkFBNkI7d0JBQzdCLGdCQUFnQjtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIG1vZGVsLCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdE1hbmFnZUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9wcm9kdWN0LW1hbmFnZS1jb250ZW50L3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLFxuICBCYXNlQ29tcG9uZW50LFxuICBJbWFnZUNvbXBvbmVudCxcbiAgU3Bpbm5lckNvbXBvbmVudCxcbiAgVGh1bWJuYWlsQ29tcG9uZW50LFxuICBUb29sYmFyQ29tcG9uZW50LFxufSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IFByb2R1Y3QsIFByb2R1Y3RPcHRpb24sIFByb2R1Y3RWYXJpYW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlVmFyaWFudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvcHJvZHVjdC1tYW5hZ2UtdmFyaWFudC9wcm9kdWN0LW1hbmFnZS12YXJpYW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXByb2R1Y3QtbWFuYWdlLXZhcmlhbnRzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJDb21tb25Nb2R1bGUsXG4gICAgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsXG4gICAgUHJvZHVjdE1hbmFnZUNvbnRlbnRDb21wb25lbnQsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBUaHVtYm5haWxDb21wb25lbnQsXG4gICAgSW1hZ2VDb21wb25lbnQsXG4gICAgUHJvZHVjdE1hbmFnZVZhcmlhbnRDb21wb25lbnQsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdE1hbmFnZVZhcmlhbnRzQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb2R1Y3RTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RTZXJ2aWNlKTtcbiAgY2hhbmdlRGV0ZWN0b3JSZWZzID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgb3B0aW9ucyA9IHNpZ25hbDxQcm9kdWN0T3B0aW9uW10+KFtdKTtcbiAgc25hY2tCYXIgPSBpbmplY3QoTWF0U25hY2tCYXIpO1xuICBwcm9kdWN0UHJpY2UgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIHZhcmlhbnRzOiBhbnk7XG4gIHZhcmlhbnRQcmljZUNoZWNrZWQgPSBmYWxzZTtcbiAgcHJvZHVjdCE6IFByb2R1Y3Q7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pZCA9IHRoaXMucm91dGUucGFyZW50Py5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xuICAgIHRoaXMuZ2V0UHJvZHVjdCgpO1xuICB9XG4gIG9uVmFyaWFudFNsaWRlVG9nZ2xlKGV2ZW50OiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSkge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gZXZlbnQuY2hlY2tlZDtcbiAgICBpZiAobmV3U3RhdGUpIHtcbiAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UudXBkYXRlVmFyaWFudFByaWNlKHRoaXMuaWQsIHRydWUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnZhcmlhbnRzID0gcmVzLmRhdGE7XG4gICAgICAgICAgdGhpcy52YXJpYW50UHJpY2VDaGVja2VkID0gbmV3U3RhdGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaTlkJcnLFxuICAgICAgICBtZXNzYWdlOiAn5Yig6Zmk6L+Z5Liq56ug6IqC5ZCXPycsXG4gICAgICAgIGNhbmNlbFRleHQ6ICflj5bmtognLFxuICAgICAgICBjb25maXJtVGV4dDogJ+ehruiupCcsXG4gICAgICB9O1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4ob3B0aW9ucyk7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybWVkKCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UudXBkYXRlVmFyaWFudFByaWNlKHRoaXMuaWQsIGZhbHNlKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50UHJpY2VDaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50cyA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5jaGVja2VkID0gIW5ld1N0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBvbkludmVudG9yeVNsaWRlVG9nZ2xlKGU6IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlKSB7XG4gICAgaWYgKGUuY2hlY2tlZCkge1xuICAgIH1cbiAgfVxuXG4gIHNhdmVWYXJpYW50cygpIHtcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnVwZGF0ZVZhcmlhbnRzKHRoaXMuaWQsIHRoaXMudmFyaWFudHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+S/neWtmOaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25VcGxvYWQodmFyaWFudDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnVwbG9hZFZhcmlhbnRNZWRpYSh2YXJpYW50LmlkLCBkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHZhcmlhbnQubWVkaWFbdmFyaWFudC5tZWRpYS5sZW5ndGggLSAxXSA9IHtcbiAgICAgICAgICBpZDogcmVzLmRhdGEuaWQsXG4gICAgICAgICAgdXJsOiByZXMuZGF0YS51cmwgKyAnIXcyMDAnLFxuICAgICAgICAgIHVwbG9hZGluZzogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCfkuIrkvKDlpLHotKU6ICcgKyBlLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBmaW5kVmFyaWFudHMoKSB7XG4gICAgdGhpcy5wcm9kdWN0U2VydmljZS5maW5kVmFyaWFudHModGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5kYXRhKSB7XG4gICAgICAgICAgdGhpcy52YXJpYW50UHJpY2VDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhcmlhbnRzID0gcmVzLmRhdGE7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGdldFByb2R1Y3QoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZHVjdCA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnZhcmlhbnRzID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzO1xuICAgICAgICB0aGlzLnZhcmlhbnRQcmljZUNoZWNrZWQgPSB0aGlzLnZhcmlhbnRzID8gdGhpcy52YXJpYW50cy5sZW5ndGggPiAwIDogZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucy5zZXQocmVzLmRhdGEub3B0aW9ucyB8fCBbXSk7XG4gICAgICAgIGxldCBwcmljZSA9IChyZXMuZGF0YS5wcmljZSAvIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgdGhpcy5wcm9kdWN0UHJpY2Uuc2V0KHByaWNlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtcHJvZHVjdC1tYW5hZ2UtY29udGVudD5cbiAgPHJvbGF0ZWNoLXRvb2xiYXIgdGl0bGU9XCLku7fmoLznrZbnlaVcIiBjbGFzcz1cImhpZGRlbiBtZDpibG9ja1wiIGRpdmlkZXI+IDwvcm9sYXRlY2gtdG9vbGJhcj5cbiAgQGlmIChsb2FkaW5nKSB7XG4gICAgPHJvbGF0ZWNoLXNwaW5uZXI+PC9yb2xhdGVjaC1zcGlubmVyPlxuICB9IEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICNzbGlkZVxuICAgICAgICBbY2hlY2tlZF09XCJ2YXJpYW50UHJpY2VDaGVja2VkXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblZhcmlhbnRTbGlkZVRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbnMoKS5sZW5ndGggPD0gMFwiXG4gICAgICA+PC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPGRpdj7moLnmja7llYblk4HpgInpobnorr7nva7kuI3lkIznmoTku7fmoLzlkozlupPlrZg8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNpbnZlbnRvcnlTbGlkZSAoY2hhbmdlKT1cIm9uSW52ZW50b3J5U2xpZGVUb2dnbGUoJGV2ZW50KVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgIDxkaXY+6Lef6Liq5bqT5a2YPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHNsaWRlLmNoZWNrZWQpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgZmxleCBnYXAtMyBoLTE0IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zXCI+5ZCN56ewPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxNjBweF1cIj7ku7fmoLw8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMTYwcHhdXCI+54q25oCBPC9kaXY+XG4gICAgICAgICAgQGlmIChpbnZlbnRvcnlTbGlkZS5jaGVja2VkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMTYwcHhdXCI+5bqT5a2YPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrIHctMjAgdGV4dC1yaWdodFwiPuWxleW8gC/mipjlj6A8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdmFyaWFudHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS12YXJpYW50IFt2YXJpYW50XT1cIml0ZW1cIiAodXBsb2FkKT1cIm9uVXBsb2FkKGl0ZW0sICRldmVudClcIj48L3JvbGF0ZWNoLXByb2R1Y3QtbWFuYWdlLXZhcmlhbnQ+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzYXZlVmFyaWFudHMoKVwiPuS/neWtmDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG48L3JvbGF0ZWNoLXByb2R1Y3QtbWFuYWdlLWNvbnRlbnQ+XG4iXX0=
@@ -1,11 +1,25 @@
1
1
  import { ProductManageLayoutComponent } from './product-manage-layout/product-manage-layout.component';
2
2
  import { ProductManageInfoComponent } from './product-manage-info/product-manage-info.component';
3
- import { ProductManageDetailsComponent } from './product-manage-details/product-manage-details.component';
3
+ import { ProductManageSectionsComponent } from './product-manage-sections/product-manage-sections.component';
4
4
  import { ProductManageMediaComponent } from './product-manage-media/product-manage-media.component';
5
5
  import { ProductManagePricingComponent } from './product-manage-pricing/product-manage-pricing.component';
6
+ import { ProductManageIndexComponent } from './product-manage-index/product-manage-index.component';
7
+ import { ProductManageCreateComponent } from './product-manage-create/product-manage-create.component';
8
+ import { ProductManageOptionsComponent } from './product-manage-options/product-manage-options.component';
9
+ import { ProductManageVariantsComponent } from './product-manage-variants/product-manage-variants.component';
10
+ import { ProductManageScheduleComponent } from './product-manage-schedule/product-manage-schedule.component';
11
+ import { ProductManageInventoryComponent } from './product-manage-inventory/product-manage-inventory.component';
6
12
  export const productManageRoutes = [
7
13
  {
8
14
  path: '',
15
+ component: ProductManageIndexComponent,
16
+ },
17
+ {
18
+ path: 'create',
19
+ component: ProductManageCreateComponent,
20
+ },
21
+ {
22
+ path: ':id/manage',
9
23
  component: ProductManageLayoutComponent,
10
24
  children: [
11
25
  {
@@ -17,14 +31,30 @@ export const productManageRoutes = [
17
31
  component: ProductManageMediaComponent,
18
32
  },
19
33
  {
20
- path: 'details',
21
- component: ProductManageDetailsComponent,
34
+ path: 'sections',
35
+ component: ProductManageSectionsComponent,
36
+ },
37
+ {
38
+ path: 'options',
39
+ component: ProductManageOptionsComponent,
40
+ },
41
+ {
42
+ path: 'variants',
43
+ component: ProductManageVariantsComponent,
44
+ },
45
+ {
46
+ path: 'inventory',
47
+ component: ProductManageInventoryComponent,
22
48
  },
23
49
  {
24
50
  path: 'pricing',
25
51
  component: ProductManagePricingComponent,
26
52
  },
53
+ {
54
+ path: 'schedule',
55
+ component: ProductManageScheduleComponent,
56
+ },
27
57
  ],
28
58
  },
29
59
  ];
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2Uucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFMUcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVc7SUFDekM7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osU0FBUyxFQUFFLDBCQUEwQjthQUN0QztZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFNBQVMsRUFBRSwyQkFBMkI7YUFDdkM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixTQUFTLEVBQUUsNkJBQTZCO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLDZCQUE2QjthQUN6QztTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLWxheW91dC9wcm9kdWN0LW1hbmFnZS1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1pbmZvL3Byb2R1Y3QtbWFuYWdlLWluZm8uY29tcG9uZW50JztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1kZXRhaWxzL3Byb2R1Y3QtbWFuYWdlLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VNZWRpYUNvbXBvbmVudCB9IGZyb20gJy4vcHJvZHVjdC1tYW5hZ2UtbWVkaWEvcHJvZHVjdC1tYW5hZ2UtbWVkaWEuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2R1Y3RNYW5hZ2VQcmljaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1wcmljaW5nL3Byb2R1Y3QtbWFuYWdlLXByaWNpbmcuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHByb2R1Y3RNYW5hZ2VSb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogUHJvZHVjdE1hbmFnZUxheW91dENvbXBvbmVudCxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBwYXRoOiAnaW5mbycsXG4gICAgICAgIGNvbXBvbmVudDogUHJvZHVjdE1hbmFnZUluZm9Db21wb25lbnQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnbWVkaWEnLFxuICAgICAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VNZWRpYUNvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdkZXRhaWxzJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdwcmljaW5nJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlUHJpY2luZ0NvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2Uucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0LW1hbmFnZS9wcm9kdWN0LW1hbmFnZS5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFaEgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVc7SUFDekM7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSwyQkFBMkI7S0FDdkM7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLDRCQUE0QjtLQUN4QztJQUNEO1FBQ0UsSUFBSSxFQUFFLFlBQVk7UUFDbEIsU0FBUyxFQUFFLDRCQUE0QjtRQUN2QyxRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixTQUFTLEVBQUUsMEJBQTBCO2FBQ3RDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsU0FBUyxFQUFFLDJCQUEyQjthQUN2QztZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsOEJBQThCO2FBQzFDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLDZCQUE2QjthQUN6QztZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsOEJBQThCO2FBQzFDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSwrQkFBK0I7YUFDM0M7WUFFRDtnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixTQUFTLEVBQUUsNkJBQTZCO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFNBQVMsRUFBRSw4QkFBOEI7YUFDMUM7U0FDRjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1sYXlvdXQvcHJvZHVjdC1tYW5hZ2UtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlSW5mb0NvbXBvbmVudCB9IGZyb20gJy4vcHJvZHVjdC1tYW5hZ2UtaW5mby9wcm9kdWN0LW1hbmFnZS1pbmZvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlU2VjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zL3Byb2R1Y3QtbWFuYWdlLXNlY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlTWVkaWFDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLW1lZGlhL3Byb2R1Y3QtbWFuYWdlLW1lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlUHJpY2luZ0NvbXBvbmVudCB9IGZyb20gJy4vcHJvZHVjdC1tYW5hZ2UtcHJpY2luZy9wcm9kdWN0LW1hbmFnZS1wcmljaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlSW5kZXhDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLWluZGV4L3Byb2R1Y3QtbWFuYWdlLWluZGV4LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlQ3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1jcmVhdGUvcHJvZHVjdC1tYW5hZ2UtY3JlYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlT3B0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vcHJvZHVjdC1tYW5hZ2Utb3B0aW9ucy9wcm9kdWN0LW1hbmFnZS1vcHRpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlVmFyaWFudHNDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzL3Byb2R1Y3QtbWFuYWdlLXZhcmlhbnRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlU2NoZWR1bGVDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbWFuYWdlLXNjaGVkdWxlL3Byb2R1Y3QtbWFuYWdlLXNjaGVkdWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0TWFuYWdlSW52ZW50b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9kdWN0LW1hbmFnZS1pbnZlbnRvcnkvcHJvZHVjdC1tYW5hZ2UtaW52ZW50b3J5LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBwcm9kdWN0TWFuYWdlUm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VJbmRleENvbXBvbmVudCxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdjcmVhdGUnLFxuICAgIGNvbXBvbmVudDogUHJvZHVjdE1hbmFnZUNyZWF0ZUNvbXBvbmVudCxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICc6aWQvbWFuYWdlJyxcbiAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2luZm8nLFxuICAgICAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VJbmZvQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ21lZGlhJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlTWVkaWFDb21wb25lbnQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnc2VjdGlvbnMnLFxuICAgICAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VTZWN0aW9uc0NvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdvcHRpb25zJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlT3B0aW9uc0NvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICd2YXJpYW50cycsXG4gICAgICAgIGNvbXBvbmVudDogUHJvZHVjdE1hbmFnZVZhcmlhbnRzQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2ludmVudG9yeScsXG4gICAgICAgIGNvbXBvbmVudDogUHJvZHVjdE1hbmFnZUludmVudG9yeUNvbXBvbmVudCxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ3ByaWNpbmcnLFxuICAgICAgICBjb21wb25lbnQ6IFByb2R1Y3RNYW5hZ2VQcmljaW5nQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ3NjaGVkdWxlJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0TWFuYWdlU2NoZWR1bGVDb21wb25lbnQsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5dO1xuIl19
@@ -0,0 +1,4 @@
1
+ import { ProductCategoryService } from './product-category.service';
2
+ export { ProductCategoryService };
3
+ export const services = [ProductCategoryService];
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0LWNhdGVnb3J5LnNlcnZpY2UnO1xuXG5leHBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlTZXJ2aWNlIH07XG5cbmV4cG9ydCBjb25zdCBzZXJ2aWNlczogYW55W10gPSBbUHJvZHVjdENhdGVnb3J5U2VydmljZV07XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BaseService } from '@rolatech/angular-services';
3
+ import * as i0 from "@angular/core";
4
+ export class ProductCategoryService extends BaseService {
5
+ init() {
6
+ this.endpoint = 'products/categories';
7
+ super.init();
8
+ }
9
+ uploadMedia(id, data) {
10
+ return this.http.post(`${this.actionUrl}/${id}/media`, data, {
11
+ withCredentials: true,
12
+ });
13
+ }
14
+ deleteMedia(id, mediaId) {
15
+ return this.http.delete(`${this.actionUrl}/${id}/media/${mediaId}`, {
16
+ withCredentials: true,
17
+ });
18
+ }
19
+ importFromExcel(data) {
20
+ return this.http.post(`${this.actionUrl}/excel`, data, {
21
+ withCredentials: true,
22
+ });
23
+ }
24
+ createFromExcel(data) {
25
+ return this.http.post(`${this.actionUrl}/list`, data, {
26
+ withCredentials: true,
27
+ });
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductCategoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductCategoryService, providedIn: 'root' }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductCategoryService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root',
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRlZ29yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9zZXJ2aWNlcy9wcm9kdWN0LWNhdGVnb3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBQzVDLElBQUk7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ3RDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxXQUFXLENBQUMsRUFBVSxFQUFFLElBQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ2hFLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsRUFBVSxFQUFFLE9BQWU7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxVQUFVLE9BQU8sRUFBRSxFQUFFO1lBQ3ZFLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBYztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsUUFBUSxFQUFFLElBQUksRUFBRTtZQUMxRCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDekQsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F4QlUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENhdGVnb3J5U2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgb3ZlcnJpZGUgaW5pdCgpIHtcbiAgICB0aGlzLmVuZHBvaW50ID0gJ3Byb2R1Y3RzL2NhdGVnb3JpZXMnO1xuICAgIHN1cGVyLmluaXQoKTtcbiAgfVxuICB1cGxvYWRNZWRpYShpZDogc3RyaW5nLCBkYXRhOiBGb3JtRGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5hY3Rpb25Vcmx9LyR7aWR9L21lZGlhYCwgZGF0YSwge1xuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgIH0pO1xuICB9XG4gIGRlbGV0ZU1lZGlhKGlkOiBzdHJpbmcsIG1lZGlhSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihgJHt0aGlzLmFjdGlvblVybH0vJHtpZH0vbWVkaWEvJHttZWRpYUlkfWAsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuICBpbXBvcnRGcm9tRXhjZWwoZGF0YTogRm9ybURhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYWN0aW9uVXJsfS9leGNlbGAsIGRhdGEsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuICBjcmVhdGVGcm9tRXhjZWwoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFjdGlvblVybH0vbGlzdGAsIGRhdGEsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
2
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { RouterModule } from '@angular/router';
5
+ import * as fromServices from './lib/services';
6
+ export function provideAngularProduct() {
7
+ const providers = [
8
+ ...fromServices.services,
9
+ importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),
10
+ ];
11
+ return makeEnvironmentProviders(providers);
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsTUFBTSxTQUFTLEdBQXdDO1FBQ3JELEdBQUcsWUFBWSxDQUFDLFFBQVE7UUFDeEIsbUJBQW1CLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUM7S0FDbEYsQ0FBQztJQUNGLE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciwgaW1wb3J0UHJvdmlkZXJzRnJvbSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0ICogYXMgZnJvbVNlcnZpY2VzIGZyb20gJy4vbGliL3NlcnZpY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbmd1bGFyUHJvZHVjdCgpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IHByb3ZpZGVyczogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXG4gICAgLi4uZnJvbVNlcnZpY2VzLnNlcnZpY2VzLFxuICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgUm91dGVyTW9kdWxlKSxcbiAgXTtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19
@@ -0,0 +1,70 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, signal, Component, ViewEncapsulation } from '@angular/core';
3
+ import { ProductService } from '@rolatech/angular-services';
4
+ import { AngularComponentsModule, RichViewComponent, RichItemComponent } from '@rolatech/angular-components';
5
+ import { AngularCommonModule } from '@rolatech/angular-common';
6
+ import { ProductItemComponent } from './rolatech-angular-product.mjs';
7
+ import * as i1 from '@angular/router';
8
+ import '@angular/material/icon';
9
+ import '@angular/common';
10
+ import '@angular/material/dialog';
11
+ import '@angular/material/button';
12
+ import '@angular/material/divider';
13
+ import '@angular/cdk/text-field';
14
+ import '@angular/forms';
15
+ import '@angular/material/form-field';
16
+ import '@angular/material/input';
17
+ import '@angular/material/progress-bar';
18
+ import 'lodash';
19
+ import '@angular/animations';
20
+ import '@angular/material/menu';
21
+ import '@angular/cdk/keycodes';
22
+ import '@angular/material/chips';
23
+ import '@rolatech/angular-comment';
24
+ import '@rolatech/angular-auth';
25
+ import '@angular/material/snack-bar';
26
+ import '@angular/material/core';
27
+ import '@angular/material/select';
28
+ import '@angular/material/paginator';
29
+ import '@angular/material/table';
30
+ import '@angular/material/progress-spinner';
31
+ import '@angular/material/slide-toggle';
32
+
33
+ class ProductIndexComponent {
34
+ constructor() {
35
+ this.productService = inject(ProductService);
36
+ // products: Product[] = [];
37
+ this.products = signal([]);
38
+ this.loading = false;
39
+ }
40
+ ngOnInit() {
41
+ this.findProducts();
42
+ }
43
+ findProducts() {
44
+ this.loading = true;
45
+ const options = {
46
+ sort: 'updatedAt desc',
47
+ // filter: 'published:true',
48
+ };
49
+ this.productService.find(options).subscribe({
50
+ next: (res) => {
51
+ // this.products = res.data;
52
+ this.products.set(res.data);
53
+ this.meta = res.meta;
54
+ this.loading = false;
55
+ },
56
+ error: (error) => {
57
+ this.loading = false;
58
+ },
59
+ });
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.4", type: ProductIndexComponent, isStandalone: true, selector: "rolatech-product-index", ngImport: i0, template: "<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden md:block text-2xl font-medium\">\u5168\u90E8\u5546\u54C1</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video hover:bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view wrap>\n @for (item of products(); track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.price / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: RichViewComponent, selector: "rolatech-rich-view", inputs: ["list", "wrap"] }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [i1.RouterLink, RichItemComponent]] }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ProductIndexComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'rolatech-product-index', standalone: true, imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent, ProductItemComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden md:block text-2xl font-medium\">\u5168\u90E8\u5546\u54C1</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video hover:bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view wrap>\n @for (item of products(); track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.price / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n" }]
67
+ }], ctorParameters: () => [] });
68
+
69
+ export { ProductIndexComponent };
70
+ //# sourceMappingURL=rolatech-angular-product-product-index.component-C_cbg95R.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-product-product-index.component-C_cbg95R.mjs","sources":["../../../../libs/angular-product/src/lib/pages/product/product-index/product-index.component.ts","../../../../libs/angular-product/src/lib/pages/product/product-index/product-index.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { ProductService } from '@rolatech/angular-services';\nimport { Product } from '../../../interfaces/product';\nimport { RichViewComponent, RichItemComponent, AngularComponentsModule } from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { ProductItemComponent } from '../../../components';\n@Component({\n selector: 'rolatech-product-index',\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent, ProductItemComponent],\n templateUrl: './product-index.component.html',\n styleUrl: './product-index.component.scss',\n encapsulation: ViewEncapsulation.None,\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProductIndexComponent implements OnInit {\n productService = inject(ProductService);\n // products: Product[] = [];\n products = signal<Product[]>([]);\n\n meta: any;\n loading = false;\n constructor() {}\n\n ngOnInit(): void {\n this.findProducts();\n }\n findProducts() {\n this.loading = true;\n const options = {\n sort: 'updatedAt desc',\n // filter: 'published:true',\n };\n this.productService.find(options).subscribe({\n next: (res: any) => {\n // this.products = res.data;\n this.products.set(res.data);\n this.meta = res.meta;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n}\n","<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden md:block text-2xl font-medium\">全部商品</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video hover:bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view wrap>\n @for (item of products(); track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.price / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAea,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;;AAExC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAY,EAAE,CAAC,CAAC;QAGjC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KACA;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IACD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,gBAAgB;;SAEvB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;;gBAEjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACF,SAAA,CAAC,CAAC;KACJ;8GA7BU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECflC,g5CAkCA,EDzBY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BAAE,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAE,iBAAiB,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMjF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cACtB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAGpG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,g5CAAA,EAAA,CAAA;;;;;"}